<?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>131162</bug_id>
          
          <creation_ts>2014-04-03 06:53:15 -0700</creation_ts>
          <short_desc>[EFL][WK2] Crash when &quot;Download Linked File&quot; from MiniBrowser context menu is clicked</short_desc>
          <delta_ts>2015-03-05 06:05:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Florek">m.florek</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>g.czajkowski</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hh.kaka</cc>
    
    <cc>l.bialek</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>ossy</cc>
    
    <cc>ryuan.choi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>997155</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Florek">m.florek</who>
    <bug_when>2014-04-03 06:53:15 -0700</bug_when>
    <thetext>Deterministic crash when &quot;Download Linked File&quot; from MiniBrowser context menu is clicked. Crash due to null EwkDownloadJob in WebKit::DownloadManagerEfl::didReceiveResponse.

ASSERTION FAILED: download
webkit.org/Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp(66) : static void WebKit::DownloadManagerEfl::didReceiveResponse(WKContextRef, WKDownloadRef, WKURLResponseRef, const void*)
1   0x7ffff47ea978 WTFCrash
2   0x7ffff7609cec WebKit::DownloadManagerEfl::didReceiveResponse(OpaqueWKContext const*, OpaqueWKDownload const*, OpaqueWKURLResponse const*, void const*)
3   0x7ffff7439fe3
4   0x7ffff7452263 WebKit::DownloadProxy::didReceiveResponse(WebCore::ResourceResponse const&amp;)
5   0x7ffff766df2e void IPC::callMemberFunctionImpl&lt;WebKit::DownloadProxy, void (WebKit::DownloadProxy::*)(WebCore::ResourceResponse const&amp;), std::tuple&lt;WebCore::ResourceResponse&gt;, 0ul&gt;(WebKit::DownloadProxy*, void (WebKit::DownloadProxy::*)(WebCore::ResourceResponse const&amp;), std::tuple&lt;WebCore::ResourceResponse&gt;&amp;&amp;, std::index_sequence&lt;0ul&gt;)
6   0x7ffff766da02 void IPC::callMemberFunction&lt;WebKit::DownloadProxy, void (WebKit::DownloadProxy::*)(WebCore::ResourceResponse const&amp;), std::tuple&lt;WebCore::ResourceResponse&gt;, std::make_index_sequence&lt;1ul&gt; &gt;(std::tuple&lt;WebCore::ResourceResponse&gt;&amp;&amp;, WebKit::DownloadProxy*, void (WebKit::DownloadProxy::*)(WebCore::ResourceResponse const&amp;))
7   0x7ffff766d2fe void IPC::handleMessage&lt;Messages::DownloadProxy::DidReceiveResponse, WebKit::DownloadProxy, void (WebKit::DownloadProxy::*)(WebCore::ResourceResponse const&amp;)&gt;(IPC::MessageDecoder&amp;, WebKit::DownloadProxy*, void (WebKit::DownloadProxy::*)(WebCore::ResourceResponse const&amp;))
8   0x7ffff766cbe5 WebKit::DownloadProxy::didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&amp;)
9   0x7ffff72eb6dc IPC::MessageReceiverMap::dispatchMessage(IPC::Connection*, IPC::MessageDecoder&amp;)
10  0x7ffff7305efb WebKit::ChildProcessProxy::dispatchMessage(IPC::Connection*, IPC::MessageDecoder&amp;)
11  0x7ffff742b2d5 WebKit::WebProcessProxy::didReceiveMessage(IPC::Connection*, IPC::MessageDecoder&amp;)
12  0x7ffff72d9f2a IPC::Connection::dispatchMessage(IPC::MessageDecoder&amp;)
13  0x7ffff72d9ff6 IPC::Connection::dispatchMessage(std::unique_ptr&lt;IPC::MessageDecoder, std::default_delete&lt;IPC::MessageDecoder&gt; &gt;)
14  0x7ffff72da1b7 IPC::Connection::dispatchOneMessage()
15  0x7ffff72eaa7d WTF::FunctionWrapper&lt;void (IPC::Connection::*)()&gt;::operator()(IPC::Connection*)
16  0x7ffff72ea7f0 WTF::BoundFunctionImpl&lt;WTF::FunctionWrapper&lt;void (IPC::Connection::*)()&gt;, void (IPC::Connection*)&gt;::operator()()
17  0x7ffff72c95ef WTF::Function&lt;void ()&gt;::operator()() const
18  0x7ffff72c7fa5 std::_Function_handler&lt;void (), WTF::Function&lt;void ()&gt; &gt;::_M_invoke(std::_Any_data const&amp;)
19  0x7ffff72bcc7e std::function&lt;void ()&gt;::operator()() const
20  0x7ffff76965b9 WTF::RunLoop::performWork()
21  0x7ffff76977ce WTF::RunLoop::wakeUpEvent(void*, void*, unsigned int)
22  0x7ffff64ff497
23  0x7ffff64fe571
24  0x7ffff64fe9b7 ecore_main_loop_begin
25  0x40b3b2 elm_main
26  0x40b3fc main
27  0x7ffff51fa76d __libc_start_main
28  0x405889</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068004</commentid>
    <comment_count>1</comment_count>
      <attachid>246314</attachid>
    <who name="Lukasz Bialek">l.bialek</who>
    <bug_when>2015-02-10 00:26:56 -0800</bug_when>
    <thetext>Created attachment 246314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068291</commentid>
    <comment_count>2</comment_count>
      <attachid>246314</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2015-02-11 00:29:01 -0800</bug_when>
    <thetext>Comment on attachment 246314
Patch

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

I like the idea of detaching DownloadManagerEFL from EwkView! Generally looks promising, added few minor comments. I&apos;d like to listen Gyuyoung, Ryuan comments on that.
This patch lacks of API tests but I believe they could be done in a separate patch.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_download_job.h:155
&gt; + * will be called on the Ewk_Download_Job.

Ewk_Download_Job ? I think you meant &quot;Ewk_Context&quot;

&gt; Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp:138
&gt; +    clientCallbacks.m_requested = nullptr;
&gt; +    clientCallbacks.m_failed = nullptr;
&gt; +    clientCallbacks.m_cancelled = nullptr;
&gt; +    clientCallbacks.m_finished = nullptr;
&gt; +    clientCallbacks.m_userData = nullptr;

Please define ClientDownloadCallbacks&apos; constructor or use memset(&amp;clientCallbacks, 0, sizeof(ClientDownloadCallbacks)) for that.

