<?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>68321</bug_id>
          
          <creation_ts>2011-09-18 00:37:02 -0700</creation_ts>
          <short_desc>[EFL] Use C++ type cast instead of C style type cast</short_desc>
          <delta_ts>2011-10-12 18:56:23 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68209</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>469153</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-18 00:37:02 -0700</bug_when>
    <thetext>Some codes are using C type cast though file format is .cpp. A patch for this bug will be submitted after fixing Bug 68231.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471666</commentid>
    <comment_count>1</comment_count>
      <attachid>108354</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-22 10:22:57 -0700</bug_when>
    <thetext>Created attachment 108354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471708</commentid>
    <comment_count>2</comment_count>
      <attachid>108354</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-09-22 10:57:05 -0700</bug_when>
    <thetext>Comment on attachment 108354
Patch

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

I was going to comment on all occurrences which changed &quot;Foo* p = ...&quot; to &quot;Foo *p = ...&quot; but gave up about halfway into the patch.

&gt; Source/WebKit/efl/ewk/ewk_auth_soup.cpp:82
&gt; +    Ewk_Auth_Data *auth_data = static_cast&lt;Ewk_Auth_Data*&gt;(data);

Wrong &apos;*&apos; position.

&gt; Source/WebKit/efl/ewk/ewk_contextmenu.cpp:106
&gt; +    Ewk_Context_Menu_Item *item = static_cast&lt;Ewk_Context_Menu_Item*&gt;(malloc(sizeof(*item)));

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:689
&gt; +    Ewk_Hit_Test *hit_test = static_cast&lt;Ewk_Hit_Test*&gt;(calloc(1, sizeof(Ewk_Hit_Test)));

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:210
&gt; +    Ewk_View_Smart_Data *ptr = static_cast&lt;Ewk_View_Smart_Data*&gt;(evas_object_smart_data_get(o))

The placement of the first &apos;*&apos; could be fixed here.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:473
&gt; +    Ewk_View_Smart_Data *sd = static_cast&lt;Ewk_View_Smart_Data*&gt;(data);

Wrong position for the first &apos;*&apos;.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:481
&gt; +    Ewk_View_Smart_Data *sd = static_cast&lt;Ewk_View_Smart_Data*&gt;(data);

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:727
&gt; +    const Ewk_View_Smart_Class* api = (Ewk_View_Smart_Class*)(sc);

No C++ cast here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471799</commentid>
    <comment_count>3</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-22 12:49:52 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 108354 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108354&amp;action=review
&gt; 
&gt; I was going to comment on all occurrences which changed &quot;Foo* p = ...&quot; to &quot;Foo *p = ...&quot; but gave up about halfway into the patch.

Gyuyoung, you might want to apply the uncrustify config on top of this patch and check if it changed back the position of &apos;*&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472074</commentid>
    <comment_count>4</comment_count>
      <attachid>108441</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-22 22:13:03 -0700</bug_when>
    <thetext>Created attachment 108441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472075</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-22 22:20:58 -0700</bug_when>
    <thetext>Sorry, I missed to fix &apos;*&apos; operator in my local changes despite running git pull. I run uncrustify.cfg in my files. Fortunately, I found remained wrong pointer operator placement. I fix them as well.

&gt;&gt; Source/WebKit/efl/ewk/ewk_view.cpp:727
&gt;&gt; +    const Ewk_View_Smart_Class* api = (Ewk_View_Smart_Class*)(sc);

&gt; No C++ cast here.

I fix this line using reinterpret_cast because of different pointer casting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472231</commentid>
    <comment_count>6</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2011-09-23 07:52:23 -0700</bug_when>
    <thetext>LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472309</commentid>
    <comment_count>7</comment_count>
      <attachid>108441</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-23 10:24:42 -0700</bug_when>
    <thetext>Comment on attachment 108441
Patch

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

&gt; Source/WebKit/efl/ChangeLog:60
&gt; +        * ewk/ewk_auth_soup.cpp:
&gt; +        (_Ewk_Auth_Data::ewk_auth_soup_credentials_set):
&gt; +        (_Ewk_Auth_Data::session_authenticate):
&gt; +        * ewk/ewk_contextmenu.cpp:
&gt; +        (ewk_context_menu_item_new):
&gt; +        * ewk/ewk_frame.cpp:
&gt; +        (_ewk_frame_smart_add):
&gt; +        (ewk_frame_children_iterator_new):
&gt; +        (ewk_frame_hit_test_new):
&gt; +        * ewk/ewk_history.cpp:
&gt; +        (_ewk_history_item_new):
&gt; +        (ewk_history_item_title_get):
&gt; +        (ewk_history_item_title_alternate_get):
&gt; +        (ewk_history_item_uri_get):
&gt; +        (ewk_history_item_uri_original_get):
&gt; +        (ewk_history_new):
&gt; +        * ewk/ewk_view.cpp:
&gt; +        (_ewk_view_repaints_resize):
&gt; +        (_ewk_view_scrolls_resize):
&gt; +        (_ewk_view_on_focus_in):
&gt; +        (_ewk_view_on_focus_out):
&gt; +        (_ewk_view_on_mouse_wheel):
&gt; +        (_ewk_view_on_mouse_down):
&gt; +        (_ewk_view_on_mouse_up):
&gt; +        (_ewk_view_on_mouse_move):
&gt; +        (_ewk_view_on_key_down):
&gt; +        (_ewk_view_on_key_up):
&gt; +        (_ewk_view_priv_new):
&gt; +        (_ewk_view_smart_add):
&gt; +        (_ewk_view_smart_zoom_set):
&gt; +        (_ewk_view_zoom_animator_cb):
&gt; +        (_ewk_view_viewport_attributes_compute):
&gt; +        (ewk_view_zoom_set):
&gt; +        (ewk_view_zoom_weak_set):
&gt; +        (ewk_view_zoom_animated_set):
&gt; +        (ewk_view_paint_context_new):
&gt; +        (ewk_view_popup_new):
&gt; +        (ewk_view_popup_destroy):
&gt; +        * ewk/ewk_view_single.cpp:
&gt; +        (_ewk_view_single_smart_add):
&gt; +        (_ewk_view_single_smart_resize):
&gt; +        (_ewk_view_single_scroll_process_single):
&gt; +        (_ewk_view_single_smart_repaints_process):
&gt; +        * ewk/ewk_view_tiled.cpp:
&gt; +        (_ewk_view_tiled_render_cb):
&gt; +        (_ewk_view_tiled_updates_process_pre):
&gt; +        (_ewk_view_tiled_contents_size_changed_cb):
&gt; +        (_ewk_view_tiled_smart_add):

As mentioned by Antonio Gomes in the other giant patch, please remove this from ChangeLog since it&apos;s not adding any useful information.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1564
&gt; -        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.min_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &lt; %f : %f&quot;, static_cast&lt;double&gt;(priv-&gt;settings.zoom_range.min_scale), static_cast&lt;double&gt;(zoom));

I&apos;m surprised to see we are casting a float to a double. This is a nice time to remove that.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1568
&gt; -        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.max_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &gt; %f : %f&quot;, static_cast&lt;double&gt;(priv-&gt;settings.zoom_range.max_scale), static_cast&lt;double&gt;(zoom));

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1608
&gt; -        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.min_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &lt; %f : %f&quot;, static_cast&lt;double&gt;(priv-&gt;settings.zoom_range.min_scale), static_cast&lt;double&gt;(zoom));

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1612
&gt; -        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.max_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &gt; %f : %f&quot;, static_cast&lt;double&gt;(priv-&gt;settings.zoom_range.max_scale), static_cast&lt;double&gt;(zoom));

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1664
&gt; -        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.min_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &lt; %f : %f&quot;, static_cast&lt;double&gt;(priv-&gt;settings.zoom_range.min_scale), static_cast&lt;double&gt;(zoom));

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1668
&gt; -        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.max_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &gt; %f : %f&quot;, static_cast&lt;double&gt;(priv-&gt;settings.zoom_range.max_scale), static_cast&lt;double&gt;(zoom));

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472875</commentid>
    <comment_count>8</comment_count>
      <attachid>108604</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-25 02:35:31 -0700</bug_when>
    <thetext>Created attachment 108604
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472876</commentid>
    <comment_count>9</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-25 02:39:12 -0700</bug_when>
    <thetext>This is nice time to fix wrong casting. I fixed them. And, meaningless comments are removed from ChangeLog as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473817</commentid>
    <comment_count>10</comment_count>
      <attachid>108604</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-27 03:00:15 -0700</bug_when>
    <thetext>Comment on attachment 108604
Patch

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

Please, check the unneeded casts. Especially the float -&gt; double conversions.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:929
&gt; -        px = (double)(x + cx) / (w + sd-&gt;view.w);
&gt; +        px = static_cast&lt;double&gt;((x + cx) / (w + sd-&gt;view.w));

Unneeded cast.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:934
&gt; -        py = (double)(y + cy) / (h + sd-&gt;view.h);
&gt; +        py = static_cast&lt;double&gt;((y + cy) / (h + sd-&gt;view.h));

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1052
&gt; -    int available_width = (int) priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect().width();
&gt; -    int available_height = (int) priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect().height();
&gt; +    int available_width = static_cast&lt;int&gt;(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect().width());
&gt; +    int available_height = static_cast&lt;int&gt;(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect().height());

/me wondering why we are going priv-&gt;page-&gt;chrome()-&gt;client() route when we have the ewk_view available. It would be just a matter of calling ewk_view_page_rect_get().

About the casts, we are probably better off using enclosingIntRect() instead.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1055
&gt; -    int device_width = (int) priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect().width();
&gt; -    int device_height = (int) priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect().height();
&gt; +    int device_width = static_cast&lt;int&gt;(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect().width());
&gt; +    int device_height = static_cast&lt;int&gt;(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect().height());

ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1564
&gt; -        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.min_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &lt; %f : %f&quot;, static_cast&lt;float&gt;(priv-&gt;settings.zoom_range.min_scale), static_cast&lt;float&gt;(zoom));

Unneeded casts.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1568
&gt; -        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.max_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &gt; %f : %f&quot;, static_cast&lt;float&gt;(priv-&gt;settings.zoom_range.max_scale), static_cast&lt;float&gt;(zoom));

Unneeded casts.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1608
&gt; -        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.min_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &lt; %f : %f&quot;, static_cast&lt;float&gt;(priv-&gt;settings.zoom_range.min_scale), static_cast&lt;float&gt;(zoom));

Unneeded casts.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1612
&gt; -        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.max_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &gt; %f : %f&quot;, static_cast&lt;float&gt;(priv-&gt;settings.zoom_range.max_scale), static_cast&lt;float&gt;(zoom));

Unneeded casts.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1664
&gt; -        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.min_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &lt; %f : %f&quot;, static_cast&lt;float&gt;(priv-&gt;settings.zoom_range.min_scale), static_cast&lt;float&gt;(zoom));

Unneeded casts.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1668
&gt; -        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.max_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &gt; %f : %f&quot;, static_cast&lt;float&gt;(priv-&gt;settings.zoom_range.max_scale), static_cast&lt;float&gt;(zoom));

Unneeded casts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474462</commentid>
    <comment_count>11</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-27 20:41:57 -0700</bug_when>
    <thetext>&gt;&gt; /me wondering why we are going priv-&gt;page-&gt;chrome()-&gt;client() route when we have the ewk_view available. It would be just a matter of calling ewk_view_page_rect_get().

&gt;&gt; About the casts, we are probably better off using enclosingIntRect() instead.

I think that is modified by new bug. So, I think it is better to use static_cast&lt;..&gt; for this bug as below,

1051     int available_width = static_cast&lt;int&gt;(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect().width());
1052     int available_height = static_cast&lt;int&gt;(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect().height());
1053 
1054     int device_width = static_cast&lt;int&gt;(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect().width());
1055     int device_height = static_cast&lt;int&gt;(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect().height());

Do you think that is fixed first ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474485</commentid>
    <comment_count>12</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-27 21:43:47 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt;&gt; /me wondering why we are going priv-&gt;page-&gt;chrome()-&gt;client() route when we have the ewk_view available. It would be just a matter of calling ewk_view_page_rect_get().
&gt; 
&gt; &gt;&gt; About the casts, we are probably better off using enclosingIntRect() instead.
&gt; 
&gt; I think that is modified by new bug. So, I think it is better to use static_cast&lt;..&gt; for this bug as below,
&gt; 
&gt; 1051     int available_width = static_cast&lt;int&gt;(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect().width());
&gt; 1052     int available_height = static_cast&lt;int&gt;(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect().height());
&gt; 1053 
&gt; 1054     int device_width = static_cast&lt;int&gt;(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect().width());
&gt; 1055     int device_height = static_cast&lt;int&gt;(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect().height());
&gt; 

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474496</commentid>
    <comment_count>13</comment_count>
      <attachid>108962</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-27 22:27:06 -0700</bug_when>
    <thetext>Created attachment 108962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474504</commentid>
    <comment_count>14</comment_count>
      <attachid>108962</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-27 22:31:27 -0700</bug_when>
    <thetext>Comment on attachment 108962
Patch

Attachment 108962 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9881573</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474513</commentid>
    <comment_count>15</comment_count>
      <attachid>108967</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-27 22:53:04 -0700</bug_when>
    <thetext>Created attachment 108967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474516</commentid>
    <comment_count>16</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-27 23:03:05 -0700</bug_when>
    <thetext>Hello Lucas,

My though is a little changed. It seems it is better to remove static_cast&lt;...&gt; of _ewk_view_viewport_attributes_compute() in this bug.

WebCore::IntRect available_rect = enclosingIntRect(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect());
int available_width = available_rect.width();
int available_height = available_rect.height();

WebCore::IntRect device_rect = enclosingIntRect(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect());
int device_width = device_rect.width();
int device_height = device_rect.height();

Of course, we can file new bug to decide which functions are used instead of pageRect(), windowRect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474714</commentid>
    <comment_count>17</comment_count>
      <attachid>108967</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-28 06:36:14 -0700</bug_when>
    <thetext>Comment on attachment 108967
Patch

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

Otherwise looks good now.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1053
&gt; -    int available_width = (int) priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect().width();
&gt; -    int available_height = (int) priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect().height();
&gt; +    WebCore::IntRect available_rect = enclosingIntRect(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect());
&gt; +    int available_width = available_rect.width();
&gt; +    int available_height = available_rect.height();

WebCore::IntRect availableRect = enclosingIntRect(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect());

and you don&apos;t need available_{width,height}. Just use .width()/.height() below.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1057
&gt; -    int device_width = (int) priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect().width();
&gt; -    int device_height = (int) priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect().height();
&gt; +    WebCore::IntRect device_rect = enclosingIntRect(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect());
&gt; +    int device_width = device_rect.width();
&gt; +    int device_height = device_rect.height();

Same here. deviceRect would be more WebKit-style aligned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475181</commentid>
    <comment_count>18</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-28 19:03:07 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 108967 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108967&amp;action=review
&gt; 
&gt; Otherwise looks good now.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1053
&gt; &gt; -    int available_width = (int) priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect().width();
&gt; &gt; -    int available_height = (int) priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect().height();
&gt; &gt; +    WebCore::IntRect available_rect = enclosingIntRect(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect());
&gt; &gt; +    int available_width = available_rect.width();
&gt; &gt; +    int available_height = available_rect.height();
&gt; 
&gt; WebCore::IntRect availableRect = enclosingIntRect(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect());
&gt; 
&gt; and you don&apos;t need available_{width,height}. Just use .width()/.height() below.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1057
&gt; &gt; -    int device_width = (int) priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect().width();
&gt; &gt; -    int device_height = (int) priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect().height();
&gt; &gt; +    WebCore::IntRect device_rect = enclosingIntRect(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;windowRect());
&gt; &gt; +    int device_width = device_rect.width();
&gt; &gt; +    int device_height = device_rect.height();
&gt; 
&gt; Same here. deviceRect would be more WebKit-style aligned.

efl port is using mixed efl-style and webkit-style for local variable. I think we should make a rule for local variable. This is an new item for Bug 68321. Do you want to remove &quot;_&quot; in available_rect and device_rect in this bug ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475429</commentid>
    <comment_count>19</comment_count>
      <attachid>108967</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-29 07:43:59 -0700</bug_when>
    <thetext>Comment on attachment 108967
Patch

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

&gt;&gt;&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1053
&gt;&gt;&gt; +    int available_height = available_rect.height();
&gt;&gt; 
&gt;&gt; WebCore::IntRect availableRect = enclosingIntRect(priv-&gt;page-&gt;chrome()-&gt;client()-&gt;pageRect());
&gt;&gt; 
&gt;&gt; and you don&apos;t need available_{width,height}. Just use .width()/.height() below.
&gt; 
&gt; efl port is using mixed efl-style and webkit-style for local variable. I think we should make a rule for local variable. This is an new item for Bug 68321. Do you want to remove &quot;_&quot; in available_rect and device_rect in this bug ?

I don&apos;t care too much about the name now (since it can be made in another bug). Just send another patch removing the useless available_width, available_height, device_width and device_height variables. Then you have my informal r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475456</commentid>
    <comment_count>20</comment_count>
      <attachid>109168</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-29 09:29:58 -0700</bug_when>
    <thetext>Created attachment 109168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475459</commentid>
    <comment_count>21</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-29 09:32:52 -0700</bug_when>
    <thetext>I remove useless local variables in _ewk_view_viewport_attributes_compute() according to your comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475487</commentid>
    <comment_count>22</comment_count>
      <attachid>109168</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-29 10:01:35 -0700</bug_when>
    <thetext>Comment on attachment 109168
Patch

Looks good. Informal r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475762</commentid>
    <comment_count>23</comment_count>
      <attachid>109168</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-29 17:06:48 -0700</bug_when>
    <thetext>Comment on attachment 109168
Patch

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

Nice cleanup, but I have some concerns.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:930
&gt; -        px = (double)(x + cx) / (w + sd-&gt;view.w);
&gt; +        px = (x + cx) / (w + sd-&gt;view.w);
&gt;      else

Are you sure a cast isn&apos;t required here to force floating point arithmetic?

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:934
&gt; -        py = (double)(y + cy) / (h + sd-&gt;view.h);
&gt; +        py = (y + cy) / (h + sd-&gt;view.h);

Ditto.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1055
&gt; +    WebCore::IntSize available_size = WebCore::IntSize(available_rect.width(), available_rect.height());
&gt; +    WebCore::ViewportAttributes attributes = WebCore::computeViewportAttributes(priv-&gt;viewport_arguments, desktop_width, device_rect.width(), device_rect.height(), device_dpi, available_size);

You should just do available_rect.size()

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:1565
&gt; -        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.min_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &lt; %f : %f&quot;, priv-&gt;settings.zoom_range.min_scale, zoom);
&gt;          return EINA_FALSE;
&gt;      }
&gt;      if (zoom &gt; priv-&gt;settings.zoom_range.max_scale) {
&gt; -        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.max_scale, (double)zoom);
&gt; +        WRN(&quot;zoom level is &gt; %f : %f&quot;, priv-&gt;settings.zoom_range.max_scale, zoom);

Are these values not floats? If so why not fix the actual format specifiers instead of just removing the cast?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475766</commentid>
    <comment_count>24</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-09-29 17:20:18 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 109168 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109168&amp;action=review
&gt; 
&gt; Nice cleanup, but I have some concerns.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:930
&gt; &gt; -        px = (double)(x + cx) / (w + sd-&gt;view.w);
&gt; &gt; +        px = (x + cx) / (w + sd-&gt;view.w);
&gt; &gt;      else
&gt; 
&gt; Are you sure a cast isn&apos;t required here to force floating point arithmetic?

This was my bad. I didn&apos;t pay attention w and sd-&gt;view.w are of type Evas_Coord and not double.
 
 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1565
&gt; &gt; -        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.min_scale, (double)zoom);
&gt; &gt; +        WRN(&quot;zoom level is &lt; %f : %f&quot;, priv-&gt;settings.zoom_range.min_scale, zoom);
&gt; &gt;          return EINA_FALSE;
&gt; &gt;      }
&gt; &gt;      if (zoom &gt; priv-&gt;settings.zoom_range.max_scale) {
&gt; &gt; -        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.max_scale, (double)zoom);
&gt; &gt; +        WRN(&quot;zoom level is &gt; %f : %f&quot;, priv-&gt;settings.zoom_range.max_scale, zoom);
&gt; 
&gt; Are these values not floats? If so why not fix the actual format specifiers instead of just removing the cast?

These values are floats. This is the reason the cast is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475768</commentid>
    <comment_count>25</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-29 17:22:52 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 109168 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109168&amp;action=review
&gt; 
&gt; Nice cleanup, but I have some concerns.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:930
&gt; &gt; -        px = (double)(x + cx) / (w + sd-&gt;view.w);
&gt; &gt; +        px = (x + cx) / (w + sd-&gt;view.w);
&gt; &gt;      else
&gt; 
&gt; Are you sure a cast isn&apos;t required here to force floating point arithmetic?

I think it is better to use a cast explicitly. Frankly I am not sure.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:934
&gt; &gt; -        py = (double)(y + cy) / (h + sd-&gt;view.h);
&gt; &gt; +        py = (y + cy) / (h + sd-&gt;view.h);
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1055
&gt; &gt; +    WebCore::IntSize available_size = WebCore::IntSize(available_rect.width(), available_rect.height());
&gt; &gt; +    WebCore::ViewportAttributes attributes = WebCore::computeViewportAttributes(priv-&gt;viewport_arguments, desktop_width, device_rect.width(), device_rect.height(), device_dpi, available_size);
&gt; 
&gt; You should just do available_rect.size()
I missed to use .size(). I will fix it.

&gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:1565
&gt; &gt; -        WRN(&quot;zoom level is &lt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.min_scale, (double)zoom);
&gt; &gt; +        WRN(&quot;zoom level is &lt; %f : %f&quot;, priv-&gt;settings.zoom_range.min_scale, zoom);
&gt; &gt;          return EINA_FALSE;
&gt; &gt;      }
&gt; &gt;      if (zoom &gt; priv-&gt;settings.zoom_range.max_scale) {
&gt; &gt; -        WRN(&quot;zoom level is &gt; %f : %f&quot;, (double)priv-&gt;settings.zoom_range.max_scale, (double)zoom);
&gt; &gt; +        WRN(&quot;zoom level is &gt; %f : %f&quot;, priv-&gt;settings.zoom_range.max_scale, zoom);
&gt; 
&gt; Are these values not floats? If so why not fix the actual format specifiers instead of just removing the cast?

max_scale and zoom variables are float type. So, IMHO, it is better to use &quot;%f&quot; format specifier without casting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475772</commentid>
    <comment_count>26</comment_count>
      <attachid>109226</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-29 17:31:14 -0700</bug_when>
    <thetext>Created attachment 109226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475776</commentid>
    <comment_count>27</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-29 17:42:13 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #23)
&gt; &gt; (From update of attachment 109168 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=109168&amp;action=review
&gt; &gt; 
&gt; &gt; Nice cleanup, but I have some concerns.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/efl/ewk/ewk_view.cpp:930
&gt; &gt; &gt; -        px = (double)(x + cx) / (w + sd-&gt;view.w);
&gt; &gt; &gt; +        px = (x + cx) / (w + sd-&gt;view.w);
&gt; &gt; &gt;      else
&gt; &gt; 
&gt; &gt; Are you sure a cast isn&apos;t required here to force floating point arithmetic?
&gt; 
&gt; I think it is better to use a cast explicitly. Frankly I am not sure.

If Evas_Coord is an integer type then I believe it&apos;s necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475779</commentid>
    <comment_count>28</comment_count>
      <attachid>109226</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-29 17:44:22 -0700</bug_when>
    <thetext>Comment on attachment 109226
Patch

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

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:929
&gt; +        px = static_cast&lt;double&gt;((x + cx) / (w + sd-&gt;view.w));

Casting the entire expression here is semantically identical to the implicit cast. You need to at least cast the first operand of the division.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475786</commentid>
    <comment_count>29</comment_count>
      <attachid>109229</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-29 18:04:16 -0700</bug_when>
    <thetext>Created attachment 109229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475791</commentid>
    <comment_count>30</comment_count>
      <attachid>109229</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-29 18:11:16 -0700</bug_when>
    <thetext>Comment on attachment 109229
Patch

Nice cleanup!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475824</commentid>
    <comment_count>31</comment_count>
      <attachid>109229</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 19:17:10 -0700</bug_when>
    <thetext>Comment on attachment 109229
Patch

Clearing flags on attachment: 109229

Committed r96382: &lt;http://trac.webkit.org/changeset/96382&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475825</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-29 19:17:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108354</attachid>
            <date>2011-09-22 10:22:57 -0700</date>
            <delta_ts>2011-09-22 22:12:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68321-20110923022255.patch</filename>
            <type>text/plain</type>
            <size>27913</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU2ODYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBlYmJlYWYxZjk3
YzcyYjRkY2E5Nzg3MjBlOTQ0MzU3OWNhMDZkZDlmLi42NGQxNDgyMzUxMzZkNmVkOWExZTAzZjQ5
ZjBjMGFmNjljNDYxMTAwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTEt
MDktMjIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBVc2UgQysrIHR5cGUgY2FzdCBpbnN0ZWFkIG9mIEMgc3R5bGUgdHlwZSBjYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODMyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBz
ZWNvbmQgc3RlcCBpbiBvcmRlciB0byBiZSBtb3JlIGNvbXBsaWFudCB3aXRoIFdlYktpdCBjb2Rp
bmcgc3R5bGUuCisgICAgICAgIFRoZSBzZWNvbmQgc3RlcCBpcyB0byBjaGFuZ2UgQy10eXBlIGNh
c3Rpbmcgd2l0aCBDKystdHlwZSBjYXN0aW5nIGluIC5jcHAgZmlsZXMuCisKKyAgICAgICAgKiBl
d2svZXdrX2F1dGhfc291cC5jcHA6CisgICAgICAgIChfRXdrX0F1dGhfRGF0YTo6ZXdrX2F1dGhf
c291cF9jcmVkZW50aWFsc19zZXQpOgorICAgICAgICAoX0V3a19BdXRoX0RhdGE6OnNlc3Npb25f
YXV0aGVudGljYXRlKToKKyAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKKyAgICAg
ICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcpOgorICAgICAgICAqIGV3ay9ld2tfZnJhbWUu
Y3BwOgorICAgICAgICAoX2V3a19mcmFtZV9zbWFydF9hZGQpOgorICAgICAgICAoZXdrX2ZyYW1l
X2NoaWxkcmVuX2l0ZXJhdG9yX25ldyk6CisgICAgICAgIChld2tfZnJhbWVfaGl0X3Rlc3RfbmV3
KToKKyAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgorICAgICAgICAoX2V3a19oaXN0b3J5
X2l0ZW1fbmV3KToKKyAgICAgICAgKGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfZ2V0KToKKyAgICAg
ICAgKGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfYWx0ZXJuYXRlX2dldCk6CisgICAgICAgIChld2tf
aGlzdG9yeV9pdGVtX3VyaV9nZXQpOgorICAgICAgICAoZXdrX2hpc3RvcnlfaXRlbV91cmlfb3Jp
Z2luYWxfZ2V0KToKKyAgICAgICAgKGV3a19oaXN0b3J5X25ldyk6CisgICAgICAgICogZXdrL2V3
a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19yZXBhaW50c19yZXNpemUpOgorICAgICAg
ICAoX2V3a192aWV3X3Njcm9sbHNfcmVzaXplKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9mb2N1
c19pbik6CisgICAgICAgIChfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KToKKyAgICAgICAgKF9ld2tf
dmlld19vbl9tb3VzZV93aGVlbCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfZG93bik6
CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X29u
X21vdXNlX21vdmUpOgorICAgICAgICAoX2V3a192aWV3X29uX2tleV9kb3duKToKKyAgICAgICAg
KF9ld2tfdmlld19vbl9rZXlfdXApOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KToKKyAg
ICAgICAgKF9ld2tfdmlld19zbWFydF9hZGQpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X3pv
b21fc2V0KToKKyAgICAgICAgKF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKToKKyAgICAgICAg
KF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUpOgorICAgICAgICAoZXdrX3Zp
ZXdfem9vbV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfem9vbV93ZWFrX3NldCk6CisgICAgICAg
IChld2tfdmlld196b29tX2FuaW1hdGVkX3NldCk6CisgICAgICAgIChld2tfdmlld19wYWludF9j
b250ZXh0X25ldyk6CisgICAgICAgIChld2tfdmlld19wb3B1cF9uZXcpOgorICAgICAgICAoZXdr
X3ZpZXdfcG9wdXBfZGVzdHJveSk6CisgICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5jcHA6
CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3Zp
ZXdfc2luZ2xlX3NtYXJ0X3Jlc2l6ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3Njcm9s
bF9wcm9jZXNzX3NpbmdsZSk6CisgICAgICAgIChfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFp
bnRzX3Byb2Nlc3MpOgorICAgICAgICAqIGV3ay9ld2tfdmlld190aWxlZC5jcHA6CisgICAgICAg
IChfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2NiKToKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF91
cGRhdGVzX3Byb2Nlc3NfcHJlKToKKyAgICAgICAgKF9ld2tfdmlld190aWxlZF9jb250ZW50c19z
aXplX2NoYW5nZWRfY2IpOgorICAgICAgICAoX2V3a192aWV3X3RpbGVkX3NtYXJ0X2FkZCk6CisK
IDIwMTEtMDktMjEgIEx1Y2FzIERlIE1hcmNoaSAgPGx1Y2FzLmRlbWFyY2hpQHByb2Z1c2lvbi5t
b2JpPgogCiAgICAgICAgIFtFRkxdIFJldmVydCBwb2ludGVyIG9wZXJhdG9yIGNvZGluZyBzdHls
ZSBpbiBld2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3Vw
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcAppbmRleCAwOWYz
ZDBkYjFjNWQ3OGM4MTVkYTJlN2UzZDE4NGE1NGNlOWFiZDhiLi4wYjY4YWU4MzczNjA2ZDhlN2M3
OGFkMzRiNDk5MTJmMWYyOWQxZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2F1dGhfc291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3Nv
dXAuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgZXdrX2F1dGhfc291cF9jcmVkZW50aWFsc19z
ZXQoY29uc3QgY2hhciogdXNlcm5hbWUsIGNvbnN0IGNoYXIqIHBhc3N3b3JkLCB2CiAgICAgaWYg
KCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBFd2tfQXV0aF9EYXRhKiBhdXRoX2RhdGEg
PSAoRXdrX0F1dGhfRGF0YSopZGF0YTsKKyAgICBFd2tfQXV0aF9EYXRhICphdXRoX2RhdGEgPSBz
dGF0aWNfY2FzdDxFd2tfQXV0aF9EYXRhKj4oZGF0YSk7CiAgICAgc291cF9hdXRoX2F1dGhlbnRp
Y2F0ZShhdXRoX2RhdGEtPmF1dGgsIHVzZXJuYW1lLCBwYXNzd29yZCk7CiAgICAgc291cF9zZXNz
aW9uX3VucGF1c2VfbWVzc2FnZShhdXRoX2RhdGEtPnNlc3Npb24sIGF1dGhfZGF0YS0+bXNnKTsK
ICAgICBmcmVlX2F1dGhfZGF0YShhdXRoX2RhdGEpOwpAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMg
dm9pZCBzZXNzaW9uX2F1dGhlbnRpY2F0ZShTb3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3Nh
Z2UqIG1zZywgU291cEF1dAogICAgIGlmICghZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2sp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dGhfZGF0YSA9IChFd2tfQXV0aF9EYXRhKiljYWxs
b2MoMSwgc2l6ZW9mKEV3a19BdXRoX0RhdGEpKTsKKyAgICBhdXRoX2RhdGEgPSBzdGF0aWNfY2Fz
dDxFd2tfQXV0aF9EYXRhKj4oY2FsbG9jKDEsIHNpemVvZihFd2tfQXV0aF9EYXRhKSkpOwogCiAg
ICAgaWYgKCFhdXRoX2RhdGEpIHsKICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0
ZSBFd2tfQXV0aF9EYXRhIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2NvbnRleHRtZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUu
Y3BwCmluZGV4IDg1NzkyNmI3ODk2OGM0ZDQxOTQwZjNkNDFkZmVjYmMyMDg5ODJlMjAuLjcyMzZl
Yjc0M2Y0NWY3MmE1OTQzYmE3MzFlY2NiMTZjZjZkYzcyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfY29udGV4dG1lbnUuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgRXdrX0NvbnRleHRf
TWVudV9JdGVtKiBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0X01lbnVfSXRl
bV9UeXBlIHR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFd2tfQ29udGV4dF9NZW51X0FjdGlvbiBhY3Rpb24sIEV3a19Db250ZXh0X01lbnUqIHN1
Ym1lbnUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5hYmxlZCkK
IHsKLSAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0gPSAoRXdrX0NvbnRleHRfTWVudV9J
dGVtKikgbWFsbG9jKHNpemVvZigqaXRlbSkpOworICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSAq
aXRlbSA9IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KG1hbGxvYyhzaXplb2Yo
Kml0ZW0pKSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBmZDJmMzZiMzlmYWY1NmViMWMwMDYwYjdkNDY3ZTEx
NzQyOGY3MGM5Li5lMDg2ZGExMTBiYTFjYTU1NmQ4ZDE2ZmIxZDhmMzFiZTNjNGI4NGFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHN0cnVjdCBF
aW5hX0l0ZXJhdG9yX0V3a19GcmFtZSB7CiAjZW5kaWYKIAogI2RlZmluZSBFV0tfRlJBTUVfU0Rf
R0VUKG8sIHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBFd2tfRnJh
bWVfU21hcnRfRGF0YSAqcHRyID0gKEV3a19GcmFtZV9TbWFydF9EYXRhKilldmFzX29iamVjdF9z
bWFydF9kYXRhX2dldChvKQorICAgIEV3a19GcmFtZV9TbWFydF9EYXRhICpwdHIgPSBzdGF0aWNf
Y2FzdDxFd2tfRnJhbWVfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8p
KQogCiAjZGVmaW5lIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHB0ciwgLi4uKSAgICAg
ICAgIFwKICAgICBFV0tfRlJBTUVfVFlQRV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAg
ICAgICAgXApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRf
YWRkKEV2YXNfT2JqZWN0KiBvKQogICAgIEVXS19GUkFNRV9TRF9HRVQobywgc2QpOwogCiAgICAg
aWYgKCFzZCkgewotICAgICAgICBzZCA9IChFd2tfRnJhbWVfU21hcnRfRGF0YSopY2FsbG9jKDEs
IHNpemVvZihFd2tfRnJhbWVfU21hcnRfRGF0YSkpOworICAgICAgICBzZCA9IHN0YXRpY19jYXN0
PEV3a19GcmFtZV9TbWFydF9EYXRhKj4oY2FsbG9jKDEsIHNpemVvZihFd2tfRnJhbWVfU21hcnRf
RGF0YSkpKTsKICAgICAgICAgaWYgKCFzZCkgewogICAgICAgICAgICAgQ1JJVElDQUwoImNvdWxk
IG5vdCBhbGxvY2F0ZSBFd2tfRnJhbWVfU21hcnRfRGF0YSIpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMzAxLDggKzMwMSw4IEBAIEV2YXNfT2JqZWN0KiBld2tfZnJhbWVfdmlld19nZXQoY29u
c3QgRXZhc19PYmplY3QqIG8pCiBFaW5hX0l0ZXJhdG9yKiBld2tfZnJhbWVfY2hpbGRyZW5faXRl
cmF0b3JfbmV3KEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKG8sIHNkLCAwKTsKLSAgICBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSogaXQgPSAoRWluYV9J
dGVyYXRvcl9Fd2tfRnJhbWUqKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
bGxvYygxLCBzaXplb2YoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUpKTsKKyAgICBFaW5hX0l0ZXJh
dG9yX0V3a19GcmFtZSogaXQgPSBzdGF0aWNfY2FzdDxFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSo+
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbGxvYygxLCBzaXplb2YoRWlu
YV9JdGVyYXRvcl9Fd2tfRnJhbWUpKSk7CiAgICAgaWYgKCFpdCkKICAgICAgICAgcmV0dXJuIDA7
CiAKQEAgLTY4Niw3ICs2ODYsNyBAQCBFd2tfSGl0X1Rlc3QqIGV3a19mcmFtZV9oaXRfdGVzdF9u
ZXcoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCB4LCBpbnQgeSkKICAgICBpZiAoIXJlc3VsdC5p
bm5lck5vZGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBFd2tfSGl0X1Rlc3QqIGhpdF90
ZXN0ID0gKEV3a19IaXRfVGVzdCopY2FsbG9jKDEsIHNpemVvZihFd2tfSGl0X1Rlc3QpKTsKKyAg
ICBFd2tfSGl0X1Rlc3QgKmhpdF90ZXN0ID0gc3RhdGljX2Nhc3Q8RXdrX0hpdF9UZXN0Kj4oY2Fs
bG9jKDEsIHNpemVvZihFd2tfSGl0X1Rlc3QpKSk7CiAgICAgaWYgKCFoaXRfdGVzdCkgewogICAg
ICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgaGl0IHRlc3QuIik7
CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19oaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKaW5k
ZXggOWFlN2FhMTI1Y2IxYWI2NjNhOWY0ZmY1MTAxY2MwMmMxYjVlMGQzYS4uNjJkNzc0Mjk4NmMy
M2EyMjI0OGIzOGVhNzFiMTQ5NDk0MGUxNzk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19oaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hp
c3RvcnkuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBpbmxpbmUgRXdrX0hpc3RvcnlfSXRl
bSogX2V3a19oaXN0b3J5X2l0ZW1fbmV3KFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjb3JlCiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGl0ZW0gPSAoRXdrX0hpc3RvcnlfSXRlbSopY2Fs
bG9jKDEsIHNpemVvZihFd2tfSGlzdG9yeV9JdGVtKSk7CisgICAgaXRlbSA9IHN0YXRpY19jYXN0
PEV3a19IaXN0b3J5X0l0ZW0qPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19IaXN0b3J5X0l0ZW0pKSk7
CiAgICAgaWYgKCFpdGVtKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgYWxsb2NhdGUg
aXRlbSBtZW1vcnkuIik7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjcxLDcgKzI3MSw3IEBAIGNv
bnN0IGNoYXIqIGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0
ZW0qIGl0ZW0pCiB7CiAgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRl
bSwgY29yZSwgMCk7CiAgICAgLy8gaGlkZSB0aGUgZm9sbG93aW5nIG9wdGltemF0aW9uIGZyb20g
b3V0c2lkZQotICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSAoRXdrX0hpc3RvcnlfSXRlbSopaXRl
bTsKKyAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gY29uc3RfY2FzdDxFd2tfSGlzdG9yeV9JdGVt
Kj4oaXRlbSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZpLT50aXRsZSwgY29yZS0+
dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gaS0+dGl0bGU7CiB9CkBAIC0yODAs
NyArMjgwLDcgQEAgY29uc3QgY2hhciogZXdrX2hpc3RvcnlfaXRlbV90aXRsZV9hbHRlcm5hdGVf
Z2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiB7CiAgICAgRVdLX0hJU1RPUllfSVRF
TV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CiAgICAgLy8gaGlkZSB0aGUgZm9s
bG93aW5nIG9wdGltemF0aW9uIGZyb20gb3V0c2lkZQotICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkg
PSAoRXdrX0hpc3RvcnlfSXRlbSopaXRlbTsKKyAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gY29u
c3RfY2FzdDxFd2tfSGlzdG9yeV9JdGVtKj4oaXRlbSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9y
ZXBsYWNlKCZpLT5hbHRlcm5hdGVfdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvcmUtPmFsdGVybmF0ZVRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIGktPmFs
dGVybmF0ZV90aXRsZTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBjb25zdCBjaGFyKiBld2tfaGlzdG9y
eV9pdGVtX3VyaV9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKIHsKICAgICBFV0tf
SElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVtLCBjb3JlLCAwKTsKICAgICAvLyBo
aWRlIHRoZSBmb2xsb3dpbmcgb3B0aW16YXRpb24gZnJvbSBvdXRzaWRlCi0gICAgRXdrX0hpc3Rv
cnlfSXRlbSogaSA9IChFd2tfSGlzdG9yeV9JdGVtKilpdGVtOworICAgIEV3a19IaXN0b3J5X0l0
ZW0qIGkgPSBjb25zdF9jYXN0PEV3a19IaXN0b3J5X0l0ZW0qPigoaXRlbSkpOwogICAgIGVpbmFf
c3RyaW5nc2hhcmVfcmVwbGFjZSgmaS0+dXJpLCBjb3JlLT51cmxTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICAgICByZXR1cm4gaS0+dXJpOwogfQpAQCAtMzA3LDcgKzMwNyw3IEBAIGNvbnN0IGNo
YXIqIGV3a19oaXN0b3J5X2l0ZW1fdXJpX29yaWdpbmFsX2dldChjb25zdCBFd2tfSGlzdG9yeV9J
dGVtKiBpdGVtKQogewogICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0
ZW0sIGNvcmUsIDApOwogICAgIC8vIGhpZGUgdGhlIGZvbGxvd2luZyBvcHRpbXphdGlvbiBmcm9t
IG91dHNpZGUKLSAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gKEV3a19IaXN0b3J5X0l0ZW0qKWl0
ZW07CisgICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IGNvbnN0X2Nhc3Q8RXdrX0hpc3RvcnlfSXRl
bSo+KGl0ZW0pOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmaS0+b3JpZ2luYWxfdXJp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlLT5vcmlnaW5hbFVSTFN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgIHJldHVybiBpLT5vcmlnaW5hbF91cmk7CkBAIC0zODMsNyAr
MzgzLDcgQEAgRXdrX0hpc3RvcnkqIGV3a19oaXN0b3J5X25ldyhXZWJDb3JlOjpCYWNrRm9yd2Fy
ZExpc3RJbXBsKiBjb3JlKQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb3Jl
LCAwKTsKICAgICBEQkcoImNvcmU9JXAiLCBjb3JlKTsKIAotICAgIGhpc3RvcnkgPSAoRXdrX0hp
c3RvcnkqKW1hbGxvYyhzaXplb2YoRXdrX0hpc3RvcnkpKTsKKyAgICBoaXN0b3J5ID0gc3RhdGlj
X2Nhc3Q8RXdrX0hpc3RvcnkqPihtYWxsb2Moc2l6ZW9mKEV3a19IaXN0b3J5KSkpOwogICAgIGlm
ICghaGlzdG9yeSkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIGhpc3Rv
cnkgbWVtb3J5LiIpOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCmluZGV4IDQ4MjRjYmNhMmEwNTU5MWRkNWRhNmIyMTgyYjE2YjQzNTE5NjFkZjIuLmEwMDBk
OGZkMzI0NTNhZGY1NzdmOTkwYjY0MDQxMDZiZmViNWFhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhIHsKICNlbmRpZgogCiAjZGVmaW5lIEVXS19WSUVXX1NEX0dFVChvLCBwdHIpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnB0ciA9
IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKQorICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEgKnB0ciA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0Rh
dGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKSkKIAogI2RlZmluZSBFV0tfVklFV19T
RF9HRVRfT1JfUkVUVVJOKG8sIHB0ciwgLi4uKSAgICAgICAgICBcCiAgICAgRVdLX1ZJRVdfVFlQ
RV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgIFwKQEAgLTI0NSw3ICsyNDUs
NyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19yZXBhaW50c19yZXNpemUoRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3QgcwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsK
ICAgICB9CiAgICAgcHJpdi0+cmVwYWludHMuYWxsb2NhdGVkID0gc2l6ZTsKLSAgICBwcml2LT5y
ZXBhaW50cy5hcnJheSA9IChFaW5hX1JlY3RhbmdsZSopdG1wOworICAgIHByaXYtPnJlcGFpbnRz
LmFycmF5ID0gc3RhdGljX2Nhc3Q8RWluYV9SZWN0YW5nbGUqPih0bXApOwogICAgIHJldHVybiBF
SU5BX1RSVUU7CiB9CiAKQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tf
dmlld19zY3JvbGxzX3Jlc2l6ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCBz
aQogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgcHJpdi0+c2Nyb2xscy5h
bGxvY2F0ZWQgPSBzaXplOwotICAgIHByaXYtPnNjcm9sbHMuYXJyYXkgPSAoRXdrX1Njcm9sbF9S
ZXF1ZXN0Kil0bXA7CisgICAgcHJpdi0+c2Nyb2xscy5hcnJheSA9IHN0YXRpY19jYXN0PEV3a19T
Y3JvbGxfUmVxdWVzdCo+KHRtcCk7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIApAQCAtNDcw
LDcgKzQ3MCw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2Ny
aXB0X3Byb21wdChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwKIC8vIEV2ZW50IEhhbmRsaW5nIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogc3Rh
dGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX2luKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNf
T2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSAqc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfaW4pOwogICAgIHNkLT5hcGktPmZvY3VzX2luKHNkKTsK
QEAgLTQ3OCw3ICs0NzgsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfaW4odm9p
ZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZQogCiBzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0
KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0g
KEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2Qg
PSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc2QtPmFwaS0+Zm9jdXNfb3V0KTsKICAgICBzZC0+YXBpLT5mb2N1c19vdXQoc2QpOwpAQCAt
NDg2LDggKzQ4Niw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCog
ZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2CiAKIHN0YXRpYyB2b2lkIF9l
d2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCog
bywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldiA9
IChFdmFzX0V2ZW50X01vdXNlX1doZWVsKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZhc19FdmVudF9N
b3VzZV9XaGVlbCAqZXYgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX1doZWVsKj4oZXZl
bnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSAqc2QgPSBzdGF0aWNfY2FzdDxFd2tf
Vmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
c2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2Vf
d2hlZWwpOwogICAgIHNkLT5hcGktPm1vdXNlX3doZWVsKHNkLCBldik7CkBAIC00OTUsOCArNDk1
LDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2
YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKgogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25f
bW91c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZl
bnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRf
TW91c2VfRG93biopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChF
d2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biAqZXYg
PSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX0Rvd24qPihldmVudF9pbmZvKTsKKyAgICBF
d2tfVmlld19TbWFydF9EYXRhICpzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEq
PihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV9kb3duKTsKICAgICBzZC0+
YXBpLT5tb3VzZV9kb3duKHNkLCBldik7CkBAIC01MDQsOCArNTA0LDggQEAgc3RhdGljIHZvaWQg
X2V3a192aWV3X29uX21vdXNlX2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3Qq
IG8sIHZvaWQqIGUKIAogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3VwKHZvaWQqIGRh
dGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2
YXNfRXZlbnRfTW91c2VfVXAqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfVXAqKWV2ZW50X2luZm87
Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0
YTsKKyAgICBFdmFzX0V2ZW50X01vdXNlX1VwICpldiA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRf
TW91c2VfVXAqPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IHN0
YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
ZC0+YXBpLT5tb3VzZV91cCk7CiAgICAgc2QtPmFwaS0+bW91c2VfdXAoc2QsIGV2KTsKQEAgLTUx
Myw4ICs1MTMsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfdXAodm9pZCogZGF0
YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZQogCiBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfb25fbW91c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywg
dm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2ID0gKEV2
YXNfRXZlbnRfTW91c2VfTW92ZSopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRh
KiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91c2Vf
TW92ZSAqZXYgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX01vdmUqPihldmVudF9pbmZv
KTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1Nt
YXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBp
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV9tb3ZlKTsK
ICAgICBzZC0+YXBpLT5tb3VzZV9tb3ZlKHNkLCBldik7CkBAIC01MjIsOCArNTIyLDggQEAgc3Rh
dGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX21vdmUodm9pZCogZGF0YSwgRXZhcyogZSwgRXZh
c19PYmplY3QqIG8sIHZvaWQqIGUKIAogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3du
KHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQog
ewotICAgIEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2
ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRf
RGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X0tleV9Eb3duICpldiA9IHN0YXRpY19jYXN0PEV2
YXNfRXZlbnRfS2V5X0Rvd24qPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRh
ICpzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihzZC0+YXBpLT5rZXlfZG93bik7CiAgICAgc2QtPmFwaS0+a2V5X2Rvd24oc2QsIGV2
KTsKQEAgLTUzMSw4ICs1MzEsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24o
dm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZQogCiBzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfb25fa2V5X3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0
KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfS2V5X1VwKiBldiA9IChF
dmFzX0V2ZW50X0tleV9VcCopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBz
ZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfS2V5X1VwICpl
diA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfS2V5X1VwKj4oZXZlbnRfaW5mbyk7CisgICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSAqc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4o
ZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+a2V5X3VwKTsKICAgICBzZC0+YXBpLT5r
ZXlfdXAoc2QsIGV2KTsKQEAgLTU1NCw4ICs1NTQsOCBAQCBzdGF0aWMgRXZhc19TbWFydF9DbGFz
cyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKIHN0YXRpYyBFd2tf
Vmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRh
KiBzZCkKIHsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPQotICAgICAgICAoRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1ByaXZhdGVfRGF0
YSkpOworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiA9CisgICAgICAgIHN0YXRpY19j
YXN0PEV3a19WaWV3X1ByaXZhdGVfRGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKSkpOwogICAgIEF0b21pY1N0cmluZyBzOwogICAgIFdlYkNvcmU6OktVUkwgdXJs
OwogCkBAIC03MjQsMTIgKzcyNCwxMiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRk
KEV2YXNfT2JqZWN0KiBvKQogewogICAgIGNvbnN0IEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZhc19v
YmplY3Rfc21hcnRfc21hcnRfZ2V0KG8pOwogICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3MqIHNj
ID0gZXZhc19zbWFydF9jbGFzc19nZXQoc21hcnQpOwotICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0
X0NsYXNzKiBhcGkgPSAoY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqKXNjOworICAgIGNvbnN0
IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSAoRXdrX1ZpZXdfU21hcnRfQ2xhc3MqKShzYyk7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXBpLT5iYWNraW5nX3N0b3JlX2FkZCk7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmICghc2QpIHsKLSAgICAgICAg
c2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19TbWFy
dF9EYXRhKSk7CisgICAgICAgIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+
KGNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpKTsKICAgICAgICAgaWYgKCFz
ZCkgewogICAgICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld19T
bWFydF9EYXRhIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05MjYsMTIgKzkyNiwxMiBAQCBz
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmlld19TbWFydF9E
YXRhKiBzZCwgZmxvYXQgem9vbSwgRQogICAgIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dldChzZC0+
bWFpbl9mcmFtZSwgJngsICZ5KTsKIAogICAgIGlmICh3ICsgc2QtPnZpZXcudyA+IDApCi0gICAg
ICAgIHB4ID0gKGRvdWJsZSkoeCArIGN4KSAvICh3ICsgc2QtPnZpZXcudyk7CisgICAgICAgIHB4
ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPigoeCArIGN4KSAvICh3ICsgc2QtPnZpZXcudykpOwogICAg
IGVsc2UKICAgICAgICAgcHggPSAwLjA7CiAKICAgICBpZiAoaCArIHNkLT52aWV3LmggPiAwKQot
ICAgICAgICBweSA9IChkb3VibGUpKHkgKyBjeSkgLyAoaCArIHNkLT52aWV3LmgpOworICAgICAg
ICBweSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oKHkgKyBjeSkgLyAoaCArIHNkLT52aWV3LmgpKTsK
ICAgICBlbHNlCiAgICAgICAgIHB5ID0gMC4wOwogCkBAIC0xMDA0LDcgKzEwMDQsNyBAQCBzdGF0
aWMgZmxvYXQgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfY3VycmVudChFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXYpCiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3pvb21fYW5pbWF0b3Jf
Y2Iodm9pZCogZGF0YSkKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhKilkYXRhOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnNkID0gc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEV2YXNfQ29vcmQgY3gsIGN5
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKICAgICBkb3VibGUgbm93ID0gZWNv
cmVfbG9vcF90aW1lX2dldCgpOwpAQCAtMTA0OCwxMSArMTA0OCwxMSBAQCBzdGF0aWMgV2ViQ29y
ZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1
dGUoY29uc3QgRQogICAgIGludCBkZXNrdG9wX3dpZHRoID0gOTgwOwogICAgIGludCBkZXZpY2Vf
ZHBpID0gZXdrX3V0aWxfZHBpX2dldCgpOwogCi0gICAgaW50IGF2YWlsYWJsZV93aWR0aCA9IChp
bnQpIHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFnZVJlY3QoKS53aWR0aCgpOwot
ICAgIGludCBhdmFpbGFibGVfaGVpZ2h0ID0gKGludCkgcHJpdi0+cGFnZS0+Y2hyb21lKCktPmNs
aWVudCgpLT5wYWdlUmVjdCgpLmhlaWdodCgpOworICAgIGludCBhdmFpbGFibGVfd2lkdGggPSBz
dGF0aWNfY2FzdDxpbnQ+KHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFnZVJlY3Qo
KS53aWR0aCgpKTsKKyAgICBpbnQgYXZhaWxhYmxlX2hlaWdodCA9IHN0YXRpY19jYXN0PGludD4o
cHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wYWdlUmVjdCgpLmhlaWdodCgpKTsKIAot
ICAgIGludCBkZXZpY2Vfd2lkdGggPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPndpbmRvd1JlY3QoKS53aWR0aCgpOwotICAgIGludCBkZXZpY2VfaGVpZ2h0ID0gKGludCkg
cHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCk7Cisg
ICAgaW50IGRldmljZV93aWR0aCA9IHN0YXRpY19jYXN0PGludD4ocHJpdi0+cGFnZS0+Y2hyb21l
KCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkud2lkdGgoKSk7CisgICAgaW50IGRldmljZV9oZWln
aHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2lu
ZG93UmVjdCgpLmhlaWdodCgpKTsKIAogICAgIFdlYkNvcmU6OkludFNpemUgYXZhaWxhYmxlX3Np
emUgPSBXZWJDb3JlOjpJbnRTaXplKGF2YWlsYWJsZV93aWR0aCwgYXZhaWxhYmxlX2hlaWdodCk7
CiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpj
b21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKHByaXYtPnZpZXdwb3J0X2FyZ3VtZW50cywgZGVza3Rv
cF93aWR0aCwgZGV2aWNlX3dpZHRoLCBkZXZpY2VfaGVpZ2h0LCBkZXZpY2VfZHBpLCBhdmFpbGFi
bGVfc2l6ZSk7CkBAIC0xNTYxLDExICsxNTYxLDExIEBAIEVpbmFfQm9vbCBld2tfdmlld196b29t
X3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29y
CiAgICAgfQogCiAgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9z
Y2FsZSkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlw
cml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKyAgICAg
ICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIHN0YXRpY19jYXN0PGRvdWJsZT4ocHJp
di0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHpv
b20pKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIGlmICh6b29tID4g
cHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6b29t
IGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5t
YXhfc2NhbGUsIChkb3VibGUpem9vbSk7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVm
IDogJWYiLCBzdGF0aWNfY2FzdDxkb3VibGU+KHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4
X3NjYWxlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih6b29tKSk7CiAgICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOwogICAgIH0KIApAQCAtMTYwNSwxMSArMTYwNSwxMSBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBj
eCwgRXZhcwogICAgIH0KIAogICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5n
ZS5taW5fc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChk
b3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7
CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSwgc3RhdGljX2Nhc3Q8ZG91
YmxlPih6b29tKSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KICAgICBpZiAo
em9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlKSB7Ci0gICAgICAgIFdS
Tigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICBXUk4oInpvb20gbGV2ZWwg
aXMgPiAlZiA6ICVmIiwgc3RhdGljX2Nhc3Q8ZG91YmxlPihwcml2LT5zZXR0aW5ncy56b29tX3Jh
bmdlLm1heF9zY2FsZSksIHN0YXRpY19jYXN0PGRvdWJsZT4oem9vbSkpOwogICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAgLTE2NjEsMTEgKzE2NjEsMTEgQEAgRWluYV9Cb29s
IGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBm
bG9hdCBkdXJhdGlvbiwKICAgICB9CiAKICAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpv
b21fcmFuZ2UubWluX3NjYWxlKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDog
JWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91Ymxl
KXpvb20pOworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSksIHN0YXRpY19j
YXN0PGRvdWJsZT4oem9vbSkpOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAg
ICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgewotICAg
ICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5n
cy56b29tX3JhbmdlLm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKyAgICAgICAgV1JOKCJ6b29t
IGxldmVsIGlzID4gJWYgOiAlZiIsIHN0YXRpY19jYXN0PGRvdWJsZT4ocHJpdi0+c2V0dGluZ3Mu
em9vbV9yYW5nZS5tYXhfc2NhbGUpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHpvb20pKTsKICAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0yNDkxLDcgKzI0OTEsNyBAQCBFd2tf
Vmlld19QYWludF9Db250ZXh0KiBld2tfdmlld19wYWludF9jb250ZXh0X25ldyhFd2tfVmlld19Q
cml2YXRlX0RhdGEqIHByaXYsCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHBy
aXYtPm1haW5fZnJhbWUsIDApOwogICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHByaXYt
Pm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
dmlldywgMCk7Ci0gICAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCA9IChFd2tfVmlld19Q
YWludF9Db250ZXh0KiltYWxsb2Moc2l6ZW9mKCpjdHh0KSk7CisgICAgRXdrX1ZpZXdfUGFpbnRf
Q29udGV4dCAqY3R4dCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1BhaW50X0NvbnRleHQqPihtYWxs
b2Moc2l6ZW9mKCpjdHh0KSkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChj
dHh0LCAwKTsKIAogICAgIGN0eHQtPmdjID0gbmV3IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dChj
cik7CkBAIC0zMzQwLDcgKzMzNDAsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09i
amVjdCogbywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZQogICAgIC8v
IHBvcHVsYXRlIGl0ZW1zCiAgICAgY29uc3QgaW50IHNpemUgPSBjbGllbnQtPmxpc3RTaXplKCk7
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgRXdrX01lbnVf
SXRlbSogaXRlbSA9IChFd2tfTWVudV9JdGVtKikgbWFsbG9jKHNpemVvZigqaXRlbSkpOworICAg
ICAgICBFd2tfTWVudV9JdGVtICppdGVtID0gc3RhdGljX2Nhc3Q8RXdrX01lbnVfSXRlbSo+KG1h
bGxvYyhzaXplb2YoKml0ZW0pKSk7CiAgICAgICAgIGlmIChjbGllbnQtPml0ZW1Jc1NlcGFyYXRv
cihpKSkKICAgICAgICAgICAgIGl0ZW0tPnR5cGUgPSBFV0tfTUVOVV9TRVBBUkFUT1I7CiAgICAg
ICAgIGVsc2UgaWYgKGNsaWVudC0+aXRlbUlzTGFiZWwoaSkpCkBAIC0zMzcyLDcgKzMzNzIsNyBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfZGVzdHJveShFdmFzX09iamVjdCogbykKIAogICAg
IHZvaWQqIGl0ZW12OwogICAgIEVJTkFfTElTVF9GUkVFKHByaXYtPnBvcHVwLm1lbnUuaXRlbXMs
IGl0ZW12KSB7Ci0gICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSAoRXdrX01lbnVfSXRlbSop
aXRlbXY7CisgICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfTWVu
dV9JdGVtKj4oaXRlbXYpOwogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChpdGVtLT50ZXh0
KTsKICAgICAgICAgZnJlZShpdGVtKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlld19zaW5nbGUuY3BwCmluZGV4IGI5OWM4YWQ3OTE3NTJjYWE4OTFhMzBlYmVhOTRhNGQwZTdh
MWRmOWMuLjVhZDY3ZmVhZDMzYTY5MDg1Nzk4ZTU1MzZhNTE1YTlhYzY1MjY4YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHN0
YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBvKQogCiAg
ICAgX3BhcmVudF9zYy5zYy5hZGQobyk7CiAKLSAgICBzZCA9IChFd2tfVmlld19TbWFydF9EYXRh
KilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKTsKKyAgICBzZCA9IHN0YXRpY19jYXN0PEV3
a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKSk7CiAgICAg
aWYgKCFzZCkKICAgICAgICAgcmV0dXJuOwogCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBFdmFz
X09iamVjdCogX2V3a192aWV3X3NpbmdsZV9zbWFydF9iYWNraW5nX3N0b3JlX2FkZChFd2tfVmll
d19TbWFydF9EYXRhCiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVzaXpl
KEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKLSAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29iamVjdF9z
bWFydF9kYXRhX2dldChvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19j
YXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKSk7
CiAgICAgX3BhcmVudF9zYy5zYy5yZXNpemUobywgdywgaCk7CiAKICAgICBpZiAoIXNkKQpAQCAt
MjUxLDcgKzI1MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9s
bF9wcm9jZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRhKiBzCiAgICAgICAgICAgICAgICAg
c3gsIHN5ICsgc2ggKyBzci0+ZHksIHN3LCAtc3ItPmR5KTsKIAogICAgICAgICAgICAgX2V3a192
aWV3XzRiX21vdmVfcmVnaW9uX3VwCi0gICAgICAgICAgICAgICAgKCh1aW50MzJfdCopcGl4ZWxz
LCAtc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCwgb3cpOworICAgICAgICAgICAgICAgIChzdGF0aWNf
Y2FzdDx1aW50MzJfdCo+KHBpeGVscyksIC1zci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7CiAg
ICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKICAgICAgICAgICAg
ICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIHN4LCBzeSwgc3csIHNoICsgc3ItPmR5KTsKIApAQCAt
MjYzLDcgKzI2Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9s
bF9wcm9jZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRhKiBzCiAgICAgICAgICAgICAgICAg
c3gsIHN5LCBzdywgc3ItPmR5KTsKIAogICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfcmVn
aW9uX2Rvd24KLSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KilwaXhlbHMsIHNyLT5keSwgc3gs
IHN5LCBzdywgc2gsIG93KTsKKyAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3Qq
PihwaXhlbHMpLCBzci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7CiAgICAgICAgICAgICBldmFz
X29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKICAgICAgICAgICAgICAgICAoc2QtPmJhY2tp
bmdfc3RvcmUsIHN4LCBzeSArIHNyLT5keSwgc3csIHNoIC0gc3ItPmR5KTsKIApAQCAtMjc3LDcg
KzI3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9j
ZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRhKiBzCiAgICAgICAgICAgICAgICAgc3ggKyBz
dyArIHNyLT5keCwgc3ksIC1zci0+ZHgsIHNoKTsKIAogICAgICAgICAgICAgX2V3a192aWV3XzRi
X21vdmVfcmVnaW9uX2xlZnQKLSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KilwaXhlbHMsIC1z
ci0+ZHgsIHN4LCBzeSwgc3csIHNoLCBvdyk7CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0
PHVpbnQzMl90Kj4ocGl4ZWxzKSwgLXNyLT5keCwgc3gsIHN5LCBzdywgc2gsIG93KTsKICAgICAg
ICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAogICAgICAgICAgICAgICAg
IChzZC0+YmFja2luZ19zdG9yZSwgc3gsIHN5LCBzdyArIHNyLT5keCwgc2gpOwogCkBAIC0yODks
NyArMjg5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3By
b2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHMKICAgICAgICAgICAgICAgICBzeCwg
c3ksIHNyLT5keCwgc2gpOwogCiAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25f
cmlnaHQKLSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KilwaXhlbHMsIHNyLT5keCwgc3gsIHN5
LCBzdywgc2gsIG93KTsKKyAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihw
aXhlbHMpLCBzci0+ZHgsIHN4LCBzeSwgc3csIHNoLCBvdyk7CiAgICAgICAgICAgICBldmFzX29i
amVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKICAgICAgICAgICAgICAgICAoc2QtPmJhY2tpbmdf
c3RvcmUsIHN4ICsgc3ItPmR4LCBzeSwgc3cgLSBzci0+ZHgsIHNoKTsKIApAQCAtMzMyLDcgKzMz
Miw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNz
X3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRhKiBzCiAgICAgICAgICAgICBzci0+ZHgsIHNyLT5k
eSwgbXgsIG15LCBtdywgbWgsIGF4LCBheSwgYXcsIGFoLCBieCwgYnksIGJ3LCBiaCk7CiAKICAg
ICAgICAgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uCi0gICAgICAgICAgICAoKHVpbnQzMl90Kilw
aXhlbHMsIHNyLT5keCwgc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCwgb3cpOworICAgICAgICAgICAg
KHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgc3ItPmR4LCBzci0+ZHksIHN4LCBzeSwg
c3csIHNoLCBvdyk7CiAKICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRk
KHNkLT5iYWNraW5nX3N0b3JlLCBteCwgbXksIG13LCBtaCk7CiAgICAgICAgIGV3a192aWV3X3Jl
cGFpbnRfYWRkKHNkLT5fcHJpdiwgYXgsIGF5LCBhdywgYWgpOwpAQCAtNDAwLDcgKzQwMCw3IEBA
IHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9jZXNz
KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkCiAgICAgZm9ybWF0ID0gQ0FJUk9fRk9STUFUX0FSR0Iz
MjsKIAogICAgIHN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YQot
ICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKilwaXhlbHMsIGZvcm1hdCwgb3csIG9o
LCBvdyAqIDQpOworICAgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIq
PihwaXhlbHMpLCBmb3JtYXQsIG93LCBvaCwgb3cgKiA0KTsKICAgICBzdGF0dXMgPSBjYWlyb19z
dXJmYWNlX3N0YXR1cyhzdXJmYWNlKTsKICAgICBpZiAoc3RhdHVzICE9IENBSVJPX1NUQVRVU19T
VUNDRVNTKSB7CiAgICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSBzdXJmYWNlIGZyb20gZGF0
YSAlZHglZDogJXMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
X3RpbGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKaW5k
ZXggNDk3NTFiZDlkOWU1ZjVhMzA4NmE1M2I0ODM0NmRiNTk3YmM0YzQ1Zi4uMmRhZTZjYWViODZm
NzA2YWE4Y2VjZTFkODI3YmQ1YTBhODU3NzJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXdfdGlsZWQuY3BwCkBAIC0zMiw3ICszMiw3IEBAIHN0YXRpYyBFd2tfVmlld19TbWFydF9D
bGFzcyBfcGFyZW50X3NjID0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogCiBzdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9yZW5kZXJfY2Iodm9pZCogZGF0YSwgRXdrX1Rp
bGUqIHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewotICAgIEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogcHJpdiA9IChFd2tfVmlld19Qcml2YXRlX0RhdGEqKWRhdGE7CisgICAgRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhICpwcml2ID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
Kj4oZGF0YSk7CiAgICAgRWluYV9SZWN0YW5nbGUgciA9IHthcmVhLT54ICsgdC0+eCwgYXJlYS0+
eSArIHQtPnksIGFyZWEtPncsIGFyZWEtPmh9OwogCiAgICAgcmV0dXJuIGV3a192aWV3X3BhaW50
X2NvbnRlbnRzKHByaXYsIHQtPmNhaXJvLCAmcik7CkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYih2b2lkKiBkYXRhLCBFd2tfVGlsZSog
dCwgY29uc3QgRWluYV9SCiAKIHN0YXRpYyB2b2lkKiBfZXdrX3ZpZXdfdGlsZWRfdXBkYXRlc19w
cm9jZXNzX3ByZSh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogbykKIHsKLSAgICBFd2tfVmlld19Q
cml2YXRlX0RhdGEqIHByaXYgPSAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKilkYXRhOworICAgIEV3
a19WaWV3X1ByaXZhdGVfRGF0YSAqcHJpdiA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1ByaXZhdGVf
RGF0YSo+KGRhdGEpOwogICAgIGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZlKHBy
aXYpOwogICAgIHJldHVybiAwOwogfQpAQCAtNTgsOCArNTgsOCBAQCBzdGF0aWMgRXZhc19PYmpl
Y3QqIF9ld2tfdmlld190aWxlZF9zbWFydF9iYWNraW5nX3N0b3JlX2FkZChFd2tfVmlld19TbWFy
dF9EYXRhKgogc3RhdGljIHZvaWQKIF9ld2tfdmlld190aWxlZF9jb250ZW50c19zaXplX2NoYW5n
ZWRfY2Iodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0g
ICAgRXZhc19Db29yZCogc2l6ZSA9IChFdmFzX0Nvb3JkKilldmVudF9pbmZvOwotICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZh
c19Db29yZCAqc2l6ZSA9IHN0YXRpY19jYXN0PEV2YXNfQ29vcmQqPihldmVudF9pbmZvKTsKKyAg
ICBFd2tfVmlld19TbWFydF9EYXRhICpzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0Rh
dGEqPihkYXRhKTsKIAogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2NvbnRlbnRzX3Jlc2l6
ZQogICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIHNpemVbMF0sIHNpemVbMV0pOwpAQCAtNzEs
NyArNzEsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYWRkKEV2YXNfT2Jq
ZWN0KiBvKQogCiAgICAgX3BhcmVudF9zYy5zYy5hZGQobyk7CiAKLSAgICBzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhKilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKTsKKyAgICBzZCA9IHN0
YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dl
dChvKSk7CiAgICAgaWYgKCFzZCkKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108441</attachid>
            <date>2011-09-22 22:13:03 -0700</date>
            <delta_ts>2011-09-25 02:35:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68321-20110923141301.patch</filename>
            <type>text/plain</type>
            <size>28622</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU3ODIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBlYmJlYWYxZjk3
YzcyYjRkY2E5Nzg3MjBlOTQ0MzU3OWNhMDZkZDlmLi41ZjFkMTA1YWQ3MWUyOWFkNTgyZTBiNzlm
YmZjMWE4NTliMGRjNmYyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTEt
MDktMjIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBVc2UgQysrIHR5cGUgY2FzdCBpbnN0ZWFkIG9mIEMgc3R5bGUgdHlwZSBjYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODMyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBz
ZWNvbmQgc3RlcCBpbiBvcmRlciB0byBiZSBtb3JlIGNvbXBsaWFudCB3aXRoIFdlYktpdCBjb2Rp
bmcgc3R5bGUuCisgICAgICAgIFRoZSBzZWNvbmQgc3RlcCBpcyB0byBjaGFuZ2UgQy10eXBlIGNh
c3Rpbmcgd2l0aCBDKystdHlwZSBjYXN0aW5nIGluIC5jcHAgZmlsZXMuCisKKyAgICAgICAgSW4g
YWRkaXRpb24sIHJlbWFpbmVkIGVmbCBzdHlsZSAnKicgcG9pbnRlciBwbGFjZW1lbnRzIGFyZSBt
b3ZlZCB0byB0aGUgcmlnaHQgcGxhY2UgYXMgd2VsbC4KKworICAgICAgICAqIGV3ay9ld2tfYXV0
aF9zb3VwLmNwcDoKKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpld2tfYXV0aF9zb3VwX2NyZWRl
bnRpYWxzX3NldCk6CisgICAgICAgIChfRXdrX0F1dGhfRGF0YTo6c2Vzc2lvbl9hdXRoZW50aWNh
dGUpOgorICAgICAgICAqIGV3ay9ld2tfY29udGV4dG1lbnUuY3BwOgorICAgICAgICAoZXdrX2Nv
bnRleHRfbWVudV9pdGVtX25ldyk6CisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAg
ICAgIChfZXdrX2ZyYW1lX3NtYXJ0X2FkZCk6CisgICAgICAgIChld2tfZnJhbWVfY2hpbGRyZW5f
aXRlcmF0b3JfbmV3KToKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgorICAgICAg
ICAqIGV3ay9ld2tfaGlzdG9yeS5jcHA6CisgICAgICAgIChfZXdrX2hpc3RvcnlfaXRlbV9uZXcp
OgorICAgICAgICAoZXdrX2hpc3RvcnlfaXRlbV90aXRsZV9nZXQpOgorICAgICAgICAoZXdrX2hp
c3RvcnlfaXRlbV90aXRsZV9hbHRlcm5hdGVfZ2V0KToKKyAgICAgICAgKGV3a19oaXN0b3J5X2l0
ZW1fdXJpX2dldCk6CisgICAgICAgIChld2tfaGlzdG9yeV9pdGVtX3VyaV9vcmlnaW5hbF9nZXQp
OgorICAgICAgICAoZXdrX2hpc3RvcnlfbmV3KToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3Bw
OgorICAgICAgICAoX2V3a192aWV3X3JlcGFpbnRzX3Jlc2l6ZSk6CisgICAgICAgIChfZXdrX3Zp
ZXdfc2Nyb2xsc19yZXNpemUpOgorICAgICAgICAoX2V3a192aWV3X29uX2ZvY3VzX2luKToKKyAg
ICAgICAgKF9ld2tfdmlld19vbl9mb2N1c19vdXQpOgorICAgICAgICAoX2V3a192aWV3X29uX21v
dXNlX3doZWVsKToKKyAgICAgICAgKF9ld2tfdmlld19vbl9tb3VzZV9kb3duKToKKyAgICAgICAg
KF9ld2tfdmlld19vbl9tb3VzZV91cCk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fbW91c2VfbW92
ZSk6CisgICAgICAgIChfZXdrX3ZpZXdfb25fa2V5X2Rvd24pOgorICAgICAgICAoX2V3a192aWV3
X29uX2tleV91cCk6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9uZXcpOgorICAgICAgICAoX2V3
a192aWV3X3NtYXJ0X2FkZCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQpOgor
ICAgICAgICAoX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2IpOgorICAgICAgICAoX2V3a192aWV3
X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZSk6CisgICAgICAgIChld2tfdmlld196b29tX3Nl
dCk6CisgICAgICAgIChld2tfdmlld196b29tX3dlYWtfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3
KToKKyAgICAgICAgKGV3a192aWV3X3BvcHVwX25ldyk6CisgICAgICAgIChld2tfdmlld19wb3B1
cF9kZXN0cm95KToKKyAgICAgICAgKiBld2svZXdrX3ZpZXdfc2luZ2xlLmNwcDoKKyAgICAgICAg
KF9ld2tfdmlld19zaW5nbGVfc21hcnRfYWRkKToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVf
c21hcnRfcmVzaXplKToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nf
c2luZ2xlKToKKyAgICAgICAgKF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVwYWludHNfcHJvY2Vz
cyk6CisgICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKKyAgICAgICAgKF9ld2tfdmll
d190aWxlZF9yZW5kZXJfY2IpOgorICAgICAgICAoX2V3a192aWV3X3RpbGVkX3VwZGF0ZXNfcHJv
Y2Vzc19wcmUpOgorICAgICAgICAoX2V3a192aWV3X3RpbGVkX2NvbnRlbnRzX3NpemVfY2hhbmdl
ZF9jYik6CisgICAgICAgIChfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYWRkKToKKwogMjAxMS0wOS0y
MSAgTHVjYXMgRGUgTWFyY2hpICA8bHVjYXMuZGVtYXJjaGlAcHJvZnVzaW9uLm1vYmk+CiAKICAg
ICAgICAgW0VGTF0gUmV2ZXJ0IHBvaW50ZXIgb3BlcmF0b3IgY29kaW5nIHN0eWxlIGluIGV3awpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwCmluZGV4IDA5ZjNkMGRiMWM1ZDc4
YzgxNWRhMmU3ZTNkMTg0YTU0Y2U5YWJkOGIuLmZiMzZhOTE1OWYyN2IyNzJiYTFmMzAyNjQ2ZGNj
N2YwMWZmMTVhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9z
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKQEAg
LTc5LDcgKzc5LDcgQEAgdm9pZCBld2tfYXV0aF9zb3VwX2NyZWRlbnRpYWxzX3NldChjb25zdCBj
aGFyKiB1c2VybmFtZSwgY29uc3QgY2hhciogcGFzc3dvcmQsIHYKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIEV3a19BdXRoX0RhdGEqIGF1dGhfZGF0YSA9IChFd2tfQXV0
aF9EYXRhKilkYXRhOworICAgIEV3a19BdXRoX0RhdGEqIGF1dGhfZGF0YSA9IHN0YXRpY19jYXN0
PEV3a19BdXRoX0RhdGEqPihkYXRhKTsKICAgICBzb3VwX2F1dGhfYXV0aGVudGljYXRlKGF1dGhf
ZGF0YS0+YXV0aCwgdXNlcm5hbWUsIHBhc3N3b3JkKTsKICAgICBzb3VwX3Nlc3Npb25fdW5wYXVz
ZV9tZXNzYWdlKGF1dGhfZGF0YS0+c2Vzc2lvbiwgYXV0aF9kYXRhLT5tc2cpOwogICAgIGZyZWVf
YXV0aF9kYXRhKGF1dGhfZGF0YSk7CkBAIC05NCw3ICs5NCw3IEBAIHN0YXRpYyB2b2lkIHNlc3Np
b25fYXV0aGVudGljYXRlKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogbXNnLCBT
b3VwQXV0CiAgICAgaWYgKCFld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjaykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0aF9kYXRhID0gKEV3a19BdXRoX0RhdGEqKWNhbGxvYygxLCBzaXpl
b2YoRXdrX0F1dGhfRGF0YSkpOworICAgIGF1dGhfZGF0YSA9IHN0YXRpY19jYXN0PEV3a19BdXRo
X0RhdGEqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19BdXRoX0RhdGEpKSk7CiAKICAgICBpZiAoIWF1
dGhfZGF0YSkgewogICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19BdXRo
X0RhdGEiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1l
bnUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAKaW5kZXgg
ODU3OTI2Yjc4OTY4YzRkNDE5NDBmM2Q0MWRmZWNiYzIwODk4MmUyMC4uYWExNjE5ZmQ5MThmMTI2
MzBhMDE3MDIyYjZlZGZlM2U3M2NjYzhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19jb250ZXh0bWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19j
b250ZXh0bWVudS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBFd2tfQ29udGV4dF9NZW51X0l0ZW0q
IGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlw
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV3a19D
b250ZXh0X01lbnVfQWN0aW9uIGFjdGlvbiwgRXdrX0NvbnRleHRfTWVudSogc3VibWVudSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBlbmFibGVkKQogewotICAgIEV3
a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSA9IChFd2tfQ29udGV4dF9NZW51X0l0ZW0qKSBtYWxs
b2Moc2l6ZW9mKCppdGVtKSk7CisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtID0gc3Rh
dGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4obWFsbG9jKHNpemVvZigqaXRlbSkpKTsK
ICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuY3BwCmluZGV4IGZkMmYzNmIzOWZhZjU2ZWIxYzAwNjBiN2Q0NjdlMTE3NDI4ZjcwYzku
LjY1OGMyNDY5Njk4N2NhYWE5N2Y1OTNjMTYwYzJlZjBlYWUzNjMzZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RydWN0IEVpbmFfSXRlcmF0
b3JfRXdrX0ZyYW1lIHsKICNlbmRpZgogCiAjZGVmaW5lIEVXS19GUkFNRV9TRF9HRVQobywgcHRy
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEV3a19GcmFtZV9TbWFydF9E
YXRhICpwdHIgPSAoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFf
Z2V0KG8pCisgICAgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqIHB0ciA9IHN0YXRpY19jYXN0PEV3a19G
cmFtZV9TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykpCiAKICNkZWZp
bmUgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgcHRyLCAuLi4pICAgICAgICAgXAogICAg
IEVXS19GUkFNRV9UWVBFX0NIRUNLKG8sIF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICBcCkBA
IC0xODEsNyArMTgxLDcgQEAgc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9hZGQoRXZhc19P
YmplY3QqIG8pCiAgICAgRVdLX0ZSQU1FX1NEX0dFVChvLCBzZCk7CiAKICAgICBpZiAoIXNkKSB7
Ci0gICAgICAgIHNkID0gKEV3a19GcmFtZV9TbWFydF9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3
a19GcmFtZV9TbWFydF9EYXRhKSk7CisgICAgICAgIHNkID0gc3RhdGljX2Nhc3Q8RXdrX0ZyYW1l
X1NtYXJ0X0RhdGEqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19GcmFtZV9TbWFydF9EYXRhKSkpOwog
ICAgICAgICBpZiAoIXNkKSB7CiAgICAgICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9j
YXRlIEV3a19GcmFtZV9TbWFydF9EYXRhIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMzMs
MTQgKzIzMywxNCBAQCBzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2FkZChFdmFzX09iamVj
dCogbykKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2RlbChFdmFz
X09iamVjdCAqbykKK3N0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfZGVsKEV2YXNfT2JqZWN0
KiBvKQogewogICAgIFdSTigibz0lcCIsIG8pOyAvLyBYWFggUkVNT1ZFIE1FIExBVEVSCiAgICAg
RVdLX0ZSQU1FX1NEX0dFVChvLCBzZCk7CiAKICAgICBpZiAoc2QpIHsKICAgICAgICAgaWYgKHNk
LT5mcmFtZSkgewotICAgICAgICAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwgKmZs
YyA9IF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQoc2QtPmZyYW1lKTsKKyAgICAgICAgICAgIFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBmbGMgPSBfZXdrX2ZyYW1lX2xvYWRlcl9lZmxf
Z2V0KHNkLT5mcmFtZSk7CiAgICAgICAgICAgICBmbGMtPnNldFdlYkZyYW1lKDApOwogICAgICAg
ICAgICAgc2QtPmZyYW1lLT5sb2FkZXIoKS0+ZGV0YWNoRnJvbVBhcmVudCgpOwogICAgICAgICAg
ICAgc2QtPmZyYW1lLT5sb2FkZXIoKS0+Y2FuY2VsQW5kQ2xlYXIoKTsKQEAgLTMwMSw4ICszMDEs
OCBAQCBFdmFzX09iamVjdCogZXdrX2ZyYW1lX3ZpZXdfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBv
KQogRWluYV9JdGVyYXRvciogZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25ldyhFdmFzX09i
amVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgMCk7Ci0g
ICAgRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUqIGl0ID0gKEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1l
KikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsb2MoMSwgc2l6ZW9mKEVp
bmFfSXRlcmF0b3JfRXdrX0ZyYW1lKSk7CisgICAgRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUqIGl0
ID0gc3RhdGljX2Nhc3Q8RWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUqPgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChjYWxsb2MoMSwgc2l6ZW9mKEVpbmFfSXRlcmF0b3JfRXdrX0Zy
YW1lKSkpOwogICAgIGlmICghaXQpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC02ODYsNyArNjg2
LDcgQEAgRXdrX0hpdF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2Jq
ZWN0KiBvLCBpbnQgeCwgaW50IHkpCiAgICAgaWYgKCFyZXN1bHQuaW5uZXJOb2RlKCkpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgRXdrX0hpdF9UZXN0KiBoaXRfdGVzdCA9IChFd2tfSGl0X1Rl
c3QqKWNhbGxvYygxLCBzaXplb2YoRXdrX0hpdF9UZXN0KSk7CisgICAgRXdrX0hpdF9UZXN0KiBo
aXRfdGVzdCA9IHN0YXRpY19jYXN0PEV3a19IaXRfVGVzdCo+KGNhbGxvYygxLCBzaXplb2YoRXdr
X0hpdF9UZXN0KSkpOwogICAgIGlmICghaGl0X3Rlc3QpIHsKICAgICAgICAgQ1JJVElDQUwoIkNv
dWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGhpdCB0ZXN0LiIpOwogICAgICAgICByZXR1cm4g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCmluZGV4IDlhZTdhYTEyNWNiMWFi
NjYzYTlmNGZmNTEwMWNjMDJjMWI1ZTBkM2EuLjYyZDc3NDI5ODZjMjNhMjIyNDhiMzhlYTcxYjE0
OTQ5NDBlMTc5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcApAQCAtODMs
NyArODMsNyBAQCBzdGF0aWMgaW5saW5lIEV3a19IaXN0b3J5X0l0ZW0qIF9ld2tfaGlzdG9yeV9p
dGVtX25ldyhXZWJDb3JlOjpIaXN0b3J5SXRlbSogY29yZQogICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKLSAgICBpdGVtID0gKEV3a19IaXN0b3J5X0l0ZW0qKWNhbGxvYygxLCBzaXplb2YoRXdr
X0hpc3RvcnlfSXRlbSkpOworICAgIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfSGlzdG9yeV9JdGVt
Kj4oY2FsbG9jKDEsIHNpemVvZihFd2tfSGlzdG9yeV9JdGVtKSkpOwogICAgIGlmICghaXRlbSkg
ewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIGl0ZW0gbWVtb3J5LiIpOwog
ICAgICAgICByZXR1cm4gMDsKQEAgLTI3MSw3ICsyNzEsNyBAQCBjb25zdCBjaGFyKiBld2tfaGlz
dG9yeV9pdGVtX3RpdGxlX2dldChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQogewogICAg
IEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUsIDApOwogICAg
IC8vIGhpZGUgdGhlIGZvbGxvd2luZyBvcHRpbXphdGlvbiBmcm9tIG91dHNpZGUKLSAgICBFd2tf
SGlzdG9yeV9JdGVtKiBpID0gKEV3a19IaXN0b3J5X0l0ZW0qKWl0ZW07CisgICAgRXdrX0hpc3Rv
cnlfSXRlbSogaSA9IGNvbnN0X2Nhc3Q8RXdrX0hpc3RvcnlfSXRlbSo+KGl0ZW0pOwogICAgIGVp
bmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmaS0+dGl0bGUsIGNvcmUtPnRpdGxlKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgcmV0dXJuIGktPnRpdGxlOwogfQpAQCAtMjgwLDcgKzI4MCw3IEBAIGNvbnN0
IGNoYXIqIGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfYWx0ZXJuYXRlX2dldChjb25zdCBFd2tfSGlz
dG9yeV9JdGVtKiBpdGVtKQogewogICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVU
VVJOKGl0ZW0sIGNvcmUsIDApOwogICAgIC8vIGhpZGUgdGhlIGZvbGxvd2luZyBvcHRpbXphdGlv
biBmcm9tIG91dHNpZGUKLSAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gKEV3a19IaXN0b3J5X0l0
ZW0qKWl0ZW07CisgICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IGNvbnN0X2Nhc3Q8RXdrX0hpc3Rv
cnlfSXRlbSo+KGl0ZW0pOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmaS0+YWx0ZXJu
YXRlX3RpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JlLT5hbHRlcm5hdGVU
aXRsZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHJldHVybiBpLT5hbHRlcm5hdGVfdGl0bGU7CkBA
IC0yOTgsNyArMjk4LDcgQEAgY29uc3QgY2hhciogZXdrX2hpc3RvcnlfaXRlbV91cmlfZ2V0KGNv
bnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiB7CiAgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JF
X0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CiAgICAgLy8gaGlkZSB0aGUgZm9sbG93aW5n
IG9wdGltemF0aW9uIGZyb20gb3V0c2lkZQotICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSAoRXdr
X0hpc3RvcnlfSXRlbSopaXRlbTsKKyAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gY29uc3RfY2Fz
dDxFd2tfSGlzdG9yeV9JdGVtKj4oKGl0ZW0pKTsKICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxh
Y2UoJmktPnVyaSwgY29yZS0+dXJsU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJu
IGktPnVyaTsKIH0KQEAgLTMwNyw3ICszMDcsNyBAQCBjb25zdCBjaGFyKiBld2tfaGlzdG9yeV9p
dGVtX3VyaV9vcmlnaW5hbF9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKIHsKICAg
ICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVtLCBjb3JlLCAwKTsKICAg
ICAvLyBoaWRlIHRoZSBmb2xsb3dpbmcgb3B0aW16YXRpb24gZnJvbSBvdXRzaWRlCi0gICAgRXdr
X0hpc3RvcnlfSXRlbSogaSA9IChFd2tfSGlzdG9yeV9JdGVtKilpdGVtOworICAgIEV3a19IaXN0
b3J5X0l0ZW0qIGkgPSBjb25zdF9jYXN0PEV3a19IaXN0b3J5X0l0ZW0qPihpdGVtKTsKICAgICBl
aW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmktPm9yaWdpbmFsX3VyaSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29yZS0+b3JpZ2luYWxVUkxTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICAgICByZXR1cm4gaS0+b3JpZ2luYWxfdXJpOwpAQCAtMzgzLDcgKzM4Myw3IEBAIEV3a19IaXN0
b3J5KiBld2tfaGlzdG9yeV9uZXcoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCogY29yZSkK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29yZSwgMCk7CiAgICAgREJHKCJj
b3JlPSVwIiwgY29yZSk7CiAKLSAgICBoaXN0b3J5ID0gKEV3a19IaXN0b3J5KiltYWxsb2Moc2l6
ZW9mKEV3a19IaXN0b3J5KSk7CisgICAgaGlzdG9yeSA9IHN0YXRpY19jYXN0PEV3a19IaXN0b3J5
Kj4obWFsbG9jKHNpemVvZihFd2tfSGlzdG9yeSkpKTsKICAgICBpZiAoIWhpc3RvcnkpIHsKICAg
ICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBoaXN0b3J5IG1lbW9yeS4iKTsKICAg
ICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA0ODI0Y2Jj
YTJhMDU1OTFkZDVkYTZiMjE4MmIxNmI0MzUxOTYxZGYyLi5jZTQyYjFlYmNlYTVlNjBiZGIzMDZm
ODgwYjZkNTI5YjY3NGU2MTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTIw
Nyw3ICsyMDcsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVfRGF0YSB7CiAjZW5kaWYKIAog
I2RlZmluZSBFV0tfVklFV19TRF9HRVQobywgcHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpwdHIgPSAoRXdrX1ZpZXdfU21hcnRf
RGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykKKyAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBwdHIgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rf
c21hcnRfZGF0YV9nZXQobykpCiAKICNkZWZpbmUgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihv
LCBwdHIsIC4uLikgICAgICAgICAgXAogICAgIEVXS19WSUVXX1RZUEVfQ0hFQ0sobywgX19WQV9B
UkdTX18pOyAgICAgICAgICAgICAgICBcCkBAIC0yNDUsNyArMjQ1LDcgQEAgc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3ZpZXdfcmVwYWludHNfcmVzaXplKEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJp
diwgc2l6ZV90IHMKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIHByaXYt
PnJlcGFpbnRzLmFsbG9jYXRlZCA9IHNpemU7Ci0gICAgcHJpdi0+cmVwYWludHMuYXJyYXkgPSAo
RWluYV9SZWN0YW5nbGUqKXRtcDsKKyAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9IHN0YXRpY19j
YXN0PEVpbmFfUmVjdGFuZ2xlKj4odG1wKTsKICAgICByZXR1cm4gRUlOQV9UUlVFOwogfQogCkBA
IC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2Nyb2xsc19yZXNp
emUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3Qgc2kKICAgICAgICAgcmV0dXJu
IEVJTkFfRkFMU0U7CiAgICAgfQogICAgIHByaXYtPnNjcm9sbHMuYWxsb2NhdGVkID0gc2l6ZTsK
LSAgICBwcml2LT5zY3JvbGxzLmFycmF5ID0gKEV3a19TY3JvbGxfUmVxdWVzdCopdG1wOworICAg
IHByaXYtPnNjcm9sbHMuYXJyYXkgPSBzdGF0aWNfY2FzdDxFd2tfU2Nyb2xsX1JlcXVlc3QqPih0
bXApOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQCBzdGF0
aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9ydW5famF2YXNjcmlwdF9wcm9tcHQoRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QsCiAvLyBFdmVudCBIYW5kbGluZyAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19vbl9mb2N1c19pbih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCog
ZXZlbnRfaW5mbykKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19T
bWFydF9EYXRhKilkYXRhOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nh
c3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkt
PmZvY3VzX2luKTsKICAgICBzZC0+YXBpLT5mb2N1c19pbihzZCk7CkBAIC00NzgsNyArNDc4LDcg
QEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX2luKHZvaWQqIGRhdGEsIEV2YXMqIGUs
IEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmUKIAogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2Zv
Y3VzX291dCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRf
aW5mbykKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9E
YXRhKilkYXRhOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdr
X1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmZvY3Vz
X291dCk7CiAgICAgc2QtPmFwaS0+Zm9jdXNfb3V0KHNkKTsKQEAgLTQ4Niw4ICs0ODYsOCBAQCBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2
YXNfT2JqZWN0KiBvLCB2b2lkKiBldgogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vf
d2hlZWwodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2lu
Zm8pCiB7Ci0gICAgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYgPSAoRXZhc19FdmVudF9Nb3Vz
ZV9XaGVlbCopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tf
Vmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqIGV2ID0g
c3RhdGljX2Nhc3Q8RXZhc19FdmVudF9Nb3VzZV9XaGVlbCo+KGV2ZW50X2luZm8pOworICAgIEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+
KGRhdGEpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3doZWVsKTsKICAgICBzZC0+
YXBpLT5tb3VzZV93aGVlbChzZCwgZXYpOwpAQCAtNDk1LDggKzQ5NSw4IEBAIHN0YXRpYyB2b2lk
IF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVj
dCogbywgdm9pZCoKIAogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24odm9pZCog
ZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAg
RXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX0Rvd24qKWV2ZW50
X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0
YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ID0gc3RhdGljX2Nhc3Q8RXZh
c19FdmVudF9Nb3VzZV9Eb3duKj4oZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfZG93bik7CiAgICAgc2QtPmFwaS0+bW91c2VfZG93bihz
ZCwgZXYpOwpAQCAtNTA0LDggKzUwNCw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3Vz
ZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBlCiAKIHN0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFz
X09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX1Vw
KiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1VwKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZhc19FdmVu
dF9Nb3VzZV9VcCogZXYgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX1VwKj4oZXZlbnRf
aW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmll
d19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2Qt
PmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfdXAp
OwogICAgIHNkLT5hcGktPm1vdXNlX3VwKHNkLCBldik7CkBAIC01MTMsOCArNTEzLDggQEAgc3Rh
dGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNf
T2JqZWN0KiBvLCB2b2lkKiBldmUKIAogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX21v
dmUodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8p
CiB7Ci0gICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX01v
dmUqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdf
U21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2ID0gc3RhdGlj
X2Nhc3Q8RXZhc19FdmVudF9Nb3VzZV9Nb3ZlKj4oZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7
CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfbW92ZSk7CiAgICAgc2QtPmFwaS0+bW91
c2VfbW92ZShzZCwgZXYpOwpAQCAtNTIyLDggKzUyMiw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19vbl9tb3VzZV9tb3ZlKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lk
KiBlCiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfZG93bih2b2lkKiBkYXRhLCBFdmFz
KiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50
X0tleV9Eb3duKiBldiA9IChFdmFzX0V2ZW50X0tleV9Eb3duKilldmVudF9pbmZvOwotICAgIEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAg
RXZhc19FdmVudF9LZXlfRG93biogZXYgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X0tleV9Eb3du
Kj4oZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2Fz
dDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+
a2V5X2Rvd24pOwogICAgIHNkLT5hcGktPmtleV9kb3duKHNkLCBldik7CkBAIC01MzEsOCArNTMx
LDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2YXMq
IGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmUKIAogc3RhdGljIHZvaWQgX2V3a192aWV3X29u
X2tleV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRf
aW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X0tleV9VcCogZXYgPSAoRXZhc19FdmVudF9LZXlfVXAq
KWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21h
cnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X0tleV9VcCogZXYgPSBzdGF0aWNfY2FzdDxF
dmFzX0V2ZW50X0tleV9VcCo+KGV2ZW50X2luZm8pOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNkLT5hcGktPmtleV91cCk7CiAgICAgc2QtPmFwaS0+a2V5X3VwKHNkLCBldik7CkBA
IC01NTUsNyArNTU1LDcgQEAgc3RhdGljIEV2YXNfU21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9IEVW
QVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
X2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9Ci0gICAgICAgIChFd2tfVmlld19Qcml2YXRlX0RhdGEq
KWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKSk7CisgICAgICAgIHN0YXRp
Y19jYXN0PEV3a19WaWV3X1ByaXZhdGVfRGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhKSkpOwogICAgIEF0b21pY1N0cmluZyBzOwogICAgIFdlYkNvcmU6OktVUkwg
dXJsOwogCkBAIC03MjQsMTIgKzcyNCwxMiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRf
YWRkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIGNvbnN0IEV2YXNfU21hcnQqIHNtYXJ0ID0gZXZh
c19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KG8pOwogICAgIGNvbnN0IEV2YXNfU21hcnRfQ2xhc3Mq
IHNjID0gZXZhc19zbWFydF9jbGFzc19nZXQoc21hcnQpOwotICAgIGNvbnN0IEV3a19WaWV3X1Nt
YXJ0X0NsYXNzKiBhcGkgPSAoY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqKXNjOworICAgIGNv
bnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSByZWludGVycHJldF9jYXN0PGNvbnN0IEV3
a19WaWV3X1NtYXJ0X0NsYXNzKj4oc2MpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KGFwaS0+YmFja2luZ19zdG9yZV9hZGQpOwogICAgIEVXS19WSUVXX1NEX0dFVChvLCBzZCk7CiAK
ICAgICBpZiAoIXNkKSB7Ci0gICAgICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWNhbGxv
YygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpOworICAgICAgICBzZCA9IHN0YXRpY19j
YXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0
X0RhdGEpKSk7CiAgICAgICAgIGlmICghc2QpIHsKICAgICAgICAgICAgIENSSVRJQ0FMKCJjb3Vs
ZCBub3QgYWxsb2NhdGUgRXdrX1ZpZXdfU21hcnRfRGF0YSIpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtOTI2LDEyICs5MjYsMTIgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRf
em9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGZsb2F0IHpvb20sIEUKICAgICBld2tf
ZnJhbWVfc2Nyb2xsX3Bvc19nZXQoc2QtPm1haW5fZnJhbWUsICZ4LCAmeSk7CiAKICAgICBpZiAo
dyArIHNkLT52aWV3LncgPiAwKQotICAgICAgICBweCA9IChkb3VibGUpKHggKyBjeCkgLyAodyAr
IHNkLT52aWV3LncpOworICAgICAgICBweCA9IHN0YXRpY19jYXN0PGRvdWJsZT4oKHggKyBjeCkg
LyAodyArIHNkLT52aWV3LncpKTsKICAgICBlbHNlCiAgICAgICAgIHB4ID0gMC4wOwogCiAgICAg
aWYgKGggKyBzZC0+dmlldy5oID4gMCkKLSAgICAgICAgcHkgPSAoZG91YmxlKSh5ICsgY3kpIC8g
KGggKyBzZC0+dmlldy5oKTsKKyAgICAgICAgcHkgPSBzdGF0aWNfY2FzdDxkb3VibGU+KCh5ICsg
Y3kpIC8gKGggKyBzZC0+dmlldy5oKSk7CiAgICAgZWxzZQogICAgICAgICBweSA9IDAuMDsKIApA
QCAtMTAwNCw3ICsxMDA0LDcgQEAgc3RhdGljIGZsb2F0IF9ld2tfdmlld196b29tX2FuaW1hdGVk
X2N1cnJlbnQoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogCiBzdGF0aWMgRWluYV9Cb29s
IF9ld2tfdmlld196b29tX2FuaW1hdG9yX2NiKHZvaWQqIGRhdGEpCiB7Ci0gICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRh
KTsKICAgICBFdmFzX0Nvb3JkIGN4LCBjeTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJp
dik7CiAgICAgZG91YmxlIG5vdyA9IGVjb3JlX2xvb3BfdGltZV9nZXQoKTsKQEAgLTEwNDgsMTEg
KzEwNDgsMTEgQEAgc3RhdGljIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBfZXdrX3ZpZXdf
dmlld3BvcnRfYXR0cmlidXRlc19jb21wdXRlKGNvbnN0IEUKICAgICBpbnQgZGVza3RvcF93aWR0
aCA9IDk4MDsKICAgICBpbnQgZGV2aWNlX2RwaSA9IGV3a191dGlsX2RwaV9nZXQoKTsKIAotICAg
IGludCBhdmFpbGFibGVfd2lkdGggPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPnBhZ2VSZWN0KCkud2lkdGgoKTsKLSAgICBpbnQgYXZhaWxhYmxlX2hlaWdodCA9IChpbnQp
IHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFnZVJlY3QoKS5oZWlnaHQoKTsKKyAg
ICBpbnQgYXZhaWxhYmxlX3dpZHRoID0gc3RhdGljX2Nhc3Q8aW50Pihwcml2LT5wYWdlLT5jaHJv
bWUoKS0+Y2xpZW50KCktPnBhZ2VSZWN0KCkud2lkdGgoKSk7CisgICAgaW50IGF2YWlsYWJsZV9o
ZWlnaHQgPSBzdGF0aWNfY2FzdDxpbnQ+KHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+
cGFnZVJlY3QoKS5oZWlnaHQoKSk7CiAKLSAgICBpbnQgZGV2aWNlX3dpZHRoID0gKGludCkgcHJp
di0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkud2lkdGgoKTsKLSAgICBp
bnQgZGV2aWNlX2hlaWdodCA9IChpbnQpIHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+
d2luZG93UmVjdCgpLmhlaWdodCgpOworICAgIGludCBkZXZpY2Vfd2lkdGggPSBzdGF0aWNfY2Fz
dDxpbnQ+KHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2luZG93UmVjdCgpLndpZHRo
KCkpOworICAgIGludCBkZXZpY2VfaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pihwcml2LT5wYWdl
LT5jaHJvbWUoKS0+Y2xpZW50KCktPndpbmRvd1JlY3QoKS5oZWlnaHQoKSk7CiAKICAgICBXZWJD
b3JlOjpJbnRTaXplIGF2YWlsYWJsZV9zaXplID0gV2ViQ29yZTo6SW50U2l6ZShhdmFpbGFibGVf
d2lkdGgsIGF2YWlsYWJsZV9oZWlnaHQpOwogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyBhdHRyaWJ1dGVzID0gV2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhwcml2LT52
aWV3cG9ydF9hcmd1bWVudHMsIGRlc2t0b3Bfd2lkdGgsIGRldmljZV93aWR0aCwgZGV2aWNlX2hl
aWdodCwgZGV2aWNlX2RwaSwgYXZhaWxhYmxlX3NpemUpOwpAQCAtMTU2MSwxMSArMTU2MSwxMSBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20s
IEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcgogICAgIH0KIAogICAgIGlmICh6b29tIDwgcHJpdi0+
c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVs
IGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2Nh
bGUsIChkb3VibGUpem9vbSk7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYi
LCBzdGF0aWNfY2FzdDxkb3VibGU+KHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxl
KSwgc3RhdGljX2Nhc3Q8ZG91YmxlPih6b29tKSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNF
OwogICAgIH0KICAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3Nj
YWxlKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXBy
aXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAg
ICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgc3RhdGljX2Nhc3Q8ZG91YmxlPihwcml2
LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSksIHN0YXRpY19jYXN0PGRvdWJsZT4oem9v
bSkpOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAgLTE2MDUsMTEgKzE2
MDUsMTEgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIG8s
IGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXMKICAgICB9CiAKICAgICBpZiAoem9vbSA8
IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7Ci0gICAgICAgIFdSTigiem9v
bSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2Uu
bWluX3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAl
ZiA6ICVmIiwgc3RhdGljX2Nhc3Q8ZG91YmxlPihwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1p
bl9zY2FsZSksIHN0YXRpY19jYXN0PGRvdWJsZT4oem9vbSkpOwogICAgICAgICByZXR1cm4gRUlO
QV9GQUxTRTsKICAgICB9CiAgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy56b29tX3Jhbmdl
Lm1heF9zY2FsZSkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRv
dWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsK
KyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIHN0YXRpY19jYXN0PGRvdWJs
ZT4ocHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpLCBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHpvb20pKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0xNjYx
LDExICsxNjYxLDExIEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX2FuaW1hdGVkX3NldChFdmFz
X09iamVjdCogbywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRpb24sCiAgICAgfQogCiAgICAgaWYg
KHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSkgewotICAgICAgICBX
Uk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29t
X3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVs
IGlzIDwgJWYgOiAlZiIsIHN0YXRpY19jYXN0PGRvdWJsZT4ocHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS5taW5fc2NhbGUpLCBzdGF0aWNfY2FzdDxkb3VibGU+KHpvb20pKTsKICAgICAgICAgcmV0
dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Muem9v
bV9yYW5nZS5tYXhfc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAl
ZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3VibGUp
em9vbSk7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCBzdGF0aWNfY2Fz
dDxkb3VibGU+KHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlKSwgc3RhdGljX2Nh
c3Q8ZG91YmxlPih6b29tKSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApA
QCAtMjQ5MSw3ICsyNDkxLDcgQEAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogZXdrX3ZpZXdfcGFp
bnRfY29udGV4dF9uZXcoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LAogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5tYWluX2ZyYW1lLCAwKTsKICAgICBXZWJDb3Jl
OjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIDApOwotICAgIEV3a19WaWV3X1BhaW50X0Nv
bnRleHQqIGN0eHQgPSAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCopbWFsbG9jKHNpemVvZigqY3R4
dCkpOworICAgIEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQgPSBzdGF0aWNfY2FzdDxFd2tf
Vmlld19QYWludF9Db250ZXh0Kj4obWFsbG9jKHNpemVvZigqY3R4dCkpKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3R4dCwgMCk7CiAKICAgICBjdHh0LT5nYyA9IG5ldyBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQoY3IpOwpAQCAtMzM0MCw3ICszMzQwLDcgQEAgdm9pZCBl
d2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QqIG8sIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVu
dCogY2xpZW50LCBpbnQgc2UKICAgICAvLyBwb3B1bGF0ZSBpdGVtcwogICAgIGNvbnN0IGludCBz
aXplID0gY2xpZW50LT5saXN0U2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7Ci0gICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSAoRXdrX01lbnVfSXRlbSopIG1h
bGxvYyhzaXplb2YoKml0ZW0pKTsKKyAgICAgICAgRXdrX01lbnVfSXRlbSogaXRlbSA9IHN0YXRp
Y19jYXN0PEV3a19NZW51X0l0ZW0qPihtYWxsb2Moc2l6ZW9mKCppdGVtKSkpOwogICAgICAgICBp
ZiAoY2xpZW50LT5pdGVtSXNTZXBhcmF0b3IoaSkpCiAgICAgICAgICAgICBpdGVtLT50eXBlID0g
RVdLX01FTlVfU0VQQVJBVE9SOwogICAgICAgICBlbHNlIGlmIChjbGllbnQtPml0ZW1Jc0xhYmVs
KGkpKQpAQCAtMzM3Miw3ICszMzcyLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX2Rlc3Ry
b3koRXZhc19PYmplY3QqIG8pCiAKICAgICB2b2lkKiBpdGVtdjsKICAgICBFSU5BX0xJU1RfRlJF
RShwcml2LT5wb3B1cC5tZW51Lml0ZW1zLCBpdGVtdikgewotICAgICAgICBFd2tfTWVudV9JdGVt
KiBpdGVtID0gKEV3a19NZW51X0l0ZW0qKWl0ZW12OworICAgICAgICBFd2tfTWVudV9JdGVtKiBp
dGVtID0gc3RhdGljX2Nhc3Q8RXdrX01lbnVfSXRlbSo+KGl0ZW12KTsKICAgICAgICAgZWluYV9z
dHJpbmdzaGFyZV9kZWwoaXRlbS0+dGV4dCk7CiAgICAgICAgIGZyZWUoaXRlbSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAppbmRleCBiOTljOGFkNzkx
NzUyY2FhODkxYTMwZWJlYTk0YTRkMGU3YTFkZjljLi41YWQ2N2ZlYWQzM2E2OTA4NTc5OGU1NTM2
YTUxNWE5YWM2NTI2OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXdfc2luZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xl
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0
X2FkZChFdmFzX09iamVjdCogbykKIAogICAgIF9wYXJlbnRfc2Muc2MuYWRkKG8pOwogCi0gICAg
c2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobyk7
CisgICAgc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rf
c21hcnRfZGF0YV9nZXQobykpOwogICAgIGlmICghc2QpCiAgICAgICAgIHJldHVybjsKIApAQCAt
NjcsNyArNjcsNyBAQCBzdGF0aWMgRXZhc19PYmplY3QqIF9ld2tfdmlld19zaW5nbGVfc21hcnRf
YmFja2luZ19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YQogCiBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc2luZ2xlX3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBF
dmFzX0Nvb3JkIGgpCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdf
U21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobyk7CisgICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19v
YmplY3Rfc21hcnRfZGF0YV9nZXQobykpOwogICAgIF9wYXJlbnRfc2Muc2MucmVzaXplKG8sIHcs
IGgpOwogCiAgICAgaWYgKCFzZCkKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRf
RGF0YSogcwogICAgICAgICAgICAgICAgIHN4LCBzeSArIHNoICsgc3ItPmR5LCBzdywgLXNyLT5k
eSk7CiAKICAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cAotICAgICAgICAg
ICAgICAgICgodWludDMyX3QqKXBpeGVscywgLXNyLT5keSwgc3gsIHN5LCBzdywgc2gsIG93KTsK
KyAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCAtc3ItPmR5
LCBzeCwgc3ksIHN3LCBzaCwgb3cpOwogICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0
YV91cGRhdGVfYWRkCiAgICAgICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCwgc3ks
IHN3LCBzaCArIHNyLT5keSk7CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRf
RGF0YSogcwogICAgICAgICAgICAgICAgIHN4LCBzeSwgc3csIHNyLT5keSk7CiAKICAgICAgICAg
ICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9kb3duCi0gICAgICAgICAgICAgICAgKCh1aW50
MzJfdCopcGl4ZWxzLCBzci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7CisgICAgICAgICAgICAg
ICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgc3ItPmR5LCBzeCwgc3ksIHN3LCBz
aCwgb3cpOwogICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCiAg
ICAgICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCwgc3kgKyBzci0+ZHksIHN3LCBz
aCAtIHNyLT5keSk7CiAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3
a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSog
cwogICAgICAgICAgICAgICAgIHN4ICsgc3cgKyBzci0+ZHgsIHN5LCAtc3ItPmR4LCBzaCk7CiAK
ICAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9sZWZ0Ci0gICAgICAgICAgICAg
ICAgKCh1aW50MzJfdCopcGl4ZWxzLCAtc3ItPmR4LCBzeCwgc3ksIHN3LCBzaCwgb3cpOworICAg
ICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIC1zci0+ZHgsIHN4
LCBzeSwgc3csIHNoLCBvdyk7CiAgICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3Vw
ZGF0ZV9hZGQKICAgICAgICAgICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIHN4LCBzeSwgc3cg
KyBzci0+ZHgsIHNoKTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBf
ZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRh
KiBzCiAgICAgICAgICAgICAgICAgc3gsIHN5LCBzci0+ZHgsIHNoKTsKIAogICAgICAgICAgICAg
X2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3JpZ2h0Ci0gICAgICAgICAgICAgICAgKCh1aW50MzJf
dCopcGl4ZWxzLCBzci0+ZHgsIHN4LCBzeSwgc3csIHNoLCBvdyk7CisgICAgICAgICAgICAgICAg
KHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgc3ItPmR4LCBzeCwgc3ksIHN3LCBzaCwg
b3cpOwogICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCiAgICAg
ICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCArIHNyLT5keCwgc3ksIHN3IC0gc3It
PmR4LCBzaCk7CiAKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192
aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSogcwog
ICAgICAgICAgICAgc3ItPmR4LCBzci0+ZHksIG14LCBteSwgbXcsIG1oLCBheCwgYXksIGF3LCBh
aCwgYngsIGJ5LCBidywgYmgpOwogCiAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbgot
ICAgICAgICAgICAgKCh1aW50MzJfdCopcGl4ZWxzLCBzci0+ZHgsIHNyLT5keSwgc3gsIHN5LCBz
dywgc2gsIG93KTsKKyAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyks
IHNyLT5keCwgc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCwgb3cpOwogCiAgICAgICAgIGV2YXNfb2Jq
ZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzZC0+YmFja2luZ19zdG9yZSwgbXgsIG15LCBtdywg
bWgpOwogICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIGF4LCBheSwgYXcs
IGFoKTsKQEAgLTQwMCw3ICs0MDAsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5n
bGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzZAogICAgIGZv
cm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7CiAKICAgICBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEKLSAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hh
ciopcGl4ZWxzLCBmb3JtYXQsIG93LCBvaCwgb3cgKiA0KTsKKyAgICAgICAgICAgICAgICAgIChz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ocGl4ZWxzKSwgZm9ybWF0LCBvdywgb2gsIG93ICog
NCk7CiAgICAgc3RhdHVzID0gY2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3VyZmFjZSk7CiAgICAgaWYg
KHN0YXR1cyAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykgewogICAgICAgICBFUlIoImNvdWxkIG5v
dCBjcmVhdGUgc3VyZmFjZSBmcm9tIGRhdGEgJWR4JWQ6ICVzIiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXdfdGlsZWQuY3BwCmluZGV4IDQ5NzUxYmQ5ZDllNWY1YTMwODZhNTNiNDgzNDZk
YjU5N2JjNGM0NWYuLmY4N2Y0OGJkOWZhMzQwZTBiMzQ2OTIxMDZhZTRkYzI1ZWI1OWM1ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcApAQCAtMzIsNyArMzIsNyBA
QCBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9IEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVRfTlVMTDsKIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfcmVu
ZGVyX2NiKHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJl
YSkKIHsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSAoRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKilkYXRhOworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IHN0YXRpY19j
YXN0PEV3a19WaWV3X1ByaXZhdGVfRGF0YSo+KGRhdGEpOwogICAgIEVpbmFfUmVjdGFuZ2xlIHIg
PSB7YXJlYS0+eCArIHQtPngsIGFyZWEtPnkgKyB0LT55LCBhcmVhLT53LCBhcmVhLT5ofTsKIAog
ICAgIHJldHVybiBld2tfdmlld19wYWludF9jb250ZW50cyhwcml2LCB0LT5jYWlybywgJnIpOwpA
QCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9yZW5kZXJf
Y2Iodm9pZCogZGF0YSwgRXdrX1RpbGUqIHQsIGNvbnN0IEVpbmFfUgogCiBzdGF0aWMgdm9pZCog
X2V3a192aWV3X3RpbGVkX3VwZGF0ZXNfcHJvY2Vzc19wcmUodm9pZCogZGF0YSwgRXZhc19PYmpl
Y3QqIG8pCiB7Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gKEV3a19WaWV3X1By
aXZhdGVfRGF0YSopZGF0YTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSBzdGF0
aWNfY2FzdDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihkYXRhKTsKICAgICBld2tfdmlld19sYXlv
dXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShwcml2KTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTU4LDgg
KzU4LDggQEAgc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYmFja2lu
Z19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YSoKIHN0YXRpYyB2b2lkCiBfZXdrX3ZpZXdf
dGlsZWRfY29udGVudHNfc2l6ZV9jaGFuZ2VkX2NiKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBv
LCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfQ29vcmQqIHNpemUgPSAoRXZhc19Db29y
ZCopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19T
bWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfQ29vcmQqIHNpemUgPSBzdGF0aWNfY2FzdDxFdmFz
X0Nvb3JkKj4oZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0
aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAKICAgICBld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9jb250ZW50c19yZXNpemUKICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBz
aXplWzBdLCBzaXplWzFdKTsKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3
X3RpbGVkX3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKIAogICAgIF9wYXJlbnRfc2Muc2MuYWRk
KG8pOwogCi0gICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRf
ZGF0YV9nZXQobyk7CisgICAgc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4o
ZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykpOwogICAgIGlmICghc2QpCiAgICAgICAgIHJl
dHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108604</attachid>
            <date>2011-09-25 02:35:31 -0700</date>
            <delta_ts>2011-09-27 22:27:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68321-20110925183008.patch</filename>
            <type>text/plain</type>
            <size>26988</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU5MjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA2NDdiMGMwYTc4
YmQ0NTJkY2ZkNzRmNzRmZGE4YTRkOGUyZDk2ZDViLi4xNzczYTA4ZGE2OGIzN2Q0YzU3Mzg3YWZh
YTA1YjkwZGVjOGIyNDgyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEt
MDktMjUgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBVc2UgQysrIHR5cGUgY2FzdCBpbnN0ZWFkIG9mIEMgc3R5bGUgdHlwZSBjYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODMyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBz
ZWNvbmQgc3RlcCBpbiBvcmRlciB0byBiZSBtb3JlIGNvbXBsaWFudCB3aXRoIFdlYktpdCBjb2Rp
bmcgc3R5bGUuCisgICAgICAgIFRoZSBzZWNvbmQgc3RlcCBpcyB0byBjaGFuZ2UgQy10eXBlIGNh
c3Rpbmcgd2l0aCBDKystdHlwZSBjYXN0aW5nIGluIC5jcHAgZmlsZXMuCisKKyAgICAgICAgSW4g
YWRkaXRpb24sIHJlbWFpbmVkIGVmbCBzdHlsZSAnKicgcG9pbnRlciBwbGFjZW1lbnRzIGFyZSBt
b3ZlZCB0byB0aGUgcmlnaHQgcGxhY2UgYXMgd2VsbC4KKworICAgICAgICAqIGV3ay9ld2tfYXV0
aF9zb3VwLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKKyAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5j
cHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKKwogMjAxMS0wOS0yNCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsd2F5cyBlbmFibGUgRU5B
QkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0
aF9zb3VwLmNwcAppbmRleCAwOWYzZDBkYjFjNWQ3OGM4MTVkYTJlN2UzZDE4NGE1NGNlOWFiZDhi
Li5mYjM2YTkxNTlmMjdiMjcyYmExZjMwMjY0NmRjYzdmMDFmZjE1YWQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgZXdrX2F1
dGhfc291cF9jcmVkZW50aWFsc19zZXQoY29uc3QgY2hhciogdXNlcm5hbWUsIGNvbnN0IGNoYXIq
IHBhc3N3b3JkLCB2CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBFd2tf
QXV0aF9EYXRhKiBhdXRoX2RhdGEgPSAoRXdrX0F1dGhfRGF0YSopZGF0YTsKKyAgICBFd2tfQXV0
aF9EYXRhKiBhdXRoX2RhdGEgPSBzdGF0aWNfY2FzdDxFd2tfQXV0aF9EYXRhKj4oZGF0YSk7CiAg
ICAgc291cF9hdXRoX2F1dGhlbnRpY2F0ZShhdXRoX2RhdGEtPmF1dGgsIHVzZXJuYW1lLCBwYXNz
d29yZCk7CiAgICAgc291cF9zZXNzaW9uX3VucGF1c2VfbWVzc2FnZShhdXRoX2RhdGEtPnNlc3Np
b24sIGF1dGhfZGF0YS0+bXNnKTsKICAgICBmcmVlX2F1dGhfZGF0YShhdXRoX2RhdGEpOwpAQCAt
OTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBzZXNzaW9uX2F1dGhlbnRpY2F0ZShTb3VwU2Vzc2lv
biogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIG1zZywgU291cEF1dAogICAgIGlmICghZXdrX2F1dGhf
c2hvd19kaWFsb2dfY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dGhfZGF0YSA9
IChFd2tfQXV0aF9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19BdXRoX0RhdGEpKTsKKyAgICBh
dXRoX2RhdGEgPSBzdGF0aWNfY2FzdDxFd2tfQXV0aF9EYXRhKj4oY2FsbG9jKDEsIHNpemVvZihF
d2tfQXV0aF9EYXRhKSkpOwogCiAgICAgaWYgKCFhdXRoX2RhdGEpIHsKICAgICAgICAgQ1JJVElD
QUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfQXV0aF9EYXRhIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfY29udGV4dG1lbnUuY3BwCmluZGV4IDg1NzkyNmI3ODk2OGM0ZDQxOTQwZjNkNDFk
ZmVjYmMyMDg5ODJlMjAuLmFhMTYxOWZkOTE4ZjEyNjMwYTAxNzAyMmI2ZWRmZTNlNzNjY2M4ZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUuY3BwCkBAIC0xMDMsNyAr
MTAzLDcgQEAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3
KEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIHR5cGUKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFd2tfQ29udGV4dF9NZW51X0FjdGlvbiBhY3Rpb24s
IEV3a19Db250ZXh0X01lbnUqIHN1Ym1lbnUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVja2Vk
LCBFaW5hX0Jvb2wgZW5hYmxlZCkKIHsKLSAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0g
PSAoRXdrX0NvbnRleHRfTWVudV9JdGVtKikgbWFsbG9jKHNpemVvZigqaXRlbSkpOworICAgIEV3
a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVf
SXRlbSo+KG1hbGxvYyhzaXplb2YoKml0ZW0pKSk7CiAgICAgaWYgKCFpdGVtKQogICAgICAgICBy
ZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCBmZDJmMzZiMzlm
YWY1NmViMWMwMDYwYjdkNDY3ZTExNzQyOGY3MGM5Li42NThjMjQ2OTY5ODdjYWFhOTdmNTkzYzE2
MGMyZWYwZWFlMzYzM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtMTAx
LDcgKzEwMSw3IEBAIHN0cnVjdCBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSB7CiAjZW5kaWYKIAog
I2RlZmluZSBFV0tfRlJBTUVfU0RfR0VUKG8sIHB0cikgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICBFd2tfRnJhbWVfU21hcnRfRGF0YSAqcHRyID0gKEV3a19GcmFtZV9TbWFy
dF9EYXRhKilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKQorICAgIEV3a19GcmFtZV9TbWFy
dF9EYXRhKiBwdHIgPSBzdGF0aWNfY2FzdDxFd2tfRnJhbWVfU21hcnRfRGF0YSo+KGV2YXNfb2Jq
ZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pKQogCiAjZGVmaW5lIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVU
VVJOKG8sIHB0ciwgLi4uKSAgICAgICAgIFwKICAgICBFV0tfRlJBTUVfVFlQRV9DSEVDSyhvLCBf
X1ZBX0FSR1NfXyk7ICAgICAgICAgICAgICAgXApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyB2
b2lkIF9ld2tfZnJhbWVfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBvKQogICAgIEVXS19GUkFNRV9T
RF9HRVQobywgc2QpOwogCiAgICAgaWYgKCFzZCkgewotICAgICAgICBzZCA9IChFd2tfRnJhbWVf
U21hcnRfRGF0YSopY2FsbG9jKDEsIHNpemVvZihFd2tfRnJhbWVfU21hcnRfRGF0YSkpOworICAg
ICAgICBzZCA9IHN0YXRpY19jYXN0PEV3a19GcmFtZV9TbWFydF9EYXRhKj4oY2FsbG9jKDEsIHNp
emVvZihFd2tfRnJhbWVfU21hcnRfRGF0YSkpKTsKICAgICAgICAgaWYgKCFzZCkgewogICAgICAg
ICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfRnJhbWVfU21hcnRfRGF0YSIp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjMzLDE0ICsyMzMsMTQgQEAgc3RhdGljIHZvaWQg
X2V3a19mcmFtZV9zbWFydF9hZGQoRXZhc19PYmplY3QqIG8pCiAjZW5kaWYKIH0KIAotc3RhdGlj
IHZvaWQgX2V3a19mcmFtZV9zbWFydF9kZWwoRXZhc19PYmplY3QgKm8pCitzdGF0aWMgdm9pZCBf
ZXdrX2ZyYW1lX3NtYXJ0X2RlbChFdmFzX09iamVjdCogbykKIHsKICAgICBXUk4oIm89JXAiLCBv
KTsgLy8gWFhYIFJFTU9WRSBNRSBMQVRFUgogICAgIEVXS19GUkFNRV9TRF9HRVQobywgc2QpOwog
CiAgICAgaWYgKHNkKSB7CiAgICAgICAgIGlmIChzZC0+ZnJhbWUpIHsKLSAgICAgICAgICAgIFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsICpmbGMgPSBfZXdrX2ZyYW1lX2xvYWRlcl9lZmxf
Z2V0KHNkLT5mcmFtZSk7CisgICAgICAgICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVm
bCogZmxjID0gX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldChzZC0+ZnJhbWUpOwogICAgICAgICAg
ICAgZmxjLT5zZXRXZWJGcmFtZSgwKTsKICAgICAgICAgICAgIHNkLT5mcmFtZS0+bG9hZGVyKCkt
PmRldGFjaEZyb21QYXJlbnQoKTsKICAgICAgICAgICAgIHNkLT5mcmFtZS0+bG9hZGVyKCktPmNh
bmNlbEFuZENsZWFyKCk7CkBAIC0zMDEsOCArMzAxLDggQEAgRXZhc19PYmplY3QqIGV3a19mcmFt
ZV92aWV3X2dldChjb25zdCBFdmFzX09iamVjdCogbykKIEVpbmFfSXRlcmF0b3IqIGV3a19mcmFt
ZV9jaGlsZHJlbl9pdGVyYXRvcl9uZXcoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4obywgc2QsIDApOwotICAgIEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1l
KiBpdCA9IChFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSopCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2FsbG9jKDEsIHNpemVvZihFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSkpOwor
ICAgIEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lKiBpdCA9IHN0YXRpY19jYXN0PEVpbmFfSXRlcmF0
b3JfRXdrX0ZyYW1lKj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FsbG9j
KDEsIHNpemVvZihFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSkpKTsKICAgICBpZiAoIWl0KQogICAg
ICAgICByZXR1cm4gMDsKIApAQCAtNjg2LDcgKzY4Niw3IEBAIEV3a19IaXRfVGVzdCogZXdrX2Zy
YW1lX2hpdF90ZXN0X25ldyhjb25zdCBFdmFzX09iamVjdCogbywgaW50IHgsIGludCB5KQogICAg
IGlmICghcmVzdWx0LmlubmVyTm9kZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEV3a19I
aXRfVGVzdCogaGl0X3Rlc3QgPSAoRXdrX0hpdF9UZXN0KiljYWxsb2MoMSwgc2l6ZW9mKEV3a19I
aXRfVGVzdCkpOworICAgIEV3a19IaXRfVGVzdCogaGl0X3Rlc3QgPSBzdGF0aWNfY2FzdDxFd2tf
SGl0X1Rlc3QqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19IaXRfVGVzdCkpKTsKICAgICBpZiAoIWhp
dF90ZXN0KSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZv
ciBoaXQgdGVzdC4iKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19o
aXN0b3J5LmNwcAppbmRleCA5YWU3YWExMjVjYjFhYjY2M2E5ZjRmZjUxMDFjYzAyYzFiNWUwZDNh
Li42MmQ3NzQyOTg2YzIzYTIyMjQ4YjM4ZWE3MWIxNDk0OTQwZTE3OTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIGlubGluZSBF
d2tfSGlzdG9yeV9JdGVtKiBfZXdrX2hpc3RvcnlfaXRlbV9uZXcoV2ViQ29yZTo6SGlzdG9yeUl0
ZW0qIGNvcmUKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaXRlbSA9IChFd2tfSGlz
dG9yeV9JdGVtKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19IaXN0b3J5X0l0ZW0pKTsKKyAgICBpdGVt
ID0gc3RhdGljX2Nhc3Q8RXdrX0hpc3RvcnlfSXRlbSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX0hp
c3RvcnlfSXRlbSkpKTsKICAgICBpZiAoIWl0ZW0pIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxk
IG5vdCBhbGxvY2F0ZSBpdGVtIG1lbW9yeS4iKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNzEs
NyArMjcxLDcgQEAgY29uc3QgY2hhciogZXdrX2hpc3RvcnlfaXRlbV90aXRsZV9nZXQoY29uc3Qg
RXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKIHsKICAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VU
X09SX1JFVFVSTihpdGVtLCBjb3JlLCAwKTsKICAgICAvLyBoaWRlIHRoZSBmb2xsb3dpbmcgb3B0
aW16YXRpb24gZnJvbSBvdXRzaWRlCi0gICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IChFd2tfSGlz
dG9yeV9JdGVtKilpdGVtOworICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSBjb25zdF9jYXN0PEV3
a19IaXN0b3J5X0l0ZW0qPihpdGVtKTsKICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmkt
PnRpdGxlLCBjb3JlLT50aXRsZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHJldHVybiBpLT50aXRs
ZTsKIH0KQEAgLTI4MCw3ICsyODAsNyBAQCBjb25zdCBjaGFyKiBld2tfaGlzdG9yeV9pdGVtX3Rp
dGxlX2FsdGVybmF0ZV9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKIHsKICAgICBF
V0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVtLCBjb3JlLCAwKTsKICAgICAv
LyBoaWRlIHRoZSBmb2xsb3dpbmcgb3B0aW16YXRpb24gZnJvbSBvdXRzaWRlCi0gICAgRXdrX0hp
c3RvcnlfSXRlbSogaSA9IChFd2tfSGlzdG9yeV9JdGVtKilpdGVtOworICAgIEV3a19IaXN0b3J5
X0l0ZW0qIGkgPSBjb25zdF9jYXN0PEV3a19IaXN0b3J5X0l0ZW0qPihpdGVtKTsKICAgICBlaW5h
X3N0cmluZ3NoYXJlX3JlcGxhY2UoJmktPmFsdGVybmF0ZV90aXRsZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29yZS0+YWx0ZXJuYXRlVGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKICAg
ICByZXR1cm4gaS0+YWx0ZXJuYXRlX3RpdGxlOwpAQCAtMjk4LDcgKzI5OCw3IEBAIGNvbnN0IGNo
YXIqIGV3a19oaXN0b3J5X2l0ZW1fdXJpX2dldChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVt
KQogewogICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUs
IDApOwogICAgIC8vIGhpZGUgdGhlIGZvbGxvd2luZyBvcHRpbXphdGlvbiBmcm9tIG91dHNpZGUK
LSAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gKEV3a19IaXN0b3J5X0l0ZW0qKWl0ZW07CisgICAg
RXdrX0hpc3RvcnlfSXRlbSogaSA9IGNvbnN0X2Nhc3Q8RXdrX0hpc3RvcnlfSXRlbSo+KChpdGVt
KSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZpLT51cmksIGNvcmUtPnVybFN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHJldHVybiBpLT51cmk7CiB9CkBAIC0zMDcsNyArMzA3
LDcgQEAgY29uc3QgY2hhciogZXdrX2hpc3RvcnlfaXRlbV91cmlfb3JpZ2luYWxfZ2V0KGNvbnN0
IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiB7CiAgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dF
VF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CiAgICAgLy8gaGlkZSB0aGUgZm9sbG93aW5nIG9w
dGltemF0aW9uIGZyb20gb3V0c2lkZQotICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSAoRXdrX0hp
c3RvcnlfSXRlbSopaXRlbTsKKyAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gY29uc3RfY2FzdDxF
d2tfSGlzdG9yeV9JdGVtKj4oaXRlbSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZp
LT5vcmlnaW5hbF91cmksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUtPm9yaWdp
bmFsVVJMU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIGktPm9yaWdpbmFsX3Vy
aTsKQEAgLTM4Myw3ICszODMsNyBAQCBFd2tfSGlzdG9yeSogZXdrX2hpc3RvcnlfbmV3KFdlYkNv
cmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqIGNvcmUpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKGNvcmUsIDApOwogICAgIERCRygiY29yZT0lcCIsIGNvcmUpOwogCi0gICAgaGlz
dG9yeSA9IChFd2tfSGlzdG9yeSopbWFsbG9jKHNpemVvZihFd2tfSGlzdG9yeSkpOworICAgIGhp
c3RvcnkgPSBzdGF0aWNfY2FzdDxFd2tfSGlzdG9yeSo+KG1hbGxvYyhzaXplb2YoRXdrX0hpc3Rv
cnkpKSk7CiAgICAgaWYgKCFoaXN0b3J5KSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3Qg
YWxsb2NhdGUgaGlzdG9yeSBtZW1vcnkuIik7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdmlldy5jcHAKaW5kZXggNDgyNGNiY2EyYTA1NTkxZGQ1ZGE2YjIxODJiMTZiNDM1
MTk2MWRmMi4uMzA3OTQzYTA0NjQwYTRhZjA0NmU3NzVhYzJlNDcyNDMyZDk3ZTA1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0yMDcsNyArMjA3LDcgQEAgc3RydWN0IF9Fd2tf
Vmlld19Qcml2YXRlX0RhdGEgewogI2VuZGlmCiAKICNkZWZpbmUgRVdLX1ZJRVdfU0RfR0VUKG8s
IHB0cikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSAqcHRyID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2Rh
dGFfZ2V0KG8pCisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogcHRyID0gc3RhdGljX2Nhc3Q8RXdr
X1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pKQogCiAjZGVm
aW5lIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4obywgcHRyLCAuLi4pICAgICAgICAgIFwKICAg
ICBFV0tfVklFV19UWVBFX0NIRUNLKG8sIF9fVkFfQVJHU19fKTsgICAgICAgICAgICAgICAgXApA
QCAtMjQ1LDcgKzI0NSw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3JlcGFpbnRzX3Jl
c2l6ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCBzCiAgICAgICAgIHJldHVy
biBFSU5BX0ZBTFNFOwogICAgIH0KICAgICBwcml2LT5yZXBhaW50cy5hbGxvY2F0ZWQgPSBzaXpl
OwotICAgIHByaXYtPnJlcGFpbnRzLmFycmF5ID0gKEVpbmFfUmVjdGFuZ2xlKil0bXA7CisgICAg
cHJpdi0+cmVwYWludHMuYXJyYXkgPSBzdGF0aWNfY2FzdDxFaW5hX1JlY3RhbmdsZSo+KHRtcCk7
CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIApAQCAtMjkxLDcgKzI5MSw3IEBAIHN0YXRpYyBF
aW5hX0Jvb2wgX2V3a192aWV3X3Njcm9sbHNfcmVzaXplKEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdiwgc2l6ZV90IHNpCiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KICAgICBw
cml2LT5zY3JvbGxzLmFsbG9jYXRlZCA9IHNpemU7Ci0gICAgcHJpdi0+c2Nyb2xscy5hcnJheSA9
IChFd2tfU2Nyb2xsX1JlcXVlc3QqKXRtcDsKKyAgICBwcml2LT5zY3JvbGxzLmFycmF5ID0gc3Rh
dGljX2Nhc3Q8RXdrX1Njcm9sbF9SZXF1ZXN0Kj4odG1wKTsKICAgICByZXR1cm4gRUlOQV9UUlVF
OwogfQogCkBAIC00NzAsNyArNDcwLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21h
cnRfcnVuX2phdmFzY3JpcHRfcHJvbXB0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkLAogLy8gRXZl
bnQgSGFuZGxpbmcgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfaW4odm9pZCogZGF0YSwg
RXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXdrX1Zp
ZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihk
YXRhKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5mb2N1c19pbik7CiAgICAgc2QtPmFwaS0+
Zm9jdXNfaW4oc2QpOwpAQCAtNDc4LDcgKzQ3OCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19v
bl9mb2N1c19pbih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZl
CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCogZGF0YSwgRXZhcyog
ZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFd2tfVmlld19T
bWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5mb2N1c19vdXQpOwogICAgIHNkLT5hcGktPmZvY3Vz
X291dChzZCk7CkBAIC00ODYsOCArNDg2LDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2Zv
Y3VzX291dCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXYKIAog
c3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGUs
IEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91
c2VfV2hlZWwqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfV2hlZWwqKWV2ZW50X2luZm87Ci0gICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAg
ICBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldiA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfTW91
c2VfV2hlZWwqPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0
YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
ZC0+YXBpLT5tb3VzZV93aGVlbCk7CiAgICAgc2QtPmFwaS0+bW91c2Vfd2hlZWwoc2QsIGV2KTsK
QEAgLTQ5NSw4ICs0OTUsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwo
dm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqCiAKIHN0YXRpYyB2b2lk
IF9ld2tfdmlld19vbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0
KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYg
PSAoRXZhc19FdmVudF9Nb3VzZV9Eb3duKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZhc19FdmVudF9N
b3VzZV9Eb3duKiBldiA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfTW91c2VfRG93bio+KGV2ZW50
X2luZm8pOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1Zp
ZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNk
LT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX2Rv
d24pOwogICAgIHNkLT5hcGktPm1vdXNlX2Rvd24oc2QsIGV2KTsKQEAgLTUwNCw4ICs1MDQsOCBA
QCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBl
LCBFdmFzX09iamVjdCogbywgdm9pZCogZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91
c2VfdXAodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2lu
Zm8pCiB7Ci0gICAgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9V
cCopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19T
bWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ID0gc3RhdGljX2Nh
c3Q8RXZhc19FdmVudF9Nb3VzZV9VcCo+KGV2ZW50X2luZm8pOworICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAg
IEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX3VwKTsKICAgICBzZC0+YXBpLT5tb3VzZV91cChz
ZCwgZXYpOwpAQCAtNTEzLDggKzUxMyw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3Vz
ZV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlCiAKIHN0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2
YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91c2Vf
TW92ZSogZXYgPSAoRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKilldmVudF9pbmZvOwotICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZh
c19FdmVudF9Nb3VzZV9Nb3ZlKiBldiA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfTW91c2VfTW92
ZSo+KGV2ZW50X2luZm8pOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nh
c3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExf
UkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkt
Pm1vdXNlX21vdmUpOwogICAgIHNkLT5hcGktPm1vdXNlX21vdmUoc2QsIGV2KTsKQEAgLTUyMiw4
ICs1MjIsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSh2b2lkKiBkYXRh
LCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZQogCiBzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfb25fa2V5X2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQq
IGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVudF9LZXlfRG93biogZXYgPSAoRXZhc19FdmVu
dF9LZXlfRG93biopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChF
d2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2ID0g
c3RhdGljX2Nhc3Q8RXZhc19FdmVudF9LZXlfRG93bio+KGV2ZW50X2luZm8pOworICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRh
dGEpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmtleV9kb3duKTsKICAgICBzZC0+YXBpLT5r
ZXlfZG93bihzZCwgZXYpOwpAQCAtNTMxLDggKzUzMSw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19vbl9rZXlfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCog
ZXZlCiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfdXAodm9pZCogZGF0YSwgRXZhcyog
ZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVudF9L
ZXlfVXAqIGV2ID0gKEV2YXNfRXZlbnRfS2V5X1VwKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZhc19F
dmVudF9LZXlfVXAqIGV2ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVudF9LZXlfVXAqPihldmVudF9p
bmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3
X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+
YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfdXApOwog
ICAgIHNkLT5hcGktPmtleV91cChzZCwgZXYpOwpAQCAtNTU1LDcgKzU1NSw3IEBAIHN0YXRpYyBF
dmFzX1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsK
IHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhFd2tfVmll
d19TbWFydF9EYXRhKiBzZCkKIHsKICAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPQot
ICAgICAgICAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3
X1ByaXZhdGVfRGF0YSkpOworICAgICAgICBzdGF0aWNfY2FzdDxFd2tfVmlld19Qcml2YXRlX0Rh
dGEqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpKTsKICAgICBBdG9t
aWNTdHJpbmcgczsKICAgICBXZWJDb3JlOjpLVVJMIHVybDsKIApAQCAtNzI0LDEyICs3MjQsMTIg
QEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKIHsKICAg
ICBjb25zdCBFdmFzX1NtYXJ0KiBzbWFydCA9IGV2YXNfb2JqZWN0X3NtYXJ0X3NtYXJ0X2dldChv
KTsKICAgICBjb25zdCBFdmFzX1NtYXJ0X0NsYXNzKiBzYyA9IGV2YXNfc21hcnRfY2xhc3NfZ2V0
KHNtYXJ0KTsKLSAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyogYXBpID0gKGNvbnN0IEV3
a19WaWV3X1NtYXJ0X0NsYXNzKilzYzsKKyAgICBjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyog
YXBpID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyo+KHNjKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihhcGktPmJhY2tpbmdfc3RvcmVfYWRkKTsK
ICAgICBFV0tfVklFV19TRF9HRVQobywgc2QpOwogCiAgICAgaWYgKCFzZCkgewotICAgICAgICBz
ZCA9IChFd2tfVmlld19TbWFydF9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19WaWV3X1NtYXJ0
X0RhdGEpKTsKKyAgICAgICAgc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4o
Y2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19TbWFydF9EYXRhKSkpOwogICAgICAgICBpZiAoIXNk
KSB7CiAgICAgICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3X1Nt
YXJ0X0RhdGEiKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTkyNiwxMiArOTI2LDEyIEBAIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3pvb21fc2V0KEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkLCBmbG9hdCB6b29tLCBFCiAgICAgZXdrX2ZyYW1lX3Njcm9sbF9wb3NfZ2V0KHNkLT5t
YWluX2ZyYW1lLCAmeCwgJnkpOwogCiAgICAgaWYgKHcgKyBzZC0+dmlldy53ID4gMCkKLSAgICAg
ICAgcHggPSAoZG91YmxlKSh4ICsgY3gpIC8gKHcgKyBzZC0+dmlldy53KTsKKyAgICAgICAgcHgg
PSBzdGF0aWNfY2FzdDxkb3VibGU+KCh4ICsgY3gpIC8gKHcgKyBzZC0+dmlldy53KSk7CiAgICAg
ZWxzZQogICAgICAgICBweCA9IDAuMDsKIAogICAgIGlmIChoICsgc2QtPnZpZXcuaCA+IDApCi0g
ICAgICAgIHB5ID0gKGRvdWJsZSkoeSArIGN5KSAvIChoICsgc2QtPnZpZXcuaCk7CisgICAgICAg
IHB5ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPigoeSArIGN5KSAvIChoICsgc2QtPnZpZXcuaCkpOwog
ICAgIGVsc2UKICAgICAgICAgcHkgPSAwLjA7CiAKQEAgLTEwMDQsNyArMTAwNCw3IEBAIHN0YXRp
YyBmbG9hdCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdikKIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRvcl9j
Yih2b2lkKiBkYXRhKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNf
Y2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRXZhc19Db29yZCBjeCwgY3k7
CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwogICAgIGRvdWJsZSBub3cgPSBlY29y
ZV9sb29wX3RpbWVfZ2V0KCk7CkBAIC0xMDQ4LDExICsxMDQ4LDExIEBAIHN0YXRpYyBXZWJDb3Jl
OjpWaWV3cG9ydEF0dHJpYnV0ZXMgX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0
ZShjb25zdCBFCiAgICAgaW50IGRlc2t0b3Bfd2lkdGggPSA5ODA7CiAgICAgaW50IGRldmljZV9k
cGkgPSBld2tfdXRpbF9kcGlfZ2V0KCk7CiAKLSAgICBpbnQgYXZhaWxhYmxlX3dpZHRoID0gKGlu
dCkgcHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wYWdlUmVjdCgpLndpZHRoKCk7Ci0g
ICAgaW50IGF2YWlsYWJsZV9oZWlnaHQgPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPnBhZ2VSZWN0KCkuaGVpZ2h0KCk7CisgICAgaW50IGF2YWlsYWJsZV93aWR0aCA9IHN0
YXRpY19jYXN0PGludD4ocHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wYWdlUmVjdCgp
LndpZHRoKCkpOworICAgIGludCBhdmFpbGFibGVfaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50Pihw
cml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhZ2VSZWN0KCkuaGVpZ2h0KCkpOwogCi0g
ICAgaW50IGRldmljZV93aWR0aCA9IChpbnQpIHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KS0+d2luZG93UmVjdCgpLndpZHRoKCk7Ci0gICAgaW50IGRldmljZV9oZWlnaHQgPSAoaW50KSBw
cml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPndpbmRvd1JlY3QoKS5oZWlnaHQoKTsKKyAg
ICBpbnQgZGV2aWNlX3dpZHRoID0gc3RhdGljX2Nhc3Q8aW50Pihwcml2LT5wYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCktPndpbmRvd1JlY3QoKS53aWR0aCgpKTsKKyAgICBpbnQgZGV2aWNlX2hlaWdo
dCA9IHN0YXRpY19jYXN0PGludD4ocHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5k
b3dSZWN0KCkuaGVpZ2h0KCkpOwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBhdmFpbGFibGVfc2l6
ZSA9IFdlYkNvcmU6OkludFNpemUoYXZhaWxhYmxlX3dpZHRoLCBhdmFpbGFibGVfaGVpZ2h0KTsK
ICAgICBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IFdlYkNvcmU6OmNv
bXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXMocHJpdi0+dmlld3BvcnRfYXJndW1lbnRzLCBkZXNrdG9w
X3dpZHRoLCBkZXZpY2Vfd2lkdGgsIGRldmljZV9oZWlnaHQsIGRldmljZV9kcGksIGF2YWlsYWJs
ZV9zaXplKTsKQEAgLTE1NjEsMTEgKzE1NjEsMTEgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21f
c2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3IK
ICAgICB9CiAKICAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3Nj
YWxlKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKXBy
aXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAg
ICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHByaXYt
PnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHpvb20p
KTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIGlmICh6b29tID4gcHJp
di0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxl
dmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhf
c2NhbGUsIChkb3VibGUpem9vbSk7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDog
JWYiLCBzdGF0aWNfY2FzdDxmbG9hdD4ocHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2Nh
bGUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oem9vbSkpOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxT
RTsKICAgICB9CiAKQEAgLTE2MDUsMTEgKzE2MDUsMTEgQEAgRWluYV9Cb29sIGV3a192aWV3X3pv
b21fd2Vha19zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2
YXMKICAgICB9CiAKICAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWlu
X3NjYWxlKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91Ymxl
KXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOworICAg
ICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBy
aXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHpv
b20pKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIGlmICh6b29tID4g
cHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6b29t
IGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5t
YXhfc2NhbGUsIChkb3VibGUpem9vbSk7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVm
IDogJWYiLCBzdGF0aWNfY2FzdDxmbG9hdD4ocHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhf
c2NhbGUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oem9vbSkpOwogICAgICAgICByZXR1cm4gRUlOQV9G
QUxTRTsKICAgICB9CiAKQEAgLTE2NjEsMTEgKzE2NjEsMTEgQEAgRWluYV9Cb29sIGV3a192aWV3
X3pvb21fYW5pbWF0ZWRfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBmbG9hdCBkdXJh
dGlvbiwKICAgICB9CiAKICAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2Uu
bWluX3NjYWxlKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91
YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOwor
ICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHpvb20pKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIGlmICh6b29t
ID4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6
b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5n
ZS5tYXhfc2NhbGUsIChkb3VibGUpem9vbSk7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+
ICVmIDogJWYiLCBzdGF0aWNfY2FzdDxmbG9hdD4ocHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5t
YXhfc2NhbGUpLCBzdGF0aWNfY2FzdDxmbG9hdD4oem9vbSkpOwogICAgICAgICByZXR1cm4gRUlO
QV9GQUxTRTsKICAgICB9CiAKQEAgLTI0OTEsNyArMjQ5MSw3IEBAIEV3a19WaWV3X1BhaW50X0Nv
bnRleHQqIGV3a192aWV3X3BhaW50X2NvbnRleHRfbmV3KEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdiwKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+bWFpbl9mcmFt
ZSwgMCk7CiAgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+
dmlldygpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCAwKTsKLSAg
ICBFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0ID0gKEV3a19WaWV3X1BhaW50X0NvbnRleHQq
KW1hbGxvYyhzaXplb2YoKmN0eHQpKTsKKyAgICBFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0
ID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUGFpbnRfQ29udGV4dCo+KG1hbGxvYyhzaXplb2YoKmN0
eHQpKSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGN0eHQsIDApOwogCiAg
ICAgY3R4dC0+Z2MgPSBuZXcgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KGNyKTsKQEAgLTMzNDAs
NyArMzM0MCw3IEBAIHZvaWQgZXdrX3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0KiBvLCBXZWJD
b3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCwgaW50IHNlCiAgICAgLy8gcG9wdWxhdGUgaXRl
bXMKICAgICBjb25zdCBpbnQgc2l6ZSA9IGNsaWVudC0+bGlzdFNpemUoKTsKICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBFd2tfTWVudV9JdGVtKiBpdGVtID0g
KEV3a19NZW51X0l0ZW0qKSBtYWxsb2Moc2l6ZW9mKCppdGVtKSk7CisgICAgICAgIEV3a19NZW51
X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfTWVudV9JdGVtKj4obWFsbG9jKHNpemVvZigq
aXRlbSkpKTsKICAgICAgICAgaWYgKGNsaWVudC0+aXRlbUlzU2VwYXJhdG9yKGkpKQogICAgICAg
ICAgICAgaXRlbS0+dHlwZSA9IEVXS19NRU5VX1NFUEFSQVRPUjsKICAgICAgICAgZWxzZSBpZiAo
Y2xpZW50LT5pdGVtSXNMYWJlbChpKSkKQEAgLTMzNzIsNyArMzM3Miw3IEBAIEVpbmFfQm9vbCBl
d2tfdmlld19wb3B1cF9kZXN0cm95KEV2YXNfT2JqZWN0KiBvKQogCiAgICAgdm9pZCogaXRlbXY7
CiAgICAgRUlOQV9MSVNUX0ZSRUUocHJpdi0+cG9wdXAubWVudS5pdGVtcywgaXRlbXYpIHsKLSAg
ICAgICAgRXdrX01lbnVfSXRlbSogaXRlbSA9IChFd2tfTWVudV9JdGVtKilpdGVtdjsKKyAgICAg
ICAgRXdrX01lbnVfSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0PEV3a19NZW51X0l0ZW0qPihpdGVt
dik7CiAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGl0ZW0tPnRleHQpOwogICAgICAgICBm
cmVlKGl0ZW0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlld19zaW5nbGUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5j
cHAKaW5kZXggYjk5YzhhZDc5MTc1MmNhYTg5MWEzMGViZWE5NGE0ZDBlN2ExZGY5Yy4uNWFkNjdm
ZWFkMzNhNjkwODU3OThlNTUzNmE1MTVhOWFjNjUyNjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZvaWQgX2V3
a192aWV3X3NpbmdsZV9zbWFydF9hZGQoRXZhc19PYmplY3QqIG8pCiAKICAgICBfcGFyZW50X3Nj
LnNjLmFkZChvKTsKIAotICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0
X3NtYXJ0X2RhdGFfZ2V0KG8pOworICAgIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRf
RGF0YSo+KGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pKTsKICAgICBpZiAoIXNkKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdr
X3ZpZXdfc2luZ2xlX3NtYXJ0X2JhY2tpbmdfc3RvcmVfYWRkKEV3a19WaWV3X1NtYXJ0X0RhdGEK
IAogc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXNpemUoRXZhc19PYmplY3Qq
IG8sIEV2YXNfQ29vcmQgdywgRXZhc19Db29yZCBoKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0
KG8pOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdf
U21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pKTsKICAgICBfcGFyZW50
X3NjLnNjLnJlc2l6ZShvLCB3LCBoKTsKIAogICAgIGlmICghc2QpCkBAIC0yNTEsNyArMjUxLDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2lu
Z2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHMKICAgICAgICAgICAgICAgICBzeCwgc3kgKyBzaCAr
IHNyLT5keSwgc3csIC1zci0+ZHkpOwogCiAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9y
ZWdpb25fdXAKLSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KilwaXhlbHMsIC1zci0+ZHksIHN4
LCBzeSwgc3csIHNoLCBvdyk7CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQzMl90
Kj4ocGl4ZWxzKSwgLXNyLT5keSwgc3gsIHN5LCBzdywgc2gsIG93KTsKICAgICAgICAgICAgIGV2
YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAogICAgICAgICAgICAgICAgIChzZC0+YmFj
a2luZ19zdG9yZSwgc3gsIHN5LCBzdywgc2ggKyBzci0+ZHkpOwogCkBAIC0yNjMsNyArMjYzLDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2lu
Z2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHMKICAgICAgICAgICAgICAgICBzeCwgc3ksIHN3LCBz
ci0+ZHkpOwogCiAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fZG93bgotICAg
ICAgICAgICAgICAgICgodWludDMyX3QqKXBpeGVscywgc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCwg
b3cpOworICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIHNy
LT5keSwgc3gsIHN5LCBzdywgc2gsIG93KTsKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdl
X2RhdGFfdXBkYXRlX2FkZAogICAgICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3gs
IHN5ICsgc3ItPmR5LCBzdywgc2ggLSBzci0+ZHkpOwogCkBAIC0yNzcsNyArMjc3LDcgQEAgc3Rh
dGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHMKICAgICAgICAgICAgICAgICBzeCArIHN3ICsgc3ItPmR4LCBz
eSwgLXNyLT5keCwgc2gpOwogCiAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25f
bGVmdAotICAgICAgICAgICAgICAgICgodWludDMyX3QqKXBpeGVscywgLXNyLT5keCwgc3gsIHN5
LCBzdywgc2gsIG93KTsKKyAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihw
aXhlbHMpLCAtc3ItPmR4LCBzeCwgc3ksIHN3LCBzaCwgb3cpOwogICAgICAgICAgICAgZXZhc19v
YmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCiAgICAgICAgICAgICAgICAgKHNkLT5iYWNraW5n
X3N0b3JlLCBzeCwgc3ksIHN3ICsgc3ItPmR4LCBzaCk7CiAKQEAgLTI4OSw3ICsyODksNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUo
RXdrX1ZpZXdfU21hcnRfRGF0YSogcwogICAgICAgICAgICAgICAgIHN4LCBzeSwgc3ItPmR4LCBz
aCk7CiAKICAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9yaWdodAotICAgICAg
ICAgICAgICAgICgodWludDMyX3QqKXBpeGVscywgc3ItPmR4LCBzeCwgc3ksIHN3LCBzaCwgb3cp
OworICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIHNyLT5k
eCwgc3gsIHN5LCBzdywgc2gsIG93KTsKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2Rh
dGFfdXBkYXRlX2FkZAogICAgICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3ggKyBz
ci0+ZHgsIHN5LCBzdyAtIHNyLT5keCwgc2gpOwogCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGlj
IGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHMKICAgICAgICAgICAgIHNyLT5keCwgc3ItPmR5LCBteCwgbXksIG13
LCBtaCwgYXgsIGF5LCBhdywgYWgsIGJ4LCBieSwgYncsIGJoKTsKIAogICAgICAgICBfZXdrX3Zp
ZXdfNGJfbW92ZV9yZWdpb24KLSAgICAgICAgICAgICgodWludDMyX3QqKXBpeGVscywgc3ItPmR4
LCBzci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7CisgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8
dWludDMyX3QqPihwaXhlbHMpLCBzci0+ZHgsIHNyLT5keSwgc3gsIHN5LCBzdywgc2gsIG93KTsK
IAogICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc2QtPmJhY2tpbmdf
c3RvcmUsIG14LCBteSwgbXcsIG1oKTsKICAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2Qt
Pl9wcml2LCBheCwgYXksIGF3LCBhaCk7CkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIEVpbmFf
Qm9vbCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QKICAgICBmb3JtYXQgPSBDQUlST19GT1JNQVRfQVJHQjMyOwogCiAgICAgc3Vy
ZmFjZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhCi0gICAgICAgICAgICAg
ICAgICAoKHVuc2lnbmVkIGNoYXIqKXBpeGVscywgZm9ybWF0LCBvdywgb2gsIG93ICogNCk7Cisg
ICAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHBpeGVscyksIGZv
cm1hdCwgb3csIG9oLCBvdyAqIDQpOwogICAgIHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3RhdHVz
KHN1cmZhY2UpOwogICAgIGlmIChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKICAg
ICAgICAgRVJSKCJjb3VsZCBub3QgY3JlYXRlIHN1cmZhY2UgZnJvbSBkYXRhICVkeCVkOiAlcyIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAppbmRleCA0OTc1MWJkOWQ5
ZTVmNWEzMDg2YTUzYjQ4MzQ2ZGI1OTdiYzRjNDVmLi5mODdmNDhiZDlmYTM0MGUwYjM0NjkyMTA2
YWU0ZGMyNWViNTljNWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXdfdGlsZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIF9wYXJlbnRf
c2MgPSBFV0tfVklFV19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKIHN0YXRpYyBFaW5hX0Jvb2wg
X2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYih2b2lkKiBkYXRhLCBFd2tfVGlsZSogdCwgY29uc3Qg
RWluYV9SZWN0YW5nbGUqIGFyZWEpCiB7Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2
ID0gKEV3a19WaWV3X1ByaXZhdGVfRGF0YSopZGF0YTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0Rh
dGEqIHByaXYgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihkYXRhKTsKICAg
ICBFaW5hX1JlY3RhbmdsZSByID0ge2FyZWEtPnggKyB0LT54LCBhcmVhLT55ICsgdC0+eSwgYXJl
YS0+dywgYXJlYS0+aH07CiAKICAgICByZXR1cm4gZXdrX3ZpZXdfcGFpbnRfY29udGVudHMocHJp
diwgdC0+Y2Fpcm8sICZyKTsKQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfdGlsZWRfcmVuZGVyX2NiKHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0LCBjb25zdCBFaW5h
X1IKIAogc3RhdGljIHZvaWQqIF9ld2tfdmlld190aWxlZF91cGRhdGVzX3Byb2Nlc3NfcHJlKHZv
aWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvKQogewotICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSog
cHJpdiA9IChFd2tfVmlld19Qcml2YXRlX0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKiBwcml2ID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKj4oZGF0YSk7
CiAgICAgZXdrX3ZpZXdfbGF5b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUocHJpdik7CiAgICAgcmV0
dXJuIDA7CiB9CkBAIC01OCw4ICs1OCw4IEBAIHN0YXRpYyBFdmFzX09iamVjdCogX2V3a192aWV3
X3RpbGVkX3NtYXJ0X2JhY2tpbmdfc3RvcmVfYWRkKEV3a19WaWV3X1NtYXJ0X0RhdGEqCiBzdGF0
aWMgdm9pZAogX2V3a192aWV3X3RpbGVkX2NvbnRlbnRzX3NpemVfY2hhbmdlZF9jYih2b2lkKiBk
YXRhLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0Nvb3Jk
KiBzaXplID0gKEV2YXNfQ29vcmQqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0Nvb3JkKiBzaXpl
ID0gc3RhdGljX2Nhc3Q8RXZhc19Db29yZCo+KGV2ZW50X2luZm8pOworICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwog
CiAgICAgZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXplCiAgICAgICAgIChz
ZC0+YmFja2luZ19zdG9yZSwgc2l6ZVswXSwgc2l6ZVsxXSk7CkBAIC03MSw3ICs3MSw3IEBAIHN0
YXRpYyB2b2lkIF9ld2tfdmlld190aWxlZF9zbWFydF9hZGQoRXZhc19PYmplY3QqIG8pCiAKICAg
ICBfcGFyZW50X3NjLnNjLmFkZChvKTsKIAotICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEq
KWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pOworICAgIHNkID0gc3RhdGljX2Nhc3Q8RXdr
X1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pKTsKICAgICBp
ZiAoIXNkKQogICAgICAgICByZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108962</attachid>
            <date>2011-09-27 22:27:06 -0700</date>
            <delta_ts>2011-09-27 22:52:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68321-20110928142705.patch</filename>
            <type>text/plain</type>
            <size>26685</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYxNzkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBmZTFiOTAyOGIz
YzU0ZTRhOGFmNjRmNWM2NjhkZGMxYzEyZGViYTc5Li41MWEzYWMwM2NjM2UzYTc3NTYwMjliNjU1
M2M0NjUwOTYxMTJkOTk5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEt
MDktMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBVc2UgQysrIHR5cGUgY2FzdCBpbnN0ZWFkIG9mIEMgc3R5bGUgdHlwZSBjYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODMyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBz
ZWNvbmQgc3RlcCBpbiBvcmRlciB0byBiZSBtb3JlIGNvbXBsaWFudCB3aXRoIFdlYktpdCBjb2Rp
bmcgc3R5bGUuCisgICAgICAgIFRoZSBzZWNvbmQgc3RlcCBpcyB0byBjaGFuZ2UgQy10eXBlIGNh
c3Rpbmcgd2l0aCBDKystdHlwZSBjYXN0aW5nIGluIC5jcHAgZmlsZXMuCisKKyAgICAgICAgSW4g
YWRkaXRpb24sIHJlbWFpbmVkIGVmbCBzdHlsZSAnKicgcG9pbnRlciBwbGFjZW1lbnRzIGFyZSBt
b3ZlZCB0byB0aGUgcmlnaHQgcGxhY2UgYXMgd2VsbC4KKworICAgICAgICAqIGV3ay9ld2tfYXV0
aF9zb3VwLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKKyAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5j
cHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKKwogMjAxMS0wOS0yNyAgUmFw
aGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbRUZM
XSBNYWtlIGV3a192aWV3IGVtaXQgdGhlICJsb2FkLGRvY3VtZW50LGZpbmlzaGVkIiBzaWduYWwu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKaW5kZXggMDlmM2QwZGIxYzVk
NzhjODE1ZGEyZTdlM2QxODRhNTRjZTlhYmQ4Yi4uZmIzNmE5MTU5ZjI3YjI3MmJhMWYzMDI2NDZk
Y2M3ZjAxZmYxNWFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRo
X3NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcApA
QCAtNzksNyArNzksNyBAQCB2b2lkIGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0
IGNoYXIqIHVzZXJuYW1lLCBjb25zdCBjaGFyKiBwYXNzd29yZCwgdgogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRXdrX0F1dGhfRGF0YSogYXV0aF9kYXRhID0gKEV3a19B
dXRoX0RhdGEqKWRhdGE7CisgICAgRXdrX0F1dGhfRGF0YSogYXV0aF9kYXRhID0gc3RhdGljX2Nh
c3Q8RXdrX0F1dGhfRGF0YSo+KGRhdGEpOwogICAgIHNvdXBfYXV0aF9hdXRoZW50aWNhdGUoYXV0
aF9kYXRhLT5hdXRoLCB1c2VybmFtZSwgcGFzc3dvcmQpOwogICAgIHNvdXBfc2Vzc2lvbl91bnBh
dXNlX21lc3NhZ2UoYXV0aF9kYXRhLT5zZXNzaW9uLCBhdXRoX2RhdGEtPm1zZyk7CiAgICAgZnJl
ZV9hdXRoX2RhdGEoYXV0aF9kYXRhKTsKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2Vz
c2lvbl9hdXRoZW50aWNhdGUoU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBtc2cs
IFNvdXBBdXQKICAgICBpZiAoIWV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRoX2RhdGEgPSAoRXdrX0F1dGhfRGF0YSopY2FsbG9jKDEsIHNp
emVvZihFd2tfQXV0aF9EYXRhKSk7CisgICAgYXV0aF9kYXRhID0gc3RhdGljX2Nhc3Q8RXdrX0F1
dGhfRGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX0F1dGhfRGF0YSkpKTsKIAogICAgIGlmICgh
YXV0aF9kYXRhKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX0F1
dGhfRGF0YSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0
bWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAppbmRl
eCA4NTc5MjZiNzg5NjhjNGQ0MTk0MGYzZDQxZGZlY2JjMjA4OTgyZTIwLi5hYTE2MTlmZDkxOGYx
MjYzMGEwMTcwMjJiNmVkZmUzZTczY2NjOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2NvbnRleHRtZW51LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIEV3a19Db250ZXh0X01lbnVfSXRl
bSogZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0
eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdr
X0NvbnRleHRfTWVudV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4dF9NZW51KiBzdWJtZW51LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCiB7Ci0gICAg
RXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtID0gKEV3a19Db250ZXh0X01lbnVfSXRlbSopIG1h
bGxvYyhzaXplb2YoKml0ZW0pKTsKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0gPSBz
dGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihtYWxsb2Moc2l6ZW9mKCppdGVtKSkp
OwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5jcHAKaW5kZXggYzRiNzk5MDI3OTdlYjg5ZTA5OGI1OGQ1MjJkNjhiMzk0ZjNhMGFh
Ni4uZjA3ZjBhOGUwMDJkZTNkZTliMjM2M2Q5NWJhM2RhMDIxNTNmNzBlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdHJ1Y3QgRWluYV9JdGVy
YXRvcl9Fd2tfRnJhbWUgewogI2VuZGlmCiAKICNkZWZpbmUgRVdLX0ZSQU1FX1NEX0dFVChvLCBw
dHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRXdrX0ZyYW1lX1NtYXJ0
X0RhdGEgKnB0ciA9IChFd2tfRnJhbWVfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0
YV9nZXQobykKKyAgICBFd2tfRnJhbWVfU21hcnRfRGF0YSogcHRyID0gc3RhdGljX2Nhc3Q8RXdr
X0ZyYW1lX1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKSkKIAogI2Rl
ZmluZSBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICBcCiAg
ICAgRVdLX0ZSQU1FX1RZUEVfQ0hFQ0sobywgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgIFwK
QEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2FkZChFdmFz
X09iamVjdCogbykKICAgICBFV0tfRlJBTUVfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmICghc2Qp
IHsKLSAgICAgICAgc2QgPSAoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqKWNhbGxvYygxLCBzaXplb2Yo
RXdrX0ZyYW1lX1NtYXJ0X0RhdGEpKTsKKyAgICAgICAgc2QgPSBzdGF0aWNfY2FzdDxFd2tfRnJh
bWVfU21hcnRfRGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEpKSk7
CiAgICAgICAgIGlmICghc2QpIHsKICAgICAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxs
b2NhdGUgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEiKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIz
MywxNCArMjMzLDE0IEBAIHN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfYWRkKEV2YXNfT2Jq
ZWN0KiBvKQogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfZGVsKEV2
YXNfT2JqZWN0ICpvKQorc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9kZWwoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgV1JOKCJvPSVwIiwgbyk7IC8vIFhYWCBSRU1PVkUgTUUgTEFURVIKICAg
ICBFV0tfRlJBTUVfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmIChzZCkgewogICAgICAgICBpZiAo
c2QtPmZyYW1lKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCAq
ZmxjID0gX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldChzZC0+ZnJhbWUpOworICAgICAgICAgICAg
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGZsYyA9IF9ld2tfZnJhbWVfbG9hZGVyX2Vm
bF9nZXQoc2QtPmZyYW1lKTsKICAgICAgICAgICAgIGZsYy0+c2V0V2ViRnJhbWUoMCk7CiAgICAg
ICAgICAgICBzZC0+ZnJhbWUtPmxvYWRlcigpLT5kZXRhY2hGcm9tUGFyZW50KCk7CiAgICAgICAg
ICAgICBzZC0+ZnJhbWUtPmxvYWRlcigpLT5jYW5jZWxBbmRDbGVhcigpOwpAQCAtMzAxLDggKzMw
MSw4IEBAIEV2YXNfT2JqZWN0KiBld2tfZnJhbWVfdmlld19nZXQoY29uc3QgRXZhc19PYmplY3Qq
IG8pCiBFaW5hX0l0ZXJhdG9yKiBld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV3KEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsK
LSAgICBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSogaXQgPSAoRWluYV9JdGVyYXRvcl9Fd2tfRnJh
bWUqKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxvYygxLCBzaXplb2Yo
RWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUpKTsKKyAgICBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSog
aXQgPSBzdGF0aWNfY2FzdDxFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSo+CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGNhbGxvYygxLCBzaXplb2YoRWluYV9JdGVyYXRvcl9Fd2tf
RnJhbWUpKSk7CiAgICAgaWYgKCFpdCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTY4Niw3ICs2
ODYsNyBAQCBFd2tfSGl0X1Rlc3QqIGV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19P
YmplY3QqIG8sIGludCB4LCBpbnQgeSkKICAgICBpZiAoIXJlc3VsdC5pbm5lck5vZGUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBFd2tfSGl0X1Rlc3QqIGhpdF90ZXN0ID0gKEV3a19IaXRf
VGVzdCopY2FsbG9jKDEsIHNpemVvZihFd2tfSGl0X1Rlc3QpKTsKKyAgICBFd2tfSGl0X1Rlc3Qq
IGhpdF90ZXN0ID0gc3RhdGljX2Nhc3Q8RXdrX0hpdF9UZXN0Kj4oY2FsbG9jKDEsIHNpemVvZihF
d2tfSGl0X1Rlc3QpKSk7CiAgICAgaWYgKCFoaXRfdGVzdCkgewogICAgICAgICBDUklUSUNBTCgi
Q291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgaGl0IHRlc3QuIik7CiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKaW5kZXggOWFlN2FhMTI1Y2Ix
YWI2NjNhOWY0ZmY1MTAxY2MwMmMxYjVlMGQzYS4uNjJkNzc0Mjk4NmMyM2EyMjI0OGIzOGVhNzFi
MTQ5NDk0MGUxNzk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCkBAIC04
Myw3ICs4Myw3IEBAIHN0YXRpYyBpbmxpbmUgRXdrX0hpc3RvcnlfSXRlbSogX2V3a19oaXN0b3J5
X2l0ZW1fbmV3KFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjb3JlCiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIGl0ZW0gPSAoRXdrX0hpc3RvcnlfSXRlbSopY2FsbG9jKDEsIHNpemVvZihF
d2tfSGlzdG9yeV9JdGVtKSk7CisgICAgaXRlbSA9IHN0YXRpY19jYXN0PEV3a19IaXN0b3J5X0l0
ZW0qPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19IaXN0b3J5X0l0ZW0pKSk7CiAgICAgaWYgKCFpdGVt
KSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgYWxsb2NhdGUgaXRlbSBtZW1vcnkuIik7
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjcxLDcgKzI3MSw3IEBAIGNvbnN0IGNoYXIqIGV3a19o
aXN0b3J5X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiB7CiAg
ICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CiAg
ICAgLy8gaGlkZSB0aGUgZm9sbG93aW5nIG9wdGltemF0aW9uIGZyb20gb3V0c2lkZQotICAgIEV3
a19IaXN0b3J5X0l0ZW0qIGkgPSAoRXdrX0hpc3RvcnlfSXRlbSopaXRlbTsKKyAgICBFd2tfSGlz
dG9yeV9JdGVtKiBpID0gY29uc3RfY2FzdDxFd2tfSGlzdG9yeV9JdGVtKj4oaXRlbSk7CiAgICAg
ZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZpLT50aXRsZSwgY29yZS0+dGl0bGUoKS51dGY4KCku
ZGF0YSgpKTsKICAgICByZXR1cm4gaS0+dGl0bGU7CiB9CkBAIC0yODAsNyArMjgwLDcgQEAgY29u
c3QgY2hhciogZXdrX2hpc3RvcnlfaXRlbV90aXRsZV9hbHRlcm5hdGVfZ2V0KGNvbnN0IEV3a19I
aXN0b3J5X0l0ZW0qIGl0ZW0pCiB7CiAgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9S
RVRVUk4oaXRlbSwgY29yZSwgMCk7CiAgICAgLy8gaGlkZSB0aGUgZm9sbG93aW5nIG9wdGltemF0
aW9uIGZyb20gb3V0c2lkZQotICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSAoRXdrX0hpc3Rvcnlf
SXRlbSopaXRlbTsKKyAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gY29uc3RfY2FzdDxFd2tfSGlz
dG9yeV9JdGVtKj4oaXRlbSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZpLT5hbHRl
cm5hdGVfdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUtPmFsdGVybmF0
ZVRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIGktPmFsdGVybmF0ZV90aXRsZTsK
QEAgLTI5OCw3ICsyOTgsNyBAQCBjb25zdCBjaGFyKiBld2tfaGlzdG9yeV9pdGVtX3VyaV9nZXQo
Y29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKIHsKICAgICBFV0tfSElTVE9SWV9JVEVNX0NP
UkVfR0VUX09SX1JFVFVSTihpdGVtLCBjb3JlLCAwKTsKICAgICAvLyBoaWRlIHRoZSBmb2xsb3dp
bmcgb3B0aW16YXRpb24gZnJvbSBvdXRzaWRlCi0gICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IChF
d2tfSGlzdG9yeV9JdGVtKilpdGVtOworICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSBjb25zdF9j
YXN0PEV3a19IaXN0b3J5X0l0ZW0qPigoaXRlbSkpOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVw
bGFjZSgmaS0+dXJpLCBjb3JlLT51cmxTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1
cm4gaS0+dXJpOwogfQpAQCAtMzA3LDcgKzMwNyw3IEBAIGNvbnN0IGNoYXIqIGV3a19oaXN0b3J5
X2l0ZW1fdXJpX29yaWdpbmFsX2dldChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQogewog
ICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUsIDApOwog
ICAgIC8vIGhpZGUgdGhlIGZvbGxvd2luZyBvcHRpbXphdGlvbiBmcm9tIG91dHNpZGUKLSAgICBF
d2tfSGlzdG9yeV9JdGVtKiBpID0gKEV3a19IaXN0b3J5X0l0ZW0qKWl0ZW07CisgICAgRXdrX0hp
c3RvcnlfSXRlbSogaSA9IGNvbnN0X2Nhc3Q8RXdrX0hpc3RvcnlfSXRlbSo+KGl0ZW0pOwogICAg
IGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmaS0+b3JpZ2luYWxfdXJpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb3JlLT5vcmlnaW5hbFVSTFN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgIHJldHVybiBpLT5vcmlnaW5hbF91cmk7CkBAIC0zODMsNyArMzgzLDcgQEAgRXdrX0hp
c3RvcnkqIGV3a19oaXN0b3J5X25ldyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBjb3Jl
KQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb3JlLCAwKTsKICAgICBEQkco
ImNvcmU9JXAiLCBjb3JlKTsKIAotICAgIGhpc3RvcnkgPSAoRXdrX0hpc3RvcnkqKW1hbGxvYyhz
aXplb2YoRXdrX0hpc3RvcnkpKTsKKyAgICBoaXN0b3J5ID0gc3RhdGljX2Nhc3Q8RXdrX0hpc3Rv
cnkqPihtYWxsb2Moc2l6ZW9mKEV3a19IaXN0b3J5KSkpOwogICAgIGlmICghaGlzdG9yeSkgewog
ICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIGhpc3RvcnkgbWVtb3J5LiIpOwog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IGQ2MzUx
MTk3NDFkOTZiMGUyZDhkNDVjMmQwNmNjNDQwOWIwNDdhMjEuLmRiN2NkMDUzNjBhNzY2NDQzZTY0
MzA1YTdkYTRkYjYxNGRjYjcwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAt
MjA3LDcgKzIwNyw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICNlbmRpZgog
CiAjZGVmaW5lIEVXS19WSUVXX1NEX0dFVChvLCBwdHIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnB0ciA9IChFd2tfVmlld19TbWFy
dF9EYXRhKilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKQorICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHB0ciA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVj
dF9zbWFydF9kYXRhX2dldChvKSkKIAogI2RlZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHB0ciwgLi4uKSAgICAgICAgICBcCiAgICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCBfX1ZB
X0FSR1NfXyk7ICAgICAgICAgICAgICAgIFwKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgRWlu
YV9Cb29sIF9ld2tfdmlld19yZXBhaW50c19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2LCBzaXplX3QgcwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgcHJp
di0+cmVwYWludHMuYWxsb2NhdGVkID0gc2l6ZTsKLSAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9
IChFaW5hX1JlY3RhbmdsZSopdG1wOworICAgIHByaXYtPnJlcGFpbnRzLmFycmF5ID0gc3RhdGlj
X2Nhc3Q8RWluYV9SZWN0YW5nbGUqPih0bXApOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAK
QEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zY3JvbGxzX3Jl
c2l6ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCBzaQogICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgcHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQgPSBzaXpl
OwotICAgIHByaXYtPnNjcm9sbHMuYXJyYXkgPSAoRXdrX1Njcm9sbF9SZXF1ZXN0Kil0bXA7Cisg
ICAgcHJpdi0+c2Nyb2xscy5hcnJheSA9IHN0YXRpY19jYXN0PEV3a19TY3JvbGxfUmVxdWVzdCo+
KHRtcCk7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIApAQCAtNDcwLDcgKzQ3MCw3IEBAIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCwKIC8vIEV2ZW50IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogc3RhdGljIHZvaWQgX2V3a192
aWV3X29uX2ZvY3VzX2luKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lk
KiBldmVudF9pbmZvKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNf
Y2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aS0+Zm9jdXNfaW4pOwogICAgIHNkLT5hcGktPmZvY3VzX2luKHNkKTsKQEAgLTQ3OCw3ICs0Nzgs
NyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfaW4odm9pZCogZGF0YSwgRXZhcyog
ZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25f
Zm9jdXNfb3V0KHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVu
dF9pbmZvKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0
X0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxF
d2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9j
dXNfb3V0KTsKICAgICBzZC0+YXBpLT5mb2N1c19vdXQoc2QpOwpAQCAtNDg2LDggKzQ4Niw4IEBA
IHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCogZGF0YSwgRXZhcyogZSwg
RXZhc19PYmplY3QqIG8sIHZvaWQqIGV2CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3Vz
ZV93aGVlbCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRf
aW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldiA9IChFdmFzX0V2ZW50X01v
dXNlX1doZWVsKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3
a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYg
PSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX1doZWVsKj4oZXZlbnRfaW5mbyk7CisgICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRh
Kj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2Vfd2hlZWwpOwogICAgIHNk
LT5hcGktPm1vdXNlX3doZWVsKHNkLCBldik7CkBAIC00OTUsOCArNDk1LDggQEAgc3RhdGljIHZv
aWQgX2V3a192aWV3X29uX21vdXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2Jq
ZWN0KiBvLCB2b2lkKgogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bih2b2lk
KiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAg
ICBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfRG93biopZXZl
bnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9E
YXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYgPSBzdGF0aWNfY2FzdDxF
dmFzX0V2ZW50X01vdXNlX0Rvd24qPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV9kb3duKTsKICAgICBzZC0+YXBpLT5tb3VzZV9kb3du
KHNkLCBldik7CkBAIC01MDQsOCArNTA0LDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21v
dXNlX2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGUKIAog
c3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2
YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91c2Vf
VXAqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfVXAqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2
ZW50X01vdXNlX1VwKiBldiA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfTW91c2VfVXAqPihldmVu
dF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19W
aWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
ZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV91
cCk7CiAgICAgc2QtPmFwaS0+bW91c2VfdXAoc2QsIGV2KTsKQEAgLTUxMyw4ICs1MTMsOCBAQCBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfdXAodm9pZCogZGF0YSwgRXZhcyogZSwgRXZh
c19PYmplY3QqIG8sIHZvaWQqIGV2ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vf
bW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5m
bykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2Vf
TW92ZSopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYgPSBzdGF0
aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX01vdmUqPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRh
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV9tb3ZlKTsKICAgICBzZC0+YXBpLT5t
b3VzZV9tb3ZlKHNkLCBldik7CkBAIC01MjIsOCArNTIyLDggQEAgc3RhdGljIHZvaWQgX2V3a192
aWV3X29uX21vdXNlX21vdmUodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZv
aWQqIGUKIAogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2
YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZl
bnRfS2V5X0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50X2luZm87Ci0gICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAg
ICBFdmFzX0V2ZW50X0tleV9Eb3duKiBldiA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfS2V5X0Rv
d24qPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19j
YXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBp
LT5rZXlfZG93bik7CiAgICAgc2QtPmFwaS0+a2V5X2Rvd24oc2QsIGV2KTsKQEAgLTUzMSw4ICs1
MzEsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24odm9pZCogZGF0YSwgRXZh
cyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
b25fa2V5X3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVu
dF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfS2V5X1VwKiBldiA9IChFdmFzX0V2ZW50X0tleV9V
cCopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19T
bWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfS2V5X1VwKiBldiA9IHN0YXRpY19jYXN0
PEV2YXNfRXZlbnRfS2V5X1VwKj4oZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaS0+a2V5X3VwKTsKICAgICBzZC0+YXBpLT5rZXlfdXAoc2QsIGV2KTsK
QEAgLTU1NSw3ICs1NTUsNyBAQCBzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0g
RVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CiBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0KLSAgICAgICAgKEV3a19WaWV3X1ByaXZhdGVfRGF0
YSopY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0RhdGEpKTsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKj4oY2FsbG9jKDEsIHNpemVvZihFd2tfVmll
d19Qcml2YXRlX0RhdGEpKSk7CiAgICAgQXRvbWljU3RyaW5nIHM7CiAgICAgV2ViQ29yZTo6S1VS
TCB1cmw7CiAKQEAgLTcyNCwxMiArNzI0LDEyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9hZGQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgY29uc3QgRXZhc19TbWFydCogc21hcnQgPSBl
dmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7CiAgICAgY29uc3QgRXZhc19TbWFydF9DbGFz
cyogc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChzbWFydCk7Ci0gICAgY29uc3QgRXdrX1ZpZXdf
U21hcnRfQ2xhc3MqIGFwaSA9IChjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyopc2M7CisgICAg
Y29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
RXdrX1ZpZXdfU21hcnRfQ2xhc3MqPihzYyk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oYXBpLT5iYWNraW5nX3N0b3JlX2FkZCk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsK
IAogICAgIGlmICghc2QpIHsKLSAgICAgICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopY2Fs
bG9jKDEsIHNpemVvZihFd2tfVmlld19TbWFydF9EYXRhKSk7CisgICAgICAgIHNkID0gc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21h
cnRfRGF0YSkpKTsKICAgICAgICAgaWYgKCFzZCkgewogICAgICAgICAgICAgQ1JJVElDQUwoImNv
dWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld19TbWFydF9EYXRhIik7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC05MjYsMTIgKzkyNiwxMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFy
dF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgZmxvYXQgem9vbSwgRQogICAgIGV3
a19mcmFtZV9zY3JvbGxfcG9zX2dldChzZC0+bWFpbl9mcmFtZSwgJngsICZ5KTsKIAogICAgIGlm
ICh3ICsgc2QtPnZpZXcudyA+IDApCi0gICAgICAgIHB4ID0gKGRvdWJsZSkoeCArIGN4KSAvICh3
ICsgc2QtPnZpZXcudyk7CisgICAgICAgIHB4ID0gKHggKyBjeCkgLyAodyArIHNkLT52aWV3Lncp
OwogICAgIGVsc2UKICAgICAgICAgcHggPSAwLjA7CiAKICAgICBpZiAoaCArIHNkLT52aWV3Lmgg
PiAwKQotICAgICAgICBweSA9IChkb3VibGUpKHkgKyBjeSkgLyAoaCArIHNkLT52aWV3LmgpOwor
ICAgICAgICBweSA9ICh5ICsgY3kpIC8gKGggKyBzZC0+dmlldy5oKTsKICAgICBlbHNlCiAgICAg
ICAgIHB5ID0gMC4wOwogCkBAIC0xMDA0LDcgKzEwMDQsNyBAQCBzdGF0aWMgZmxvYXQgX2V3a192
aWV3X3pvb21fYW5pbWF0ZWRfY3VycmVudChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiAK
IHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2Iodm9pZCogZGF0YSkK
IHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilk
YXRhOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdf
U21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEV2YXNfQ29vcmQgY3gsIGN5OwogICAgIEVXS19WSUVX
X1BSSVZfR0VUKHNkLCBwcml2KTsKICAgICBkb3VibGUgbm93ID0gZWNvcmVfbG9vcF90aW1lX2dl
dCgpOwpAQCAtMTA0OCwxMSArMTA0OCwxMyBAQCBzdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29uc3QgRQogICAg
IGludCBkZXNrdG9wX3dpZHRoID0gOTgwOwogICAgIGludCBkZXZpY2VfZHBpID0gZXdrX3V0aWxf
ZHBpX2dldCgpOwogCi0gICAgaW50IGF2YWlsYWJsZV93aWR0aCA9IChpbnQpIHByaXYtPnBhZ2Ut
PmNocm9tZSgpLT5jbGllbnQoKS0+cGFnZVJlY3QoKS53aWR0aCgpOwotICAgIGludCBhdmFpbGFi
bGVfaGVpZ2h0ID0gKGludCkgcHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wYWdlUmVj
dCgpLmhlaWdodCgpOworICAgIEludFJlY3QgYXZhaWxhYmxlX3JlY3QocHJpdi0+cGFnZS0+Y2hy
b21lKCktPmNsaWVudCgpLT5wYWdlUmVjdCgpKTsKKyAgICBpbnQgYXZhaWxhYmxlX3dpZHRoID0g
YXZhaWxhYmxlX3JlY3Qud2lkdGgoKTsKKyAgICBpbnQgYXZhaWxhYmxlX2hlaWdodCA9IGF2YWls
YWJsZV9yZWN0LmhlaWdodCgpOwogCi0gICAgaW50IGRldmljZV93aWR0aCA9IChpbnQpIHByaXYt
PnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2luZG93UmVjdCgpLndpZHRoKCk7Ci0gICAgaW50
IGRldmljZV9oZWlnaHQgPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPndp
bmRvd1JlY3QoKS5oZWlnaHQoKTsKKyAgICBJbnRSZWN0IGRldmljZV9yZWN0KHByaXYtPnBhZ2Ut
PmNocm9tZSgpLT5jbGllbnQoKS0+d2luZG93UmVjdCgpKTsKKyAgICBpbnQgZGV2aWNlX3dpZHRo
ID0gZGV2aWNlX3JlY3Qud2lkdGgoKTsKKyAgICBpbnQgZGV2aWNlX2hlaWdodCA9IGRldmljZV9y
ZWN0LmhlaWdodCgpOwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBhdmFpbGFibGVfc2l6ZSA9IFdl
YkNvcmU6OkludFNpemUoYXZhaWxhYmxlX3dpZHRoLCBhdmFpbGFibGVfaGVpZ2h0KTsKICAgICBX
ZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IFdlYkNvcmU6OmNvbXB1dGVW
aWV3cG9ydEF0dHJpYnV0ZXMocHJpdi0+dmlld3BvcnRfYXJndW1lbnRzLCBkZXNrdG9wX3dpZHRo
LCBkZXZpY2Vfd2lkdGgsIGRldmljZV9oZWlnaHQsIGRldmljZV9kcGksIGF2YWlsYWJsZV9zaXpl
KTsKQEAgLTE1NjEsMTEgKzE1NjMsMTEgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0KEV2
YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3IKICAgICB9
CiAKICAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7
Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNl
dHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICBXUk4o
Inpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5f
c2NhbGUsIHpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgaWYg
KHpvb20gPiBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgewotICAgICAgICBX
Uk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29t
X3JhbmdlLm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVs
IGlzID4gJWYgOiAlZiIsIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCB6b29t
KTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0xNjA1LDExICsxNjA3
LDExIEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBvLCBm
bG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzCiAgICAgfQogCiAgICAgaWYgKHpvb20gPCBw
cml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSkgewotICAgICAgICBXUk4oInpvb20g
bGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1p
bl9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYg
OiAlZiIsIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCB6b29tKTsKICAgICAg
ICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGlu
Z3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4g
JWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChk
b3VibGUpem9vbSk7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCBwcml2
LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwgem9vbSk7CiAgICAgICAgIHJldHVybiBF
SU5BX0ZBTFNFOwogICAgIH0KIApAQCAtMTY2MSwxMSArMTY2MywxMSBAQCBFaW5hX0Jvb2wgZXdr
X3ZpZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIGZsb2F0
IGR1cmF0aW9uLAogICAgIH0KIAogICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9y
YW5nZS5taW5fc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIs
IChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9v
bSk7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCBwcml2LT5zZXR0aW5n
cy56b29tX3JhbmdlLm1pbl9zY2FsZSwgem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNF
OwogICAgIH0KICAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3Nj
YWxlKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXBy
aXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAg
ICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5n
ZS5tYXhfc2NhbGUsIHpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAK
QEAgLTI0OTEsNyArMjQ5Myw3IEBAIEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGV3a192aWV3X3Bh
aW50X2NvbnRleHRfbmV3KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+bWFpbl9mcmFtZSwgMCk7CiAgICAgV2ViQ29y
ZTo6RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCAwKTsKLSAgICBFd2tfVmlld19QYWludF9D
b250ZXh0KiBjdHh0ID0gKEV3a19WaWV3X1BhaW50X0NvbnRleHQqKW1hbGxvYyhzaXplb2YoKmN0
eHQpKTsKKyAgICBFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0ID0gc3RhdGljX2Nhc3Q8RXdr
X1ZpZXdfUGFpbnRfQ29udGV4dCo+KG1hbGxvYyhzaXplb2YoKmN0eHQpKSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGN0eHQsIDApOwogCiAgICAgY3R4dC0+Z2MgPSBuZXcg
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KGNyKTsKQEAgLTMzNjYsNyArMzM2OCw3IEBAIHZvaWQg
ZXdrX3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0KiBvLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqIGNsaWVudCwgaW50IHNlCiAgICAgLy8gcG9wdWxhdGUgaXRlbXMKICAgICBjb25zdCBpbnQg
c2l6ZSA9IGNsaWVudC0+bGlzdFNpemUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICBFd2tfTWVudV9JdGVtKiBpdGVtID0gKEV3a19NZW51X0l0ZW0qKSBt
YWxsb2Moc2l6ZW9mKCppdGVtKSk7CisgICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0
aWNfY2FzdDxFd2tfTWVudV9JdGVtKj4obWFsbG9jKHNpemVvZigqaXRlbSkpKTsKICAgICAgICAg
aWYgKGNsaWVudC0+aXRlbUlzU2VwYXJhdG9yKGkpKQogICAgICAgICAgICAgaXRlbS0+dHlwZSA9
IEVXS19NRU5VX1NFUEFSQVRPUjsKICAgICAgICAgZWxzZSBpZiAoY2xpZW50LT5pdGVtSXNMYWJl
bChpKSkKQEAgLTMzOTgsNyArMzQwMCw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0
cm95KEV2YXNfT2JqZWN0KiBvKQogCiAgICAgdm9pZCogaXRlbXY7CiAgICAgRUlOQV9MSVNUX0ZS
RUUocHJpdi0+cG9wdXAubWVudS5pdGVtcywgaXRlbXYpIHsKLSAgICAgICAgRXdrX01lbnVfSXRl
bSogaXRlbSA9IChFd2tfTWVudV9JdGVtKilpdGVtdjsKKyAgICAgICAgRXdrX01lbnVfSXRlbSog
aXRlbSA9IHN0YXRpY19jYXN0PEV3a19NZW51X0l0ZW0qPihpdGVtdik7CiAgICAgICAgIGVpbmFf
c3RyaW5nc2hhcmVfZGVsKGl0ZW0tPnRleHQpOwogICAgICAgICBmcmVlKGl0ZW0pOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKaW5kZXggYjk5YzhhZDc5
MTc1MmNhYTg5MWEzMGViZWE5NGE0ZDBlN2ExZGY5Yy4uNWFkNjdmZWFkMzNhNjkwODU3OThlNTUz
NmE1MTVhOWFjNjUyNjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3X3NpbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3Npbmds
ZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFy
dF9hZGQoRXZhc19PYmplY3QqIG8pCiAKICAgICBfcGFyZW50X3NjLnNjLmFkZChvKTsKIAotICAg
IHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8p
OworICAgIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0
X3NtYXJ0X2RhdGFfZ2V0KG8pKTsKICAgICBpZiAoIXNkKQogICAgICAgICByZXR1cm47CiAKQEAg
LTY3LDcgKzY3LDcgQEAgc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0
X2JhY2tpbmdfc3RvcmVfYWRkKEV3a19WaWV3X1NtYXJ0X0RhdGEKIAogc3RhdGljIHZvaWQgX2V3
a192aWV3X3NpbmdsZV9zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywg
RXZhc19Db29yZCBoKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pOworICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNf
b2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pKTsKICAgICBfcGFyZW50X3NjLnNjLnJlc2l6ZShvLCB3
LCBoKTsKIAogICAgIGlmICghc2QpCkBAIC0yNTEsNyArMjUxLDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHMKICAgICAgICAgICAgICAgICBzeCwgc3kgKyBzaCArIHNyLT5keSwgc3csIC1zci0+
ZHkpOwogCiAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fdXAKLSAgICAgICAg
ICAgICAgICAoKHVpbnQzMl90KilwaXhlbHMsIC1zci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7
CisgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgLXNyLT5k
eSwgc3gsIHN5LCBzdywgc2gsIG93KTsKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2Rh
dGFfdXBkYXRlX2FkZAogICAgICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3gsIHN5
LCBzdywgc2ggKyBzci0+ZHkpOwogCkBAIC0yNjMsNyArMjYzLDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHMKICAgICAgICAgICAgICAgICBzeCwgc3ksIHN3LCBzci0+ZHkpOwogCiAgICAgICAg
ICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fZG93bgotICAgICAgICAgICAgICAgICgodWlu
dDMyX3QqKXBpeGVscywgc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCwgb3cpOworICAgICAgICAgICAg
ICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIHNyLT5keSwgc3gsIHN5LCBzdywg
c2gsIG93KTsKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAog
ICAgICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3gsIHN5ICsgc3ItPmR5LCBzdywg
c2ggLSBzci0+ZHkpOwogCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9l
d2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHMKICAgICAgICAgICAgICAgICBzeCArIHN3ICsgc3ItPmR4LCBzeSwgLXNyLT5keCwgc2gpOwog
CiAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fbGVmdAotICAgICAgICAgICAg
ICAgICgodWludDMyX3QqKXBpeGVscywgLXNyLT5keCwgc3gsIHN5LCBzdywgc2gsIG93KTsKKyAg
ICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCAtc3ItPmR4LCBz
eCwgc3ksIHN3LCBzaCwgb3cpOwogICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91
cGRhdGVfYWRkCiAgICAgICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCwgc3ksIHN3
ICsgc3ItPmR4LCBzaCk7CiAKQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
X2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0
YSogcwogICAgICAgICAgICAgICAgIHN4LCBzeSwgc3ItPmR4LCBzaCk7CiAKICAgICAgICAgICAg
IF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9yaWdodAotICAgICAgICAgICAgICAgICgodWludDMy
X3QqKXBpeGVscywgc3ItPmR4LCBzeCwgc3ksIHN3LCBzaCwgb3cpOworICAgICAgICAgICAgICAg
IChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIHNyLT5keCwgc3gsIHN5LCBzdywgc2gs
IG93KTsKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAogICAg
ICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3ggKyBzci0+ZHgsIHN5LCBzdyAtIHNy
LT5keCwgc2gpOwogCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tf
dmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHMK
ICAgICAgICAgICAgIHNyLT5keCwgc3ItPmR5LCBteCwgbXksIG13LCBtaCwgYXgsIGF5LCBhdywg
YWgsIGJ4LCBieSwgYncsIGJoKTsKIAogICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb24K
LSAgICAgICAgICAgICgodWludDMyX3QqKXBpeGVscywgc3ItPmR4LCBzci0+ZHksIHN4LCBzeSwg
c3csIHNoLCBvdyk7CisgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMp
LCBzci0+ZHgsIHNyLT5keSwgc3gsIHN5LCBzdywgc2gsIG93KTsKIAogICAgICAgICBldmFzX29i
amVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc2QtPmJhY2tpbmdfc3RvcmUsIG14LCBteSwgbXcs
IG1oKTsKICAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2QtPl9wcml2LCBheCwgYXksIGF3
LCBhaCk7CkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2lu
Z2xlX3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QKICAgICBm
b3JtYXQgPSBDQUlST19GT1JNQVRfQVJHQjMyOwogCiAgICAgc3VyZmFjZSA9IGNhaXJvX2ltYWdl
X3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhCi0gICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNo
YXIqKXBpeGVscywgZm9ybWF0LCBvdywgb2gsIG93ICogNCk7CisgICAgICAgICAgICAgICAgICAo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHBpeGVscyksIGZvcm1hdCwgb3csIG9oLCBvdyAq
IDQpOwogICAgIHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UpOwogICAgIGlm
IChzdGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKICAgICAgICAgRVJSKCJjb3VsZCBu
b3QgY3JlYXRlIHN1cmZhY2UgZnJvbSBkYXRhICVkeCVkOiAlcyIsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3X3RpbGVkLmNwcAppbmRleCA0OTc1MWJkOWQ5ZTVmNWEzMDg2YTUzYjQ4MzQ2
ZGI1OTdiYzRjNDVmLi5mODdmNDhiZDlmYTM0MGUwYjM0NjkyMTA2YWU0ZGMyNWViNTljNWU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAgc3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFV0tfVklFV19TTUFS
VF9DTEFTU19JTklUX05VTEw7CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3Jl
bmRlcl9jYih2b2lkKiBkYXRhLCBFd2tfVGlsZSogdCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFy
ZWEpCiB7Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gKEV3a19WaWV3X1ByaXZh
dGVfRGF0YSopZGF0YTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSBzdGF0aWNf
Y2FzdDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihkYXRhKTsKICAgICBFaW5hX1JlY3RhbmdsZSBy
ID0ge2FyZWEtPnggKyB0LT54LCBhcmVhLT55ICsgdC0+eSwgYXJlYS0+dywgYXJlYS0+aH07CiAK
ICAgICByZXR1cm4gZXdrX3ZpZXdfcGFpbnRfY29udGVudHMocHJpdiwgdC0+Y2Fpcm8sICZyKTsK
QEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfcmVuZGVy
X2NiKHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0LCBjb25zdCBFaW5hX1IKIAogc3RhdGljIHZvaWQq
IF9ld2tfdmlld190aWxlZF91cGRhdGVzX3Byb2Nlc3NfcHJlKHZvaWQqIGRhdGEsIEV2YXNfT2Jq
ZWN0KiBvKQogewotICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IChFd2tfVmlld19Q
cml2YXRlX0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gc3Rh
dGljX2Nhc3Q8RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKj4oZGF0YSk7CiAgICAgZXdrX3ZpZXdfbGF5
b3V0X2lmX25lZWRlZF9yZWN1cnNpdmUocHJpdik7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC01OCw4
ICs1OCw4IEBAIHN0YXRpYyBFdmFzX09iamVjdCogX2V3a192aWV3X3RpbGVkX3NtYXJ0X2JhY2tp
bmdfc3RvcmVfYWRkKEV3a19WaWV3X1NtYXJ0X0RhdGEqCiBzdGF0aWMgdm9pZAogX2V3a192aWV3
X3RpbGVkX2NvbnRlbnRzX3NpemVfY2hhbmdlZF9jYih2b2lkKiBkYXRhLCBFdmFzX09iamVjdCog
bywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0Nvb3JkKiBzaXplID0gKEV2YXNfQ29v
cmQqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdf
U21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0Nvb3JkKiBzaXplID0gc3RhdGljX2Nhc3Q8RXZh
c19Db29yZCo+KGV2ZW50X2luZm8pOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3Rh
dGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogCiAgICAgZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfY29udGVudHNfcmVzaXplCiAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwg
c2l6ZVswXSwgc2l6ZVsxXSk7CkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmll
d190aWxlZF9zbWFydF9hZGQoRXZhc19PYmplY3QqIG8pCiAKICAgICBfcGFyZW50X3NjLnNjLmFk
ZChvKTsKIAotICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0
X2RhdGFfZ2V0KG8pOworICAgIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+
KGV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pKTsKICAgICBpZiAoIXNkKQogICAgICAgICBy
ZXR1cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108967</attachid>
            <date>2011-09-27 22:53:04 -0700</date>
            <delta_ts>2011-09-29 09:29:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68321-20110928145303.patch</filename>
            <type>text/plain</type>
            <size>26741</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYxOTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBmZTFiOTAyOGIz
YzU0ZTRhOGFmNjRmNWM2NjhkZGMxYzEyZGViYTc5Li41MWEzYWMwM2NjM2UzYTc3NTYwMjliNjU1
M2M0NjUwOTYxMTJkOTk5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEt
MDktMjcgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBVc2UgQysrIHR5cGUgY2FzdCBpbnN0ZWFkIG9mIEMgc3R5bGUgdHlwZSBjYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODMyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBz
ZWNvbmQgc3RlcCBpbiBvcmRlciB0byBiZSBtb3JlIGNvbXBsaWFudCB3aXRoIFdlYktpdCBjb2Rp
bmcgc3R5bGUuCisgICAgICAgIFRoZSBzZWNvbmQgc3RlcCBpcyB0byBjaGFuZ2UgQy10eXBlIGNh
c3Rpbmcgd2l0aCBDKystdHlwZSBjYXN0aW5nIGluIC5jcHAgZmlsZXMuCisKKyAgICAgICAgSW4g
YWRkaXRpb24sIHJlbWFpbmVkIGVmbCBzdHlsZSAnKicgcG9pbnRlciBwbGFjZW1lbnRzIGFyZSBt
b3ZlZCB0byB0aGUgcmlnaHQgcGxhY2UgYXMgd2VsbC4KKworICAgICAgICAqIGV3ay9ld2tfYXV0
aF9zb3VwLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKKyAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5j
cHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKKwogMjAxMS0wOS0yNyAgUmFw
aGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbRUZM
XSBNYWtlIGV3a192aWV3IGVtaXQgdGhlICJsb2FkLGRvY3VtZW50LGZpbmlzaGVkIiBzaWduYWwu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKaW5kZXggMDlmM2QwZGIxYzVk
NzhjODE1ZGEyZTdlM2QxODRhNTRjZTlhYmQ4Yi4uZmIzNmE5MTU5ZjI3YjI3MmJhMWYzMDI2NDZk
Y2M3ZjAxZmYxNWFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRo
X3NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcApA
QCAtNzksNyArNzksNyBAQCB2b2lkIGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0
IGNoYXIqIHVzZXJuYW1lLCBjb25zdCBjaGFyKiBwYXNzd29yZCwgdgogICAgIGlmICghZGF0YSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgRXdrX0F1dGhfRGF0YSogYXV0aF9kYXRhID0gKEV3a19B
dXRoX0RhdGEqKWRhdGE7CisgICAgRXdrX0F1dGhfRGF0YSogYXV0aF9kYXRhID0gc3RhdGljX2Nh
c3Q8RXdrX0F1dGhfRGF0YSo+KGRhdGEpOwogICAgIHNvdXBfYXV0aF9hdXRoZW50aWNhdGUoYXV0
aF9kYXRhLT5hdXRoLCB1c2VybmFtZSwgcGFzc3dvcmQpOwogICAgIHNvdXBfc2Vzc2lvbl91bnBh
dXNlX21lc3NhZ2UoYXV0aF9kYXRhLT5zZXNzaW9uLCBhdXRoX2RhdGEtPm1zZyk7CiAgICAgZnJl
ZV9hdXRoX2RhdGEoYXV0aF9kYXRhKTsKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2Vz
c2lvbl9hdXRoZW50aWNhdGUoU291cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBtc2cs
IFNvdXBBdXQKICAgICBpZiAoIWV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRoX2RhdGEgPSAoRXdrX0F1dGhfRGF0YSopY2FsbG9jKDEsIHNp
emVvZihFd2tfQXV0aF9EYXRhKSk7CisgICAgYXV0aF9kYXRhID0gc3RhdGljX2Nhc3Q8RXdrX0F1
dGhfRGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX0F1dGhfRGF0YSkpKTsKIAogICAgIGlmICgh
YXV0aF9kYXRhKSB7CiAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX0F1
dGhfRGF0YSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0
bWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAppbmRl
eCA4NTc5MjZiNzg5NjhjNGQ0MTk0MGYzZDQxZGZlY2JjMjA4OTgyZTIwLi5hYTE2MTlmZDkxOGYx
MjYzMGEwMTcwMjJiNmVkZmUzZTczY2NjOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2NvbnRleHRtZW51LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIEV3a19Db250ZXh0X01lbnVfSXRl
bSogZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0
eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdr
X0NvbnRleHRfTWVudV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4dF9NZW51KiBzdWJtZW51LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIqIHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCiB7Ci0gICAg
RXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtID0gKEV3a19Db250ZXh0X01lbnVfSXRlbSopIG1h
bGxvYyhzaXplb2YoKml0ZW0pKTsKKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0gPSBz
dGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51X0l0ZW0qPihtYWxsb2Moc2l6ZW9mKCppdGVtKSkp
OwogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19mcmFtZS5jcHAKaW5kZXggYzRiNzk5MDI3OTdlYjg5ZTA5OGI1OGQ1MjJkNjhiMzk0ZjNhMGFh
Ni4uZjA3ZjBhOGUwMDJkZTNkZTliMjM2M2Q5NWJhM2RhMDIxNTNmNzBlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdHJ1Y3QgRWluYV9JdGVy
YXRvcl9Fd2tfRnJhbWUgewogI2VuZGlmCiAKICNkZWZpbmUgRVdLX0ZSQU1FX1NEX0dFVChvLCBw
dHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRXdrX0ZyYW1lX1NtYXJ0
X0RhdGEgKnB0ciA9IChFd2tfRnJhbWVfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0
YV9nZXQobykKKyAgICBFd2tfRnJhbWVfU21hcnRfRGF0YSogcHRyID0gc3RhdGljX2Nhc3Q8RXdr
X0ZyYW1lX1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKSkKIAogI2Rl
ZmluZSBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICBcCiAg
ICAgRVdLX0ZSQU1FX1RZUEVfQ0hFQ0sobywgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgIFwK
QEAgLTE4MSw3ICsxODEsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2FkZChFdmFz
X09iamVjdCogbykKICAgICBFV0tfRlJBTUVfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmICghc2Qp
IHsKLSAgICAgICAgc2QgPSAoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqKWNhbGxvYygxLCBzaXplb2Yo
RXdrX0ZyYW1lX1NtYXJ0X0RhdGEpKTsKKyAgICAgICAgc2QgPSBzdGF0aWNfY2FzdDxFd2tfRnJh
bWVfU21hcnRfRGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEpKSk7
CiAgICAgICAgIGlmICghc2QpIHsKICAgICAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxs
b2NhdGUgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEiKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIz
MywxNCArMjMzLDE0IEBAIHN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfYWRkKEV2YXNfT2Jq
ZWN0KiBvKQogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfZGVsKEV2
YXNfT2JqZWN0ICpvKQorc3RhdGljIHZvaWQgX2V3a19mcmFtZV9zbWFydF9kZWwoRXZhc19PYmpl
Y3QqIG8pCiB7CiAgICAgV1JOKCJvPSVwIiwgbyk7IC8vIFhYWCBSRU1PVkUgTUUgTEFURVIKICAg
ICBFV0tfRlJBTUVfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmIChzZCkgewogICAgICAgICBpZiAo
c2QtPmZyYW1lKSB7Ci0gICAgICAgICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCAq
ZmxjID0gX2V3a19mcmFtZV9sb2FkZXJfZWZsX2dldChzZC0+ZnJhbWUpOworICAgICAgICAgICAg
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmwqIGZsYyA9IF9ld2tfZnJhbWVfbG9hZGVyX2Vm
bF9nZXQoc2QtPmZyYW1lKTsKICAgICAgICAgICAgIGZsYy0+c2V0V2ViRnJhbWUoMCk7CiAgICAg
ICAgICAgICBzZC0+ZnJhbWUtPmxvYWRlcigpLT5kZXRhY2hGcm9tUGFyZW50KCk7CiAgICAgICAg
ICAgICBzZC0+ZnJhbWUtPmxvYWRlcigpLT5jYW5jZWxBbmRDbGVhcigpOwpAQCAtMzAxLDggKzMw
MSw4IEBAIEV2YXNfT2JqZWN0KiBld2tfZnJhbWVfdmlld19nZXQoY29uc3QgRXZhc19PYmplY3Qq
IG8pCiBFaW5hX0l0ZXJhdG9yKiBld2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV3KEV2YXNf
T2JqZWN0KiBvKQogewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsK
LSAgICBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSogaXQgPSAoRWluYV9JdGVyYXRvcl9Fd2tfRnJh
bWUqKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxvYygxLCBzaXplb2Yo
RWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUpKTsKKyAgICBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSog
aXQgPSBzdGF0aWNfY2FzdDxFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSo+CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGNhbGxvYygxLCBzaXplb2YoRWluYV9JdGVyYXRvcl9Fd2tf
RnJhbWUpKSk7CiAgICAgaWYgKCFpdCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTY4Niw3ICs2
ODYsNyBAQCBFd2tfSGl0X1Rlc3QqIGV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19P
YmplY3QqIG8sIGludCB4LCBpbnQgeSkKICAgICBpZiAoIXJlc3VsdC5pbm5lck5vZGUoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBFd2tfSGl0X1Rlc3QqIGhpdF90ZXN0ID0gKEV3a19IaXRf
VGVzdCopY2FsbG9jKDEsIHNpemVvZihFd2tfSGl0X1Rlc3QpKTsKKyAgICBFd2tfSGl0X1Rlc3Qq
IGhpdF90ZXN0ID0gc3RhdGljX2Nhc3Q8RXdrX0hpdF9UZXN0Kj4oY2FsbG9jKDEsIHNpemVvZihF
d2tfSGl0X1Rlc3QpKSk7CiAgICAgaWYgKCFoaXRfdGVzdCkgewogICAgICAgICBDUklUSUNBTCgi
Q291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgaGl0IHRlc3QuIik7CiAgICAgICAgIHJldHVy
biAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKaW5kZXggOWFlN2FhMTI1Y2Ix
YWI2NjNhOWY0ZmY1MTAxY2MwMmMxYjVlMGQzYS4uNjJkNzc0Mjk4NmMyM2EyMjI0OGIzOGVhNzFi
MTQ5NDk0MGUxNzk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0
b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCkBAIC04
Myw3ICs4Myw3IEBAIHN0YXRpYyBpbmxpbmUgRXdrX0hpc3RvcnlfSXRlbSogX2V3a19oaXN0b3J5
X2l0ZW1fbmV3KFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjb3JlCiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KIAotICAgIGl0ZW0gPSAoRXdrX0hpc3RvcnlfSXRlbSopY2FsbG9jKDEsIHNpemVvZihF
d2tfSGlzdG9yeV9JdGVtKSk7CisgICAgaXRlbSA9IHN0YXRpY19jYXN0PEV3a19IaXN0b3J5X0l0
ZW0qPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19IaXN0b3J5X0l0ZW0pKSk7CiAgICAgaWYgKCFpdGVt
KSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgYWxsb2NhdGUgaXRlbSBtZW1vcnkuIik7
CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjcxLDcgKzI3MSw3IEBAIGNvbnN0IGNoYXIqIGV3a19o
aXN0b3J5X2l0ZW1fdGl0bGVfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiB7CiAg
ICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CiAg
ICAgLy8gaGlkZSB0aGUgZm9sbG93aW5nIG9wdGltemF0aW9uIGZyb20gb3V0c2lkZQotICAgIEV3
a19IaXN0b3J5X0l0ZW0qIGkgPSAoRXdrX0hpc3RvcnlfSXRlbSopaXRlbTsKKyAgICBFd2tfSGlz
dG9yeV9JdGVtKiBpID0gY29uc3RfY2FzdDxFd2tfSGlzdG9yeV9JdGVtKj4oaXRlbSk7CiAgICAg
ZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZpLT50aXRsZSwgY29yZS0+dGl0bGUoKS51dGY4KCku
ZGF0YSgpKTsKICAgICByZXR1cm4gaS0+dGl0bGU7CiB9CkBAIC0yODAsNyArMjgwLDcgQEAgY29u
c3QgY2hhciogZXdrX2hpc3RvcnlfaXRlbV90aXRsZV9hbHRlcm5hdGVfZ2V0KGNvbnN0IEV3a19I
aXN0b3J5X0l0ZW0qIGl0ZW0pCiB7CiAgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9S
RVRVUk4oaXRlbSwgY29yZSwgMCk7CiAgICAgLy8gaGlkZSB0aGUgZm9sbG93aW5nIG9wdGltemF0
aW9uIGZyb20gb3V0c2lkZQotICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSAoRXdrX0hpc3Rvcnlf
SXRlbSopaXRlbTsKKyAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gY29uc3RfY2FzdDxFd2tfSGlz
dG9yeV9JdGVtKj4oaXRlbSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZpLT5hbHRl
cm5hdGVfdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUtPmFsdGVybmF0
ZVRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIGktPmFsdGVybmF0ZV90aXRsZTsK
QEAgLTI5OCw3ICsyOTgsNyBAQCBjb25zdCBjaGFyKiBld2tfaGlzdG9yeV9pdGVtX3VyaV9nZXQo
Y29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKIHsKICAgICBFV0tfSElTVE9SWV9JVEVNX0NP
UkVfR0VUX09SX1JFVFVSTihpdGVtLCBjb3JlLCAwKTsKICAgICAvLyBoaWRlIHRoZSBmb2xsb3dp
bmcgb3B0aW16YXRpb24gZnJvbSBvdXRzaWRlCi0gICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IChF
d2tfSGlzdG9yeV9JdGVtKilpdGVtOworICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSBjb25zdF9j
YXN0PEV3a19IaXN0b3J5X0l0ZW0qPigoaXRlbSkpOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVw
bGFjZSgmaS0+dXJpLCBjb3JlLT51cmxTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1
cm4gaS0+dXJpOwogfQpAQCAtMzA3LDcgKzMwNyw3IEBAIGNvbnN0IGNoYXIqIGV3a19oaXN0b3J5
X2l0ZW1fdXJpX29yaWdpbmFsX2dldChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQogewog
ICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUsIDApOwog
ICAgIC8vIGhpZGUgdGhlIGZvbGxvd2luZyBvcHRpbXphdGlvbiBmcm9tIG91dHNpZGUKLSAgICBF
d2tfSGlzdG9yeV9JdGVtKiBpID0gKEV3a19IaXN0b3J5X0l0ZW0qKWl0ZW07CisgICAgRXdrX0hp
c3RvcnlfSXRlbSogaSA9IGNvbnN0X2Nhc3Q8RXdrX0hpc3RvcnlfSXRlbSo+KGl0ZW0pOwogICAg
IGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmaS0+b3JpZ2luYWxfdXJpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb3JlLT5vcmlnaW5hbFVSTFN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgIHJldHVybiBpLT5vcmlnaW5hbF91cmk7CkBAIC0zODMsNyArMzgzLDcgQEAgRXdrX0hp
c3RvcnkqIGV3a19oaXN0b3J5X25ldyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBjb3Jl
KQogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb3JlLCAwKTsKICAgICBEQkco
ImNvcmU9JXAiLCBjb3JlKTsKIAotICAgIGhpc3RvcnkgPSAoRXdrX0hpc3RvcnkqKW1hbGxvYyhz
aXplb2YoRXdrX0hpc3RvcnkpKTsKKyAgICBoaXN0b3J5ID0gc3RhdGljX2Nhc3Q8RXdrX0hpc3Rv
cnkqPihtYWxsb2Moc2l6ZW9mKEV3a19IaXN0b3J5KSkpOwogICAgIGlmICghaGlzdG9yeSkgewog
ICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIGhpc3RvcnkgbWVtb3J5LiIpOwog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
dmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IGQ2MzUx
MTk3NDFkOTZiMGUyZDhkNDVjMmQwNmNjNDQwOWIwNDdhMjEuLjk3MGM5MGY2ZTAxYjhlYTc4ZGUy
YWYyNzhmMjE2N2YyMTY5MzlhZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAt
MjA3LDcgKzIwNyw3IEBAIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICNlbmRpZgog
CiAjZGVmaW5lIEVXS19WSUVXX1NEX0dFVChvLCBwdHIpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEgKnB0ciA9IChFd2tfVmlld19TbWFy
dF9EYXRhKilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKQorICAgIEV3a19WaWV3X1NtYXJ0
X0RhdGEqIHB0ciA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVj
dF9zbWFydF9kYXRhX2dldChvKSkKIAogI2RlZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KG8sIHB0ciwgLi4uKSAgICAgICAgICBcCiAgICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCBfX1ZB
X0FSR1NfXyk7ICAgICAgICAgICAgICAgIFwKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgRWlu
YV9Cb29sIF9ld2tfdmlld19yZXBhaW50c19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2LCBzaXplX3QgcwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgcHJp
di0+cmVwYWludHMuYWxsb2NhdGVkID0gc2l6ZTsKLSAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9
IChFaW5hX1JlY3RhbmdsZSopdG1wOworICAgIHByaXYtPnJlcGFpbnRzLmFycmF5ID0gc3RhdGlj
X2Nhc3Q8RWluYV9SZWN0YW5nbGUqPih0bXApOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAK
QEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zY3JvbGxzX3Jl
c2l6ZShFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYsIHNpemVfdCBzaQogICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgcHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQgPSBzaXpl
OwotICAgIHByaXYtPnNjcm9sbHMuYXJyYXkgPSAoRXdrX1Njcm9sbF9SZXF1ZXN0Kil0bXA7Cisg
ICAgcHJpdi0+c2Nyb2xscy5hcnJheSA9IHN0YXRpY19jYXN0PEV3a19TY3JvbGxfUmVxdWVzdCo+
KHRtcCk7CiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KIApAQCAtNDcwLDcgKzQ3MCw3IEBAIHN0
YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFd2tf
Vmlld19TbWFydF9EYXRhKiBzZCwKIC8vIEV2ZW50IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogc3RhdGljIHZvaWQgX2V3a192
aWV3X29uX2ZvY3VzX2luKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lk
KiBldmVudF9pbmZvKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNf
Y2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aS0+Zm9jdXNfaW4pOwogICAgIHNkLT5hcGktPmZvY3VzX2luKHNkKTsKQEAgLTQ3OCw3ICs0Nzgs
NyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfaW4odm9pZCogZGF0YSwgRXZhcyog
ZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25f
Zm9jdXNfb3V0KHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVu
dF9pbmZvKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0
X0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxF
d2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9j
dXNfb3V0KTsKICAgICBzZC0+YXBpLT5mb2N1c19vdXQoc2QpOwpAQCAtNDg2LDggKzQ4Niw4IEBA
IHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19vdXQodm9pZCogZGF0YSwgRXZhcyogZSwg
RXZhc19PYmplY3QqIG8sIHZvaWQqIGV2CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3Vz
ZV93aGVlbCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRf
aW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX1doZWVsKiBldiA9IChFdmFzX0V2ZW50X01v
dXNlX1doZWVsKilldmVudF9pbmZvOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3
a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYg
PSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX1doZWVsKj4oZXZlbnRfaW5mbyk7CisgICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRh
Kj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2Vfd2hlZWwpOwogICAgIHNk
LT5hcGktPm1vdXNlX3doZWVsKHNkLCBldik7CkBAIC00OTUsOCArNDk1LDggQEAgc3RhdGljIHZv
aWQgX2V3a192aWV3X29uX21vdXNlX3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2Jq
ZWN0KiBvLCB2b2lkKgogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bih2b2lk
KiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAg
ICBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfRG93biopZXZl
bnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9E
YXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biogZXYgPSBzdGF0aWNfY2FzdDxF
dmFzX0V2ZW50X01vdXNlX0Rvd24qPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV9kb3duKTsKICAgICBzZC0+YXBpLT5tb3VzZV9kb3du
KHNkLCBldik7CkBAIC01MDQsOCArNTA0LDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21v
dXNlX2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGUKIAog
c3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2
YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91c2Vf
VXAqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfVXAqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2
ZW50X01vdXNlX1VwKiBldiA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfTW91c2VfVXAqPihldmVu
dF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19W
aWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
ZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV91
cCk7CiAgICAgc2QtPmFwaS0+bW91c2VfdXAoc2QsIGV2KTsKQEAgLTUxMyw4ICs1MTMsOCBAQCBz
dGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfdXAodm9pZCogZGF0YSwgRXZhcyogZSwgRXZh
c19PYmplY3QqIG8sIHZvaWQqIGV2ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vf
bW92ZSh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5m
bykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2Vf
TW92ZSopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmll
d19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYgPSBzdGF0
aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX01vdmUqPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRh
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV9tb3ZlKTsKICAgICBzZC0+YXBpLT5t
b3VzZV9tb3ZlKHNkLCBldik7CkBAIC01MjIsOCArNTIyLDggQEAgc3RhdGljIHZvaWQgX2V3a192
aWV3X29uX21vdXNlX21vdmUodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZv
aWQqIGUKIAogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2
YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZl
bnRfS2V5X0Rvd24qIGV2ID0gKEV2YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50X2luZm87Ci0gICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAg
ICBFdmFzX0V2ZW50X0tleV9Eb3duKiBldiA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfS2V5X0Rv
d24qPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19j
YXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBp
LT5rZXlfZG93bik7CiAgICAgc2QtPmFwaS0+a2V5X2Rvd24oc2QsIGV2KTsKQEAgLTUzMSw4ICs1
MzEsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X2Rvd24odm9pZCogZGF0YSwgRXZh
cyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
b25fa2V5X3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVu
dF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfS2V5X1VwKiBldiA9IChFdmFzX0V2ZW50X0tleV9V
cCopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19T
bWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRfS2V5X1VwKiBldiA9IHN0YXRpY19jYXN0
PEV2YXNfRXZlbnRfS2V5X1VwKj4oZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaS0+a2V5X3VwKTsKICAgICBzZC0+YXBpLT5rZXlfdXAoc2QsIGV2KTsK
QEAgLTU1NSw3ICs1NTUsNyBAQCBzdGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0g
RVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CiBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0KLSAgICAgICAgKEV3a19WaWV3X1ByaXZhdGVfRGF0
YSopY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0RhdGEpKTsKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKj4oY2FsbG9jKDEsIHNpemVvZihFd2tfVmll
d19Qcml2YXRlX0RhdGEpKSk7CiAgICAgQXRvbWljU3RyaW5nIHM7CiAgICAgV2ViQ29yZTo6S1VS
TCB1cmw7CiAKQEAgLTcyNCwxMiArNzI0LDEyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9hZGQoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgY29uc3QgRXZhc19TbWFydCogc21hcnQgPSBl
dmFzX29iamVjdF9zbWFydF9zbWFydF9nZXQobyk7CiAgICAgY29uc3QgRXZhc19TbWFydF9DbGFz
cyogc2MgPSBldmFzX3NtYXJ0X2NsYXNzX2dldChzbWFydCk7Ci0gICAgY29uc3QgRXdrX1ZpZXdf
U21hcnRfQ2xhc3MqIGFwaSA9IChjb25zdCBFd2tfVmlld19TbWFydF9DbGFzcyopc2M7CisgICAg
Y29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
RXdrX1ZpZXdfU21hcnRfQ2xhc3MqPihzYyk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oYXBpLT5iYWNraW5nX3N0b3JlX2FkZCk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsK
IAogICAgIGlmICghc2QpIHsKLSAgICAgICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopY2Fs
bG9jKDEsIHNpemVvZihFd2tfVmlld19TbWFydF9EYXRhKSk7CisgICAgICAgIHNkID0gc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21h
cnRfRGF0YSkpKTsKICAgICAgICAgaWYgKCFzZCkgewogICAgICAgICAgICAgQ1JJVElDQUwoImNv
dWxkIG5vdCBhbGxvY2F0ZSBFd2tfVmlld19TbWFydF9EYXRhIik7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC05MjYsMTIgKzkyNiwxMiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFy
dF96b29tX3NldChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwgZmxvYXQgem9vbSwgRQogICAgIGV3
a19mcmFtZV9zY3JvbGxfcG9zX2dldChzZC0+bWFpbl9mcmFtZSwgJngsICZ5KTsKIAogICAgIGlm
ICh3ICsgc2QtPnZpZXcudyA+IDApCi0gICAgICAgIHB4ID0gKGRvdWJsZSkoeCArIGN4KSAvICh3
ICsgc2QtPnZpZXcudyk7CisgICAgICAgIHB4ID0gKHggKyBjeCkgLyAodyArIHNkLT52aWV3Lncp
OwogICAgIGVsc2UKICAgICAgICAgcHggPSAwLjA7CiAKICAgICBpZiAoaCArIHNkLT52aWV3Lmgg
PiAwKQotICAgICAgICBweSA9IChkb3VibGUpKHkgKyBjeSkgLyAoaCArIHNkLT52aWV3LmgpOwor
ICAgICAgICBweSA9ICh5ICsgY3kpIC8gKGggKyBzZC0+dmlldy5oKTsKICAgICBlbHNlCiAgICAg
ICAgIHB5ID0gMC4wOwogCkBAIC0xMDA0LDcgKzEwMDQsNyBAQCBzdGF0aWMgZmxvYXQgX2V3a192
aWV3X3pvb21fYW5pbWF0ZWRfY3VycmVudChFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYpCiAK
IHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3pvb21fYW5pbWF0b3JfY2Iodm9pZCogZGF0YSkK
IHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilk
YXRhOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdf
U21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEV2YXNfQ29vcmQgY3gsIGN5OwogICAgIEVXS19WSUVX
X1BSSVZfR0VUKHNkLCBwcml2KTsKICAgICBkb3VibGUgbm93ID0gZWNvcmVfbG9vcF90aW1lX2dl
dCgpOwpAQCAtMTA0OCwxMSArMTA0OCwxMyBAQCBzdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoY29uc3QgRQogICAg
IGludCBkZXNrdG9wX3dpZHRoID0gOTgwOwogICAgIGludCBkZXZpY2VfZHBpID0gZXdrX3V0aWxf
ZHBpX2dldCgpOwogCi0gICAgaW50IGF2YWlsYWJsZV93aWR0aCA9IChpbnQpIHByaXYtPnBhZ2Ut
PmNocm9tZSgpLT5jbGllbnQoKS0+cGFnZVJlY3QoKS53aWR0aCgpOwotICAgIGludCBhdmFpbGFi
bGVfaGVpZ2h0ID0gKGludCkgcHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wYWdlUmVj
dCgpLmhlaWdodCgpOworICAgIFdlYkNvcmU6OkludFJlY3QgYXZhaWxhYmxlX3JlY3QgPSBlbmNs
b3NpbmdJbnRSZWN0KHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFnZVJlY3QoKSk7
CisgICAgaW50IGF2YWlsYWJsZV93aWR0aCA9IGF2YWlsYWJsZV9yZWN0LndpZHRoKCk7CisgICAg
aW50IGF2YWlsYWJsZV9oZWlnaHQgPSBhdmFpbGFibGVfcmVjdC5oZWlnaHQoKTsKIAotICAgIGlu
dCBkZXZpY2Vfd2lkdGggPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPndp
bmRvd1JlY3QoKS53aWR0aCgpOwotICAgIGludCBkZXZpY2VfaGVpZ2h0ID0gKGludCkgcHJpdi0+
cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCk7CisgICAgV2Vi
Q29yZTo6SW50UmVjdCBkZXZpY2VfcmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocHJpdi0+cGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkpOworICAgIGludCBkZXZpY2Vfd2lkdGgg
PSBkZXZpY2VfcmVjdC53aWR0aCgpOworICAgIGludCBkZXZpY2VfaGVpZ2h0ID0gZGV2aWNlX3Jl
Y3QuaGVpZ2h0KCk7CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIGF2YWlsYWJsZV9zaXplID0gV2Vi
Q29yZTo6SW50U2l6ZShhdmFpbGFibGVfd2lkdGgsIGF2YWlsYWJsZV9oZWlnaHQpOwogICAgIFdl
YkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gV2ViQ29yZTo6Y29tcHV0ZVZp
ZXdwb3J0QXR0cmlidXRlcyhwcml2LT52aWV3cG9ydF9hcmd1bWVudHMsIGRlc2t0b3Bfd2lkdGgs
IGRldmljZV93aWR0aCwgZGV2aWNlX2hlaWdodCwgZGV2aWNlX2RwaSwgYXZhaWxhYmxlX3NpemUp
OwpAQCAtMTU2MSwxMSArMTU2MywxMSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZh
c19PYmplY3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcgogICAgIH0K
IAogICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUpIHsK
LSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0
dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CisgICAgICAgIFdSTigi
em9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9z
Y2FsZSwgem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KICAgICBpZiAo
em9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlKSB7Ci0gICAgICAgIFdS
Tigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICBXUk4oInpvb20gbGV2ZWwg
aXMgPiAlZiA6ICVmIiwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIHpvb20p
OwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAgLTE2MDUsMTEgKzE2MDcs
MTEgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIG8sIGZs
b2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXMKICAgICB9CiAKICAgICBpZiAoem9vbSA8IHBy
aXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7Ci0gICAgICAgIFdSTigiem9vbSBs
ZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWlu
X3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6
ICVmIiwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIHpvb20pOwogICAgICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5n
cy56b29tX3JhbmdlLm1heF9zY2FsZSkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAl
ZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwgKGRv
dWJsZSl6b29tKTsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIHByaXYt
PnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCB6b29tKTsKICAgICAgICAgcmV0dXJuIEVJ
TkFfRkFMU0U7CiAgICAgfQogCkBAIC0xNjYxLDExICsxNjYzLDExIEBAIEVpbmFfQm9vbCBld2tf
dmlld196b29tX2FuaW1hdGVkX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgZmxvYXQg
ZHVyYXRpb24sCiAgICAgfQogCiAgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tX3Jh
bmdlLm1pbl9zY2FsZSkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwg
KGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6b29t
KTsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIHByaXYtPnNldHRpbmdz
Lnpvb21fcmFuZ2UubWluX3NjYWxlLCB6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CiAgICAgfQogICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2Nh
bGUpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJp
di0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3VibGUpem9vbSk7CisgICAgICAg
IFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCBwcml2LT5zZXR0aW5ncy56b29tX3Jhbmdl
Lm1heF9zY2FsZSwgem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApA
QCAtMjQ5MSw3ICsyNDkzLDcgQEAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogZXdrX3ZpZXdfcGFp
bnRfY29udGV4dF9uZXcoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LAogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChwcml2LT5tYWluX2ZyYW1lLCAwKTsKICAgICBXZWJDb3Jl
OjpGcmFtZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIDApOwotICAgIEV3a19WaWV3X1BhaW50X0Nv
bnRleHQqIGN0eHQgPSAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCopbWFsbG9jKHNpemVvZigqY3R4
dCkpOworICAgIEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQgPSBzdGF0aWNfY2FzdDxFd2tf
Vmlld19QYWludF9Db250ZXh0Kj4obWFsbG9jKHNpemVvZigqY3R4dCkpKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY3R4dCwgMCk7CiAKICAgICBjdHh0LT5nYyA9IG5ldyBX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQoY3IpOwpAQCAtMzM2Niw3ICszMzY4LDcgQEAgdm9pZCBl
d2tfdmlld19wb3B1cF9uZXcoRXZhc19PYmplY3QqIG8sIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVu
dCogY2xpZW50LCBpbnQgc2UKICAgICAvLyBwb3B1bGF0ZSBpdGVtcwogICAgIGNvbnN0IGludCBz
aXplID0gY2xpZW50LT5saXN0U2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7Ci0gICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSAoRXdrX01lbnVfSXRlbSopIG1h
bGxvYyhzaXplb2YoKml0ZW0pKTsKKyAgICAgICAgRXdrX01lbnVfSXRlbSogaXRlbSA9IHN0YXRp
Y19jYXN0PEV3a19NZW51X0l0ZW0qPihtYWxsb2Moc2l6ZW9mKCppdGVtKSkpOwogICAgICAgICBp
ZiAoY2xpZW50LT5pdGVtSXNTZXBhcmF0b3IoaSkpCiAgICAgICAgICAgICBpdGVtLT50eXBlID0g
RVdLX01FTlVfU0VQQVJBVE9SOwogICAgICAgICBlbHNlIGlmIChjbGllbnQtPml0ZW1Jc0xhYmVs
KGkpKQpAQCAtMzM5OCw3ICszNDAwLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX2Rlc3Ry
b3koRXZhc19PYmplY3QqIG8pCiAKICAgICB2b2lkKiBpdGVtdjsKICAgICBFSU5BX0xJU1RfRlJF
RShwcml2LT5wb3B1cC5tZW51Lml0ZW1zLCBpdGVtdikgewotICAgICAgICBFd2tfTWVudV9JdGVt
KiBpdGVtID0gKEV3a19NZW51X0l0ZW0qKWl0ZW12OworICAgICAgICBFd2tfTWVudV9JdGVtKiBp
dGVtID0gc3RhdGljX2Nhc3Q8RXdrX01lbnVfSXRlbSo+KGl0ZW12KTsKICAgICAgICAgZWluYV9z
dHJpbmdzaGFyZV9kZWwoaXRlbS0+dGV4dCk7CiAgICAgICAgIGZyZWUoaXRlbSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAppbmRleCBiOTljOGFkNzkx
NzUyY2FhODkxYTMwZWJlYTk0YTRkMGU3YTFkZjljLi41YWQ2N2ZlYWQzM2E2OTA4NTc5OGU1NTM2
YTUxNWE5YWM2NTI2OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXdfc2luZ2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xl
LmNwcApAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0
X2FkZChFdmFzX09iamVjdCogbykKIAogICAgIF9wYXJlbnRfc2Muc2MuYWRkKG8pOwogCi0gICAg
c2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobyk7
CisgICAgc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rf
c21hcnRfZGF0YV9nZXQobykpOwogICAgIGlmICghc2QpCiAgICAgICAgIHJldHVybjsKIApAQCAt
NjcsNyArNjcsNyBAQCBzdGF0aWMgRXZhc19PYmplY3QqIF9ld2tfdmlld19zaW5nbGVfc21hcnRf
YmFja2luZ19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YQogCiBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfc2luZ2xlX3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBF
dmFzX0Nvb3JkIGgpCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdf
U21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobyk7CisgICAgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19v
YmplY3Rfc21hcnRfZGF0YV9nZXQobykpOwogICAgIF9wYXJlbnRfc2Muc2MucmVzaXplKG8sIHcs
IGgpOwogCiAgICAgaWYgKCFzZCkKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRf
RGF0YSogcwogICAgICAgICAgICAgICAgIHN4LCBzeSArIHNoICsgc3ItPmR5LCBzdywgLXNyLT5k
eSk7CiAKICAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cAotICAgICAgICAg
ICAgICAgICgodWludDMyX3QqKXBpeGVscywgLXNyLT5keSwgc3gsIHN5LCBzdywgc2gsIG93KTsK
KyAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCAtc3ItPmR5
LCBzeCwgc3ksIHN3LCBzaCwgb3cpOwogICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0
YV91cGRhdGVfYWRkCiAgICAgICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCwgc3ks
IHN3LCBzaCArIHNyLT5keSk7CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgaW5saW5lIHZv
aWQgX2V3a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRf
RGF0YSogcwogICAgICAgICAgICAgICAgIHN4LCBzeSwgc3csIHNyLT5keSk7CiAKICAgICAgICAg
ICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9kb3duCi0gICAgICAgICAgICAgICAgKCh1aW50
MzJfdCopcGl4ZWxzLCBzci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7CisgICAgICAgICAgICAg
ICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgc3ItPmR5LCBzeCwgc3ksIHN3LCBz
aCwgb3cpOwogICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCiAg
ICAgICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCwgc3kgKyBzci0+ZHksIHN3LCBz
aCAtIHNyLT5keSk7CiAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3
a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSog
cwogICAgICAgICAgICAgICAgIHN4ICsgc3cgKyBzci0+ZHgsIHN5LCAtc3ItPmR4LCBzaCk7CiAK
ICAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9sZWZ0Ci0gICAgICAgICAgICAg
ICAgKCh1aW50MzJfdCopcGl4ZWxzLCAtc3ItPmR4LCBzeCwgc3ksIHN3LCBzaCwgb3cpOworICAg
ICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIC1zci0+ZHgsIHN4
LCBzeSwgc3csIHNoLCBvdyk7CiAgICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3Vw
ZGF0ZV9hZGQKICAgICAgICAgICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIHN4LCBzeSwgc3cg
KyBzci0+ZHgsIHNoKTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBf
ZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRh
KiBzCiAgICAgICAgICAgICAgICAgc3gsIHN5LCBzci0+ZHgsIHNoKTsKIAogICAgICAgICAgICAg
X2V3a192aWV3XzRiX21vdmVfcmVnaW9uX3JpZ2h0Ci0gICAgICAgICAgICAgICAgKCh1aW50MzJf
dCopcGl4ZWxzLCBzci0+ZHgsIHN4LCBzeSwgc3csIHNoLCBvdyk7CisgICAgICAgICAgICAgICAg
KHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgc3ItPmR4LCBzeCwgc3ksIHN3LCBzaCwg
b3cpOwogICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCiAgICAg
ICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCArIHNyLT5keCwgc3ksIHN3IC0gc3It
PmR4LCBzaCk7CiAKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192
aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSogcwog
ICAgICAgICAgICAgc3ItPmR4LCBzci0+ZHksIG14LCBteSwgbXcsIG1oLCBheCwgYXksIGF3LCBh
aCwgYngsIGJ5LCBidywgYmgpOwogCiAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbgot
ICAgICAgICAgICAgKCh1aW50MzJfdCopcGl4ZWxzLCBzci0+ZHgsIHNyLT5keSwgc3gsIHN5LCBz
dywgc2gsIG93KTsKKyAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyks
IHNyLT5keCwgc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCwgb3cpOwogCiAgICAgICAgIGV2YXNfb2Jq
ZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZChzZC0+YmFja2luZ19zdG9yZSwgbXgsIG15LCBtdywg
bWgpOwogICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIGF4LCBheSwgYXcs
IGFoKTsKQEAgLTQwMCw3ICs0MDAsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5n
bGVfc21hcnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzZAogICAgIGZv
cm1hdCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7CiAKICAgICBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEKLSAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hh
ciopcGl4ZWxzLCBmb3JtYXQsIG93LCBvaCwgb3cgKiA0KTsKKyAgICAgICAgICAgICAgICAgIChz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4ocGl4ZWxzKSwgZm9ybWF0LCBvdywgb2gsIG93ICog
NCk7CiAgICAgc3RhdHVzID0gY2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3VyZmFjZSk7CiAgICAgaWYg
KHN0YXR1cyAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykgewogICAgICAgICBFUlIoImNvdWxkIG5v
dCBjcmVhdGUgc3VyZmFjZSBmcm9tIGRhdGEgJWR4JWQ6ICVzIiwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXdfdGlsZWQuY3BwCmluZGV4IDQ5NzUxYmQ5ZDllNWY1YTMwODZhNTNiNDgzNDZk
YjU5N2JjNGM0NWYuLmY4N2Y0OGJkOWZhMzQwZTBiMzQ2OTIxMDZhZTRkYzI1ZWI1OWM1ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcApAQCAtMzIsNyArMzIsNyBA
QCBzdGF0aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9IEVXS19WSUVXX1NNQVJU
X0NMQVNTX0lOSVRfTlVMTDsKIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfcmVu
ZGVyX2NiKHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJl
YSkKIHsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSAoRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKilkYXRhOworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IHN0YXRpY19j
YXN0PEV3a19WaWV3X1ByaXZhdGVfRGF0YSo+KGRhdGEpOwogICAgIEVpbmFfUmVjdGFuZ2xlIHIg
PSB7YXJlYS0+eCArIHQtPngsIGFyZWEtPnkgKyB0LT55LCBhcmVhLT53LCBhcmVhLT5ofTsKIAog
ICAgIHJldHVybiBld2tfdmlld19wYWludF9jb250ZW50cyhwcml2LCB0LT5jYWlybywgJnIpOwpA
QCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9yZW5kZXJf
Y2Iodm9pZCogZGF0YSwgRXdrX1RpbGUqIHQsIGNvbnN0IEVpbmFfUgogCiBzdGF0aWMgdm9pZCog
X2V3a192aWV3X3RpbGVkX3VwZGF0ZXNfcHJvY2Vzc19wcmUodm9pZCogZGF0YSwgRXZhc19PYmpl
Y3QqIG8pCiB7Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gKEV3a19WaWV3X1By
aXZhdGVfRGF0YSopZGF0YTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSBzdGF0
aWNfY2FzdDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihkYXRhKTsKICAgICBld2tfdmlld19sYXlv
dXRfaWZfbmVlZGVkX3JlY3Vyc2l2ZShwcml2KTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTU4LDgg
KzU4LDggQEAgc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYmFja2lu
Z19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YSoKIHN0YXRpYyB2b2lkCiBfZXdrX3ZpZXdf
dGlsZWRfY29udGVudHNfc2l6ZV9jaGFuZ2VkX2NiKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBv
LCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfQ29vcmQqIHNpemUgPSAoRXZhc19Db29y
ZCopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19T
bWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfQ29vcmQqIHNpemUgPSBzdGF0aWNfY2FzdDxFdmFz
X0Nvb3JkKj4oZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0
aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAKICAgICBld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9jb250ZW50c19yZXNpemUKICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBz
aXplWzBdLCBzaXplWzFdKTsKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3
X3RpbGVkX3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKIAogICAgIF9wYXJlbnRfc2Muc2MuYWRk
KG8pOwogCi0gICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRf
ZGF0YV9nZXQobyk7CisgICAgc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4o
ZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykpOwogICAgIGlmICghc2QpCiAgICAgICAgIHJl
dHVybjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109168</attachid>
            <date>2011-09-29 09:29:58 -0700</date>
            <delta_ts>2011-09-29 17:31:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68321-20110930012932.patch</filename>
            <type>text/plain</type>
            <size>26890</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzMjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA3MzI1ZDUxYmIx
NDZkMTRkMWU1ODg1YTUyMWE0YjViZmI3ZDJmM2ZhLi44NDM2NjA3OTE0NjMzOWE3NWRkZTE3OTMw
NDc5OTIzMDVhYzRhNWJkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEt
MDktMjkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBVc2UgQysrIHR5cGUgY2FzdCBpbnN0ZWFkIG9mIEMgc3R5bGUgdHlwZSBjYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODMyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBz
ZWNvbmQgc3RlcCBpbiBvcmRlciB0byBiZSBtb3JlIGNvbXBsaWFudCB3aXRoIFdlYktpdCBjb2Rp
bmcgc3R5bGUuCisgICAgICAgIFRoZSBzZWNvbmQgc3RlcCBpcyB0byBjaGFuZ2UgQy10eXBlIGNh
c3Rpbmcgd2l0aCBDKystdHlwZSBjYXN0aW5nIGluIC5jcHAgZmlsZXMuCisKKyAgICAgICAgSW4g
YWRkaXRpb24sIHJlbWFpbmVkIGVmbCBzdHlsZSAnKicgcG9pbnRlciBwbGFjZW1lbnRzIGFyZSBt
b3ZlZCB0byB0aGUgcmlnaHQgcGxhY2UgYXMgd2VsbC4KKworICAgICAgICAqIGV3ay9ld2tfYXV0
aF9zb3VwLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKKyAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5j
cHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKKwogMjAxMS0wOS0yOCAgS3dh
bmdIeXVrIEtpbSAgPGh5dWtpLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBSZW1v
dmUgdXNlbGVzcyBhc3NpZ25tZW50IGNvZGUgaW4gX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3pv
b21fc2V0X2ludGVybmFsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19h
dXRoX3NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwCmlu
ZGV4IDA5ZjNkMGRiMWM1ZDc4YzgxNWRhMmU3ZTNkMTg0YTU0Y2U5YWJkOGIuLmZiMzZhOTE1OWYy
N2IyNzJiYTFmMzAyNjQ2ZGNjN2YwMWZmMTVhZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2F1dGhfc291cC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBld2tfYXV0aF9zb3VwX2NyZWRl
bnRpYWxzX3NldChjb25zdCBjaGFyKiB1c2VybmFtZSwgY29uc3QgY2hhciogcGFzc3dvcmQsIHYK
ICAgICBpZiAoIWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIEV3a19BdXRoX0RhdGEqIGF1
dGhfZGF0YSA9IChFd2tfQXV0aF9EYXRhKilkYXRhOworICAgIEV3a19BdXRoX0RhdGEqIGF1dGhf
ZGF0YSA9IHN0YXRpY19jYXN0PEV3a19BdXRoX0RhdGEqPihkYXRhKTsKICAgICBzb3VwX2F1dGhf
YXV0aGVudGljYXRlKGF1dGhfZGF0YS0+YXV0aCwgdXNlcm5hbWUsIHBhc3N3b3JkKTsKICAgICBz
b3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKGF1dGhfZGF0YS0+c2Vzc2lvbiwgYXV0aF9kYXRh
LT5tc2cpOwogICAgIGZyZWVfYXV0aF9kYXRhKGF1dGhfZGF0YSk7CkBAIC05NCw3ICs5NCw3IEBA
IHN0YXRpYyB2b2lkIHNlc3Npb25fYXV0aGVudGljYXRlKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBT
b3VwTWVzc2FnZSogbXNnLCBTb3VwQXV0CiAgICAgaWYgKCFld2tfYXV0aF9zaG93X2RpYWxvZ19j
YWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0aF9kYXRhID0gKEV3a19BdXRoX0Rh
dGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX0F1dGhfRGF0YSkpOworICAgIGF1dGhfZGF0YSA9IHN0
YXRpY19jYXN0PEV3a19BdXRoX0RhdGEqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19BdXRoX0RhdGEp
KSk7CiAKICAgICBpZiAoIWF1dGhfZGF0YSkgewogICAgICAgICBDUklUSUNBTCgiY291bGQgbm90
IGFsbG9jYXRlIEV3a19BdXRoX0RhdGEiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfY29udGV4dG1lbnUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250
ZXh0bWVudS5jcHAKaW5kZXggODU3OTI2Yjc4OTY4YzRkNDE5NDBmM2Q0MWRmZWNiYzIwODk4MmUy
MC4uYWExNjE5ZmQ5MThmMTI2MzBhMDE3MDIyYjZlZGZlM2U3M2NjYzhlNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBFd2tf
Q29udGV4dF9NZW51X0l0ZW0qIGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcoRXdrX0NvbnRleHRf
TWVudV9JdGVtX1R5cGUgdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV3a19Db250ZXh0X01lbnVfQWN0aW9uIGFjdGlvbiwgRXdrX0NvbnRleHRf
TWVudSogc3VibWVudSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyKiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQsIEVpbmFfQm9vbCBl
bmFibGVkKQogewotICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSA9IChFd2tfQ29udGV4
dF9NZW51X0l0ZW0qKSBtYWxsb2Moc2l6ZW9mKCppdGVtKSk7CisgICAgRXdrX0NvbnRleHRfTWVu
dV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4obWFsbG9j
KHNpemVvZigqaXRlbSkpKTsKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybiAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IDNjZjljOTg1NWJjNjVkNDI1MzAyZDNl
NmRhY2M3YmEwNDJmY2Q3YWEuLjgxZWZmZTU3N2I1M2ZmNTNlNDg2Mjc4ZTQwMDk1MGE3MWE4ODQw
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAg
c3RydWN0IEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lIHsKICNlbmRpZgogCiAjZGVmaW5lIEVXS19G
UkFNRV9TRF9HRVQobywgcHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
IEV3a19GcmFtZV9TbWFydF9EYXRhICpwdHIgPSAoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqKWV2YXNf
b2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pCisgICAgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEqIHB0ciA9
IHN0YXRpY19jYXN0PEV3a19GcmFtZV9TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0
YV9nZXQobykpCiAKICNkZWZpbmUgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4obywgcHRyLCAu
Li4pICAgICAgICAgXAogICAgIEVXS19GUkFNRV9UWVBFX0NIRUNLKG8sIF9fVkFfQVJHU19fKTsg
ICAgICAgICAgICAgICBcCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIHZvaWQgX2V3a19mcmFt
ZV9zbWFydF9hZGQoRXZhc19PYmplY3QqIG8pCiAgICAgRVdLX0ZSQU1FX1NEX0dFVChvLCBzZCk7
CiAKICAgICBpZiAoIXNkKSB7Ci0gICAgICAgIHNkID0gKEV3a19GcmFtZV9TbWFydF9EYXRhKilj
YWxsb2MoMSwgc2l6ZW9mKEV3a19GcmFtZV9TbWFydF9EYXRhKSk7CisgICAgICAgIHNkID0gc3Rh
dGljX2Nhc3Q8RXdrX0ZyYW1lX1NtYXJ0X0RhdGEqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19GcmFt
ZV9TbWFydF9EYXRhKSkpOwogICAgICAgICBpZiAoIXNkKSB7CiAgICAgICAgICAgICBDUklUSUNB
TCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19GcmFtZV9TbWFydF9EYXRhIik7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yMzMsMTQgKzIzMywxNCBAQCBzdGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3Nt
YXJ0X2FkZChFdmFzX09iamVjdCogbykKICNlbmRpZgogfQogCi1zdGF0aWMgdm9pZCBfZXdrX2Zy
YW1lX3NtYXJ0X2RlbChFdmFzX09iamVjdCAqbykKK3N0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21h
cnRfZGVsKEV2YXNfT2JqZWN0KiBvKQogewogICAgIFdSTigibz0lcCIsIG8pOyAvLyBYWFggUkVN
T1ZFIE1FIExBVEVSCiAgICAgRVdLX0ZSQU1FX1NEX0dFVChvLCBzZCk7CiAKICAgICBpZiAoc2Qp
IHsKICAgICAgICAgaWYgKHNkLT5mcmFtZSkgewotICAgICAgICAgICAgV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRFZmwgKmZsYyA9IF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQoc2QtPmZyYW1l
KTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsKiBmbGMgPSBfZXdr
X2ZyYW1lX2xvYWRlcl9lZmxfZ2V0KHNkLT5mcmFtZSk7CiAgICAgICAgICAgICBmbGMtPnNldFdl
YkZyYW1lKDApOwogICAgICAgICAgICAgc2QtPmZyYW1lLT5sb2FkZXIoKS0+ZGV0YWNoRnJvbVBh
cmVudCgpOwogICAgICAgICAgICAgc2QtPmZyYW1lLT5sb2FkZXIoKS0+Y2FuY2VsQW5kQ2xlYXIo
KTsKQEAgLTMwMSw4ICszMDEsOCBAQCBFdmFzX09iamVjdCogZXdrX2ZyYW1lX3ZpZXdfZ2V0KGNv
bnN0IEV2YXNfT2JqZWN0KiBvKQogRWluYV9JdGVyYXRvciogZXdrX2ZyYW1lX2NoaWxkcmVuX2l0
ZXJhdG9yX25ldyhFdmFzX09iamVjdCogbykKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JF
VFVSTihvLCBzZCwgMCk7Ci0gICAgRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUqIGl0ID0gKEVpbmFf
SXRlcmF0b3JfRXdrX0ZyYW1lKikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YWxsb2MoMSwgc2l6ZW9mKEVpbmFfSXRlcmF0b3JfRXdrX0ZyYW1lKSk7CisgICAgRWluYV9JdGVy
YXRvcl9Fd2tfRnJhbWUqIGl0ID0gc3RhdGljX2Nhc3Q8RWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUq
PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYWxsb2MoMSwgc2l6ZW9mKEVp
bmFfSXRlcmF0b3JfRXdrX0ZyYW1lKSkpOwogICAgIGlmICghaXQpCiAgICAgICAgIHJldHVybiAw
OwogCkBAIC02ODYsNyArNjg2LDcgQEAgRXdrX0hpdF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rlc3Rf
bmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBvLCBpbnQgeCwgaW50IHkpCiAgICAgaWYgKCFyZXN1bHQu
aW5uZXJOb2RlKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgRXdrX0hpdF9UZXN0KiBoaXRf
dGVzdCA9IChFd2tfSGl0X1Rlc3QqKWNhbGxvYygxLCBzaXplb2YoRXdrX0hpdF9UZXN0KSk7Cisg
ICAgRXdrX0hpdF9UZXN0KiBoaXRfdGVzdCA9IHN0YXRpY19jYXN0PEV3a19IaXRfVGVzdCo+KGNh
bGxvYygxLCBzaXplb2YoRXdrX0hpdF9UZXN0KSkpOwogICAgIGlmICghaGl0X3Rlc3QpIHsKICAg
ICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGhpdCB0ZXN0LiIp
OwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfaGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCmlu
ZGV4IDlhZTdhYTEyNWNiMWFiNjYzYTlmNGZmNTEwMWNjMDJjMWI1ZTBkM2EuLjYyZDc3NDI5ODZj
MjNhMjIyNDhiMzhlYTcxYjE0OTQ5NDBlMTc5NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19o
aXN0b3J5LmNwcApAQCAtODMsNyArODMsNyBAQCBzdGF0aWMgaW5saW5lIEV3a19IaXN0b3J5X0l0
ZW0qIF9ld2tfaGlzdG9yeV9pdGVtX25ldyhXZWJDb3JlOjpIaXN0b3J5SXRlbSogY29yZQogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpdGVtID0gKEV3a19IaXN0b3J5X0l0ZW0qKWNh
bGxvYygxLCBzaXplb2YoRXdrX0hpc3RvcnlfSXRlbSkpOworICAgIGl0ZW0gPSBzdGF0aWNfY2Fz
dDxFd2tfSGlzdG9yeV9JdGVtKj4oY2FsbG9jKDEsIHNpemVvZihFd2tfSGlzdG9yeV9JdGVtKSkp
OwogICAgIGlmICghaXRlbSkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRl
IGl0ZW0gbWVtb3J5LiIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTI3MSw3ICsyNzEsNyBAQCBj
b25zdCBjaGFyKiBld2tfaGlzdG9yeV9pdGVtX3RpdGxlX2dldChjb25zdCBFd2tfSGlzdG9yeV9J
dGVtKiBpdGVtKQogewogICAgIEVXS19ISVNUT1JZX0lURU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0
ZW0sIGNvcmUsIDApOwogICAgIC8vIGhpZGUgdGhlIGZvbGxvd2luZyBvcHRpbXphdGlvbiBmcm9t
IG91dHNpZGUKLSAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gKEV3a19IaXN0b3J5X0l0ZW0qKWl0
ZW07CisgICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IGNvbnN0X2Nhc3Q8RXdrX0hpc3RvcnlfSXRl
bSo+KGl0ZW0pOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmaS0+dGl0bGUsIGNvcmUt
PnRpdGxlKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgcmV0dXJuIGktPnRpdGxlOwogfQpAQCAtMjgw
LDcgKzI4MCw3IEBAIGNvbnN0IGNoYXIqIGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfYWx0ZXJuYXRl
X2dldChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQogewogICAgIEVXS19ISVNUT1JZX0lU
RU1fQ09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUsIDApOwogICAgIC8vIGhpZGUgdGhlIGZv
bGxvd2luZyBvcHRpbXphdGlvbiBmcm9tIG91dHNpZGUKLSAgICBFd2tfSGlzdG9yeV9JdGVtKiBp
ID0gKEV3a19IaXN0b3J5X0l0ZW0qKWl0ZW07CisgICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IGNv
bnN0X2Nhc3Q8RXdrX0hpc3RvcnlfSXRlbSo+KGl0ZW0pOwogICAgIGVpbmFfc3RyaW5nc2hhcmVf
cmVwbGFjZSgmaS0+YWx0ZXJuYXRlX3RpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb3JlLT5hbHRlcm5hdGVUaXRsZSgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHJldHVybiBpLT5h
bHRlcm5hdGVfdGl0bGU7CkBAIC0yOTgsNyArMjk4LDcgQEAgY29uc3QgY2hhciogZXdrX2hpc3Rv
cnlfaXRlbV91cmlfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiB7CiAgICAgRVdL
X0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CiAgICAgLy8g
aGlkZSB0aGUgZm9sbG93aW5nIG9wdGltemF0aW9uIGZyb20gb3V0c2lkZQotICAgIEV3a19IaXN0
b3J5X0l0ZW0qIGkgPSAoRXdrX0hpc3RvcnlfSXRlbSopaXRlbTsKKyAgICBFd2tfSGlzdG9yeV9J
dGVtKiBpID0gY29uc3RfY2FzdDxFd2tfSGlzdG9yeV9JdGVtKj4oKGl0ZW0pKTsKICAgICBlaW5h
X3N0cmluZ3NoYXJlX3JlcGxhY2UoJmktPnVyaSwgY29yZS0+dXJsU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAgICAgcmV0dXJuIGktPnVyaTsKIH0KQEAgLTMwNyw3ICszMDcsNyBAQCBjb25zdCBj
aGFyKiBld2tfaGlzdG9yeV9pdGVtX3VyaV9vcmlnaW5hbF9nZXQoY29uc3QgRXdrX0hpc3Rvcnlf
SXRlbSogaXRlbSkKIHsKICAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihp
dGVtLCBjb3JlLCAwKTsKICAgICAvLyBoaWRlIHRoZSBmb2xsb3dpbmcgb3B0aW16YXRpb24gZnJv
bSBvdXRzaWRlCi0gICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IChFd2tfSGlzdG9yeV9JdGVtKilp
dGVtOworICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSBjb25zdF9jYXN0PEV3a19IaXN0b3J5X0l0
ZW0qPihpdGVtKTsKICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlcGxhY2UoJmktPm9yaWdpbmFsX3Vy
aSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZS0+b3JpZ2luYWxVUkxTdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gaS0+b3JpZ2luYWxfdXJpOwpAQCAtMzgzLDcg
KzM4Myw3IEBAIEV3a19IaXN0b3J5KiBld2tfaGlzdG9yeV9uZXcoV2ViQ29yZTo6QmFja0Zvcndh
cmRMaXN0SW1wbCogY29yZSkKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29y
ZSwgMCk7CiAgICAgREJHKCJjb3JlPSVwIiwgY29yZSk7CiAKLSAgICBoaXN0b3J5ID0gKEV3a19I
aXN0b3J5KiltYWxsb2Moc2l6ZW9mKEV3a19IaXN0b3J5KSk7CisgICAgaGlzdG9yeSA9IHN0YXRp
Y19jYXN0PEV3a19IaXN0b3J5Kj4obWFsbG9jKHNpemVvZihFd2tfSGlzdG9yeSkpKTsKICAgICBp
ZiAoIWhpc3RvcnkpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBoaXN0
b3J5IG1lbW9yeS4iKTsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
LmNwcAppbmRleCA0Nzg2OWM2OGIzODA4Y2FkMTA0MjE2ZWJhY2IzYmVmMGU2NTY0NmFkLi4wZmU2
M2FhMzU1M2I1Zjk5NTAwMGNjMTc0NTk0OTJkNDZlZWExMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlldy5jcHAKQEAgLTIwNyw3ICsyMDcsNyBAQCBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZhdGVf
RGF0YSB7CiAjZW5kaWYKIAogI2RlZmluZSBFV0tfVklFV19TRF9HRVQobywgcHRyKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBFd2tfVmlld19TbWFydF9EYXRhICpwdHIg
PSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykKKyAg
ICBFd2tfVmlld19TbWFydF9EYXRhKiBwdHIgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9E
YXRhKj4oZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykpCiAKICNkZWZpbmUgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICAgXAogICAgIEVXS19WSUVXX1RZ
UEVfQ0hFQ0sobywgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgICBcCkBAIC0yNDUsNyArMjQ1
LDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfcmVwYWludHNfcmVzaXplKEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHJpdiwgc2l6ZV90IHMKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7
CiAgICAgfQogICAgIHByaXYtPnJlcGFpbnRzLmFsbG9jYXRlZCA9IHNpemU7Ci0gICAgcHJpdi0+
cmVwYWludHMuYXJyYXkgPSAoRWluYV9SZWN0YW5nbGUqKXRtcDsKKyAgICBwcml2LT5yZXBhaW50
cy5hcnJheSA9IHN0YXRpY19jYXN0PEVpbmFfUmVjdGFuZ2xlKj4odG1wKTsKICAgICByZXR1cm4g
RUlOQV9UUlVFOwogfQogCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdr
X3ZpZXdfc2Nyb2xsc19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3Qg
c2kKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIHByaXYtPnNjcm9sbHMu
YWxsb2NhdGVkID0gc2l6ZTsKLSAgICBwcml2LT5zY3JvbGxzLmFycmF5ID0gKEV3a19TY3JvbGxf
UmVxdWVzdCopdG1wOworICAgIHByaXYtPnNjcm9sbHMuYXJyYXkgPSBzdGF0aWNfY2FzdDxFd2tf
U2Nyb2xsX1JlcXVlc3QqPih0bXApOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKQEAgLTQ3
MCw3ICs0NzAsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9ydW5famF2YXNj
cmlwdF9wcm9tcHQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsCiAvLyBFdmVudCBIYW5kbGluZyAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIHN0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9mb2N1c19pbih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFz
X09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRh
KiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNkLT5hcGktPmZvY3VzX2luKTsKICAgICBzZC0+YXBpLT5mb2N1c19pbihzZCk7
CkBAIC00NzgsNyArNDc4LDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX2luKHZv
aWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmUKIAogc3RhdGljIHZv
aWQgX2V3a192aWV3X29uX2ZvY3VzX291dCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVj
dCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9
IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
ID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNkLT5hcGktPmZvY3VzX291dCk7CiAgICAgc2QtPmFwaS0+Zm9jdXNfb3V0KHNkKTsKQEAg
LTQ4Niw4ICs0ODYsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KHZvaWQq
IGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldgogCiBzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3Qq
IG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYg
PSAoRXZhc19FdmVudF9Nb3VzZV9XaGVlbCopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNfRXZlbnRf
TW91c2VfV2hlZWwqIGV2ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVudF9Nb3VzZV9XaGVlbCo+KGV2
ZW50X2luZm8pOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdr
X1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
KHNkLT5hcGkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1vdXNl
X3doZWVsKTsKICAgICBzZC0+YXBpLT5tb3VzZV93aGVlbChzZCwgZXYpOwpAQCAtNDk1LDggKzQ5
NSw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkKiBkYXRhLCBF
dmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCoKIAogc3RhdGljIHZvaWQgX2V3a192aWV3X29u
X21vdXNlX2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2
ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBldiA9IChFdmFzX0V2ZW50
X01vdXNlX0Rvd24qKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAo
RXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X01vdXNlX0Rvd24qIGV2
ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVudF9Nb3VzZV9Eb3duKj4oZXZlbnRfaW5mbyk7CisgICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRh
Kj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfZG93bik7CiAgICAgc2Qt
PmFwaS0+bW91c2VfZG93bihzZCwgZXYpOwpAQCAtNTA0LDggKzUwNCw4IEBAIHN0YXRpYyB2b2lk
IF9ld2tfdmlld19vbl9tb3VzZV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0
KiBvLCB2b2lkKiBlCiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV91cCh2b2lkKiBk
YXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBF
dmFzX0V2ZW50X01vdXNlX1VwKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1VwKilldmVudF9pbmZv
OwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRh
dGE7CisgICAgRXZhc19FdmVudF9Nb3VzZV9VcCogZXYgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50
X01vdXNlX1VwKj4oZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBz
dGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
c2QtPmFwaS0+bW91c2VfdXApOwogICAgIHNkLT5hcGktPm1vdXNlX3VwKHNkLCBldik7CkBAIC01
MTMsOCArNTEzLDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3VwKHZvaWQqIGRh
dGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmUKIAogc3RhdGljIHZvaWQgX2V3
a192aWV3X29uX21vdXNlX21vdmUodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8s
IHZvaWQqIGV2ZW50X2luZm8pCiB7Ci0gICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBldiA9IChF
dmFzX0V2ZW50X01vdXNlX01vdmUqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X01vdXNl
X01vdmUqIGV2ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVudF9Nb3VzZV9Nb3ZlKj4oZXZlbnRfaW5m
byk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19T
bWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFw
aSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfbW92ZSk7
CiAgICAgc2QtPmFwaS0+bW91c2VfbW92ZShzZCwgZXYpOwpAQCAtNTIyLDggKzUyMiw4IEBAIHN0
YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV9tb3ZlKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2
YXNfT2JqZWN0KiBvLCB2b2lkKiBlCiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfZG93
bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykK
IHsKLSAgICBFdmFzX0V2ZW50X0tleV9Eb3duKiBldiA9IChFdmFzX0V2ZW50X0tleV9Eb3duKill
dmVudF9pbmZvOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0
X0RhdGEqKWRhdGE7CisgICAgRXZhc19FdmVudF9LZXlfRG93biogZXYgPSBzdGF0aWNfY2FzdDxF
dmFzX0V2ZW50X0tleV9Eb3duKj4oZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk4oc2QtPmFwaS0+a2V5X2Rvd24pOwogICAgIHNkLT5hcGktPmtleV9kb3duKHNkLCBl
dik7CkBAIC01MzEsOCArNTMxLDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2tleV9kb3du
KHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmUKIAogc3RhdGlj
IHZvaWQgX2V3a192aWV3X29uX2tleV91cCh2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFzX09iamVj
dCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X0tleV9VcCogZXYgPSAo
RXZhc19FdmVudF9LZXlfVXAqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X0tleV9VcCog
ZXYgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X0tleV9VcCo+KGV2ZW50X2luZm8pOworICAgIEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+
KGRhdGEpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmtleV91cCk7CiAgICAgc2QtPmFwaS0+
a2V5X3VwKHNkLCBldik7CkBAIC01NTUsNyArNTU1LDcgQEAgc3RhdGljIEV2YXNfU21hcnRfQ2xh
c3MgX3BhcmVudF9zYyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogc3RhdGljIEV3a19W
aWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNkKQogewogICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9Ci0gICAgICAgIChFd2tf
Vmlld19Qcml2YXRlX0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KSk7CisgICAgICAgIHN0YXRpY19jYXN0PEV3a19WaWV3X1ByaXZhdGVfRGF0YSo+KGNhbGxvYygx
LCBzaXplb2YoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKSkpOwogICAgIEF0b21pY1N0cmluZyBzOwog
ICAgIFdlYkNvcmU6OktVUkwgdXJsOwogCkBAIC03MjQsMTIgKzcyNCwxMiBAQCBzdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBvKQogewogICAgIGNvbnN0IEV2YXNf
U21hcnQqIHNtYXJ0ID0gZXZhc19vYmplY3Rfc21hcnRfc21hcnRfZ2V0KG8pOwogICAgIGNvbnN0
IEV2YXNfU21hcnRfQ2xhc3MqIHNjID0gZXZhc19zbWFydF9jbGFzc19nZXQoc21hcnQpOwotICAg
IGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSAoY29uc3QgRXdrX1ZpZXdfU21hcnRf
Q2xhc3MqKXNjOworICAgIGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKiBhcGkgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IEV3a19WaWV3X1NtYXJ0X0NsYXNzKj4oc2MpOwogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOKGFwaS0+YmFja2luZ19zdG9yZV9hZGQpOwogICAgIEVXS19WSUVX
X1NEX0dFVChvLCBzZCk7CiAKICAgICBpZiAoIXNkKSB7Ci0gICAgICAgIHNkID0gKEV3a19WaWV3
X1NtYXJ0X0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpOworICAg
ICAgICBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihjYWxsb2MoMSwgc2l6
ZW9mKEV3a19WaWV3X1NtYXJ0X0RhdGEpKSk7CiAgICAgICAgIGlmICghc2QpIHsKICAgICAgICAg
ICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX1ZpZXdfU21hcnRfRGF0YSIpOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTI2LDEyICs5MjYsMTIgQEAgc3RhdGljIEVpbmFfQm9v
bCBfZXdrX3ZpZXdfc21hcnRfem9vbV9zZXQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QsIGZsb2F0
IHpvb20sIEUKICAgICBld2tfZnJhbWVfc2Nyb2xsX3Bvc19nZXQoc2QtPm1haW5fZnJhbWUsICZ4
LCAmeSk7CiAKICAgICBpZiAodyArIHNkLT52aWV3LncgPiAwKQotICAgICAgICBweCA9IChkb3Vi
bGUpKHggKyBjeCkgLyAodyArIHNkLT52aWV3LncpOworICAgICAgICBweCA9ICh4ICsgY3gpIC8g
KHcgKyBzZC0+dmlldy53KTsKICAgICBlbHNlCiAgICAgICAgIHB4ID0gMC4wOwogCiAgICAgaWYg
KGggKyBzZC0+dmlldy5oID4gMCkKLSAgICAgICAgcHkgPSAoZG91YmxlKSh5ICsgY3kpIC8gKGgg
KyBzZC0+dmlldy5oKTsKKyAgICAgICAgcHkgPSAoeSArIGN5KSAvIChoICsgc2QtPnZpZXcuaCk7
CiAgICAgZWxzZQogICAgICAgICBweSA9IDAuMDsKIApAQCAtMTAwNCw3ICsxMDA0LDcgQEAgc3Rh
dGljIGZsb2F0IF9ld2tfdmlld196b29tX2FuaW1hdGVkX2N1cnJlbnQoRXdrX1ZpZXdfUHJpdmF0
ZV9EYXRhKiBwcml2KQogCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld196b29tX2FuaW1hdG9y
X2NiKHZvaWQqIGRhdGEpCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1Zp
ZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRp
Y19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFdmFzX0Nvb3JkIGN4LCBj
eTsKICAgICBFV0tfVklFV19QUklWX0dFVChzZCwgcHJpdik7CiAgICAgZG91YmxlIG5vdyA9IGVj
b3JlX2xvb3BfdGltZV9nZXQoKTsKQEAgLTEwNDgsMTQgKzEwNDgsMTEgQEAgc3RhdGljIFdlYkNv
cmU6OlZpZXdwb3J0QXR0cmlidXRlcyBfZXdrX3ZpZXdfdmlld3BvcnRfYXR0cmlidXRlc19jb21w
dXRlKGNvbnN0IEUKICAgICBpbnQgZGVza3RvcF93aWR0aCA9IDk4MDsKICAgICBpbnQgZGV2aWNl
X2RwaSA9IGV3a191dGlsX2RwaV9nZXQoKTsKIAotICAgIGludCBhdmFpbGFibGVfd2lkdGggPSAo
aW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhZ2VSZWN0KCkud2lkdGgoKTsK
LSAgICBpbnQgYXZhaWxhYmxlX2hlaWdodCA9IChpbnQpIHByaXYtPnBhZ2UtPmNocm9tZSgpLT5j
bGllbnQoKS0+cGFnZVJlY3QoKS5oZWlnaHQoKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGF2YWls
YWJsZV9yZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPnBhZ2VSZWN0KCkpOworICAgIFdlYkNvcmU6OkludFJlY3QgZGV2aWNlX3JlY3QgPSBlbmNs
b3NpbmdJbnRSZWN0KHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2luZG93UmVjdCgp
KTsKIAotICAgIGludCBkZXZpY2Vfd2lkdGggPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPndpbmRvd1JlY3QoKS53aWR0aCgpOwotICAgIGludCBkZXZpY2VfaGVpZ2h0ID0g
KGludCkgcHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0
KCk7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIGF2YWlsYWJsZV9zaXplID0gV2ViQ29yZTo6SW50
U2l6ZShhdmFpbGFibGVfd2lkdGgsIGF2YWlsYWJsZV9oZWlnaHQpOwotICAgIFdlYkNvcmU6OlZp
ZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gV2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0
cmlidXRlcyhwcml2LT52aWV3cG9ydF9hcmd1bWVudHMsIGRlc2t0b3Bfd2lkdGgsIGRldmljZV93
aWR0aCwgZGV2aWNlX2hlaWdodCwgZGV2aWNlX2RwaSwgYXZhaWxhYmxlX3NpemUpOworICAgIFdl
YkNvcmU6OkludFNpemUgYXZhaWxhYmxlX3NpemUgPSBXZWJDb3JlOjpJbnRTaXplKGF2YWlsYWJs
ZV9yZWN0LndpZHRoKCksIGF2YWlsYWJsZV9yZWN0LmhlaWdodCgpKTsKKyAgICBXZWJDb3JlOjpW
aWV3cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IFdlYkNvcmU6OmNvbXB1dGVWaWV3cG9ydEF0
dHJpYnV0ZXMocHJpdi0+dmlld3BvcnRfYXJndW1lbnRzLCBkZXNrdG9wX3dpZHRoLCBkZXZpY2Vf
cmVjdC53aWR0aCgpLCBkZXZpY2VfcmVjdC5oZWlnaHQoKSwgZGV2aWNlX2RwaSwgYXZhaWxhYmxl
X3NpemUpOwogCiAgICAgcmV0dXJuIGF0dHJpYnV0ZXM7CiB9CkBAIC0xNTYxLDExICsxNTU4LDEx
IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9v
bSwgRXZhc19Db29yZCBjeCwgRXZhc19Db29yCiAgICAgfQogCiAgICAgaWYgKHpvb20gPCBwcml2
LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSkgewotICAgICAgICBXUk4oInpvb20gbGV2
ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9z
Y2FsZSwgKGRvdWJsZSl6b29tKTsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAl
ZiIsIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCB6b29tKTsKICAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Mu
em9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYg
OiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3Vi
bGUpem9vbSk7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCBwcml2LT5z
ZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwgem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOwogICAgIH0KIApAQCAtMTYwNSwxMSArMTYwMiwxMSBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfem9vbV93ZWFrX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgRXZhc19Db29yZCBj
eCwgRXZhcwogICAgIH0KIAogICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5n
ZS5taW5fc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChk
b3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7
CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCBwcml2LT5zZXR0aW5ncy56
b29tX3JhbmdlLm1pbl9zY2FsZSwgem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwog
ICAgIH0KICAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxl
KSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYt
PnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICBX
Uk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5t
YXhfc2NhbGUsIHpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAg
LTE2NjEsMTEgKzE2NTgsMTEgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fYW5pbWF0ZWRfc2V0
KEV2YXNfT2JqZWN0KiBvLCBmbG9hdCB6b29tLCBmbG9hdCBkdXJhdGlvbiwKICAgICB9CiAKICAg
ICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7Ci0gICAg
ICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdz
Lnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICBXUk4oInpvb20g
bGV2ZWwgaXMgPCAlZiA6ICVmIiwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUs
IHpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgaWYgKHpvb20g
PiBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgewotICAgICAgICBXUk4oInpv
b20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3Jhbmdl
Lm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4g
JWYgOiAlZiIsIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCB6b29tKTsKICAg
ICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0yNDg5LDcgKzI0ODYsNyBAQCBF
d2tfVmlld19QYWludF9Db250ZXh0KiBld2tfdmlld19wYWludF9jb250ZXh0X25ldyhFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYsCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHByaXYtPm1haW5fZnJhbWUsIDApOwogICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9IHBy
aXYtPm1haW5fZnJhbWUtPnZpZXcoKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9W
QUwodmlldywgMCk7Ci0gICAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogY3R4dCA9IChFd2tfVmll
d19QYWludF9Db250ZXh0KiltYWxsb2Moc2l6ZW9mKCpjdHh0KSk7CisgICAgRXdrX1ZpZXdfUGFp
bnRfQ29udGV4dCogY3R4dCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1BhaW50X0NvbnRleHQqPiht
YWxsb2Moc2l6ZW9mKCpjdHh0KSkpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChjdHh0LCAwKTsKIAogICAgIGN0eHQtPmdjID0gbmV3IFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dChjcik7CkBAIC0zMzY0LDcgKzMzNjEsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFz
X09iamVjdCogbywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsIGludCBzZQogICAg
IC8vIHBvcHVsYXRlIGl0ZW1zCiAgICAgY29uc3QgaW50IHNpemUgPSBjbGllbnQtPmxpc3RTaXpl
KCk7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgRXdrX01l
bnVfSXRlbSogaXRlbSA9IChFd2tfTWVudV9JdGVtKikgbWFsbG9jKHNpemVvZigqaXRlbSkpOwor
ICAgICAgICBFd2tfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX01lbnVfSXRlbSo+
KG1hbGxvYyhzaXplb2YoKml0ZW0pKSk7CiAgICAgICAgIGlmIChjbGllbnQtPml0ZW1Jc1NlcGFy
YXRvcihpKSkKICAgICAgICAgICAgIGl0ZW0tPnR5cGUgPSBFV0tfTUVOVV9TRVBBUkFUT1I7CiAg
ICAgICAgIGVsc2UgaWYgKGNsaWVudC0+aXRlbUlzTGFiZWwoaSkpCkBAIC0zMzk2LDcgKzMzOTMs
NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfcG9wdXBfZGVzdHJveShFdmFzX09iamVjdCogbykKIAog
ICAgIHZvaWQqIGl0ZW12OwogICAgIEVJTkFfTElTVF9GUkVFKHByaXYtPnBvcHVwLm1lbnUuaXRl
bXMsIGl0ZW12KSB7Ci0gICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSAoRXdrX01lbnVfSXRl
bSopaXRlbXY7CisgICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tf
TWVudV9JdGVtKj4oaXRlbXYpOwogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChpdGVtLT50
ZXh0KTsKICAgICAgICAgZnJlZShpdGVtKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdmlld19zaW5nbGUuY3BwCmluZGV4IGI5OWM4YWQ3OTE3NTJjYWE4OTFhMzBlYmVhOTRhNGQw
ZTdhMWRmOWMuLjVhZDY3ZmVhZDMzYTY5MDg1Nzk4ZTU1MzZhNTE1YTlhYzY1MjY4YjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwCkBAIC00Myw3ICs0Myw3IEBA
IHN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBvKQog
CiAgICAgX3BhcmVudF9zYy5zYy5hZGQobyk7CiAKLSAgICBzZCA9IChFd2tfVmlld19TbWFydF9E
YXRhKilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKTsKKyAgICBzZCA9IHN0YXRpY19jYXN0
PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKSk7CiAg
ICAgaWYgKCFzZCkKICAgICAgICAgcmV0dXJuOwogCkBAIC02Nyw3ICs2Nyw3IEBAIHN0YXRpYyBF
dmFzX09iamVjdCogX2V3a192aWV3X3NpbmdsZV9zbWFydF9iYWNraW5nX3N0b3JlX2FkZChFd2tf
Vmlld19TbWFydF9EYXRhCiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zaW5nbGVfc21hcnRfcmVz
aXplKEV2YXNfT2JqZWN0KiBvLCBFdmFzX0Nvb3JkIHcsIEV2YXNfQ29vcmQgaCkKIHsKLSAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29iamVj
dF9zbWFydF9kYXRhX2dldChvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRp
Y19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChv
KSk7CiAgICAgX3BhcmVudF9zYy5zYy5yZXNpemUobywgdywgaCk7CiAKICAgICBpZiAoIXNkKQpA
QCAtMjUxLDcgKzI1MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Nj
cm9sbF9wcm9jZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRhKiBzCiAgICAgICAgICAgICAg
ICAgc3gsIHN5ICsgc2ggKyBzci0+ZHksIHN3LCAtc3ItPmR5KTsKIAogICAgICAgICAgICAgX2V3
a192aWV3XzRiX21vdmVfcmVnaW9uX3VwCi0gICAgICAgICAgICAgICAgKCh1aW50MzJfdCopcGl4
ZWxzLCAtc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCwgb3cpOworICAgICAgICAgICAgICAgIChzdGF0
aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIC1zci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7
CiAgICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKICAgICAgICAg
ICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIHN4LCBzeSwgc3csIHNoICsgc3ItPmR5KTsKIApA
QCAtMjYzLDcgKzI2Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Nj
cm9sbF9wcm9jZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRhKiBzCiAgICAgICAgICAgICAg
ICAgc3gsIHN5LCBzdywgc3ItPmR5KTsKIAogICAgICAgICAgICAgX2V3a192aWV3XzRiX21vdmVf
cmVnaW9uX2Rvd24KLSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KilwaXhlbHMsIHNyLT5keSwg
c3gsIHN5LCBzdywgc2gsIG93KTsKKyAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMy
X3QqPihwaXhlbHMpLCBzci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7CiAgICAgICAgICAgICBl
dmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKICAgICAgICAgICAgICAgICAoc2QtPmJh
Y2tpbmdfc3RvcmUsIHN4LCBzeSArIHNyLT5keSwgc3csIHNoIC0gc3ItPmR5KTsKIApAQCAtMjc3
LDcgKzI3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9w
cm9jZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRhKiBzCiAgICAgICAgICAgICAgICAgc3gg
KyBzdyArIHNyLT5keCwgc3ksIC1zci0+ZHgsIHNoKTsKIAogICAgICAgICAgICAgX2V3a192aWV3
XzRiX21vdmVfcmVnaW9uX2xlZnQKLSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KilwaXhlbHMs
IC1zci0+ZHgsIHN4LCBzeSwgc3csIHNoLCBvdyk7CisgICAgICAgICAgICAgICAgKHN0YXRpY19j
YXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgLXNyLT5keCwgc3gsIHN5LCBzdywgc2gsIG93KTsKICAg
ICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAogICAgICAgICAgICAg
ICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3gsIHN5LCBzdyArIHNyLT5keCwgc2gpOwogCkBAIC0y
ODksNyArMjg5LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmlld19zaW5nbGVfc2Nyb2xs
X3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHMKICAgICAgICAgICAgICAgICBz
eCwgc3ksIHNyLT5keCwgc2gpOwogCiAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdp
b25fcmlnaHQKLSAgICAgICAgICAgICAgICAoKHVpbnQzMl90KilwaXhlbHMsIHNyLT5keCwgc3gs
IHN5LCBzdywgc2gsIG93KTsKKyAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3Qq
PihwaXhlbHMpLCBzci0+ZHgsIHN4LCBzeSwgc3csIHNoLCBvdyk7CiAgICAgICAgICAgICBldmFz
X29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQKICAgICAgICAgICAgICAgICAoc2QtPmJhY2tp
bmdfc3RvcmUsIHN4ICsgc3ItPmR4LCBzeSwgc3cgLSBzci0+ZHgsIHNoKTsKIApAQCAtMzMyLDcg
KzMzMiw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3Njcm9sbF9wcm9j
ZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRhKiBzCiAgICAgICAgICAgICBzci0+ZHgsIHNy
LT5keSwgbXgsIG15LCBtdywgbWgsIGF4LCBheSwgYXcsIGFoLCBieCwgYnksIGJ3LCBiaCk7CiAK
ICAgICAgICAgX2V3a192aWV3XzRiX21vdmVfcmVnaW9uCi0gICAgICAgICAgICAoKHVpbnQzMl90
KilwaXhlbHMsIHNyLT5keCwgc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCwgb3cpOworICAgICAgICAg
ICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgc3ItPmR4LCBzci0+ZHksIHN4LCBz
eSwgc3csIHNoLCBvdyk7CiAKICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVf
YWRkKHNkLT5iYWNraW5nX3N0b3JlLCBteCwgbXksIG13LCBtaCk7CiAgICAgICAgIGV3a192aWV3
X3JlcGFpbnRfYWRkKHNkLT5fcHJpdiwgYXgsIGF5LCBhdywgYWgpOwpAQCAtNDAwLDcgKzQwMCw3
IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NpbmdsZV9zbWFydF9yZXBhaW50c19wcm9j
ZXNzKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkCiAgICAgZm9ybWF0ID0gQ0FJUk9fRk9STUFUX0FS
R0IzMjsKIAogICAgIHN1cmZhY2UgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0
YQotICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKilwaXhlbHMsIGZvcm1hdCwgb3cs
IG9oLCBvdyAqIDQpOworICAgICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXIqPihwaXhlbHMpLCBmb3JtYXQsIG93LCBvaCwgb3cgKiA0KTsKICAgICBzdGF0dXMgPSBjYWly
b19zdXJmYWNlX3N0YXR1cyhzdXJmYWNlKTsKICAgICBpZiAoc3RhdHVzICE9IENBSVJPX1NUQVRV
U19TVUNDRVNTKSB7CiAgICAgICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSBzdXJmYWNlIGZyb20g
ZGF0YSAlZHglZDogJXMiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192
aWV3X3RpbGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAK
aW5kZXggNDk3NTFiZDlkOWU1ZjVhMzA4NmE1M2I0ODM0NmRiNTk3YmM0YzQ1Zi4uZjg3ZjQ4YmQ5
ZmEzNDBlMGIzNDY5MjEwNmFlNGRjMjVlYjU5YzVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3ZpZXdfdGlsZWQuY3BwCkBAIC0zMiw3ICszMiw3IEBAIHN0YXRpYyBFd2tfVmlld19TbWFy
dF9DbGFzcyBfcGFyZW50X3NjID0gRVdLX1ZJRVdfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogCiBz
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9yZW5kZXJfY2Iodm9pZCogZGF0YSwgRXdr
X1RpbGUqIHQsIGNvbnN0IEVpbmFfUmVjdGFuZ2xlKiBhcmVhKQogewotICAgIEV3a19WaWV3X1By
aXZhdGVfRGF0YSogcHJpdiA9IChFd2tfVmlld19Qcml2YXRlX0RhdGEqKWRhdGE7CisgICAgRXdr
X1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKj4oZGF0YSk7CiAgICAgRWluYV9SZWN0YW5nbGUgciA9IHthcmVhLT54ICsgdC0+eCwgYXJl
YS0+eSArIHQtPnksIGFyZWEtPncsIGFyZWEtPmh9OwogCiAgICAgcmV0dXJuIGV3a192aWV3X3Bh
aW50X2NvbnRlbnRzKHByaXYsIHQtPmNhaXJvLCAmcik7CkBAIC00MCw3ICs0MCw3IEBAIHN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3JlbmRlcl9jYih2b2lkKiBkYXRhLCBFd2tfVGls
ZSogdCwgY29uc3QgRWluYV9SCiAKIHN0YXRpYyB2b2lkKiBfZXdrX3ZpZXdfdGlsZWRfdXBkYXRl
c19wcm9jZXNzX3ByZSh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogbykKIHsKLSAgICBFd2tfVmll
d19Qcml2YXRlX0RhdGEqIHByaXYgPSAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKilkYXRhOworICAg
IEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1ByaXZh
dGVfRGF0YSo+KGRhdGEpOwogICAgIGV3a192aWV3X2xheW91dF9pZl9uZWVkZWRfcmVjdXJzaXZl
KHByaXYpOwogICAgIHJldHVybiAwOwogfQpAQCAtNTgsOCArNTgsOCBAQCBzdGF0aWMgRXZhc19P
YmplY3QqIF9ld2tfdmlld190aWxlZF9zbWFydF9iYWNraW5nX3N0b3JlX2FkZChFd2tfVmlld19T
bWFydF9EYXRhKgogc3RhdGljIHZvaWQKIF9ld2tfdmlld190aWxlZF9jb250ZW50c19zaXplX2No
YW5nZWRfY2Iodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2ZW50X2luZm8pCiB7
Ci0gICAgRXZhc19Db29yZCogc2l6ZSA9IChFdmFzX0Nvb3JkKilldmVudF9pbmZvOwotICAgIEV3
a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAg
RXZhc19Db29yZCogc2l6ZSA9IHN0YXRpY19jYXN0PEV2YXNfQ29vcmQqPihldmVudF9pbmZvKTsK
KyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0
X0RhdGEqPihkYXRhKTsKIAogICAgIGV3a190aWxlZF9iYWNraW5nX3N0b3JlX2NvbnRlbnRzX3Jl
c2l6ZQogICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIHNpemVbMF0sIHNpemVbMV0pOwpAQCAt
NzEsNyArNzEsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYWRkKEV2YXNf
T2JqZWN0KiBvKQogCiAgICAgX3BhcmVudF9zYy5zYy5hZGQobyk7CiAKLSAgICBzZCA9IChFd2tf
Vmlld19TbWFydF9EYXRhKilldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKTsKKyAgICBzZCA9
IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRh
X2dldChvKSk7CiAgICAgaWYgKCFzZCkKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109226</attachid>
            <date>2011-09-29 17:31:14 -0700</date>
            <delta_ts>2011-09-29 18:04:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68321-20110930093114.patch</filename>
            <type>text/plain</type>
            <size>26796</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzODAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA4ZWUyZmIxY2Qz
ZjgwMzE3MTIzMzAzMGJjNGUzM2U0MDI2M2YwYzdkLi5mZjcxYWM0MGU3MzZiMWQwNjNhMjNjZmI1
NDA5N2QyMTRjM2U2MDMxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEt
MDktMjkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBVc2UgQysrIHR5cGUgY2FzdCBpbnN0ZWFkIG9mIEMgc3R5bGUgdHlwZSBjYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODMyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBz
ZWNvbmQgc3RlcCBpbiBvcmRlciB0byBiZSBtb3JlIGNvbXBsaWFudCB3aXRoIFdlYktpdCBjb2Rp
bmcgc3R5bGUuCisgICAgICAgIFRoZSBzZWNvbmQgc3RlcCBpcyB0byBjaGFuZ2UgQy10eXBlIGNh
c3Rpbmcgd2l0aCBDKystdHlwZSBjYXN0aW5nIGluIC5jcHAgZmlsZXMuCisKKyAgICAgICAgSW4g
YWRkaXRpb24sIHJlbWFpbmVkIGVmbCBzdHlsZSAnKicgcG9pbnRlciBwbGFjZW1lbnRzIGFyZSBt
b3ZlZCB0byB0aGUgcmlnaHQgcGxhY2UgYXMgd2VsbC4KKworICAgICAgICAqIGV3ay9ld2tfYXV0
aF9zb3VwLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKKyAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5j
cHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKKwogMjAxMS0wOS0yOSAgUmFw
aGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbRUZM
XSBBUEkgdG8gZ2V0IHBsYWluIHRleHQgb2YgdGhlIGZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2F1dGhfc291cC5jcHAKaW5kZXggMDlmM2QwZGIxYzVkNzhjODE1ZGEyZTdlM2QxODRhNTRj
ZTlhYmQ4Yi4uZmIzNmE5MTU5ZjI3YjI3MmJhMWYzMDI2NDZkY2M3ZjAxZmYxNWFkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lk
IGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNoYXIqIHVzZXJuYW1lLCBjb25z
dCBjaGFyKiBwYXNzd29yZCwgdgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgRXdrX0F1dGhfRGF0YSogYXV0aF9kYXRhID0gKEV3a19BdXRoX0RhdGEqKWRhdGE7CisgICAg
RXdrX0F1dGhfRGF0YSogYXV0aF9kYXRhID0gc3RhdGljX2Nhc3Q8RXdrX0F1dGhfRGF0YSo+KGRh
dGEpOwogICAgIHNvdXBfYXV0aF9hdXRoZW50aWNhdGUoYXV0aF9kYXRhLT5hdXRoLCB1c2VybmFt
ZSwgcGFzc3dvcmQpOwogICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21lc3NhZ2UoYXV0aF9kYXRh
LT5zZXNzaW9uLCBhdXRoX2RhdGEtPm1zZyk7CiAgICAgZnJlZV9hdXRoX2RhdGEoYXV0aF9kYXRh
KTsKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2Vzc2lvbl9hdXRoZW50aWNhdGUoU291
cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBtc2csIFNvdXBBdXQKICAgICBpZiAoIWV3
a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRo
X2RhdGEgPSAoRXdrX0F1dGhfRGF0YSopY2FsbG9jKDEsIHNpemVvZihFd2tfQXV0aF9EYXRhKSk7
CisgICAgYXV0aF9kYXRhID0gc3RhdGljX2Nhc3Q8RXdrX0F1dGhfRGF0YSo+KGNhbGxvYygxLCBz
aXplb2YoRXdrX0F1dGhfRGF0YSkpKTsKIAogICAgIGlmICghYXV0aF9kYXRhKSB7CiAgICAgICAg
IENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX0F1dGhfRGF0YSIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAppbmRleCA4NTc5MjZiNzg5NjhjNGQ0MTk0
MGYzZDQxZGZlY2JjMjA4OTgyZTIwLi5hYTE2MTlmZDkxOGYxMjYzMGEwMTcwMjJiNmVkZmUzZTcz
Y2NjOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcApAQCAt
MTAzLDcgKzEwMyw3IEBAIEV3a19Db250ZXh0X01lbnVfSXRlbSogZXdrX2NvbnRleHRfbWVudV9p
dGVtX25ldyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdrX0NvbnRleHRfTWVudV9BY3Rpb24g
YWN0aW9uLCBFd2tfQ29udGV4dF9NZW51KiBzdWJtZW51LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wg
Y2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCiB7Ci0gICAgRXdrX0NvbnRleHRfTWVudV9JdGVt
KiBpdGVtID0gKEV3a19Db250ZXh0X01lbnVfSXRlbSopIG1hbGxvYyhzaXplb2YoKml0ZW0pKTsK
KyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4
dF9NZW51X0l0ZW0qPihtYWxsb2Moc2l6ZW9mKCppdGVtKSkpOwogICAgIGlmICghaXRlbSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggNTdl
YWUxMmI0NWJmZjZiMzRhNzc0MjNjNjY1OWRlNDhmMWRkNTk2NS4uYmM4ZjhhZTY2ZTNlNjhhNzMw
NWVhZmExZjljOTIzOTQ4NjJmNTkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAK
QEAgLTEwMSw3ICsxMDEsNyBAQCBzdHJ1Y3QgRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUgewogI2Vu
ZGlmCiAKICNkZWZpbmUgRVdLX0ZSQU1FX1NEX0dFVChvLCBwdHIpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgKnB0ciA9IChFd2tfRnJh
bWVfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykKKyAgICBFd2tfRnJh
bWVfU21hcnRfRGF0YSogcHRyID0gc3RhdGljX2Nhc3Q8RXdrX0ZyYW1lX1NtYXJ0X0RhdGEqPihl
dmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKSkKIAogI2RlZmluZSBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICBcCiAgICAgRVdLX0ZSQU1FX1RZUEVfQ0hF
Q0sobywgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgIFwKQEAgLTE4MSw3ICsxODEsNyBAQCBz
dGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKICAgICBFV0tf
RlJBTUVfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmICghc2QpIHsKLSAgICAgICAgc2QgPSAoRXdr
X0ZyYW1lX1NtYXJ0X0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEp
KTsKKyAgICAgICAgc2QgPSBzdGF0aWNfY2FzdDxFd2tfRnJhbWVfU21hcnRfRGF0YSo+KGNhbGxv
YygxLCBzaXplb2YoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEpKSk7CiAgICAgICAgIGlmICghc2QpIHsK
ICAgICAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX0ZyYW1lX1NtYXJ0
X0RhdGEiKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIzMywxNCArMjMzLDE0IEBAIHN0YXRp
YyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBvKQogI2VuZGlmCiB9CiAK
LXN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfZGVsKEV2YXNfT2JqZWN0ICpvKQorc3RhdGlj
IHZvaWQgX2V3a19mcmFtZV9zbWFydF9kZWwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgV1JOKCJv
PSVwIiwgbyk7IC8vIFhYWCBSRU1PVkUgTUUgTEFURVIKICAgICBFV0tfRlJBTUVfU0RfR0VUKG8s
IHNkKTsKIAogICAgIGlmIChzZCkgewogICAgICAgICBpZiAoc2QtPmZyYW1lKSB7Ci0gICAgICAg
ICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCAqZmxjID0gX2V3a19mcmFtZV9sb2Fk
ZXJfZWZsX2dldChzZC0+ZnJhbWUpOworICAgICAgICAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmwqIGZsYyA9IF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQoc2QtPmZyYW1lKTsKICAg
ICAgICAgICAgIGZsYy0+c2V0V2ViRnJhbWUoMCk7CiAgICAgICAgICAgICBzZC0+ZnJhbWUtPmxv
YWRlcigpLT5kZXRhY2hGcm9tUGFyZW50KCk7CiAgICAgICAgICAgICBzZC0+ZnJhbWUtPmxvYWRl
cigpLT5jYW5jZWxBbmRDbGVhcigpOwpAQCAtMzAxLDggKzMwMSw4IEBAIEV2YXNfT2JqZWN0KiBl
d2tfZnJhbWVfdmlld19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiBFaW5hX0l0ZXJhdG9yKiBl
d2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV3KEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKLSAgICBFaW5hX0l0ZXJhdG9yX0V3
a19GcmFtZSogaXQgPSAoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUqKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhbGxvYygxLCBzaXplb2YoRWluYV9JdGVyYXRvcl9Fd2tfRnJh
bWUpKTsKKyAgICBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSogaXQgPSBzdGF0aWNfY2FzdDxFaW5h
X0l0ZXJhdG9yX0V3a19GcmFtZSo+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGNhbGxvYygxLCBzaXplb2YoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUpKSk7CiAgICAgaWYgKCFp
dCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTY4Niw3ICs2ODYsNyBAQCBFd2tfSGl0X1Rlc3Qq
IGV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCB4LCBpbnQg
eSkKICAgICBpZiAoIXJlc3VsdC5pbm5lck5vZGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBFd2tfSGl0X1Rlc3QqIGhpdF90ZXN0ID0gKEV3a19IaXRfVGVzdCopY2FsbG9jKDEsIHNpemVv
ZihFd2tfSGl0X1Rlc3QpKTsKKyAgICBFd2tfSGl0X1Rlc3QqIGhpdF90ZXN0ID0gc3RhdGljX2Nh
c3Q8RXdrX0hpdF9UZXN0Kj4oY2FsbG9jKDEsIHNpemVvZihFd2tfSGl0X1Rlc3QpKSk7CiAgICAg
aWYgKCFoaXRfdGVzdCkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIG1l
bW9yeSBmb3IgaGl0IHRlc3QuIik7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfaGlzdG9yeS5jcHAKaW5kZXggOWFlN2FhMTI1Y2IxYWI2NjNhOWY0ZmY1MTAxY2MwMmMx
YjVlMGQzYS4uNjJkNzc0Mjk4NmMyM2EyMjI0OGIzOGVhNzFiMTQ5NDk0MGUxNzk2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBp
bmxpbmUgRXdrX0hpc3RvcnlfSXRlbSogX2V3a19oaXN0b3J5X2l0ZW1fbmV3KFdlYkNvcmU6Okhp
c3RvcnlJdGVtKiBjb3JlCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGl0ZW0gPSAo
RXdrX0hpc3RvcnlfSXRlbSopY2FsbG9jKDEsIHNpemVvZihFd2tfSGlzdG9yeV9JdGVtKSk7Cisg
ICAgaXRlbSA9IHN0YXRpY19jYXN0PEV3a19IaXN0b3J5X0l0ZW0qPihjYWxsb2MoMSwgc2l6ZW9m
KEV3a19IaXN0b3J5X0l0ZW0pKSk7CiAgICAgaWYgKCFpdGVtKSB7CiAgICAgICAgIENSSVRJQ0FM
KCJDb3VsZCBub3QgYWxsb2NhdGUgaXRlbSBtZW1vcnkuIik7CiAgICAgICAgIHJldHVybiAwOwpA
QCAtMjcxLDcgKzI3MSw3IEBAIGNvbnN0IGNoYXIqIGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfZ2V0
KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiB7CiAgICAgRVdLX0hJU1RPUllfSVRFTV9D
T1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CiAgICAgLy8gaGlkZSB0aGUgZm9sbG93
aW5nIG9wdGltemF0aW9uIGZyb20gb3V0c2lkZQotICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSAo
RXdrX0hpc3RvcnlfSXRlbSopaXRlbTsKKyAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gY29uc3Rf
Y2FzdDxFd2tfSGlzdG9yeV9JdGVtKj4oaXRlbSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBs
YWNlKCZpLT50aXRsZSwgY29yZS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4g
aS0+dGl0bGU7CiB9CkBAIC0yODAsNyArMjgwLDcgQEAgY29uc3QgY2hhciogZXdrX2hpc3Rvcnlf
aXRlbV90aXRsZV9hbHRlcm5hdGVfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiB7
CiAgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7
CiAgICAgLy8gaGlkZSB0aGUgZm9sbG93aW5nIG9wdGltemF0aW9uIGZyb20gb3V0c2lkZQotICAg
IEV3a19IaXN0b3J5X0l0ZW0qIGkgPSAoRXdrX0hpc3RvcnlfSXRlbSopaXRlbTsKKyAgICBFd2tf
SGlzdG9yeV9JdGVtKiBpID0gY29uc3RfY2FzdDxFd2tfSGlzdG9yeV9JdGVtKj4oaXRlbSk7CiAg
ICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZpLT5hbHRlcm5hdGVfdGl0bGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvcmUtPmFsdGVybmF0ZVRpdGxlKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgcmV0dXJuIGktPmFsdGVybmF0ZV90aXRsZTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBj
b25zdCBjaGFyKiBld2tfaGlzdG9yeV9pdGVtX3VyaV9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRl
bSogaXRlbSkKIHsKICAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVt
LCBjb3JlLCAwKTsKICAgICAvLyBoaWRlIHRoZSBmb2xsb3dpbmcgb3B0aW16YXRpb24gZnJvbSBv
dXRzaWRlCi0gICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IChFd2tfSGlzdG9yeV9JdGVtKilpdGVt
OworICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSBjb25zdF9jYXN0PEV3a19IaXN0b3J5X0l0ZW0q
PigoaXRlbSkpOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmaS0+dXJpLCBjb3JlLT51
cmxTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gaS0+dXJpOwogfQpAQCAtMzA3
LDcgKzMwNyw3IEBAIGNvbnN0IGNoYXIqIGV3a19oaXN0b3J5X2l0ZW1fdXJpX29yaWdpbmFsX2dl
dChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQogewogICAgIEVXS19ISVNUT1JZX0lURU1f
Q09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUsIDApOwogICAgIC8vIGhpZGUgdGhlIGZvbGxv
d2luZyBvcHRpbXphdGlvbiBmcm9tIG91dHNpZGUKLSAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0g
KEV3a19IaXN0b3J5X0l0ZW0qKWl0ZW07CisgICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IGNvbnN0
X2Nhc3Q8RXdrX0hpc3RvcnlfSXRlbSo+KGl0ZW0pOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVw
bGFjZSgmaS0+b3JpZ2luYWxfdXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Jl
LT5vcmlnaW5hbFVSTFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHJldHVybiBpLT5vcmln
aW5hbF91cmk7CkBAIC0zODMsNyArMzgzLDcgQEAgRXdrX0hpc3RvcnkqIGV3a19oaXN0b3J5X25l
dyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBjb3JlKQogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChjb3JlLCAwKTsKICAgICBEQkcoImNvcmU9JXAiLCBjb3JlKTsKIAot
ICAgIGhpc3RvcnkgPSAoRXdrX0hpc3RvcnkqKW1hbGxvYyhzaXplb2YoRXdrX0hpc3RvcnkpKTsK
KyAgICBoaXN0b3J5ID0gc3RhdGljX2Nhc3Q8RXdrX0hpc3RvcnkqPihtYWxsb2Moc2l6ZW9mKEV3
a19IaXN0b3J5KSkpOwogICAgIGlmICghaGlzdG9yeSkgewogICAgICAgICBDUklUSUNBTCgiQ291
bGQgbm90IGFsbG9jYXRlIGhpc3RvcnkgbWVtb3J5LiIpOwogICAgICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDQ3ODY5YzY4YjM4MDhjYWQxMDQyMTZlYmFj
YjNiZWYwZTY1NjQ2YWQuLmViMTI2YTE3ZmU3NTlkZTdhZWM1OGVmNWI0OGM5MTMyNWMxOWU5NTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICNlbmRpZgogCiAjZGVmaW5lIEVXS19WSUVXX1NE
X0dFVChvLCBwdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnB0ciA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29iamVjdF9z
bWFydF9kYXRhX2dldChvKQorICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHB0ciA9IHN0YXRpY19j
YXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKSkK
IAogI2RlZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHB0ciwgLi4uKSAgICAgICAg
ICBcCiAgICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAg
ICAgIFwKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19yZXBh
aW50c19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3QgcwogICAgICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgcHJpdi0+cmVwYWludHMuYWxsb2NhdGVk
ID0gc2l6ZTsKLSAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9IChFaW5hX1JlY3RhbmdsZSopdG1w
OworICAgIHByaXYtPnJlcGFpbnRzLmFycmF5ID0gc3RhdGljX2Nhc3Q8RWluYV9SZWN0YW5nbGUq
Pih0bXApOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKQEAgLTI5MSw3ICsyOTEsNyBAQCBz
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zY3JvbGxzX3Jlc2l6ZShFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXYsIHNpemVfdCBzaQogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9
CiAgICAgcHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQgPSBzaXplOwotICAgIHByaXYtPnNjcm9sbHMu
YXJyYXkgPSAoRXdrX1Njcm9sbF9SZXF1ZXN0Kil0bXA7CisgICAgcHJpdi0+c2Nyb2xscy5hcnJh
eSA9IHN0YXRpY19jYXN0PEV3a19TY3JvbGxfUmVxdWVzdCo+KHRtcCk7CiAgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKIH0KIApAQCAtNDcwLDcgKzQ3MCw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwK
IC8vIEV2ZW50IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX2luKHZvaWQq
IGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7Cisg
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9E
YXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfaW4pOwogICAgIHNk
LT5hcGktPmZvY3VzX2luKHNkKTsKQEAgLTQ3OCw3ICs0NzgsNyBAQCBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfb25fZm9jdXNfaW4odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZv
aWQqIGV2ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KHZvaWQqIGRhdGEs
IEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4o
ZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfb3V0KTsKICAgICBzZC0+YXBp
LT5mb2N1c19vdXQoc2QpOwpAQCAtNDg2LDggKzQ4Niw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19vbl9mb2N1c19vdXQodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQq
IGV2CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkKiBkYXRhLCBF
dmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2
ZW50X01vdXNlX1doZWVsKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1doZWVsKilldmVudF9pbmZv
OwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRh
dGE7CisgICAgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYgPSBzdGF0aWNfY2FzdDxFdmFzX0V2
ZW50X01vdXNlX1doZWVsKj4oZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oc2QtPmFwaS0+bW91c2Vfd2hlZWwpOwogICAgIHNkLT5hcGktPm1vdXNlX3doZWVsKHNk
LCBldik7CkBAIC00OTUsOCArNDk1LDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNl
X3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKgogCiBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFz
X09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX0Rv
d24qIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfRG93biopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNf
RXZlbnRfTW91c2VfRG93biogZXYgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX0Rvd24q
PihldmVudF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0
PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5t
b3VzZV9kb3duKTsKICAgICBzZC0+YXBpLT5tb3VzZV9kb3duKHNkLCBldik7CkBAIC01MDQsOCAr
NTA0LDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24odm9pZCogZGF0YSwg
RXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGUKIAogc3RhdGljIHZvaWQgX2V3a192aWV3
X29uX21vdXNlX3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBl
dmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ID0gKEV2YXNfRXZlbnRf
TW91c2VfVXAqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdr
X1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X01vdXNlX1VwKiBldiA9IHN0
YXRpY19jYXN0PEV2YXNfRXZlbnRfTW91c2VfVXAqPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRh
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV91cCk7CiAgICAgc2QtPmFwaS0+bW91
c2VfdXAoc2QsIGV2KTsKQEAgLTUxMyw4ICs1MTMsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
b25fbW91c2VfdXAodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2
ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFz
KiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50
X01vdXNlX01vdmUqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfTW92ZSopZXZlbnRfaW5mbzsKLSAg
ICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwor
ICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01v
dXNlX01vdmUqPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0
YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
ZC0+YXBpLT5tb3VzZV9tb3ZlKTsKICAgICBzZC0+YXBpLT5tb3VzZV9tb3ZlKHNkLCBldik7CkBA
IC01MjIsOCArNTIyLDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX21vdmUodm9p
ZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGUKIAogc3RhdGljIHZvaWQg
X2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBv
LCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2ID0gKEV2
YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X0tleV9Eb3du
KiBldiA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfS2V5X0Rvd24qPihldmVudF9pbmZvKTsKKyAg
ICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0Rh
dGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfZG93bik7CiAgICAgc2Qt
PmFwaS0+a2V5X2Rvd24oc2QsIGV2KTsKQEAgLTUzMSw4ICs1MzEsOCBAQCBzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfb25fa2V5X2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8s
IHZvaWQqIGV2ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X3VwKHZvaWQqIGRhdGEs
IEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNf
RXZlbnRfS2V5X1VwKiBldiA9IChFdmFzX0V2ZW50X0tleV9VcCopZXZlbnRfaW5mbzsKLSAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAg
IEV2YXNfRXZlbnRfS2V5X1VwKiBldiA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfS2V5X1VwKj4o
ZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxF
d2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+a2V5
X3VwKTsKICAgICBzZC0+YXBpLT5rZXlfdXAoc2QsIGV2KTsKQEAgLTU1NSw3ICs1NTUsNyBAQCBz
dGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklU
X05VTEw7CiBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXco
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2ID0KLSAgICAgICAgKEV3a19WaWV3X1ByaXZhdGVfRGF0YSopY2FsbG9jKDEsIHNpemVvZihF
d2tfVmlld19Qcml2YXRlX0RhdGEpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKj4oY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0RhdGEpKSk7CiAg
ICAgQXRvbWljU3RyaW5nIHM7CiAgICAgV2ViQ29yZTo6S1VSTCB1cmw7CiAKQEAgLTcyNCwxMiAr
NzI0LDEyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgY29uc3QgRXZhc19TbWFydCogc21hcnQgPSBldmFzX29iamVjdF9zbWFydF9zbWFy
dF9nZXQobyk7CiAgICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyogc2MgPSBldmFzX3NtYXJ0X2Ns
YXNzX2dldChzbWFydCk7Ci0gICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IChj
b25zdCBFd2tfVmlld19TbWFydF9DbGFzcyopc2M7CisgICAgY29uc3QgRXdrX1ZpZXdfU21hcnRf
Q2xhc3MqIGFwaSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mq
PihzYyk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXBpLT5iYWNraW5nX3N0b3Jl
X2FkZCk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmICghc2QpIHsKLSAg
ICAgICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopY2FsbG9jKDEsIHNpemVvZihFd2tfVmll
d19TbWFydF9EYXRhKSk7CisgICAgICAgIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRf
RGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpKTsKICAgICAgICAg
aWYgKCFzZCkgewogICAgICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tf
Vmlld19TbWFydF9EYXRhIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05MjYsMTIgKzkyNiwx
MiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmlld19T
bWFydF9EYXRhKiBzZCwgZmxvYXQgem9vbSwgRQogICAgIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dl
dChzZC0+bWFpbl9mcmFtZSwgJngsICZ5KTsKIAogICAgIGlmICh3ICsgc2QtPnZpZXcudyA+IDAp
Ci0gICAgICAgIHB4ID0gKGRvdWJsZSkoeCArIGN4KSAvICh3ICsgc2QtPnZpZXcudyk7CisgICAg
ICAgIHB4ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPigoeCArIGN4KSAvICh3ICsgc2QtPnZpZXcudykp
OwogICAgIGVsc2UKICAgICAgICAgcHggPSAwLjA7CiAKICAgICBpZiAoaCArIHNkLT52aWV3Lmgg
PiAwKQotICAgICAgICBweSA9IChkb3VibGUpKHkgKyBjeSkgLyAoaCArIHNkLT52aWV3LmgpOwor
ICAgICAgICBweSA9IHN0YXRpY19jYXN0PGRvdWJsZT4oKHkgKyBjeSkgLyAoaCArIHNkLT52aWV3
LmgpKTsKICAgICBlbHNlCiAgICAgICAgIHB5ID0gMC4wOwogCkBAIC0xMDA0LDcgKzEwMDQsNyBA
QCBzdGF0aWMgZmxvYXQgX2V3a192aWV3X3pvb21fYW5pbWF0ZWRfY3VycmVudChFd2tfVmlld19Q
cml2YXRlX0RhdGEqIHByaXYpCiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3pvb21fYW5p
bWF0b3JfY2Iodm9pZCogZGF0YSkKIHsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChF
d2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0g
c3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEV2YXNfQ29vcmQg
Y3gsIGN5OwogICAgIEVXS19WSUVXX1BSSVZfR0VUKHNkLCBwcml2KTsKICAgICBkb3VibGUgbm93
ID0gZWNvcmVfbG9vcF90aW1lX2dldCgpOwpAQCAtMTA0OCwxNCArMTA0OCwxMCBAQCBzdGF0aWMg
V2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tfdmlld192aWV3cG9ydF9hdHRyaWJ1dGVz
X2NvbXB1dGUoY29uc3QgRQogICAgIGludCBkZXNrdG9wX3dpZHRoID0gOTgwOwogICAgIGludCBk
ZXZpY2VfZHBpID0gZXdrX3V0aWxfZHBpX2dldCgpOwogCi0gICAgaW50IGF2YWlsYWJsZV93aWR0
aCA9IChpbnQpIHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFnZVJlY3QoKS53aWR0
aCgpOwotICAgIGludCBhdmFpbGFibGVfaGVpZ2h0ID0gKGludCkgcHJpdi0+cGFnZS0+Y2hyb21l
KCktPmNsaWVudCgpLT5wYWdlUmVjdCgpLmhlaWdodCgpOworICAgIFdlYkNvcmU6OkludFJlY3Qg
YXZhaWxhYmxlX3JlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHByaXYtPnBhZ2UtPmNocm9tZSgpLT5j
bGllbnQoKS0+cGFnZVJlY3QoKSk7CisgICAgV2ViQ29yZTo6SW50UmVjdCBkZXZpY2VfcmVjdCA9
IGVuY2xvc2luZ0ludFJlY3QocHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53aW5kb3dS
ZWN0KCkpOwogCi0gICAgaW50IGRldmljZV93aWR0aCA9IChpbnQpIHByaXYtPnBhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+d2luZG93UmVjdCgpLndpZHRoKCk7Ci0gICAgaW50IGRldmljZV9oZWln
aHQgPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPndpbmRvd1JlY3QoKS5o
ZWlnaHQoKTsKLQotICAgIFdlYkNvcmU6OkludFNpemUgYXZhaWxhYmxlX3NpemUgPSBXZWJDb3Jl
OjpJbnRTaXplKGF2YWlsYWJsZV93aWR0aCwgYXZhaWxhYmxlX2hlaWdodCk7Ci0gICAgV2ViQ29y
ZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpjb21wdXRlVmlld3Bv
cnRBdHRyaWJ1dGVzKHByaXYtPnZpZXdwb3J0X2FyZ3VtZW50cywgZGVza3RvcF93aWR0aCwgZGV2
aWNlX3dpZHRoLCBkZXZpY2VfaGVpZ2h0LCBkZXZpY2VfZHBpLCBhdmFpbGFibGVfc2l6ZSk7Cisg
ICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBXZWJDb3JlOjpjb21w
dXRlVmlld3BvcnRBdHRyaWJ1dGVzKHByaXYtPnZpZXdwb3J0X2FyZ3VtZW50cywgZGVza3RvcF93
aWR0aCwgZGV2aWNlX3JlY3Qud2lkdGgoKSwgZGV2aWNlX3JlY3QuaGVpZ2h0KCksIGRldmljZV9k
cGksIGF2YWlsYWJsZV9yZWN0LnNpemUoKSk7CiAKICAgICByZXR1cm4gYXR0cmlidXRlczsKIH0K
QEAgLTE1NjEsMTEgKzE1NTcsMTEgQEAgRWluYV9Cb29sIGV3a192aWV3X3pvb21fc2V0KEV2YXNf
T2JqZWN0KiBvLCBmbG9hdCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzX0Nvb3IKICAgICB9CiAK
ICAgICBpZiAoem9vbSA8IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7Ci0g
ICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRp
bmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICBXUk4oInpv
b20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2Nh
bGUsIHpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgaWYgKHpv
b20gPiBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSkgewotICAgICAgICBXUk4o
Inpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3Jh
bmdlLm1heF9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlz
ID4gJWYgOiAlZiIsIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCB6b29tKTsK
ICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogCkBAIC0xNjA1LDExICsxNjAxLDEx
IEBAIEVpbmFfQm9vbCBld2tfdmlld196b29tX3dlYWtfc2V0KEV2YXNfT2JqZWN0KiBvLCBmbG9h
dCB6b29tLCBFdmFzX0Nvb3JkIGN4LCBFdmFzCiAgICAgfQogCiAgICAgaWYgKHpvb20gPCBwcml2
LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSkgewotICAgICAgICBXUk4oInpvb20gbGV2
ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9z
Y2FsZSwgKGRvdWJsZSl6b29tKTsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAl
ZiIsIHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlLCB6b29tKTsKICAgICAgICAg
cmV0dXJuIEVJTkFfRkFMU0U7CiAgICAgfQogICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Mu
em9vbV9yYW5nZS5tYXhfc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYg
OiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3Vi
bGUpem9vbSk7CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCBwcml2LT5z
ZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwgem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5B
X0ZBTFNFOwogICAgIH0KIApAQCAtMTY2MSwxMSArMTY1NywxMSBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfem9vbV9hbmltYXRlZF9zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpvb20sIGZsb2F0IGR1
cmF0aW9uLAogICAgIH0KIAogICAgIGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5n
ZS5taW5fc2NhbGUpIHsKLSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChk
b3VibGUpcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7
CisgICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA8ICVmIDogJWYiLCBwcml2LT5zZXR0aW5ncy56
b29tX3JhbmdlLm1pbl9zY2FsZSwgem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwog
ICAgIH0KICAgICBpZiAoem9vbSA+IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxl
KSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYt
PnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICBX
Uk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVmIiwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5t
YXhfc2NhbGUsIHpvb20pOwogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAg
LTI0ODksNyArMjQ4NSw3IEBAIEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGV3a192aWV3X3BhaW50
X2NvbnRleHRfbmV3KEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiwKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwocHJpdi0+bWFpbl9mcmFtZSwgMCk7CiAgICAgV2ViQ29yZTo6
RnJhbWVWaWV3KiB2aWV3ID0gcHJpdi0+bWFpbl9mcmFtZS0+dmlldygpOwogICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3LCAwKTsKLSAgICBFd2tfVmlld19QYWludF9Db250
ZXh0KiBjdHh0ID0gKEV3a19WaWV3X1BhaW50X0NvbnRleHQqKW1hbGxvYyhzaXplb2YoKmN0eHQp
KTsKKyAgICBFd2tfVmlld19QYWludF9Db250ZXh0KiBjdHh0ID0gc3RhdGljX2Nhc3Q8RXdrX1Zp
ZXdfUGFpbnRfQ29udGV4dCo+KG1hbGxvYyhzaXplb2YoKmN0eHQpKSk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKGN0eHQsIDApOwogCiAgICAgY3R4dC0+Z2MgPSBuZXcgV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0KGNyKTsKQEAgLTMzNjQsNyArMzM2MCw3IEBAIHZvaWQgZXdr
X3ZpZXdfcG9wdXBfbmV3KEV2YXNfT2JqZWN0KiBvLCBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
IGNsaWVudCwgaW50IHNlCiAgICAgLy8gcG9wdWxhdGUgaXRlbXMKICAgICBjb25zdCBpbnQgc2l6
ZSA9IGNsaWVudC0+bGlzdFNpemUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICBFd2tfTWVudV9JdGVtKiBpdGVtID0gKEV3a19NZW51X0l0ZW0qKSBtYWxs
b2Moc2l6ZW9mKCppdGVtKSk7CisgICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNf
Y2FzdDxFd2tfTWVudV9JdGVtKj4obWFsbG9jKHNpemVvZigqaXRlbSkpKTsKICAgICAgICAgaWYg
KGNsaWVudC0+aXRlbUlzU2VwYXJhdG9yKGkpKQogICAgICAgICAgICAgaXRlbS0+dHlwZSA9IEVX
S19NRU5VX1NFUEFSQVRPUjsKICAgICAgICAgZWxzZSBpZiAoY2xpZW50LT5pdGVtSXNMYWJlbChp
KSkKQEAgLTMzOTYsNyArMzM5Miw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1cF9kZXN0cm95
KEV2YXNfT2JqZWN0KiBvKQogCiAgICAgdm9pZCogaXRlbXY7CiAgICAgRUlOQV9MSVNUX0ZSRUUo
cHJpdi0+cG9wdXAubWVudS5pdGVtcywgaXRlbXYpIHsKLSAgICAgICAgRXdrX01lbnVfSXRlbSog
aXRlbSA9IChFd2tfTWVudV9JdGVtKilpdGVtdjsKKyAgICAgICAgRXdrX01lbnVfSXRlbSogaXRl
bSA9IHN0YXRpY19jYXN0PEV3a19NZW51X0l0ZW0qPihpdGVtdik7CiAgICAgICAgIGVpbmFfc3Ry
aW5nc2hhcmVfZGVsKGl0ZW0tPnRleHQpOwogICAgICAgICBmcmVlKGl0ZW0pOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld19zaW5nbGUuY3BwIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAKaW5kZXggYjk5YzhhZDc5MTc1
MmNhYTg5MWEzMGViZWE5NGE0ZDBlN2ExZGY5Yy4uNWFkNjdmZWFkMzNhNjkwODU3OThlNTUzNmE1
MTVhOWFjNjUyNjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3
X3NpbmdsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5j
cHAKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NpbmdsZV9zbWFydF9h
ZGQoRXZhc19PYmplY3QqIG8pCiAKICAgICBfcGFyZW50X3NjLnNjLmFkZChvKTsKIAotICAgIHNk
ID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pOwor
ICAgIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2JqZWN0X3Nt
YXJ0X2RhdGFfZ2V0KG8pKTsKICAgICBpZiAoIXNkKQogICAgICAgICByZXR1cm47CiAKQEAgLTY3
LDcgKzY3LDcgQEAgc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2Jh
Y2tpbmdfc3RvcmVfYWRkKEV3a19WaWV3X1NtYXJ0X0RhdGEKIAogc3RhdGljIHZvaWQgX2V3a192
aWV3X3NpbmdsZV9zbWFydF9yZXNpemUoRXZhc19PYmplY3QqIG8sIEV2YXNfQ29vcmQgdywgRXZh
c19Db29yZCBoKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1Nt
YXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pOworICAgIEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2YXNfb2Jq
ZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pKTsKICAgICBfcGFyZW50X3NjLnNjLnJlc2l6ZShvLCB3LCBo
KTsKIAogICAgIGlmICghc2QpCkBAIC0yNTEsNyArMjUxLDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHMKICAgICAgICAgICAgICAgICBzeCwgc3kgKyBzaCArIHNyLT5keSwgc3csIC1zci0+ZHkp
OwogCiAgICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fdXAKLSAgICAgICAgICAg
ICAgICAoKHVpbnQzMl90KilwaXhlbHMsIC1zci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7Cisg
ICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgLXNyLT5keSwg
c3gsIHN5LCBzdywgc2gsIG93KTsKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFf
dXBkYXRlX2FkZAogICAgICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3gsIHN5LCBz
dywgc2ggKyBzci0+ZHkpOwogCkBAIC0yNjMsNyArMjYzLDcgQEAgc3RhdGljIGlubGluZSB2b2lk
IF9ld2tfdmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHMKICAgICAgICAgICAgICAgICBzeCwgc3ksIHN3LCBzci0+ZHkpOwogCiAgICAgICAgICAg
ICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fZG93bgotICAgICAgICAgICAgICAgICgodWludDMy
X3QqKXBpeGVscywgc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCwgb3cpOworICAgICAgICAgICAgICAg
IChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIHNyLT5keSwgc3gsIHN5LCBzdywgc2gs
IG93KTsKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAogICAg
ICAgICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3gsIHN5ICsgc3ItPmR5LCBzdywgc2gg
LSBzci0+ZHkpOwogCkBAIC0yNzcsNyArMjc3LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tf
dmlld19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHMK
ICAgICAgICAgICAgICAgICBzeCArIHN3ICsgc3ItPmR4LCBzeSwgLXNyLT5keCwgc2gpOwogCiAg
ICAgICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb25fbGVmdAotICAgICAgICAgICAgICAg
ICgodWludDMyX3QqKXBpeGVscywgLXNyLT5keCwgc3gsIHN5LCBzdywgc2gsIG93KTsKKyAgICAg
ICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCAtc3ItPmR4LCBzeCwg
c3ksIHN3LCBzaCwgb3cpOwogICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRh
dGVfYWRkCiAgICAgICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCwgc3ksIHN3ICsg
c3ItPmR4LCBzaCk7CiAKQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3
a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSog
cwogICAgICAgICAgICAgICAgIHN4LCBzeSwgc3ItPmR4LCBzaCk7CiAKICAgICAgICAgICAgIF9l
d2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9yaWdodAotICAgICAgICAgICAgICAgICgodWludDMyX3Qq
KXBpeGVscywgc3ItPmR4LCBzeCwgc3ksIHN3LCBzaCwgb3cpOworICAgICAgICAgICAgICAgIChz
dGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIHNyLT5keCwgc3gsIHN5LCBzdywgc2gsIG93
KTsKICAgICAgICAgICAgIGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfdXBkYXRlX2FkZAogICAgICAg
ICAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc3ggKyBzci0+ZHgsIHN5LCBzdyAtIHNyLT5k
eCwgc2gpOwogCkBAIC0zMzIsNyArMzMyLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9ld2tfdmll
d19zaW5nbGVfc2Nyb2xsX3Byb2Nlc3Nfc2luZ2xlKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHMKICAg
ICAgICAgICAgIHNyLT5keCwgc3ItPmR5LCBteCwgbXksIG13LCBtaCwgYXgsIGF5LCBhdywgYWgs
IGJ4LCBieSwgYncsIGJoKTsKIAogICAgICAgICBfZXdrX3ZpZXdfNGJfbW92ZV9yZWdpb24KLSAg
ICAgICAgICAgICgodWludDMyX3QqKXBpeGVscywgc3ItPmR4LCBzci0+ZHksIHN4LCBzeSwgc3cs
IHNoLCBvdyk7CisgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCBz
ci0+ZHgsIHNyLT5keSwgc3gsIHN5LCBzdywgc2gsIG93KTsKIAogICAgICAgICBldmFzX29iamVj
dF9pbWFnZV9kYXRhX3VwZGF0ZV9hZGQoc2QtPmJhY2tpbmdfc3RvcmUsIG14LCBteSwgbXcsIG1o
KTsKICAgICAgICAgZXdrX3ZpZXdfcmVwYWludF9hZGQoc2QtPl9wcml2LCBheCwgYXksIGF3LCBh
aCk7CkBAIC00MDAsNyArNDAwLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc2luZ2xl
X3NtYXJ0X3JlcGFpbnRzX3Byb2Nlc3MoRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QKICAgICBmb3Jt
YXQgPSBDQUlST19GT1JNQVRfQVJHQjMyOwogCiAgICAgc3VyZmFjZSA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfY3JlYXRlX2Zvcl9kYXRhCi0gICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIq
KXBpeGVscywgZm9ybWF0LCBvdywgb2gsIG93ICogNCk7CisgICAgICAgICAgICAgICAgICAoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHBpeGVscyksIGZvcm1hdCwgb3csIG9oLCBvdyAqIDQp
OwogICAgIHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3RhdHVzKHN1cmZhY2UpOwogICAgIGlmIChz
dGF0dXMgIT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpIHsKICAgICAgICAgRVJSKCJjb3VsZCBub3Qg
Y3JlYXRlIHN1cmZhY2UgZnJvbSBkYXRhICVkeCVkOiAlcyIsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3X3RpbGVkLmNwcAppbmRleCA0OTc1MWJkOWQ5ZTVmNWEzMDg2YTUzYjQ4MzQ2ZGI1
OTdiYzRjNDVmLi5mODdmNDhiZDlmYTM0MGUwYjM0NjkyMTA2YWU0ZGMyNWViNTljNWU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfdGlsZWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAg
c3RhdGljIEV3a19WaWV3X1NtYXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFV0tfVklFV19TTUFSVF9D
TEFTU19JTklUX05VTEw7CiAKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3RpbGVkX3JlbmRl
cl9jYih2b2lkKiBkYXRhLCBFd2tfVGlsZSogdCwgY29uc3QgRWluYV9SZWN0YW5nbGUqIGFyZWEp
CiB7Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gKEV3a19WaWV3X1ByaXZhdGVf
RGF0YSopZGF0YTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSBzdGF0aWNfY2Fz
dDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihkYXRhKTsKICAgICBFaW5hX1JlY3RhbmdsZSByID0g
e2FyZWEtPnggKyB0LT54LCBhcmVhLT55ICsgdC0+eSwgYXJlYS0+dywgYXJlYS0+aH07CiAKICAg
ICByZXR1cm4gZXdrX3ZpZXdfcGFpbnRfY29udGVudHMocHJpdiwgdC0+Y2Fpcm8sICZyKTsKQEAg
LTQwLDcgKzQwLDcgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2Ni
KHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0LCBjb25zdCBFaW5hX1IKIAogc3RhdGljIHZvaWQqIF9l
d2tfdmlld190aWxlZF91cGRhdGVzX3Byb2Nlc3NfcHJlKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0
KiBvKQogewotICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IChFd2tfVmlld19Qcml2
YXRlX0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKj4oZGF0YSk7CiAgICAgZXdrX3ZpZXdfbGF5b3V0
X2lmX25lZWRlZF9yZWN1cnNpdmUocHJpdik7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC01OCw4ICs1
OCw4IEBAIHN0YXRpYyBFdmFzX09iamVjdCogX2V3a192aWV3X3RpbGVkX3NtYXJ0X2JhY2tpbmdf
c3RvcmVfYWRkKEV3a19WaWV3X1NtYXJ0X0RhdGEqCiBzdGF0aWMgdm9pZAogX2V3a192aWV3X3Rp
bGVkX2NvbnRlbnRzX3NpemVfY2hhbmdlZF9jYih2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogbywg
dm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0Nvb3JkKiBzaXplID0gKEV2YXNfQ29vcmQq
KWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21h
cnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0Nvb3JkKiBzaXplID0gc3RhdGljX2Nhc3Q8RXZhc19D
b29yZCo+KGV2ZW50X2luZm8pOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGlj
X2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwogCiAgICAgZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfY29udGVudHNfcmVzaXplCiAgICAgICAgIChzZC0+YmFja2luZ19zdG9yZSwgc2l6
ZVswXSwgc2l6ZVsxXSk7CkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld190
aWxlZF9zbWFydF9hZGQoRXZhc19PYmplY3QqIG8pCiAKICAgICBfcGFyZW50X3NjLnNjLmFkZChv
KTsKIAotICAgIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWV2YXNfb2JqZWN0X3NtYXJ0X2Rh
dGFfZ2V0KG8pOworICAgIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGV2
YXNfb2JqZWN0X3NtYXJ0X2RhdGFfZ2V0KG8pKTsKICAgICBpZiAoIXNkKQogICAgICAgICByZXR1
cm47CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109229</attachid>
            <date>2011-09-29 18:04:16 -0700</date>
            <delta_ts>2011-09-29 19:17:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68321-20110930100416.patch</filename>
            <type>text/plain</type>
            <size>26792</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTYzODAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA4ZWUyZmIxY2Qz
ZjgwMzE3MTIzMzAzMGJjNGUzM2U0MDI2M2YwYzdkLi5mZjcxYWM0MGU3MzZiMWQwNjNhMjNjZmI1
NDA5N2QyMTRjM2U2MDMxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTEt
MDktMjkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBbRUZMXSBVc2UgQysrIHR5cGUgY2FzdCBpbnN0ZWFkIG9mIEMgc3R5bGUgdHlwZSBjYXN0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODMyMQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgYSBz
ZWNvbmQgc3RlcCBpbiBvcmRlciB0byBiZSBtb3JlIGNvbXBsaWFudCB3aXRoIFdlYktpdCBjb2Rp
bmcgc3R5bGUuCisgICAgICAgIFRoZSBzZWNvbmQgc3RlcCBpcyB0byBjaGFuZ2UgQy10eXBlIGNh
c3Rpbmcgd2l0aCBDKystdHlwZSBjYXN0aW5nIGluIC5jcHAgZmlsZXMuCisKKyAgICAgICAgSW4g
YWRkaXRpb24sIHJlbWFpbmVkIGVmbCBzdHlsZSAnKicgcG9pbnRlciBwbGFjZW1lbnRzIGFyZSBt
b3ZlZCB0byB0aGUgcmlnaHQgcGxhY2UgYXMgd2VsbC4KKworICAgICAgICAqIGV3ay9ld2tfYXV0
aF9zb3VwLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2NvbnRleHRtZW51LmNwcDoKKyAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKiBld2svZXdrX2hpc3RvcnkuY3BwOgorICAg
ICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3NpbmdsZS5j
cHA6CisgICAgICAgICogZXdrL2V3a192aWV3X3RpbGVkLmNwcDoKKwogMjAxMS0wOS0yOSAgUmFw
aGFlbCBLdWJvIGRhIENvc3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbRUZM
XSBBUEkgdG8gZ2V0IHBsYWluIHRleHQgb2YgdGhlIGZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2F1dGhfc291cC5jcHAKaW5kZXggMDlmM2QwZGIxYzVkNzhjODE1ZGEyZTdlM2QxODRhNTRj
ZTlhYmQ4Yi4uZmIzNmE5MTU5ZjI3YjI3MmJhMWYzMDI2NDZkY2M3ZjAxZmYxNWFkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lk
IGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNoYXIqIHVzZXJuYW1lLCBjb25z
dCBjaGFyKiBwYXNzd29yZCwgdgogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgRXdrX0F1dGhfRGF0YSogYXV0aF9kYXRhID0gKEV3a19BdXRoX0RhdGEqKWRhdGE7CisgICAg
RXdrX0F1dGhfRGF0YSogYXV0aF9kYXRhID0gc3RhdGljX2Nhc3Q8RXdrX0F1dGhfRGF0YSo+KGRh
dGEpOwogICAgIHNvdXBfYXV0aF9hdXRoZW50aWNhdGUoYXV0aF9kYXRhLT5hdXRoLCB1c2VybmFt
ZSwgcGFzc3dvcmQpOwogICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21lc3NhZ2UoYXV0aF9kYXRh
LT5zZXNzaW9uLCBhdXRoX2RhdGEtPm1zZyk7CiAgICAgZnJlZV9hdXRoX2RhdGEoYXV0aF9kYXRh
KTsKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgc2Vzc2lvbl9hdXRoZW50aWNhdGUoU291
cFNlc3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBtc2csIFNvdXBBdXQKICAgICBpZiAoIWV3
a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRo
X2RhdGEgPSAoRXdrX0F1dGhfRGF0YSopY2FsbG9jKDEsIHNpemVvZihFd2tfQXV0aF9EYXRhKSk7
CisgICAgYXV0aF9kYXRhID0gc3RhdGljX2Nhc3Q8RXdrX0F1dGhfRGF0YSo+KGNhbGxvYygxLCBz
aXplb2YoRXdrX0F1dGhfRGF0YSkpKTsKIAogICAgIGlmICghYXV0aF9kYXRhKSB7CiAgICAgICAg
IENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX0F1dGhfRGF0YSIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAppbmRleCA4NTc5MjZiNzg5NjhjNGQ0MTk0
MGYzZDQxZGZlY2JjMjA4OTgyZTIwLi5hYTE2MTlmZDkxOGYxMjYzMGEwMTcwMjJiNmVkZmUzZTcz
Y2NjOGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcApAQCAt
MTAzLDcgKzEwMyw3IEBAIEV3a19Db250ZXh0X01lbnVfSXRlbSogZXdrX2NvbnRleHRfbWVudV9p
dGVtX25ldyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdrX0NvbnRleHRfTWVudV9BY3Rpb24g
YWN0aW9uLCBFd2tfQ29udGV4dF9NZW51KiBzdWJtZW51LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHRpdGxlLCBFaW5hX0Jvb2wg
Y2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCiB7Ci0gICAgRXdrX0NvbnRleHRfTWVudV9JdGVt
KiBpdGVtID0gKEV3a19Db250ZXh0X01lbnVfSXRlbSopIG1hbGxvYyhzaXplb2YoKml0ZW0pKTsK
KyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4
dF9NZW51X0l0ZW0qPihtYWxsb2Moc2l6ZW9mKCppdGVtKSkpOwogICAgIGlmICghaXRlbSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggNTdl
YWUxMmI0NWJmZjZiMzRhNzc0MjNjNjY1OWRlNDhmMWRkNTk2NS4uYmM4ZjhhZTY2ZTNlNjhhNzMw
NWVhZmExZjljOTIzOTQ4NjJmNTkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAK
QEAgLTEwMSw3ICsxMDEsNyBAQCBzdHJ1Y3QgRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUgewogI2Vu
ZGlmCiAKICNkZWZpbmUgRVdLX0ZSQU1FX1NEX0dFVChvLCBwdHIpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgRXdrX0ZyYW1lX1NtYXJ0X0RhdGEgKnB0ciA9IChFd2tfRnJh
bWVfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobykKKyAgICBFd2tfRnJh
bWVfU21hcnRfRGF0YSogcHRyID0gc3RhdGljX2Nhc3Q8RXdrX0ZyYW1lX1NtYXJ0X0RhdGEqPihl
dmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKSkKIAogI2RlZmluZSBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihvLCBwdHIsIC4uLikgICAgICAgICBcCiAgICAgRVdLX0ZSQU1FX1RZUEVfQ0hF
Q0sobywgX19WQV9BUkdTX18pOyAgICAgICAgICAgICAgIFwKQEAgLTE4MSw3ICsxODEsNyBAQCBz
dGF0aWMgdm9pZCBfZXdrX2ZyYW1lX3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKICAgICBFV0tf
RlJBTUVfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmICghc2QpIHsKLSAgICAgICAgc2QgPSAoRXdr
X0ZyYW1lX1NtYXJ0X0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEp
KTsKKyAgICAgICAgc2QgPSBzdGF0aWNfY2FzdDxFd2tfRnJhbWVfU21hcnRfRGF0YSo+KGNhbGxv
YygxLCBzaXplb2YoRXdrX0ZyYW1lX1NtYXJ0X0RhdGEpKSk7CiAgICAgICAgIGlmICghc2QpIHsK
ICAgICAgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdrX0ZyYW1lX1NtYXJ0
X0RhdGEiKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIzMywxNCArMjMzLDE0IEBAIHN0YXRp
YyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBvKQogI2VuZGlmCiB9CiAK
LXN0YXRpYyB2b2lkIF9ld2tfZnJhbWVfc21hcnRfZGVsKEV2YXNfT2JqZWN0ICpvKQorc3RhdGlj
IHZvaWQgX2V3a19mcmFtZV9zbWFydF9kZWwoRXZhc19PYmplY3QqIG8pCiB7CiAgICAgV1JOKCJv
PSVwIiwgbyk7IC8vIFhYWCBSRU1PVkUgTUUgTEFURVIKICAgICBFV0tfRlJBTUVfU0RfR0VUKG8s
IHNkKTsKIAogICAgIGlmIChzZCkgewogICAgICAgICBpZiAoc2QtPmZyYW1lKSB7Ci0gICAgICAg
ICAgICBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbCAqZmxjID0gX2V3a19mcmFtZV9sb2Fk
ZXJfZWZsX2dldChzZC0+ZnJhbWUpOworICAgICAgICAgICAgV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRFZmwqIGZsYyA9IF9ld2tfZnJhbWVfbG9hZGVyX2VmbF9nZXQoc2QtPmZyYW1lKTsKICAg
ICAgICAgICAgIGZsYy0+c2V0V2ViRnJhbWUoMCk7CiAgICAgICAgICAgICBzZC0+ZnJhbWUtPmxv
YWRlcigpLT5kZXRhY2hGcm9tUGFyZW50KCk7CiAgICAgICAgICAgICBzZC0+ZnJhbWUtPmxvYWRl
cigpLT5jYW5jZWxBbmRDbGVhcigpOwpAQCAtMzAxLDggKzMwMSw4IEBAIEV2YXNfT2JqZWN0KiBl
d2tfZnJhbWVfdmlld19nZXQoY29uc3QgRXZhc19PYmplY3QqIG8pCiBFaW5hX0l0ZXJhdG9yKiBl
d2tfZnJhbWVfY2hpbGRyZW5faXRlcmF0b3JfbmV3KEV2YXNfT2JqZWN0KiBvKQogewogICAgIEVX
S19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCAwKTsKLSAgICBFaW5hX0l0ZXJhdG9yX0V3
a19GcmFtZSogaXQgPSAoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUqKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhbGxvYygxLCBzaXplb2YoRWluYV9JdGVyYXRvcl9Fd2tfRnJh
bWUpKTsKKyAgICBFaW5hX0l0ZXJhdG9yX0V3a19GcmFtZSogaXQgPSBzdGF0aWNfY2FzdDxFaW5h
X0l0ZXJhdG9yX0V3a19GcmFtZSo+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGNhbGxvYygxLCBzaXplb2YoRWluYV9JdGVyYXRvcl9Fd2tfRnJhbWUpKSk7CiAgICAgaWYgKCFp
dCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTY4Niw3ICs2ODYsNyBAQCBFd2tfSGl0X1Rlc3Qq
IGV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QqIG8sIGludCB4LCBpbnQg
eSkKICAgICBpZiAoIXJlc3VsdC5pbm5lck5vZGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICBFd2tfSGl0X1Rlc3QqIGhpdF90ZXN0ID0gKEV3a19IaXRfVGVzdCopY2FsbG9jKDEsIHNpemVv
ZihFd2tfSGl0X1Rlc3QpKTsKKyAgICBFd2tfSGl0X1Rlc3QqIGhpdF90ZXN0ID0gc3RhdGljX2Nh
c3Q8RXdrX0hpdF9UZXN0Kj4oY2FsbG9jKDEsIHNpemVvZihFd2tfSGl0X1Rlc3QpKSk7CiAgICAg
aWYgKCFoaXRfdGVzdCkgewogICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIG1l
bW9yeSBmb3IgaGl0IHRlc3QuIik7CiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfaGlzdG9yeS5jcHAKaW5kZXggOWFlN2FhMTI1Y2IxYWI2NjNhOWY0ZmY1MTAxY2MwMmMx
YjVlMGQzYS4uNjJkNzc0Mjk4NmMyM2EyMjI0OGIzOGVhNzFiMTQ5NDk0MGUxNzk2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBp
bmxpbmUgRXdrX0hpc3RvcnlfSXRlbSogX2V3a19oaXN0b3J5X2l0ZW1fbmV3KFdlYkNvcmU6Okhp
c3RvcnlJdGVtKiBjb3JlCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGl0ZW0gPSAo
RXdrX0hpc3RvcnlfSXRlbSopY2FsbG9jKDEsIHNpemVvZihFd2tfSGlzdG9yeV9JdGVtKSk7Cisg
ICAgaXRlbSA9IHN0YXRpY19jYXN0PEV3a19IaXN0b3J5X0l0ZW0qPihjYWxsb2MoMSwgc2l6ZW9m
KEV3a19IaXN0b3J5X0l0ZW0pKSk7CiAgICAgaWYgKCFpdGVtKSB7CiAgICAgICAgIENSSVRJQ0FM
KCJDb3VsZCBub3QgYWxsb2NhdGUgaXRlbSBtZW1vcnkuIik7CiAgICAgICAgIHJldHVybiAwOwpA
QCAtMjcxLDcgKzI3MSw3IEBAIGNvbnN0IGNoYXIqIGV3a19oaXN0b3J5X2l0ZW1fdGl0bGVfZ2V0
KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiB7CiAgICAgRVdLX0hJU1RPUllfSVRFTV9D
T1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7CiAgICAgLy8gaGlkZSB0aGUgZm9sbG93
aW5nIG9wdGltemF0aW9uIGZyb20gb3V0c2lkZQotICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSAo
RXdrX0hpc3RvcnlfSXRlbSopaXRlbTsKKyAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0gY29uc3Rf
Y2FzdDxFd2tfSGlzdG9yeV9JdGVtKj4oaXRlbSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9yZXBs
YWNlKCZpLT50aXRsZSwgY29yZS0+dGl0bGUoKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4g
aS0+dGl0bGU7CiB9CkBAIC0yODAsNyArMjgwLDcgQEAgY29uc3QgY2hhciogZXdrX2hpc3Rvcnlf
aXRlbV90aXRsZV9hbHRlcm5hdGVfZ2V0KGNvbnN0IEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0pCiB7
CiAgICAgRVdLX0hJU1RPUllfSVRFTV9DT1JFX0dFVF9PUl9SRVRVUk4oaXRlbSwgY29yZSwgMCk7
CiAgICAgLy8gaGlkZSB0aGUgZm9sbG93aW5nIG9wdGltemF0aW9uIGZyb20gb3V0c2lkZQotICAg
IEV3a19IaXN0b3J5X0l0ZW0qIGkgPSAoRXdrX0hpc3RvcnlfSXRlbSopaXRlbTsKKyAgICBFd2tf
SGlzdG9yeV9JdGVtKiBpID0gY29uc3RfY2FzdDxFd2tfSGlzdG9yeV9JdGVtKj4oaXRlbSk7CiAg
ICAgZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZpLT5hbHRlcm5hdGVfdGl0bGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvcmUtPmFsdGVybmF0ZVRpdGxlKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgcmV0dXJuIGktPmFsdGVybmF0ZV90aXRsZTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBj
b25zdCBjaGFyKiBld2tfaGlzdG9yeV9pdGVtX3VyaV9nZXQoY29uc3QgRXdrX0hpc3RvcnlfSXRl
bSogaXRlbSkKIHsKICAgICBFV0tfSElTVE9SWV9JVEVNX0NPUkVfR0VUX09SX1JFVFVSTihpdGVt
LCBjb3JlLCAwKTsKICAgICAvLyBoaWRlIHRoZSBmb2xsb3dpbmcgb3B0aW16YXRpb24gZnJvbSBv
dXRzaWRlCi0gICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IChFd2tfSGlzdG9yeV9JdGVtKilpdGVt
OworICAgIEV3a19IaXN0b3J5X0l0ZW0qIGkgPSBjb25zdF9jYXN0PEV3a19IaXN0b3J5X0l0ZW0q
PigoaXRlbSkpOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmaS0+dXJpLCBjb3JlLT51
cmxTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICByZXR1cm4gaS0+dXJpOwogfQpAQCAtMzA3
LDcgKzMwNyw3IEBAIGNvbnN0IGNoYXIqIGV3a19oaXN0b3J5X2l0ZW1fdXJpX29yaWdpbmFsX2dl
dChjb25zdCBFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQogewogICAgIEVXS19ISVNUT1JZX0lURU1f
Q09SRV9HRVRfT1JfUkVUVVJOKGl0ZW0sIGNvcmUsIDApOwogICAgIC8vIGhpZGUgdGhlIGZvbGxv
d2luZyBvcHRpbXphdGlvbiBmcm9tIG91dHNpZGUKLSAgICBFd2tfSGlzdG9yeV9JdGVtKiBpID0g
KEV3a19IaXN0b3J5X0l0ZW0qKWl0ZW07CisgICAgRXdrX0hpc3RvcnlfSXRlbSogaSA9IGNvbnN0
X2Nhc3Q8RXdrX0hpc3RvcnlfSXRlbSo+KGl0ZW0pOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfcmVw
bGFjZSgmaS0+b3JpZ2luYWxfdXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3Jl
LT5vcmlnaW5hbFVSTFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIHJldHVybiBpLT5vcmln
aW5hbF91cmk7CkBAIC0zODMsNyArMzgzLDcgQEAgRXdrX0hpc3RvcnkqIGV3a19oaXN0b3J5X25l
dyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBjb3JlKQogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChjb3JlLCAwKTsKICAgICBEQkcoImNvcmU9JXAiLCBjb3JlKTsKIAot
ICAgIGhpc3RvcnkgPSAoRXdrX0hpc3RvcnkqKW1hbGxvYyhzaXplb2YoRXdrX0hpc3RvcnkpKTsK
KyAgICBoaXN0b3J5ID0gc3RhdGljX2Nhc3Q8RXdrX0hpc3RvcnkqPihtYWxsb2Moc2l6ZW9mKEV3
a19IaXN0b3J5KSkpOwogICAgIGlmICghaGlzdG9yeSkgewogICAgICAgICBDUklUSUNBTCgiQ291
bGQgbm90IGFsbG9jYXRlIGhpc3RvcnkgbWVtb3J5LiIpOwogICAgICAgICByZXR1cm4gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDQ3ODY5YzY4YjM4MDhjYWQxMDQyMTZlYmFj
YjNiZWYwZTY1NjQ2YWQuLjU5OTA2ZTMyZjE3ODYyOTUzODFjNWI3MDNhNjNhMjA0NTRiY2U0MGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHN0cnVj
dCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICNlbmRpZgogCiAjZGVmaW5lIEVXS19WSUVXX1NE
X0dFVChvLCBwdHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEgKnB0ciA9IChFd2tfVmlld19TbWFydF9EYXRhKilldmFzX29iamVjdF9z
bWFydF9kYXRhX2dldChvKQorICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHB0ciA9IHN0YXRpY19j
YXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihldmFzX29iamVjdF9zbWFydF9kYXRhX2dldChvKSkK
IAogI2RlZmluZSBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKG8sIHB0ciwgLi4uKSAgICAgICAg
ICBcCiAgICAgRVdLX1ZJRVdfVFlQRV9DSEVDSyhvLCBfX1ZBX0FSR1NfXyk7ICAgICAgICAgICAg
ICAgIFwKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19yZXBh
aW50c19yZXNpemUoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LCBzaXplX3QgcwogICAgICAg
ICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgcHJpdi0+cmVwYWludHMuYWxsb2NhdGVk
ID0gc2l6ZTsKLSAgICBwcml2LT5yZXBhaW50cy5hcnJheSA9IChFaW5hX1JlY3RhbmdsZSopdG1w
OworICAgIHByaXYtPnJlcGFpbnRzLmFycmF5ID0gc3RhdGljX2Nhc3Q8RWluYV9SZWN0YW5nbGUq
Pih0bXApOwogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKQEAgLTI5MSw3ICsyOTEsNyBAQCBz
dGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zY3JvbGxzX3Jlc2l6ZShFd2tfVmlld19Qcml2YXRl
X0RhdGEqIHByaXYsIHNpemVfdCBzaQogICAgICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9
CiAgICAgcHJpdi0+c2Nyb2xscy5hbGxvY2F0ZWQgPSBzaXplOwotICAgIHByaXYtPnNjcm9sbHMu
YXJyYXkgPSAoRXdrX1Njcm9sbF9SZXF1ZXN0Kil0bXA7CisgICAgcHJpdi0+c2Nyb2xscy5hcnJh
eSA9IHN0YXRpY19jYXN0PEV3a19TY3JvbGxfUmVxdWVzdCo+KHRtcCk7CiAgICAgcmV0dXJuIEVJ
TkFfVFJVRTsKIH0KIApAQCAtNDcwLDcgKzQ3MCw3IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192
aWV3X3NtYXJ0X3J1bl9qYXZhc2NyaXB0X3Byb21wdChFd2tfVmlld19TbWFydF9EYXRhKiBzZCwK
IC8vIEV2ZW50IEhhbmRsaW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2ZvY3VzX2luKHZvaWQq
IGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7Cisg
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9E
YXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAg
ICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfaW4pOwogICAgIHNk
LT5hcGktPmZvY3VzX2luKHNkKTsKQEAgLTQ3OCw3ICs0NzgsNyBAQCBzdGF0aWMgdm9pZCBfZXdr
X3ZpZXdfb25fZm9jdXNfaW4odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZv
aWQqIGV2ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KHZvaWQqIGRhdGEs
IEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV3a19W
aWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4o
ZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+Zm9jdXNfb3V0KTsKICAgICBzZC0+YXBp
LT5mb2N1c19vdXQoc2QpOwpAQCAtNDg2LDggKzQ4Niw4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmll
d19vbl9mb2N1c19vdXQodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQq
IGV2CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV93aGVlbCh2b2lkKiBkYXRhLCBF
dmFzKiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2
ZW50X01vdXNlX1doZWVsKiBldiA9IChFdmFzX0V2ZW50X01vdXNlX1doZWVsKilldmVudF9pbmZv
OwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19WaWV3X1NtYXJ0X0RhdGEqKWRh
dGE7CisgICAgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogZXYgPSBzdGF0aWNfY2FzdDxFdmFzX0V2
ZW50X01vdXNlX1doZWVsKj4oZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oc2QtPmFwaS0+bW91c2Vfd2hlZWwpOwogICAgIHNkLT5hcGktPm1vdXNlX3doZWVsKHNk
LCBldik7CkBAIC00OTUsOCArNDk1LDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNl
X3doZWVsKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKgogCiBzdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiBlLCBFdmFz
X09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50X01vdXNlX0Rv
d24qIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfRG93biopZXZlbnRfaW5mbzsKLSAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAgIEV2YXNf
RXZlbnRfTW91c2VfRG93biogZXYgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX0Rvd24q
PihldmVudF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0
PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5t
b3VzZV9kb3duKTsKICAgICBzZC0+YXBpLT5tb3VzZV9kb3duKHNkLCBldik7CkBAIC01MDQsOCAr
NTA0LDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX2Rvd24odm9pZCogZGF0YSwg
RXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGUKIAogc3RhdGljIHZvaWQgX2V3a192aWV3
X29uX21vdXNlX3VwKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBl
dmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfTW91c2VfVXAqIGV2ID0gKEV2YXNfRXZlbnRf
TW91c2VfVXAqKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdr
X1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X01vdXNlX1VwKiBldiA9IHN0
YXRpY19jYXN0PEV2YXNfRXZlbnRfTW91c2VfVXAqPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRh
KTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NB
RkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5tb3VzZV91cCk7CiAgICAgc2QtPmFwaS0+bW91
c2VfdXAoc2QsIGV2KTsKQEAgLTUxMyw4ICs1MTMsOCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
b25fbW91c2VfdXAodm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGV2
ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSh2b2lkKiBkYXRhLCBFdmFz
KiBlLCBFdmFzX09iamVjdCogbywgdm9pZCogZXZlbnRfaW5mbykKIHsKLSAgICBFdmFzX0V2ZW50
X01vdXNlX01vdmUqIGV2ID0gKEV2YXNfRXZlbnRfTW91c2VfTW92ZSopZXZlbnRfaW5mbzsKLSAg
ICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOwor
ICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSogZXYgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X01v
dXNlX01vdmUqPihldmVudF9pbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0
YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihz
ZC0+YXBpLT5tb3VzZV9tb3ZlKTsKICAgICBzZC0+YXBpLT5tb3VzZV9tb3ZlKHNkLCBldik7CkBA
IC01MjIsOCArNTIyLDggQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX21vdmUodm9p
ZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8sIHZvaWQqIGUKIAogc3RhdGljIHZvaWQg
X2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBv
LCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNfRXZlbnRfS2V5X0Rvd24qIGV2ID0gKEV2
YXNfRXZlbnRfS2V5X0Rvd24qKWV2ZW50X2luZm87Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSog
c2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZGF0YTsKKyAgICBFdmFzX0V2ZW50X0tleV9Eb3du
KiBldiA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfS2V5X0Rvd24qPihldmVudF9pbmZvKTsKKyAg
ICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0Rh
dGEqPihkYXRhKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5rZXlfZG93bik7CiAgICAgc2Qt
PmFwaS0+a2V5X2Rvd24oc2QsIGV2KTsKQEAgLTUzMSw4ICs1MzEsOCBAQCBzdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfb25fa2V5X2Rvd24odm9pZCogZGF0YSwgRXZhcyogZSwgRXZhc19PYmplY3QqIG8s
IHZvaWQqIGV2ZQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fa2V5X3VwKHZvaWQqIGRhdGEs
IEV2YXMqIGUsIEV2YXNfT2JqZWN0KiBvLCB2b2lkKiBldmVudF9pbmZvKQogewotICAgIEV2YXNf
RXZlbnRfS2V5X1VwKiBldiA9IChFdmFzX0V2ZW50X0tleV9VcCopZXZlbnRfaW5mbzsKLSAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9EYXRhKilkYXRhOworICAg
IEV2YXNfRXZlbnRfS2V5X1VwKiBldiA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfS2V5X1VwKj4o
ZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxF
d2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc2QtPmFwaSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+a2V5
X3VwKTsKICAgICBzZC0+YXBpLT5rZXlfdXAoc2QsIGV2KTsKQEAgLTU1NSw3ICs1NTUsNyBAQCBz
dGF0aWMgRXZhc19TbWFydF9DbGFzcyBfcGFyZW50X3NjID0gRVZBU19TTUFSVF9DTEFTU19JTklU
X05VTEw7CiBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXco
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBw
cml2ID0KLSAgICAgICAgKEV3a19WaWV3X1ByaXZhdGVfRGF0YSopY2FsbG9jKDEsIHNpemVvZihF
d2tfVmlld19Qcml2YXRlX0RhdGEpKTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfUHJp
dmF0ZV9EYXRhKj4oY2FsbG9jKDEsIHNpemVvZihFd2tfVmlld19Qcml2YXRlX0RhdGEpKSk7CiAg
ICAgQXRvbWljU3RyaW5nIHM7CiAgICAgV2ViQ29yZTo6S1VSTCB1cmw7CiAKQEAgLTcyNCwxMiAr
NzI0LDEyIEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQoRXZhc19PYmplY3QqIG8p
CiB7CiAgICAgY29uc3QgRXZhc19TbWFydCogc21hcnQgPSBldmFzX29iamVjdF9zbWFydF9zbWFy
dF9nZXQobyk7CiAgICAgY29uc3QgRXZhc19TbWFydF9DbGFzcyogc2MgPSBldmFzX3NtYXJ0X2Ns
YXNzX2dldChzbWFydCk7Ci0gICAgY29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3MqIGFwaSA9IChj
b25zdCBFd2tfVmlld19TbWFydF9DbGFzcyopc2M7CisgICAgY29uc3QgRXdrX1ZpZXdfU21hcnRf
Q2xhc3MqIGFwaSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRXdrX1ZpZXdfU21hcnRfQ2xhc3Mq
PihzYyk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oYXBpLT5iYWNraW5nX3N0b3Jl
X2FkZCk7CiAgICAgRVdLX1ZJRVdfU0RfR0VUKG8sIHNkKTsKIAogICAgIGlmICghc2QpIHsKLSAg
ICAgICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopY2FsbG9jKDEsIHNpemVvZihFd2tfVmll
d19TbWFydF9EYXRhKSk7CisgICAgICAgIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRf
RGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX1ZpZXdfU21hcnRfRGF0YSkpKTsKICAgICAgICAg
aWYgKCFzZCkgewogICAgICAgICAgICAgQ1JJVElDQUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tf
Vmlld19TbWFydF9EYXRhIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05MjYsMTIgKzkyNiwx
MiBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF96b29tX3NldChFd2tfVmlld19T
bWFydF9EYXRhKiBzZCwgZmxvYXQgem9vbSwgRQogICAgIGV3a19mcmFtZV9zY3JvbGxfcG9zX2dl
dChzZC0+bWFpbl9mcmFtZSwgJngsICZ5KTsKIAogICAgIGlmICh3ICsgc2QtPnZpZXcudyA+IDAp
Ci0gICAgICAgIHB4ID0gKGRvdWJsZSkoeCArIGN4KSAvICh3ICsgc2QtPnZpZXcudyk7CisgICAg
ICAgIHB4ID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih4ICsgY3gpIC8gKHcgKyBzZC0+dmlldy53KTsK
ICAgICBlbHNlCiAgICAgICAgIHB4ID0gMC4wOwogCiAgICAgaWYgKGggKyBzZC0+dmlldy5oID4g
MCkKLSAgICAgICAgcHkgPSAoZG91YmxlKSh5ICsgY3kpIC8gKGggKyBzZC0+dmlldy5oKTsKKyAg
ICAgICAgcHkgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHkgKyBjeSkgLyAoaCArIHNkLT52aWV3Lmgp
OwogICAgIGVsc2UKICAgICAgICAgcHkgPSAwLjA7CiAKQEAgLTEwMDQsNyArMTAwNCw3IEBAIHN0
YXRpYyBmbG9hdCBfZXdrX3ZpZXdfem9vbV9hbmltYXRlZF9jdXJyZW50KEV3a19WaWV3X1ByaXZh
dGVfRGF0YSogcHJpdikKIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfem9vbV9hbmltYXRv
cl9jYih2b2lkKiBkYXRhKQogewotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gKEV3a19W
aWV3X1NtYXJ0X0RhdGEqKWRhdGE7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0
aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRXZhc19Db29yZCBjeCwg
Y3k7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVQoc2QsIHByaXYpOwogICAgIGRvdWJsZSBub3cgPSBl
Y29yZV9sb29wX3RpbWVfZ2V0KCk7CkBAIC0xMDQ4LDE0ICsxMDQ4LDEwIEBAIHN0YXRpYyBXZWJD
b3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgX2V3a192aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29t
cHV0ZShjb25zdCBFCiAgICAgaW50IGRlc2t0b3Bfd2lkdGggPSA5ODA7CiAgICAgaW50IGRldmlj
ZV9kcGkgPSBld2tfdXRpbF9kcGlfZ2V0KCk7CiAKLSAgICBpbnQgYXZhaWxhYmxlX3dpZHRoID0g
KGludCkgcHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wYWdlUmVjdCgpLndpZHRoKCk7
Ci0gICAgaW50IGF2YWlsYWJsZV9oZWlnaHQgPSAoaW50KSBwcml2LT5wYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPnBhZ2VSZWN0KCkuaGVpZ2h0KCk7CisgICAgV2ViQ29yZTo6SW50UmVjdCBhdmFp
bGFibGVfcmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5wYWdlUmVjdCgpKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGRldmljZV9yZWN0ID0gZW5j
bG9zaW5nSW50UmVjdChwcml2LT5wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPndpbmRvd1JlY3Qo
KSk7CiAKLSAgICBpbnQgZGV2aWNlX3dpZHRoID0gKGludCkgcHJpdi0+cGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpLT53aW5kb3dSZWN0KCkud2lkdGgoKTsKLSAgICBpbnQgZGV2aWNlX2hlaWdodCA9
IChpbnQpIHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2luZG93UmVjdCgpLmhlaWdo
dCgpOwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBhdmFpbGFibGVfc2l6ZSA9IFdlYkNvcmU6Oklu
dFNpemUoYXZhaWxhYmxlX3dpZHRoLCBhdmFpbGFibGVfaGVpZ2h0KTsKLSAgICBXZWJDb3JlOjpW
aWV3cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IFdlYkNvcmU6OmNvbXB1dGVWaWV3cG9ydEF0
dHJpYnV0ZXMocHJpdi0+dmlld3BvcnRfYXJndW1lbnRzLCBkZXNrdG9wX3dpZHRoLCBkZXZpY2Vf
d2lkdGgsIGRldmljZV9oZWlnaHQsIGRldmljZV9kcGksIGF2YWlsYWJsZV9zaXplKTsKKyAgICBX
ZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IFdlYkNvcmU6OmNvbXB1dGVW
aWV3cG9ydEF0dHJpYnV0ZXMocHJpdi0+dmlld3BvcnRfYXJndW1lbnRzLCBkZXNrdG9wX3dpZHRo
LCBkZXZpY2VfcmVjdC53aWR0aCgpLCBkZXZpY2VfcmVjdC5oZWlnaHQoKSwgZGV2aWNlX2RwaSwg
YXZhaWxhYmxlX3JlY3Quc2l6ZSgpKTsKIAogICAgIHJldHVybiBhdHRyaWJ1dGVzOwogfQpAQCAt
MTU2MSwxMSArMTU1NywxMSBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfem9vbV9zZXQoRXZhc19PYmpl
Y3QqIG8sIGZsb2F0IHpvb20sIEV2YXNfQ29vcmQgY3gsIEV2YXNfQ29vcgogICAgIH0KIAogICAg
IGlmICh6b29tIDwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUpIHsKLSAgICAg
ICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0dGluZ3Mu
em9vbV9yYW5nZS5taW5fc2NhbGUsIChkb3VibGUpem9vbSk7CisgICAgICAgIFdSTigiem9vbSBs
ZXZlbCBpcyA8ICVmIDogJWYiLCBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwg
em9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KICAgICBpZiAoem9vbSA+
IHByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlKSB7Ci0gICAgICAgIFdSTigiem9v
bSBsZXZlbCBpcyA+ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2Uu
bWF4X3NjYWxlLCAoZG91YmxlKXpvb20pOworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAl
ZiA6ICVmIiwgcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIHpvb20pOwogICAg
ICAgICByZXR1cm4gRUlOQV9GQUxTRTsKICAgICB9CiAKQEAgLTE2MDUsMTEgKzE2MDEsMTEgQEAg
RWluYV9Cb29sIGV3a192aWV3X3pvb21fd2Vha19zZXQoRXZhc19PYmplY3QqIG8sIGZsb2F0IHpv
b20sIEV2YXNfQ29vcmQgY3gsIEV2YXMKICAgICB9CiAKICAgICBpZiAoem9vbSA8IHByaXYtPnNl
dHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxlKSB7Ci0gICAgICAgIFdSTigiem9vbSBsZXZlbCBp
cyA8ICVmIDogJWYiLCAoZG91YmxlKXByaXYtPnNldHRpbmdzLnpvb21fcmFuZ2UubWluX3NjYWxl
LCAoZG91YmxlKXpvb20pOworICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwg
cHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5taW5fc2NhbGUsIHpvb20pOwogICAgICAgICByZXR1
cm4gRUlOQV9GQUxTRTsKICAgICB9CiAgICAgaWYgKHpvb20gPiBwcml2LT5zZXR0aW5ncy56b29t
X3JhbmdlLm1heF9zY2FsZSkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPiAlZiA6ICVm
IiwgKGRvdWJsZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9zY2FsZSwgKGRvdWJsZSl6
b29tKTsKKyAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIHByaXYtPnNldHRp
bmdzLnpvb21fcmFuZ2UubWF4X3NjYWxlLCB6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFM
U0U7CiAgICAgfQogCkBAIC0xNjYxLDExICsxNjU3LDExIEBAIEVpbmFfQm9vbCBld2tfdmlld196
b29tX2FuaW1hdGVkX3NldChFdmFzX09iamVjdCogbywgZmxvYXQgem9vbSwgZmxvYXQgZHVyYXRp
b24sCiAgICAgfQogCiAgICAgaWYgKHpvb20gPCBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1p
bl9zY2FsZSkgewotICAgICAgICBXUk4oInpvb20gbGV2ZWwgaXMgPCAlZiA6ICVmIiwgKGRvdWJs
ZSlwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1pbl9zY2FsZSwgKGRvdWJsZSl6b29tKTsKKyAg
ICAgICAgV1JOKCJ6b29tIGxldmVsIGlzIDwgJWYgOiAlZiIsIHByaXYtPnNldHRpbmdzLnpvb21f
cmFuZ2UubWluX3NjYWxlLCB6b29tKTsKICAgICAgICAgcmV0dXJuIEVJTkFfRkFMU0U7CiAgICAg
fQogICAgIGlmICh6b29tID4gcHJpdi0+c2V0dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUpIHsK
LSAgICAgICAgV1JOKCJ6b29tIGxldmVsIGlzID4gJWYgOiAlZiIsIChkb3VibGUpcHJpdi0+c2V0
dGluZ3Muem9vbV9yYW5nZS5tYXhfc2NhbGUsIChkb3VibGUpem9vbSk7CisgICAgICAgIFdSTigi
em9vbSBsZXZlbCBpcyA+ICVmIDogJWYiLCBwcml2LT5zZXR0aW5ncy56b29tX3JhbmdlLm1heF9z
Y2FsZSwgem9vbSk7CiAgICAgICAgIHJldHVybiBFSU5BX0ZBTFNFOwogICAgIH0KIApAQCAtMjQ4
OSw3ICsyNDg1LDcgQEAgRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCogZXdrX3ZpZXdfcGFpbnRfY29u
dGV4dF9uZXcoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2LAogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChwcml2LT5tYWluX2ZyYW1lLCAwKTsKICAgICBXZWJDb3JlOjpGcmFt
ZVZpZXcqIHZpZXcgPSBwcml2LT5tYWluX2ZyYW1lLT52aWV3KCk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHZpZXcsIDApOwotICAgIEV3a19WaWV3X1BhaW50X0NvbnRleHQq
IGN0eHQgPSAoRXdrX1ZpZXdfUGFpbnRfQ29udGV4dCopbWFsbG9jKHNpemVvZigqY3R4dCkpOwor
ICAgIEV3a19WaWV3X1BhaW50X0NvbnRleHQqIGN0eHQgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19Q
YWludF9Db250ZXh0Kj4obWFsbG9jKHNpemVvZigqY3R4dCkpKTsKICAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoY3R4dCwgMCk7CiAKICAgICBjdHh0LT5nYyA9IG5ldyBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQoY3IpOwpAQCAtMzM2NCw3ICszMzYwLDcgQEAgdm9pZCBld2tfdmll
d19wb3B1cF9uZXcoRXZhc19PYmplY3QqIG8sIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xp
ZW50LCBpbnQgc2UKICAgICAvLyBwb3B1bGF0ZSBpdGVtcwogICAgIGNvbnN0IGludCBzaXplID0g
Y2xpZW50LT5saXN0U2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSAoRXdrX01lbnVfSXRlbSopIG1hbGxvYyhz
aXplb2YoKml0ZW0pKTsKKyAgICAgICAgRXdrX01lbnVfSXRlbSogaXRlbSA9IHN0YXRpY19jYXN0
PEV3a19NZW51X0l0ZW0qPihtYWxsb2Moc2l6ZW9mKCppdGVtKSkpOwogICAgICAgICBpZiAoY2xp
ZW50LT5pdGVtSXNTZXBhcmF0b3IoaSkpCiAgICAgICAgICAgICBpdGVtLT50eXBlID0gRVdLX01F
TlVfU0VQQVJBVE9SOwogICAgICAgICBlbHNlIGlmIChjbGllbnQtPml0ZW1Jc0xhYmVsKGkpKQpA
QCAtMzM5Niw3ICszMzkyLDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3BvcHVwX2Rlc3Ryb3koRXZh
c19PYmplY3QqIG8pCiAKICAgICB2b2lkKiBpdGVtdjsKICAgICBFSU5BX0xJU1RfRlJFRShwcml2
LT5wb3B1cC5tZW51Lml0ZW1zLCBpdGVtdikgewotICAgICAgICBFd2tfTWVudV9JdGVtKiBpdGVt
ID0gKEV3a19NZW51X0l0ZW0qKWl0ZW12OworICAgICAgICBFd2tfTWVudV9JdGVtKiBpdGVtID0g
c3RhdGljX2Nhc3Q8RXdrX01lbnVfSXRlbSo+KGl0ZW12KTsKICAgICAgICAgZWluYV9zdHJpbmdz
aGFyZV9kZWwoaXRlbS0+dGV4dCk7CiAgICAgICAgIGZyZWUoaXRlbSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3NpbmdsZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcAppbmRleCBiOTljOGFkNzkxNzUyY2Fh
ODkxYTMwZWJlYTk0YTRkMGU3YTFkZjljLi41YWQ2N2ZlYWQzM2E2OTA4NTc5OGU1NTM2YTUxNWE5
YWM2NTI2OGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2lu
Z2xlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXdfc2luZ2xlLmNwcApA
QCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc2luZ2xlX3NtYXJ0X2FkZChF
dmFzX09iamVjdCogbykKIAogICAgIF9wYXJlbnRfc2Muc2MuYWRkKG8pOwogCi0gICAgc2QgPSAo
RXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobyk7CisgICAg
c2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rfc21hcnRf
ZGF0YV9nZXQobykpOwogICAgIGlmICghc2QpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjcsNyAr
NjcsNyBAQCBzdGF0aWMgRXZhc19PYmplY3QqIF9ld2tfdmlld19zaW5nbGVfc21hcnRfYmFja2lu
Z19zdG9yZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YQogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdf
c2luZ2xlX3NtYXJ0X3Jlc2l6ZShFdmFzX09iamVjdCogbywgRXZhc19Db29yZCB3LCBFdmFzX0Nv
b3JkIGgpCiB7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSAoRXdrX1ZpZXdfU21hcnRf
RGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9nZXQobyk7CisgICAgRXdrX1ZpZXdfU21hcnRf
RGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19vYmplY3Rf
c21hcnRfZGF0YV9nZXQobykpOwogICAgIF9wYXJlbnRfc2Muc2MucmVzaXplKG8sIHcsIGgpOwog
CiAgICAgaWYgKCFzZCkKQEAgLTI1MSw3ICsyNTEsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3
a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSog
cwogICAgICAgICAgICAgICAgIHN4LCBzeSArIHNoICsgc3ItPmR5LCBzdywgLXNyLT5keSk7CiAK
ICAgICAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl91cAotICAgICAgICAgICAgICAg
ICgodWludDMyX3QqKXBpeGVscywgLXNyLT5keSwgc3gsIHN5LCBzdywgc2gsIG93KTsKKyAgICAg
ICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDMyX3QqPihwaXhlbHMpLCAtc3ItPmR5LCBzeCwg
c3ksIHN3LCBzaCwgb3cpOwogICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRh
dGVfYWRkCiAgICAgICAgICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCwgc3ksIHN3LCBz
aCArIHNyLT5keSk7CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3
a192aWV3X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSog
cwogICAgICAgICAgICAgICAgIHN4LCBzeSwgc3csIHNyLT5keSk7CiAKICAgICAgICAgICAgIF9l
d2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9kb3duCi0gICAgICAgICAgICAgICAgKCh1aW50MzJfdCop
cGl4ZWxzLCBzci0+ZHksIHN4LCBzeSwgc3csIHNoLCBvdyk7CisgICAgICAgICAgICAgICAgKHN0
YXRpY19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCwgb3cp
OwogICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCiAgICAgICAg
ICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCwgc3kgKyBzci0+ZHksIHN3LCBzaCAtIHNy
LT5keSk7CiAKQEAgLTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3
X3NpbmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSogcwogICAg
ICAgICAgICAgICAgIHN4ICsgc3cgKyBzci0+ZHgsIHN5LCAtc3ItPmR4LCBzaCk7CiAKICAgICAg
ICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbl9sZWZ0Ci0gICAgICAgICAgICAgICAgKCh1
aW50MzJfdCopcGl4ZWxzLCAtc3ItPmR4LCBzeCwgc3ksIHN3LCBzaCwgb3cpOworICAgICAgICAg
ICAgICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIC1zci0+ZHgsIHN4LCBzeSwg
c3csIHNoLCBvdyk7CiAgICAgICAgICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX3VwZGF0ZV9h
ZGQKICAgICAgICAgICAgICAgICAoc2QtPmJhY2tpbmdfc3RvcmUsIHN4LCBzeSwgc3cgKyBzci0+
ZHgsIHNoKTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3Zp
ZXdfc2luZ2xlX3Njcm9sbF9wcm9jZXNzX3NpbmdsZShFd2tfVmlld19TbWFydF9EYXRhKiBzCiAg
ICAgICAgICAgICAgICAgc3gsIHN5LCBzci0+ZHgsIHNoKTsKIAogICAgICAgICAgICAgX2V3a192
aWV3XzRiX21vdmVfcmVnaW9uX3JpZ2h0Ci0gICAgICAgICAgICAgICAgKCh1aW50MzJfdCopcGl4
ZWxzLCBzci0+ZHgsIHN4LCBzeSwgc3csIHNoLCBvdyk7CisgICAgICAgICAgICAgICAgKHN0YXRp
Y19jYXN0PHVpbnQzMl90Kj4ocGl4ZWxzKSwgc3ItPmR4LCBzeCwgc3ksIHN3LCBzaCwgb3cpOwog
ICAgICAgICAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV91cGRhdGVfYWRkCiAgICAgICAgICAg
ICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzeCArIHNyLT5keCwgc3ksIHN3IC0gc3ItPmR4LCBz
aCk7CiAKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX2V3a192aWV3X3Np
bmdsZV9zY3JvbGxfcHJvY2Vzc19zaW5nbGUoRXdrX1ZpZXdfU21hcnRfRGF0YSogcwogICAgICAg
ICAgICAgc3ItPmR4LCBzci0+ZHksIG14LCBteSwgbXcsIG1oLCBheCwgYXksIGF3LCBhaCwgYngs
IGJ5LCBidywgYmgpOwogCiAgICAgICAgIF9ld2tfdmlld180Yl9tb3ZlX3JlZ2lvbgotICAgICAg
ICAgICAgKCh1aW50MzJfdCopcGl4ZWxzLCBzci0+ZHgsIHNyLT5keSwgc3gsIHN5LCBzdywgc2gs
IG93KTsKKyAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50MzJfdCo+KHBpeGVscyksIHNyLT5k
eCwgc3ItPmR5LCBzeCwgc3ksIHN3LCBzaCwgb3cpOwogCiAgICAgICAgIGV2YXNfb2JqZWN0X2lt
YWdlX2RhdGFfdXBkYXRlX2FkZChzZC0+YmFja2luZ19zdG9yZSwgbXgsIG15LCBtdywgbWgpOwog
ICAgICAgICBld2tfdmlld19yZXBhaW50X2FkZChzZC0+X3ByaXYsIGF4LCBheSwgYXcsIGFoKTsK
QEAgLTQwMCw3ICs0MDAsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zaW5nbGVfc21h
cnRfcmVwYWludHNfcHJvY2VzcyhFd2tfVmlld19TbWFydF9EYXRhKiBzZAogICAgIGZvcm1hdCA9
IENBSVJPX0ZPUk1BVF9BUkdCMzI7CiAKICAgICBzdXJmYWNlID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGVfZm9yX2RhdGEKLSAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciopcGl4
ZWxzLCBmb3JtYXQsIG93LCBvaCwgb3cgKiA0KTsKKyAgICAgICAgICAgICAgICAgIChzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyKj4ocGl4ZWxzKSwgZm9ybWF0LCBvdywgb2gsIG93ICogNCk7CiAg
ICAgc3RhdHVzID0gY2Fpcm9fc3VyZmFjZV9zdGF0dXMoc3VyZmFjZSk7CiAgICAgaWYgKHN0YXR1
cyAhPSBDQUlST19TVEFUVVNfU1VDQ0VTUykgewogICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVh
dGUgc3VyZmFjZSBmcm9tIGRhdGEgJWR4JWQ6ICVzIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXdfdGlsZWQuY3BwCmluZGV4IDQ5NzUxYmQ5ZDllNWY1YTMwODZhNTNiNDgzNDZkYjU5N2Jj
NGM0NWYuLmY4N2Y0OGJkOWZhMzQwZTBiMzQ2OTIxMDZhZTRkYzI1ZWI1OWM1ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlld190aWxlZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3X3RpbGVkLmNwcApAQCAtMzIsNyArMzIsNyBAQCBzdGF0
aWMgRXdrX1ZpZXdfU21hcnRfQ2xhc3MgX3BhcmVudF9zYyA9IEVXS19WSUVXX1NNQVJUX0NMQVNT
X0lOSVRfTlVMTDsKIAogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfdGlsZWRfcmVuZGVyX2Ni
KHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0LCBjb25zdCBFaW5hX1JlY3RhbmdsZSogYXJlYSkKIHsK
LSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
KilkYXRhOworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IHN0YXRpY19jYXN0PEV3
a19WaWV3X1ByaXZhdGVfRGF0YSo+KGRhdGEpOwogICAgIEVpbmFfUmVjdGFuZ2xlIHIgPSB7YXJl
YS0+eCArIHQtPngsIGFyZWEtPnkgKyB0LT55LCBhcmVhLT53LCBhcmVhLT5ofTsKIAogICAgIHJl
dHVybiBld2tfdmlld19wYWludF9jb250ZW50cyhwcml2LCB0LT5jYWlybywgJnIpOwpAQCAtNDAs
NyArNDAsNyBAQCBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld190aWxlZF9yZW5kZXJfY2Iodm9p
ZCogZGF0YSwgRXdrX1RpbGUqIHQsIGNvbnN0IEVpbmFfUgogCiBzdGF0aWMgdm9pZCogX2V3a192
aWV3X3RpbGVkX3VwZGF0ZXNfcHJvY2Vzc19wcmUodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIG8p
CiB7Ci0gICAgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2ID0gKEV3a19WaWV3X1ByaXZhdGVf
RGF0YSopZGF0YTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPSBzdGF0aWNfY2Fz
dDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihkYXRhKTsKICAgICBld2tfdmlld19sYXlvdXRfaWZf
bmVlZGVkX3JlY3Vyc2l2ZShwcml2KTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTU4LDggKzU4LDgg
QEAgc3RhdGljIEV2YXNfT2JqZWN0KiBfZXdrX3ZpZXdfdGlsZWRfc21hcnRfYmFja2luZ19zdG9y
ZV9hZGQoRXdrX1ZpZXdfU21hcnRfRGF0YSoKIHN0YXRpYyB2b2lkCiBfZXdrX3ZpZXdfdGlsZWRf
Y29udGVudHNfc2l6ZV9jaGFuZ2VkX2NiKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvLCB2b2lk
KiBldmVudF9pbmZvKQogewotICAgIEV2YXNfQ29vcmQqIHNpemUgPSAoRXZhc19Db29yZCopZXZl
bnRfaW5mbzsKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IChFd2tfVmlld19TbWFydF9E
YXRhKilkYXRhOworICAgIEV2YXNfQ29vcmQqIHNpemUgPSBzdGF0aWNfY2FzdDxFdmFzX0Nvb3Jk
Kj4oZXZlbnRfaW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2Fz
dDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAKICAgICBld2tfdGlsZWRfYmFja2luZ19z
dG9yZV9jb250ZW50c19yZXNpemUKICAgICAgICAgKHNkLT5iYWNraW5nX3N0b3JlLCBzaXplWzBd
LCBzaXplWzFdKTsKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3RpbGVk
X3NtYXJ0X2FkZChFdmFzX09iamVjdCogbykKIAogICAgIF9wYXJlbnRfc2Muc2MuYWRkKG8pOwog
Ci0gICAgc2QgPSAoRXdrX1ZpZXdfU21hcnRfRGF0YSopZXZhc19vYmplY3Rfc21hcnRfZGF0YV9n
ZXQobyk7CisgICAgc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZXZhc19v
YmplY3Rfc21hcnRfZGF0YV9nZXQobykpOwogICAgIGlmICghc2QpCiAgICAgICAgIHJldHVybjsK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>