&gt; Source/WebKit2/UIProcess/efl/DownloadManagerEfl.h:37
&gt; +struct ClientDownloadCallbacks {

Since we don&apos;t expose those callbacks outside DownloadManagerEfl.h/cpp I&apos;d prefer to move the declaration to the cpp file and use forward declaration (struct ClientDownloadsCallbacks;)

&gt; Source/WebKit2/UIProcess/efl/DownloadManagerEfl.h:51
&gt; +    void setCallbacks(Ewk_Download_Requested_Cb, Ewk_Download_Failed_Cb, Ewk_Download_Cancelled_Cb,  Ewk_Download_Finished_Cb, void* userData);

setClientCallbacks() ?

&gt; Source/WebKit2/UIProcess/efl/DownloadManagerEfl.h:69
&gt; +    ClientDownloadCallbacks clientCallbacks;

m_clientCallbacks as it&apos;s class member.

&gt; Tools/ChangeLog:13
&gt; +        Adapt download caalbcks to new callback mechanism

typo: caalbcks -&gt; callbacks

&gt; Tools/MiniBrowser/efl/main.c:850
&gt; +on_download_failed(Ewk_Download_Job_Error *downloadError, void *user_data)

MiniBrowser follows C coding style (downloadError -&gt; download_error).

&gt; Tools/MiniBrowser/efl/main.c:852
&gt; +    const Ewk_Error *error = downloadError-&gt;error;

I don&apos;t think &quot;const&quot; modifier brings benefits here.

&gt; Tools/MiniBrowser/efl/main.c:2302
&gt; +    // Set callbacks for download events.
&gt; +    ewk_context_download_callbacks_set(context, on_download_request, on_download_failed, 0, on_download_finished, window);

I&apos;d rather move them to context related code in elm_main(), there we already have

    ewk_context_process_model_set(context, EWK_PROCESS_MODEL_MULTIPLE_SECONDARY);
    ewk_context_favicon_database_directory_set(context, NULL);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068519</commentid>
    <comment_count>3</comment_count>
      <attachid>246314</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-02-11 16:24:41 -0800</bug_when>
    <thetext>Comment on attachment 246314
Patch

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

Thanks for the patch.
I leave some comments.

&gt; Source/WebKit2/ChangeLog:15
&gt; +        Propose a new callbacks which are view independent and detach EFL&apos;s DownloadMaager
&gt; +        from EwkView. It makes DownloadManagerEFL consistent with WKContextDownload.
&gt; +        Fix the crash and restore download functionality.

I am not sure.
Doesn&apos;t we have any use cases which need to distinguish which ewk_view(tab) requests this download?

&gt; Source/WebKit2/ChangeLog:32
&gt; +        Old tests do not match new feature. Separate bug will be introduced.

Bug ID?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_context.h:374
&gt; +EAPI void ewk_context_download_callbacks_set(Ewk_Context* context,
&gt; +    Ewk_Download_Requested_Cb download_requested_func,
&gt; +    Ewk_Download_Failed_Cb download_failed_func,
&gt; +    Ewk_Download_Cancelled_Cb download_cancelled_func,
&gt; +    Ewk_Download_Finished_Cb download_finished_func,
&gt; +    void* data);

EFL looks prefer the spaces to align first letter of first parameter with others if we define API using multiple line.

For example, in Ecore_File.h
EAPI Eina_Bool ecore_file_download(const char *url,
                                   const char *dst,
                                   ...);

And style of * is wrong for the first parameter.

&gt; Source/WebKit2/UIProcess/API/efl/ewk_download_job_private.h:74
&gt; +    EwkDownloadJob(WKDownloadRef download);

Let&apos;s add &quot;explicit&quot;

&gt;&gt; Tools/MiniBrowser/efl/main.c:852
&gt;&gt; +    const Ewk_Error *error = downloadError-&gt;error;
&gt; 
&gt; I don&apos;t think &quot;const&quot; modifier brings benefits here.

Instead, how about define `error` field of Ewk_Download_Job_Error with &quot;const&quot; modifier?

&gt;&gt; Tools/MiniBrowser/efl/main.c:2302
&gt;&gt; +    ewk_context_download_callbacks_set(context, on_download_request, on_download_failed, 0, on_download_finished, window);
&gt; 
&gt; I&apos;d rather move them to context related code in elm_main(), there we already have
&gt; 
&gt;     ewk_context_process_model_set(context, EWK_PROCESS_MODEL_MULTIPLE_SECONDARY);
&gt;     ewk_context_favicon_database_directory_set(context, NULL);

+1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069429</commentid>
    <comment_count>4</comment_count>
      <attachid>246314</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-16 07:33:53 -0800</bug_when>
    <thetext>Comment on attachment 246314
Patch

r- now based on previous comments, it isn&apos;t ready for landing yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074003</commentid>
    <comment_count>5</comment_count>
      <attachid>247847</attachid>
    <who name="Lukasz Bialek">l.bialek</who>
    <bug_when>2015-03-03 23:54:15 -0800</bug_when>
    <thetext>Created attachment 247847
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074006</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-03 23:56:50 -0800</bug_when>
    <thetext>Attachment 247847 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:369:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:370:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:371:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:372:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074009</commentid>
    <comment_count>7</comment_count>
    <who name="Lukasz Bialek">l.bialek</who>
    <bug_when>2015-03-04 00:01:45 -0800</bug_when>
    <thetext>Hello,

I have uploaded new patch with (almost) all comments included. To answer your questions:

&gt; I am not sure.
&gt; Doesn&apos;t we have any use cases which need to distinguish which ewk_view(tab)
&gt; requests this download?

As far as I know, all modern browsers have general download manager common for all tabs/windows. When user starts to download a file, dialog bog appears and then download is conducted by an agent located next to address bar. When it is finished, agent&apos;s icon is blinking, not a tab.

&gt; Bug ID?

I will introduce new bug, when approach from this bug will be accepted. Now there is no point for this.

&gt; ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:369:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

This is caused by space aligment in ewk_context.h (that is why I used only 4 spaces there in initial patch). As far as I know checking style in *.h files should be disabled so probably those messages can be ignored. 

Best regards,
Lukasz Bialek</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074270</commentid>
    <comment_count>8</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2015-03-04 15:52:34 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Hello,
&gt; 
&gt; I have uploaded new patch with (almost) all comments included. To answer
&gt; your questions:
&gt; 
&gt; &gt; I am not sure.
&gt; &gt; Doesn&apos;t we have any use cases which need to distinguish which ewk_view(tab)
&gt; &gt; requests this download?
&gt; 
&gt; As far as I know, all modern browsers have general download manager common
&gt; for all tabs/windows. When user starts to download a file, dialog bog
&gt; appears and then download is conducted by an agent located next to address
&gt; bar. When it is finished, agent&apos;s icon is blinking, not a tab.
&gt; 
OK.

&gt; &gt; Bug ID?
&gt; 
&gt; I will introduce new bug, when approach from this bug will be accepted. Now
&gt; there is no point for this.
&gt; 
&gt; &gt; ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:369:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; 
&gt; This is caused by space aligment in ewk_context.h (that is why I used only 4
&gt; spaces there in initial patch). As far as I know checking style in *.h files
&gt; should be disabled so probably those messages can be ignored. 
&gt; 

Hmm, we can consider to add exception for check-webkit-style.
But I am not sure which one is better for us.

gyuyoung, what do you think about it?

&gt; Best regards,
&gt; Lukasz Bialek</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074324</commentid>
    <comment_count>9</comment_count>
      <attachid>247847</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-03-04 18:09:21 -0800</bug_when>
    <thetext>Comment on attachment 247847
Patch

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

&gt; Source/WebKit2/ChangeLog:13
&gt; +        Propose a new callbacks which are view independent and detach EFL&apos;s DownloadMaager

Typo: DownloadMaager -&gt; DownloadManager

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_download_job.cpp:-44
&gt; -class EWK2DownloadJobTest : public EWK2UnitTestBase {

Why should we remove this unit test ? I think we need to modify this unit test based on this change.

&gt; Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp:164
&gt; +    RefPtr&lt;EwkDownloadJob&gt; ewkDownload = EwkDownloadJob::create(download);

I think EwkDownloadJob::create() is not necessary. We can make an instance with new EwkDownloadJob if we move its constructor from private to public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074325</commentid>
    <comment_count>10</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-03-04 18:10:20 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Hello,
&gt; &gt; 
&gt; &gt; I have uploaded new patch with (almost) all comments included. To answer
&gt; &gt; your questions:
&gt; &gt; 
&gt; &gt; &gt; I am not sure.
&gt; &gt; &gt; Doesn&apos;t we have any use cases which need to distinguish which ewk_view(tab)
&gt; &gt; &gt; requests this download?
&gt; &gt; 
&gt; &gt; As far as I know, all modern browsers have general download manager common
&gt; &gt; for all tabs/windows. When user starts to download a file, dialog bog
&gt; &gt; appears and then download is conducted by an agent located next to address
&gt; &gt; bar. When it is finished, agent&apos;s icon is blinking, not a tab.
&gt; &gt; 
&gt; OK.
&gt; 
&gt; &gt; &gt; Bug ID?
&gt; &gt; 
&gt; &gt; I will introduce new bug, when approach from this bug will be accepted. Now
&gt; &gt; there is no point for this.
&gt; &gt; 
&gt; &gt; &gt; ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:369:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; &gt; 
&gt; &gt; This is caused by space aligment in ewk_context.h (that is why I used only 4
&gt; &gt; spaces there in initial patch). As far as I know checking style in *.h files
&gt; &gt; should be disabled so probably those messages can be ignored. 
&gt; &gt; 
&gt; 
&gt; Hmm, we can consider to add exception for check-webkit-style.
&gt; But I am not sure which one is better for us.
&gt; 
&gt; gyuyoung, what do you think about it?

I think we can land this patch without check-webkit-style change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074471</commentid>
    <comment_count>11</comment_count>
      <attachid>247943</attachid>
    <who name="Lukasz Bialek">l.bialek</who>
    <bug_when>2015-03-05 04:14:16 -0800</bug_when>
    <thetext>Created attachment 247943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074473</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-05 04:16:52 -0800</bug_when>
    <thetext>Attachment 247943 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:369:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:370:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:371:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:372:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074474</commentid>
    <comment_count>13</comment_count>
    <who name="Lukasz Bialek">l.bialek</who>
    <bug_when>2015-03-05 04:23:21 -0800</bug_when>
    <thetext>Hello,

New patch uploaded. 

&gt; Typo: DownloadMaager -&gt; DownloadManager

Fixed.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_download_job.cpp:-44
&gt; &gt; -class EWK2DownloadJobTest : public EWK2UnitTestBase {
&gt; 
&gt; Why should we remove this unit test ? I think we need to modify this unit
&gt; test based on this change.

Tests are modified and enabled. They pass.

&gt; &gt; Source/WebKit2/UIProcess/efl/DownloadManagerEfl.cpp:164
&gt; &gt; +    RefPtr&lt;EwkDownloadJob&gt; ewkDownload = EwkDownloadJob::create(download);
&gt; 
&gt; I think EwkDownloadJob::create() is not necessary. We can make an instance
&gt; with new EwkDownloadJob if we move its constructor from private to public.

Unfortunately, when I tried to convert it to unique_ptr approach, I encountered a problem with HashMap add operation (&quot;use of deleted function &apos;std::unique_ptr&lt;_Tp, _Dp&gt;&amp; std::unique_ptr&lt;_Tp, _Dp&gt;::operator=(...)&quot;. I would leave it for now because it will need some further investigation about HashMap and this problem is not connected with subject of this patch. It can be easily fixed in separete bug.

Best regards,
Lukasz Bialek</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074475</commentid>
    <comment_count>14</comment_count>
      <attachid>247943</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2015-03-05 04:27:17 -0800</bug_when>
    <thetext>Comment on attachment 247943
Patch

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

LGTM except for my small comment.

&gt; Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_download_job.cpp:123
&gt; +    static void on_download_cancelled(EwkObject* eventInfo, void* userData)

eventInfo is not used inside this function. It can cause unused param build warning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074482</commentid>
    <comment_count>15</comment_count>
      <attachid>247946</attachid>
    <who name="Lukasz Bialek">l.bialek</who>
    <bug_when>2015-03-05 04:47:11 -0800</bug_when>
    <thetext>Created attachment 247946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074483</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-05 04:48:42 -0800</bug_when>
    <thetext>Attachment 247946 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:369:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:370:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:371:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:372:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebKit2/UIProcess/API/efl/ewk_context.h:373:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 5 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074488</commentid>
    <comment_count>17</comment_count>
      <attachid>247946</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-05 06:05:36 -0800</bug_when>
    <thetext>Comment on attachment 247946
Patch

Clearing flags on attachment: 247946

Committed r181076: &lt;http://trac.webkit.org/changeset/181076&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074489</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-05 06:05:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246314</attachid>
            <date>2015-02-10 00:26:56 -0800</date>
            <delta_ts>2015-03-03 23:54:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131162-20150210092656.patch</filename>
            <type>text/plain</type>
            <size>35008</size>
            <attacher name="Lukasz Bialek">l.bialek</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWRiNmI5YTgwM2EyZTU2
OWYyMjIyNGU5OGVlNzZlZTBhMDNhMGMxMS4uZDUxZjhjYTYxYTVkYjllZThkOWJiZmJiNjg4ZTJl
OTFlZGE1MmI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1LTAyLTA5ICBMdWth
c3ogQmlhbGVrICA8bC5iaWFsZWtAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBD
cmFzaCB3aGVuICJEb3dubG9hZCBMaW5rZWQgRmlsZSIgZnJvbSBNaW5pQnJvd3NlciBjb250ZXh0
IG1lbnUgaXMgY2xpY2tlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMxMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgIkRvd25sb2FkIExpbmtlZCBGaWxlIiBjcmFzaGVzIGJlY2F1c2Ugb2YgbnVsbC1w
b2ludGVyIGV4Y2VwdGlvbiBvZiBEb3dubG9hZCBKb2IuCisgICAgICAgIER1ZSB0byBhcmNoaXRl
Y3R1cmFsIGRpZmZpY3VsdGllcywgZWFzeSBmaXggaXMgbm90IHBvc3NpYmxlIChFd2tWaWV3IGlz
IG5lZWRlZCBpbgorICAgICAgICBEb3dubG9hZE1hbmFnZXIgdG8gY3JlYXRlIERvd25sb2FkSm9i
cyBhbmQgaXQgaXMgb25seSB1c2VkIHRvIG5vdGlmeSB0aGUgY2xpZW50IAorICAgICAgICBhYm91
dCBkb3dubG9hZCAoZmluaXNoZWQsIGVycm9yLCBjYW5jZWwpIHZpYSBzbWFydCBjYWxsYmFjayB1
c2luZyBFd2tWaWV3IChFdmFzX09iamVjdCkuCisKKyAgICAgICAgUHJvcG9zZSBhIG5ldyBjYWxs
YmFja3Mgd2hpY2ggYXJlIHZpZXcgaW5kZXBlbmRlbnQgYW5kIGRldGFjaCBFRkwncyBEb3dubG9h
ZE1hYWdlcgorICAgICAgICBmcm9tIEV3a1ZpZXcuIEl0IG1ha2VzIERvd25sb2FkTWFuYWdlckVG
TCBjb25zaXN0ZW50IHdpdGggV0tDb250ZXh0RG93bmxvYWQuCisgICAgICAgIEZpeCB0aGUgY3Jh
c2ggYW5kIHJlc3RvcmUgZG93bmxvYWQgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaDoKKyAgICAgICAgUmVtb3ZlIG9sZCBjYWxs
YmFjayBtZWNoYW5pc20KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5j
cHA6CisgICAgICAgIChld2tfY29udGV4dF9kb3dubG9hZF9jYWxsYmFja3Nfc2V0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOgorICAgICAgICBEZWNsYXJlIG5l
dyBjYWxsYmFjayBmdW5jdGlvbnMgYW5kIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcDoKKyAgICAgICAgKEV3a0Rv
d25sb2FkSm9iOjpFd2tEb3dubG9hZEpvYik6CisgICAgICAgIChFd2tEb3dubG9hZEpvYjo6dmll
dyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pv
Yi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0
ZS5oOgorICAgICAgICAoRXdrRG93bmxvYWRKb2I6OmNyZWF0ZSk6CisgICAgICAgIFJlbW92ZSBF
d2tWaWV3IGRlcGVuZGVuY3kKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9q
b2IuY3BwOiBSZW1vdmVkLgorICAgICAgICBPbGQgdGVzdHMgZG8gbm90IG1hdGNoIG5ldyBmZWF0
dXJlLiBTZXBhcmF0ZSBidWcgd2lsbCBiZSBpbnRyb2R1Y2VkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YW5hZ2VyRWZsOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbDo6ZGlkU3RhcnQpOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZE1hbmFnZXJFZmw6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZE1hbmFnZXJFZmw6OmRpZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFu
YWdlckVmbDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyRWZs
OjpEb3dubG9hZE1hbmFnZXJFZmwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJF
Zmw6OnJlZ2lzdGVyRG93bmxvYWRKb2IpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFn
ZXJFZmw6OnNldENhbGxiYWNrcyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1h
bmFnZXJFZmwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3RWZsOjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgorICAgICAg
ICBBZGQgc3VwcG9ydCBvZiBuZXcgY2FsbGJhY2sgbWVjaGFuaXNtCisKIDIwMTUtMDItMDggIFRp
bW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE51bGwg
ZGVyZWYgaW4gX2NsZWFySW1tZWRpYXRlQWN0aW9uU3RhdGUgd2hlbiBjbG9zaW5nIGEgdmlldyB3
aXRoIGEgRGF0YURldGVjdG9ycyBwb3BvdmVyIG9wZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaAppbmRleCAzN2VhNjJmOWZlNGEw
ZmFkZjY4NTJjMDkwODgyZmQ4ZWI5NzU2OTg3Li45OGViMDMxMDQ4ZjlmMjA3NWM0NjE4NDYxYjM1
MjllYWNlNTZlOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3Q2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0NhbGxiYWNrcy5oCkBAIC00OCwxMCArNDgsNiBAQCBlbnVtIENhbGxiYWNrVHlw
ZSB7CiAgICAgQmFja0ZvcndhcmRMaXN0Q2hhbmdlLAogICAgIENhbmNlbFZpYnJhdGlvbiwKICAg
ICBDb250ZW50c1NpemVDaGFuZ2VkLAotICAgIERvd25sb2FkSm9iQ2FuY2VsbGVkLAotICAgIERv
d25sb2FkSm9iRmFpbGVkLAotICAgIERvd25sb2FkSm9iRmluaXNoZWQsCi0gICAgRG93bmxvYWRK
b2JSZXF1ZXN0ZWQsCiAgICAgRmlsZUNob29zZXJSZXF1ZXN0LAogICAgIEZvY3VzTm90Rm91bmQs
CiAgICAgTmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LApAQCAtMTc2LDEwICsxNzIsNiBAQCBERUNM
QVJFX0VXS19WSUVXX0NBTExCQUNLKEF1dGhlbnRpY2F0aW9uUmVxdWVzdCwgImF1dGhlbnRpY2F0
aW9uLHJlcXVlc3QiLCBFd2tfQQogREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhCYWNrRm9yd2Fy
ZExpc3RDaGFuZ2UsICJiYWNrLGZvcndhcmQsbGlzdCxjaGFuZ2VkIiwgdm9pZCk7CiBERUNMQVJF
X0VXS19WSUVXX0NBTExCQUNLKENhbmNlbFZpYnJhdGlvbiwgImNhbmNlbCx2aWJyYXRpb24iLCB2
b2lkKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soQ29udGVudHNTaXplQ2hhbmdlZCwgImNv
bnRlbnRzLHNpemUsY2hhbmdlZCIsIEV3a19DU1NfU2l6ZSopOwotREVDTEFSRV9FV0tfVklFV19D
QUxMQkFDSyhEb3dubG9hZEpvYkNhbmNlbGxlZCwgImRvd25sb2FkLGNhbmNlbGxlZCIsIEV3a19E
b3dubG9hZF9Kb2IqKTsKLURFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRG93bmxvYWRKb2JGYWls
ZWQsICJkb3dubG9hZCxmYWlsZWQiLCBFd2tfRG93bmxvYWRfSm9iX0Vycm9yKik7Ci1ERUNMQVJF
X0VXS19WSUVXX0NBTExCQUNLKERvd25sb2FkSm9iRmluaXNoZWQsICJkb3dubG9hZCxmaW5pc2hl
ZCIsIEV3a19Eb3dubG9hZF9Kb2IqKTsKLURFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRG93bmxv
YWRKb2JSZXF1ZXN0ZWQsICJkb3dubG9hZCxyZXF1ZXN0IiwgRXdrX0Rvd25sb2FkX0pvYiopOwog
REVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhGaWxlQ2hvb3NlclJlcXVlc3QsICJmaWxlLGNob29z
ZXIscmVxdWVzdCIsIEV3a19GaWxlX0Nob29zZXJfUmVxdWVzdCopOwogREVDTEFSRV9FV0tfVklF
V19DQUxMQkFDSyhGb2N1c05vdEZvdW5kLCAiZm9jdXMsbm90Zm91bmQiLCBFd2tfRm9jdXNfRGly
ZWN0aW9uKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soTmV3Rm9ybVN1Ym1pc3Npb25SZXF1
ZXN0LCAiZm9ybSxzdWJtaXNzaW9uLHJlcXVlc3QiLCBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVl
c3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcAppbmRleCA5NTJiMzNlYmM0Nzk1ODE4OWRhM2NiZDVkNTkzZmEyMjNkMmIxYTNmLi42ZmYz
OGQ2MDNlODRmZjc3Njg3MjY1MjI3MDU1NzE1ODUzNmQ1YWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC00OTcsNiArNDk3LDEz
IEBAIHZvaWQgZXdrX2NvbnRleHRfaGlzdG9yeV9jYWxsYmFja3Nfc2V0KEV3a19Db250ZXh0KiBl
d2tDb250ZXh0LCBFd2tfSGlzdG9yeV9OYXZpCiAgICAgaW1wbC0+aGlzdG9yeUNsaWVudCgpLT5z
ZXRDYWxsYmFja3MobmF2aWdhdGUsIGNsaWVudFJlZGlyZWN0LCBzZXJ2ZXJSZWRpcmVjdCwgdGl0
bGVVcGRhdGUsIHBvcHVsYXRlVmlzaXRlZExpbmtzLCBkYXRhKTsKIH0KIAordm9pZCBld2tfY29u
dGV4dF9kb3dubG9hZF9jYWxsYmFja3Nfc2V0KEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBFd2tf
RG93bmxvYWRfUmVxdWVzdGVkX0NiIHJlcXVlc3RlZCwgRXdrX0Rvd25sb2FkX0ZhaWxlZF9DYiBm
YWlsZWQsIEV3a19Eb3dubG9hZF9DYW5jZWxsZWRfQ2IgY2FuY2VsbGVkLCAgRXdrX0Rvd25sb2Fk
X0ZpbmlzaGVkX0NiIGZpbmlzaGVkLCB2b2lkKiBkYXRhKQoreworICAgIEVXS19PQkpfR0VUX0lN
UExfT1JfUkVUVVJOKEV3a0NvbnRleHQsIGV3a0NvbnRleHQsIGltcGwpOworCisgICAgaW1wbC0+
ZG93bmxvYWRNYW5hZ2VyKCktPnNldENhbGxiYWNrcyhyZXF1ZXN0ZWQsIGZhaWxlZCwgY2FuY2Vs
bGVkLCBmaW5pc2hlZCwgZGF0YSk7Cit9CisKIHZvaWQgZXdrX2NvbnRleHRfdmlzaXRlZF9saW5r
X2FkZChFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgY29uc3QgY2hhciogdmlzaXRlZFVSTCkKIHsK
ICAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihFd2tDb250ZXh0LCBld2tDb250ZXh0LCBp
bXBsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5o
CmluZGV4IDhjMzhiN2Q3NmI2NjQ3ZmEyNmFjY2MyOTIzMjIyNjMyNWQ1MzBiNGMuLjJkMzQ5NDc1
YTAxZTgxMTFiYTE0NDkwYzhmMGNhMTMxODQwYWQ1NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1
ZGUgImV3a19hcHBsaWNhdGlvbl9jYWNoZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2Nvb2tp
ZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2RhdGFiYXNlX21hbmFnZXIuaCIKKyNpbmNsdWRl
ICJld2tfZG93bmxvYWRfam9iLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCiAjaW5jbHVkZSAi
ZXdrX2Zhdmljb25fZGF0YWJhc2UuaCIKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9kYXRhLmgi
CiAjaW5jbHVkZSAiZXdrX3N0b3JhZ2VfbWFuYWdlci5oIgpAQCAtNTAsNiArNTIsMTcgQEAKIGV4
dGVybiAiQyIgewogI2VuZGlmCiAKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBFd2tfRG93
bmxvYWRfSm9iX0Vycm9yLgordHlwZWRlZiBzdHJ1Y3QgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciBF
d2tfRG93bmxvYWRfSm9iX0Vycm9yOworCisvKioKKyAqIEBicmllZiBTdHJ1Y3R1cmUgY29udGFp
bmluZyBkZXRhaWxzIGFib3V0IGEgZG93bmxvYWQgZmFpbHVyZS4KKyAqLworc3RydWN0IEV3a19E
b3dubG9hZF9Kb2JfRXJyb3IgeworICAgIEV3a19Eb3dubG9hZF9Kb2IgKmRvd25sb2FkX2pvYjsg
LyoqPCBkb3dubG9hZCB0aGF0IGZhaWxlZCAqLworICAgIEV3a19FcnJvciAqZXJyb3I7IC8qKjwg
ZG93bmxvYWQgZXJyb3IgKi8KK307CisKIC8qKgogICogRGVjbGFyZSBFd2tfQ29udGV4dCBhcyBF
d2tfT2JqZWN0LgogICoKQEAgLTEzMSw2ICsxNDQsMzAgQEAgdHlwZWRlZiB2b2lkICgqRXdrX0hp
c3RvcnlfU2VydmVyX1JlZGlyZWN0aW9uX0NiKShjb25zdCBFdmFzX09iamVjdCAqdmlldywgY29u
c3QKIHR5cGVkZWYgdm9pZCAoKkV3a19IaXN0b3J5X1RpdGxlX1VwZGF0ZV9DYikoY29uc3QgRXZh
c19PYmplY3QgKnZpZXcsIGNvbnN0IGNoYXIgKnRpdGxlLCBjb25zdCBjaGFyICp1cmwsIHZvaWQg
KnVzZXJfZGF0YSk7CiAKIC8qKgorICogQHR5cGVkZWYgRXdrX0Rvd25sb2FkX1JlcXVlc3RlZF9D
YiBFd2tfRG93bmxvYWRfUmVxdWVzdGVkX0NiCisgKiBAYnJpZWYgVHlwZSBkZWZpbml0aW9uIGZv
ciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIG5ldyBkb3dubG9hZCBq
b2IgaXMgcmVxdWVzdGVkLgorICovCit0eXBlZGVmIHZvaWQgKCpFd2tfRG93bmxvYWRfUmVxdWVz
dGVkX0NiKShFd2tfRG93bmxvYWRfSm9iICpkb3dubG9hZCwgdm9pZCAqdXNlcl9kYXRhKTsKKwor
LyoqCisgKiBAdHlwZWRlZiBFd2tfRG93bmxvYWRfRmFpbGVkX0NiIEV3a19Eb3dubG9hZF9GYWls
ZWRfQ2IKKyAqIEBicmllZiBUeXBlIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gdGhhdCB3aWxs
IGJlIGNhbGxlZCBiYWNrIHdoZW4gYSBkb3dubG9hZCBqb2IgaGFzIGZhaWxlZC4KKyAqLwordHlw
ZWRlZiB2b2lkICgqRXdrX0Rvd25sb2FkX0ZhaWxlZF9DYikoRXdrX0Rvd25sb2FkX0pvYl9FcnJv
ciAqZXJyb3IsIHZvaWQgKnVzZXJfZGF0YSk7CisKKy8qKgorICogQHR5cGVkZWYgRXdrX0Rvd25s
b2FkX0NhbmNlbGxlZF9DYiBFd2tfRG93bmxvYWRfQ2FuY2VsbGVkX0NiCisgKiBAYnJpZWYgVHlw
ZSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVu
IGEgZG93bmxvYWQgam9iIGlzIGNhbmNlbGxlZC4KKyAqLwordHlwZWRlZiB2b2lkICgqRXdrX0Rv
d25sb2FkX0NhbmNlbGxlZF9DYikoRXdrX0Rvd25sb2FkX0pvYiAqZG93bmxvYWQsIHZvaWQgKnVz
ZXJfZGF0YSk7CisKKy8qKgorICogQHR5cGVkZWYgRXdrX0Rvd25sb2FkX0ZpbmlzaGVkX0NiIEV3
a19Eb3dubG9hZF9GaW5pc2hlZF9DYgorICogQGJyaWVmIFR5cGUgZGVmaW5pdGlvbiBmb3IgYSBm
dW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGJhY2sgd2hlbiBhIGRvd25sb2FkIGpvYiBpcyBm
aW5pc2hlZC4KKyAqLwordHlwZWRlZiB2b2lkICgqRXdrX0Rvd25sb2FkX0ZpbmlzaGVkX0NiKShF
d2tfRG93bmxvYWRfSm9iICpkb3dubG9hZCwgdm9pZCAqdXNlcl9kYXRhKTsKKworLyoqCiAgKiBA
dHlwZWRlZiBFd2tfQ29udGV4dF9IaXN0b3J5X0NsaWVudF9WaXNpdGVkX0xpbmtzX1BvcHVsYXRl
X0NiIEV3a19Db250ZXh0X0hpc3RvcnlfQ2xpZW50X1Zpc2l0ZWRfTGlua3NfUG9wdWxhdGVfQ2IK
ICAqIEBicmllZiBUeXBlIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNh
bGxlZCBiYWNrIHdoZW4gY2xpZW50IGlzIGFza2VkIHRvIHByb3ZpZGUgdmlzaXRlZCBsaW5rcyBm
cm9tIGEgY2xpZW50LW1hbmFnZWQgc3RvcmFnZS4KICAqCkBAIC0zMTcsNiArMzU0LDI2IEBAIEVB
UEkgdm9pZCBld2tfY29udGV4dF9oaXN0b3J5X2NhbGxiYWNrc19zZXQoRXdrX0NvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KmRhdGEpOwogCiAvKioKKyAqIFNldHMgZG93bmxvYWQgY2FsbGJhY2tzIGZvciB0aGUgZ2l2ZW4g
QGEgY29udGV4dC4KKyAqCisgKiBUbyBzdG9wIGxpc3RlbmluZyBmb3IgZG93bmxvYWQgZXZlbnRz
LCB5b3UgbWF5IGNhbGwgdGhpcyBmdW5jdGlvbiB3aXRoIEBjCisgKiBOVUxMIGZvciB0aGUgY2Fs
bGJhY2tzLgorICoKKyAqIEBwYXJhbSBjb250ZXh0IGNvbnRleHQgb2JqZWN0IHRvIHNldCBkb3du
bG9hZCBjYWxsYmFja3MKKyAqIEBwYXJhbSBkb3dubG9hZF9yZXF1ZXN0ZWRfZnVuYyB0aGUgZnVu
Y3Rpb24gdG8gY2FsbCB3aGVuIG5ldyBkb3dubG9hZCBpcyByZXF1ZXN0ZWQgKG1heSBiZSBAYyBO
VUxMKS4KKyAqIEBwYXJhbSBkb3dubG9hZF9mYWlsZWRfZnVuYyB0aGUgZnVuY3Rpb24gdG8gY2Fs
bCB3aGVuIGEgZG93bmxvYWQgam9iIGhhcyBmYWlsZWQgKG1heSBiZSBAYyBOVUxMKS4KKyAqIEBw
YXJhbSBkb3dubG9hZF9jYW5jZWxsZWRfZnVuYyB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIGEg
ZG93bmxvYWQgam9iIGlzIGNhbmNlbGxlZCAobWF5IGJlIEBjIE5VTEwpLgorICogQHBhcmFtIGRv
d25sb2FkX2ZpbmlzaGVkX2Z1bmMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBhIGRvd25sb2Fk
IGpvYiBpcyBmaW5pc2hlZCAobWF5IGJlIEBjIE5VTEwpLgorICogQHBhcmFtIGRhdGEgVXNlciBk
YXRhIChtYXkgYmUgQGMgTlVMTCkuCisgKi8KK0VBUEkgdm9pZCBld2tfY29udGV4dF9kb3dubG9h
ZF9jYWxsYmFja3Nfc2V0KEV3a19Db250ZXh0KiBjb250ZXh0LAorICAgIEV3a19Eb3dubG9hZF9S
ZXF1ZXN0ZWRfQ2IgZG93bmxvYWRfcmVxdWVzdGVkX2Z1bmMsCisgICAgRXdrX0Rvd25sb2FkX0Zh
aWxlZF9DYiBkb3dubG9hZF9mYWlsZWRfZnVuYywKKyAgICBFd2tfRG93bmxvYWRfQ2FuY2VsbGVk
X0NiIGRvd25sb2FkX2NhbmNlbGxlZF9mdW5jLAorICAgIEV3a19Eb3dubG9hZF9GaW5pc2hlZF9D
YiBkb3dubG9hZF9maW5pc2hlZF9mdW5jLAorICAgIHZvaWQqIGRhdGEpOworCisvKioKICAqIFJl
Z2lzdGVycyB0aGUgZ2l2ZW4gQGEgdmlzaXRlZF91cmwgYXMgdmlzaXRlZCBsaW5rIGluIEBhIGNv
bnRleHQgdmlzaXRlZCBsaW5rIGNhY2hlLgogICoKICAqIFRoaXMgZnVuY3Rpb24gc2hhbGwgYmUg
aW52b2tlZCBhcyBhIHJlc3BvbnNlIHRvIEBjIHBvcHVsYXRlVmlzaXRlZExpbmtzIGNhbGxiYWNr
IG9mIHRoZSBoaXN0b3J5IGNpZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcAppbmRleCA1NTBjMGUwZjczOGNlZDkxOWJj
NDhmMzMxNWVjY2Y3MDljZjY3NTNlLi5lMGYyZjY5YTI1NjhkZGNlMDUxOTkwNDhjMzg0MWMyNGNm
YTliNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
ZG93bmxvYWRfam9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZG93bmxvYWRfam9iLmNwcApAQCAtMzYsOSArMzYsOCBAQAogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCi1Fd2tEb3dubG9hZEpvYjo6RXdrRG93bmxvYWRKb2IoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgRXdrVmlldyogdmlld0ltcGwpCitFd2tEb3dubG9hZEpvYjo6RXdrRG93bmxvYWRK
b2IoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKICAgICA6IG1fZG93bmxvYWQoZG93bmxvYWQpCi0g
ICAgLCBtX3ZpZXdJbXBsKHZpZXdJbXBsKQogICAgICwgbV9zdGF0ZShFV0tfRE9XTkxPQURfSk9C
X1NUQVRFX05PVF9TVEFSVEVEKQogICAgICwgbV9zdGFydFRpbWUoLTEpCiAgICAgLCBtX2VuZFRp
bWUoLTEpCkBAIC01NCwxNiArNTMsNiBAQCB1aW50NjRfdCBFd2tEb3dubG9hZEpvYjo6aWQoKSBj
b25zdAogICAgIHJldHVybiBXS0Rvd25sb2FkR2V0SUQobV9kb3dubG9hZC5nZXQoKSk7CiB9CiAK
LS8qKgotICogQGludGVybmFsCi0gKiBSZXR1cm5zIHRoZSB2aWV3IHRoaXMgZG93bmxvYWQgaXMg
YXR0YWNoZWQgdG8uCi0gKiBUaGUgdmlldyBpcyBuZWVkZWQgdG8gc2VuZCBub3RpZmljYXRpb24g
c2lnbmFscy4KLSAqLwotRXdrVmlldyogRXdrRG93bmxvYWRKb2I6OnZpZXcoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3ZpZXdJbXBsOwotfQotCiBFd2tfRG93bmxvYWRfSm9iX1N0YXRlIGV3a19k
b3dubG9hZF9qb2Jfc3RhdGVfZ2V0KGNvbnN0IEV3a19Eb3dubG9hZF9Kb2IqIGRvd25sb2FkKQog
ewogICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a0Rvd25sb2FkSm9iLCBk
b3dubG9hZCwgaW1wbCwgRVdLX0RPV05MT0FEX0pPQl9TVEFURV9VTktOT1dOKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuaAppbmRl
eCA2OGNmNTA0MTM2MTMyODU5MTNhMGU4YTI2MjJiMWIwYjA3NDY0NjhjLi4wMzBhZWExMzk4NGIy
ZmMzYjllM2E1MjczMTE2ZWU0OTg2MmJjZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5oCkBAIC0xNTEsOCArMTUxLDggQEAg
RUFQSSBjb25zdCBjaGFyICpld2tfZG93bmxvYWRfam9iX3N1Z2dlc3RlZF9maWxlbmFtZV9nZXQo
Y29uc3QgRXdrX0Rvd25sb2FkX0pvYgogLyoqCiAgKiBDYW5jZWxzIHRoZSBkb3dubG9hZCBhc3lu
Y2hyb25vdXNseS4KICAqCi0gKiBXaGVuIHRoZSBvbmdvaW5nIGRvd25sb2FkIG9wZXJhdGlvbiBp
cyBlZmZlY3RpdmVseSBjYW5jZWxsZWQgYSAiZG93bmxvYWQsY2FuY2VsbGVkIgotICogc2lnbmFs
IHdpbGwgYmUgZW1pdHRlZCBvbiB0aGUgdmlldy4KKyAqIFdoZW4gdGhlIG9uZ29pbmcgZG93bmxv
YWQgb3BlcmF0aW9uIGlzIGVmZmVjdGl2ZWx5IGNhbmNlbGxlZCBhICJFd2tfRG93bmxvYWRfQ2Fu
Y2VsbGVkX0NiIgorICogd2lsbCBiZSBjYWxsZWQgb24gdGhlIEV3a19Eb3dubG9hZF9Kb2IuCiAg
KgogICogQHBhcmFtIGRvd25sb2FkIGEgI0V3a19Eb3dubG9hZF9Kb2IgdG8gY2FuY2VsLgogICoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9h
ZF9qb2JfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rv
d25sb2FkX2pvYl9wcml2YXRlLmgKaW5kZXggMGRiZDUyNTU3ZDE5ODE4ZDFlZDcxZDI5MGMxZDRk
Mzk5ZDFkYjY2MS4uOWMxZDJhZjk1Y2NlMWQ4MjcxNzA3NGQzMWM1MWViNWFlMWFiOWNiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pv
Yl9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rv
d25sb2FkX2pvYl9wcml2YXRlLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgRXdrRG93bmxvYWRK
b2IgOiBwdWJsaWMgRXdrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBFV0tfT0JKRUNUX0RFQ0xBUkUo
RXdrRG93bmxvYWRKb2IpCiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tEb3dubG9hZEpvYj4g
Y3JlYXRlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIEV3a1ZpZXcqIHZpZXdJbXBsKQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEV3a0Rvd25sb2FkSm9iPiBjcmVhdGUoV0tEb3dubG9hZFJlZiBkb3du
bG9hZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrRG93bmxvYWRKb2Io
ZG93bmxvYWQsIHZpZXdJbXBsKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrRG93
bmxvYWRKb2IoZG93bmxvYWQpKTsKICAgICB9CiAKICAgICB1aW50NjRfdCBpZCgpIGNvbnN0OwpA
QCAtNzEsMTAgKzcxLDkgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHJlY2VpdmVkRGF0YVNpemUo
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBFd2tEb3dubG9hZEpvYihXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBFd2tWaWV3KiB2aWV3KTsKKyAgICBFd2tEb3dubG9hZEpvYihXS0Rvd25sb2FkUmVm
IGRvd25sb2FkKTsKIAogICAgIFdLUmV0YWluUHRyPFdLRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7
Ci0gICAgRXdrVmlldyogbV92aWV3SW1wbDsKICAgICBFd2tfRG93bmxvYWRfSm9iX1N0YXRlIG1f
c3RhdGU7CiAgICAgbXV0YWJsZSBSZWZQdHI8RXdrVXJsUmVxdWVzdD4gbV9yZXF1ZXN0OwogICAg
IFJlZlB0cjxFd2tVcmxSZXNwb25zZT4gbV9yZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDkwNWU1NDFmNWNjMmVhMWFhNmM3NDlhMmU3
MWJkYTdjZGI0NTBkZmYuLjkzNzNhOTEzN2Y5MDZhOThhMmQ2NjFiZDc1ZGFiOTY0ZGU1ZDc0MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMzEs
MTEgKzMxLDYgQEAKICAqIC0gImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCB2b2lkOiByZXBv
cnRzIHRoYXQgdGhlIHZpZXcncyBiYWNrIC8gZm9yd2FyZCBsaXN0IGhhZCBjaGFuZ2VkLgogICog
LSAiY2FuY2VsLHZpYnJhdGlvbiIsIHZvaWQ6IHJlcXVlc3QgdG8gY2FuY2VsIHRoZSB2aWJyYXRp
b24uCiAgKiAtICJjb250ZW50cyxzaXplLGNoYW5nZWQiLCBFd2tfQ1NTX1NpemUqOiByZXBvcnRz
IHRoYXQgY29udGVudHMgc2l6ZSB3YXMgY2hhbmdlZC4KLSAqIC0gImRvd25sb2FkLGNhbmNlbGxl
ZCIsIEV3a19Eb3dubG9hZF9Kb2IqOiByZXBvcnRzIHRoYXQgYSBkb3dubG9hZCB3YXMgZWZmZWN0
aXZlbHkgY2FuY2VsbGVkLgotICogLSAiZG93bmxvYWQsZmFpbGVkIiwgRXdrX0Rvd25sb2FkX0pv
Yl9FcnJvcio6IHJlcG9ydHMgdGhhdCBhIGRvd25sb2FkIGZhaWxlZCB3aXRoIHRoZSBnaXZlbiBl
cnJvci4KLSAqIC0gImRvd25sb2FkLGZpbmlzaGVkIiwgRXdrX0Rvd25sb2FkX0pvYio6IHJlcG9y
dHMgdGhhdCBhIGRvd25sb2FkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCi0gKiAtICJkb3dubG9h
ZCxyZXF1ZXN0IiwgRXdrX0Rvd25sb2FkX0pvYio6IHJlcG9ydHMgdGhhdCBhIG5ldyBkb3dubG9h
ZCBoYXMgYmVlbiByZXF1ZXN0ZWQuIFRoZSBjbGllbnQgc2hvdWxkIHNldCB0aGUKLSAqICAgZGVz
dGluYXRpb24gcGF0aCBieSBjYWxsaW5nIGV3a19kb3dubG9hZF9qb2JfZGVzdGluYXRpb25fc2V0
KCkgb3IgdGhlIGRvd25sb2FkIHdpbGwgZmFpbC4KICAqIC0gImZpbGUsY2hvb3NlcixyZXF1ZXN0
IiwgRXdrX0ZpbGVfQ2hvb3Nlcl9SZXF1ZXN0KjogcmVwb3J0cyB0aGF0IGEgcmVxdWVzdCBoYXMg
YmVlbiBtYWRlIGZvciB0aGUgdXNlciB0byBjaG9vc2UKICAqICAgYSBmaWxlIChvciBzZXZlcmFs
KSBvbiB0aGUgZmlsZSBzeXN0ZW0uIENhbGwgZXdrX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X3JlZigp
IG9uIHRoZSByZXF1ZXN0IG9iamVjdCB0byBwcm9jZXNzIGl0CiAgKiAgIGFzeW5jaHJvbm91c2x5
LgpAQCAtNzksNyArNzQsNiBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAi
ZXdrX2NvbnRleHRfbWVudS5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKLSNpbmNs
dWRlICJld2tfZXJyb3IuaCIKICNpbmNsdWRlICJld2tfcGFnZV9ncm91cC5oIgogI2luY2x1ZGUg
ImV3a19wb3B1cF9tZW51LmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgpAQCAt
MjQzLDE3ICsyMzcsNiBAQCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfRGF0YSB7CiAgICAgfSBjaGFu
Z2VkOwogfTsKIAotLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19Eb3dubG9hZF9Kb2Jf
RXJyb3IuCi10eXBlZGVmIHN0cnVjdCBFd2tfRG93bmxvYWRfSm9iX0Vycm9yIEV3a19Eb3dubG9h
ZF9Kb2JfRXJyb3I7Ci0KLS8qKgotICogQGJyaWVmIFN0cnVjdHVyZSBjb250YWluaW5nIGRldGFp
bHMgYWJvdXQgYSBkb3dubG9hZCBmYWlsdXJlLgotICovCi1zdHJ1Y3QgRXdrX0Rvd25sb2FkX0pv
Yl9FcnJvciB7Ci0gICAgRXdrX0Rvd25sb2FkX0pvYiAqZG93bmxvYWRfam9iOyAvKio8IGRvd25s
b2FkIHRoYXQgZmFpbGVkICovCi0gICAgRXdrX0Vycm9yICplcnJvcjsgLyoqPCBkb3dubG9hZCBl
cnJvciAqLwotfTsKLQogLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19DU1NfU2l6ZS4K
IHR5cGVkZWYgc3RydWN0IEV3a19DU1NfU2l6ZSBFd2tfQ1NTX1NpemU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9h
ZF9qb2IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX2Rvd25sb2FkX2pvYi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiYmMy
NTljY2I1ZTc1MzdjNzBlOWM3NDcyYzI5YzBmNDk0ODQ4ODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25sb2FkX2pvYi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwx
ODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0j
aW5jbHVkZSAiVW5pdFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgiCi0jaW5jbHVkZSAiVW5p
dFRlc3RVdGlscy9FV0syVW5pdFRlc3RTZXJ2ZXIuaCIKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgot
I2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3Rk
bGliLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBFV0syVW5pdFRl
c3Q7Ci11c2luZyBuYW1lc3BhY2UgV1RGOwotCi1leHRlcm4gRVdLMlVuaXRUZXN0RW52aXJvbm1l
bnQqIGVudmlyb25tZW50OwotCi1zdGF0aWMgY29uc3QgY2hhciBzZXJ2ZXJTdWdnZXN0ZWRGaWxl
bmFtZVtdID0gIndlYmtpdC1kb3dubG9hZGVkLWZpbGUiOwotc3RhdGljIGNvbnN0IGNoYXIgdGVz
dEZpbGVQYXRoW10gPSAiL3Rlc3QucGRmIjsKLQotY2xhc3MgRVdLMkRvd25sb2FkSm9iVGVzdCA6
IHB1YmxpYyBFV0syVW5pdFRlc3RCYXNlIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgRG93bmxvYWRU
ZXN0RGF0YSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGZpbGVVcmw7Ci0gICAgICAgIGNvbnN0IGNo
YXIqIGRlc3RpbmF0aW9uUGF0aDsKLSAgICB9OwotCi0gICAgc3RhdGljIGJvb2wgZmlsZUV4aXN0
cyhjb25zdCBjaGFyKiBwYXRoKQotICAgIHsKLSAgICAgICAgc3RydWN0IHN0YXQgYnVmOwotICAg
ICAgICByZXR1cm4gIXN0YXQocGF0aCwgJmJ1Zik7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
c2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwg
Y29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0Kiwgdm9pZCop
Ci0gICAgewotICAgICAgICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkg
ewotICAgICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFU
VVNfTk9UX0lNUExFTUVOVEVEKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIEVpbmFfU3RyYnVmKiBmaWxlUGF0aCA9IGVpbmFfc3RyYnVmX25ldygpOwotICAgICAg
ICBlaW5hX3N0cmJ1Zl9hcHBlbmQoZmlsZVBhdGgsIFRFU1RfUkVTT1VSQ0VTX0RJUik7Ci0gICAg
ICAgIGVpbmFfc3RyYnVmX2FwcGVuZChmaWxlUGF0aCwgcGF0aCk7Ci0KLSAgICAgICAgRWluYV9G
aWxlKiBmID0gZWluYV9maWxlX29wZW4oZWluYV9zdHJidWZfc3RyaW5nX2dldChmaWxlUGF0aCks
IGZhbHNlKTsKLSAgICAgICAgZWluYV9zdHJidWZfZnJlZShmaWxlUGF0aCk7Ci0gICAgICAgIGlm
ICghZikgewotICAgICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09V
UF9TVEFUVVNfTk9UX0ZPVU5EKTsKLSAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBs
ZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgc2l6ZV90IGZpbGVTaXplID0gZWluYV9maWxlX3NpemVfZ2V0KGYpOwot
Ci0gICAgICAgIHZvaWQqIGNvbnRlbnRzID0gZWluYV9maWxlX21hcF9hbGwoZiwgRUlOQV9GSUxF
X1BPUFVMQVRFKTsKLSAgICAgICAgaWYgKCFjb250ZW50cykgewotICAgICAgICAgICAgc291cF9t
ZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKLSAgICAg
ICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc291cF9tZXNzYWdl
X3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwotCi0gICAgICAgIEVpbmFfU3Ry
YnVmKiBjb250ZW50RGlzcG9zaXRpb24gPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKLSAgICAgICAgZWlu
YV9zdHJidWZfYXBwZW5kX3ByaW50Zihjb250ZW50RGlzcG9zaXRpb24sICJmaWxlbmFtZT0lcyIs
IHNlcnZlclN1Z2dlc3RlZEZpbGVuYW1lKTsKLSAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNf
YXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJDb250ZW50LURpc3Bvc2l0aW9uIiwg
ZWluYV9zdHJidWZfc3RyaW5nX2dldChjb250ZW50RGlzcG9zaXRpb24pKTsKLSAgICAgICAgZWlu
YV9zdHJidWZfZnJlZShjb250ZW50RGlzcG9zaXRpb24pOwotCi0gICAgICAgIHNvdXBfbWVzc2Fn
ZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9DT1BZLCBj
b250ZW50cywgZmlsZVNpemUpOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZSht
ZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKLQotICAgICAgICBlaW5hX2ZpbGVfbWFwX2ZyZWUoZiwg
Y29udGVudHMpOwotICAgICAgICBlaW5hX2ZpbGVfY2xvc2UoZik7Ci0gICAgfQotCi0gICAgc3Rh
dGljIHZvaWQgb25fZG93bmxvYWRfcmVxdWVzdGVkKHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVj
dCogd2Vidmlldywgdm9pZCogZXZlbnRJbmZvKQotICAgIHsKLSAgICAgICAgRG93bmxvYWRUZXN0
RGF0YSogdGVzdERhdGEgPSBzdGF0aWNfY2FzdDxEb3dubG9hZFRlc3REYXRhKj4odXNlckRhdGEp
OwotICAgICAgICBFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCA9IHN0YXRpY19jYXN0PEV3a19E
b3dubG9hZF9Kb2IqPihldmVudEluZm8pOwotICAgICAgICBBU1NFUlRfRVEoRVdLX0RPV05MT0FE
X0pPQl9TVEFURV9OT1RfU1RBUlRFRCwgZXdrX2Rvd25sb2FkX2pvYl9zdGF0ZV9nZXQoZG93bmxv
YWQpKTsKLSAgICAgICAgQVNTRVJUX0VRKDAsIGV3a19kb3dubG9hZF9qb2JfZXN0aW1hdGVkX3By
b2dyZXNzX2dldChkb3dubG9hZCkpOwotICAgICAgICBBU1NFUlRfRVEoMCwgZXdrX2Rvd25sb2Fk
X2pvYl9lbGFwc2VkX3RpbWVfZ2V0KGRvd25sb2FkKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgwLCBl
d2tfZG93bmxvYWRfam9iX3JlY2VpdmVkX2RhdGFfc2l6ZV9nZXQoZG93bmxvYWQpKTsKLQotICAg
ICAgICBFd2tfVXJsX1JlcXVlc3QqIHJlcXVlc3QgPSBld2tfZG93bmxvYWRfam9iX3JlcXVlc3Rf
Z2V0KGRvd25sb2FkKTsKLSAgICAgICAgQVNTRVJUX1RSVUUocmVxdWVzdCk7Ci0gICAgICAgIEVY
UEVDVF9TVFJFUSh0ZXN0RGF0YS0+ZmlsZVVybCwgZXdrX3VybF9yZXF1ZXN0X3VybF9nZXQocmVx
dWVzdCkpOwotCi0gICAgICAgIEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlID0gZXdrX2Rvd25s
b2FkX2pvYl9yZXNwb25zZV9nZXQoZG93bmxvYWQpOwotICAgICAgICBBU1NFUlRfVFJVRShyZXNw
b25zZSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiYXBwbGljYXRpb24vcGRmIiwgZXdrX3VybF9y
ZXNwb25zZV9taW1lX3R5cGVfZ2V0KHJlc3BvbnNlKSk7Ci0KLSAgICAgICAgRVhQRUNUX1NUUkVR
KHNlcnZlclN1Z2dlc3RlZEZpbGVuYW1lLCBld2tfZG93bmxvYWRfam9iX3N1Z2dlc3RlZF9maWxl
bmFtZV9nZXQoZG93bmxvYWQpKTsKLQotICAgICAgICBBU1NFUlRfRkFMU0UoZmlsZUV4aXN0cyh0
ZXN0RGF0YS0+ZGVzdGluYXRpb25QYXRoKSk7Ci0gICAgICAgIGV3a19kb3dubG9hZF9qb2JfZGVz
dGluYXRpb25fc2V0KGRvd25sb2FkLCB0ZXN0RGF0YS0+ZGVzdGluYXRpb25QYXRoKTsKLSAgICAg
ICAgRVhQRUNUX1NUUkVRKHRlc3REYXRhLT5kZXN0aW5hdGlvblBhdGgsIGV3a19kb3dubG9hZF9q
b2JfZGVzdGluYXRpb25fZ2V0KGRvd25sb2FkKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQg
b25fZG93bmxvYWRfY2FuY2VsbGVkKHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVjdCogd2Vidmll
dywgdm9pZCogZXZlbnRJbmZvKQotICAgIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJEb3du
bG9hZCB3YXMgY2FuY2VsbGVkLlxuIik7Ci0gICAgICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7
Ci0gICAgICAgIEZBSUwoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBvbl9kb3dubG9hZF9m
YWlsZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudElu
Zm8pCi0gICAgewotICAgICAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yKiBkb3dubG9hZEVycm9y
ID0gc3RhdGljX2Nhc3Q8RXdrX0Rvd25sb2FkX0pvYl9FcnJvcio+KGV2ZW50SW5mbyk7Ci0gICAg
ICAgIGZwcmludGYoc3RkZXJyLCAiRG93bmxvYWQgZXJyb3I6ICVzXG4iLCBld2tfZXJyb3JfZGVz
Y3JpcHRpb25fZ2V0KGRvd25sb2FkRXJyb3ItPmVycm9yKSk7Ci0gICAgICAgIGVjb3JlX21haW5f
bG9vcF9xdWl0KCk7Ci0gICAgICAgIEZBSUwoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBv
bl9kb3dubG9hZF9maW5pc2hlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqIHdlYnZpZXcs
IHZvaWQqIGV2ZW50SW5mbykKLSAgICB7Ci0gICAgICAgIERvd25sb2FkVGVzdERhdGEqIHRlc3RE
YXRhID0gc3RhdGljX2Nhc3Q8RG93bmxvYWRUZXN0RGF0YSo+KHVzZXJEYXRhKTsKLSAgICAgICAg
RXdrX0Rvd25sb2FkX0pvYiogZG93bmxvYWQgPSBzdGF0aWNfY2FzdDxFd2tfRG93bmxvYWRfSm9i
Kj4oZXZlbnRJbmZvKTsKLQotICAgICAgICBBU1NFUlRfRVEoMSwgZXdrX2Rvd25sb2FkX2pvYl9l
c3RpbWF0ZWRfcHJvZ3Jlc3NfZ2V0KGRvd25sb2FkKSk7Ci0gICAgICAgIEFTU0VSVF9FUShFV0tf
RE9XTkxPQURfSk9CX1NUQVRFX0ZJTklTSEVELCBld2tfZG93bmxvYWRfam9iX3N0YXRlX2dldChk
b3dubG9hZCkpOwotICAgICAgICBBU1NFUlRfR1QoZXdrX2Rvd25sb2FkX2pvYl9lbGFwc2VkX3Rp
bWVfZ2V0KGRvd25sb2FkKSwgMCk7Ci0gICAgICAgIEFTU0VSVF9HVChld2tfZG93bmxvYWRfam9i
X3JlY2VpdmVkX2RhdGFfc2l6ZV9nZXQoZG93bmxvYWQpLCAwKTsKLQotICAgICAgICBBU1NFUlRf
VFJVRShmaWxlRXhpc3RzKHRlc3REYXRhLT5kZXN0aW5hdGlvblBhdGgpKTsKLQotICAgICAgICBl
Y29yZV9tYWluX2xvb3BfcXVpdCgpOwotICAgIH0KLX07Ci0KLVRFU1RfRihFV0syRG93bmxvYWRK
b2JUZXN0LCBld2tfZG93bmxvYWQpCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVXSzJVbml0VGVz
dFNlcnZlcj4gaHR0cFNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RVdLMlVuaXRUZXN0U2VydmVy
PigpOwotICAgIGh0dHBTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7Ci0KLSAgICBDU3RyaW5n
IGZpbGVVcmwgPSBodHRwU2VydmVyLT5nZXRVUkxGb3JQYXRoKHRlc3RGaWxlUGF0aCk7Ci0KLSAg
ICBjaGFyIGRlc3RpbmF0aW9uRGlyZWN0b3J5W10gPSAiL3RtcC9ld2syX2Rvd25sb2FkX2pvYi1Y
WFhYWFgiOwotICAgIEFTU0VSVF9UUlVFKG1rZHRlbXAoZGVzdGluYXRpb25EaXJlY3RvcnkpKTsK
LSAgICBjaGFyIGRlc3RpbmF0aW9uUGF0aFs2NF07Ci0gICAgc25wcmludGYoZGVzdGluYXRpb25Q
YXRoLCBzaXplb2YoZGVzdGluYXRpb25QYXRoKSwgIiVzL3BkZi1maWxlIiwgZGVzdGluYXRpb25E
aXJlY3RvcnkpOwotCi0gICAgRG93bmxvYWRUZXN0RGF0YSB1c2VyRGF0YSA9IHsgZmlsZVVybC5k
YXRhKCksIGRlc3RpbmF0aW9uUGF0aCB9OwotICAgIEFTU0VSVF9GQUxTRShmaWxlRXhpc3RzKGRl
c3RpbmF0aW9uUGF0aCkpOwotCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdl
YlZpZXcoKSwgImRvd25sb2FkLHJlcXVlc3QiLCBvbl9kb3dubG9hZF9yZXF1ZXN0ZWQsICZ1c2Vy
RGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgImRv
d25sb2FkLGNhbmNlbCIsIG9uX2Rvd25sb2FkX2NhbmNlbGxlZCwgJnVzZXJEYXRhKTsKLSAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAiZG93bmxvYWQsZmFpbGVk
Iiwgb25fZG93bmxvYWRfZmFpbGVkLCAmdXNlckRhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2FkZCh3ZWJWaWV3KCksICJkb3dubG9hZCxmaW5pc2hlZCIsIG9uX2Rvd25sb2Fk
X2ZpbmlzaGVkLCAmdXNlckRhdGEpOwotCi0gICAgLy8gRG93bmxvYWQgdGVzdCBwZGYKLSAgICBl
d2tfdmlld191cmxfc2V0KHdlYlZpZXcoKSwgZmlsZVVybC5kYXRhKCkpOwotICAgIGVjb3JlX21h
aW5fbG9vcF9iZWdpbigpOwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICB1bmxpbmsoZGVzdGluYXRp
b25QYXRoKTsKLSAgICBybWRpcihkZXN0aW5hdGlvbkRpcmVjdG9yeSk7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKaW5kZXgg
OTdlYzExZTI5N2QxZTgyZmQ5ZjVmMDllZjIzMGJkMTVhYThhYWU5ZC4uN2RkZWI4NmUzZWUwY2Ux
OTJiZTc1MjY3MTZmYTFkYTI3YTk1ODZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcApAQCAtNDUsMTQgKzQ1LDE2IEBAIHN0
YXRpYyBpbmxpbmUgRG93bmxvYWRNYW5hZ2VyRWZsKiB0b0Rvd25sb2FkTWFuYWdlckVmbChjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogCiBXS1N0cmluZ1JlZiBEb3dubG9hZE1hbmFnZXJFZmw6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3du
bG9hZFJlZiB3a0Rvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogLyphbGxvd092
ZXJ3cml0ZSovLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIEV3a0Rvd25sb2FkSm9i
KiBkb3dubG9hZCA9IHRvRG93bmxvYWRNYW5hZ2VyRWZsKGNsaWVudEluZm8pLT5ld2tEb3dubG9h
ZEpvYih3a0Rvd25sb2FkKTsKKyAgICBEb3dubG9hZE1hbmFnZXJFZmwqIGRvd25sb2FkTWFuYWdl
ciA9IHRvRG93bmxvYWRNYW5hZ2VyRWZsKGNsaWVudEluZm8pOworICAgIEV3a0Rvd25sb2FkSm9i
KiBkb3dubG9hZCA9IGRvd25sb2FkTWFuYWdlci0+ZXdrRG93bmxvYWRKb2Iod2tEb3dubG9hZCk7
CiAgICAgQVNTRVJUKGRvd25sb2FkKTsKIAogICAgIGRvd25sb2FkLT5zZXRTdWdnZXN0ZWRGaWxl
TmFtZSh0b0ltcGwoZmlsZW5hbWUpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIC8v
IFdlIHNlbmQgdGhlIG5ldyBkb3dubG9hZCBzaWduYWwgb24gdGhlIEV3a19WaWV3IG9ubHkgb25j
ZSB3ZSBoYXZlIHJlY2VpdmVkIHRoZSByZXNwb25zZQorICAgIC8vIFdlIGNhbGwgRG93bmxvYWRS
ZXF1ZXN0ZWQgY2FsbGJhY2sgb25seSBvbmNlIHdlIGhhdmUgcmVjZWl2ZWQgdGhlIHJlc3BvbnNl
CiAgICAgLy8gYW5kIHRoZSBzdWdnZXN0ZWQgZmlsZSBuYW1lLgotICAgIGRvd25sb2FkLT52aWV3
KCktPnNtYXJ0Q2FsbGJhY2s8RG93bmxvYWRKb2JSZXF1ZXN0ZWQ+KCkuY2FsbChkb3dubG9hZCk7
CisgICAgaWYgKGRvd25sb2FkTWFuYWdlci0+Y2xpZW50Q2FsbGJhY2tzLm1fcmVxdWVzdGVkKQor
ICAgICAgICBkb3dubG9hZE1hbmFnZXItPmNsaWVudENhbGxiYWNrcy5tX3JlcXVlc3RlZChkb3du
bG9hZCwgZG93bmxvYWRNYW5hZ2VyLT5jbGllbnRDYWxsYmFja3MubV91c2VyRGF0YSk7CiAKICAg
ICAvLyBEb3dubG9hZFNvdXAgZXhwZWN0cyB0aGUgZGVzdGluYXRpb24gdG8gYmUgYSBVUkwuCiAg
ICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gQVNDSUlMaXRlcmFsKCJmaWxlOi8vIikgKyBTdHJpbmc6
OmZyb21VVEY4KGRvd25sb2FkLT5kZXN0aW5hdGlvbigpKTsKQEAgLTgyLDYgKzg0LDEyIEBAIHZv
aWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRSZWNlaXZlRGF0YShXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYgd2tEb3dubG9hZCwKICAgICBkb3dubG9hZC0+aW5jcmVtZW50UmVjZWl2ZWREYXRh
KGxlbmd0aCk7CiB9CiAKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRTdGFydChXS0NvbnRl
eHRSZWYsIFdLRG93bmxvYWRSZWYgd2tEb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICBEb3dubG9hZE1hbmFnZXJFZmwqIGRvd25sb2FkTWFuYWdlciA9IHRvRG93bmxvYWRN
YW5hZ2VyRWZsKGNsaWVudEluZm8pOworICAgIGRvd25sb2FkTWFuYWdlci0+cmVnaXN0ZXJEb3du
bG9hZEpvYih3a0Rvd25sb2FkKTsKK30KKwogdm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OmRpZEZh
aWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQsIFdLRXJyb3JSZWYgZXJy
b3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgRG93bmxvYWRNYW5hZ2VyRWZsKiBk
b3dubG9hZE1hbmFnZXIgPSB0b0Rvd25sb2FkTWFuYWdlckVmbChjbGllbnRJbmZvKTsKQEAgLTkx
LDcgKzk5LDggQEAgdm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OmRpZEZhaWwoV0tDb250ZXh0UmVm
LCBXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQsIFdLRXJyb3IKICAgICBhdXRvIGV3a0Vycm9yID0g
c3RkOjptYWtlX3VuaXF1ZTxFd2tFcnJvcj4oZXJyb3IpOwogICAgIGRvd25sb2FkLT5zZXRTdGF0
ZShFV0tfRE9XTkxPQURfSk9CX1NUQVRFX0ZBSUxFRCk7CiAgICAgRXdrX0Rvd25sb2FkX0pvYl9F
cnJvciBkb3dubG9hZEVycm9yID0geyBkb3dubG9hZCwgZXdrRXJyb3IuZ2V0KCkgfTsKLSAgICBk
b3dubG9hZC0+dmlldygpLT5zbWFydENhbGxiYWNrPERvd25sb2FkSm9iRmFpbGVkPigpLmNhbGwo
JmRvd25sb2FkRXJyb3IpOworICAgIGlmIChkb3dubG9hZE1hbmFnZXItPmNsaWVudENhbGxiYWNr
cy5tX2ZhaWxlZCkKKyAgICAgICAgZG93bmxvYWRNYW5hZ2VyLT5jbGllbnRDYWxsYmFja3MubV9m
YWlsZWQoJmRvd25sb2FkRXJyb3IsIGRvd25sb2FkTWFuYWdlci0+Y2xpZW50Q2FsbGJhY2tzLm1f
dXNlckRhdGEpOwogICAgIGRvd25sb2FkTWFuYWdlci0+dW5yZWdpc3RlckRvd25sb2FkSm9iKHdr
RG93bmxvYWQpOwogfQogCkBAIC0xMDIsNyArMTExLDggQEAgdm9pZCBEb3dubG9hZE1hbmFnZXJF
Zmw6OmRpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgd2tEb3dubG9hZCwgY29u
c3QKICAgICBBU1NFUlQoZG93bmxvYWQpOwogCiAgICAgZG93bmxvYWQtPnNldFN0YXRlKEVXS19E
T1dOTE9BRF9KT0JfU1RBVEVfQ0FOQ0VMTEVEKTsKLSAgICBkb3dubG9hZC0+dmlldygpLT5zbWFy
dENhbGxiYWNrPERvd25sb2FkSm9iQ2FuY2VsbGVkPigpLmNhbGwoZG93bmxvYWQpOworICAgIGlm
IChkb3dubG9hZE1hbmFnZXItPmNsaWVudENhbGxiYWNrcy5tX2NhbmNlbGxlZCkKKyAgICAgICAg
ZG93bmxvYWRNYW5hZ2VyLT5jbGllbnRDYWxsYmFja3MubV9jYW5jZWxsZWQoZG93bmxvYWQsIGRv
d25sb2FkTWFuYWdlci0+Y2xpZW50Q2FsbGJhY2tzLm1fdXNlckRhdGEpOwogICAgIGRvd25sb2Fk
TWFuYWdlci0+dW5yZWdpc3RlckRvd25sb2FkSm9iKHdrRG93bmxvYWQpOwogfQogCkBAIC0xMTMs
MTMgKzEyMywyMCBAQCB2b2lkIERvd25sb2FkTWFuYWdlckVmbDo6ZGlkRmluaXNoKFdLQ29udGV4
dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rvd25sb2FkLCBjb25zdAogICAgIEFTU0VSVChkb3dubG9h
ZCk7CiAKICAgICBkb3dubG9hZC0+c2V0U3RhdGUoRVdLX0RPV05MT0FEX0pPQl9TVEFURV9GSU5J
U0hFRCk7Ci0gICAgZG93bmxvYWQtPnZpZXcoKS0+c21hcnRDYWxsYmFjazxEb3dubG9hZEpvYkZp
bmlzaGVkPigpLmNhbGwoZG93bmxvYWQpOworICAgIGlmIChkb3dubG9hZE1hbmFnZXItPmNsaWVu
dENhbGxiYWNrcy5tX2ZpbmlzaGVkKQorICAgICAgICBkb3dubG9hZE1hbmFnZXItPmNsaWVudENh
bGxiYWNrcy5tX2ZpbmlzaGVkKGRvd25sb2FkLCBkb3dubG9hZE1hbmFnZXItPmNsaWVudENhbGxi
YWNrcy5tX3VzZXJEYXRhKTsKICAgICBkb3dubG9hZE1hbmFnZXItPnVucmVnaXN0ZXJEb3dubG9h
ZEpvYih3a0Rvd25sb2FkKTsKIH0KIAogRG93bmxvYWRNYW5hZ2VyRWZsOjpEb3dubG9hZE1hbmFn
ZXJFZmwoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKIHsK
KyAgICBjbGllbnRDYWxsYmFja3MubV9yZXF1ZXN0ZWQgPSBudWxscHRyOworICAgIGNsaWVudENh
bGxiYWNrcy5tX2ZhaWxlZCA9IG51bGxwdHI7CisgICAgY2xpZW50Q2FsbGJhY2tzLm1fY2FuY2Vs
bGVkID0gbnVsbHB0cjsKKyAgICBjbGllbnRDYWxsYmFja3MubV9maW5pc2hlZCA9IG51bGxwdHI7
CisgICAgY2xpZW50Q2FsbGJhY2tzLm1fdXNlckRhdGEgPSBudWxscHRyOworCiAgICAgV0tDb250
ZXh0RG93bmxvYWRDbGllbnRWMCB3a0Rvd25sb2FkQ2xpZW50OwogICAgIG1lbXNldCgmd2tEb3du
bG9hZENsaWVudCwgMCwgc2l6ZW9mKFdLQ29udGV4dERvd25sb2FkQ2xpZW50KSk7CiAKQEAgLTEz
MCw2ICsxNDcsNyBAQCBEb3dubG9hZE1hbmFnZXJFZmw6OkRvd25sb2FkTWFuYWdlckVmbChXS0Nv
bnRleHRSZWYgY29udGV4dCkKICAgICB3a0Rvd25sb2FkQ2xpZW50LmRpZENyZWF0ZURlc3RpbmF0
aW9uID0gZGlkQ3JlYXRlRGVzdGluYXRpb247CiAgICAgd2tEb3dubG9hZENsaWVudC5kaWRSZWNl
aXZlUmVzcG9uc2UgPSBkaWRSZWNlaXZlUmVzcG9uc2U7CiAgICAgd2tEb3dubG9hZENsaWVudC5k
aWRSZWNlaXZlRGF0YSA9IGRpZFJlY2VpdmVEYXRhOworICAgIHdrRG93bmxvYWRDbGllbnQuZGlk
U3RhcnQgPSBkaWRTdGFydDsKICAgICB3a0Rvd25sb2FkQ2xpZW50LmRpZEZhaWwgPSBkaWRGYWls
OwogICAgIHdrRG93bmxvYWRDbGllbnQuZGlkRmluaXNoID0gZGlkRmluaXNoOwogCkBAIC0xNDEs
MTMgKzE1OSwxMyBAQCBEb3dubG9hZE1hbmFnZXJFZmw6On5Eb3dubG9hZE1hbmFnZXJFZmwoKQog
ICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgMCk7CiB9CiAK
LXZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpyZWdpc3RlckRvd25sb2FkSm9iKFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIEV3a1ZpZXcqIHZpZXdJbXBsKQordm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6
OnJlZ2lzdGVyRG93bmxvYWRKb2IoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKIHsKICAgICB1aW50
NjRfdCBkb3dubG9hZElkID0gV0tEb3dubG9hZEdldElEKGRvd25sb2FkKTsKICAgICBpZiAobV9k
b3dubG9hZEpvYnMuY29udGFpbnMoZG93bmxvYWRJZCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlZlB0cjxFd2tEb3dubG9hZEpvYj4gZXdrRG93bmxvYWQgPSBFd2tEb3dubG9hZEpvYjo6Y3Jl
YXRlKGRvd25sb2FkLCB2aWV3SW1wbCk7CisgICAgUmVmUHRyPEV3a0Rvd25sb2FkSm9iPiBld2tE
b3dubG9hZCA9IEV3a0Rvd25sb2FkSm9iOjpjcmVhdGUoZG93bmxvYWQpOwogICAgIG1fZG93bmxv
YWRKb2JzLmFkZChkb3dubG9hZElkLCBld2tEb3dubG9hZCk7CiB9CiAKQEAgLTE2MSw0ICsxNzks
MTMgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OnVucmVnaXN0ZXJEb3dubG9hZEpvYihXS0Rv
d25sb2FkUmVmIHdrRG93bmxvYWQpCiAgICAgbV9kb3dubG9hZEpvYnMucmVtb3ZlKFdLRG93bmxv
YWRHZXRJRCh3a0Rvd25sb2FkKSk7CiB9CiAKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpzZXRD
YWxsYmFja3MoRXdrX0Rvd25sb2FkX1JlcXVlc3RlZF9DYiByZXF1ZXN0ZWQsIEV3a19Eb3dubG9h
ZF9GYWlsZWRfQ2IgZmFpbGVkLCBFd2tfRG93bmxvYWRfQ2FuY2VsbGVkX0NiIGNhbmNlbGxlZCwg
IEV3a19Eb3dubG9hZF9GaW5pc2hlZF9DYiBmaW5pc2hlZCwgdm9pZCogdXNlckRhdGEpCit7Cisg
ICAgY2xpZW50Q2FsbGJhY2tzLm1fcmVxdWVzdGVkID0gcmVxdWVzdGVkOworICAgIGNsaWVudENh
bGxiYWNrcy5tX2ZhaWxlZCA9IGZhaWxlZDsKKyAgICBjbGllbnRDYWxsYmFja3MubV9jYW5jZWxs
ZWQgPSBjYW5jZWxsZWQ7CisgICAgY2xpZW50Q2FsbGJhY2tzLm1fZmluaXNoZWQgPSBmaW5pc2hl
ZDsKKyAgICBjbGllbnRDYWxsYmFja3MubV91c2VyRGF0YSA9IHVzZXJEYXRhOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rv
d25sb2FkTWFuYWdlckVmbC5oCmluZGV4IDE0MjhkM2RjM2Q4ZmIyNzE5N2JhODgyYzhjMGM5OTU5
MTk0ZjI1MjUuLmI1NjJiNDQ1MmZmZmExMDA5MTY3NjcwNGQ0N2UwMDFiMjIyYzQ5MjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuaApA
QCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBEb3dubG9hZE1hbmFnZXJFZmxfaAogI2RlZmluZSBE
b3dubG9hZE1hbmFnZXJFZmxfaAogCisjaW5jbHVkZSAiZXdrX2NvbnRleHQuaCIKICNpbmNsdWRl
ICJld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaCIKICNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzMsMTIgKzM0LDIxIEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgQ2xpZW50RG93bmxvYWRDYWxsYmFja3MgeworICAg
IEV3a19Eb3dubG9hZF9SZXF1ZXN0ZWRfQ2IgbV9yZXF1ZXN0ZWQ7CisgICAgRXdrX0Rvd25sb2Fk
X0ZhaWxlZF9DYiBtX2ZhaWxlZDsKKyAgICBFd2tfRG93bmxvYWRfQ2FuY2VsbGVkX0NiIG1fY2Fu
Y2VsbGVkOworICAgIEV3a19Eb3dubG9hZF9GaW5pc2hlZF9DYiBtX2ZpbmlzaGVkOworICAgIHZv
aWQqIG1fdXNlckRhdGE7Cit9OworCiBjbGFzcyBEb3dubG9hZE1hbmFnZXJFZmwgewogcHVibGlj
OgogICAgIGV4cGxpY2l0IERvd25sb2FkTWFuYWdlckVmbChXS0NvbnRleHRSZWYpOwogICAgIH5E
b3dubG9hZE1hbmFnZXJFZmwoKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJEb3dubG9hZEpvYihXS0Rv
d25sb2FkUmVmLCBFd2tWaWV3Kik7CisgICAgdm9pZCByZWdpc3RlckRvd25sb2FkSm9iKFdLRG93
bmxvYWRSZWYpOworICAgIHZvaWQgc2V0Q2FsbGJhY2tzKEV3a19Eb3dubG9hZF9SZXF1ZXN0ZWRf
Q2IsIEV3a19Eb3dubG9hZF9GYWlsZWRfQ2IsIEV3a19Eb3dubG9hZF9DYW5jZWxsZWRfQ2IsICBF
d2tfRG93bmxvYWRfRmluaXNoZWRfQ2IsIHZvaWQqIHVzZXJEYXRhKTsKIAogcHJpdmF0ZToKICAg
ICBFd2tEb3dubG9hZEpvYiogZXdrRG93bmxvYWRKb2IoV0tEb3dubG9hZFJlZik7CkBAIC00OSwx
MSArNTksMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlv
bihXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIHBhdGgsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdLQ29udGV4
dFJlZiwgV0tEb3dubG9hZFJlZiwgdWludDY0X3QgbGVuZ3RoLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJl
ZiwgV0tFcnJvclJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQg
ZGlkU3RhcnQoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2Fk
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2go
V0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAog
ICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gbV9jb250ZXh0OwogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxFd2tEb3dubG9hZEpvYj4gPiBtX2Rvd25sb2FkSm9iczsKKworICAgIENs
aWVudERvd25sb2FkQ2FsbGJhY2tzIGNsaWVudENhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJW
aWV3RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHAK
aW5kZXggNWViYzBmMTY4MTM3NWFmYTM4M2FkMDNmMzU5MzI3YTFmODUxZGQ0OS4uNjgwZmQ1YWM5
YWUzZDQ5YjM2OGE2OGVlYmFjMDhmYTMyNWNiMTdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBXZWJWaWV3
RWZsOjp1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpCiB2b2lkIFdlYlZpZXdFZmw6OmhhbmRsZURvd25s
b2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKIHsKICAgICBFd2tDb250ZXh0KiBj
b250ZXh0ID0gbV9ld2tWaWV3LT5ld2tDb250ZXh0KCk7Ci0gICAgY29udGV4dC0+ZG93bmxvYWRN
YW5hZ2VyKCktPnJlZ2lzdGVyRG93bmxvYWRKb2IodG9BUEkoZG93bmxvYWQpLCBtX2V3a1ZpZXcp
OworICAgIGNvbnRleHQtPmRvd25sb2FkTWFuYWdlcigpLT5yZWdpc3RlckRvd25sb2FkSm9iKHRv
QVBJKGRvd25sb2FkKSk7CiB9CiAKIHZvaWQgV2ViVmlld0VmbDo6c2V0VGhlbWVQYXRoKGNvbnN0
IFN0cmluZyYgdGhlbWUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggM2YwZTA3NDA1ODgyNjgyMzJjMmU4MTUxYzAxNjcwNTYzNWE1MzFiOS4uMzc3
YWEzNmFkNTdhM2I4NjYxNDJiOWE0ZDBmMWQ2Y2EwNzU2YTNjMSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTAy
LTA5ICBMdWthc3ogQmlhbGVrICA8bC5iaWFsZWtAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VG
TF1bV0syXSBDcmFzaCB3aGVuICJEb3dubG9hZCBMaW5rZWQgRmlsZSIgZnJvbSBNaW5pQnJvd3Nl
ciBjb250ZXh0IG1lbnUgaXMgY2xpY2tlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5jOgorICAgICAgICAob25f
ZG93bmxvYWRfcmVxdWVzdCk6CisgICAgICAgIChvbl9kb3dubG9hZF9maW5pc2hlZCk6CisgICAg
ICAgIChvbl9kb3dubG9hZF9mYWlsZWQpOgorICAgICAgICAod2luZG93X2NyZWF0ZSk6CisgICAg
ICAgIEFkYXB0IGRvd25sb2FkIGNhYWxiY2tzIHRvIG5ldyBjYWxsYmFjayBtZWNoYW5pc20KKwog
MjAxNS0wMi0wOCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFYOiBWb2ljZU92ZXIgYXBwZWFycyB1bnJlc3BvbnNpdmUgd2hlbiBKYXZhU2NyaXB0IGFs
ZXJ0cyBhcmUgdHJpZ2dlcmVkIHZpYSBmb2N1cyBvciBibHVyIGV2ZW50cwpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWlu
LmMKaW5kZXggZDE1Y2UyYjE3ZGE1NTcxMmUxN2YyY2FhOTQ0NTgwNjMwMWVlYTBjOC4uODRhZjI0
NDU0OTkyZmE2NjAxOGNhY2EzMGVkMGU0NGIxZGZiYWEzOCAxMDA2NDQKLS0tIGEvVG9vbHMvTWlu
aUJyb3dzZXIvZWZsL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCkBA
IC03MzIsOSArNzMyLDggQEAgb25fZXJyb3Iodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAq
ZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9kb3dubG9h
ZF9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lkICpl
dmVudF9pbmZvKQorb25fZG93bmxvYWRfcmVxdWVzdChFd2tfRG93bmxvYWRfSm9iICpkb3dubG9h
ZCwgdm9pZCAqdXNlcl9kYXRhKQogewotICAgIEV3a19Eb3dubG9hZF9Kb2IgKmRvd25sb2FkID0g
KEV3a19Eb3dubG9hZF9Kb2IgKilldmVudF9pbmZvOwogICAgIEJyb3dzZXJfV2luZG93ICp3aW5k
b3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAgICBFaW5hX1N0cmJ1ZiAqZGVz
dGluYXRpb25fcGF0aCA9IGVpbmFfc3RyYnVmX25ldygpOwpAQCAtODQyLDE2ICs4NDEsMTcgQEAg
b25fZmlsZV9jaG9vc2VyX3JlcXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZXdr
X3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8KIH0KIAogc3RhdGljIHZvaWQKLW9uX2Rvd25sb2FkX2Zp
bmlzaGVkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lkICpldmVu
dF9pbmZvKQorb25fZG93bmxvYWRfZmluaXNoZWQoRXdrX0Rvd25sb2FkX0pvYiAqZG93bmxvYWQs
IHZvaWQgKnVzZXJfZGF0YSkKIHsKLSAgICBFd2tfRG93bmxvYWRfSm9iICpkb3dubG9hZCA9IChF
d2tfRG93bmxvYWRfSm9iICopZXZlbnRfaW5mbzsKICAgICBJTkZPKCJEb3dubG9hZCBmaW5pc2hl
ZDogJXMiLCAgZXdrX2Rvd25sb2FkX2pvYl9kZXN0aW5hdGlvbl9nZXQoZG93bmxvYWQpKTsKIH0K
IAogc3RhdGljIHZvaWQKLW9uX2Rvd25sb2FkX2ZhaWxlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNf
T2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKK29uX2Rvd25sb2FkX2ZhaWxlZChF
d2tfRG93bmxvYWRfSm9iX0Vycm9yICpkb3dubG9hZEVycm9yLCB2b2lkICp1c2VyX2RhdGEpCiB7
Ci0gICAgSU5GTygiRG93bmxvYWQgZmFpbGVkISIpOworICAgIGNvbnN0IEV3a19FcnJvciAqZXJy
b3IgPSBkb3dubG9hZEVycm9yLT5lcnJvcjsKKworICAgIElORk8oIkRvd25sb2FkIGZhaWxlZCEg
RXJyb3IgY29kZTogJWQsIEVycm9yIGRlc2NyaXB0aW9uOiAlcywgRXJyb3IgVVJMOiAlcyIsIGV3
a19lcnJvcl9jb2RlX2dldChlcnJvciksIGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQoZXJyb3Ip
LCBld2tfZXJyb3JfdXJsX2dldChlcnJvcikpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjI1OCwx
MSArMjI1OCw3IEBAIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmFzX09i
amVjdCAqb3BlbmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgZXdrX3NldHRpbmdzX3By
ZWZlcnJlZF9taW5pbXVtX2NvbnRlbnRzX3dpZHRoX3NldChzZXR0aW5ncywgMCk7CiAgICAgZXdr
X3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNraW5nX2VuYWJsZWRfc2V0KHNwZWxs
X2NoZWNraW5nX2VuYWJsZWQpOwogICAgIGV3a19zZXR0aW5nc193ZWJfc2VjdXJpdHlfZW5hYmxl
ZF9zZXQoc2V0dGluZ3MsIHdlYl9zZWN1cml0eV9lbmFibGVkKTsKLQogICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiYXV0aGVudGljYXRpb24scmVx
dWVzdCIsIG9uX2F1dGhlbnRpY2F0aW9uX3JlcXVlc3QsIHdpbmRvdyk7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJkb3dubG9hZCxmYWlsZWQi
LCBvbl9kb3dubG9hZF9mYWlsZWQsIHdpbmRvdyk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJkb3dubG9hZCxmaW5pc2hlZCIsIG9uX2Rvd25s
b2FkX2ZpbmlzaGVkLCB3aW5kb3cpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Fk
ZCh3aW5kb3ctPmV3a192aWV3LCAiZG93bmxvYWQscmVxdWVzdCIsIG9uX2Rvd25sb2FkX3JlcXVl
c3QsIHdpbmRvdyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+
ZXdrX3ZpZXcsICJmaWxlLGNob29zZXIscmVxdWVzdCIsIG9uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0
LCB3aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3
a192aWV3LCAibG9hZCxlcnJvciIsIG9uX2Vycm9yLCB3aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAibG9hZCxwcm92aXNpb25hbCxm
YWlsZWQiLCBvbl9lcnJvciwgd2luZG93KTsKQEAgLTIzMDIsNiArMjI5OCw5IEBAIHN0YXRpYyBC
cm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAqb3BlbmVyLCBpbnQgd2lk
dGgsIGludCBoZWlnaHQpCiAgICAgZWxtX2J1dHRvbl9hdXRvcmVwZWF0X2luaXRpYWxfdGltZW91
dF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgTE9OR1BSRVNTX0lOVEVSVkFMX1NFQ09ORFMpOwog
ICAgIGVsbV9idXR0b25fYXV0b3JlcGVhdF9pbml0aWFsX3RpbWVvdXRfc2V0KHdpbmRvdy0+Zm9y
d2FyZF9idXR0b24sIExPTkdQUkVTU19JTlRFUlZBTF9TRUNPTkRTKTsKIAorICAgIC8vIFNldCBj
YWxsYmFja3MgZm9yIGRvd25sb2FkIGV2ZW50cy4KKyAgICBld2tfY29udGV4dF9kb3dubG9hZF9j
YWxsYmFja3Nfc2V0KGNvbnRleHQsIG9uX2Rvd25sb2FkX3JlcXVlc3QsIG9uX2Rvd25sb2FkX2Zh
aWxlZCwgMCwgb25fZG93bmxvYWRfZmluaXNoZWQsIHdpbmRvdyk7CisKICAgICByZXR1cm4gd2lu
ZG93OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247847</attachid>
            <date>2015-03-03 23:54:15 -0800</date>
            <delta_ts>2015-03-05 04:14:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131162-20150304085355.patch</filename>
            <type>text/plain</type>
            <size>35068</size>
            <attacher name="Lukasz Bialek">l.bialek</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWRiNmI5YTgwM2EyZTU2
OWYyMjIyNGU5OGVlNzZlZTBhMDNhMGMxMS4uZDUxZjhjYTYxYTVkYjllZThkOWJiZmJiNjg4ZTJl
OTFlZGE1MmI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE1LTAyLTA5ICBMdWth
c3ogQmlhbGVrICA8bC5iaWFsZWtAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBD
cmFzaCB3aGVuICJEb3dubG9hZCBMaW5rZWQgRmlsZSIgZnJvbSBNaW5pQnJvd3NlciBjb250ZXh0
IG1lbnUgaXMgY2xpY2tlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMxMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgIkRvd25sb2FkIExpbmtlZCBGaWxlIiBjcmFzaGVzIGJlY2F1c2Ugb2YgbnVsbC1w
b2ludGVyIGV4Y2VwdGlvbiBvZiBEb3dubG9hZCBKb2IuCisgICAgICAgIER1ZSB0byBhcmNoaXRl
Y3R1cmFsIGRpZmZpY3VsdGllcywgZWFzeSBmaXggaXMgbm90IHBvc3NpYmxlIChFd2tWaWV3IGlz
IG5lZWRlZCBpbgorICAgICAgICBEb3dubG9hZE1hbmFnZXIgdG8gY3JlYXRlIERvd25sb2FkSm9i
cyBhbmQgaXQgaXMgb25seSB1c2VkIHRvIG5vdGlmeSB0aGUgY2xpZW50IAorICAgICAgICBhYm91
dCBkb3dubG9hZCAoZmluaXNoZWQsIGVycm9yLCBjYW5jZWwpIHZpYSBzbWFydCBjYWxsYmFjayB1
c2luZyBFd2tWaWV3IChFdmFzX09iamVjdCkuCisKKyAgICAgICAgUHJvcG9zZSBhIG5ldyBjYWxs
YmFja3Mgd2hpY2ggYXJlIHZpZXcgaW5kZXBlbmRlbnQgYW5kIGRldGFjaCBFRkwncyBEb3dubG9h
ZE1hYWdlcgorICAgICAgICBmcm9tIEV3a1ZpZXcuIEl0IG1ha2VzIERvd25sb2FkTWFuYWdlckVG
TCBjb25zaXN0ZW50IHdpdGggV0tDb250ZXh0RG93bmxvYWQuCisgICAgICAgIEZpeCB0aGUgY3Jh
c2ggYW5kIHJlc3RvcmUgZG93bmxvYWQgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaDoKKyAgICAgICAgUmVtb3ZlIG9sZCBjYWxs
YmFjayBtZWNoYW5pc20KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5j
cHA6CisgICAgICAgIChld2tfY29udGV4dF9kb3dubG9hZF9jYWxsYmFja3Nfc2V0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oOgorICAgICAgICBEZWNsYXJlIG5l
dyBjYWxsYmFjayBmdW5jdGlvbnMgYW5kIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcDoKKyAgICAgICAgKEV3a0Rv
d25sb2FkSm9iOjpFd2tEb3dubG9hZEpvYik6CisgICAgICAgIChFd2tEb3dubG9hZEpvYjo6dmll
dyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pv
Yi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0
ZS5oOgorICAgICAgICAoRXdrRG93bmxvYWRKb2I6OmNyZWF0ZSk6CisgICAgICAgIFJlbW92ZSBF
d2tWaWV3IGRlcGVuZGVuY3kKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9q
b2IuY3BwOiBSZW1vdmVkLgorICAgICAgICBPbGQgdGVzdHMgZG8gbm90IG1hdGNoIG5ldyBmZWF0
dXJlLiBTZXBhcmF0ZSBidWcgd2lsbCBiZSBpbnRyb2R1Y2VkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YW5hZ2VyRWZsOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbDo6ZGlkU3RhcnQpOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZE1hbmFnZXJFZmw6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZE1hbmFnZXJFZmw6OmRpZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFu
YWdlckVmbDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyRWZs
OjpEb3dubG9hZE1hbmFnZXJFZmwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJF
Zmw6OnJlZ2lzdGVyRG93bmxvYWRKb2IpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFn
ZXJFZmw6OnNldENhbGxiYWNrcyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1h
bmFnZXJFZmwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3RWZsOjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgorICAgICAg
ICBBZGQgc3VwcG9ydCBvZiBuZXcgY2FsbGJhY2sgbWVjaGFuaXNtCisKIDIwMTUtMDItMDggIFRp
bW90aHkgSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE51bGwg
ZGVyZWYgaW4gX2NsZWFySW1tZWRpYXRlQWN0aW9uU3RhdGUgd2hlbiBjbG9zaW5nIGEgdmlldyB3
aXRoIGEgRGF0YURldGVjdG9ycyBwb3BvdmVyIG9wZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaAppbmRleCAzN2VhNjJmOWZlNGEw
ZmFkZjY4NTJjMDkwODgyZmQ4ZWI5NzU2OTg3Li45OGViMDMxMDQ4ZjlmMjA3NWM0NjE4NDYxYjM1
MjllYWNlNTZlOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3Q2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0NhbGxiYWNrcy5oCkBAIC00OCwxMCArNDgsNiBAQCBlbnVtIENhbGxiYWNrVHlw
ZSB7CiAgICAgQmFja0ZvcndhcmRMaXN0Q2hhbmdlLAogICAgIENhbmNlbFZpYnJhdGlvbiwKICAg
ICBDb250ZW50c1NpemVDaGFuZ2VkLAotICAgIERvd25sb2FkSm9iQ2FuY2VsbGVkLAotICAgIERv
d25sb2FkSm9iRmFpbGVkLAotICAgIERvd25sb2FkSm9iRmluaXNoZWQsCi0gICAgRG93bmxvYWRK
b2JSZXF1ZXN0ZWQsCiAgICAgRmlsZUNob29zZXJSZXF1ZXN0LAogICAgIEZvY3VzTm90Rm91bmQs
CiAgICAgTmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LApAQCAtMTc2LDEwICsxNzIsNiBAQCBERUNM
QVJFX0VXS19WSUVXX0NBTExCQUNLKEF1dGhlbnRpY2F0aW9uUmVxdWVzdCwgImF1dGhlbnRpY2F0
aW9uLHJlcXVlc3QiLCBFd2tfQQogREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhCYWNrRm9yd2Fy
ZExpc3RDaGFuZ2UsICJiYWNrLGZvcndhcmQsbGlzdCxjaGFuZ2VkIiwgdm9pZCk7CiBERUNMQVJF
X0VXS19WSUVXX0NBTExCQUNLKENhbmNlbFZpYnJhdGlvbiwgImNhbmNlbCx2aWJyYXRpb24iLCB2
b2lkKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soQ29udGVudHNTaXplQ2hhbmdlZCwgImNv
bnRlbnRzLHNpemUsY2hhbmdlZCIsIEV3a19DU1NfU2l6ZSopOwotREVDTEFSRV9FV0tfVklFV19D
QUxMQkFDSyhEb3dubG9hZEpvYkNhbmNlbGxlZCwgImRvd25sb2FkLGNhbmNlbGxlZCIsIEV3a19E
b3dubG9hZF9Kb2IqKTsKLURFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRG93bmxvYWRKb2JGYWls
ZWQsICJkb3dubG9hZCxmYWlsZWQiLCBFd2tfRG93bmxvYWRfSm9iX0Vycm9yKik7Ci1ERUNMQVJF
X0VXS19WSUVXX0NBTExCQUNLKERvd25sb2FkSm9iRmluaXNoZWQsICJkb3dubG9hZCxmaW5pc2hl
ZCIsIEV3a19Eb3dubG9hZF9Kb2IqKTsKLURFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRG93bmxv
YWRKb2JSZXF1ZXN0ZWQsICJkb3dubG9hZCxyZXF1ZXN0IiwgRXdrX0Rvd25sb2FkX0pvYiopOwog
REVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhGaWxlQ2hvb3NlclJlcXVlc3QsICJmaWxlLGNob29z
ZXIscmVxdWVzdCIsIEV3a19GaWxlX0Nob29zZXJfUmVxdWVzdCopOwogREVDTEFSRV9FV0tfVklF
V19DQUxMQkFDSyhGb2N1c05vdEZvdW5kLCAiZm9jdXMsbm90Zm91bmQiLCBFd2tfRm9jdXNfRGly
ZWN0aW9uKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soTmV3Rm9ybVN1Ym1pc3Npb25SZXF1
ZXN0LCAiZm9ybSxzdWJtaXNzaW9uLHJlcXVlc3QiLCBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVl
c3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
LmNwcAppbmRleCA5NTJiMzNlYmM0Nzk1ODE4OWRhM2NiZDVkNTkzZmEyMjNkMmIxYTNmLi40YmM4
Yjk2MDJkY2UyMjA2NWQ4MWJkNjIxNDJiNDA4ZGY1NDA0M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC00OTcsNiArNDk3LDEz
IEBAIHZvaWQgZXdrX2NvbnRleHRfaGlzdG9yeV9jYWxsYmFja3Nfc2V0KEV3a19Db250ZXh0KiBl
d2tDb250ZXh0LCBFd2tfSGlzdG9yeV9OYXZpCiAgICAgaW1wbC0+aGlzdG9yeUNsaWVudCgpLT5z
ZXRDYWxsYmFja3MobmF2aWdhdGUsIGNsaWVudFJlZGlyZWN0LCBzZXJ2ZXJSZWRpcmVjdCwgdGl0
bGVVcGRhdGUsIHBvcHVsYXRlVmlzaXRlZExpbmtzLCBkYXRhKTsKIH0KIAordm9pZCBld2tfY29u
dGV4dF9kb3dubG9hZF9jYWxsYmFja3Nfc2V0KEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBFd2tf
RG93bmxvYWRfUmVxdWVzdGVkX0NiIHJlcXVlc3RlZCwgRXdrX0Rvd25sb2FkX0ZhaWxlZF9DYiBm
YWlsZWQsIEV3a19Eb3dubG9hZF9DYW5jZWxsZWRfQ2IgY2FuY2VsbGVkLCAgRXdrX0Rvd25sb2Fk
X0ZpbmlzaGVkX0NiIGZpbmlzaGVkLCB2b2lkKiBkYXRhKQoreworICAgIEVXS19PQkpfR0VUX0lN
UExfT1JfUkVUVVJOKEV3a0NvbnRleHQsIGV3a0NvbnRleHQsIGltcGwpOworCisgICAgaW1wbC0+
ZG93bmxvYWRNYW5hZ2VyKCktPnNldENsaWVudENhbGxiYWNrcyhyZXF1ZXN0ZWQsIGZhaWxlZCwg
Y2FuY2VsbGVkLCBmaW5pc2hlZCwgZGF0YSk7Cit9CisKIHZvaWQgZXdrX2NvbnRleHRfdmlzaXRl
ZF9saW5rX2FkZChFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgY29uc3QgY2hhciogdmlzaXRlZFVS
TCkKIHsKICAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihFd2tDb250ZXh0LCBld2tDb250
ZXh0LCBpbXBsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5oCmluZGV4IDhjMzhiN2Q3NmI2NjQ3ZmEyNmFjY2MyOTIzMjIyNjMyNWQ1MzBiNGMuLmNk
YWYxNzJiZTBhZDFlMTcyNDA5NGEwNmZkNjBmNThlZDc0Y2FhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaApAQCAtNDAsNiArNDAsOCBAQAog
I2luY2x1ZGUgImV3a19hcHBsaWNhdGlvbl9jYWNoZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdr
X2Nvb2tpZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2RhdGFiYXNlX21hbmFnZXIuaCIKKyNp
bmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCiAjaW5j
bHVkZSAiZXdrX2Zhdmljb25fZGF0YWJhc2UuaCIKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9k
YXRhLmgiCiAjaW5jbHVkZSAiZXdrX3N0b3JhZ2VfbWFuYWdlci5oIgpAQCAtNTAsNiArNTIsMTcg
QEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBF
d2tfRG93bmxvYWRfSm9iX0Vycm9yLgordHlwZWRlZiBzdHJ1Y3QgRXdrX0Rvd25sb2FkX0pvYl9F
cnJvciBFd2tfRG93bmxvYWRfSm9iX0Vycm9yOworCisvKioKKyAqIEBicmllZiBTdHJ1Y3R1cmUg
Y29udGFpbmluZyBkZXRhaWxzIGFib3V0IGEgZG93bmxvYWQgZmFpbHVyZS4KKyAqLworc3RydWN0
IEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IgeworICAgIEV3a19Eb3dubG9hZF9Kb2IgKmRvd25sb2Fk
X2pvYjsgLyoqPCBkb3dubG9hZCB0aGF0IGZhaWxlZCAqLworICAgIEV3a19FcnJvciAqZXJyb3I7
IC8qKjwgZG93bmxvYWQgZXJyb3IgKi8KK307CisKIC8qKgogICogRGVjbGFyZSBFd2tfQ29udGV4
dCBhcyBFd2tfT2JqZWN0LgogICoKQEAgLTEzMSw2ICsxNDQsMzAgQEAgdHlwZWRlZiB2b2lkICgq
RXdrX0hpc3RvcnlfU2VydmVyX1JlZGlyZWN0aW9uX0NiKShjb25zdCBFdmFzX09iamVjdCAqdmll
dywgY29uc3QKIHR5cGVkZWYgdm9pZCAoKkV3a19IaXN0b3J5X1RpdGxlX1VwZGF0ZV9DYikoY29u
c3QgRXZhc19PYmplY3QgKnZpZXcsIGNvbnN0IGNoYXIgKnRpdGxlLCBjb25zdCBjaGFyICp1cmws
IHZvaWQgKnVzZXJfZGF0YSk7CiAKIC8qKgorICogQHR5cGVkZWYgRXdrX0Rvd25sb2FkX1JlcXVl
c3RlZF9DYiBFd2tfRG93bmxvYWRfUmVxdWVzdGVkX0NiCisgKiBAYnJpZWYgVHlwZSBkZWZpbml0
aW9uIGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIG5ldyBkb3du
bG9hZCBqb2IgaXMgcmVxdWVzdGVkLgorICovCit0eXBlZGVmIHZvaWQgKCpFd2tfRG93bmxvYWRf
UmVxdWVzdGVkX0NiKShFd2tfRG93bmxvYWRfSm9iICpkb3dubG9hZCwgdm9pZCAqdXNlcl9kYXRh
KTsKKworLyoqCisgKiBAdHlwZWRlZiBFd2tfRG93bmxvYWRfRmFpbGVkX0NiIEV3a19Eb3dubG9h
ZF9GYWlsZWRfQ2IKKyAqIEBicmllZiBUeXBlIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gdGhh
dCB3aWxsIGJlIGNhbGxlZCBiYWNrIHdoZW4gYSBkb3dubG9hZCBqb2IgaGFzIGZhaWxlZC4KKyAq
LwordHlwZWRlZiB2b2lkICgqRXdrX0Rvd25sb2FkX0ZhaWxlZF9DYikoRXdrX0Rvd25sb2FkX0pv
Yl9FcnJvciAqZXJyb3IsIHZvaWQgKnVzZXJfZGF0YSk7CisKKy8qKgorICogQHR5cGVkZWYgRXdr
X0Rvd25sb2FkX0NhbmNlbGxlZF9DYiBFd2tfRG93bmxvYWRfQ2FuY2VsbGVkX0NiCisgKiBAYnJp
ZWYgVHlwZSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFj
ayB3aGVuIGEgZG93bmxvYWQgam9iIGlzIGNhbmNlbGxlZC4KKyAqLwordHlwZWRlZiB2b2lkICgq
RXdrX0Rvd25sb2FkX0NhbmNlbGxlZF9DYikoRXdrX0Rvd25sb2FkX0pvYiAqZG93bmxvYWQsIHZv
aWQgKnVzZXJfZGF0YSk7CisKKy8qKgorICogQHR5cGVkZWYgRXdrX0Rvd25sb2FkX0ZpbmlzaGVk
X0NiIEV3a19Eb3dubG9hZF9GaW5pc2hlZF9DYgorICogQGJyaWVmIFR5cGUgZGVmaW5pdGlvbiBm
b3IgYSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGJhY2sgd2hlbiBhIGRvd25sb2FkIGpv
YiBpcyBmaW5pc2hlZC4KKyAqLwordHlwZWRlZiB2b2lkICgqRXdrX0Rvd25sb2FkX0ZpbmlzaGVk
X0NiKShFd2tfRG93bmxvYWRfSm9iICpkb3dubG9hZCwgdm9pZCAqdXNlcl9kYXRhKTsKKworLyoq
CiAgKiBAdHlwZWRlZiBFd2tfQ29udGV4dF9IaXN0b3J5X0NsaWVudF9WaXNpdGVkX0xpbmtzX1Bv
cHVsYXRlX0NiIEV3a19Db250ZXh0X0hpc3RvcnlfQ2xpZW50X1Zpc2l0ZWRfTGlua3NfUG9wdWxh
dGVfQ2IKICAqIEBicmllZiBUeXBlIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gdGhhdCB3aWxs
IGJlIGNhbGxlZCBiYWNrIHdoZW4gY2xpZW50IGlzIGFza2VkIHRvIHByb3ZpZGUgdmlzaXRlZCBs
aW5rcyBmcm9tIGEgY2xpZW50LW1hbmFnZWQgc3RvcmFnZS4KICAqCkBAIC0zMTcsNiArMzU0LDI2
IEBAIEVBUEkgdm9pZCBld2tfY29udGV4dF9oaXN0b3J5X2NhbGxiYWNrc19zZXQoRXdrX0NvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZvaWQgKmRhdGEpOwogCiAvKioKKyAqIFNldHMgZG93bmxvYWQgY2FsbGJhY2tzIGZvciB0aGUg
Z2l2ZW4gQGEgY29udGV4dC4KKyAqCisgKiBUbyBzdG9wIGxpc3RlbmluZyBmb3IgZG93bmxvYWQg
ZXZlbnRzLCB5b3UgbWF5IGNhbGwgdGhpcyBmdW5jdGlvbiB3aXRoIEBjCisgKiBOVUxMIGZvciB0
aGUgY2FsbGJhY2tzLgorICoKKyAqIEBwYXJhbSBjb250ZXh0IGNvbnRleHQgb2JqZWN0IHRvIHNl
dCBkb3dubG9hZCBjYWxsYmFja3MKKyAqIEBwYXJhbSBkb3dubG9hZF9yZXF1ZXN0ZWRfZnVuYyB0
aGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIG5ldyBkb3dubG9hZCBpcyByZXF1ZXN0ZWQgKG1heSBi
ZSBAYyBOVUxMKS4KKyAqIEBwYXJhbSBkb3dubG9hZF9mYWlsZWRfZnVuYyB0aGUgZnVuY3Rpb24g
dG8gY2FsbCB3aGVuIGEgZG93bmxvYWQgam9iIGhhcyBmYWlsZWQgKG1heSBiZSBAYyBOVUxMKS4K
KyAqIEBwYXJhbSBkb3dubG9hZF9jYW5jZWxsZWRfZnVuYyB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3
aGVuIGEgZG93bmxvYWQgam9iIGlzIGNhbmNlbGxlZCAobWF5IGJlIEBjIE5VTEwpLgorICogQHBh
cmFtIGRvd25sb2FkX2ZpbmlzaGVkX2Z1bmMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBhIGRv
d25sb2FkIGpvYiBpcyBmaW5pc2hlZCAobWF5IGJlIEBjIE5VTEwpLgorICogQHBhcmFtIGRhdGEg
VXNlciBkYXRhIChtYXkgYmUgQGMgTlVMTCkuCisgKi8KK0VBUEkgdm9pZCBld2tfY29udGV4dF9k
b3dubG9hZF9jYWxsYmFja3Nfc2V0KEV3a19Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdrX0Rvd25sb2FkX1JlcXVlc3RlZF9D
YiBkb3dubG9hZF9yZXF1ZXN0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEV3a19Eb3dubG9hZF9GYWlsZWRfQ2IgZG93bmxvYWRfZmFpbGVkX2Z1
bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFd2tfRG93
bmxvYWRfQ2FuY2VsbGVkX0NiIGRvd25sb2FkX2NhbmNlbGxlZF9mdW5jLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdrX0Rvd25sb2FkX0ZpbmlzaGVkX0Ni
IGRvd25sb2FkX2ZpbmlzaGVkX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkKiBkYXRhKTsKKworLyoqCiAgKiBSZWdpc3RlcnMgdGhlIGdpdmVu
IEBhIHZpc2l0ZWRfdXJsIGFzIHZpc2l0ZWQgbGluayBpbiBAYSBjb250ZXh0IHZpc2l0ZWQgbGlu
ayBjYWNoZS4KICAqCiAgKiBUaGlzIGZ1bmN0aW9uIHNoYWxsIGJlIGludm9rZWQgYXMgYSByZXNw
b25zZSB0byBAYyBwb3B1bGF0ZVZpc2l0ZWRMaW5rcyBjYWxsYmFjayBvZiB0aGUgaGlzdG9yeSBj
aWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19k
b3dubG9hZF9qb2IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rv
d25sb2FkX2pvYi5jcHAKaW5kZXggNTUwYzBlMGY3MzhjZWQ5MTliYzQ4ZjMzMTVlY2NmNzA5Y2Y2
NzUzZS4uZTBmMmY2OWEyNTY4ZGRjZTA1MTk5MDQ4YzM4NDFjMjRjZmE5YjY5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5j
cHAKQEAgLTM2LDkgKzM2LDggQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotRXdrRG93
bmxvYWRKb2I6OkV3a0Rvd25sb2FkSm9iKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIEV3a1ZpZXcq
IHZpZXdJbXBsKQorRXdrRG93bmxvYWRKb2I6OkV3a0Rvd25sb2FkSm9iKFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQpCiAgICAgOiBtX2Rvd25sb2FkKGRvd25sb2FkKQotICAgICwgbV92aWV3SW1wbCh2
aWV3SW1wbCkKICAgICAsIG1fc3RhdGUoRVdLX0RPV05MT0FEX0pPQl9TVEFURV9OT1RfU1RBUlRF
RCkKICAgICAsIG1fc3RhcnRUaW1lKC0xKQogICAgICwgbV9lbmRUaW1lKC0xKQpAQCAtNTQsMTYg
KzUzLDYgQEAgdWludDY0X3QgRXdrRG93bmxvYWRKb2I6OmlkKCkgY29uc3QKICAgICByZXR1cm4g
V0tEb3dubG9hZEdldElEKG1fZG93bmxvYWQuZ2V0KCkpOwogfQogCi0vKioKLSAqIEBpbnRlcm5h
bAotICogUmV0dXJucyB0aGUgdmlldyB0aGlzIGRvd25sb2FkIGlzIGF0dGFjaGVkIHRvLgotICog
VGhlIHZpZXcgaXMgbmVlZGVkIHRvIHNlbmQgbm90aWZpY2F0aW9uIHNpZ25hbHMuCi0gKi8KLUV3
a1ZpZXcqIEV3a0Rvd25sb2FkSm9iOjp2aWV3KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV92aWV3
SW1wbDsKLX0KLQogRXdrX0Rvd25sb2FkX0pvYl9TdGF0ZSBld2tfZG93bmxvYWRfam9iX3N0YXRl
X2dldChjb25zdCBFd2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCkKIHsKICAgICBFV0tfT0JKX0dF
VF9JTVBMX09SX1JFVFVSTihjb25zdCBFd2tEb3dubG9hZEpvYiwgZG93bmxvYWQsIGltcGwsIEVX
S19ET1dOTE9BRF9KT0JfU1RBVEVfVU5LTk9XTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmgKaW5kZXggNjhjZjUwNDEzNjEzMjg1
OTEzYTBlOGEyNjIyYjFiMGIwNzQ2NDY4Yy4uNzBhNjRmMTY3NmQ3OTQyYjk1ZTE1ZTRiYWMyMjg1
YmU3YzRjNjU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2Rvd25sb2FkX2pvYi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19kb3dubG9hZF9qb2IuaApAQCAtMTUxLDggKzE1MSw4IEBAIEVBUEkgY29uc3QgY2hhciAq
ZXdrX2Rvd25sb2FkX2pvYl9zdWdnZXN0ZWRfZmlsZW5hbWVfZ2V0KGNvbnN0IEV3a19Eb3dubG9h
ZF9Kb2IKIC8qKgogICogQ2FuY2VscyB0aGUgZG93bmxvYWQgYXN5bmNocm9ub3VzbHkuCiAgKgot
ICogV2hlbiB0aGUgb25nb2luZyBkb3dubG9hZCBvcGVyYXRpb24gaXMgZWZmZWN0aXZlbHkgY2Fu
Y2VsbGVkIGEgImRvd25sb2FkLGNhbmNlbGxlZCIKLSAqIHNpZ25hbCB3aWxsIGJlIGVtaXR0ZWQg
b24gdGhlIHZpZXcuCisgKiBXaGVuIHRoZSBvbmdvaW5nIGRvd25sb2FkIG9wZXJhdGlvbiBpcyBl
ZmZlY3RpdmVseSBjYW5jZWxsZWQsIGEgIkV3a19Eb3dubG9hZF9DYW5jZWxsZWRfQ2IiCisgKiB3
aWxsIGJlIGNhbGxlZCBpbiBEb3dubG9hZE1hbmFnZXIuCiAgKgogICogQHBhcmFtIGRvd25sb2Fk
IGEgI0V3a19Eb3dubG9hZF9Kb2IgdG8gY2FuY2VsLgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgK
aW5kZXggMGRiZDUyNTU3ZDE5ODE4ZDFlZDcxZDI5MGMxZDRkMzk5ZDFkYjY2MS4uNjQ0MGU2ZTEy
NWI0YmQyN2U4OTQ5NmI4YzNjMzc1NDA1ODg5OTI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgK
QEAgLTQyLDkgKzQyLDkgQEAgY2xhc3MgRXdrRG93bmxvYWRKb2IgOiBwdWJsaWMgRXdrT2JqZWN0
IHsKIHB1YmxpYzoKICAgICBFV0tfT0JKRUNUX0RFQ0xBUkUoRXdrRG93bmxvYWRKb2IpCiAKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tEb3dubG9hZEpvYj4gY3JlYXRlKFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQsIEV3a1ZpZXcqIHZpZXdJbXBsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a0Rv
d25sb2FkSm9iPiBjcmVhdGUoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRXdrRG93bmxvYWRKb2IoZG93bmxvYWQsIHZpZXdJbXBsKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrRG93bmxvYWRKb2IoZG93bmxvYWQpKTsK
ICAgICB9CiAKICAgICB1aW50NjRfdCBpZCgpIGNvbnN0OwpAQCAtNzEsMTAgKzcxLDkgQEAgcHVi
bGljOgogICAgIHVpbnQ2NF90IHJlY2VpdmVkRGF0YVNpemUoKSBjb25zdDsKIAogcHJpdmF0ZToK
LSAgICBFd2tEb3dubG9hZEpvYihXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBFd2tWaWV3KiB2aWV3
KTsKKyAgICBleHBsaWNpdCBFd2tEb3dubG9hZEpvYihXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsK
IAogICAgIFdLUmV0YWluUHRyPFdLRG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7Ci0gICAgRXdrVmll
dyogbV92aWV3SW1wbDsKICAgICBFd2tfRG93bmxvYWRfSm9iX1N0YXRlIG1fc3RhdGU7CiAgICAg
bXV0YWJsZSBSZWZQdHI8RXdrVXJsUmVxdWVzdD4gbV9yZXF1ZXN0OwogICAgIFJlZlB0cjxFd2tV
cmxSZXNwb25zZT4gbV9yZXNwb25zZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5oCmluZGV4IDkwNWU1NDFmNWNjMmVhMWFhNmM3NDlhMmU3MWJkYTdjZGI0NTBk
ZmYuLjkzNzNhOTEzN2Y5MDZhOThhMmQ2NjFiZDc1ZGFiOTY0ZGU1ZDc0MDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMzEsMTEgKzMxLDYgQEAK
ICAqIC0gImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgdGhl
IHZpZXcncyBiYWNrIC8gZm9yd2FyZCBsaXN0IGhhZCBjaGFuZ2VkLgogICogLSAiY2FuY2VsLHZp
YnJhdGlvbiIsIHZvaWQ6IHJlcXVlc3QgdG8gY2FuY2VsIHRoZSB2aWJyYXRpb24uCiAgKiAtICJj
b250ZW50cyxzaXplLGNoYW5nZWQiLCBFd2tfQ1NTX1NpemUqOiByZXBvcnRzIHRoYXQgY29udGVu
dHMgc2l6ZSB3YXMgY2hhbmdlZC4KLSAqIC0gImRvd25sb2FkLGNhbmNlbGxlZCIsIEV3a19Eb3du
bG9hZF9Kb2IqOiByZXBvcnRzIHRoYXQgYSBkb3dubG9hZCB3YXMgZWZmZWN0aXZlbHkgY2FuY2Vs
bGVkLgotICogLSAiZG93bmxvYWQsZmFpbGVkIiwgRXdrX0Rvd25sb2FkX0pvYl9FcnJvcio6IHJl
cG9ydHMgdGhhdCBhIGRvd25sb2FkIGZhaWxlZCB3aXRoIHRoZSBnaXZlbiBlcnJvci4KLSAqIC0g
ImRvd25sb2FkLGZpbmlzaGVkIiwgRXdrX0Rvd25sb2FkX0pvYio6IHJlcG9ydHMgdGhhdCBhIGRv
d25sb2FkIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuCi0gKiAtICJkb3dubG9hZCxyZXF1ZXN0Iiwg
RXdrX0Rvd25sb2FkX0pvYio6IHJlcG9ydHMgdGhhdCBhIG5ldyBkb3dubG9hZCBoYXMgYmVlbiBy
ZXF1ZXN0ZWQuIFRoZSBjbGllbnQgc2hvdWxkIHNldCB0aGUKLSAqICAgZGVzdGluYXRpb24gcGF0
aCBieSBjYWxsaW5nIGV3a19kb3dubG9hZF9qb2JfZGVzdGluYXRpb25fc2V0KCkgb3IgdGhlIGRv
d25sb2FkIHdpbGwgZmFpbC4KICAqIC0gImZpbGUsY2hvb3NlcixyZXF1ZXN0IiwgRXdrX0ZpbGVf
Q2hvb3Nlcl9SZXF1ZXN0KjogcmVwb3J0cyB0aGF0IGEgcmVxdWVzdCBoYXMgYmVlbiBtYWRlIGZv
ciB0aGUgdXNlciB0byBjaG9vc2UKICAqICAgYSBmaWxlIChvciBzZXZlcmFsKSBvbiB0aGUgZmls
ZSBzeXN0ZW0uIENhbGwgZXdrX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X3JlZigpIG9uIHRoZSByZXF1
ZXN0IG9iamVjdCB0byBwcm9jZXNzIGl0CiAgKiAgIGFzeW5jaHJvbm91c2x5LgpAQCAtNzksNyAr
NzQsNiBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRf
bWVudS5oIgogI2luY2x1ZGUgImV3a19kb3dubG9hZF9qb2IuaCIKLSNpbmNsdWRlICJld2tfZXJy
b3IuaCIKICNpbmNsdWRlICJld2tfcGFnZV9ncm91cC5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9t
ZW51LmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgpAQCAtMjQzLDE3ICsyMzcs
NiBAQCBzdHJ1Y3QgRXdrX1ZpZXdfU21hcnRfRGF0YSB7CiAgICAgfSBjaGFuZ2VkOwogfTsKIAot
Ly8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IuCi10eXBl
ZGVmIHN0cnVjdCBFd2tfRG93bmxvYWRfSm9iX0Vycm9yIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3I7
Ci0KLS8qKgotICogQGJyaWVmIFN0cnVjdHVyZSBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgYSBk
b3dubG9hZCBmYWlsdXJlLgotICovCi1zdHJ1Y3QgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciB7Ci0g
ICAgRXdrX0Rvd25sb2FkX0pvYiAqZG93bmxvYWRfam9iOyAvKio8IGRvd25sb2FkIHRoYXQgZmFp
bGVkICovCi0gICAgRXdrX0Vycm9yICplcnJvcjsgLyoqPCBkb3dubG9hZCBlcnJvciAqLwotfTsK
LQogLy8vIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19DU1NfU2l6ZS4KIHR5cGVkZWYgc3Ry
dWN0IEV3a19DU1NfU2l6ZSBFd2tfQ1NTX1NpemU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25sb2Fk
X2pvYi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiYmMyNTljY2I1ZTc1Mzdj
NzBlOWM3NDcyYzI5YzBmNDk0ODQ4ODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX2Rvd25sb2FkX2pvYi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODEgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiVW5p
dFRlc3RVdGlscy9FV0syVW5pdFRlc3RCYXNlLmgiCi0jaW5jbHVkZSAiVW5pdFRlc3RVdGlscy9F
V0syVW5pdFRlc3RTZXJ2ZXIuaCIKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN5
cy90eXBlcy5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5j
bHVkZSA8dW5pc3RkLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBFV0syVW5pdFRlc3Q7Ci11c2luZyBu
YW1lc3BhY2UgV1RGOwotCi1leHRlcm4gRVdLMlVuaXRUZXN0RW52aXJvbm1lbnQqIGVudmlyb25t
ZW50OwotCi1zdGF0aWMgY29uc3QgY2hhciBzZXJ2ZXJTdWdnZXN0ZWRGaWxlbmFtZVtdID0gIndl
YmtpdC1kb3dubG9hZGVkLWZpbGUiOwotc3RhdGljIGNvbnN0IGNoYXIgdGVzdEZpbGVQYXRoW10g
PSAiL3Rlc3QucGRmIjsKLQotY2xhc3MgRVdLMkRvd25sb2FkSm9iVGVzdCA6IHB1YmxpYyBFV0sy
VW5pdFRlc3RCYXNlIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgRG93bmxvYWRUZXN0RGF0YSB7Ci0g
ICAgICAgIGNvbnN0IGNoYXIqIGZpbGVVcmw7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGRlc3RpbmF0
aW9uUGF0aDsKLSAgICB9OwotCi0gICAgc3RhdGljIGJvb2wgZmlsZUV4aXN0cyhjb25zdCBjaGFy
KiBwYXRoKQotICAgIHsKLSAgICAgICAgc3RydWN0IHN0YXQgYnVmOwotICAgICAgICByZXR1cm4g
IXN0YXQocGF0aCwgJmJ1Zik7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJh
Y2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciog
cGF0aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0Kiwgdm9pZCopCi0gICAgewotICAg
ICAgICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewotICAgICAgICAg
ICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0lNUExF
TUVOVEVEKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEVpbmFf
U3RyYnVmKiBmaWxlUGF0aCA9IGVpbmFfc3RyYnVmX25ldygpOwotICAgICAgICBlaW5hX3N0cmJ1
Zl9hcHBlbmQoZmlsZVBhdGgsIFRFU1RfUkVTT1VSQ0VTX0RJUik7Ci0gICAgICAgIGVpbmFfc3Ry
YnVmX2FwcGVuZChmaWxlUGF0aCwgcGF0aCk7Ci0KLSAgICAgICAgRWluYV9GaWxlKiBmID0gZWlu
YV9maWxlX29wZW4oZWluYV9zdHJidWZfc3RyaW5nX2dldChmaWxlUGF0aCksIGZhbHNlKTsKLSAg
ICAgICAgZWluYV9zdHJidWZfZnJlZShmaWxlUGF0aCk7Ci0gICAgICAgIGlmICghZikgewotICAg
ICAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9U
X0ZPVU5EKTsKLSAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2Ut
PnJlc3BvbnNlX2JvZHkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgc2l6ZV90IGZpbGVTaXplID0gZWluYV9maWxlX3NpemVfZ2V0KGYpOwotCi0gICAgICAgIHZv
aWQqIGNvbnRlbnRzID0gZWluYV9maWxlX21hcF9hbGwoZiwgRUlOQV9GSUxFX1BPUFVMQVRFKTsK
LSAgICAgICAgaWYgKCFjb250ZW50cykgewotICAgICAgICAgICAgc291cF9tZXNzYWdlX3NldF9z
dGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfTk9UX0ZPVU5EKTsKLSAgICAgICAgICAgIHNvdXBf
bWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMo
bWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwotCi0gICAgICAgIEVpbmFfU3RyYnVmKiBjb250ZW50
RGlzcG9zaXRpb24gPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKLSAgICAgICAgZWluYV9zdHJidWZfYXBw
ZW5kX3ByaW50Zihjb250ZW50RGlzcG9zaXRpb24sICJmaWxlbmFtZT0lcyIsIHNlcnZlclN1Z2dl
c3RlZEZpbGVuYW1lKTsKLSAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKG1lc3Nh
Z2UtPnJlc3BvbnNlX2hlYWRlcnMsICJDb250ZW50LURpc3Bvc2l0aW9uIiwgZWluYV9zdHJidWZf
c3RyaW5nX2dldChjb250ZW50RGlzcG9zaXRpb24pKTsKLSAgICAgICAgZWluYV9zdHJidWZfZnJl
ZShjb250ZW50RGlzcG9zaXRpb24pOwotCi0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVu
ZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9SWV9DT1BZLCBjb250ZW50cywgZmls
ZVNpemUpOwotICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNw
b25zZV9ib2R5KTsKLQotICAgICAgICBlaW5hX2ZpbGVfbWFwX2ZyZWUoZiwgY29udGVudHMpOwot
ICAgICAgICBlaW5hX2ZpbGVfY2xvc2UoZik7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgb25f
ZG93bmxvYWRfcmVxdWVzdGVkKHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVjdCogd2Vidmlldywg
dm9pZCogZXZlbnRJbmZvKQotICAgIHsKLSAgICAgICAgRG93bmxvYWRUZXN0RGF0YSogdGVzdERh
dGEgPSBzdGF0aWNfY2FzdDxEb3dubG9hZFRlc3REYXRhKj4odXNlckRhdGEpOwotICAgICAgICBF
d2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCA9IHN0YXRpY19jYXN0PEV3a19Eb3dubG9hZF9Kb2Iq
PihldmVudEluZm8pOwotICAgICAgICBBU1NFUlRfRVEoRVdLX0RPV05MT0FEX0pPQl9TVEFURV9O
T1RfU1RBUlRFRCwgZXdrX2Rvd25sb2FkX2pvYl9zdGF0ZV9nZXQoZG93bmxvYWQpKTsKLSAgICAg
ICAgQVNTRVJUX0VRKDAsIGV3a19kb3dubG9hZF9qb2JfZXN0aW1hdGVkX3Byb2dyZXNzX2dldChk
b3dubG9hZCkpOwotICAgICAgICBBU1NFUlRfRVEoMCwgZXdrX2Rvd25sb2FkX2pvYl9lbGFwc2Vk
X3RpbWVfZ2V0KGRvd25sb2FkKSk7Ci0gICAgICAgIEFTU0VSVF9FUSgwLCBld2tfZG93bmxvYWRf
am9iX3JlY2VpdmVkX2RhdGFfc2l6ZV9nZXQoZG93bmxvYWQpKTsKLQotICAgICAgICBFd2tfVXJs
X1JlcXVlc3QqIHJlcXVlc3QgPSBld2tfZG93bmxvYWRfam9iX3JlcXVlc3RfZ2V0KGRvd25sb2Fk
KTsKLSAgICAgICAgQVNTRVJUX1RSVUUocmVxdWVzdCk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSh0
ZXN0RGF0YS0+ZmlsZVVybCwgZXdrX3VybF9yZXF1ZXN0X3VybF9nZXQocmVxdWVzdCkpOwotCi0g
ICAgICAgIEV3a19VcmxfUmVzcG9uc2UqIHJlc3BvbnNlID0gZXdrX2Rvd25sb2FkX2pvYl9yZXNw
b25zZV9nZXQoZG93bmxvYWQpOwotICAgICAgICBBU1NFUlRfVFJVRShyZXNwb25zZSk7Ci0gICAg
ICAgIEVYUEVDVF9TVFJFUSgiYXBwbGljYXRpb24vcGRmIiwgZXdrX3VybF9yZXNwb25zZV9taW1l
X3R5cGVfZ2V0KHJlc3BvbnNlKSk7Ci0KLSAgICAgICAgRVhQRUNUX1NUUkVRKHNlcnZlclN1Z2dl
c3RlZEZpbGVuYW1lLCBld2tfZG93bmxvYWRfam9iX3N1Z2dlc3RlZF9maWxlbmFtZV9nZXQoZG93
bmxvYWQpKTsKLQotICAgICAgICBBU1NFUlRfRkFMU0UoZmlsZUV4aXN0cyh0ZXN0RGF0YS0+ZGVz
dGluYXRpb25QYXRoKSk7Ci0gICAgICAgIGV3a19kb3dubG9hZF9qb2JfZGVzdGluYXRpb25fc2V0
KGRvd25sb2FkLCB0ZXN0RGF0YS0+ZGVzdGluYXRpb25QYXRoKTsKLSAgICAgICAgRVhQRUNUX1NU
UkVRKHRlc3REYXRhLT5kZXN0aW5hdGlvblBhdGgsIGV3a19kb3dubG9hZF9qb2JfZGVzdGluYXRp
b25fZ2V0KGRvd25sb2FkKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgb25fZG93bmxvYWRf
Y2FuY2VsbGVkKHZvaWQqIHVzZXJEYXRhLCBFdmFzX09iamVjdCogd2Vidmlldywgdm9pZCogZXZl
bnRJbmZvKQotICAgIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJEb3dubG9hZCB3YXMgY2Fu
Y2VsbGVkLlxuIik7Ci0gICAgICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7Ci0gICAgICAgIEZB
SUwoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBvbl9kb3dubG9hZF9mYWlsZWQodm9pZCog
dXNlckRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudEluZm8pCi0gICAgewot
ICAgICAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yKiBkb3dubG9hZEVycm9yID0gc3RhdGljX2Nh
c3Q8RXdrX0Rvd25sb2FkX0pvYl9FcnJvcio+KGV2ZW50SW5mbyk7Ci0gICAgICAgIGZwcmludGYo
c3RkZXJyLCAiRG93bmxvYWQgZXJyb3I6ICVzXG4iLCBld2tfZXJyb3JfZGVzY3JpcHRpb25fZ2V0
KGRvd25sb2FkRXJyb3ItPmVycm9yKSk7Ci0gICAgICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7
Ci0gICAgICAgIEZBSUwoKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBvbl9kb3dubG9hZF9m
aW5pc2hlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqIHdlYnZpZXcsIHZvaWQqIGV2ZW50
SW5mbykKLSAgICB7Ci0gICAgICAgIERvd25sb2FkVGVzdERhdGEqIHRlc3REYXRhID0gc3RhdGlj
X2Nhc3Q8RG93bmxvYWRUZXN0RGF0YSo+KHVzZXJEYXRhKTsKLSAgICAgICAgRXdrX0Rvd25sb2Fk
X0pvYiogZG93bmxvYWQgPSBzdGF0aWNfY2FzdDxFd2tfRG93bmxvYWRfSm9iKj4oZXZlbnRJbmZv
KTsKLQotICAgICAgICBBU1NFUlRfRVEoMSwgZXdrX2Rvd25sb2FkX2pvYl9lc3RpbWF0ZWRfcHJv
Z3Jlc3NfZ2V0KGRvd25sb2FkKSk7Ci0gICAgICAgIEFTU0VSVF9FUShFV0tfRE9XTkxPQURfSk9C
X1NUQVRFX0ZJTklTSEVELCBld2tfZG93bmxvYWRfam9iX3N0YXRlX2dldChkb3dubG9hZCkpOwot
ICAgICAgICBBU1NFUlRfR1QoZXdrX2Rvd25sb2FkX2pvYl9lbGFwc2VkX3RpbWVfZ2V0KGRvd25s
b2FkKSwgMCk7Ci0gICAgICAgIEFTU0VSVF9HVChld2tfZG93bmxvYWRfam9iX3JlY2VpdmVkX2Rh
dGFfc2l6ZV9nZXQoZG93bmxvYWQpLCAwKTsKLQotICAgICAgICBBU1NFUlRfVFJVRShmaWxlRXhp
c3RzKHRlc3REYXRhLT5kZXN0aW5hdGlvblBhdGgpKTsKLQotICAgICAgICBlY29yZV9tYWluX2xv
b3BfcXVpdCgpOwotICAgIH0KLX07Ci0KLVRFU1RfRihFV0syRG93bmxvYWRKb2JUZXN0LCBld2tf
ZG93bmxvYWQpCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEVXSzJVbml0VGVzdFNlcnZlcj4gaHR0
cFNlcnZlciA9IHN0ZDo6bWFrZV91bmlxdWU8RVdLMlVuaXRUZXN0U2VydmVyPigpOwotICAgIGh0
dHBTZXJ2ZXItPnJ1bihzZXJ2ZXJDYWxsYmFjayk7Ci0KLSAgICBDU3RyaW5nIGZpbGVVcmwgPSBo
dHRwU2VydmVyLT5nZXRVUkxGb3JQYXRoKHRlc3RGaWxlUGF0aCk7Ci0KLSAgICBjaGFyIGRlc3Rp
bmF0aW9uRGlyZWN0b3J5W10gPSAiL3RtcC9ld2syX2Rvd25sb2FkX2pvYi1YWFhYWFgiOwotICAg
IEFTU0VSVF9UUlVFKG1rZHRlbXAoZGVzdGluYXRpb25EaXJlY3RvcnkpKTsKLSAgICBjaGFyIGRl
c3RpbmF0aW9uUGF0aFs2NF07Ci0gICAgc25wcmludGYoZGVzdGluYXRpb25QYXRoLCBzaXplb2Yo
ZGVzdGluYXRpb25QYXRoKSwgIiVzL3BkZi1maWxlIiwgZGVzdGluYXRpb25EaXJlY3RvcnkpOwot
Ci0gICAgRG93bmxvYWRUZXN0RGF0YSB1c2VyRGF0YSA9IHsgZmlsZVVybC5kYXRhKCksIGRlc3Rp
bmF0aW9uUGF0aCB9OwotICAgIEFTU0VSVF9GQUxTRShmaWxlRXhpc3RzKGRlc3RpbmF0aW9uUGF0
aCkpOwotCi0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgImRv
d25sb2FkLHJlcXVlc3QiLCBvbl9kb3dubG9hZF9yZXF1ZXN0ZWQsICZ1c2VyRGF0YSk7Ci0gICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgImRvd25sb2FkLGNhbmNl
bCIsIG9uX2Rvd25sb2FkX2NhbmNlbGxlZCwgJnVzZXJEYXRhKTsKLSAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAiZG93bmxvYWQsZmFpbGVkIiwgb25fZG93bmxv
YWRfZmFpbGVkLCAmdXNlckRhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Fk
ZCh3ZWJWaWV3KCksICJkb3dubG9hZCxmaW5pc2hlZCIsIG9uX2Rvd25sb2FkX2ZpbmlzaGVkLCAm
dXNlckRhdGEpOwotCi0gICAgLy8gRG93bmxvYWQgdGVzdCBwZGYKLSAgICBld2tfdmlld191cmxf
c2V0KHdlYlZpZXcoKSwgZmlsZVVybC5kYXRhKCkpOwotICAgIGVjb3JlX21haW5fbG9vcF9iZWdp
bigpOwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICB1bmxpbmsoZGVzdGluYXRpb25QYXRoKTsKLSAg
ICBybWRpcihkZXN0aW5hdGlvbkRpcmVjdG9yeSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKaW5kZXggOTdlYzExZTI5N2Qx
ZTgyZmQ5ZjVmMDllZjIzMGJkMTVhYThhYWU5ZC4uZmYzMjNkOGMzNDY5ZmY4YmRjYWFiZDg3MzA3
YWU1ODQ3NDk1YjUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9E
b3dubG9hZE1hbmFnZXJFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
RG93bmxvYWRNYW5hZ2VyRWZsLmNwcApAQCAtNDUsMTQgKzQ1LDE2IEBAIHN0YXRpYyBpbmxpbmUg
RG93bmxvYWRNYW5hZ2VyRWZsKiB0b0Rvd25sb2FkTWFuYWdlckVmbChjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogCiBXS1N0cmluZ1JlZiBEb3dubG9hZE1hbmFnZXJFZmw6OmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rv
d25sb2FkLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogLyphbGxvd092ZXJ3cml0ZSovLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIEV3a0Rvd25sb2FkSm9iKiBkb3dubG9hZCA9
IHRvRG93bmxvYWRNYW5hZ2VyRWZsKGNsaWVudEluZm8pLT5ld2tEb3dubG9hZEpvYih3a0Rvd25s
b2FkKTsKKyAgICBEb3dubG9hZE1hbmFnZXJFZmwqIGRvd25sb2FkTWFuYWdlciA9IHRvRG93bmxv
YWRNYW5hZ2VyRWZsKGNsaWVudEluZm8pOworICAgIEV3a0Rvd25sb2FkSm9iKiBkb3dubG9hZCA9
IGRvd25sb2FkTWFuYWdlci0+ZXdrRG93bmxvYWRKb2Iod2tEb3dubG9hZCk7CiAgICAgQVNTRVJU
KGRvd25sb2FkKTsKIAogICAgIGRvd25sb2FkLT5zZXRTdWdnZXN0ZWRGaWxlTmFtZSh0b0ltcGwo
ZmlsZW5hbWUpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgIC8vIFdlIHNlbmQgdGhl
IG5ldyBkb3dubG9hZCBzaWduYWwgb24gdGhlIEV3a19WaWV3IG9ubHkgb25jZSB3ZSBoYXZlIHJl
Y2VpdmVkIHRoZSByZXNwb25zZQorICAgIC8vIFdlIGNhbGwgRG93bmxvYWRSZXF1ZXN0ZWQgY2Fs
bGJhY2sgb25seSBvbmNlIHdlIGhhdmUgcmVjZWl2ZWQgdGhlIHJlc3BvbnNlCiAgICAgLy8gYW5k
IHRoZSBzdWdnZXN0ZWQgZmlsZSBuYW1lLgotICAgIGRvd25sb2FkLT52aWV3KCktPnNtYXJ0Q2Fs
bGJhY2s8RG93bmxvYWRKb2JSZXF1ZXN0ZWQ+KCkuY2FsbChkb3dubG9hZCk7CisgICAgaWYgKGRv
d25sb2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV9yZXF1ZXN0ZWQpCisgICAgICAgIGRv
d25sb2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV9yZXF1ZXN0ZWQoZG93bmxvYWQsIGRv
d25sb2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV91c2VyRGF0YSk7CiAKICAgICAvLyBE
b3dubG9hZFNvdXAgZXhwZWN0cyB0aGUgZGVzdGluYXRpb24gdG8gYmUgYSBVUkwuCiAgICAgU3Ry
aW5nIGRlc3RpbmF0aW9uID0gQVNDSUlMaXRlcmFsKCJmaWxlOi8vIikgKyBTdHJpbmc6OmZyb21V
VEY4KGRvd25sb2FkLT5kZXN0aW5hdGlvbigpKTsKQEAgLTgyLDYgKzg0LDEyIEBAIHZvaWQgRG93
bmxvYWRNYW5hZ2VyRWZsOjpkaWRSZWNlaXZlRGF0YShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRS
ZWYgd2tEb3dubG9hZCwKICAgICBkb3dubG9hZC0+aW5jcmVtZW50UmVjZWl2ZWREYXRhKGxlbmd0
aCk7CiB9CiAKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRTdGFydChXS0NvbnRleHRSZWYs
IFdLRG93bmxvYWRSZWYgd2tEb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBEb3dubG9hZE1hbmFnZXJFZmwqIGRvd25sb2FkTWFuYWdlciA9IHRvRG93bmxvYWRNYW5hZ2Vy
RWZsKGNsaWVudEluZm8pOworICAgIGRvd25sb2FkTWFuYWdlci0+cmVnaXN0ZXJEb3dubG9hZEpv
Yih3a0Rvd25sb2FkKTsKK30KKwogdm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OmRpZEZhaWwoV0tD
b250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3IsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgRG93bmxvYWRNYW5hZ2VyRWZsKiBkb3dubG9h
ZE1hbmFnZXIgPSB0b0Rvd25sb2FkTWFuYWdlckVmbChjbGllbnRJbmZvKTsKQEAgLTkxLDcgKzk5
LDggQEAgdm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OmRpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rv
d25sb2FkUmVmIHdrRG93bmxvYWQsIFdLRXJyb3IKICAgICBhdXRvIGV3a0Vycm9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxFd2tFcnJvcj4oZXJyb3IpOwogICAgIGRvd25sb2FkLT5zZXRTdGF0ZShFV0tf
RE9XTkxPQURfSk9CX1NUQVRFX0ZBSUxFRCk7CiAgICAgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciBk
b3dubG9hZEVycm9yID0geyBkb3dubG9hZCwgZXdrRXJyb3IuZ2V0KCkgfTsKLSAgICBkb3dubG9h
ZC0+dmlldygpLT5zbWFydENhbGxiYWNrPERvd25sb2FkSm9iRmFpbGVkPigpLmNhbGwoJmRvd25s
b2FkRXJyb3IpOworICAgIGlmIChkb3dubG9hZE1hbmFnZXItPm1fY2xpZW50Q2FsbGJhY2tzLm1f
ZmFpbGVkKQorICAgICAgICBkb3dubG9hZE1hbmFnZXItPm1fY2xpZW50Q2FsbGJhY2tzLm1fZmFp
bGVkKCZkb3dubG9hZEVycm9yLCBkb3dubG9hZE1hbmFnZXItPm1fY2xpZW50Q2FsbGJhY2tzLm1f
dXNlckRhdGEpOwogICAgIGRvd25sb2FkTWFuYWdlci0+dW5yZWdpc3RlckRvd25sb2FkSm9iKHdr
RG93bmxvYWQpOwogfQogCkBAIC0xMDIsNyArMTExLDggQEAgdm9pZCBEb3dubG9hZE1hbmFnZXJF
Zmw6OmRpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgd2tEb3dubG9hZCwgY29u
c3QKICAgICBBU1NFUlQoZG93bmxvYWQpOwogCiAgICAgZG93bmxvYWQtPnNldFN0YXRlKEVXS19E
T1dOTE9BRF9KT0JfU1RBVEVfQ0FOQ0VMTEVEKTsKLSAgICBkb3dubG9hZC0+dmlldygpLT5zbWFy
dENhbGxiYWNrPERvd25sb2FkSm9iQ2FuY2VsbGVkPigpLmNhbGwoZG93bmxvYWQpOworICAgIGlm
IChkb3dubG9hZE1hbmFnZXItPm1fY2xpZW50Q2FsbGJhY2tzLm1fY2FuY2VsbGVkKQorICAgICAg
ICBkb3dubG9hZE1hbmFnZXItPm1fY2xpZW50Q2FsbGJhY2tzLm1fY2FuY2VsbGVkKGRvd25sb2Fk
LCBkb3dubG9hZE1hbmFnZXItPm1fY2xpZW50Q2FsbGJhY2tzLm1fdXNlckRhdGEpOwogICAgIGRv
d25sb2FkTWFuYWdlci0+dW5yZWdpc3RlckRvd25sb2FkSm9iKHdrRG93bmxvYWQpOwogfQogCkBA
IC0xMTMsMTMgKzEyMywxNiBAQCB2b2lkIERvd25sb2FkTWFuYWdlckVmbDo6ZGlkRmluaXNoKFdL
Q29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rvd25sb2FkLCBjb25zdAogICAgIEFTU0VSVChk
b3dubG9hZCk7CiAKICAgICBkb3dubG9hZC0+c2V0U3RhdGUoRVdLX0RPV05MT0FEX0pPQl9TVEFU
RV9GSU5JU0hFRCk7Ci0gICAgZG93bmxvYWQtPnZpZXcoKS0+c21hcnRDYWxsYmFjazxEb3dubG9h
ZEpvYkZpbmlzaGVkPigpLmNhbGwoZG93bmxvYWQpOworICAgIGlmIChkb3dubG9hZE1hbmFnZXIt
Pm1fY2xpZW50Q2FsbGJhY2tzLm1fZmluaXNoZWQpCisgICAgICAgIGRvd25sb2FkTWFuYWdlci0+
bV9jbGllbnRDYWxsYmFja3MubV9maW5pc2hlZChkb3dubG9hZCwgZG93bmxvYWRNYW5hZ2VyLT5t
X2NsaWVudENhbGxiYWNrcy5tX3VzZXJEYXRhKTsKICAgICBkb3dubG9hZE1hbmFnZXItPnVucmVn
aXN0ZXJEb3dubG9hZEpvYih3a0Rvd25sb2FkKTsKIH0KIAogRG93bmxvYWRNYW5hZ2VyRWZsOjpE
b3dubG9hZE1hbmFnZXJFZmwoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQo
Y29udGV4dCkKIHsKKyAgICBtZW1zZXQoJm1fY2xpZW50Q2FsbGJhY2tzLCAwLCBzaXplb2YoQ2xp
ZW50RG93bmxvYWRDYWxsYmFja3MpKTsKKwogICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjAg
d2tEb3dubG9hZENsaWVudDsKICAgICBtZW1zZXQoJndrRG93bmxvYWRDbGllbnQsIDAsIHNpemVv
ZihXS0NvbnRleHREb3dubG9hZENsaWVudCkpOwogCkBAIC0xMzAsNiArMTQzLDcgQEAgRG93bmxv
YWRNYW5hZ2VyRWZsOjpEb3dubG9hZE1hbmFnZXJFZmwoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAg
ICAgd2tEb3dubG9hZENsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IGRpZENyZWF0ZURlc3Rp
bmF0aW9uOwogICAgIHdrRG93bmxvYWRDbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlID0gZGlkUmVj
ZWl2ZVJlc3BvbnNlOwogICAgIHdrRG93bmxvYWRDbGllbnQuZGlkUmVjZWl2ZURhdGEgPSBkaWRS
ZWNlaXZlRGF0YTsKKyAgICB3a0Rvd25sb2FkQ2xpZW50LmRpZFN0YXJ0ID0gZGlkU3RhcnQ7CiAg
ICAgd2tEb3dubG9hZENsaWVudC5kaWRGYWlsID0gZGlkRmFpbDsKICAgICB3a0Rvd25sb2FkQ2xp
ZW50LmRpZEZpbmlzaCA9IGRpZEZpbmlzaDsKIApAQCAtMTQxLDEzICsxNTUsMTMgQEAgRG93bmxv
YWRNYW5hZ2VyRWZsOjp+RG93bmxvYWRNYW5hZ2VyRWZsKCkKICAgICBXS0NvbnRleHRTZXREb3du
bG9hZENsaWVudChtX2NvbnRleHQuZ2V0KCksIDApOwogfQogCi12b2lkIERvd25sb2FkTWFuYWdl
ckVmbDo6cmVnaXN0ZXJEb3dubG9hZEpvYihXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBFd2tWaWV3
KiB2aWV3SW1wbCkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpyZWdpc3RlckRvd25sb2FkSm9i
KFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCiB7CiAgICAgdWludDY0X3QgZG93bmxvYWRJZCA9IFdL
RG93bmxvYWRHZXRJRChkb3dubG9hZCk7CiAgICAgaWYgKG1fZG93bmxvYWRKb2JzLmNvbnRhaW5z
KGRvd25sb2FkSWQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RXdrRG93bmxvYWRK
b2I+IGV3a0Rvd25sb2FkID0gRXdrRG93bmxvYWRKb2I6OmNyZWF0ZShkb3dubG9hZCwgdmlld0lt
cGwpOworICAgIFJlZlB0cjxFd2tEb3dubG9hZEpvYj4gZXdrRG93bmxvYWQgPSBFd2tEb3dubG9h
ZEpvYjo6Y3JlYXRlKGRvd25sb2FkKTsKICAgICBtX2Rvd25sb2FkSm9icy5hZGQoZG93bmxvYWRJ
ZCwgZXdrRG93bmxvYWQpOwogfQogCkBAIC0xNjEsNCArMTc1LDEzIEBAIHZvaWQgRG93bmxvYWRN
YW5hZ2VyRWZsOjp1bnJlZ2lzdGVyRG93bmxvYWRKb2IoV0tEb3dubG9hZFJlZiB3a0Rvd25sb2Fk
KQogICAgIG1fZG93bmxvYWRKb2JzLnJlbW92ZShXS0Rvd25sb2FkR2V0SUQod2tEb3dubG9hZCkp
OwogfQogCit2b2lkIERvd25sb2FkTWFuYWdlckVmbDo6c2V0Q2xpZW50Q2FsbGJhY2tzKEV3a19E
b3dubG9hZF9SZXF1ZXN0ZWRfQ2IgcmVxdWVzdGVkLCBFd2tfRG93bmxvYWRfRmFpbGVkX0NiIGZh
aWxlZCwgRXdrX0Rvd25sb2FkX0NhbmNlbGxlZF9DYiBjYW5jZWxsZWQsICBFd2tfRG93bmxvYWRf
RmluaXNoZWRfQ2IgZmluaXNoZWQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIG1fY2xpZW50Q2Fs
bGJhY2tzLm1fcmVxdWVzdGVkID0gcmVxdWVzdGVkOworICAgIG1fY2xpZW50Q2FsbGJhY2tzLm1f
ZmFpbGVkID0gZmFpbGVkOworICAgIG1fY2xpZW50Q2FsbGJhY2tzLm1fY2FuY2VsbGVkID0gY2Fu
Y2VsbGVkOworICAgIG1fY2xpZW50Q2FsbGJhY2tzLm1fZmluaXNoZWQgPSBmaW5pc2hlZDsKKyAg
ICBtX2NsaWVudENhbGxiYWNrcy5tX3VzZXJEYXRhID0gdXNlckRhdGE7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9E
b3dubG9hZE1hbmFnZXJFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxv
YWRNYW5hZ2VyRWZsLmgKaW5kZXggMTQyOGQzZGMzZDhmYjI3MTk3YmE4ODJjOGMwYzk5NTkxOTRm
MjUyNS4uMDdhMDg2MWNlNDQwYTQxZDIwMzZiNGFiZmNkOWY4OTFmZGNhZjkyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5oCkBAIC0y
Niw2ICsyNiw3IEBACiAjaWZuZGVmIERvd25sb2FkTWFuYWdlckVmbF9oCiAjZGVmaW5lIERvd25s
b2FkTWFuYWdlckVmbF9oCiAKKyNpbmNsdWRlICJld2tfY29udGV4dC5oIgogI2luY2x1ZGUgImV3
a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zMywxMiArMzQsMjEgQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK3N0cnVjdCBDbGllbnREb3dubG9hZENhbGxiYWNrcyB7CisgICAgRXdr
X0Rvd25sb2FkX1JlcXVlc3RlZF9DYiBtX3JlcXVlc3RlZDsKKyAgICBFd2tfRG93bmxvYWRfRmFp
bGVkX0NiIG1fZmFpbGVkOworICAgIEV3a19Eb3dubG9hZF9DYW5jZWxsZWRfQ2IgbV9jYW5jZWxs
ZWQ7CisgICAgRXdrX0Rvd25sb2FkX0ZpbmlzaGVkX0NiIG1fZmluaXNoZWQ7CisgICAgdm9pZCog
bV91c2VyRGF0YTsKK307CisKIGNsYXNzIERvd25sb2FkTWFuYWdlckVmbCB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgRG93bmxvYWRNYW5hZ2VyRWZsKFdLQ29udGV4dFJlZik7CiAgICAgfkRvd25s
b2FkTWFuYWdlckVmbCgpOwogCi0gICAgdm9pZCByZWdpc3RlckRvd25sb2FkSm9iKFdLRG93bmxv
YWRSZWYsIEV3a1ZpZXcqKTsKKyAgICB2b2lkIHJlZ2lzdGVyRG93bmxvYWRKb2IoV0tEb3dubG9h
ZFJlZik7CisgICAgdm9pZCBzZXRDbGllbnRDYWxsYmFja3MoRXdrX0Rvd25sb2FkX1JlcXVlc3Rl
ZF9DYiwgRXdrX0Rvd25sb2FkX0ZhaWxlZF9DYiwgRXdrX0Rvd25sb2FkX0NhbmNlbGxlZF9DYiwg
RXdrX0Rvd25sb2FkX0ZpbmlzaGVkX0NiLCB2b2lkKiB1c2VyRGF0YSk7CiAKIHByaXZhdGU6CiAg
ICAgRXdrRG93bmxvYWRKb2IqIGV3a0Rvd25sb2FkSm9iKFdLRG93bmxvYWRSZWYpOwpAQCAtNDks
MTEgKzU5LDE0IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRp
b24oV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBwYXRoLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlRGF0YShXS0NvbnRl
eHRSZWYsIFdLRG93bmxvYWRSZWYsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRS
ZWYsIFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lk
IGRpZFN0YXJ0KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9h
ZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNo
KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAK
ICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IG1fY29udGV4dDsKICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8RXdrRG93bmxvYWRKb2I+ID4gbV9kb3dubG9hZEpvYnM7CisKKyAgICBD
bGllbnREb3dubG9hZENhbGxiYWNrcyBtX2NsaWVudENhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5j
cHAKaW5kZXggNWViYzBmMTY4MTM3NWFmYTM4M2FkMDNmMzU5MzI3YTFmODUxZGQ0OS4uNjgwZmQ1
YWM5YWUzZDQ5YjM2OGE2OGVlYmFjMDhmYTMyNWNiMTdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBXZWJW
aWV3RWZsOjp1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpCiB2b2lkIFdlYlZpZXdFZmw6OmhhbmRsZURv
d25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKIHsKICAgICBFd2tDb250ZXh0
KiBjb250ZXh0ID0gbV9ld2tWaWV3LT5ld2tDb250ZXh0KCk7Ci0gICAgY29udGV4dC0+ZG93bmxv
YWRNYW5hZ2VyKCktPnJlZ2lzdGVyRG93bmxvYWRKb2IodG9BUEkoZG93bmxvYWQpLCBtX2V3a1Zp
ZXcpOworICAgIGNvbnRleHQtPmRvd25sb2FkTWFuYWdlcigpLT5yZWdpc3RlckRvd25sb2FkSm9i
KHRvQVBJKGRvd25sb2FkKSk7CiB9CiAKIHZvaWQgV2ViVmlld0VmbDo6c2V0VGhlbWVQYXRoKGNv
bnN0IFN0cmluZyYgdGhlbWUpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggM2YwZTA3NDA1ODgyNjgyMzJjMmU4MTUxYzAxNjcwNTYzNWE1MzFiOS4u
MGMwZDNmMmIxZjM5ODQ3YzFjZTc3M2FmMzUyYTQzZTYwNGU4MDA5NiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1
LTAyLTA5ICBMdWthc3ogQmlhbGVrICA8bC5iaWFsZWtAc2Ftc3VuZy5jb20+CisKKyAgICAgICAg
W0VGTF1bV0syXSBDcmFzaCB3aGVuICJEb3dubG9hZCBMaW5rZWQgRmlsZSIgZnJvbSBNaW5pQnJv
d3NlciBjb250ZXh0IG1lbnUgaXMgY2xpY2tlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9lZmwvbWFpbi5jOgorICAgICAgICAo
b25fZG93bmxvYWRfcmVxdWVzdCk6CisgICAgICAgIChvbl9kb3dubG9hZF9maW5pc2hlZCk6Cisg
ICAgICAgIChvbl9kb3dubG9hZF9mYWlsZWQpOgorICAgICAgICAod2luZG93X2NyZWF0ZSk6Cisg
ICAgICAgIEFkYXB0IGRvd25sb2FkIGNhbGxiYWNrcyB0byBuZXcgY2FsbGJhY2sgbWVjaGFuaXNt
CisKIDIwMTUtMDItMDggIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBWDogVm9pY2VPdmVyIGFwcGVhcnMgdW5yZXNwb25zaXZlIHdoZW4gSmF2YVNjcmlw
dCBhbGVydHMgYXJlIHRyaWdnZXJlZCB2aWEgZm9jdXMgb3IgYmx1ciBldmVudHMKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwv
bWFpbi5jCmluZGV4IGQxNWNlMmIxN2RhNTU3MTJlMTdmMmNhYTk0NDU4MDYzMDFlZWEwYzguLjJm
YTg1Y2MzMWJiMmM3NjY2ZDFhOTZhYjQyYWRmNThmZjBmYmZiOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL2VmbC9tYWluLmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4u
YwpAQCAtNzMyLDkgKzczMiw4IEBAIG9uX2Vycm9yKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmpl
Y3QgKmV3a192aWV3LCB2b2lkICpldmVudF9pbmZvKQogfQogCiBzdGF0aWMgdm9pZAotb25fZG93
bmxvYWRfcmVxdWVzdCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9p
ZCAqZXZlbnRfaW5mbykKK29uX2Rvd25sb2FkX3JlcXVlc3QoRXdrX0Rvd25sb2FkX0pvYiAqZG93
bmxvYWQsIHZvaWQgKnVzZXJfZGF0YSkKIHsKLSAgICBFd2tfRG93bmxvYWRfSm9iICpkb3dubG9h
ZCA9IChFd2tfRG93bmxvYWRfSm9iICopZXZlbnRfaW5mbzsKICAgICBCcm93c2VyX1dpbmRvdyAq
d2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogCiAgICAgRWluYV9TdHJidWYg
KmRlc3RpbmF0aW9uX3BhdGggPSBlaW5hX3N0cmJ1Zl9uZXcoKTsKQEAgLTg0MiwxNiArODQxLDE3
IEBAIG9uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3Qg
KmV3a192aWV3LCB2b2lkICpldmVudF9pbmZvCiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9kb3dubG9h
ZF9maW5pc2hlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAq
ZXZlbnRfaW5mbykKK29uX2Rvd25sb2FkX2ZpbmlzaGVkKEV3a19Eb3dubG9hZF9Kb2IgKmRvd25s
b2FkLCB2b2lkICp1c2VyX2RhdGEpCiB7Ci0gICAgRXdrX0Rvd25sb2FkX0pvYiAqZG93bmxvYWQg
PSAoRXdrX0Rvd25sb2FkX0pvYiAqKWV2ZW50X2luZm87CiAgICAgSU5GTygiRG93bmxvYWQgZmlu
aXNoZWQ6ICVzIiwgIGV3a19kb3dubG9hZF9qb2JfZGVzdGluYXRpb25fZ2V0KGRvd25sb2FkKSk7
CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9kb3dubG9hZF9mYWlsZWQodm9pZCAqdXNlcl9kYXRhLCBF
dmFzX09iamVjdCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCitvbl9kb3dubG9hZF9mYWls
ZWQoRXdrX0Rvd25sb2FkX0pvYl9FcnJvciAqZG93bmxvYWRfZXJyb3IsIHZvaWQgKnVzZXJfZGF0
YSkKIHsKLSAgICBJTkZPKCJEb3dubG9hZCBmYWlsZWQhIik7CisgICAgRXdrX0Vycm9yICplcnJv
ciA9IGRvd25sb2FkX2Vycm9yLT5lcnJvcjsKKworICAgIElORk8oIkRvd25sb2FkIGZhaWxlZCEg
RXJyb3IgY29kZTogJWQsIEVycm9yIGRlc2NyaXB0aW9uOiAlcywgRXJyb3IgVVJMOiAlcyIsIGV3
a19lcnJvcl9jb2RlX2dldChlcnJvciksIGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQoZXJyb3Ip
LCBld2tfZXJyb3JfdXJsX2dldChlcnJvcikpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjI1OCwx
MSArMjI1OCw3IEBAIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmFzX09i
amVjdCAqb3BlbmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgZXdrX3NldHRpbmdzX3By
ZWZlcnJlZF9taW5pbXVtX2NvbnRlbnRzX3dpZHRoX3NldChzZXR0aW5ncywgMCk7CiAgICAgZXdr
X3RleHRfY2hlY2tlcl9jb250aW51b3VzX3NwZWxsX2NoZWNraW5nX2VuYWJsZWRfc2V0KHNwZWxs
X2NoZWNraW5nX2VuYWJsZWQpOwogICAgIGV3a19zZXR0aW5nc193ZWJfc2VjdXJpdHlfZW5hYmxl
ZF9zZXQoc2V0dGluZ3MsIHdlYl9zZWN1cml0eV9lbmFibGVkKTsKLQogICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiYXV0aGVudGljYXRpb24scmVx
dWVzdCIsIG9uX2F1dGhlbnRpY2F0aW9uX3JlcXVlc3QsIHdpbmRvdyk7Ci0gICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJkb3dubG9hZCxmYWlsZWQi
LCBvbl9kb3dubG9hZF9mYWlsZWQsIHdpbmRvdyk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJkb3dubG9hZCxmaW5pc2hlZCIsIG9uX2Rvd25s
b2FkX2ZpbmlzaGVkLCB3aW5kb3cpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Fk
ZCh3aW5kb3ctPmV3a192aWV3LCAiZG93bmxvYWQscmVxdWVzdCIsIG9uX2Rvd25sb2FkX3JlcXVl
c3QsIHdpbmRvdyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+
ZXdrX3ZpZXcsICJmaWxlLGNob29zZXIscmVxdWVzdCIsIG9uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0
LCB3aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3
a192aWV3LCAibG9hZCxlcnJvciIsIG9uX2Vycm9yLCB3aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0
X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAibG9hZCxwcm92aXNpb25hbCxm
YWlsZWQiLCBvbl9lcnJvciwgd2luZG93KTsKQEAgLTI0MjgsNiArMjQyNCw5IEBAIGVsbV9tYWlu
KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgaWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVy
biBxdWl0KEVJTkFfRkFMU0UsICJDb3VsZCBub3QgY3JlYXRlIGJyb3dzZXIgd2luZG93LiIpOwog
CisgICAgLy8gU2V0IGNhbGxiYWNrcyBmb3IgZG93bmxvYWQgZXZlbnRzLgorICAgIGV3a19jb250
ZXh0X2Rvd25sb2FkX2NhbGxiYWNrc19zZXQoY29udGV4dCwgb25fZG93bmxvYWRfcmVxdWVzdCwg
b25fZG93bmxvYWRfZmFpbGVkLCAwLCBvbl9kb3dubG9hZF9maW5pc2hlZCwgd2luZG93KTsKKwog
ICAgIGlmIChhcmdzIDwgYXJnYykgewogICAgICAgICBjaGFyICp1cmwgPSB1cmxfZnJvbV91c2Vy
X2lucHV0KGFyZ3ZbYXJnc10pOwogICAgICAgICBld2tfdmlld191cmxfc2V0KHdpbmRvdy0+ZXdr
X3ZpZXcsIHVybCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247943</attachid>
            <date>2015-03-05 04:14:16 -0800</date>
            <delta_ts>2015-03-05 04:46:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131162-20150305131356.patch</filename>
            <type>text/plain</type>
            <size>30792</size>
            <attacher name="Lukasz Bialek">l.bialek</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWRiNmI5YTgwM2EyZTU2
OWYyMjIyNGU5OGVlNzZlZTBhMDNhMGMxMS4uZWRmM2YxZGNjYTFiMjRkNjE0ZjE1YzM5NjA2Nzdi
ZThmNGJiMDE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE1LTAyLTA5ICBMdWth
c3ogQmlhbGVrICA8bC5iaWFsZWtAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBD
cmFzaCB3aGVuICJEb3dubG9hZCBMaW5rZWQgRmlsZSIgZnJvbSBNaW5pQnJvd3NlciBjb250ZXh0
IG1lbnUgaXMgY2xpY2tlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMxMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgIkRvd25sb2FkIExpbmtlZCBGaWxlIiBjcmFzaGVzIGJlY2F1c2Ugb2YgbnVsbC1w
b2ludGVyIGV4Y2VwdGlvbiBvZiBEb3dubG9hZCBKb2IuCisgICAgICAgIER1ZSB0byBhcmNoaXRl
Y3R1cmFsIGRpZmZpY3VsdGllcywgZWFzeSBmaXggaXMgbm90IHBvc3NpYmxlIChFd2tWaWV3IGlz
IG5lZWRlZCBpbgorICAgICAgICBEb3dubG9hZE1hbmFnZXIgdG8gY3JlYXRlIERvd25sb2FkSm9i
cyBhbmQgaXQgaXMgb25seSB1c2VkIHRvIG5vdGlmeSB0aGUgY2xpZW50IAorICAgICAgICBhYm91
dCBkb3dubG9hZCAoZmluaXNoZWQsIGVycm9yLCBjYW5jZWwpIHZpYSBzbWFydCBjYWxsYmFjayB1
c2luZyBFd2tWaWV3IChFdmFzX09iamVjdCkuCisKKyAgICAgICAgUHJvcG9zZSBhIG5ldyBjYWxs
YmFja3Mgd2hpY2ggYXJlIHZpZXcgaW5kZXBlbmRlbnQgYW5kIGRldGFjaCBFRkwncyBEb3dubG9h
ZE1hbmFnZXIKKyAgICAgICAgZnJvbSBFd2tWaWV3LiBJdCBtYWtlcyBEb3dubG9hZE1hbmFnZXJF
RkwgY29uc2lzdGVudCB3aXRoIFdLQ29udGV4dERvd25sb2FkLgorICAgICAgICBGaXggdGhlIGNy
YXNoIGFuZCByZXN0b3JlIGRvd25sb2FkIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgRW5hYmxlIG5ld2x5IHJlaW1wbGVtZW50ZWQgdGVzdHMK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmg6CisgICAgICAg
IFJlbW92ZSBvbGQgY2FsbGJhY2sgbWVjaGFuaXNtCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAgICAoZXdrX2NvbnRleHRfZG93bmxvYWRfY2FsbGJh
Y2tzX3NldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaDoKKyAg
ICAgICAgRGVjbGFyZSBuZXcgY2FsbGJhY2sgZnVuY3Rpb25zIGFuZCByZWdpc3RyYXRpb24gZnVu
Y3Rpb25zCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHA6
CisgICAgICAgIChFd2tEb3dubG9hZEpvYjo6RXdrRG93bmxvYWRKb2IpOgorICAgICAgICAoRXdr
RG93bmxvYWRKb2I6OnZpZXcpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19kb3dubG9hZF9qb2IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93
bmxvYWRfam9iX3ByaXZhdGUuaDoKKyAgICAgICAgKEV3a0Rvd25sb2FkSm9iOjpjcmVhdGUpOgor
ICAgICAgICBSZW1vdmUgRXdrVmlldyBkZXBlbmRlbmN5CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0
X2V3azJfZG93bmxvYWRfam9iLmNwcDoKKyAgICAgICAgQWx0ZXIgdGVzdHMgdG8gbmV3IGNhbGxi
YWNrIG1lY2hhbmlzbQorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyRWZsOjpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFu
YWdlckVmbDo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmw6
OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmw6OmRpZENhbmNl
bCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbDo6ZGlkRmluaXNoKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyRWZsOjpEb3dubG9hZE1hbmFnZXJFZmwpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmw6OnJlZ2lzdGVyRG93bmxvYWRKb2Ip
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmw6OnNldENhbGxiYWNrcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3RWZs
OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgorICAgICAgICBBZGQgc3VwcG9ydCBvZiBuZXcgY2Fs
bGJhY2sgbWVjaGFuaXNtCisKIDIwMTUtMDItMDggIFRpbW90aHkgSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE51bGwgZGVyZWYgaW4gX2NsZWFySW1tZWRpYXRl
QWN0aW9uU3RhdGUgd2hlbiBjbG9zaW5nIGEgdmlldyB3aXRoIGEgRGF0YURldGVjdG9ycyBwb3Bv
dmVyIG9wZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZGEyNjUzNmFjYzZhMzdmYjJj
OWQzMmVlNWEwODg5NzJjOWQyMDM0ZS4uYmEwZmNjMmQzYjcwNThmMzZkNGQ2YjA4MTM5ZDVjMjcx
NGEyYmViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysr
IGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTUwOCw2ICs1MDgsNyBAQCBz
ZXQoRVdLMlVuaXRUZXN0c19CSU5BUklFUwogICAgIHRlc3RfZXdrMl9jb250ZXh0X2hpc3Rvcnlf
Y2FsbGJhY2tzCiAgICAgdGVzdF9ld2syX2Nvb2tpZV9tYW5hZ2VyCiAgICAgdGVzdF9ld2syX2Rh
dGFiYXNlX21hbmFnZXIKKyAgICB0ZXN0X2V3azJfZG93bmxvYWRfam9iCiAgICAgdGVzdF9ld2sy
X2VpbmFfc2hhcmVkX3N0cmluZwogICAgIHRlc3RfZXdrMl9mYXZpY29uX2RhdGFiYXNlCiAgICAg
dGVzdF9ld2syX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0CkBAIC01MjUsNyArNTI2LDYgQEAgc2V0KEVX
SzJVbml0VGVzdHNfQklOQVJJRVMKICMKICMgd2Via2l0Lm9yZy9iLzEwNzQyMjogdGVzdF9ld2sy
X2F1dGhfcmVxdWVzdAogIyB3ZWJraXQub3JnL2IvMTMyOTgwOiB0ZXN0X2V3azJfY29udGV4dF9t
ZW51Ci0jIHdlYmtpdC5vcmcvYi8xMzI5ODE6IHRlc3RfZXdrMl9kb3dubG9hZF9qb2IKICMgd2Vi
a2l0Lm9yZy9iLzE0MTI0OTogdGVzdF9ld2syX3N0b3JhZ2VfbWFuYWdlcgogCiBpZiAoRU5BQkxF
X0FQSV9URVNUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3
a1ZpZXdDYWxsYmFja3MuaAppbmRleCAzN2VhNjJmOWZlNGEwZmFkZjY4NTJjMDkwODgyZmQ4ZWI5
NzU2OTg3Li45OGViMDMxMDQ4ZjlmMjA3NWM0NjE4NDYxYjM1MjllYWNlNTZlOGRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5o
CkBAIC00OCwxMCArNDgsNiBAQCBlbnVtIENhbGxiYWNrVHlwZSB7CiAgICAgQmFja0ZvcndhcmRM
aXN0Q2hhbmdlLAogICAgIENhbmNlbFZpYnJhdGlvbiwKICAgICBDb250ZW50c1NpemVDaGFuZ2Vk
LAotICAgIERvd25sb2FkSm9iQ2FuY2VsbGVkLAotICAgIERvd25sb2FkSm9iRmFpbGVkLAotICAg
IERvd25sb2FkSm9iRmluaXNoZWQsCi0gICAgRG93bmxvYWRKb2JSZXF1ZXN0ZWQsCiAgICAgRmls
ZUNob29zZXJSZXF1ZXN0LAogICAgIEZvY3VzTm90Rm91bmQsCiAgICAgTmV3Rm9ybVN1Ym1pc3Np
b25SZXF1ZXN0LApAQCAtMTc2LDEwICsxNzIsNiBAQCBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNL
KEF1dGhlbnRpY2F0aW9uUmVxdWVzdCwgImF1dGhlbnRpY2F0aW9uLHJlcXVlc3QiLCBFd2tfQQog
REVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhCYWNrRm9yd2FyZExpc3RDaGFuZ2UsICJiYWNrLGZv
cndhcmQsbGlzdCxjaGFuZ2VkIiwgdm9pZCk7CiBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKENh
bmNlbFZpYnJhdGlvbiwgImNhbmNlbCx2aWJyYXRpb24iLCB2b2lkKTsKIERFQ0xBUkVfRVdLX1ZJ
RVdfQ0FMTEJBQ0soQ29udGVudHNTaXplQ2hhbmdlZCwgImNvbnRlbnRzLHNpemUsY2hhbmdlZCIs
IEV3a19DU1NfU2l6ZSopOwotREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhEb3dubG9hZEpvYkNh
bmNlbGxlZCwgImRvd25sb2FkLGNhbmNlbGxlZCIsIEV3a19Eb3dubG9hZF9Kb2IqKTsKLURFQ0xB
UkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRG93bmxvYWRKb2JGYWlsZWQsICJkb3dubG9hZCxmYWlsZWQi
LCBFd2tfRG93bmxvYWRfSm9iX0Vycm9yKik7Ci1ERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKERv
d25sb2FkSm9iRmluaXNoZWQsICJkb3dubG9hZCxmaW5pc2hlZCIsIEV3a19Eb3dubG9hZF9Kb2Iq
KTsKLURFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRG93bmxvYWRKb2JSZXF1ZXN0ZWQsICJkb3du
bG9hZCxyZXF1ZXN0IiwgRXdrX0Rvd25sb2FkX0pvYiopOwogREVDTEFSRV9FV0tfVklFV19DQUxM
QkFDSyhGaWxlQ2hvb3NlclJlcXVlc3QsICJmaWxlLGNob29zZXIscmVxdWVzdCIsIEV3a19GaWxl
X0Nob29zZXJfUmVxdWVzdCopOwogREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhGb2N1c05vdEZv
dW5kLCAiZm9jdXMsbm90Zm91bmQiLCBFd2tfRm9jdXNfRGlyZWN0aW9uKTsKIERFQ0xBUkVfRVdL
X1ZJRVdfQ0FMTEJBQ0soTmV3Rm9ybVN1Ym1pc3Npb25SZXF1ZXN0LCAiZm9ybSxzdWJtaXNzaW9u
LHJlcXVlc3QiLCBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3QqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcAppbmRleCA5NTJiMzNlYmM0
Nzk1ODE4OWRhM2NiZDVkNTkzZmEyMjNkMmIxYTNmLi40YmM4Yjk2MDJkY2UyMjA2NWQ4MWJkNjIx
NDJiNDA4ZGY1NDA0M2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHQuY3BwCkBAIC00OTcsNiArNDk3LDEzIEBAIHZvaWQgZXdrX2NvbnRleHRf
aGlzdG9yeV9jYWxsYmFja3Nfc2V0KEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBFd2tfSGlzdG9y
eV9OYXZpCiAgICAgaW1wbC0+aGlzdG9yeUNsaWVudCgpLT5zZXRDYWxsYmFja3MobmF2aWdhdGUs
IGNsaWVudFJlZGlyZWN0LCBzZXJ2ZXJSZWRpcmVjdCwgdGl0bGVVcGRhdGUsIHBvcHVsYXRlVmlz
aXRlZExpbmtzLCBkYXRhKTsKIH0KIAordm9pZCBld2tfY29udGV4dF9kb3dubG9hZF9jYWxsYmFj
a3Nfc2V0KEV3a19Db250ZXh0KiBld2tDb250ZXh0LCBFd2tfRG93bmxvYWRfUmVxdWVzdGVkX0Ni
IHJlcXVlc3RlZCwgRXdrX0Rvd25sb2FkX0ZhaWxlZF9DYiBmYWlsZWQsIEV3a19Eb3dubG9hZF9D
YW5jZWxsZWRfQ2IgY2FuY2VsbGVkLCAgRXdrX0Rvd25sb2FkX0ZpbmlzaGVkX0NiIGZpbmlzaGVk
LCB2b2lkKiBkYXRhKQoreworICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKEV3a0NvbnRl
eHQsIGV3a0NvbnRleHQsIGltcGwpOworCisgICAgaW1wbC0+ZG93bmxvYWRNYW5hZ2VyKCktPnNl
dENsaWVudENhbGxiYWNrcyhyZXF1ZXN0ZWQsIGZhaWxlZCwgY2FuY2VsbGVkLCBmaW5pc2hlZCwg
ZGF0YSk7Cit9CisKIHZvaWQgZXdrX2NvbnRleHRfdmlzaXRlZF9saW5rX2FkZChFd2tfQ29udGV4
dCogZXdrQ29udGV4dCwgY29uc3QgY2hhciogdmlzaXRlZFVSTCkKIHsKICAgICBFV0tfT0JKX0dF
VF9JTVBMX09SX1JFVFVSTihFd2tDb250ZXh0LCBld2tDb250ZXh0LCBpbXBsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCmluZGV4IDhjMzhiN2Q3
NmI2NjQ3ZmEyNmFjY2MyOTIzMjIyNjMyNWQ1MzBiNGMuLmNkYWYxNzJiZTBhZDFlMTcyNDA5NGEw
NmZkNjBmNThlZDc0Y2FhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHQuaApAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUgImV3a19hcHBsaWNh
dGlvbl9jYWNoZV9tYW5hZ2VyLmgiCiAjaW5jbHVkZSAiZXdrX2Nvb2tpZV9tYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiZXdrX2RhdGFiYXNlX21hbmFnZXIuaCIKKyNpbmNsdWRlICJld2tfZG93bmxvYWRf
am9iLmgiCisjaW5jbHVkZSAiZXdrX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmljb25fZGF0
YWJhc2UuaCIKICNpbmNsdWRlICJld2tfbmF2aWdhdGlvbl9kYXRhLmgiCiAjaW5jbHVkZSAiZXdr
X3N0b3JhZ2VfbWFuYWdlci5oIgpAQCAtNTAsNiArNTIsMTcgQEAKIGV4dGVybiAiQyIgewogI2Vu
ZGlmCiAKKy8vLyBDcmVhdGVzIGEgdHlwZSBuYW1lIGZvciBFd2tfRG93bmxvYWRfSm9iX0Vycm9y
LgordHlwZWRlZiBzdHJ1Y3QgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciBFd2tfRG93bmxvYWRfSm9i
X0Vycm9yOworCisvKioKKyAqIEBicmllZiBTdHJ1Y3R1cmUgY29udGFpbmluZyBkZXRhaWxzIGFi
b3V0IGEgZG93bmxvYWQgZmFpbHVyZS4KKyAqLworc3RydWN0IEV3a19Eb3dubG9hZF9Kb2JfRXJy
b3IgeworICAgIEV3a19Eb3dubG9hZF9Kb2IgKmRvd25sb2FkX2pvYjsgLyoqPCBkb3dubG9hZCB0
aGF0IGZhaWxlZCAqLworICAgIEV3a19FcnJvciAqZXJyb3I7IC8qKjwgZG93bmxvYWQgZXJyb3Ig
Ki8KK307CisKIC8qKgogICogRGVjbGFyZSBFd2tfQ29udGV4dCBhcyBFd2tfT2JqZWN0LgogICoK
QEAgLTEzMSw2ICsxNDQsMzAgQEAgdHlwZWRlZiB2b2lkICgqRXdrX0hpc3RvcnlfU2VydmVyX1Jl
ZGlyZWN0aW9uX0NiKShjb25zdCBFdmFzX09iamVjdCAqdmlldywgY29uc3QKIHR5cGVkZWYgdm9p
ZCAoKkV3a19IaXN0b3J5X1RpdGxlX1VwZGF0ZV9DYikoY29uc3QgRXZhc19PYmplY3QgKnZpZXcs
IGNvbnN0IGNoYXIgKnRpdGxlLCBjb25zdCBjaGFyICp1cmwsIHZvaWQgKnVzZXJfZGF0YSk7CiAK
IC8qKgorICogQHR5cGVkZWYgRXdrX0Rvd25sb2FkX1JlcXVlc3RlZF9DYiBFd2tfRG93bmxvYWRf
UmVxdWVzdGVkX0NiCisgKiBAYnJpZWYgVHlwZSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uIHRo
YXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIG5ldyBkb3dubG9hZCBqb2IgaXMgcmVxdWVzdGVk
LgorICovCit0eXBlZGVmIHZvaWQgKCpFd2tfRG93bmxvYWRfUmVxdWVzdGVkX0NiKShFd2tfRG93
bmxvYWRfSm9iICpkb3dubG9hZCwgdm9pZCAqdXNlcl9kYXRhKTsKKworLyoqCisgKiBAdHlwZWRl
ZiBFd2tfRG93bmxvYWRfRmFpbGVkX0NiIEV3a19Eb3dubG9hZF9GYWlsZWRfQ2IKKyAqIEBicmll
ZiBUeXBlIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBiYWNr
IHdoZW4gYSBkb3dubG9hZCBqb2IgaGFzIGZhaWxlZC4KKyAqLwordHlwZWRlZiB2b2lkICgqRXdr
X0Rvd25sb2FkX0ZhaWxlZF9DYikoRXdrX0Rvd25sb2FkX0pvYl9FcnJvciAqZXJyb3IsIHZvaWQg
KnVzZXJfZGF0YSk7CisKKy8qKgorICogQHR5cGVkZWYgRXdrX0Rvd25sb2FkX0NhbmNlbGxlZF9D
YiBFd2tfRG93bmxvYWRfQ2FuY2VsbGVkX0NiCisgKiBAYnJpZWYgVHlwZSBkZWZpbml0aW9uIGZv
ciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIGEgZG93bmxvYWQgam9i
IGlzIGNhbmNlbGxlZC4KKyAqLwordHlwZWRlZiB2b2lkICgqRXdrX0Rvd25sb2FkX0NhbmNlbGxl
ZF9DYikoRXdrX0Rvd25sb2FkX0pvYiAqZG93bmxvYWQsIHZvaWQgKnVzZXJfZGF0YSk7CisKKy8q
KgorICogQHR5cGVkZWYgRXdrX0Rvd25sb2FkX0ZpbmlzaGVkX0NiIEV3a19Eb3dubG9hZF9GaW5p
c2hlZF9DYgorICogQGJyaWVmIFR5cGUgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvbiB0aGF0IHdp
bGwgYmUgY2FsbGVkIGJhY2sgd2hlbiBhIGRvd25sb2FkIGpvYiBpcyBmaW5pc2hlZC4KKyAqLwor
dHlwZWRlZiB2b2lkICgqRXdrX0Rvd25sb2FkX0ZpbmlzaGVkX0NiKShFd2tfRG93bmxvYWRfSm9i
ICpkb3dubG9hZCwgdm9pZCAqdXNlcl9kYXRhKTsKKworLyoqCiAgKiBAdHlwZWRlZiBFd2tfQ29u
dGV4dF9IaXN0b3J5X0NsaWVudF9WaXNpdGVkX0xpbmtzX1BvcHVsYXRlX0NiIEV3a19Db250ZXh0
X0hpc3RvcnlfQ2xpZW50X1Zpc2l0ZWRfTGlua3NfUG9wdWxhdGVfQ2IKICAqIEBicmllZiBUeXBl
IGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBiYWNrIHdoZW4g
Y2xpZW50IGlzIGFza2VkIHRvIHByb3ZpZGUgdmlzaXRlZCBsaW5rcyBmcm9tIGEgY2xpZW50LW1h
bmFnZWQgc3RvcmFnZS4KICAqCkBAIC0zMTcsNiArMzU0LDI2IEBAIEVBUEkgdm9pZCBld2tfY29u
dGV4dF9oaXN0b3J5X2NhbGxiYWNrc19zZXQoRXdrX0NvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpOwogCiAvKioK
KyAqIFNldHMgZG93bmxvYWQgY2FsbGJhY2tzIGZvciB0aGUgZ2l2ZW4gQGEgY29udGV4dC4KKyAq
CisgKiBUbyBzdG9wIGxpc3RlbmluZyBmb3IgZG93bmxvYWQgZXZlbnRzLCB5b3UgbWF5IGNhbGwg
dGhpcyBmdW5jdGlvbiB3aXRoIEBjCisgKiBOVUxMIGZvciB0aGUgY2FsbGJhY2tzLgorICoKKyAq
IEBwYXJhbSBjb250ZXh0IGNvbnRleHQgb2JqZWN0IHRvIHNldCBkb3dubG9hZCBjYWxsYmFja3MK
KyAqIEBwYXJhbSBkb3dubG9hZF9yZXF1ZXN0ZWRfZnVuYyB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3
aGVuIG5ldyBkb3dubG9hZCBpcyByZXF1ZXN0ZWQgKG1heSBiZSBAYyBOVUxMKS4KKyAqIEBwYXJh
bSBkb3dubG9hZF9mYWlsZWRfZnVuYyB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIGEgZG93bmxv
YWQgam9iIGhhcyBmYWlsZWQgKG1heSBiZSBAYyBOVUxMKS4KKyAqIEBwYXJhbSBkb3dubG9hZF9j
YW5jZWxsZWRfZnVuYyB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIGEgZG93bmxvYWQgam9iIGlz
IGNhbmNlbGxlZCAobWF5IGJlIEBjIE5VTEwpLgorICogQHBhcmFtIGRvd25sb2FkX2ZpbmlzaGVk
X2Z1bmMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBhIGRvd25sb2FkIGpvYiBpcyBmaW5pc2hl
ZCAobWF5IGJlIEBjIE5VTEwpLgorICogQHBhcmFtIGRhdGEgVXNlciBkYXRhIChtYXkgYmUgQGMg
TlVMTCkuCisgKi8KK0VBUEkgdm9pZCBld2tfY29udGV4dF9kb3dubG9hZF9jYWxsYmFja3Nfc2V0
KEV3a19Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRXdrX0Rvd25sb2FkX1JlcXVlc3RlZF9DYiBkb3dubG9hZF9yZXF1ZXN0ZWRf
ZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV3a19E
b3dubG9hZF9GYWlsZWRfQ2IgZG93bmxvYWRfZmFpbGVkX2Z1bmMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFd2tfRG93bmxvYWRfQ2FuY2VsbGVkX0NiIGRv
d25sb2FkX2NhbmNlbGxlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRXdrX0Rvd25sb2FkX0ZpbmlzaGVkX0NiIGRvd25sb2FkX2ZpbmlzaGVkX2Z1
bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBk
YXRhKTsKKworLyoqCiAgKiBSZWdpc3RlcnMgdGhlIGdpdmVuIEBhIHZpc2l0ZWRfdXJsIGFzIHZp
c2l0ZWQgbGluayBpbiBAYSBjb250ZXh0IHZpc2l0ZWQgbGluayBjYWNoZS4KICAqCiAgKiBUaGlz
IGZ1bmN0aW9uIHNoYWxsIGJlIGludm9rZWQgYXMgYSByZXNwb25zZSB0byBAYyBwb3B1bGF0ZVZp
c2l0ZWRMaW5rcyBjYWxsYmFjayBvZiB0aGUgaGlzdG9yeSBjaWVudC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAKaW5kZXgg
NTUwYzBlMGY3MzhjZWQ5MTliYzQ4ZjMzMTVlY2NmNzA5Y2Y2NzUzZS4uZTBmMmY2OWEyNTY4ZGRj
ZTA1MTk5MDQ4YzM4NDFjMjRjZmE5YjY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5jcHAKQEAgLTM2LDkgKzM2LDggQEAK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotRXdrRG93bmxvYWRKb2I6OkV3a0Rvd25sb2Fk
Sm9iKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIEV3a1ZpZXcqIHZpZXdJbXBsKQorRXdrRG93bmxv
YWRKb2I6OkV3a0Rvd25sb2FkSm9iKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCiAgICAgOiBtX2Rv
d25sb2FkKGRvd25sb2FkKQotICAgICwgbV92aWV3SW1wbCh2aWV3SW1wbCkKICAgICAsIG1fc3Rh
dGUoRVdLX0RPV05MT0FEX0pPQl9TVEFURV9OT1RfU1RBUlRFRCkKICAgICAsIG1fc3RhcnRUaW1l
KC0xKQogICAgICwgbV9lbmRUaW1lKC0xKQpAQCAtNTQsMTYgKzUzLDYgQEAgdWludDY0X3QgRXdr
RG93bmxvYWRKb2I6OmlkKCkgY29uc3QKICAgICByZXR1cm4gV0tEb3dubG9hZEdldElEKG1fZG93
bmxvYWQuZ2V0KCkpOwogfQogCi0vKioKLSAqIEBpbnRlcm5hbAotICogUmV0dXJucyB0aGUgdmll
dyB0aGlzIGRvd25sb2FkIGlzIGF0dGFjaGVkIHRvLgotICogVGhlIHZpZXcgaXMgbmVlZGVkIHRv
IHNlbmQgbm90aWZpY2F0aW9uIHNpZ25hbHMuCi0gKi8KLUV3a1ZpZXcqIEV3a0Rvd25sb2FkSm9i
Ojp2aWV3KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV92aWV3SW1wbDsKLX0KLQogRXdrX0Rvd25s
b2FkX0pvYl9TdGF0ZSBld2tfZG93bmxvYWRfam9iX3N0YXRlX2dldChjb25zdCBFd2tfRG93bmxv
YWRfSm9iKiBkb3dubG9hZCkKIHsKICAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihjb25z
dCBFd2tEb3dubG9hZEpvYiwgZG93bmxvYWQsIGltcGwsIEVXS19ET1dOTE9BRF9KT0JfU1RBVEVf
VU5LTk9XTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZG93bmxvYWRfam9iLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
ZG93bmxvYWRfam9iLmgKaW5kZXggNjhjZjUwNDEzNjEzMjg1OTEzYTBlOGEyNjIyYjFiMGIwNzQ2
NDY4Yy4uNzBhNjRmMTY3NmQ3OTQyYjk1ZTE1ZTRiYWMyMjg1YmU3YzRjNjU2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuaApA
QCAtMTUxLDggKzE1MSw4IEBAIEVBUEkgY29uc3QgY2hhciAqZXdrX2Rvd25sb2FkX2pvYl9zdWdn
ZXN0ZWRfZmlsZW5hbWVfZ2V0KGNvbnN0IEV3a19Eb3dubG9hZF9Kb2IKIC8qKgogICogQ2FuY2Vs
cyB0aGUgZG93bmxvYWQgYXN5bmNocm9ub3VzbHkuCiAgKgotICogV2hlbiB0aGUgb25nb2luZyBk
b3dubG9hZCBvcGVyYXRpb24gaXMgZWZmZWN0aXZlbHkgY2FuY2VsbGVkIGEgImRvd25sb2FkLGNh
bmNlbGxlZCIKLSAqIHNpZ25hbCB3aWxsIGJlIGVtaXR0ZWQgb24gdGhlIHZpZXcuCisgKiBXaGVu
IHRoZSBvbmdvaW5nIGRvd25sb2FkIG9wZXJhdGlvbiBpcyBlZmZlY3RpdmVseSBjYW5jZWxsZWQs
IGEgIkV3a19Eb3dubG9hZF9DYW5jZWxsZWRfQ2IiCisgKiB3aWxsIGJlIGNhbGxlZCBpbiBEb3du
bG9hZE1hbmFnZXIuCiAgKgogICogQHBhcmFtIGRvd25sb2FkIGEgI0V3a19Eb3dubG9hZF9Kb2Ig
dG8gY2FuY2VsLgogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgKaW5kZXggMGRiZDUyNTU3ZDE5ODE4
ZDFlZDcxZDI5MGMxZDRkMzk5ZDFkYjY2MS4uNjQ0MGU2ZTEyNWI0YmQyN2U4OTQ5NmI4YzNjMzc1
NDA1ODg5OTI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRlLmgKQEAgLTQyLDkgKzQyLDkgQEAgY2xh
c3MgRXdrRG93bmxvYWRKb2IgOiBwdWJsaWMgRXdrT2JqZWN0IHsKIHB1YmxpYzoKICAgICBFV0tf
T0JKRUNUX0RFQ0xBUkUoRXdrRG93bmxvYWRKb2IpCiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxF
d2tEb3dubG9hZEpvYj4gY3JlYXRlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIEV3a1ZpZXcqIHZp
ZXdJbXBsKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a0Rvd25sb2FkSm9iPiBjcmVhdGUoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RXdrRG93bmxvYWRKb2IoZG93bmxvYWQsIHZpZXdJbXBsKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRXdrRG93bmxvYWRKb2IoZG93bmxvYWQpKTsKICAgICB9CiAKICAgICB1aW50NjRf
dCBpZCgpIGNvbnN0OwpAQCAtNzEsMTAgKzcxLDkgQEAgcHVibGljOgogICAgIHVpbnQ2NF90IHJl
Y2VpdmVkRGF0YVNpemUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBFd2tEb3dubG9hZEpvYihX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBFd2tWaWV3KiB2aWV3KTsKKyAgICBleHBsaWNpdCBFd2tE
b3dubG9hZEpvYihXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKIAogICAgIFdLUmV0YWluUHRyPFdL
RG93bmxvYWRSZWY+IG1fZG93bmxvYWQ7Ci0gICAgRXdrVmlldyogbV92aWV3SW1wbDsKICAgICBF
d2tfRG93bmxvYWRfSm9iX1N0YXRlIG1fc3RhdGU7CiAgICAgbXV0YWJsZSBSZWZQdHI8RXdrVXJs
UmVxdWVzdD4gbV9yZXF1ZXN0OwogICAgIFJlZlB0cjxFd2tVcmxSZXNwb25zZT4gbV9yZXNwb25z
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDkw
NWU1NDFmNWNjMmVhMWFhNmM3NDlhMmU3MWJkYTdjZGI0NTBkZmYuLjkzNzNhOTEzN2Y5MDZhOThh
MmQ2NjFiZDc1ZGFiOTY0ZGU1ZDc0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaApAQCAtMzEsMTEgKzMxLDYgQEAKICAqIC0gImJhY2ssZm9yd2FyZCxs
aXN0LGNoYW5nZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgdGhlIHZpZXcncyBiYWNrIC8gZm9yd2Fy
ZCBsaXN0IGhhZCBjaGFuZ2VkLgogICogLSAiY2FuY2VsLHZpYnJhdGlvbiIsIHZvaWQ6IHJlcXVl
c3QgdG8gY2FuY2VsIHRoZSB2aWJyYXRpb24uCiAgKiAtICJjb250ZW50cyxzaXplLGNoYW5nZWQi
LCBFd2tfQ1NTX1NpemUqOiByZXBvcnRzIHRoYXQgY29udGVudHMgc2l6ZSB3YXMgY2hhbmdlZC4K
LSAqIC0gImRvd25sb2FkLGNhbmNlbGxlZCIsIEV3a19Eb3dubG9hZF9Kb2IqOiByZXBvcnRzIHRo
YXQgYSBkb3dubG9hZCB3YXMgZWZmZWN0aXZlbHkgY2FuY2VsbGVkLgotICogLSAiZG93bmxvYWQs
ZmFpbGVkIiwgRXdrX0Rvd25sb2FkX0pvYl9FcnJvcio6IHJlcG9ydHMgdGhhdCBhIGRvd25sb2Fk
IGZhaWxlZCB3aXRoIHRoZSBnaXZlbiBlcnJvci4KLSAqIC0gImRvd25sb2FkLGZpbmlzaGVkIiwg
RXdrX0Rvd25sb2FkX0pvYio6IHJlcG9ydHMgdGhhdCBhIGRvd25sb2FkIGNvbXBsZXRlZCBzdWNj
ZXNzZnVsbHkuCi0gKiAtICJkb3dubG9hZCxyZXF1ZXN0IiwgRXdrX0Rvd25sb2FkX0pvYio6IHJl
cG9ydHMgdGhhdCBhIG5ldyBkb3dubG9hZCBoYXMgYmVlbiByZXF1ZXN0ZWQuIFRoZSBjbGllbnQg
c2hvdWxkIHNldCB0aGUKLSAqICAgZGVzdGluYXRpb24gcGF0aCBieSBjYWxsaW5nIGV3a19kb3du
bG9hZF9qb2JfZGVzdGluYXRpb25fc2V0KCkgb3IgdGhlIGRvd25sb2FkIHdpbGwgZmFpbC4KICAq
IC0gImZpbGUsY2hvb3NlcixyZXF1ZXN0IiwgRXdrX0ZpbGVfQ2hvb3Nlcl9SZXF1ZXN0KjogcmVw
b3J0cyB0aGF0IGEgcmVxdWVzdCBoYXMgYmVlbiBtYWRlIGZvciB0aGUgdXNlciB0byBjaG9vc2UK
ICAqICAgYSBmaWxlIChvciBzZXZlcmFsKSBvbiB0aGUgZmlsZSBzeXN0ZW0uIENhbGwgZXdrX2Zp
bGVfY2hvb3Nlcl9yZXF1ZXN0X3JlZigpIG9uIHRoZSByZXF1ZXN0IG9iamVjdCB0byBwcm9jZXNz
IGl0CiAgKiAgIGFzeW5jaHJvbm91c2x5LgpAQCAtNzksNyArNzQsNiBAQAogI2luY2x1ZGUgImV3
a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2NvbnRleHRfbWVudS5oIgogI2luY2x1ZGUgImV3
a19kb3dubG9hZF9qb2IuaCIKLSNpbmNsdWRlICJld2tfZXJyb3IuaCIKICNpbmNsdWRlICJld2tf
cGFnZV9ncm91cC5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51LmgiCiAjaW5jbHVkZSAiZXdr
X3NlY3VyaXR5X29yaWdpbi5oIgpAQCAtMjQzLDE3ICsyMzcsNiBAQCBzdHJ1Y3QgRXdrX1ZpZXdf
U21hcnRfRGF0YSB7CiAgICAgfSBjaGFuZ2VkOwogfTsKIAotLy8vIENyZWF0ZXMgYSB0eXBlIG5h
bWUgZm9yIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IuCi10eXBlZGVmIHN0cnVjdCBFd2tfRG93bmxv
YWRfSm9iX0Vycm9yIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3I7Ci0KLS8qKgotICogQGJyaWVmIFN0
cnVjdHVyZSBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgYSBkb3dubG9hZCBmYWlsdXJlLgotICov
Ci1zdHJ1Y3QgRXdrX0Rvd25sb2FkX0pvYl9FcnJvciB7Ci0gICAgRXdrX0Rvd25sb2FkX0pvYiAq
ZG93bmxvYWRfam9iOyAvKio8IGRvd25sb2FkIHRoYXQgZmFpbGVkICovCi0gICAgRXdrX0Vycm9y
ICplcnJvcjsgLyoqPCBkb3dubG9hZCBlcnJvciAqLwotfTsKLQogLy8vIENyZWF0ZXMgYSB0eXBl
IG5hbWUgZm9yIEV3a19DU1NfU2l6ZS4KIHR5cGVkZWYgc3RydWN0IEV3a19DU1NfU2l6ZSBFd2tf
Q1NTX1NpemU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25sb2FkX2pvYi5jcHAKaW5kZXggNGJiYzI1
OWNjYjVlNzUzN2M3MGU5Yzc0NzJjMjljMGY0OTQ4NDg4MC4uOTE3MTYwNWUxMGY3ZGRhZjNhMGRl
NWJiM2FjZDYxNjFiZWQ5N2YxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25sb2FkX2pvYi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2Rvd25sb2FkX2pvYi5jcHAK
QEAgLTk2LDcgKzk2LDcgQEAgcHVibGljOgogICAgICAgICBlaW5hX2ZpbGVfY2xvc2UoZik7CiAg
ICAgfQogCi0gICAgc3RhdGljIHZvaWQgb25fZG93bmxvYWRfcmVxdWVzdGVkKHZvaWQqIHVzZXJE
YXRhLCBFdmFzX09iamVjdCogd2Vidmlldywgdm9pZCogZXZlbnRJbmZvKQorICAgIHN0YXRpYyB2
b2lkIG9uX2Rvd25sb2FkX3JlcXVlc3RlZChFd2tPYmplY3QqIGV2ZW50SW5mbywgdm9pZCogdXNl
ckRhdGEpCiAgICAgewogICAgICAgICBEb3dubG9hZFRlc3REYXRhKiB0ZXN0RGF0YSA9IHN0YXRp
Y19jYXN0PERvd25sb2FkVGVzdERhdGEqPih1c2VyRGF0YSk7CiAgICAgICAgIEV3a19Eb3dubG9h
ZF9Kb2IqIGRvd25sb2FkID0gc3RhdGljX2Nhc3Q8RXdrX0Rvd25sb2FkX0pvYio+KGV2ZW50SW5m
byk7CkBAIC0xMjAsMjIgKzEyMCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIEVYUEVDVF9TVFJFUSh0
ZXN0RGF0YS0+ZGVzdGluYXRpb25QYXRoLCBld2tfZG93bmxvYWRfam9iX2Rlc3RpbmF0aW9uX2dl
dChkb3dubG9hZCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIG9uX2Rvd25sb2FkX2NhbmNl
bGxlZCh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqIHdlYnZpZXcsIHZvaWQqIGV2ZW50SW5m
bykKKyAgICBzdGF0aWMgdm9pZCBvbl9kb3dubG9hZF9jYW5jZWxsZWQoRXdrT2JqZWN0KiBldmVu
dEluZm8sIHZvaWQqIHVzZXJEYXRhKQogICAgIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJE
b3dubG9hZCB3YXMgY2FuY2VsbGVkLlxuIik7CiAgICAgICAgIGVjb3JlX21haW5fbG9vcF9xdWl0
KCk7CiAgICAgICAgIEZBSUwoKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBvbl9kb3dubG9h
ZF9mYWlsZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVu
dEluZm8pCisgICAgc3RhdGljIHZvaWQgb25fZG93bmxvYWRfZmFpbGVkKEV3a19Eb3dubG9hZF9K
b2JfRXJyb3IqIGRvd25sb2FkRXJyb3IsIHZvaWQqIHVzZXJEYXRhKQogICAgIHsKLSAgICAgICAg
RXdrX0Rvd25sb2FkX0pvYl9FcnJvciogZG93bmxvYWRFcnJvciA9IHN0YXRpY19jYXN0PEV3a19E
b3dubG9hZF9Kb2JfRXJyb3IqPihldmVudEluZm8pOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IkRvd25sb2FkIGVycm9yOiAlc1xuIiwgZXdrX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChkb3dubG9h
ZEVycm9yLT5lcnJvcikpOwogICAgICAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwogICAgICAg
ICBGQUlMKCk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgb25fZG93bmxvYWRfZmluaXNoZWQo
dm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudEluZm8pCisg
ICAgc3RhdGljIHZvaWQgb25fZG93bmxvYWRfZmluaXNoZWQoRXdrT2JqZWN0KiBldmVudEluZm8s
IHZvaWQqIHVzZXJEYXRhKQogICAgIHsKICAgICAgICAgRG93bmxvYWRUZXN0RGF0YSogdGVzdERh
dGEgPSBzdGF0aWNfY2FzdDxEb3dubG9hZFRlc3REYXRhKj4odXNlckRhdGEpOwogICAgICAgICBF
d2tfRG93bmxvYWRfSm9iKiBkb3dubG9hZCA9IHN0YXRpY19jYXN0PEV3a19Eb3dubG9hZF9Kb2Iq
PihldmVudEluZm8pOwpAQCAtMTY2LDEwICsxNjUsOCBAQCBURVNUX0YoRVdLMkRvd25sb2FkSm9i
VGVzdCwgZXdrX2Rvd25sb2FkKQogICAgIERvd25sb2FkVGVzdERhdGEgdXNlckRhdGEgPSB7IGZp
bGVVcmwuZGF0YSgpLCBkZXN0aW5hdGlvblBhdGggfTsKICAgICBBU1NFUlRfRkFMU0UoZmlsZUV4
aXN0cyhkZXN0aW5hdGlvblBhdGgpKTsKIAotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZCh3ZWJWaWV3KCksICJkb3dubG9hZCxyZXF1ZXN0Iiwgb25fZG93bmxvYWRfcmVxdWVzdGVk
LCAmdXNlckRhdGEpOwotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3ZWJWaWV3
KCksICJkb3dubG9hZCxjYW5jZWwiLCBvbl9kb3dubG9hZF9jYW5jZWxsZWQsICZ1c2VyRGF0YSk7
Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgImRvd25sb2Fk
LGZhaWxlZCIsIG9uX2Rvd25sb2FkX2ZhaWxlZCwgJnVzZXJEYXRhKTsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAiZG93bmxvYWQsZmluaXNoZWQiLCBvbl9k
b3dubG9hZF9maW5pc2hlZCwgJnVzZXJEYXRhKTsKKyAgICBFd2tfQ29udGV4dCogY29udGV4dCA9
IGV3a192aWV3X2NvbnRleHRfZ2V0KHdlYlZpZXcoKSk7CisgICAgZXdrX2NvbnRleHRfZG93bmxv
YWRfY2FsbGJhY2tzX3NldChjb250ZXh0LCBvbl9kb3dubG9hZF9yZXF1ZXN0ZWQsIG9uX2Rvd25s
b2FkX2ZhaWxlZCwgb25fZG93bmxvYWRfY2FuY2VsbGVkLCBvbl9kb3dubG9hZF9maW5pc2hlZCwg
JnVzZXJEYXRhKTsKIAogICAgIC8vIERvd25sb2FkIHRlc3QgcGRmCiAgICAgZXdrX3ZpZXdfdXJs
X3NldCh3ZWJWaWV3KCksIGZpbGVVcmwuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmNwcAppbmRleCA5N2VjMTFlMjk3ZDFl
ODJmZDlmNWYwOWVmMjMwYmQxNWFhOGFhZTlkLi5mZjMyM2Q4YzM0NjlmZjhiZGNhYWJkODczMDdh
ZTU4NDc0OTViNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rv
d25sb2FkTWFuYWdlckVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9E
b3dubG9hZE1hbmFnZXJFZmwuY3BwCkBAIC00NSwxNCArNDUsMTYgQEAgc3RhdGljIGlubGluZSBE
b3dubG9hZE1hbmFnZXJFZmwqIHRvRG93bmxvYWRNYW5hZ2VyRWZsKGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCiAKIFdLU3RyaW5nUmVmIERvd25sb2FkTWFuYWdlckVmbDo6ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIHdrRG93
bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiAvKmFsbG93T3ZlcndyaXRlKi8sIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgRXdrRG93bmxvYWRKb2IqIGRvd25sb2FkID0g
dG9Eb3dubG9hZE1hbmFnZXJFZmwoY2xpZW50SW5mbyktPmV3a0Rvd25sb2FkSm9iKHdrRG93bmxv
YWQpOworICAgIERvd25sb2FkTWFuYWdlckVmbCogZG93bmxvYWRNYW5hZ2VyID0gdG9Eb3dubG9h
ZE1hbmFnZXJFZmwoY2xpZW50SW5mbyk7CisgICAgRXdrRG93bmxvYWRKb2IqIGRvd25sb2FkID0g
ZG93bmxvYWRNYW5hZ2VyLT5ld2tEb3dubG9hZEpvYih3a0Rvd25sb2FkKTsKICAgICBBU1NFUlQo
ZG93bmxvYWQpOwogCiAgICAgZG93bmxvYWQtPnNldFN1Z2dlc3RlZEZpbGVOYW1lKHRvSW1wbChm
aWxlbmFtZSktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgLy8gV2Ugc2VuZCB0aGUg
bmV3IGRvd25sb2FkIHNpZ25hbCBvbiB0aGUgRXdrX1ZpZXcgb25seSBvbmNlIHdlIGhhdmUgcmVj
ZWl2ZWQgdGhlIHJlc3BvbnNlCisgICAgLy8gV2UgY2FsbCBEb3dubG9hZFJlcXVlc3RlZCBjYWxs
YmFjayBvbmx5IG9uY2Ugd2UgaGF2ZSByZWNlaXZlZCB0aGUgcmVzcG9uc2UKICAgICAvLyBhbmQg
dGhlIHN1Z2dlc3RlZCBmaWxlIG5hbWUuCi0gICAgZG93bmxvYWQtPnZpZXcoKS0+c21hcnRDYWxs
YmFjazxEb3dubG9hZEpvYlJlcXVlc3RlZD4oKS5jYWxsKGRvd25sb2FkKTsKKyAgICBpZiAoZG93
bmxvYWRNYW5hZ2VyLT5tX2NsaWVudENhbGxiYWNrcy5tX3JlcXVlc3RlZCkKKyAgICAgICAgZG93
bmxvYWRNYW5hZ2VyLT5tX2NsaWVudENhbGxiYWNrcy5tX3JlcXVlc3RlZChkb3dubG9hZCwgZG93
bmxvYWRNYW5hZ2VyLT5tX2NsaWVudENhbGxiYWNrcy5tX3VzZXJEYXRhKTsKIAogICAgIC8vIERv
d25sb2FkU291cCBleHBlY3RzIHRoZSBkZXN0aW5hdGlvbiB0byBiZSBhIFVSTC4KICAgICBTdHJp
bmcgZGVzdGluYXRpb24gPSBBU0NJSUxpdGVyYWwoImZpbGU6Ly8iKSArIFN0cmluZzo6ZnJvbVVU
RjgoZG93bmxvYWQtPmRlc3RpbmF0aW9uKCkpOwpAQCAtODIsNiArODQsMTIgQEAgdm9pZCBEb3du
bG9hZE1hbmFnZXJFZmw6OmRpZFJlY2VpdmVEYXRhKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJl
ZiB3a0Rvd25sb2FkLAogICAgIGRvd25sb2FkLT5pbmNyZW1lbnRSZWNlaXZlZERhdGEobGVuZ3Ro
KTsKIH0KIAordm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OmRpZFN0YXJ0KFdLQ29udGV4dFJlZiwg
V0tEb3dubG9hZFJlZiB3a0Rvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IERvd25sb2FkTWFuYWdlckVmbCogZG93bmxvYWRNYW5hZ2VyID0gdG9Eb3dubG9hZE1hbmFnZXJF
ZmwoY2xpZW50SW5mbyk7CisgICAgZG93bmxvYWRNYW5hZ2VyLT5yZWdpc3RlckRvd25sb2FkSm9i
KHdrRG93bmxvYWQpOworfQorCiB2b2lkIERvd25sb2FkTWFuYWdlckVmbDo6ZGlkRmFpbChXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYgd2tEb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBEb3dubG9hZE1hbmFnZXJFZmwqIGRvd25sb2Fk
TWFuYWdlciA9IHRvRG93bmxvYWRNYW5hZ2VyRWZsKGNsaWVudEluZm8pOwpAQCAtOTEsNyArOTks
OCBAQCB2b2lkIERvd25sb2FkTWFuYWdlckVmbDo6ZGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYgd2tEb3dubG9hZCwgV0tFcnJvcgogICAgIGF1dG8gZXdrRXJyb3IgPSBzdGQ6Om1h
a2VfdW5pcXVlPEV3a0Vycm9yPihlcnJvcik7CiAgICAgZG93bmxvYWQtPnNldFN0YXRlKEVXS19E
T1dOTE9BRF9KT0JfU1RBVEVfRkFJTEVEKTsKICAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yIGRv
d25sb2FkRXJyb3IgPSB7IGRvd25sb2FkLCBld2tFcnJvci5nZXQoKSB9OwotICAgIGRvd25sb2Fk
LT52aWV3KCktPnNtYXJ0Q2FsbGJhY2s8RG93bmxvYWRKb2JGYWlsZWQ+KCkuY2FsbCgmZG93bmxv
YWRFcnJvcik7CisgICAgaWYgKGRvd25sb2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV9m
YWlsZWQpCisgICAgICAgIGRvd25sb2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV9mYWls
ZWQoJmRvd25sb2FkRXJyb3IsIGRvd25sb2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV91
c2VyRGF0YSk7CiAgICAgZG93bmxvYWRNYW5hZ2VyLT51bnJlZ2lzdGVyRG93bmxvYWRKb2Iod2tE
b3dubG9hZCk7CiB9CiAKQEAgLTEwMiw3ICsxMTEsOCBAQCB2b2lkIERvd25sb2FkTWFuYWdlckVm
bDo6ZGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rvd25sb2FkLCBjb25z
dAogICAgIEFTU0VSVChkb3dubG9hZCk7CiAKICAgICBkb3dubG9hZC0+c2V0U3RhdGUoRVdLX0RP
V05MT0FEX0pPQl9TVEFURV9DQU5DRUxMRUQpOwotICAgIGRvd25sb2FkLT52aWV3KCktPnNtYXJ0
Q2FsbGJhY2s8RG93bmxvYWRKb2JDYW5jZWxsZWQ+KCkuY2FsbChkb3dubG9hZCk7CisgICAgaWYg
KGRvd25sb2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV9jYW5jZWxsZWQpCisgICAgICAg
IGRvd25sb2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV9jYW5jZWxsZWQoZG93bmxvYWQs
IGRvd25sb2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV91c2VyRGF0YSk7CiAgICAgZG93
bmxvYWRNYW5hZ2VyLT51bnJlZ2lzdGVyRG93bmxvYWRKb2Iod2tEb3dubG9hZCk7CiB9CiAKQEAg
LTExMywxMyArMTIzLDE2IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRGaW5pc2goV0tD
b250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQsIGNvbnN0CiAgICAgQVNTRVJUKGRv
d25sb2FkKTsKIAogICAgIGRvd25sb2FkLT5zZXRTdGF0ZShFV0tfRE9XTkxPQURfSk9CX1NUQVRF
X0ZJTklTSEVEKTsKLSAgICBkb3dubG9hZC0+dmlldygpLT5zbWFydENhbGxiYWNrPERvd25sb2Fk
Sm9iRmluaXNoZWQ+KCkuY2FsbChkb3dubG9hZCk7CisgICAgaWYgKGRvd25sb2FkTWFuYWdlci0+
bV9jbGllbnRDYWxsYmFja3MubV9maW5pc2hlZCkKKyAgICAgICAgZG93bmxvYWRNYW5hZ2VyLT5t
X2NsaWVudENhbGxiYWNrcy5tX2ZpbmlzaGVkKGRvd25sb2FkLCBkb3dubG9hZE1hbmFnZXItPm1f
Y2xpZW50Q2FsbGJhY2tzLm1fdXNlckRhdGEpOwogICAgIGRvd25sb2FkTWFuYWdlci0+dW5yZWdp
c3RlckRvd25sb2FkSm9iKHdrRG93bmxvYWQpOwogfQogCiBEb3dubG9hZE1hbmFnZXJFZmw6OkRv
d25sb2FkTWFuYWdlckVmbChXS0NvbnRleHRSZWYgY29udGV4dCkKICAgICA6IG1fY29udGV4dChj
b250ZXh0KQogeworICAgIG1lbXNldCgmbV9jbGllbnRDYWxsYmFja3MsIDAsIHNpemVvZihDbGll
bnREb3dubG9hZENhbGxiYWNrcykpOworCiAgICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCB3
a0Rvd25sb2FkQ2xpZW50OwogICAgIG1lbXNldCgmd2tEb3dubG9hZENsaWVudCwgMCwgc2l6ZW9m
KFdLQ29udGV4dERvd25sb2FkQ2xpZW50KSk7CiAKQEAgLTEzMCw2ICsxNDMsNyBAQCBEb3dubG9h
ZE1hbmFnZXJFZmw6OkRvd25sb2FkTWFuYWdlckVmbChXS0NvbnRleHRSZWYgY29udGV4dCkKICAg
ICB3a0Rvd25sb2FkQ2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uID0gZGlkQ3JlYXRlRGVzdGlu
YXRpb247CiAgICAgd2tEb3dubG9hZENsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBkaWRSZWNl
aXZlUmVzcG9uc2U7CiAgICAgd2tEb3dubG9hZENsaWVudC5kaWRSZWNlaXZlRGF0YSA9IGRpZFJl
Y2VpdmVEYXRhOworICAgIHdrRG93bmxvYWRDbGllbnQuZGlkU3RhcnQgPSBkaWRTdGFydDsKICAg
ICB3a0Rvd25sb2FkQ2xpZW50LmRpZEZhaWwgPSBkaWRGYWlsOwogICAgIHdrRG93bmxvYWRDbGll
bnQuZGlkRmluaXNoID0gZGlkRmluaXNoOwogCkBAIC0xNDEsMTMgKzE1NSwxMyBAQCBEb3dubG9h
ZE1hbmFnZXJFZmw6On5Eb3dubG9hZE1hbmFnZXJFZmwoKQogICAgIFdLQ29udGV4dFNldERvd25s
b2FkQ2xpZW50KG1fY29udGV4dC5nZXQoKSwgMCk7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2Vy
RWZsOjpyZWdpc3RlckRvd25sb2FkSm9iKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIEV3a1ZpZXcq
IHZpZXdJbXBsKQordm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OnJlZ2lzdGVyRG93bmxvYWRKb2Io
V0tEb3dubG9hZFJlZiBkb3dubG9hZCkKIHsKICAgICB1aW50NjRfdCBkb3dubG9hZElkID0gV0tE
b3dubG9hZEdldElEKGRvd25sb2FkKTsKICAgICBpZiAobV9kb3dubG9hZEpvYnMuY29udGFpbnMo
ZG93bmxvYWRJZCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxFd2tEb3dubG9hZEpv
Yj4gZXdrRG93bmxvYWQgPSBFd2tEb3dubG9hZEpvYjo6Y3JlYXRlKGRvd25sb2FkLCB2aWV3SW1w
bCk7CisgICAgUmVmUHRyPEV3a0Rvd25sb2FkSm9iPiBld2tEb3dubG9hZCA9IEV3a0Rvd25sb2Fk
Sm9iOjpjcmVhdGUoZG93bmxvYWQpOwogICAgIG1fZG93bmxvYWRKb2JzLmFkZChkb3dubG9hZElk
LCBld2tEb3dubG9hZCk7CiB9CiAKQEAgLTE2MSw0ICsxNzUsMTMgQEAgdm9pZCBEb3dubG9hZE1h
bmFnZXJFZmw6OnVucmVnaXN0ZXJEb3dubG9hZEpvYihXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQp
CiAgICAgbV9kb3dubG9hZEpvYnMucmVtb3ZlKFdLRG93bmxvYWRHZXRJRCh3a0Rvd25sb2FkKSk7
CiB9CiAKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpzZXRDbGllbnRDYWxsYmFja3MoRXdrX0Rv
d25sb2FkX1JlcXVlc3RlZF9DYiByZXF1ZXN0ZWQsIEV3a19Eb3dubG9hZF9GYWlsZWRfQ2IgZmFp
bGVkLCBFd2tfRG93bmxvYWRfQ2FuY2VsbGVkX0NiIGNhbmNlbGxlZCwgIEV3a19Eb3dubG9hZF9G
aW5pc2hlZF9DYiBmaW5pc2hlZCwgdm9pZCogdXNlckRhdGEpCit7CisgICAgbV9jbGllbnRDYWxs
YmFja3MubV9yZXF1ZXN0ZWQgPSByZXF1ZXN0ZWQ7CisgICAgbV9jbGllbnRDYWxsYmFja3MubV9m
YWlsZWQgPSBmYWlsZWQ7CisgICAgbV9jbGllbnRDYWxsYmFja3MubV9jYW5jZWxsZWQgPSBjYW5j
ZWxsZWQ7CisgICAgbV9jbGllbnRDYWxsYmFja3MubV9maW5pc2hlZCA9IGZpbmlzaGVkOworICAg
IG1fY2xpZW50Q2FsbGJhY2tzLm1fdXNlckRhdGEgPSB1c2VyRGF0YTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rv
d25sb2FkTWFuYWdlckVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9h
ZE1hbmFnZXJFZmwuaAppbmRleCAxNDI4ZDNkYzNkOGZiMjcxOTdiYTg4MmM4YzBjOTk1OTE5NGYy
NTI1Li4wN2EwODYxY2U0NDBhNDFkMjAzNmI0YWJmY2Q5Zjg5MWZkY2FmOTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNpZm5kZWYgRG93bmxvYWRNYW5hZ2VyRWZsX2gKICNkZWZpbmUgRG93bmxv
YWRNYW5hZ2VyRWZsX2gKIAorI2luY2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdr
X2Rvd25sb2FkX2pvYl9wcml2YXRlLmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTMzLDEyICszNCwyMSBAQAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorc3RydWN0IENsaWVudERvd25sb2FkQ2FsbGJhY2tzIHsKKyAgICBFd2tf
RG93bmxvYWRfUmVxdWVzdGVkX0NiIG1fcmVxdWVzdGVkOworICAgIEV3a19Eb3dubG9hZF9GYWls
ZWRfQ2IgbV9mYWlsZWQ7CisgICAgRXdrX0Rvd25sb2FkX0NhbmNlbGxlZF9DYiBtX2NhbmNlbGxl
ZDsKKyAgICBFd2tfRG93bmxvYWRfRmluaXNoZWRfQ2IgbV9maW5pc2hlZDsKKyAgICB2b2lkKiBt
X3VzZXJEYXRhOworfTsKKwogY2xhc3MgRG93bmxvYWRNYW5hZ2VyRWZsIHsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBEb3dubG9hZE1hbmFnZXJFZmwoV0tDb250ZXh0UmVmKTsKICAgICB+RG93bmxv
YWRNYW5hZ2VyRWZsKCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRG93bmxvYWRKb2IoV0tEb3dubG9h
ZFJlZiwgRXdrVmlldyopOworICAgIHZvaWQgcmVnaXN0ZXJEb3dubG9hZEpvYihXS0Rvd25sb2Fk
UmVmKTsKKyAgICB2b2lkIHNldENsaWVudENhbGxiYWNrcyhFd2tfRG93bmxvYWRfUmVxdWVzdGVk
X0NiLCBFd2tfRG93bmxvYWRfRmFpbGVkX0NiLCBFd2tfRG93bmxvYWRfQ2FuY2VsbGVkX0NiLCBF
d2tfRG93bmxvYWRfRmluaXNoZWRfQ2IsIHZvaWQqIHVzZXJEYXRhKTsKIAogcHJpdmF0ZToKICAg
ICBFd2tEb3dubG9hZEpvYiogZXdrRG93bmxvYWRKb2IoV0tEb3dubG9hZFJlZik7CkBAIC00OSwx
MSArNTksMTQgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlv
bihXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIHBhdGgsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdLQ29udGV4
dFJlZiwgV0tEb3dubG9hZFJlZiwgdWludDY0X3QgbGVuZ3RoLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJl
ZiwgV0tFcnJvclJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQg
ZGlkU3RhcnQoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2Fk
UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2go
V0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAog
ICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gbV9jb250ZXh0OwogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxFd2tEb3dubG9hZEpvYj4gPiBtX2Rvd25sb2FkSm9iczsKKworICAgIENs
aWVudERvd25sb2FkQ2FsbGJhY2tzIG1fY2xpZW50Q2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YlZpZXdFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNw
cAppbmRleCA1ZWJjMGYxNjgxMzc1YWZhMzgzYWQwM2YzNTkzMjdhMWY4NTFkZDQ5Li42ODBmZDVh
YzlhZTNkNDliMzY4YTY4ZWViYWMwOGZhMzI1Y2IxN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViVmlld0VmbC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFdlYlZp
ZXdFZmw6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKCkKIHZvaWQgV2ViVmlld0VmbDo6aGFuZGxlRG93
bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqIGRvd25sb2FkKQogewogICAgIEV3a0NvbnRleHQq
IGNvbnRleHQgPSBtX2V3a1ZpZXctPmV3a0NvbnRleHQoKTsKLSAgICBjb250ZXh0LT5kb3dubG9h
ZE1hbmFnZXIoKS0+cmVnaXN0ZXJEb3dubG9hZEpvYih0b0FQSShkb3dubG9hZCksIG1fZXdrVmll
dyk7CisgICAgY29udGV4dC0+ZG93bmxvYWRNYW5hZ2VyKCktPnJlZ2lzdGVyRG93bmxvYWRKb2Io
dG9BUEkoZG93bmxvYWQpKTsKIH0KIAogdm9pZCBXZWJWaWV3RWZsOjpzZXRUaGVtZVBhdGgoY29u
c3QgU3RyaW5nJiB0aGVtZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAzZjBlMDc0MDU4ODI2ODIzMmMyZTgxNTFjMDE2NzA1NjM1YTUzMWI5Li4w
YzBkM2YyYjFmMzk4NDdjMWNlNzczYWYzNTJhNDNlNjA0ZTgwMDk2IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUt
MDItMDkgIEx1a2FzeiBCaWFsZWsgIDxsLmJpYWxla0BzYW1zdW5nLmNvbT4KKworICAgICAgICBb
RUZMXVtXSzJdIENyYXNoIHdoZW4gIkRvd25sb2FkIExpbmtlZCBGaWxlIiBmcm9tIE1pbmlCcm93
c2VyIGNvbnRleHQgbWVudSBpcyBjbGlja2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzExNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2VmbC9tYWluLmM6CisgICAgICAgIChv
bl9kb3dubG9hZF9yZXF1ZXN0KToKKyAgICAgICAgKG9uX2Rvd25sb2FkX2ZpbmlzaGVkKToKKyAg
ICAgICAgKG9uX2Rvd25sb2FkX2ZhaWxlZCk6CisgICAgICAgICh3aW5kb3dfY3JlYXRlKToKKyAg
ICAgICAgQWRhcHQgZG93bmxvYWQgY2FsbGJhY2tzIHRvIG5ldyBjYWxsYmFjayBtZWNoYW5pc20K
KwogMjAxNS0wMi0wOCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFYOiBWb2ljZU92ZXIgYXBwZWFycyB1bnJlc3BvbnNpdmUgd2hlbiBKYXZhU2NyaXB0
IGFsZXJ0cyBhcmUgdHJpZ2dlcmVkIHZpYSBmb2N1cyBvciBibHVyIGV2ZW50cwpkaWZmIC0tZ2l0
IGEvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYyBiL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9t
YWluLmMKaW5kZXggZDE1Y2UyYjE3ZGE1NTcxMmUxN2YyY2FhOTQ0NTgwNjMwMWVlYTBjOC4uMmZh
ODVjYzMxYmIyYzc2NjZkMWE5NmFiNDJhZGY1OGZmMGZiZmI4YiAxMDA2NDQKLS0tIGEvVG9vbHMv
TWluaUJyb3dzZXIvZWZsL21haW4uYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5j
CkBAIC03MzIsOSArNzMyLDggQEAgb25fZXJyb3Iodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVj
dCAqZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8pCiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9kb3du
bG9hZF9yZXF1ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lk
ICpldmVudF9pbmZvKQorb25fZG93bmxvYWRfcmVxdWVzdChFd2tfRG93bmxvYWRfSm9iICpkb3du
bG9hZCwgdm9pZCAqdXNlcl9kYXRhKQogewotICAgIEV3a19Eb3dubG9hZF9Kb2IgKmRvd25sb2Fk
ID0gKEV3a19Eb3dubG9hZF9Kb2IgKilldmVudF9pbmZvOwogICAgIEJyb3dzZXJfV2luZG93ICp3
aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAgICBFaW5hX1N0cmJ1ZiAq
ZGVzdGluYXRpb25fcGF0aCA9IGVpbmFfc3RyYnVmX25ldygpOwpAQCAtODQyLDE2ICs4NDEsMTcg
QEAgb25fZmlsZV9jaG9vc2VyX3JlcXVlc3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAq
ZXdrX3ZpZXcsIHZvaWQgKmV2ZW50X2luZm8KIH0KIAogc3RhdGljIHZvaWQKLW9uX2Rvd25sb2Fk
X2ZpbmlzaGVkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lkICpl
dmVudF9pbmZvKQorb25fZG93bmxvYWRfZmluaXNoZWQoRXdrX0Rvd25sb2FkX0pvYiAqZG93bmxv
YWQsIHZvaWQgKnVzZXJfZGF0YSkKIHsKLSAgICBFd2tfRG93bmxvYWRfSm9iICpkb3dubG9hZCA9
IChFd2tfRG93bmxvYWRfSm9iICopZXZlbnRfaW5mbzsKICAgICBJTkZPKCJEb3dubG9hZCBmaW5p
c2hlZDogJXMiLCAgZXdrX2Rvd25sb2FkX2pvYl9kZXN0aW5hdGlvbl9nZXQoZG93bmxvYWQpKTsK
IH0KIAogc3RhdGljIHZvaWQKLW9uX2Rvd25sb2FkX2ZhaWxlZCh2b2lkICp1c2VyX2RhdGEsIEV2
YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKK29uX2Rvd25sb2FkX2ZhaWxl
ZChFd2tfRG93bmxvYWRfSm9iX0Vycm9yICpkb3dubG9hZF9lcnJvciwgdm9pZCAqdXNlcl9kYXRh
KQogewotICAgIElORk8oIkRvd25sb2FkIGZhaWxlZCEiKTsKKyAgICBFd2tfRXJyb3IgKmVycm9y
ID0gZG93bmxvYWRfZXJyb3ItPmVycm9yOworCisgICAgSU5GTygiRG93bmxvYWQgZmFpbGVkISBF
cnJvciBjb2RlOiAlZCwgRXJyb3IgZGVzY3JpcHRpb246ICVzLCBFcnJvciBVUkw6ICVzIiwgZXdr
X2Vycm9yX2NvZGVfZ2V0KGVycm9yKSwgZXdrX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChlcnJvciks
IGV3a19lcnJvcl91cmxfZ2V0KGVycm9yKSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yMjU4LDEx
ICsyMjU4LDcgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV2YXNfT2Jq
ZWN0ICpvcGVuZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICBld2tfc2V0dGluZ3NfcHJl
ZmVycmVkX21pbmltdW1fY29udGVudHNfd2lkdGhfc2V0KHNldHRpbmdzLCAwKTsKICAgICBld2tf
dGV4dF9jaGVja2VyX2NvbnRpbnVvdXNfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZF9zZXQoc3BlbGxf
Y2hlY2tpbmdfZW5hYmxlZCk7CiAgICAgZXdrX3NldHRpbmdzX3dlYl9zZWN1cml0eV9lbmFibGVk
X3NldChzZXR0aW5ncywgd2ViX3NlY3VyaXR5X2VuYWJsZWQpOwotCiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJhdXRoZW50aWNhdGlvbixyZXF1
ZXN0Iiwgb25fYXV0aGVudGljYXRpb25fcmVxdWVzdCwgd2luZG93KTsKLSAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgImRvd25sb2FkLGZhaWxlZCIs
IG9uX2Rvd25sb2FkX2ZhaWxlZCwgd2luZG93KTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19hZGQod2luZG93LT5ld2tfdmlldywgImRvd25sb2FkLGZpbmlzaGVkIiwgb25fZG93bmxv
YWRfZmluaXNoZWQsIHdpbmRvdyk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRk
KHdpbmRvdy0+ZXdrX3ZpZXcsICJkb3dubG9hZCxyZXF1ZXN0Iiwgb25fZG93bmxvYWRfcmVxdWVz
dCwgd2luZG93KTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5l
d2tfdmlldywgImZpbGUsY2hvb3NlcixyZXF1ZXN0Iiwgb25fZmlsZV9jaG9vc2VyX3JlcXVlc3Qs
IHdpbmRvdyk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdr
X3ZpZXcsICJsb2FkLGVycm9yIiwgb25fZXJyb3IsIHdpbmRvdyk7CiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLGZh
aWxlZCIsIG9uX2Vycm9yLCB3aW5kb3cpOwpAQCAtMjQyOCw2ICsyNDI0LDkgQEAgZWxtX21haW4o
aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICBpZiAoIXdpbmRvdykKICAgICAgICAgcmV0dXJu
IHF1aXQoRUlOQV9GQUxTRSwgIkNvdWxkIG5vdCBjcmVhdGUgYnJvd3NlciB3aW5kb3cuIik7CiAK
KyAgICAvLyBTZXQgY2FsbGJhY2tzIGZvciBkb3dubG9hZCBldmVudHMuCisgICAgZXdrX2NvbnRl
eHRfZG93bmxvYWRfY2FsbGJhY2tzX3NldChjb250ZXh0LCBvbl9kb3dubG9hZF9yZXF1ZXN0LCBv
bl9kb3dubG9hZF9mYWlsZWQsIDAsIG9uX2Rvd25sb2FkX2ZpbmlzaGVkLCB3aW5kb3cpOworCiAg
ICAgaWYgKGFyZ3MgPCBhcmdjKSB7CiAgICAgICAgIGNoYXIgKnVybCA9IHVybF9mcm9tX3VzZXJf
aW5wdXQoYXJndlthcmdzXSk7CiAgICAgICAgIGV3a192aWV3X3VybF9zZXQod2luZG93LT5ld2tf
dmlldywgdXJsKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247946</attachid>
            <date>2015-03-05 04:47:11 -0800</date>
            <delta_ts>2015-03-05 06:05:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131162-20150305134650.patch</filename>
            <type>text/plain</type>
            <size>30769</size>
            <attacher name="Lukasz Bialek">l.bialek</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5ODIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWRiNmI5YTgwM2EyZTU2
OWYyMjIyNGU5OGVlNzZlZTBhMDNhMGMxMS4uYTBlYjVlMmM1MWI5YTU5MDQxMTM5ZjZmYWNjNTE3
MDhiOTQ4MzQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE1LTAyLTA5ICBMdWth
c3ogQmlhbGVrICA8bC5iaWFsZWtAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF1bV0syXSBD
cmFzaCB3aGVuICJEb3dubG9hZCBMaW5rZWQgRmlsZSIgZnJvbSBNaW5pQnJvd3NlciBjb250ZXh0
IG1lbnUgaXMgY2xpY2tlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTMxMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR3l1eW91bmcgS2ltLgorCisg
ICAgICAgICJEb3dubG9hZCBMaW5rZWQgRmlsZSIgY3Jhc2hlcyBiZWNhdXNlIG9mIG51bGwtcG9p
bnRlciBleGNlcHRpb24gb2YgRG93bmxvYWQgSm9iLgorICAgICAgICBEdWUgdG8gYXJjaGl0ZWN0
dXJhbCBkaWZmaWN1bHRpZXMsIGVhc3kgZml4IGlzIG5vdCBwb3NzaWJsZSAoRXdrVmlldyBpcyBu
ZWVkZWQgaW4KKyAgICAgICAgRG93bmxvYWRNYW5hZ2VyIHRvIGNyZWF0ZSBEb3dubG9hZEpvYnMg
YW5kIGl0IGlzIG9ubHkgdXNlZCB0byBub3RpZnkgdGhlIGNsaWVudCAKKyAgICAgICAgYWJvdXQg
ZG93bmxvYWQgKGZpbmlzaGVkLCBlcnJvciwgY2FuY2VsKSB2aWEgc21hcnQgY2FsbGJhY2sgdXNp
bmcgRXdrVmlldyAoRXZhc19PYmplY3QpLgorCisgICAgICAgIFByb3Bvc2UgYSBuZXcgY2FsbGJh
Y2tzIHdoaWNoIGFyZSB2aWV3IGluZGVwZW5kZW50IGFuZCBkZXRhY2ggRUZMJ3MgRG93bmxvYWRN
YW5hZ2VyCisgICAgICAgIGZyb20gRXdrVmlldy4gSXQgbWFrZXMgRG93bmxvYWRNYW5hZ2VyRUZM
IGNvbnNpc3RlbnQgd2l0aCBXS0NvbnRleHREb3dubG9hZC4KKyAgICAgICAgRml4IHRoZSBjcmFz
aCBhbmQgcmVzdG9yZSBkb3dubG9hZCBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6CisgICAgICAgIEVuYWJsZSBuZXdseSByZWltcGxlbWVudGVkIHRlc3RzCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oOgorICAgICAgICBS
ZW1vdmUgb2xkIGNhbGxiYWNrIG1lY2hhbmlzbQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAgKGV3a19jb250ZXh0X2Rvd25sb2FkX2NhbGxiYWNr
c19zZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0Lmg6CisgICAg
ICAgIERlY2xhcmUgbmV3IGNhbGxiYWNrIGZ1bmN0aW9ucyBhbmQgcmVnaXN0cmF0aW9uIGZ1bmN0
aW9ucworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuY3BwOgor
ICAgICAgICAoRXdrRG93bmxvYWRKb2I6OkV3a0Rvd25sb2FkSm9iKToKKyAgICAgICAgKEV3a0Rv
d25sb2FkSm9iOjp2aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfZG93bmxvYWRfam9iLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rvd25s
b2FkX2pvYl9wcml2YXRlLmg6CisgICAgICAgIChFd2tEb3dubG9hZEpvYjo6Y3JlYXRlKToKKyAg
ICAgICAgUmVtb3ZlIEV3a1ZpZXcgZGVwZW5kZW5jeQorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX2Rvd25sb2FkX2pvYi5jcHA6CisgICAgICAgIEFsdGVyIHRlc3RzIHRvIG5ldyBjYWxsYmFj
ayBtZWNoYW5pc20KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbDo6ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFn
ZXJFZmw6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyRWZsOjpk
aWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRDYW5jZWwp
OgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmw6OmRpZEZpbmlzaCk6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbDo6RG93bmxvYWRNYW5hZ2VyRWZsKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyRWZsOjpyZWdpc3RlckRvd25sb2FkSm9iKToK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRNYW5hZ2VyRWZsOjpzZXRDYWxsYmFja3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0VmbDo6
aGFuZGxlRG93bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgQWRkIHN1cHBvcnQgb2YgbmV3IGNhbGxi
YWNrIG1lY2hhbmlzbQorCiAyMDE1LTAyLTA4ICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxsIGRlcmVmIGluIF9jbGVhckltbWVkaWF0ZUFj
dGlvblN0YXRlIHdoZW4gY2xvc2luZyBhIHZpZXcgd2l0aCBhIERhdGFEZXRlY3RvcnMgcG9wb3Zl
ciBvcGVuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IGRhMjY1MzZhY2M2YTM3ZmIyYzlk
MzJlZTVhMDg4OTcyYzlkMjAzNGUuLmJhMGZjYzJkM2I3MDU4ZjM2ZDRkNmIwODEzOWQ1YzI3MTRh
MmJlYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC01MDgsNiArNTA4LDcgQEAgc2V0
KEVXSzJVbml0VGVzdHNfQklOQVJJRVMKICAgICB0ZXN0X2V3azJfY29udGV4dF9oaXN0b3J5X2Nh
bGxiYWNrcwogICAgIHRlc3RfZXdrMl9jb29raWVfbWFuYWdlcgogICAgIHRlc3RfZXdrMl9kYXRh
YmFzZV9tYW5hZ2VyCisgICAgdGVzdF9ld2syX2Rvd25sb2FkX2pvYgogICAgIHRlc3RfZXdrMl9l
aW5hX3NoYXJlZF9zdHJpbmcKICAgICB0ZXN0X2V3azJfZmF2aWNvbl9kYXRhYmFzZQogICAgIHRl
c3RfZXdrMl9maWxlX2Nob29zZXJfcmVxdWVzdApAQCAtNTI1LDcgKzUyNiw2IEBAIHNldChFV0sy
VW5pdFRlc3RzX0JJTkFSSUVTCiAjCiAjIHdlYmtpdC5vcmcvYi8xMDc0MjI6IHRlc3RfZXdrMl9h
dXRoX3JlcXVlc3QKICMgd2Via2l0Lm9yZy9iLzEzMjk4MDogdGVzdF9ld2syX2NvbnRleHRfbWVu
dQotIyB3ZWJraXQub3JnL2IvMTMyOTgxOiB0ZXN0X2V3azJfZG93bmxvYWRfam9iCiAjIHdlYmtp
dC5vcmcvYi8xNDEyNDk6IHRlc3RfZXdrMl9zdG9yYWdlX21hbmFnZXIKIAogaWYgKEVOQUJMRV9B
UElfVEVTVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3Q2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3Q2FsbGJhY2tzLmgKaW5kZXggMzdlYTYyZjlmZTRhMGZhZGY2ODUyYzA5MDg4MmZkOGViOTc1
Njk4Ny4uOThlYjAzMTA0OGY5ZjIwNzVjNDYxODQ2MWIzNTI5ZWFjZTU2ZThkZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaApA
QCAtNDgsMTAgKzQ4LDYgQEAgZW51bSBDYWxsYmFja1R5cGUgewogICAgIEJhY2tGb3J3YXJkTGlz
dENoYW5nZSwKICAgICBDYW5jZWxWaWJyYXRpb24sCiAgICAgQ29udGVudHNTaXplQ2hhbmdlZCwK
LSAgICBEb3dubG9hZEpvYkNhbmNlbGxlZCwKLSAgICBEb3dubG9hZEpvYkZhaWxlZCwKLSAgICBE
b3dubG9hZEpvYkZpbmlzaGVkLAotICAgIERvd25sb2FkSm9iUmVxdWVzdGVkLAogICAgIEZpbGVD
aG9vc2VyUmVxdWVzdCwKICAgICBGb2N1c05vdEZvdW5kLAogICAgIE5ld0Zvcm1TdWJtaXNzaW9u
UmVxdWVzdCwKQEAgLTE3NiwxMCArMTcyLDYgQEAgREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhB
dXRoZW50aWNhdGlvblJlcXVlc3QsICJhdXRoZW50aWNhdGlvbixyZXF1ZXN0IiwgRXdrX0EKIERF
Q0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soQmFja0ZvcndhcmRMaXN0Q2hhbmdlLCAiYmFjayxmb3J3
YXJkLGxpc3QsY2hhbmdlZCIsIHZvaWQpOwogREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhDYW5j
ZWxWaWJyYXRpb24sICJjYW5jZWwsdmlicmF0aW9uIiwgdm9pZCk7CiBERUNMQVJFX0VXS19WSUVX
X0NBTExCQUNLKENvbnRlbnRzU2l6ZUNoYW5nZWQsICJjb250ZW50cyxzaXplLGNoYW5nZWQiLCBF
d2tfQ1NTX1NpemUqKTsKLURFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRG93bmxvYWRKb2JDYW5j
ZWxsZWQsICJkb3dubG9hZCxjYW5jZWxsZWQiLCBFd2tfRG93bmxvYWRfSm9iKik7Ci1ERUNMQVJF
X0VXS19WSUVXX0NBTExCQUNLKERvd25sb2FkSm9iRmFpbGVkLCAiZG93bmxvYWQsZmFpbGVkIiwg
RXdrX0Rvd25sb2FkX0pvYl9FcnJvciopOwotREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhEb3du
bG9hZEpvYkZpbmlzaGVkLCAiZG93bmxvYWQsZmluaXNoZWQiLCBFd2tfRG93bmxvYWRfSm9iKik7
Ci1ERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKERvd25sb2FkSm9iUmVxdWVzdGVkLCAiZG93bmxv
YWQscmVxdWVzdCIsIEV3a19Eb3dubG9hZF9Kb2IqKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJB
Q0soRmlsZUNob29zZXJSZXF1ZXN0LCAiZmlsZSxjaG9vc2VyLHJlcXVlc3QiLCBFd2tfRmlsZV9D
aG9vc2VyX1JlcXVlc3QqKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soRm9jdXNOb3RGb3Vu
ZCwgImZvY3VzLG5vdGZvdW5kIiwgRXdrX0ZvY3VzX0RpcmVjdGlvbik7CiBERUNMQVJFX0VXS19W
SUVXX0NBTExCQUNLKE5ld0Zvcm1TdWJtaXNzaW9uUmVxdWVzdCwgImZvcm0sc3VibWlzc2lvbixy
ZXF1ZXN0IiwgRXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0Kik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggOTUyYjMzZWJjNDc5
NTgxODlkYTNjYmQ1ZDU5M2ZhMjIzZDJiMWEzZi4uNGJjOGI5NjAyZGNlMjIwNjVkODFiZDYyMTQy
YjQwOGRmNTQwNDNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcApAQCAtNDk3LDYgKzQ5NywxMyBAQCB2b2lkIGV3a19jb250ZXh0X2hp
c3RvcnlfY2FsbGJhY2tzX3NldChFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgRXdrX0hpc3Rvcnlf
TmF2aQogICAgIGltcGwtPmhpc3RvcnlDbGllbnQoKS0+c2V0Q2FsbGJhY2tzKG5hdmlnYXRlLCBj
bGllbnRSZWRpcmVjdCwgc2VydmVyUmVkaXJlY3QsIHRpdGxlVXBkYXRlLCBwb3B1bGF0ZVZpc2l0
ZWRMaW5rcywgZGF0YSk7CiB9CiAKK3ZvaWQgZXdrX2NvbnRleHRfZG93bmxvYWRfY2FsbGJhY2tz
X3NldChFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgRXdrX0Rvd25sb2FkX1JlcXVlc3RlZF9DYiBy
ZXF1ZXN0ZWQsIEV3a19Eb3dubG9hZF9GYWlsZWRfQ2IgZmFpbGVkLCBFd2tfRG93bmxvYWRfQ2Fu
Y2VsbGVkX0NiIGNhbmNlbGxlZCwgIEV3a19Eb3dubG9hZF9GaW5pc2hlZF9DYiBmaW5pc2hlZCwg
dm9pZCogZGF0YSkKK3sKKyAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihFd2tDb250ZXh0
LCBld2tDb250ZXh0LCBpbXBsKTsKKworICAgIGltcGwtPmRvd25sb2FkTWFuYWdlcigpLT5zZXRD
bGllbnRDYWxsYmFja3MocmVxdWVzdGVkLCBmYWlsZWQsIGNhbmNlbGxlZCwgZmluaXNoZWQsIGRh
dGEpOworfQorCiB2b2lkIGV3a19jb250ZXh0X3Zpc2l0ZWRfbGlua19hZGQoRXdrX0NvbnRleHQq
IGV3a0NvbnRleHQsIGNvbnN0IGNoYXIqIHZpc2l0ZWRVUkwpCiB7CiAgICAgRVdLX09CSl9HRVRf
SU1QTF9PUl9SRVRVUk4oRXdrQ29udGV4dCwgZXdrQ29udGV4dCwgaW1wbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAppbmRleCA4YzM4YjdkNzZi
NjY0N2ZhMjZhY2NjMjkyMzIyMjYzMjVkNTMwYjRjLi5jZGFmMTcyYmUwYWQxZTE3MjQwOTRhMDZm
ZDYwZjU4ZWQ3NGNhYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmgKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNsdWRlICJld2tfYXBwbGljYXRp
b25fY2FjaGVfbWFuYWdlci5oIgogI2luY2x1ZGUgImV3a19jb29raWVfbWFuYWdlci5oIgogI2lu
Y2x1ZGUgImV3a19kYXRhYmFzZV9tYW5hZ2VyLmgiCisjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pv
Yi5oIgorI2luY2x1ZGUgImV3a19lcnJvci5oIgogI2luY2x1ZGUgImV3a19mYXZpY29uX2RhdGFi
YXNlLmgiCiAjaW5jbHVkZSAiZXdrX25hdmlnYXRpb25fZGF0YS5oIgogI2luY2x1ZGUgImV3a19z
dG9yYWdlX21hbmFnZXIuaCIKQEAgLTUwLDYgKzUyLDE3IEBACiBleHRlcm4gIkMiIHsKICNlbmRp
ZgogCisvLy8gQ3JlYXRlcyBhIHR5cGUgbmFtZSBmb3IgRXdrX0Rvd25sb2FkX0pvYl9FcnJvci4K
K3R5cGVkZWYgc3RydWN0IEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IgRXdrX0Rvd25sb2FkX0pvYl9F
cnJvcjsKKworLyoqCisgKiBAYnJpZWYgU3RydWN0dXJlIGNvbnRhaW5pbmcgZGV0YWlscyBhYm91
dCBhIGRvd25sb2FkIGZhaWx1cmUuCisgKi8KK3N0cnVjdCBFd2tfRG93bmxvYWRfSm9iX0Vycm9y
IHsKKyAgICBFd2tfRG93bmxvYWRfSm9iICpkb3dubG9hZF9qb2I7IC8qKjwgZG93bmxvYWQgdGhh
dCBmYWlsZWQgKi8KKyAgICBFd2tfRXJyb3IgKmVycm9yOyAvKio8IGRvd25sb2FkIGVycm9yICov
Cit9OworCiAvKioKICAqIERlY2xhcmUgRXdrX0NvbnRleHQgYXMgRXdrX09iamVjdC4KICAqCkBA
IC0xMzEsNiArMTQ0LDMwIEBAIHR5cGVkZWYgdm9pZCAoKkV3a19IaXN0b3J5X1NlcnZlcl9SZWRp
cmVjdGlvbl9DYikoY29uc3QgRXZhc19PYmplY3QgKnZpZXcsIGNvbnN0CiB0eXBlZGVmIHZvaWQg
KCpFd2tfSGlzdG9yeV9UaXRsZV9VcGRhdGVfQ2IpKGNvbnN0IEV2YXNfT2JqZWN0ICp2aWV3LCBj
b25zdCBjaGFyICp0aXRsZSwgY29uc3QgY2hhciAqdXJsLCB2b2lkICp1c2VyX2RhdGEpOwogCiAv
KioKKyAqIEB0eXBlZGVmIEV3a19Eb3dubG9hZF9SZXF1ZXN0ZWRfQ2IgRXdrX0Rvd25sb2FkX1Jl
cXVlc3RlZF9DYgorICogQGJyaWVmIFR5cGUgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvbiB0aGF0
IHdpbGwgYmUgY2FsbGVkIGJhY2sgd2hlbiBuZXcgZG93bmxvYWQgam9iIGlzIHJlcXVlc3RlZC4K
KyAqLwordHlwZWRlZiB2b2lkICgqRXdrX0Rvd25sb2FkX1JlcXVlc3RlZF9DYikoRXdrX0Rvd25s
b2FkX0pvYiAqZG93bmxvYWQsIHZvaWQgKnVzZXJfZGF0YSk7CisKKy8qKgorICogQHR5cGVkZWYg
RXdrX0Rvd25sb2FkX0ZhaWxlZF9DYiBFd2tfRG93bmxvYWRfRmFpbGVkX0NiCisgKiBAYnJpZWYg
VHlwZSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3
aGVuIGEgZG93bmxvYWQgam9iIGhhcyBmYWlsZWQuCisgKi8KK3R5cGVkZWYgdm9pZCAoKkV3a19E
b3dubG9hZF9GYWlsZWRfQ2IpKEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IgKmVycm9yLCB2b2lkICp1
c2VyX2RhdGEpOworCisvKioKKyAqIEB0eXBlZGVmIEV3a19Eb3dubG9hZF9DYW5jZWxsZWRfQ2Ig
RXdrX0Rvd25sb2FkX0NhbmNlbGxlZF9DYgorICogQGJyaWVmIFR5cGUgZGVmaW5pdGlvbiBmb3Ig
YSBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGJhY2sgd2hlbiBhIGRvd25sb2FkIGpvYiBp
cyBjYW5jZWxsZWQuCisgKi8KK3R5cGVkZWYgdm9pZCAoKkV3a19Eb3dubG9hZF9DYW5jZWxsZWRf
Q2IpKEV3a19Eb3dubG9hZF9Kb2IgKmRvd25sb2FkLCB2b2lkICp1c2VyX2RhdGEpOworCisvKioK
KyAqIEB0eXBlZGVmIEV3a19Eb3dubG9hZF9GaW5pc2hlZF9DYiBFd2tfRG93bmxvYWRfRmluaXNo
ZWRfQ2IKKyAqIEBicmllZiBUeXBlIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gdGhhdCB3aWxs
IGJlIGNhbGxlZCBiYWNrIHdoZW4gYSBkb3dubG9hZCBqb2IgaXMgZmluaXNoZWQuCisgKi8KK3R5
cGVkZWYgdm9pZCAoKkV3a19Eb3dubG9hZF9GaW5pc2hlZF9DYikoRXdrX0Rvd25sb2FkX0pvYiAq
ZG93bmxvYWQsIHZvaWQgKnVzZXJfZGF0YSk7CisKKy8qKgogICogQHR5cGVkZWYgRXdrX0NvbnRl
eHRfSGlzdG9yeV9DbGllbnRfVmlzaXRlZF9MaW5rc19Qb3B1bGF0ZV9DYiBFd2tfQ29udGV4dF9I
aXN0b3J5X0NsaWVudF9WaXNpdGVkX0xpbmtzX1BvcHVsYXRlX0NiCiAgKiBAYnJpZWYgVHlwZSBk
ZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIGNs
aWVudCBpcyBhc2tlZCB0byBwcm92aWRlIHZpc2l0ZWQgbGlua3MgZnJvbSBhIGNsaWVudC1tYW5h
Z2VkIHN0b3JhZ2UuCiAgKgpAQCAtMzE3LDYgKzM1NCwyNiBAQCBFQVBJIHZvaWQgZXdrX2NvbnRl
eHRfaGlzdG9yeV9jYWxsYmFja3Nfc2V0KEV3a19Db250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKTsKIAogLyoqCisg
KiBTZXRzIGRvd25sb2FkIGNhbGxiYWNrcyBmb3IgdGhlIGdpdmVuIEBhIGNvbnRleHQuCisgKgor
ICogVG8gc3RvcCBsaXN0ZW5pbmcgZm9yIGRvd25sb2FkIGV2ZW50cywgeW91IG1heSBjYWxsIHRo
aXMgZnVuY3Rpb24gd2l0aCBAYworICogTlVMTCBmb3IgdGhlIGNhbGxiYWNrcy4KKyAqCisgKiBA
cGFyYW0gY29udGV4dCBjb250ZXh0IG9iamVjdCB0byBzZXQgZG93bmxvYWQgY2FsbGJhY2tzCisg
KiBAcGFyYW0gZG93bmxvYWRfcmVxdWVzdGVkX2Z1bmMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hl
biBuZXcgZG93bmxvYWQgaXMgcmVxdWVzdGVkIChtYXkgYmUgQGMgTlVMTCkuCisgKiBAcGFyYW0g
ZG93bmxvYWRfZmFpbGVkX2Z1bmMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBhIGRvd25sb2Fk
IGpvYiBoYXMgZmFpbGVkIChtYXkgYmUgQGMgTlVMTCkuCisgKiBAcGFyYW0gZG93bmxvYWRfY2Fu
Y2VsbGVkX2Z1bmMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBhIGRvd25sb2FkIGpvYiBpcyBj
YW5jZWxsZWQgKG1heSBiZSBAYyBOVUxMKS4KKyAqIEBwYXJhbSBkb3dubG9hZF9maW5pc2hlZF9m
dW5jIHRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gYSBkb3dubG9hZCBqb2IgaXMgZmluaXNoZWQg
KG1heSBiZSBAYyBOVUxMKS4KKyAqIEBwYXJhbSBkYXRhIFVzZXIgZGF0YSAobWF5IGJlIEBjIE5V
TEwpLgorICovCitFQVBJIHZvaWQgZXdrX2NvbnRleHRfZG93bmxvYWRfY2FsbGJhY2tzX3NldChF
d2tfQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEV3a19Eb3dubG9hZF9SZXF1ZXN0ZWRfQ2IgZG93bmxvYWRfcmVxdWVzdGVkX2Z1
bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFd2tfRG93
bmxvYWRfRmFpbGVkX0NiIGRvd25sb2FkX2ZhaWxlZF9mdW5jLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdrX0Rvd25sb2FkX0NhbmNlbGxlZF9DYiBkb3du
bG9hZF9jYW5jZWxsZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEV3a19Eb3dubG9hZF9GaW5pc2hlZF9DYiBkb3dubG9hZF9maW5pc2hlZF9mdW5j
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogZGF0
YSk7CisKKy8qKgogICogUmVnaXN0ZXJzIHRoZSBnaXZlbiBAYSB2aXNpdGVkX3VybCBhcyB2aXNp
dGVkIGxpbmsgaW4gQGEgY29udGV4dCB2aXNpdGVkIGxpbmsgY2FjaGUuCiAgKgogICogVGhpcyBm
dW5jdGlvbiBzaGFsbCBiZSBpbnZva2VkIGFzIGEgcmVzcG9uc2UgdG8gQGMgcG9wdWxhdGVWaXNp
dGVkTGlua3MgY2FsbGJhY2sgb2YgdGhlIGhpc3RvcnkgY2llbnQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuY3BwCmluZGV4IDU1
MGMwZTBmNzM4Y2VkOTE5YmM0OGYzMzE1ZWNjZjcwOWNmNjc1M2UuLmUwZjJmNjlhMjU2OGRkY2Uw
NTE5OTA0OGMzODQxYzI0Y2ZhOWI2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuY3BwCkBAIC0zNiw5ICszNiw4IEBACiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLUV3a0Rvd25sb2FkSm9iOjpFd2tEb3dubG9hZEpv
YihXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBFd2tWaWV3KiB2aWV3SW1wbCkKK0V3a0Rvd25sb2Fk
Sm9iOjpFd2tEb3dubG9hZEpvYihXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQogICAgIDogbV9kb3du
bG9hZChkb3dubG9hZCkKLSAgICAsIG1fdmlld0ltcGwodmlld0ltcGwpCiAgICAgLCBtX3N0YXRl
KEVXS19ET1dOTE9BRF9KT0JfU1RBVEVfTk9UX1NUQVJURUQpCiAgICAgLCBtX3N0YXJ0VGltZSgt
MSkKICAgICAsIG1fZW5kVGltZSgtMSkKQEAgLTU0LDE2ICs1Myw2IEBAIHVpbnQ2NF90IEV3a0Rv
d25sb2FkSm9iOjppZCgpIGNvbnN0CiAgICAgcmV0dXJuIFdLRG93bmxvYWRHZXRJRChtX2Rvd25s
b2FkLmdldCgpKTsKIH0KIAotLyoqCi0gKiBAaW50ZXJuYWwKLSAqIFJldHVybnMgdGhlIHZpZXcg
dGhpcyBkb3dubG9hZCBpcyBhdHRhY2hlZCB0by4KLSAqIFRoZSB2aWV3IGlzIG5lZWRlZCB0byBz
ZW5kIG5vdGlmaWNhdGlvbiBzaWduYWxzLgotICovCi1Fd2tWaWV3KiBFd2tEb3dubG9hZEpvYjo6
dmlldygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdmlld0ltcGw7Ci19Ci0KIEV3a19Eb3dubG9h
ZF9Kb2JfU3RhdGUgZXdrX2Rvd25sb2FkX2pvYl9zdGF0ZV9nZXQoY29uc3QgRXdrX0Rvd25sb2Fk
X0pvYiogZG93bmxvYWQpCiB7CiAgICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3Qg
RXdrRG93bmxvYWRKb2IsIGRvd25sb2FkLCBpbXBsLCBFV0tfRE9XTkxPQURfSk9CX1NUQVRFX1VO
S05PV04pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2Rvd25sb2FkX2pvYi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2Rv
d25sb2FkX2pvYi5oCmluZGV4IDY4Y2Y1MDQxMzYxMzI4NTkxM2EwZThhMjYyMmIxYjBiMDc0NjQ2
OGMuLjcwYTY0ZjE2NzZkNzk0MmI5NWUxNWU0YmFjMjI4NWJlN2M0YzY1NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19kb3dubG9hZF9qb2IuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZG93bmxvYWRfam9iLmgKQEAg
LTE1MSw4ICsxNTEsOCBAQCBFQVBJIGNvbnN0IGNoYXIgKmV3a19kb3dubG9hZF9qb2Jfc3VnZ2Vz
dGVkX2ZpbGVuYW1lX2dldChjb25zdCBFd2tfRG93bmxvYWRfSm9iCiAvKioKICAqIENhbmNlbHMg
dGhlIGRvd25sb2FkIGFzeW5jaHJvbm91c2x5LgogICoKLSAqIFdoZW4gdGhlIG9uZ29pbmcgZG93
bmxvYWQgb3BlcmF0aW9uIGlzIGVmZmVjdGl2ZWx5IGNhbmNlbGxlZCBhICJkb3dubG9hZCxjYW5j
ZWxsZWQiCi0gKiBzaWduYWwgd2lsbCBiZSBlbWl0dGVkIG9uIHRoZSB2aWV3LgorICogV2hlbiB0
aGUgb25nb2luZyBkb3dubG9hZCBvcGVyYXRpb24gaXMgZWZmZWN0aXZlbHkgY2FuY2VsbGVkLCBh
ICJFd2tfRG93bmxvYWRfQ2FuY2VsbGVkX0NiIgorICogd2lsbCBiZSBjYWxsZWQgaW4gRG93bmxv
YWRNYW5hZ2VyLgogICoKICAqIEBwYXJhbSBkb3dubG9hZCBhICNFd2tfRG93bmxvYWRfSm9iIHRv
IGNhbmNlbC4KICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfZG93bmxvYWRfam9iX3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oCmluZGV4IDBkYmQ1MjU1N2QxOTgxOGQx
ZWQ3MWQyOTBjMWQ0ZDM5OWQxZGI2NjEuLjY0NDBlNmUxMjViNGJkMjdlODk0OTZiOGMzYzM3NTQw
NTg4OTkyOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19kb3dubG9hZF9qb2JfcHJpdmF0ZS5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNz
IEV3a0Rvd25sb2FkSm9iIDogcHVibGljIEV3a09iamVjdCB7CiBwdWJsaWM6CiAgICAgRVdLX09C
SkVDVF9ERUNMQVJFKEV3a0Rvd25sb2FkSm9iKQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RXdr
RG93bmxvYWRKb2I+IGNyZWF0ZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBFd2tWaWV3KiB2aWV3
SW1wbCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFd2tEb3dubG9hZEpvYj4gY3JlYXRlKFdLRG93
bmxvYWRSZWYgZG93bmxvYWQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3
a0Rvd25sb2FkSm9iKGRvd25sb2FkLCB2aWV3SW1wbCkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEV3a0Rvd25sb2FkSm9iKGRvd25sb2FkKSk7CiAgICAgfQogCiAgICAgdWludDY0X3Qg
aWQoKSBjb25zdDsKQEAgLTcxLDEwICs3MSw5IEBAIHB1YmxpYzoKICAgICB1aW50NjRfdCByZWNl
aXZlZERhdGFTaXplKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgRXdrRG93bmxvYWRKb2IoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgRXdrVmlldyogdmlldyk7CisgICAgZXhwbGljaXQgRXdrRG93
bmxvYWRKb2IoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7CiAKICAgICBXS1JldGFpblB0cjxXS0Rv
d25sb2FkUmVmPiBtX2Rvd25sb2FkOwotICAgIEV3a1ZpZXcqIG1fdmlld0ltcGw7CiAgICAgRXdr
X0Rvd25sb2FkX0pvYl9TdGF0ZSBtX3N0YXRlOwogICAgIG11dGFibGUgUmVmUHRyPEV3a1VybFJl
cXVlc3Q+IG1fcmVxdWVzdDsKICAgICBSZWZQdHI8RXdrVXJsUmVzcG9uc2U+IG1fcmVzcG9uc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCA5MDVl
NTQxZjVjYzJlYTFhYTZjNzQ5YTJlNzFiZGE3Y2RiNDUwZGZmLi45MzczYTkxMzdmOTA2YTk4YTJk
NjYxYmQ3NWRhYjk2NGRlNWQ3NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmgKQEAgLTMxLDExICszMSw2IEBACiAgKiAtICJiYWNrLGZvcndhcmQsbGlz
dCxjaGFuZ2VkIiwgdm9pZDogcmVwb3J0cyB0aGF0IHRoZSB2aWV3J3MgYmFjayAvIGZvcndhcmQg
bGlzdCBoYWQgY2hhbmdlZC4KICAqIC0gImNhbmNlbCx2aWJyYXRpb24iLCB2b2lkOiByZXF1ZXN0
IHRvIGNhbmNlbCB0aGUgdmlicmF0aW9uLgogICogLSAiY29udGVudHMsc2l6ZSxjaGFuZ2VkIiwg
RXdrX0NTU19TaXplKjogcmVwb3J0cyB0aGF0IGNvbnRlbnRzIHNpemUgd2FzIGNoYW5nZWQuCi0g
KiAtICJkb3dubG9hZCxjYW5jZWxsZWQiLCBFd2tfRG93bmxvYWRfSm9iKjogcmVwb3J0cyB0aGF0
IGEgZG93bmxvYWQgd2FzIGVmZmVjdGl2ZWx5IGNhbmNlbGxlZC4KLSAqIC0gImRvd25sb2FkLGZh
aWxlZCIsIEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IqOiByZXBvcnRzIHRoYXQgYSBkb3dubG9hZCBm
YWlsZWQgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IuCi0gKiAtICJkb3dubG9hZCxmaW5pc2hlZCIsIEV3
a19Eb3dubG9hZF9Kb2IqOiByZXBvcnRzIHRoYXQgYSBkb3dubG9hZCBjb21wbGV0ZWQgc3VjY2Vz
c2Z1bGx5LgotICogLSAiZG93bmxvYWQscmVxdWVzdCIsIEV3a19Eb3dubG9hZF9Kb2IqOiByZXBv
cnRzIHRoYXQgYSBuZXcgZG93bmxvYWQgaGFzIGJlZW4gcmVxdWVzdGVkLiBUaGUgY2xpZW50IHNo
b3VsZCBzZXQgdGhlCi0gKiAgIGRlc3RpbmF0aW9uIHBhdGggYnkgY2FsbGluZyBld2tfZG93bmxv
YWRfam9iX2Rlc3RpbmF0aW9uX3NldCgpIG9yIHRoZSBkb3dubG9hZCB3aWxsIGZhaWwuCiAgKiAt
ICJmaWxlLGNob29zZXIscmVxdWVzdCIsIEV3a19GaWxlX0Nob29zZXJfUmVxdWVzdCo6IHJlcG9y
dHMgdGhhdCBhIHJlcXVlc3QgaGFzIGJlZW4gbWFkZSBmb3IgdGhlIHVzZXIgdG8gY2hvb3NlCiAg
KiAgIGEgZmlsZSAob3Igc2V2ZXJhbCkgb24gdGhlIGZpbGUgc3lzdGVtLiBDYWxsIGV3a19maWxl
X2Nob29zZXJfcmVxdWVzdF9yZWYoKSBvbiB0aGUgcmVxdWVzdCBvYmplY3QgdG8gcHJvY2VzcyBp
dAogICogICBhc3luY2hyb25vdXNseS4KQEAgLTc5LDcgKzc0LDYgQEAKICNpbmNsdWRlICJld2tf
Y29udGV4dC5oIgogI2luY2x1ZGUgImV3a19jb250ZXh0X21lbnUuaCIKICNpbmNsdWRlICJld2tf
ZG93bmxvYWRfam9iLmgiCi0jaW5jbHVkZSAiZXdrX2Vycm9yLmgiCiAjaW5jbHVkZSAiZXdrX3Bh
Z2VfZ3JvdXAuaCIKICNpbmNsdWRlICJld2tfcG9wdXBfbWVudS5oIgogI2luY2x1ZGUgImV3a19z
ZWN1cml0eV9vcmlnaW4uaCIKQEAgLTI0MywxNyArMjM3LDYgQEAgc3RydWN0IEV3a19WaWV3X1Nt
YXJ0X0RhdGEgewogICAgIH0gY2hhbmdlZDsKIH07CiAKLS8vLyBDcmVhdGVzIGEgdHlwZSBuYW1l
IGZvciBFd2tfRG93bmxvYWRfSm9iX0Vycm9yLgotdHlwZWRlZiBzdHJ1Y3QgRXdrX0Rvd25sb2Fk
X0pvYl9FcnJvciBFd2tfRG93bmxvYWRfSm9iX0Vycm9yOwotCi0vKioKLSAqIEBicmllZiBTdHJ1
Y3R1cmUgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IGEgZG93bmxvYWQgZmFpbHVyZS4KLSAqLwot
c3RydWN0IEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IgewotICAgIEV3a19Eb3dubG9hZF9Kb2IgKmRv
d25sb2FkX2pvYjsgLyoqPCBkb3dubG9hZCB0aGF0IGZhaWxlZCAqLwotICAgIEV3a19FcnJvciAq
ZXJyb3I7IC8qKjwgZG93bmxvYWQgZXJyb3IgKi8KLX07Ci0KIC8vLyBDcmVhdGVzIGEgdHlwZSBu
YW1lIGZvciBFd2tfQ1NTX1NpemUuCiB0eXBlZGVmIHN0cnVjdCBFd2tfQ1NTX1NpemUgRXdrX0NT
U19TaXplOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfZG93bmxvYWRfam9iLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwCmluZGV4IDRiYmMyNTlj
Y2I1ZTc1MzdjNzBlOWM3NDcyYzI5YzBmNDk0ODQ4ODAuLjQzNmNkOTkwNmExYzYwYWU5NTY4ZTE2
OTQ0N2ViYWEzYzkzMDllMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9kb3dubG9hZF9qb2IuY3BwCkBA
IC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgZWluYV9maWxlX2Nsb3NlKGYpOwogICAg
IH0KIAotICAgIHN0YXRpYyB2b2lkIG9uX2Rvd25sb2FkX3JlcXVlc3RlZCh2b2lkKiB1c2VyRGF0
YSwgRXZhc19PYmplY3QqIHdlYnZpZXcsIHZvaWQqIGV2ZW50SW5mbykKKyAgICBzdGF0aWMgdm9p
ZCBvbl9kb3dubG9hZF9yZXF1ZXN0ZWQoRXdrT2JqZWN0KiBldmVudEluZm8sIHZvaWQqIHVzZXJE
YXRhKQogICAgIHsKICAgICAgICAgRG93bmxvYWRUZXN0RGF0YSogdGVzdERhdGEgPSBzdGF0aWNf
Y2FzdDxEb3dubG9hZFRlc3REYXRhKj4odXNlckRhdGEpOwogICAgICAgICBFd2tfRG93bmxvYWRf
Sm9iKiBkb3dubG9hZCA9IHN0YXRpY19jYXN0PEV3a19Eb3dubG9hZF9Kb2IqPihldmVudEluZm8p
OwpAQCAtMTIwLDIyICsxMjAsMjEgQEAgcHVibGljOgogICAgICAgICBFWFBFQ1RfU1RSRVEodGVz
dERhdGEtPmRlc3RpbmF0aW9uUGF0aCwgZXdrX2Rvd25sb2FkX2pvYl9kZXN0aW5hdGlvbl9nZXQo
ZG93bmxvYWQpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBvbl9kb3dubG9hZF9jYW5jZWxs
ZWQodm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudEluZm8p
CisgICAgc3RhdGljIHZvaWQgb25fZG93bmxvYWRfY2FuY2VsbGVkKEV3a09iamVjdCosIHZvaWQq
KQogICAgIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJEb3dubG9hZCB3YXMgY2FuY2VsbGVk
LlxuIik7CiAgICAgICAgIGVjb3JlX21haW5fbG9vcF9xdWl0KCk7CiAgICAgICAgIEZBSUwoKTsK
ICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBvbl9kb3dubG9hZF9mYWlsZWQodm9pZCogdXNlckRh
dGEsIEV2YXNfT2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudEluZm8pCisgICAgc3RhdGljIHZv
aWQgb25fZG93bmxvYWRfZmFpbGVkKEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IqIGRvd25sb2FkRXJy
b3IsIHZvaWQqIHVzZXJEYXRhKQogICAgIHsKLSAgICAgICAgRXdrX0Rvd25sb2FkX0pvYl9FcnJv
ciogZG93bmxvYWRFcnJvciA9IHN0YXRpY19jYXN0PEV3a19Eb3dubG9hZF9Kb2JfRXJyb3IqPihl
dmVudEluZm8pOwogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkRvd25sb2FkIGVycm9yOiAlc1xu
IiwgZXdrX2Vycm9yX2Rlc2NyaXB0aW9uX2dldChkb3dubG9hZEVycm9yLT5lcnJvcikpOwogICAg
ICAgICBlY29yZV9tYWluX2xvb3BfcXVpdCgpOwogICAgICAgICBGQUlMKCk7CiAgICAgfQogCi0g
ICAgc3RhdGljIHZvaWQgb25fZG93bmxvYWRfZmluaXNoZWQodm9pZCogdXNlckRhdGEsIEV2YXNf
T2JqZWN0KiB3ZWJ2aWV3LCB2b2lkKiBldmVudEluZm8pCisgICAgc3RhdGljIHZvaWQgb25fZG93
bmxvYWRfZmluaXNoZWQoRXdrT2JqZWN0KiBldmVudEluZm8sIHZvaWQqIHVzZXJEYXRhKQogICAg
IHsKICAgICAgICAgRG93bmxvYWRUZXN0RGF0YSogdGVzdERhdGEgPSBzdGF0aWNfY2FzdDxEb3du
bG9hZFRlc3REYXRhKj4odXNlckRhdGEpOwogICAgICAgICBFd2tfRG93bmxvYWRfSm9iKiBkb3du
bG9hZCA9IHN0YXRpY19jYXN0PEV3a19Eb3dubG9hZF9Kb2IqPihldmVudEluZm8pOwpAQCAtMTY2
LDEwICsxNjUsOCBAQCBURVNUX0YoRVdLMkRvd25sb2FkSm9iVGVzdCwgZXdrX2Rvd25sb2FkKQog
ICAgIERvd25sb2FkVGVzdERhdGEgdXNlckRhdGEgPSB7IGZpbGVVcmwuZGF0YSgpLCBkZXN0aW5h
dGlvblBhdGggfTsKICAgICBBU1NFUlRfRkFMU0UoZmlsZUV4aXN0cyhkZXN0aW5hdGlvblBhdGgp
KTsKIAotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3ZWJWaWV3KCksICJkb3du
bG9hZCxyZXF1ZXN0Iiwgb25fZG93bmxvYWRfcmVxdWVzdGVkLCAmdXNlckRhdGEpOwotICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3ZWJWaWV3KCksICJkb3dubG9hZCxjYW5jZWwi
LCBvbl9kb3dubG9hZF9jYW5jZWxsZWQsICZ1c2VyRGF0YSk7Ci0gICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgImRvd25sb2FkLGZhaWxlZCIsIG9uX2Rvd25sb2Fk
X2ZhaWxlZCwgJnVzZXJEYXRhKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQo
d2ViVmlldygpLCAiZG93bmxvYWQsZmluaXNoZWQiLCBvbl9kb3dubG9hZF9maW5pc2hlZCwgJnVz
ZXJEYXRhKTsKKyAgICBFd2tfQ29udGV4dCogY29udGV4dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0
KHdlYlZpZXcoKSk7CisgICAgZXdrX2NvbnRleHRfZG93bmxvYWRfY2FsbGJhY2tzX3NldChjb250
ZXh0LCBvbl9kb3dubG9hZF9yZXF1ZXN0ZWQsIG9uX2Rvd25sb2FkX2ZhaWxlZCwgb25fZG93bmxv
YWRfY2FuY2VsbGVkLCBvbl9kb3dubG9hZF9maW5pc2hlZCwgJnVzZXJEYXRhKTsKIAogICAgIC8v
IERvd25sb2FkIHRlc3QgcGRmCiAgICAgZXdrX3ZpZXdfdXJsX3NldCh3ZWJWaWV3KCksIGZpbGVV
cmwuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93
bmxvYWRNYW5hZ2VyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRG93bmxv
YWRNYW5hZ2VyRWZsLmNwcAppbmRleCA5N2VjMTFlMjk3ZDFlODJmZDlmNWYwOWVmMjMwYmQxNWFh
OGFhZTlkLi5mZjMyM2Q4YzM0NjlmZjhiZGNhYWJkODczMDdhZTU4NDc0OTViNTIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuY3Bw
CkBAIC00NSwxNCArNDUsMTYgQEAgc3RhdGljIGlubGluZSBEb3dubG9hZE1hbmFnZXJFZmwqIHRv
RG93bmxvYWRNYW5hZ2VyRWZsKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiAKIFdLU3RyaW5nUmVm
IERvd25sb2FkTWFuYWdlckVmbDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQsIFdLU3RyaW5nUmVmIGZp
bGVuYW1lLCBib29sKiAvKmFsbG93T3ZlcndyaXRlKi8sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CiB7Ci0gICAgRXdrRG93bmxvYWRKb2IqIGRvd25sb2FkID0gdG9Eb3dubG9hZE1hbmFnZXJFZmwo
Y2xpZW50SW5mbyktPmV3a0Rvd25sb2FkSm9iKHdrRG93bmxvYWQpOworICAgIERvd25sb2FkTWFu
YWdlckVmbCogZG93bmxvYWRNYW5hZ2VyID0gdG9Eb3dubG9hZE1hbmFnZXJFZmwoY2xpZW50SW5m
byk7CisgICAgRXdrRG93bmxvYWRKb2IqIGRvd25sb2FkID0gZG93bmxvYWRNYW5hZ2VyLT5ld2tE
b3dubG9hZEpvYih3a0Rvd25sb2FkKTsKICAgICBBU1NFUlQoZG93bmxvYWQpOwogCiAgICAgZG93
bmxvYWQtPnNldFN1Z2dlc3RlZEZpbGVOYW1lKHRvSW1wbChmaWxlbmFtZSktPnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogCi0gICAgLy8gV2Ugc2VuZCB0aGUgbmV3IGRvd25sb2FkIHNpZ25hbCBv
biB0aGUgRXdrX1ZpZXcgb25seSBvbmNlIHdlIGhhdmUgcmVjZWl2ZWQgdGhlIHJlc3BvbnNlCisg
ICAgLy8gV2UgY2FsbCBEb3dubG9hZFJlcXVlc3RlZCBjYWxsYmFjayBvbmx5IG9uY2Ugd2UgaGF2
ZSByZWNlaXZlZCB0aGUgcmVzcG9uc2UKICAgICAvLyBhbmQgdGhlIHN1Z2dlc3RlZCBmaWxlIG5h
bWUuCi0gICAgZG93bmxvYWQtPnZpZXcoKS0+c21hcnRDYWxsYmFjazxEb3dubG9hZEpvYlJlcXVl
c3RlZD4oKS5jYWxsKGRvd25sb2FkKTsKKyAgICBpZiAoZG93bmxvYWRNYW5hZ2VyLT5tX2NsaWVu
dENhbGxiYWNrcy5tX3JlcXVlc3RlZCkKKyAgICAgICAgZG93bmxvYWRNYW5hZ2VyLT5tX2NsaWVu
dENhbGxiYWNrcy5tX3JlcXVlc3RlZChkb3dubG9hZCwgZG93bmxvYWRNYW5hZ2VyLT5tX2NsaWVu
dENhbGxiYWNrcy5tX3VzZXJEYXRhKTsKIAogICAgIC8vIERvd25sb2FkU291cCBleHBlY3RzIHRo
ZSBkZXN0aW5hdGlvbiB0byBiZSBhIFVSTC4KICAgICBTdHJpbmcgZGVzdGluYXRpb24gPSBBU0NJ
SUxpdGVyYWwoImZpbGU6Ly8iKSArIFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWQtPmRlc3RpbmF0
aW9uKCkpOwpAQCAtODIsNiArODQsMTIgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OmRpZFJl
Y2VpdmVEYXRhKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rvd25sb2FkLAogICAgIGRv
d25sb2FkLT5pbmNyZW1lbnRSZWNlaXZlZERhdGEobGVuZ3RoKTsKIH0KIAordm9pZCBEb3dubG9h
ZE1hbmFnZXJFZmw6OmRpZFN0YXJ0KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rvd25s
b2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIERvd25sb2FkTWFuYWdlckVmbCog
ZG93bmxvYWRNYW5hZ2VyID0gdG9Eb3dubG9hZE1hbmFnZXJFZmwoY2xpZW50SW5mbyk7CisgICAg
ZG93bmxvYWRNYW5hZ2VyLT5yZWdpc3RlckRvd25sb2FkSm9iKHdrRG93bmxvYWQpOworfQorCiB2
b2lkIERvd25sb2FkTWFuYWdlckVmbDo6ZGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRS
ZWYgd2tEb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
IHsKICAgICBEb3dubG9hZE1hbmFnZXJFZmwqIGRvd25sb2FkTWFuYWdlciA9IHRvRG93bmxvYWRN
YW5hZ2VyRWZsKGNsaWVudEluZm8pOwpAQCAtOTEsNyArOTksOCBAQCB2b2lkIERvd25sb2FkTWFu
YWdlckVmbDo6ZGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgd2tEb3dubG9hZCwg
V0tFcnJvcgogICAgIGF1dG8gZXdrRXJyb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPEV3a0Vycm9yPihl
cnJvcik7CiAgICAgZG93bmxvYWQtPnNldFN0YXRlKEVXS19ET1dOTE9BRF9KT0JfU1RBVEVfRkFJ
TEVEKTsKICAgICBFd2tfRG93bmxvYWRfSm9iX0Vycm9yIGRvd25sb2FkRXJyb3IgPSB7IGRvd25s
b2FkLCBld2tFcnJvci5nZXQoKSB9OwotICAgIGRvd25sb2FkLT52aWV3KCktPnNtYXJ0Q2FsbGJh
Y2s8RG93bmxvYWRKb2JGYWlsZWQ+KCkuY2FsbCgmZG93bmxvYWRFcnJvcik7CisgICAgaWYgKGRv
d25sb2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV9mYWlsZWQpCisgICAgICAgIGRvd25s
b2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV9mYWlsZWQoJmRvd25sb2FkRXJyb3IsIGRv
d25sb2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV91c2VyRGF0YSk7CiAgICAgZG93bmxv
YWRNYW5hZ2VyLT51bnJlZ2lzdGVyRG93bmxvYWRKb2Iod2tEb3dubG9hZCk7CiB9CiAKQEAgLTEw
Miw3ICsxMTEsOCBAQCB2b2lkIERvd25sb2FkTWFuYWdlckVmbDo6ZGlkQ2FuY2VsKFdLQ29udGV4
dFJlZiwgV0tEb3dubG9hZFJlZiB3a0Rvd25sb2FkLCBjb25zdAogICAgIEFTU0VSVChkb3dubG9h
ZCk7CiAKICAgICBkb3dubG9hZC0+c2V0U3RhdGUoRVdLX0RPV05MT0FEX0pPQl9TVEFURV9DQU5D
RUxMRUQpOwotICAgIGRvd25sb2FkLT52aWV3KCktPnNtYXJ0Q2FsbGJhY2s8RG93bmxvYWRKb2JD
YW5jZWxsZWQ+KCkuY2FsbChkb3dubG9hZCk7CisgICAgaWYgKGRvd25sb2FkTWFuYWdlci0+bV9j
bGllbnRDYWxsYmFja3MubV9jYW5jZWxsZWQpCisgICAgICAgIGRvd25sb2FkTWFuYWdlci0+bV9j
bGllbnRDYWxsYmFja3MubV9jYW5jZWxsZWQoZG93bmxvYWQsIGRvd25sb2FkTWFuYWdlci0+bV9j
bGllbnRDYWxsYmFja3MubV91c2VyRGF0YSk7CiAgICAgZG93bmxvYWRNYW5hZ2VyLT51bnJlZ2lz
dGVyRG93bmxvYWRKb2Iod2tEb3dubG9hZCk7CiB9CiAKQEAgLTExMywxMyArMTIzLDE2IEBAIHZv
aWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpkaWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2Fk
UmVmIHdrRG93bmxvYWQsIGNvbnN0CiAgICAgQVNTRVJUKGRvd25sb2FkKTsKIAogICAgIGRvd25s
b2FkLT5zZXRTdGF0ZShFV0tfRE9XTkxPQURfSk9CX1NUQVRFX0ZJTklTSEVEKTsKLSAgICBkb3du
bG9hZC0+dmlldygpLT5zbWFydENhbGxiYWNrPERvd25sb2FkSm9iRmluaXNoZWQ+KCkuY2FsbChk
b3dubG9hZCk7CisgICAgaWYgKGRvd25sb2FkTWFuYWdlci0+bV9jbGllbnRDYWxsYmFja3MubV9m
aW5pc2hlZCkKKyAgICAgICAgZG93bmxvYWRNYW5hZ2VyLT5tX2NsaWVudENhbGxiYWNrcy5tX2Zp
bmlzaGVkKGRvd25sb2FkLCBkb3dubG9hZE1hbmFnZXItPm1fY2xpZW50Q2FsbGJhY2tzLm1fdXNl
ckRhdGEpOwogICAgIGRvd25sb2FkTWFuYWdlci0+dW5yZWdpc3RlckRvd25sb2FkSm9iKHdrRG93
bmxvYWQpOwogfQogCiBEb3dubG9hZE1hbmFnZXJFZmw6OkRvd25sb2FkTWFuYWdlckVmbChXS0Nv
bnRleHRSZWYgY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogeworICAgIG1lbXNl
dCgmbV9jbGllbnRDYWxsYmFja3MsIDAsIHNpemVvZihDbGllbnREb3dubG9hZENhbGxiYWNrcykp
OworCiAgICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCB3a0Rvd25sb2FkQ2xpZW50OwogICAg
IG1lbXNldCgmd2tEb3dubG9hZENsaWVudCwgMCwgc2l6ZW9mKFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50KSk7CiAKQEAgLTEzMCw2ICsxNDMsNyBAQCBEb3dubG9hZE1hbmFnZXJFZmw6OkRvd25sb2Fk
TWFuYWdlckVmbChXS0NvbnRleHRSZWYgY29udGV4dCkKICAgICB3a0Rvd25sb2FkQ2xpZW50LmRp
ZENyZWF0ZURlc3RpbmF0aW9uID0gZGlkQ3JlYXRlRGVzdGluYXRpb247CiAgICAgd2tEb3dubG9h
ZENsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UgPSBkaWRSZWNlaXZlUmVzcG9uc2U7CiAgICAgd2tE
b3dubG9hZENsaWVudC5kaWRSZWNlaXZlRGF0YSA9IGRpZFJlY2VpdmVEYXRhOworICAgIHdrRG93
bmxvYWRDbGllbnQuZGlkU3RhcnQgPSBkaWRTdGFydDsKICAgICB3a0Rvd25sb2FkQ2xpZW50LmRp
ZEZhaWwgPSBkaWRGYWlsOwogICAgIHdrRG93bmxvYWRDbGllbnQuZGlkRmluaXNoID0gZGlkRmlu
aXNoOwogCkBAIC0xNDEsMTMgKzE1NSwxMyBAQCBEb3dubG9hZE1hbmFnZXJFZmw6On5Eb3dubG9h
ZE1hbmFnZXJFZmwoKQogICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KG1fY29udGV4dC5n
ZXQoKSwgMCk7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyRWZsOjpyZWdpc3RlckRvd25sb2Fk
Sm9iKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIEV3a1ZpZXcqIHZpZXdJbXBsKQordm9pZCBEb3du
bG9hZE1hbmFnZXJFZmw6OnJlZ2lzdGVyRG93bmxvYWRKb2IoV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCkKIHsKICAgICB1aW50NjRfdCBkb3dubG9hZElkID0gV0tEb3dubG9hZEdldElEKGRvd25sb2Fk
KTsKICAgICBpZiAobV9kb3dubG9hZEpvYnMuY29udGFpbnMoZG93bmxvYWRJZCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlZlB0cjxFd2tEb3dubG9hZEpvYj4gZXdrRG93bmxvYWQgPSBFd2tE
b3dubG9hZEpvYjo6Y3JlYXRlKGRvd25sb2FkLCB2aWV3SW1wbCk7CisgICAgUmVmUHRyPEV3a0Rv
d25sb2FkSm9iPiBld2tEb3dubG9hZCA9IEV3a0Rvd25sb2FkSm9iOjpjcmVhdGUoZG93bmxvYWQp
OwogICAgIG1fZG93bmxvYWRKb2JzLmFkZChkb3dubG9hZElkLCBld2tEb3dubG9hZCk7CiB9CiAK
QEAgLTE2MSw0ICsxNzUsMTMgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXJFZmw6OnVucmVnaXN0ZXJE
b3dubG9hZEpvYihXS0Rvd25sb2FkUmVmIHdrRG93bmxvYWQpCiAgICAgbV9kb3dubG9hZEpvYnMu
cmVtb3ZlKFdLRG93bmxvYWRHZXRJRCh3a0Rvd25sb2FkKSk7CiB9CiAKK3ZvaWQgRG93bmxvYWRN
YW5hZ2VyRWZsOjpzZXRDbGllbnRDYWxsYmFja3MoRXdrX0Rvd25sb2FkX1JlcXVlc3RlZF9DYiBy
ZXF1ZXN0ZWQsIEV3a19Eb3dubG9hZF9GYWlsZWRfQ2IgZmFpbGVkLCBFd2tfRG93bmxvYWRfQ2Fu
Y2VsbGVkX0NiIGNhbmNlbGxlZCwgIEV3a19Eb3dubG9hZF9GaW5pc2hlZF9DYiBmaW5pc2hlZCwg
dm9pZCogdXNlckRhdGEpCit7CisgICAgbV9jbGllbnRDYWxsYmFja3MubV9yZXF1ZXN0ZWQgPSBy
ZXF1ZXN0ZWQ7CisgICAgbV9jbGllbnRDYWxsYmFja3MubV9mYWlsZWQgPSBmYWlsZWQ7CisgICAg
bV9jbGllbnRDYWxsYmFja3MubV9jYW5jZWxsZWQgPSBjYW5jZWxsZWQ7CisgICAgbV9jbGllbnRD
YWxsYmFja3MubV9maW5pc2hlZCA9IGZpbmlzaGVkOworICAgIG1fY2xpZW50Q2FsbGJhY2tzLm1f
dXNlckRhdGEgPSB1c2VyRGF0YTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJFZmwuaAppbmRleCAx
NDI4ZDNkYzNkOGZiMjcxOTdiYTg4MmM4YzBjOTk1OTE5NGYyNTI1Li4wN2EwODYxY2U0NDBhNDFk
MjAzNmI0YWJmY2Q5Zjg5MWZkY2FmOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvRG93bmxvYWRNYW5hZ2VyRWZsLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYg
RG93bmxvYWRNYW5hZ2VyRWZsX2gKICNkZWZpbmUgRG93bmxvYWRNYW5hZ2VyRWZsX2gKIAorI2lu
Y2x1ZGUgImV3a19jb250ZXh0LmgiCiAjaW5jbHVkZSAiZXdrX2Rvd25sb2FkX2pvYl9wcml2YXRl
LmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KQEAgLTMzLDEyICszNCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RydWN0
IENsaWVudERvd25sb2FkQ2FsbGJhY2tzIHsKKyAgICBFd2tfRG93bmxvYWRfUmVxdWVzdGVkX0Ni
IG1fcmVxdWVzdGVkOworICAgIEV3a19Eb3dubG9hZF9GYWlsZWRfQ2IgbV9mYWlsZWQ7CisgICAg
RXdrX0Rvd25sb2FkX0NhbmNlbGxlZF9DYiBtX2NhbmNlbGxlZDsKKyAgICBFd2tfRG93bmxvYWRf
RmluaXNoZWRfQ2IgbV9maW5pc2hlZDsKKyAgICB2b2lkKiBtX3VzZXJEYXRhOworfTsKKwogY2xh
c3MgRG93bmxvYWRNYW5hZ2VyRWZsIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBEb3dubG9hZE1h
bmFnZXJFZmwoV0tDb250ZXh0UmVmKTsKICAgICB+RG93bmxvYWRNYW5hZ2VyRWZsKCk7CiAKLSAg
ICB2b2lkIHJlZ2lzdGVyRG93bmxvYWRKb2IoV0tEb3dubG9hZFJlZiwgRXdrVmlldyopOworICAg
IHZvaWQgcmVnaXN0ZXJEb3dubG9hZEpvYihXS0Rvd25sb2FkUmVmKTsKKyAgICB2b2lkIHNldENs
aWVudENhbGxiYWNrcyhFd2tfRG93bmxvYWRfUmVxdWVzdGVkX0NiLCBFd2tfRG93bmxvYWRfRmFp
bGVkX0NiLCBFd2tfRG93bmxvYWRfQ2FuY2VsbGVkX0NiLCBFd2tfRG93bmxvYWRfRmluaXNoZWRf
Q2IsIHZvaWQqIHVzZXJEYXRhKTsKIAogcHJpdmF0ZToKICAgICBFd2tEb3dubG9hZEpvYiogZXdr
RG93bmxvYWRKb2IoV0tEb3dubG9hZFJlZik7CkBAIC00OSwxMSArNTksMTQgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYsIFdLU3RyaW5nUmVmIHBhdGgsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAg
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVEYXRhKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwg
dWludDY0X3QgbGVuZ3RoLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkU3RhcnQoV0tDb250ZXh0UmVm
LCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25s
b2FkUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gbV9jb250ZXh0OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxFd2tEb3du
bG9hZEpvYj4gPiBtX2Rvd25sb2FkSm9iczsKKworICAgIENsaWVudERvd25sb2FkQ2FsbGJhY2tz
IG1fY2xpZW50Q2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdFZmwuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3RWZsLmNwcAppbmRleCA1ZWJjMGYxNjgxMzc1
YWZhMzgzYWQwM2YzNTkzMjdhMWY4NTFkZDQ5Li42ODBmZDVhYzlhZTNkNDliMzY4YTY4ZWViYWMw
OGZhMzI1Y2IxN2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YlZpZXdFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0Vm
bC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFdlYlZpZXdFZmw6OnVwZGF0ZVRleHRJbnB1
dFN0YXRlKCkKIHZvaWQgV2ViVmlld0VmbDo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2Fk
UHJveHkqIGRvd25sb2FkKQogewogICAgIEV3a0NvbnRleHQqIGNvbnRleHQgPSBtX2V3a1ZpZXct
PmV3a0NvbnRleHQoKTsKLSAgICBjb250ZXh0LT5kb3dubG9hZE1hbmFnZXIoKS0+cmVnaXN0ZXJE
b3dubG9hZEpvYih0b0FQSShkb3dubG9hZCksIG1fZXdrVmlldyk7CisgICAgY29udGV4dC0+ZG93
bmxvYWRNYW5hZ2VyKCktPnJlZ2lzdGVyRG93bmxvYWRKb2IodG9BUEkoZG93bmxvYWQpKTsKIH0K
IAogdm9pZCBXZWJWaWV3RWZsOjpzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJiB0aGVtZSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzZjBlMDc0
MDU4ODI2ODIzMmMyZTgxNTFjMDE2NzA1NjM1YTUzMWI5Li5mNGIzNWI3MzE1ZjM4M2FjZGYzZjJj
NGMwMTQ0ZmFmOTk4YzJlMjI1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTUtMDItMDkgIEx1a2FzeiBCaWFsZWsg
IDxsLmJpYWxla0BzYW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIENyYXNoIHdoZW4g
IkRvd25sb2FkIExpbmtlZCBGaWxlIiBmcm9tIE1pbmlCcm93c2VyIGNvbnRleHQgbWVudSBpcyBj
bGlja2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MzExNjIKKworICAgICAgICBSZXZpZXdlZCBieSBHeXV5b3VuZyBLaW0uCisKKyAgICAgICAgKiBN
aW5pQnJvd3Nlci9lZmwvbWFpbi5jOgorICAgICAgICAob25fZG93bmxvYWRfcmVxdWVzdCk6Cisg
ICAgICAgIChvbl9kb3dubG9hZF9maW5pc2hlZCk6CisgICAgICAgIChvbl9kb3dubG9hZF9mYWls
ZWQpOgorICAgICAgICAod2luZG93X2NyZWF0ZSk6CisgICAgICAgIEFkYXB0IGRvd25sb2FkIGNh
bGxiYWNrcyB0byBuZXcgY2FsbGJhY2sgbWVjaGFuaXNtCisKIDIwMTUtMDItMDggIENocmlzIEZs
ZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogVm9pY2VPdmVyIGFw
cGVhcnMgdW5yZXNwb25zaXZlIHdoZW4gSmF2YVNjcmlwdCBhbGVydHMgYXJlIHRyaWdnZXJlZCB2
aWEgZm9jdXMgb3IgYmx1ciBldmVudHMKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2Vm
bC9tYWluLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCmluZGV4IGQxNWNlMmIxN2Rh
NTU3MTJlMTdmMmNhYTk0NDU4MDYzMDFlZWEwYzguLjJmYTg1Y2MzMWJiMmM3NjY2ZDFhOTZhYjQy
YWRmNThmZjBmYmZiOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwpAQCAtNzMyLDkgKzczMiw4IEBAIG9u
X2Vycm9yKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lkICpldmVu
dF9pbmZvKQogfQogCiBzdGF0aWMgdm9pZAotb25fZG93bmxvYWRfcmVxdWVzdCh2b2lkICp1c2Vy
X2RhdGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKK29uX2Rvd25s
b2FkX3JlcXVlc3QoRXdrX0Rvd25sb2FkX0pvYiAqZG93bmxvYWQsIHZvaWQgKnVzZXJfZGF0YSkK
IHsKLSAgICBFd2tfRG93bmxvYWRfSm9iICpkb3dubG9hZCA9IChFd2tfRG93bmxvYWRfSm9iICop
ZXZlbnRfaW5mbzsKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93
ICopdXNlcl9kYXRhOwogCiAgICAgRWluYV9TdHJidWYgKmRlc3RpbmF0aW9uX3BhdGggPSBlaW5h
X3N0cmJ1Zl9uZXcoKTsKQEAgLTg0MiwxNiArODQxLDE3IEBAIG9uX2ZpbGVfY2hvb3Nlcl9yZXF1
ZXN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmV3a192aWV3LCB2b2lkICpldmVudF9p
bmZvCiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9kb3dubG9hZF9maW5pc2hlZCh2b2lkICp1c2VyX2Rh
dGEsIEV2YXNfT2JqZWN0ICpld2tfdmlldywgdm9pZCAqZXZlbnRfaW5mbykKK29uX2Rvd25sb2Fk
X2ZpbmlzaGVkKEV3a19Eb3dubG9hZF9Kb2IgKmRvd25sb2FkLCB2b2lkICp1c2VyX2RhdGEpCiB7
Ci0gICAgRXdrX0Rvd25sb2FkX0pvYiAqZG93bmxvYWQgPSAoRXdrX0Rvd25sb2FkX0pvYiAqKWV2
ZW50X2luZm87CiAgICAgSU5GTygiRG93bmxvYWQgZmluaXNoZWQ6ICVzIiwgIGV3a19kb3dubG9h
ZF9qb2JfZGVzdGluYXRpb25fZ2V0KGRvd25sb2FkKSk7CiB9CiAKIHN0YXRpYyB2b2lkCi1vbl9k
b3dubG9hZF9mYWlsZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZXdrX3ZpZXcsIHZv
aWQgKmV2ZW50X2luZm8pCitvbl9kb3dubG9hZF9mYWlsZWQoRXdrX0Rvd25sb2FkX0pvYl9FcnJv
ciAqZG93bmxvYWRfZXJyb3IsIHZvaWQgKnVzZXJfZGF0YSkKIHsKLSAgICBJTkZPKCJEb3dubG9h
ZCBmYWlsZWQhIik7CisgICAgRXdrX0Vycm9yICplcnJvciA9IGRvd25sb2FkX2Vycm9yLT5lcnJv
cjsKKworICAgIElORk8oIkRvd25sb2FkIGZhaWxlZCEgRXJyb3IgY29kZTogJWQsIEVycm9yIGRl
c2NyaXB0aW9uOiAlcywgRXJyb3IgVVJMOiAlcyIsIGV3a19lcnJvcl9jb2RlX2dldChlcnJvciks
IGV3a19lcnJvcl9kZXNjcmlwdGlvbl9nZXQoZXJyb3IpLCBld2tfZXJyb3JfdXJsX2dldChlcnJv
cikpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjI1OCwxMSArMjI1OCw3IEBAIHN0YXRpYyBCcm93
c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmFzX09iamVjdCAqb3BlbmVyLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpCiAgICAgZXdrX3NldHRpbmdzX3ByZWZlcnJlZF9taW5pbXVtX2NvbnRlbnRz
X3dpZHRoX3NldChzZXR0aW5ncywgMCk7CiAgICAgZXdrX3RleHRfY2hlY2tlcl9jb250aW51b3Vz
X3NwZWxsX2NoZWNraW5nX2VuYWJsZWRfc2V0KHNwZWxsX2NoZWNraW5nX2VuYWJsZWQpOwogICAg
IGV3a19zZXR0aW5nc193ZWJfc2VjdXJpdHlfZW5hYmxlZF9zZXQoc2V0dGluZ3MsIHdlYl9zZWN1
cml0eV9lbmFibGVkKTsKLQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5k
b3ctPmV3a192aWV3LCAiYXV0aGVudGljYXRpb24scmVxdWVzdCIsIG9uX2F1dGhlbnRpY2F0aW9u
X3JlcXVlc3QsIHdpbmRvdyk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdp
bmRvdy0+ZXdrX3ZpZXcsICJkb3dubG9hZCxmYWlsZWQiLCBvbl9kb3dubG9hZF9mYWlsZWQsIHdp
bmRvdyk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3Zp
ZXcsICJkb3dubG9hZCxmaW5pc2hlZCIsIG9uX2Rvd25sb2FkX2ZpbmlzaGVkLCB3aW5kb3cpOwot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAiZG93
bmxvYWQscmVxdWVzdCIsIG9uX2Rvd25sb2FkX3JlcXVlc3QsIHdpbmRvdyk7CiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZXdrX3ZpZXcsICJmaWxlLGNob29zZXIs
cmVxdWVzdCIsIG9uX2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0LCB3aW5kb3cpOwogICAgIGV2YXNfb2Jq
ZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCAibG9hZCxlcnJvciIsIG9u
X2Vycm9yLCB3aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5k
b3ctPmV3a192aWV3LCAibG9hZCxwcm92aXNpb25hbCxmYWlsZWQiLCBvbl9lcnJvciwgd2luZG93
KTsKQEAgLTI0MjgsNiArMjQyNCw5IEBAIGVsbV9tYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p
CiAgICAgaWYgKCF3aW5kb3cpCiAgICAgICAgIHJldHVybiBxdWl0KEVJTkFfRkFMU0UsICJDb3Vs
ZCBub3QgY3JlYXRlIGJyb3dzZXIgd2luZG93LiIpOwogCisgICAgLy8gU2V0IGNhbGxiYWNrcyBm
b3IgZG93bmxvYWQgZXZlbnRzLgorICAgIGV3a19jb250ZXh0X2Rvd25sb2FkX2NhbGxiYWNrc19z
ZXQoY29udGV4dCwgb25fZG93bmxvYWRfcmVxdWVzdCwgb25fZG93bmxvYWRfZmFpbGVkLCAwLCBv
bl9kb3dubG9hZF9maW5pc2hlZCwgd2luZG93KTsKKwogICAgIGlmIChhcmdzIDwgYXJnYykgewog
ICAgICAgICBjaGFyICp1cmwgPSB1cmxfZnJvbV91c2VyX2lucHV0KGFyZ3ZbYXJnc10pOwogICAg
ICAgICBld2tfdmlld191cmxfc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIHVybCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>