<?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>40134</bug_id>
          
          <creation_ts>2010-06-03 11:39:17 -0700</creation_ts>
          <short_desc>Web Inspector: sendMessageToFrontend implementation required.</short_desc>
          <delta_ts>2010-06-14 09:04:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>40365</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>mike</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>233854</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-03 11:39:17 -0700</bug_when>
    <thetext>It should be possible to transfer timeline/dom/etc data from inspected page side to the front-end side in serialized format.

Right now when we want to show something at front-end side we are using ScriptFunctionCall in front-end context and ScriptObject for passing the data.
That is not suitable for remote debugging use case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233862</commentid>
    <comment_count>1</comment_count>
      <attachid>57799</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-03 12:07:21 -0700</bug_when>
    <thetext>Created attachment 57799
[patch] initial version.

This is the second step on the way to the remote debugging.
The first one was InspectorValues classes for native serialization to JSON.

This step is a transport for WebInspector data in JSON format between inspected page and a front-end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233868</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-03 12:21:44 -0700</bug_when>
    <thetext>Attachment 57799 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/2995042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233876</commentid>
    <comment_count>3</comment_count>
      <attachid>57805</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-03 12:51:47 -0700</bug_when>
    <thetext>Created attachment 57805
[patch] second iteration. With fixed gtk build and other minor changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233898</commentid>
    <comment_count>4</comment_count>
      <attachid>57799</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-03 13:35:04 -0700</bug_when>
    <thetext>Comment on attachment 57799
[patch] initial version.

&gt; +++ b/WebCore/inspector/InspectorFrontend.cpp
&gt; +InspectorFrontend::InspectorFrontend(ScriptObject webInspector, InspectorClient* inspectorClient)
&gt; +    : m_webInspector(webInspector), m_inspectorClient(inspectorClient)

I think the usual style for this is:

    : m_a(a)
    , m_b(b)


&gt; -  ASSERT(frontend);

Should we change this to ASSERT(webInspector)? Or will this be
expected to handle a case of a null ScriptCobject.


&gt; +++ b/WebCore/inspector/InspectorFrontend.h
&gt; +#include &lt;wtf/RefPtr.h&gt;
&gt; ...
&gt; +        void addRecordToTimeline(const RefPtr&lt;InspectorObject&gt;&amp;);

Is this used in this patch? If not, I would say leave this out
for the next patch.


&gt; +        InspectorClient* m_inspectorClient;

Likewise this is added and included in the constructor above
but it isn&apos;t used yet. I have an idea how it will be used, but
I think before this patch lands there should be another patch
showing an example usage, even if its trivial.


&gt; +++ b/WebCore/inspector/InspectorClient.h
&gt; + virtual bool sendMessageToFrontend(const String&amp; message) = 0;

It might be worth mentioning what the bool return value here
means. If not a comment then certainly something in the ChangeLog.

Great work on this so far!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233921</commentid>
    <comment_count>5</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-03 14:09:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 57799 [details])
&gt; &gt; +++ b/WebCore/inspector/InspectorFrontend.cpp
&gt; &gt; +InspectorFrontend::InspectorFrontend(ScriptObject webInspector, InspectorClient* inspectorClient)
&gt; &gt; +    : m_webInspector(webInspector), m_inspectorClient(inspectorClient)
&gt; 
&gt; I think the usual style for this is:
&gt; 
&gt;     : m_a(a)
&gt;     , m_b(b)

ok

&gt; &gt; -  ASSERT(frontend);
&gt; 
&gt; Should we change this to ASSERT(webInspector)? Or will this be
&gt; expected to handle a case of a null ScriptCobject.

as far as it is transfered by ref we don&apos;t need to check that.


&gt; &gt; +++ b/WebCore/inspector/InspectorFrontend.h
&gt; &gt; +#include &lt;wtf/RefPtr.h&gt;
&gt; &gt; ...
&gt; &gt; +        void addRecordToTimeline(const RefPtr&lt;InspectorObject&gt;&amp;);
&gt; 
&gt; Is this used in this patch? If not, I would say leave this out
&gt; for the next patch.

Already fixed this in the second iteration.


&gt; &gt; +        InspectorClient* m_inspectorClient;
&gt; 
&gt; Likewise this is added and included in the constructor above
&gt; but it isn&apos;t used yet. I have an idea how it will be used, but
&gt; I think before this patch lands there should be another patch
&gt; showing an example usage, even if its trivial.

I&apos;m trying to keep the patches small and  the next patches will 
use m_inspectorClient for the real transfer data.
As result I think we don&apos;t need a special example of usage.

&gt; &gt; +++ b/WebCore/inspector/InspectorClient.h
&gt; &gt; + virtual bool sendMessageToFrontend(const String&amp; message) = 0;
&gt; 
&gt; It might be worth mentioning what the bool return value here
&gt; means. If not a comment then certainly something in the ChangeLog.

ok.

&gt; Great work on this so far!

thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233941</commentid>
    <comment_count>6</comment_count>
      <attachid>57805</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-03 15:04:49 -0700</bug_when>
    <thetext>Comment on attachment 57805
[patch] second iteration. With fixed gtk build and other minor changes.

WebCore/ChangeLog:5
 +          WebInspector: It should be possible to transfer timeline/dom/etc data from inspected page side to the front-end side in serialized format.
Please wrap it at 80 chars or so.

WebCore/inspector/InspectorController.cpp:429
 +  void InspectorController::connectFrontend(const ScriptObject&amp; webInspector)
I think &quot;attach&quot; would be a better name. Also I would leave a comment saying that webInspector parameter is going to go away once we migrate to the new schema.

WebKit/mac/WebCoreSupport/WebInspectorClient.mm:107
 +      return m_webInspectorFrontendClient-&gt;dispatchMessageToFrontend(message);
This one is I think wrong. You are telling client of the inspected page (InspectorClient) to dispatch message on the frontend via the InspectorFrontend&apos;s client. But methods on client are to be called by WebCore, not WebKit. You should simply get a pointer to the Page and dispatch the JS call there.

WebCore/WebCore.Inspector.exp:24
 +  __ZN7WebCore28InspectorFrontendClientLocal25dispatchMessageToFrontendERKNS_6StringE
This one should not be visible to WebKit. In fact, this entire InspectorFrontendClientLocal class should go away since it exposes a way too rich WebCore API to the WebKit.

WebKit/qt/WebCoreSupport/InspectorClientQt.cpp:165
 +      return false;
You plan on implementing these prior to landing, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234379</commentid>
    <comment_count>7</comment_count>
      <attachid>57915</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-04 14:30:36 -0700</bug_when>
    <thetext>Created attachment 57915
[patch] third iteration

Safari specific code for sendMessage was moved to new class InspectorClientLocal.
We have attachFrontend/disconnectFrontend pair and that was inconsistent.
Now it is consistent and I think there is no principal difference between connect/disconnect and attach/detach pairs.
I can use any.
Qt implementation was added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234395</commentid>
    <comment_count>8</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-04 14:47:10 -0700</bug_when>
    <thetext>Attachment 57915 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3104031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234727</commentid>
    <comment_count>9</comment_count>
      <attachid>57915</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-06-06 23:43:39 -0700</bug_when>
    <thetext>Comment on attachment 57915
[patch] third iteration

WebKit/mac/WebCoreSupport/WebInspectorClient.mm:99
 +      m_frontendPage = core([windowController.get() webView]);
Here and in other clients m_frontendPage should be cleared when the frontend is destroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234728</commentid>
    <comment_count>10</comment_count>
      <attachid>57915</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-06-06 23:50:24 -0700</bug_when>
    <thetext>Comment on attachment 57915
[patch] third iteration

WebKit/chromium/src/InspectorClientImpl.cpp:110
 +      if (!devToolsAgent)
is this code reachable? if not, put  ASSERT_NOT_REACHED(); here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234894</commentid>
    <comment_count>11</comment_count>
      <attachid>58040</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-07 09:40:42 -0700</bug_when>
    <thetext>Created attachment 58040
[patch] fourth iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234898</commentid>
    <comment_count>12</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-07 09:47:24 -0700</bug_when>
    <thetext>Attachment 58040 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3133197</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234914</commentid>
    <comment_count>13</comment_count>
      <attachid>58040</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-07 10:20:07 -0700</bug_when>
    <thetext>Comment on attachment 58040
[patch] fourth iteration.

WebCore/inspector/InspectorClient.h:53
 +      virtual bool sendMessageToFrontend(const String&amp; message) = 0;
const String&amp; (no &apos;message&apos;)



WebCore/inspector/InspectorController.h:139
 +      // transport via InspectorClient. After finish webInspector parameter should
... After migration, WebInspector parameter should ...


WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp:116
 +      String dispatchToFrontend(&quot;WebInspector.dispatchMessageToFrontend(&quot;);
String::format


WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:91
 +      m_frontendPage = 0;
What happens when page-&gt;inspectorController()-&gt;close() is called?


WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:127
 +      String dispatchToFrontend(&quot;WebInspector.dispatchMessageToFrontend(&quot;);
Should we format this message using utility method in WebCore?

WebKit/mac/WebCoreSupport/WebInspectorClient.h:46
 +  
no need in blank lines here and below.

WebKit/mac/WebCoreSupport/WebInspectorClient.h:66
 +      virtual bool sendMessageToFrontend(const WebCore::String&amp; key);
key -&gt; message (or even better, remove it!)

WebCore/inspector/InspectorController.cpp:535
 +      m_client-&gt;closeInspectorFrontend();
disconnectFrontend is being called by the WebKit layer. After this call, InspectorController should not do any attempts to talk to its frontend. You don&apos;t need to call WebCore&apos;s disconnectFrontend from WebKit in order to get immediately back to WebKit and execute closeInspectorFrontend...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235161</commentid>
    <comment_count>14</comment_count>
      <attachid>58119</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-08 00:00:25 -0700</bug_when>
    <thetext>Created attachment 58119
[patch] Fifth version. Just try to get qt build happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235163</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-08 00:01:48 -0700</bug_when>
    <thetext>Attachment 58119 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/qt/WebCoreSupport/InspectorClientQt.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 37 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>235258</commentid>
    <comment_count>16</comment_count>
      <attachid>58139</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-08 08:06:31 -0700</bug_when>
    <thetext>Created attachment 58139
[patch] sixth iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235269</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-08 08:52:38 -0700</bug_when>
    <thetext>Attachment 58139 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3181043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235425</commentid>
    <comment_count>18</comment_count>
      <attachid>58139</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-08 12:15:07 -0700</bug_when>
    <thetext>Comment on attachment 58139
[patch] sixth iteration. 

&gt; WebKit/efl/WebCoreSupport/InspectorClientEfl.cpp
&gt; +bool InspectorClientEfl::sendMessageToFrontend(const String&amp;)
&gt; +{
&gt; +    notImpelemented();
&gt; +    return false;
&gt; +}

Eek, typo. s/notImpelemented/notImplemented/


&gt; WebKit/mac/WebCoreSupport/WebInspectorClient.h
&gt; +namespace WebCore {
&gt; +
&gt; +class Page;
&gt; +
&gt; +}

All other forwarding headers like this in WebKit/mac
are formatted like so:

    namespace WebCore {
      class Page;
    }


&gt; WebKit/win/WebCoreSupport/WebInspectorClient.h
&gt; +namespace WebCore {
&gt; +
&gt; +class Page;
&gt; +
&gt; +}

Ditto.


As you know Pavel&apos;s comments are still to be addressed
as well. But its looking good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235450</commentid>
    <comment_count>19</comment_count>
      <attachid>58139</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-08 12:51:21 -0700</bug_when>
    <thetext>Comment on attachment 58139
[patch] sixth iteration. 

WebCore/inspector/InspectorClient.h:45
 +      virtual void closeInspectorFrontend() = 0;
This one is no longer used and can go away, right?


WebCore/inspector/front-end/inspector.js:575
 +  WebInspector.dispatchMessageToFrontend = function(arguments)
Nit: I&apos;d call it dispatchMessageFromBackend. Also, we might want to have try / catch here for the transition phase that would log into WebInspector.log.

WebCore/loader/EmptyClients.h:483
 +      virtual void closeInspectorFrontend() { }
Remove this?

WebKit/chromium/src/InspectorClientImpl.cpp:70
 +  void InspectorClientImpl::closeInspectorFrontend()
Unused?

WebKit/efl/WebCoreSupport/InspectorClientEfl.cpp:41
 +  void InspectorClientEfl::closeInspectorFrontend()
Remove?

WebKit/efl/WebCoreSupport/InspectorClientEfl.h:47
 +      virtual void closeInspectorFrontend();
ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235451</commentid>
    <comment_count>20</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-08 12:51:51 -0700</bug_when>
    <thetext>Pushed wrong button half-review. To be continued.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235454</commentid>
    <comment_count>21</comment_count>
      <attachid>58139</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-08 12:56:34 -0700</bug_when>
    <thetext>Comment on attachment 58139
[patch] sixth iteration. 

One minor cleanup and we are good to land!


WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:168
 +      m_inspectorClient-&gt;closeInspectorClient();
closeInspectorFrontend() ? Also, I&apos;d name it &quot;releaseFrontendPage&quot; since it better reflects what it does.




WebKit/haiku/WebCoreSupport/InspectorClientHaiku.cpp:50
 +  void InspectorClientHaiku::closeInspectorFrontend()
nuke it

WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h:46
 +          virtual void closeInspectorFrontend();
ditto

WebKit/mac/WebCoreSupport/WebInspectorClient.h:58
 +      virtual void closeInspectorFrontend();
same recommendation on the name...

WebKit/qt/WebCoreSupport/InspectorClientQt.cpp:113
 +  void InspectorClientQt::closeInspectorFrontend()
ditto

WebKit/wx/WebKitSupport/InspectorClientWx.cpp:55
 +  void InspectorClientWx::closeInspectorFrontend()
nuke</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235755</commentid>
    <comment_count>22</comment_count>
      <attachid>58238</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-09 06:00:14 -0700</bug_when>
    <thetext>Created attachment 58238
[patch] seventh iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235759</commentid>
    <comment_count>23</comment_count>
      <attachid>58238</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-09 06:16:29 -0700</bug_when>
    <thetext>Comment on attachment 58238
[patch] seventh iteration.

Nit: could you please work on the changelog entry to make our plans more clear?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235792</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-09 08:36:09 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/60891 might have broken GTK Linux 32-bit Debug
The following changes are on the blame list:
http://trac.webkit.org/changeset/60890
http://trac.webkit.org/changeset/60891
http://trac.webkit.org/changeset/60892</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236444</commentid>
    <comment_count>25</comment_count>
      <attachid>58390</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-10 10:56:50 -0700</bug_when>
    <thetext>Created attachment 58390
[patch] next iteration with fixes for gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236451</commentid>
    <comment_count>26</comment_count>
      <attachid>58390</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-06-10 11:05:58 -0700</bug_when>
    <thetext>Comment on attachment 58390
[patch] next iteration with fixes for gtk



WebKit/gtk/WebCoreSupport/InspectorClientGtk.h:50
 +          ~InspectorFrontendClient()
Does it compile? Should be ~InspectorClient() I suppose</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236453</commentid>
    <comment_count>27</comment_count>
      <attachid>58390</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-06-10 11:12:21 -0700</bug_when>
    <thetext>Comment on attachment 58390
[patch] next iteration with fixes for gtk

WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:174
 +      if (m_inspectorClient)
I see m_inspectorClient cleared only in the destructor, do you really need this check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236454</commentid>
    <comment_count>28</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-10 11:14:56 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 58390 [details])
&gt; WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp:174
&gt;  +      if (m_inspectorClient)
&gt; I see m_inspectorClient cleared only in the destructor, do you really need this check?

Really we have no guaranties about the order of deleting the InspectorClient and InspectorFrontend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236462</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-10 11:24:59 -0700</bug_when>
    <thetext>Attachment 58390 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/3177153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236728</commentid>
    <comment_count>30</comment_count>
      <attachid>58454</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-11 01:35:18 -0700</bug_when>
    <thetext>Created attachment 58454
[patch] next iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236782</commentid>
    <comment_count>31</comment_count>
      <attachid>58454</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-11 05:02:17 -0700</bug_when>
    <thetext>Comment on attachment 58454
[patch] next iteration.

Best to land manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237846</commentid>
    <comment_count>32</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-14 09:02:42 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/InspectorClient.h
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/InspectorFrontend.cpp
	M	WebCore/inspector/InspectorFrontend.h
	M	WebCore/inspector/InspectorFrontendClientLocal.cpp
	M	WebCore/inspector/InspectorValues.cpp
	M	WebCore/inspector/front-end/inspector.js
	M	WebCore/loader/EmptyClients.h
	M	WebKit/ChangeLog
	M	WebKit/cf/ChangeLog
	M	WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp
	M	WebKit/chromium/ChangeLog
	M	WebKit/chromium/src/InspectorClientImpl.cpp
	M	WebKit/chromium/src/InspectorClientImpl.h
	M	WebKit/chromium/src/WebDevToolsAgentImpl.cpp
	M	WebKit/efl/WebCoreSupport/InspectorClientEfl.cpp
	M	WebKit/efl/WebCoreSupport/InspectorClientEfl.h
	M	WebKit/gtk/ChangeLog
	M	WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
	M	WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
	M	WebKit/haiku/ChangeLog
	M	WebKit/haiku/WebCoreSupport/InspectorClientHaiku.cpp
	M	WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h
	M	WebKit/mac/ChangeLog
	M	WebKit/mac/WebCoreSupport/WebInspectorClient.h
	M	WebKit/mac/WebCoreSupport/WebInspectorClient.mm
	M	WebKit/qt/ChangeLog
	M	WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
	M	WebKit/qt/WebCoreSupport/InspectorClientQt.h
	M	WebKit/win/ChangeLog
	M	WebKit/win/WebCoreSupport/WebInspectorClient.cpp
	M	WebKit/win/WebCoreSupport/WebInspectorClient.h
	M	WebKit/wx/ChangeLog
	M	WebKit/wx/WebKitSupport/InspectorClientWx.cpp
	M	WebKit/wx/WebKitSupport/InspectorClientWx.h
Committed r61113</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237847</commentid>
    <comment_count>33</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-06-14 09:04:29 -0700</bug_when>
    <thetext>Flaky inspector tests fix for gtk.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebKit/gtk/ChangeLog
	M	WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
Committed r61124</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57799</attachid>
            <date>2010-06-03 12:07:21 -0700</date>
            <delta_ts>2010-06-04 14:30:36 -0700</delta_ts>
            <desc>[patch] initial version.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30190</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTU1MTg3Yy4uOWVkZmJjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wNi0wMyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUg
dG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lk
ZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJp
Z2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUg
d2UgYXJlIHVzaW5nIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBhbmQg
U2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5vdCBz
dWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBXZWJDb3Jl
Lkluc3BlY3Rvci5leHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6
Okluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpmcm9u
dGVuZExvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpkaXNwYXRjaE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmRpc3BhdGNoTWVzc2FnZVRv
RnJvbnRlbmQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorCiAy
MDEwLTA2LTAzICBLaW0gR3LDtm5ob2xtICA8a2ltLjEuZ3JvbmhvbG1Abm9raWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLkluc3BlY3Rvci5leHAgYi9XZWJDb3JlL1dlYkNvcmUuSW5zcGVjdG9yLmV4cAppbmRl
eCA1YmY2ZjA1Li4yZTQyM2I1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuSW5zcGVjdG9y
LmV4cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuSW5zcGVjdG9yLmV4cApAQCAtMjEsNiArMjEsNyBA
QCBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwxN3NldEF0dGFjaGVk
V2luZG93RWIKIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDE5cmVx
dWVzdEF0dGFjaFdpbmRvd0V2CiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwxOXJlcXVlc3REZXRhY2hXaW5kb3dFdgogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsMTl3aW5kb3dPYmplY3RDbGVhcmVkRXYKK19fWk43V2ViQ29yZTI4SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDI1ZGlzcGF0Y2hNZXNzYWdlVG9Gcm9udGVuZEVSS05T
XzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwyNmNo
YW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0RWoKIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbDI3cmVzdG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0RXYKIF9fWk43V2ViQ29y
ZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEMyRVBOU18xOUluc3BlY3RvckNvbnRyb2xs
ZXJFUE5TXzRQYWdlRQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA4NDFjMTVl
Li4yY2UzYTA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQu
aAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNDgsNiArNDgs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0
cmluZyYga2V5LCBTdHJpbmcqIHZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0
dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgPSAwOworCisgICAg
dmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNTllZmQ5YS4uZjczYzViZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQyNiwxMSArNDI2LDEwIEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQp
CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEZyb250ZW5kKFBhc3NP
d25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ+IGZyb250ZW5kKQordm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25uZWN0RnJvbnRlbmQoY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCiB7
Ci0gICAgQVNTRVJUKGZyb250ZW5kKTsKICAgICBtX29wZW5pbmdGcm9udGVuZCA9IGZhbHNlOwot
ICAgIG1fZnJvbnRlbmQgPSBmcm9udGVuZDsKKyAgICBtX2Zyb250ZW5kID0gbmV3IEluc3BlY3Rv
ckZyb250ZW5kKHdlYkluc3BlY3RvciwgbV9jbGllbnQpOwogICAgIHJlbGVhc2VET01BZ2VudCgp
OwogICAgIG1fZG9tQWdlbnQgPSBJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlKG1fY3NzU3RvcmUu
Z2V0KCksIG1fZnJvbnRlbmQuZ2V0KCkpOwogICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYTJjOGE3Ny4uMzM3NGM5NSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTM0LDYgKzEzNCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIHNob3dQYW5lbChTcGVjaWFs
UGFuZWxzKTsKICAgICB2b2lkIGNsb3NlKCk7CisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoY29u
c3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpOwogICAgIHZvaWQgZGlzY29ubmVjdEZyb250
ZW5kKCk7CiAKICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVz
c2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKik7CkBAIC0xNTEsNyArMTUy
LDYgQEAgcHVibGljOgogICAgIHZvaWQgaW5zcGVjdGVkV2luZG93U2NyaXB0T2JqZWN0Q2xlYXJl
ZChGcmFtZSopOwogCiAgICAgYm9vbCB3aW5kb3dWaXNpYmxlKCk7Ci0gICAgdm9pZCBzZXRGcm9u
dGVuZChQYXNzT3duUHRyPEluc3BlY3RvckZyb250ZW5kPik7CiAKICAgICB2b2lkIGRpZENvbW1p
dExvYWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50
KEZyYW1lKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKaW5kZXggZmI2
NmNhZC4uZjQwMGFkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC00OSw4
ICs1MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yRnJvbnRlbmQ6Oklu
c3BlY3RvckZyb250ZW5kKFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IpCi0gICAgOiBtX3dlYklu
c3BlY3Rvcih3ZWJJbnNwZWN0b3IpCitJbnNwZWN0b3JGcm9udGVuZDo6SW5zcGVjdG9yRnJvbnRl
bmQoU2NyaXB0T2JqZWN0IHdlYkluc3BlY3RvciwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JD
bGllbnQpCisgICAgOiBtX3dlYkluc3BlY3Rvcih3ZWJJbnNwZWN0b3IpLCBtX2luc3BlY3RvckNs
aWVudChpbnNwZWN0b3JDbGllbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZC5oCmluZGV4IGZhNzUyYWEuLjg5YjZjYjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuaApAQCAtMzQsMjEgKzM0LDI0IEBACiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IENvbnNvbGVNZXNzYWdlOwogICAgIGNsYXNzIERhdGFiYXNlOwogICAgIGNsYXNzIEZyYW1lOwor
ICAgIGNsYXNzIEluc3BlY3RvckNsaWVudDsKKyAgICBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiAg
ICAgY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2U7CisgICAgY2xhc3MgSW5zcGVjdG9yV29ya2VyUmVz
b3VyY2U7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBTY3JpcHRTdHJpbmc7CiAgICAgY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFN0b3JhZ2U7Ci0gICAgY2xhc3Mg
SW5zcGVjdG9yV29ya2VyUmVzb3VyY2U7CiAKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZCA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbnNwZWN0b3JGcm9u
dGVuZChTY3JpcHRPYmplY3Qgd2ViSW5zcGVjdG9yKTsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRl
bmQoU2NyaXB0T2JqZWN0IHdlYkluc3BlY3RvciwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JD
bGllbnQpOwogICAgICAgICB+SW5zcGVjdG9yRnJvbnRlbmQoKTsKIAogICAgICAgICB2b2lkIGNs
b3NlKCk7CkBAIC0xNDksNiArMTUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHRpbWVsaW5lUHJvZmlsZXJXYXNTdGFydGVkKCk7CiAgICAgICAgIHZvaWQgdGltZWxpbmVQ
cm9maWxlcldhc1N0b3BwZWQoKTsKICAgICAgICAgdm9pZCBhZGRSZWNvcmRUb1RpbWVsaW5lKGNv
bnN0IFNjcmlwdE9iamVjdCYpOworICAgICAgICB2b2lkIGFkZFJlY29yZFRvVGltZWxpbmUoY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mKTsKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAg
ICAgICB2b2lkIGRpZENyZWF0ZVdvcmtlcihjb25zdCBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZSYp
OwpAQCAtMTY5LDYgKzE3Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgog
ICAgICAgICB2b2lkIGNhbGxTaW1wbGVGdW5jdGlvbihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFt
ZSk7CiAgICAgICAgIFNjcmlwdE9iamVjdCBtX3dlYkluc3BlY3RvcjsKKyAgICAgICAgSW5zcGVj
dG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwCmluZGV4IDE4YzUyZGEuLmM2MzIzMmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC04OSw3ICs4OSw3IEBA
IHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZnJvbnRlbmRMb2FkZWQoKQogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBt
X2luc3BlY3RvckNvbnRyb2xsZXItPnNldEZyb250ZW5kKG5ldyBJbnNwZWN0b3JGcm9udGVuZCh3
ZWJJbnNwZWN0b3JPYmopKTsKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmNvbm5lY3RGcm9u
dGVuZCh3ZWJJbnNwZWN0b3JPYmopOwogfQogCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OnJlcXVlc3RBdHRhY2hXaW5kb3coKQpAQCAtMTQyLDYgKzE0MiwxOSBAQCB2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnNldEF0dGFjaGVkV2luZG93KGJvb2wgYXR0YWNo
ZWQpCiAgICAgZnVuY3Rpb24uY2FsbCgpOwogfQogCitib29sIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OmRpc3BhdGNoTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQoreworICAgIFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3JPYmo7CisgICAgaWYgKCFTY3JpcHRH
bG9iYWxPYmplY3Q6OmdldChtX2Zyb250ZW5kU2NyaXB0U3RhdGUsICJXZWJJbnNwZWN0b3IiLCB3
ZWJJbnNwZWN0b3JPYmopKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbih3
ZWJJbnNwZWN0b3JPYmosICJkaXNwYXRjaE1lc3NhZ2VUb0Zyb250ZW5kIik7CisgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQobWVzc2FnZSk7CisgICAgZnVuY3Rpb24uY2FsbCgpOworICAgIHJl
dHVybiB0cnVlOworfQorCiB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlc3Rv
cmVBdHRhY2hlZFdpbmRvd0hlaWdodCgpCiB7CiAgICAgdW5zaWduZWQgaW5zcGVjdGVkUGFnZUhl
aWdodCA9IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUo
KS0+dmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5kZXggY2U2NjFmZS4uOGE1NGQ4ZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaApAQCAt
NTksNiArNTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpID0g
MDsKICAgICBib29sIGNhbkF0dGFjaFdpbmRvdygpOwogCisgICAgYm9vbCBkaXNwYXRjaE1lc3Nh
Z2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpID0gMDsKICAgICB2
b2lkIHNldEF0dGFjaGVkV2luZG93KGJvb2wpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMKaW5kZXggNmI1ZGJkMS4uZTUxMjM0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC01NzEsNiArNTcxLDE0IEBAIFdlYkluc3BlY3Rvci5k
aXNwYXRjaCA9IGZ1bmN0aW9uKCkgewogICAgIHNldFRpbWVvdXQoZGVsYXlEaXNwYXRjaCwgMCk7
CiB9CiAKK1dlYkluc3BlY3Rvci5kaXNwYXRjaE1lc3NhZ2VUb0Zyb250ZW5kID0gZnVuY3Rpb24o
YXJncykKK3sKKyAgICB2YXIgYXJndW1lbnRzID0gSlNPTi5wYXJzZShhcmdzKTsKKyAgICB2YXIg
bWV0aG9kTmFtZSA9IGFyZ3VtZW50cy5zaGlmdCgpOworICAgIFdlYkluc3BlY3RvclttZXRob2RO
YW1lXS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworfQorCisKIFdlYkluc3BlY3Rvci53aW5kb3dS
ZXNpemUgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICBpZiAodGhpcy5jdXJyZW50UGFuZWwpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCmluZGV4IGM2MzA5MzEuLmU0MmVlMWQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCkBAIC00ODYsNiArNDg2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBvcHVs
YXRlU2V0dGluZyhjb25zdCBTdHJpbmcmLCBTdHJpbmcqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZpcnR1
YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gZmFs
c2U7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY1NzU4ZmQuLjc0ODczMDggMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA2LTAzICBJbHlhIFRpa2hvbm92c2t5ICA8bG9p
c2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZWJJbnNwZWN0b3I6IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB0cmFuc2Zl
ciB0aW1lbGluZS9kb20vZXRjIGRhdGEgZnJvbSBpbnNwZWN0ZWQgcGFnZSBzaWRlIHRvIHRoZSBm
cm9udC1lbmQgc2lkZSBpbiBzZXJpYWxpemVkIGZvcm1hdC4KKyAgICAgICAgUmlnaHQgbm93IHdo
ZW4gd2Ugd2FudCB0byBzaG93IHNvbWV0aGluZyBhdCBmcm9udC1lbmQgc2lkZSB3ZSBhcmUgdXNp
bmcgU2NyaXB0RnVuY3Rpb25DYWxsIGluIGZyb250LWVuZCBjb250ZXh0IGFuZCBTY3JpcHRPYmpl
Y3QgZm9yIHBhc3NpbmcgdGhlIGRhdGEuCisgICAgICAgIFRoYXQgaXMgbm90IHN1aXRhYmxlIGZv
ciByZW1vdGUgZGVidWdnaW5nIHVzZSBjYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50SW1wbDo6c2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkRldlRvb2xzQWdlbnRJbXBsOjpzZXRJbnNwZWN0b3JGcm9udGVuZFByb3h5VG9JbnNwZWN0
b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorCiAyMDEwLTA2
LTAyICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3Rv
ckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBs
LmNwcAppbmRleCAyMmI1MTVmLi45MWQxMGQ1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5z
cGVjdG9yQ2xpZW50SW1wbC5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJXZWJEZXZUb29sc0FnZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYkRldlRvb2xzTWVz
c2FnZURhdGEuaCIKICNpbmNsdWRlICJXZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAj
aW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgpAQCAtMTAyLDQgKzEwNCwyMCBAQCB2b2lkIEluc3Bl
Y3RvckNsaWVudEltcGw6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnNldEluc3BlY3RvclNldHRpbmco
a2V5LCB2YWx1ZSk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBXZWJEZXZU
b29sc0FnZW50SW1wbCogZGV2VG9vbHNBZ2VudCA9IHN0YXRpY19jYXN0PFdlYkRldlRvb2xzQWdl
bnRJbXBsKj4obV9pbnNwZWN0ZWRXZWJWaWV3LT5kZXZUb29sc0FnZW50KCkpOworICAgIGlmICgh
ZGV2VG9vbHNBZ2VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViVmVjdG9yPFdl
YlN0cmluZz4gYXJndW1lbnRzKHNpemVfdCgxKSk7CisgICAgYXJndW1lbnRzWzBdID0gbWVzc2Fn
ZTsKKyAgICBXZWJEZXZUb29sc01lc3NhZ2VEYXRhIGRhdGE7CisgICAgZGF0YS5jbGFzc05hbWUg
PSAiVG9vbHNBZ2VudERlbGVnYXRlIjsKKyAgICBkYXRhLm1ldGhvZE5hbWUgPSAiZGlzcGF0Y2hP
bkNsaWVudCI7CisgICAgZGF0YS5hcmd1bWVudHMuc3dhcChhcmd1bWVudHMpOworICAgIGRldlRv
b2xzQWdlbnQtPnNlbmRScGNNZXNzYWdlKGRhdGEpOworICAgIHJldHVybiB0cnVlOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5z
cGVjdG9yQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJ
bXBsLmgKaW5kZXggNzQ0N2QwYy4uMDEzOWI2MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNw
ZWN0b3JDbGllbnRJbXBsLmgKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50
OwogY2xhc3MgV2ViVmlld0ltcGw7CiAKIGNsYXNzIEluc3BlY3RvckNsaWVudEltcGwgOiBwdWJs
aWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50IHsKQEAgLTQ2LDE1ICs0OCwxNCBAQCBwdWJsaWM6
CiAgICAgLy8gSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lkIGluc3Bl
Y3RvckRlc3Ryb3llZCgpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOworCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hs
aWdodChXZWJDb3JlOjpOb2RlKik7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKAotICAgICAgICBjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmIGtleSwKLSAgICAgICAgV2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7Ci0gICAgdmly
dHVhbCB2b2lkIHN0b3JlU2V0dGluZygKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBr
ZXksCi0gICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdmFsdWUpOwogCisgICAgdmlydHVh
bCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgV2ViQ29y
ZTo6U3RyaW5nKiB2YWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBX
ZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB2YWx1ZSk7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYgbWVzc2FnZSk7CiBwcml2YXRlOgogCiAgICAgLy8gVGhlIFdlYlZpZXdJbXBsIG9mIHRoZSBw
YWdlIGJlaW5nIGluc3BlY3RlZDsgZ2V0cyBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCmluZGV4IDhkZGUzMWYu
LmJiM2QwMDIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2Vu
dEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwu
Y3BwCkBAIC00NzAsOCArNDcwLDcgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6c2V0SW5z
cGVjdG9yRnJvbnRlbmRQcm94eVRvSW5zcGVjdG9yQ29udHJvbGxlcigpCiAgICAgU2NyaXB0U3Rh
dGUqIHN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQoCiAgICAgICAgIHY4OjpMb2NhbDx2
ODo6Q29udGV4dD46Ok5ldyhtX3V0aWxpdHlDb250ZXh0KSk7CiAgICAgSW5zcGVjdG9yQ29udHJv
bGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgaWMtPnNldEZyb250ZW5kKG5l
dyBJbnNwZWN0b3JGcm9udGVuZCgKLSAgICAgICAgU2NyaXB0T2JqZWN0KHN0YXRlLCBtX3V0aWxp
dHlDb250ZXh0LT5HbG9iYWwoKSkpKTsKKyAgICBpYy0+Y29ubmVjdEZyb250ZW5kKFNjcmlwdE9i
amVjdChzdGF0ZSwgbV91dGlsaXR5Q29udGV4dC0+R2xvYmFsKCkpKTsKIH0KIAogdm9pZCBXZWJE
ZXZUb29sc0FnZW50SW1wbDo6c2V0QXB1QWdlbnRFbmFibGVkKGJvb2wgZW5hYmxlZCkKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYTM4OTk1ZS4uNWRiMjc3NCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTgzLDYgKzgzLDcgQEAKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKICNpbmNsdWRlICJXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudC5oIgogI2luY2x1ZGUg
IldlYkRldlRvb2xzQWdlbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViRHJhZ0RhdGEuaCIKICNp
bmNsdWRlICJXZWJGcmFtZUltcGwuaCIKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggNDc1M2FlYS4uNmI4ZWU2NSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMC0wNi0wMyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUv
ZG9tL2V0YyBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNp
ZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQg
dG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nIFNjcmlwdEZ1
bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNz
aW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRl
YnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3Rr
Lmg6CisKIDIwMTAtMDYtMDEgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAppbmRleCAzMTdhMDU4Li5jZmU4MDMwIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5j
cHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3Bw
CkBAIC0xMDUsNiArMTA1LDEyIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjpzdG9yZVNldHRpbmco
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB9CiAKIAorYm9vbCBJbnNw
ZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wg
ZGVzdHJveWVkID0gVFJVRTsKIAogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Okluc3BlY3RvckZy
b250ZW5kQ2xpZW50KFdlYktpdFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYktpdFdlYlZp
ZXcqIGluc3BlY3RvcldlYlZpZXcsIFdlYktpdFdlYkluc3BlY3Rvciogd2ViSW5zcGVjdG9yLCBQ
YWdlKiBpbnNwZWN0b3JQYWdlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50R3RrLmgKaW5kZXggY2RiNTM3NS4uNmU1MTIyMSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCkBAIC01Niw2ICs1Niw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBXZWJDb3JlOjpTdHJpbmcqIHZhbHVlKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwg
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiB2YWx1ZSk7CiAKKyAgICAgICAgdmlydHVhbCBib29sIHNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHByaXZhdGU6
CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cK
aW5kZXggMzVhZDk4YS4uYmVkOWFmOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDYt
MDMgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hv
dWxkIGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YSBmcm9tIGlu
c3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9y
bWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0
IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZyBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQt
ZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAgICAg
ICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50SGFpa3U6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuaDoKKwogMjAx
MC0wNS0zMSAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRIYWlrdS5jcHAKaW5kZXggNTkyMzJlOS4uYTcyZGU0ZSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmNwcAor
KysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3Bw
CkBAIC02Nyw1ICs2NywxMSBAQCB2b2lkIEluc3BlY3RvckNsaWVudEhhaWt1OjpzdG9yZVNldHRp
bmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRIYWlrdTo6c2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuaCBi
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oCmluZGV4
IGQ0Mjc2NzAuLjNiNzZjODEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oCkBAIC00OSw2ICs0OSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYga2V5LCBXZWJDb3JlOjpTdHJpbmcqIHZhbHVlKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJiB2YWx1ZSk7CisKKyAgICAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIH07CiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKaW5kZXggZjQ5M2QwNC4uMTg2MDkwZiAxMDA2NDQKLS0tIGEvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxMC0wNi0wMyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9y
OiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRh
IGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFs
aXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21l
dGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nIFNjcmlwdEZ1bmN0aW9uQ2FsbCBp
biBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRh
LgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2Ug
Y2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQw
MTM0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTAtMDYtMDIgIFN0ZXJsaW5n
IFN3aWdhcnQgIDxzc3dpZ2FydEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
dmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKaW5kZXggZWU4MWIyNS4uOTg1MTRhZCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC00Miw2ICs0Miw4IEBAIGNsYXNzIFdlYk5v
ZGVIaWdobGlnaHRlcjsKIGNsYXNzIFdlYlZpZXc7CiAjZW5kaWYKIAorY2xhc3MgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ7CisKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQgewogcHVibGljOgogICAgIFdlYkluc3BlY3RvckNsaWVu
dChXZWJWaWV3ICopOwpAQCAtNTYsMjYgKzU4LDI5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBXZWJDb3JlOjpT
dHJpbmcqIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVlKTsKIAorICAgIHZp
cnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBr
ZXkpOwogcHJpdmF0ZToKICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CiAgICAgUmV0YWluUHRyPFdl
Yk5vZGVIaWdobGlnaHRlcj4gbV9oaWdobGlnaHRlcjsKKyAgICBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudCogbV93ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIH07CiAKKwogY2xhc3MgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbCB7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
V2ViVmlldyosIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIqLCBXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyKiwgV2ViQ29yZTo6UGFnZSopOwogCiAgICAgdmlydHVhbCB2b2lkIGZyb250
ZW5kTG9hZGVkKCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBsb2NhbGl6
ZWRTdHJpbmdzVVJMKCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgaGlkZGVuUGFuZWxz
KCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdUb0Zyb250KCk7CiAgICAgdmlydHVh
bCB2b2lkIGNsb3NlV2luZG93KCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2lu
ZG93KCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpOwotICAgIAorCiAgICAgdmly
dHVhbCB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCk7CiAgICAg
dmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBu
ZXdVUkwpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbSBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCmluZGV4IDY2MWIwZDIuLjYxM2I3ODkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC04Myw2ICs4Myw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQo
V2ViVmlldyAqd2ViVmlldykKIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAsIG1faGlnaGxpZ2h0ZXIo
QWRvcHROUywgW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2Vi
Vmlldzp3ZWJWaWV3XSkKKywgbV93ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCgwKQogewogfQog
CkBAIC05NSw4ICs5NiwxNSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3Rv
ckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbgogewogICAgIFJldGFp
blB0cjxXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyPiB3aW5kb3dDb250cm9sbGVyKEFkb3B0
TlMsIFtbV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0
ZWRXZWJWaWV3Om1fd2ViVmlld10pOwogICAgIFBhZ2UqIGZyb250ZW5kUGFnZSA9IGNvcmUoW3dp
bmRvd0NvbnRyb2xsZXIuZ2V0KCkgd2ViVmlld10pOworICAgIG1fd2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV93ZWJWaWV3LCB3aW5k
b3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBmcm9udGVuZFBhZ2UpOwor
ICAgIGZyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9u
dGVuZENsaWVudChtX3dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KTsKK30KIAotICAgIGZyb250
ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChuZXcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV93ZWJWaWV3LCB3aW5kb3dDb250cm9s
bGVyLmdldCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBmcm9udGVuZFBhZ2UpKTsKK2Jvb2wgV2Vi
SW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJiBtZXNzYWdlKQoreworICAgIGlmICghbV93ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3dlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50LT5kaXNwYXRjaE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9XZWJL
aXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCBjZjRiMjUyLi41ODRk
YzAyIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNi0wMyAgSWx5YSBUaWtob25vdnNreSAgPGxv
aXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNm
ZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUg
ZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5vdyB3
aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVz
aW5nIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2Jq
ZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBm
b3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRR
dDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRRdC5oOgorCiAyMDEwLTA2LTAyICBUYXN1a3UgU3V6dWtpICA8dGFzdWt1LnN1
enVraUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1hamku
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQu
Y3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAppbmRl
eCAyZDExNzAwLi43YTBhN2UwIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRRdC5jcHAKQEAgLTE2MCw2ICsxNjAsMTEgQEAgdm9pZCBJbnNwZWN0b3JDbGll
bnRRdDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNldHRp
bmcpCiAjZW5kaWYgLy8gUVRfTk9fU0VUVElOR1MKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRR
dDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIHN0YXRpYyBTdHJpbmcgdmFyaWFudFRvU2V0dGluZyhjb25zdCBR
VmFyaWFudCYgcXZhcmlhbnQpCiB7CiAgICAgU3RyaW5nIHJldFZhbDsKZGlmZiAtLWdpdCBhL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKaW5kZXggNGJlYWRhYi4uMjExN2IwOSAx
MDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgK
KysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKQEAgLTU4
LDYgKzU4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29u
c3QgU3RyaW5nJiBrZXksIFN0cmluZyogdmFsdWUpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNl
dHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCisgICAgdmly
dHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwor
CiBwcml2YXRlOgogICAgIFFXZWJQYWdlKiBtX2luc3BlY3RlZFdlYlBhZ2U7CiB9OwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAy
OTc5NTU2Li5mNjFkYWYxIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA2LTAzICBJbHlhIFRp
a2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IEl0IHNob3VsZCBiZSBwb3Nz
aWJsZSB0byB0cmFuc2ZlciB0aW1lbGluZS9kb20vZXRjIGRhdGEgZnJvbSBpbnNwZWN0ZWQgcGFn
ZSBzaWRlIHRvIHRoZSBmcm9udC1lbmQgc2lkZSBpbiBzZXJpYWxpemVkIGZvcm1hdC4KKyAgICAg
ICAgUmlnaHQgbm93IHdoZW4gd2Ugd2FudCB0byBzaG93IHNvbWV0aGluZyBhdCBmcm9udC1lbmQg
c2lkZSB3ZSBhcmUgdXNpbmcgU2NyaXB0RnVuY3Rpb25DYWxsIGluIGZyb250LWVuZCBjb250ZXh0
IGFuZCBTY3JpcHRPYmplY3QgZm9yIHBhc3NpbmcgdGhlIGRhdGEuCisgICAgICAgIFRoYXQgaXMg
bm90IHN1aXRhYmxlIGZvciByZW1vdGUgZGVidWdnaW5nIHVzZSBjYXNlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0
b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6
OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lmg6CisKIDIwMTAtMDUtMzAgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0u
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGF0dGVtcHQgdG8gZml4IHRoZSBidWlsZCBhZnRl
ciBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC82MDQxOC4KZGlmZiAtLWdpdCBhL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCAzYzI2M2U1Li5k
NjFhZTZmIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCkBAIC02OCw3ICs2OCw4IEBAIHN0YXRpYyBDRkJ1bmRsZVJlZiBnZXRXZWJLaXRC
dW5kbGUoKQogfQogCiBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJW
aWV3KiB3ZWJWaWV3KQotICAgIDogbV9pbnNwZWN0ZWRXZWJWaWV3KHdlYlZpZXcpCisgICAgOiBt
X2luc3BlY3RlZFdlYlZpZXcod2ViVmlldyksCisgICAgICBtX2Zyb250ZW5kQ2xpZW50KDApCiB7
CiAgICAgQVNTRVJUKG1faW5zcGVjdGVkV2ViVmlldyk7CiAgICAgbV9pbnNwZWN0ZWRXZWJWaWV3
LT52aWV3V2luZG93KChPTEVfSEFORExFKikmbV9pbnNwZWN0ZWRXZWJWaWV3SHduZCk7CkBAIC0x
NzMsNyArMTc0LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9u
dGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb24KICAgICAgICAgcmV0dXJuOwog
CiAgICAgUGFnZSogcGFnZSA9IGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKTsKLSAgICBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG5ldyBX
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVk
V2ViVmlld0h3bmQsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZp
ZXdId25kLCB0aGlzKSk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudChtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQs
IGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlz
KTsKKyAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluc3BlY3RvckZyb250ZW5k
Q2xpZW50KG1fZnJvbnRlbmRDbGllbnQpOwogICAgIG1fZnJvbnRlbmRId25kID0gZnJvbnRlbmRI
d25kOwogfQogCkBAIC0yMDUsNiArMjA3LDEzIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50Ojp1
cGRhdGVIaWdobGlnaHQoKQogICAgICAgICBtX2hpZ2hsaWdodC0+dXBkYXRlKCk7CiB9CiAKK2Jv
b2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29y
ZTo6U3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmICghbV9mcm9udGVuZENsaWVudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2Zyb250ZW5kQ2xpZW50LT5kaXNwYXRjaE1l
c3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpOworfQorCiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywg
SFdORCBpbnNwZWN0ZWRXZWJWaWV3SHduZCwgSFdORCBmcm9udGVuZEh3bmQsIGNvbnN0IENPTVB0
cjxXZWJWaWV3PiYgZnJvbnRlbmRXZWJWaWV3LCBIV05EIGZyb250ZW5kV2ViVmlld0h3bmQsIFdl
Ykluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQogICAgIDogSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbChpbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKSwgIGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKSkKICAgICAsIG1faW5zcGVjdGVkV2Vi
VmlldyhpbnNwZWN0ZWRXZWJWaWV3KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNjQ3NzNhNS4uMjRjOWFkYSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAorY2xhc3Mg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0OwogY2xh
c3MgV2ViVmlldzsKIApAQCAtNTgsMTAgKzU5LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0
ZUhpZ2hsaWdodCgpOwogICAgIHZvaWQgZnJvbnRlbmRDbG9zaW5nKCkgeyBtX2Zyb250ZW5kSHdu
ZCA9IDA7IH0KIAorICAgIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYgbWVzc2FnZSk7CisKIHByaXZhdGU6CiAgICAgfldlYkluc3BlY3RvckNsaWVudCgp
OwogCiAgICAgV2ViVmlldyogbV9pbnNwZWN0ZWRXZWJWaWV3OworICAgIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OwogICAgIEhXTkQgbV9pbnNwZWN0ZWRXZWJW
aWV3SHduZDsKICAgICBIV05EIG1fZnJvbnRlbmRId25kOwogCmRpZmYgLS1naXQgYS9XZWJLaXQv
d3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCBhYjI1MTAyLi45OWI0Zjcy
IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93eC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wNi0wMyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNs
b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIg
dGltZWxpbmUvZG9tL2V0YyBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJv
bnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVu
IHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5n
IFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0
IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3Ig
cmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFd4Ojpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50V3guaDoKKwogMjAxMC0wNS0yNyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xs
aXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIEJ1aWxkIGZpeGVzIGZvciBXaW5kb3dzIGFmdGVy
IHJlY2VudCBjaGFuZ2VzLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50V3guY3BwIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50V3guY3BwCmluZGV4IDVkYzlhYzcuLjYxYTEyODcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcAorKysgYi9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAKQEAgLTcyLDQgKzcyLDEwIEBAIHZvaWQgSW5z
cGVjdG9yQ2xpZW50V3g6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBzZXR0aW5nKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9y
Q2xpZW50V3g6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH07CmRpZmYg
LS1naXQgYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oIGIvV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaAppbmRleCA3Njc1ZGMxLi4x
ZTVjNWE3IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRXeC5oCisrKyBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgK
QEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0
dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisK
KyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57805</attachid>
            <date>2010-06-03 12:51:47 -0700</date>
            <delta_ts>2010-06-04 14:30:36 -0700</delta_ts>
            <desc>[patch] second iteration. With fixed gtk build and other minor changes.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30827</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTU1MTg3Yy4uOWVkZmJjOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wNi0wMyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUg
dG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lk
ZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJp
Z2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUg
d2UgYXJlIHVzaW5nIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBhbmQg
U2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5vdCBz
dWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBXZWJDb3Jl
Lkluc3BlY3Rvci5leHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6
Okluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpmcm9u
dGVuZExvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpkaXNwYXRjaE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmRpc3BhdGNoTWVzc2FnZVRv
RnJvbnRlbmQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorCiAy
MDEwLTA2LTAzICBLaW0gR3LDtm5ob2xtICA8a2ltLjEuZ3JvbmhvbG1Abm9raWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLkluc3BlY3Rvci5leHAgYi9XZWJDb3JlL1dlYkNvcmUuSW5zcGVjdG9yLmV4cAppbmRl
eCA1YmY2ZjA1Li4yZTQyM2I1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuSW5zcGVjdG9y
LmV4cAorKysgYi9XZWJDb3JlL1dlYkNvcmUuSW5zcGVjdG9yLmV4cApAQCAtMjEsNiArMjEsNyBA
QCBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwxN3NldEF0dGFjaGVk
V2luZG93RWIKIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDE5cmVx
dWVzdEF0dGFjaFdpbmRvd0V2CiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwxOXJlcXVlc3REZXRhY2hXaW5kb3dFdgogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsMTl3aW5kb3dPYmplY3RDbGVhcmVkRXYKK19fWk43V2ViQ29yZTI4SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDI1ZGlzcGF0Y2hNZXNzYWdlVG9Gcm9udGVuZEVSS05T
XzZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwyNmNo
YW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0RWoKIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbDI3cmVzdG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0RXYKIF9fWk43V2ViQ29y
ZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEMyRVBOU18xOUluc3BlY3RvckNvbnRyb2xs
ZXJFUE5TXzRQYWdlRQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA4NDFjMTVl
Li4yY2UzYTA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQu
aAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNDgsNiArNDgs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0
cmluZyYga2V5LCBTdHJpbmcqIHZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0
dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgPSAwOworCisgICAg
dmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNTllZmQ5YS4uZjczYzViZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQyNiwxMSArNDI2LDEwIEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQp
CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEZyb250ZW5kKFBhc3NP
d25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ+IGZyb250ZW5kKQordm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25uZWN0RnJvbnRlbmQoY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCiB7
Ci0gICAgQVNTRVJUKGZyb250ZW5kKTsKICAgICBtX29wZW5pbmdGcm9udGVuZCA9IGZhbHNlOwot
ICAgIG1fZnJvbnRlbmQgPSBmcm9udGVuZDsKKyAgICBtX2Zyb250ZW5kID0gbmV3IEluc3BlY3Rv
ckZyb250ZW5kKHdlYkluc3BlY3RvciwgbV9jbGllbnQpOwogICAgIHJlbGVhc2VET01BZ2VudCgp
OwogICAgIG1fZG9tQWdlbnQgPSBJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlKG1fY3NzU3RvcmUu
Z2V0KCksIG1fZnJvbnRlbmQuZ2V0KCkpOwogICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYTJjOGE3Ny4uMzM3NGM5NSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTM0LDYgKzEzNCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIHNob3dQYW5lbChTcGVjaWFs
UGFuZWxzKTsKICAgICB2b2lkIGNsb3NlKCk7CisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoY29u
c3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpOwogICAgIHZvaWQgZGlzY29ubmVjdEZyb250
ZW5kKCk7CiAKICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVz
c2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKik7CkBAIC0xNTEsNyArMTUy
LDYgQEAgcHVibGljOgogICAgIHZvaWQgaW5zcGVjdGVkV2luZG93U2NyaXB0T2JqZWN0Q2xlYXJl
ZChGcmFtZSopOwogCiAgICAgYm9vbCB3aW5kb3dWaXNpYmxlKCk7Ci0gICAgdm9pZCBzZXRGcm9u
dGVuZChQYXNzT3duUHRyPEluc3BlY3RvckZyb250ZW5kPik7CiAKICAgICB2b2lkIGRpZENvbW1p
dExvYWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFyZW50
KEZyYW1lKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKaW5kZXggZmI2
NmNhZC4uZjQwMGFkZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC00OSw4
ICs1MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yRnJvbnRlbmQ6Oklu
c3BlY3RvckZyb250ZW5kKFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IpCi0gICAgOiBtX3dlYklu
c3BlY3Rvcih3ZWJJbnNwZWN0b3IpCitJbnNwZWN0b3JGcm9udGVuZDo6SW5zcGVjdG9yRnJvbnRl
bmQoU2NyaXB0T2JqZWN0IHdlYkluc3BlY3RvciwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JD
bGllbnQpCisgICAgOiBtX3dlYkluc3BlY3Rvcih3ZWJJbnNwZWN0b3IpLCBtX2luc3BlY3RvckNs
aWVudChpbnNwZWN0b3JDbGllbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZC5oCmluZGV4IGZhNzUyYWEuLjZlNDFhMWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuaApAQCAtMzQsMjEgKzM0LDIzIEBACiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0Lmgi
CiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNz
IENvbnNvbGVNZXNzYWdlOwogICAgIGNsYXNzIERhdGFiYXNlOwogICAgIGNsYXNzIEZyYW1lOwor
ICAgIGNsYXNzIEluc3BlY3RvckNsaWVudDsKICAgICBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZTsK
KyAgICBjbGFzcyBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZTsKICAgICBjbGFzcyBOb2RlOwogICAg
IGNsYXNzIFNjcmlwdFN0cmluZzsKICAgICBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAg
ICAgY2xhc3MgU3RvcmFnZTsKLSAgICBjbGFzcyBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZTsKIAog
ICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kKFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0
b3IpOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZChTY3JpcHRPYmplY3Qgd2ViSW5zcGVjdG9y
LCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCk7CiAgICAgICAgIH5JbnNwZWN0b3JG
cm9udGVuZCgpOwogCiAgICAgICAgIHZvaWQgY2xvc2UoKTsKQEAgLTE2OSw2ICsxNzEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBjYWxsU2ltcGxl
RnVuY3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUpOwogICAgICAgICBTY3JpcHRPYmpl
Y3QgbV93ZWJJbnNwZWN0b3I7CisgICAgICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JD
bGllbnQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCAxOGM1MmRh
Li5jNjMyMzJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OmZyb250ZW5kTG9hZGVkKCkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5z
ZXRGcm9udGVuZChuZXcgSW5zcGVjdG9yRnJvbnRlbmQod2ViSW5zcGVjdG9yT2JqKSk7CisgICAg
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25uZWN0RnJvbnRlbmQod2ViSW5zcGVjdG9yT2JqKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpyZXF1ZXN0QXR0YWNoV2lu
ZG93KCkKQEAgLTE0Miw2ICsxNDIsMTkgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpzZXRBdHRhY2hlZFdpbmRvdyhib29sIGF0dGFjaGVkKQogICAgIGZ1bmN0aW9uLmNhbGwo
KTsKIH0KIAorYm9vbCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3Nh
Z2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBTY3JpcHRPYmplY3Qg
d2ViSW5zcGVjdG9yT2JqOworICAgIGlmICghU2NyaXB0R2xvYmFsT2JqZWN0OjpnZXQobV9mcm9u
dGVuZFNjcmlwdFN0YXRlLCAiV2ViSW5zcGVjdG9yIiwgd2ViSW5zcGVjdG9yT2JqKSkgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24od2ViSW5zcGVjdG9yT2JqLCAiZGlzcGF0
Y2hNZXNzYWdlVG9Gcm9udGVuZCIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG1lc3Nh
Z2UpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpyZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQo
KQogewogICAgIHVuc2lnbmVkIGluc3BlY3RlZFBhZ2VIZWlnaHQgPSBtX2luc3BlY3RvckNvbnRy
b2xsZXItPmluc3BlY3RlZFBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+dmlzaWJsZUhlaWdo
dCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5oCmluZGV4IGNlNjYxZmUuLjhhNTRkOGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAgLTU5LDYgKzU5LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKSA9IDA7CiAgICAgYm9vbCBjYW5BdHRhY2hX
aW5kb3coKTsKIAorICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOworCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KHVuc2lnbmVkKSA9IDA7CiAgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvdyhi
b29sKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDZiNWRi
ZDEuLmU1MTIzNDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpA
QCAtNTcxLDYgKzU3MSwxNCBAQCBXZWJJbnNwZWN0b3IuZGlzcGF0Y2ggPSBmdW5jdGlvbigpIHsK
ICAgICBzZXRUaW1lb3V0KGRlbGF5RGlzcGF0Y2gsIDApOwogfQogCitXZWJJbnNwZWN0b3IuZGlz
cGF0Y2hNZXNzYWdlVG9Gcm9udGVuZCA9IGZ1bmN0aW9uKGFyZ3MpCit7CisgICAgdmFyIGFyZ3Vt
ZW50cyA9IEpTT04ucGFyc2UoYXJncyk7CisgICAgdmFyIG1ldGhvZE5hbWUgPSBhcmd1bWVudHMu
c2hpZnQoKTsKKyAgICBXZWJJbnNwZWN0b3JbbWV0aG9kTmFtZV0uYXBwbHkodGhpcywgYXJndW1l
bnRzKTsKK30KKworCiBXZWJJbnNwZWN0b3Iud2luZG93UmVzaXplID0gZnVuY3Rpb24oZXZlbnQp
CiB7CiAgICAgaWYgKHRoaXMuY3VycmVudFBhbmVsKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmggYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBj
NjMwOTMxLi5lNDJlZTFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAorKysgYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtNDg2LDYgKzQ4Niw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5n
JiwgU3RyaW5nKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwppbmRleCA2NTc1OGZkLi43NDg3MzA4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxMC0wNi0wMyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9y
OiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRh
IGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFs
aXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21l
dGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nIFNjcmlwdEZ1bmN0aW9uQ2FsbCBp
biBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRh
LgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2Ug
Y2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQw
MTM0CisKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Okluc3BlY3RvckNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAg
ICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6
c2V0SW5zcGVjdG9yRnJvbnRlbmRQcm94eVRvSW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAg
ICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKwogMjAxMC0wNi0wMiAgVG9ueSBDaGFuZyAgPHRvbnlA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKaW5kZXggMjJiNTE1Zi4uOTFk
MTBkNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBs
LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCkBA
IC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2Vu
dEltcGwuaCIKKyNpbmNsdWRlICJXZWJEZXZUb29sc01lc3NhZ2VEYXRhLmgiCiAjaW5jbHVkZSAi
V2ViUmVjdC5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldlYlVSTFJlcXVlc3Qu
aCIKQEAgLTEwMiw0ICsxMDQsMjAgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjpzdG9yZVNl
dHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9pbnNw
ZWN0ZWRXZWJWaWV3LT5zZXRJbnNwZWN0b3JTZXR0aW5nKGtleSwgdmFsdWUpOwogfQogCitib29s
IEluc3BlY3RvckNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgV2ViRGV2VG9vbHNBZ2VudEltcGwqIGRldlRvb2xz
QWdlbnQgPSBzdGF0aWNfY2FzdDxXZWJEZXZUb29sc0FnZW50SW1wbCo+KG1faW5zcGVjdGVkV2Vi
Vmlldy0+ZGV2VG9vbHNBZ2VudCgpKTsKKyAgICBpZiAoIWRldlRvb2xzQWdlbnQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGFyZ3VtZW50cyhzaXpl
X3QoMSkpOworICAgIGFyZ3VtZW50c1swXSA9IG1lc3NhZ2U7CisgICAgV2ViRGV2VG9vbHNNZXNz
YWdlRGF0YSBkYXRhOworICAgIGRhdGEuY2xhc3NOYW1lID0gIlRvb2xzQWdlbnREZWxlZ2F0ZSI7
CisgICAgZGF0YS5tZXRob2ROYW1lID0gImRpc3BhdGNoT25DbGllbnQiOworICAgIGRhdGEuYXJn
dW1lbnRzLnN3YXAoYXJndW1lbnRzKTsKKyAgICBkZXZUb29sc0FnZW50LT5zZW5kUnBjTWVzc2Fn
ZShkYXRhKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCmluZGV4IDc0NDdkMGMuLjAx
MzliNjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1w
bC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCkBAIC0z
Niw2ICszNiw4IEBACiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNzIFdlYlZpZXdJbXBsOwog
CiBjbGFzcyBJbnNwZWN0b3JDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudCB7CkBAIC00NiwxNSArNDgsMTQgQEAgcHVibGljOgogICAgIC8vIEluc3BlY3RvckNsaWVu
dCBtZXRob2RzOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXIqKTsKKwogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoV2ViQ29yZTo6Tm9kZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHBvcHVs
YXRlU2V0dGluZygKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksCi0gICAgICAg
IFdlYkNvcmU6OlN0cmluZyogdmFsdWUpOwotICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmco
Ci0gICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LAotICAgICAgICBjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIHZhbHVlKTsKIAorICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmco
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIFdlYkNvcmU6OlN0cmluZyogdmFsdWUpOworICAg
IHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYgdmFsdWUpOworCisgICAgdmlydHVhbCBib29sIHNlbmRNZXNz
YWdlVG9Gcm9udGVuZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG1lc3NhZ2UpOwogcHJpdmF0ZToK
IAogICAgIC8vIFRoZSBXZWJWaWV3SW1wbCBvZiB0aGUgcGFnZSBiZWluZyBpbnNwZWN0ZWQ7IGdl
dHMgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRl
dlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCA4ZGRlMzFmLi5iYjNkMDAyIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApAQCAtNDcwLDggKzQ3MCw3IEBA
IHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnNldEluc3BlY3RvckZyb250ZW5kUHJveHlUb0lu
c3BlY3RvckNvbnRyb2xsZXIoKQogICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRl
Ojpmb3JDb250ZXh0KAogICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV91dGls
aXR5Q29udGV4dCkpOwogICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9yQ29u
dHJvbGxlcigpOwotICAgIGljLT5zZXRGcm9udGVuZChuZXcgSW5zcGVjdG9yRnJvbnRlbmQoCi0g
ICAgICAgIFNjcmlwdE9iamVjdChzdGF0ZSwgbV91dGlsaXR5Q29udGV4dC0+R2xvYmFsKCkpKSk7
CisgICAgaWMtPmNvbm5lY3RGcm9udGVuZChTY3JpcHRPYmplY3Qoc3RhdGUsIG1fdXRpbGl0eUNv
bnRleHQtPkdsb2JhbCgpKSk7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnNldEFw
dUFnZW50RW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CmluZGV4IGEzODk5NWUuLjVkYjI3NzQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CkBAIC04Myw2ICs4Myw3IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUeXBp
bmdDb21tYW5kLmgiCiAjaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdC5oIgorI2luY2x1
ZGUgIldlYkRldlRvb2xzQWdlbnQuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50UHJpdmF0
ZS5oIgogI2luY2x1ZGUgIldlYkRyYWdEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgi
CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVm
bC5jcHAgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAK
aW5kZXggODg5MmQ3Zi4uMzVhNjA2OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcApAQCAtNTgsNCArNTgsMTEgQEAgdm9pZCBJbnNwZWN0
b3JDbGllbnRFZmw6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50RWZsOjpzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG5vdEltcGVs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworCiB9CmRpZmYgLS1naXQgYS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oIGIvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAppbmRleCAzMGM5Y2FmLi5jZjRiN2Ex
IDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVm
bC5oCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgK
QEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0
dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisK
KyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7CiB9OwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCmluZGV4IDQ3NTNhZWEuLjZiOGVlNjUgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTAtMDYtMDMgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3Bl
Y3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMg
ZGF0YSBmcm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNl
cmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cg
c29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZyBTY3JpcHRGdW5jdGlvbkNh
bGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUg
ZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcg
dXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00MDEzNAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRl
bmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oOgorCiAy
MDEwLTA2LTAxICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEd0ay5jcHAKaW5kZXggMzE3YTA1OC4uY2ZlODAzMCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCisrKyBi
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcApAQCAtMTA1
LDYgKzEwNSwxMiBAQCB2b2lkIEluc3BlY3RvckNsaWVudDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogfQogCiAKK2Jvb2wgSW5zcGVjdG9yQ2xp
ZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBib29sIGRlc3Ryb3ll
ZCA9IFRSVUU7CiAKIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpJbnNwZWN0b3JGcm9udGVuZENs
aWVudChXZWJLaXRXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJLaXRXZWJWaWV3KiBpbnNw
ZWN0b3JXZWJWaWV3LCBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvciwgUGFnZSogaW5z
cGVjdG9yUGFnZSkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEd0ay5oCmluZGV4IGNkYjUzNzUuLmMwOGRkYzIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaApAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIGtleSwgV2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYgdmFsdWUpOwogCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtZXNzYWdlKTsKICAgICBwcml2YXRl
OgogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX2luc3BlY3RlZFdlYlZpZXc7CiAgICAgfTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9n
CmluZGV4IDM1YWQ5OGEuLmJlZDlhZjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA2
LTAzICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IEl0IHNo
b3VsZCBiZSBwb3NzaWJsZSB0byB0cmFuc2ZlciB0aW1lbGluZS9kb20vZXRjIGRhdGEgZnJvbSBp
bnNwZWN0ZWQgcGFnZSBzaWRlIHRvIHRoZSBmcm9udC1lbmQgc2lkZSBpbiBzZXJpYWxpemVkIGZv
cm1hdC4KKyAgICAgICAgUmlnaHQgbm93IHdoZW4gd2Ugd2FudCB0byBzaG93IHNvbWV0aGluZyBh
dCBmcm9udC1lbmQgc2lkZSB3ZSBhcmUgdXNpbmcgU2NyaXB0RnVuY3Rpb25DYWxsIGluIGZyb250
LWVuZCBjb250ZXh0IGFuZCBTY3JpcHRPYmplY3QgZm9yIHBhc3NpbmcgdGhlIGRhdGEuCisgICAg
ICAgIFRoYXQgaXMgbm90IHN1aXRhYmxlIGZvciByZW1vdGUgZGVidWdnaW5nIHVzZSBjYXNlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEhhaWt1OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1Lmg6CisKIDIw
MTAtMDUtMzEgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRIYWlrdS5jcHAgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50SGFpa3UuY3BwCmluZGV4IDU5MjMyZTkuLmE3MmRlNGUgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5jcHAK
KysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmNw
cApAQCAtNjcsNSArNjcsMTEgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRIYWlrdTo6c3RvcmVTZXR0
aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50SGFpa3U6OnNlbmRNZXNzYWdlVG9G
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1Lmgg
Yi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuaAppbmRl
eCBkNDI3NjcwLi4zZTBhM2M1IDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuaAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuaApAQCAtNDksNiArNDksOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIGtleSwgV2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYgdmFsdWUpOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtZXNzYWdlKTsKICAgICB9OwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBi
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGY0OTNkMDQuLjE4NjA5MGYgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTAtMDYtMDMgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
Ykluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2Rv
bS9ldGMgZGF0YSBmcm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRl
IGluIHNlcmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRv
IHNob3cgc29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZyBTY3JpcHRGdW5j
dGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2lu
ZyB0aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1
Z2dpbmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorCiAyMDEwLTA2LTAy
ICBTdGVybGluZyBTd2lnYXJ0ICA8c3N3aWdhcnRAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXZpZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oCmluZGV4IGVlODFiMjUuLjk4NTE0YWQgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNDIsNiArNDIsOCBAQCBj
bGFzcyBXZWJOb2RlSGlnaGxpZ2h0ZXI7CiBjbGFzcyBXZWJWaWV3OwogI2VuZGlmCiAKK2NsYXNz
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OworCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQg
OiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICBXZWJJbnNw
ZWN0b3JDbGllbnQoV2ViVmlldyAqKTsKQEAgLTU2LDI2ICs1OCwyOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwg
V2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB2YWx1ZSk7
CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYga2V5KTsKIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogICAgIFJl
dGFpblB0cjxXZWJOb2RlSGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7CisgICAgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQqIG1fd2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiB9OwogCisK
IGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwgewogcHVibGljOgogICAgIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50KFdlYlZpZXcqLCBXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyKiwgV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlciosIFdlYkNvcmU6OlBhZ2UqKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBmcm9udGVuZExvYWRlZCgpOwotICAgIAorCiAgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJp
bmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGhp
ZGRlblBhbmVscygpOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lk
IGF0dGFjaFdpbmRvdygpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKTsKLSAgICAK
KwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWln
aHQpOwogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYgbmV3VVJMKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5tbQppbmRleCA2NjFiMGQyLi42MTNiNzg5IDEwMDY0NAotLS0gYS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtODMsNiArODMsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVj
dG9yQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiA6IG1fd2ViVmlldyh3ZWJWaWV3KQogLCBtX2hp
Z2hsaWdodGVyKEFkb3B0TlMsIFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0aElu
c3BlY3RlZFdlYlZpZXc6d2ViVmlld10pCissIG1fd2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
MCkKIHsKIH0KIApAQCAtOTUsOCArOTYsMTUgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9w
ZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb24KIHsK
ICAgICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlcj4gd2luZG93Q29udHJv
bGxlcihBZG9wdE5TLCBbW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRX
aXRoSW5zcGVjdGVkV2ViVmlldzptX3dlYlZpZXddKTsKICAgICBQYWdlKiBmcm9udGVuZFBhZ2Ug
PSBjb3JlKFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHdlYlZpZXddKTsKKyAgICBtX3dlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fd2Vi
Vmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgZnJvbnRl
bmRQYWdlKTsKKyAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQobV93ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCk7Cit9CiAK
LSAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQobmV3IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fd2ViVmlldywgd2lu
ZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgZnJvbnRlbmRQYWdlKSk7
Citib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIW1fd2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV93ZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudC0+ZGlzcGF0Y2hNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodChOb2RlKiBub2RlKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggY2Y0
YjI1Mi4uNTg0ZGMwMiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJL
aXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDYtMDMgIElseWEgVGlraG9u
b3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxl
IHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YSBmcm9tIGluc3BlY3RlZCBwYWdlIHNp
ZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBS
aWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRl
IHdlIGFyZSB1c2luZyBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5k
IFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qg
c3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50UXQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoKKwogMjAxMC0wNi0wMiAgVGFzdWt1IFN1enVraSAg
PHRhc3VrdS5zdXp1a2lAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNoaW5pY2hp
cm8gSGFtYWppLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRR
dC5jcHAKaW5kZXggMmQxMTcwMC4uN2EwYTdlMCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCkBAIC0xNjAsNiArMTYwLDExIEBAIHZvaWQgSW5z
cGVjdG9yQ2xpZW50UXQ6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiBzZXR0aW5nKQogI2VuZGlmIC8vIFFUX05PX1NFVFRJTkdTCiB9CiAKK2Jvb2wgSW5zcGVj
dG9yQ2xpZW50UXQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMgU3RyaW5nIHZhcmlhbnRUb1NldHRp
bmcoY29uc3QgUVZhcmlhbnQmIHF2YXJpYW50KQogewogICAgIFN0cmluZyByZXRWYWw7CmRpZmYg
LS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaCBiL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCmluZGV4IDRiZWFkYWIu
LjIxMTdiMDkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRRdC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRR
dC5oCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVT
ZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
IAorICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKTsKKwogcHJpdmF0ZToKICAgICBRV2ViUGFnZSogbV9pbnNwZWN0ZWRXZWJQYWdlOwog
fTsKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKaW5kZXggMjk3OTU1Ni4uZjYxZGFmMSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNi0w
MyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91
bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhIGZyb20gaW5z
cGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3Jt
YXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQg
ZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9udC1l
bmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAgICAg
ICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorCiAyMDEwLTA1LTMwICBEYW5pZWwgQmF0ZXMgIDxk
YmF0ZXNAcmltLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBhdHRlbXB0IHRvIGZpeCB0aGUg
YnVpbGQgYWZ0ZXIgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNjA0MTguCmRpZmYg
LS1naXQgYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAg
Yi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXgg
M2MyNjNlNS4uZDYxYWU2ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtNjgsNyArNjgsOCBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYg
Z2V0V2ViS2l0QnVuZGxlKCkKIH0KIAogV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JD
bGllbnQoV2ViVmlldyogd2ViVmlldykKLSAgICA6IG1faW5zcGVjdGVkV2ViVmlldyh3ZWJWaWV3
KQorICAgIDogbV9pbnNwZWN0ZWRXZWJWaWV3KHdlYlZpZXcpLAorICAgICAgbV9mcm9udGVuZENs
aWVudCgwKQogewogICAgIEFTU0VSVChtX2luc3BlY3RlZFdlYlZpZXcpOwogICAgIG1faW5zcGVj
dGVkV2ViVmlldy0+dmlld1dpbmRvdygoT0xFX0hBTkRMRSopJm1faW5zcGVjdGVkV2ViVmlld0h3
bmQpOwpAQCAtMTczLDcgKzE3NCw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5z
cGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29uCiAgICAgICAg
IHJldHVybjsKIAogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7
Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENs
aWVudChuZXcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9pbnNwZWN0ZWRXZWJWaWV3LCBt
X2luc3BlY3RlZFdlYlZpZXdId25kLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJv
bnRlbmRXZWJWaWV3SHduZCwgdGhpcykpOworICAgIG1fZnJvbnRlbmRDbGllbnQgPSBuZXcgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdl
YlZpZXdId25kLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3
SHduZCwgdGhpcyk7CisgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0
b3JGcm9udGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50KTsKICAgICBtX2Zyb250ZW5kSHduZCA9
IGZyb250ZW5kSHduZDsKIH0KIApAQCAtMjA1LDYgKzIwNywxMyBAQCB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6dXBkYXRlSGlnaGxpZ2h0KCkKICAgICAgICAgbV9oaWdobGlnaHQtPnVwZGF0ZSgp
OwogfQogCitib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmRDbGll
bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9mcm9udGVuZENsaWVudC0+
ZGlzcGF0Y2hNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKTsKK30KKwogV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3Rl
ZFdlYlZpZXcsIEhXTkQgaW5zcGVjdGVkV2ViVmlld0h3bmQsIEhXTkQgZnJvbnRlbmRId25kLCBj
b25zdCBDT01QdHI8V2ViVmlldz4mIGZyb250ZW5kV2ViVmlldywgSFdORCBmcm9udGVuZFdlYlZp
ZXdId25kLCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKICAgICA6IEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCksICBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSkpCiAgICAgLCBtX2lu
c3BlY3RlZFdlYlZpZXcoaW5zcGVjdGVkV2ViVmlldykKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDY0NzczYTUuLjI0YzlhZGEgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysr
IGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+
CiAKK2NsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogY2xhc3MgV2ViTm9kZUhpZ2hs
aWdodDsKIGNsYXNzIFdlYlZpZXc7CiAKQEAgLTU4LDEwICs1OSwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1cGRhdGVIaWdobGlnaHQoKTsKICAgICB2b2lkIGZyb250ZW5kQ2xvc2luZygpIHsgbV9m
cm9udGVuZEh3bmQgPSAwOyB9CiAKKyAgICBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBXZWJDb3JlOjpTdHJpbmcmIG1lc3NhZ2UpOworCiBwcml2YXRlOgogICAgIH5XZWJJbnNwZWN0
b3JDbGllbnQoKTsKIAogICAgIFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKKyAgICBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsKICAgICBIV05EIG1faW5z
cGVjdGVkV2ViVmlld0h3bmQ7CiAgICAgSFdORCBtX2Zyb250ZW5kSHduZDsKIApkaWZmIC0tZ2l0
IGEvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggYWIyNTEw
Mi4uOTliNGY3MiAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9XZWJLaXQv
d3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDYtMDMgIElseWEgVGlraG9ub3Zz
a3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRv
IHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YSBmcm9tIGluc3BlY3RlZCBwYWdlIHNpZGUg
dG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBSaWdo
dCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRlIHdl
IGFyZSB1c2luZyBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNj
cmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3Vp
dGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViS2l0U3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnRXeDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0luc3BlY3RvckNsaWVudFd4Lmg6CisKIDIwMTAtMDUtMjcgIEtldmluIE9sbGl2aWVyICA8a2V2
aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBCdWlsZCBmaXhlcyBmb3IgV2lu
ZG93cyBhZnRlciByZWNlbnQgY2hhbmdlcy4KZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFd4LmNwcAppbmRleCA1ZGM5YWM3Li42MWExMjg3IDEwMDY0NAotLS0gYS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAKKysrIGIvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guY3BwCkBAIC03Miw0ICs3MiwxMCBA
QCB2b2lkIEluc3BlY3RvckNsaWVudFd4OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgc2V0dGluZykKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29s
IEluc3BlY3RvckNsaWVudFd4OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
V3guaCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgKaW5kZXgg
NzY3NWRjMS4uMWU1YzVhNyAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50V3guaAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRXeC5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBw
b3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogdmFsdWUpOwogICAgIHZp
cnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
dmFsdWUpOworCisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="42459"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57915</attachid>
            <date>2010-06-04 14:30:36 -0700</date>
            <delta_ts>2010-06-07 09:40:42 -0700</delta_ts>
            <desc>[patch] third iteration</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42167</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Njk5NWU5ZC4uYmM2NmI3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wNi0wMyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUg
dG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAgIGZyb20gaW5zcGVjdGVk
IHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisg
ICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQt
ZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9u
dC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAg
ICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisK
KyAgICAgICAgKiBXZWJDb3JlLkluc3BlY3Rvci5leHA6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6Okluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjpmcm9udGVuZExvYWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsOjpkaXNwYXRjaE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmRpc3BhdGNoTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQpOgorCiAyMDEwLTA2LTA0ICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDRk
Y2U2MmYuLmI0NmI5YjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTMxNyw2ICsxMzE3LDggQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2Uu
Y3BwIFwKIAlXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBc
CiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggXAorCVdlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNsaWVudExvY2FsLmNwcCBcCisJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2xpZW50TG9jYWwuaCBcCiAJV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgXAogCVdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBcCiAJV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZS5JbnNwZWN0b3IuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLkluc3BlY3Rvci5leHAK
aW5kZXggNWJmNmYwNS4uMjZlNDg5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLkluc3Bl
Y3Rvci5leHAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLkluc3BlY3Rvci5leHAKQEAgLTE0LDYgKzE0
LDcgQEAgX19aTjdXZWJDb3JlMTlJbnNwZWN0b3JDb250cm9sbGVyNHNob3dFdgogX19aTjdXZWJD
b3JlMTlJbnNwZWN0b3JDb250cm9sbGVyNWNsb3NlRXYKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9y
Q29udHJvbGxlcjdpbnNwZWN0RVBOU180Tm9kZUUKIF9fWk43V2ViQ29yZTE5SW5zcGVjdG9yQ29u
dHJvbGxlcjlzaG93UGFuZWxFTlMwXzEzU3BlY2lhbFBhbmVsc0UKK19fWk43V2ViQ29yZTIwSW5z
cGVjdG9yQ2xpZW50TG9jYWwyMXNlbmRNZXNzYWdlVG9Gcm9udGVuZEVQTlNfNFBhZ2VFUktOU182
U3RyaW5nRQogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTJtb3Zl
V2luZG93QnlFZmYKIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDE0
ZnJvbnRlbmRMb2FkZWRFdgogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsMTVjYW5BdHRhY2hXaW5kb3dFdgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYzZmNzljMy4uYjhkZDhiNyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03MDUsNiAr
NzA1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBc
CiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5jcHAgXAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmNwcCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudExvY2Fs
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmNwcCBcCiAgICAgaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0
YWJhc2VSZXNvdXJjZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggMGI5NDY3Yi4uODEzOWQ0OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CkBAIC00NDY4NSw2ICs0NDY4NSwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ2xpZW50TG9jYWwuY3Bw
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvckNsaWVudExvY2FsLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA0ZGQ2ZDg1Li5iYTdhNzhlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAxOCw2ICsxMDE4LDggQEAKIAkJNEYz
Mjg5QjYxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5QjQxMUE0MkFBQjAwNUFCRTdF
IC8qIEluc3BlY3RvclZhbHVlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTRGRDhEMEYyMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRDhE
MEYwMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCAqLzsgfTsKIAkJNEZEOEQw
RjMxMTlDNzE4QjAwMkZBODI1IC8qIFNjcmlwdEdDRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRDhEMEYxMTE5QzcxOEIwMDJGQTgyNSAvKiBT
Y3JpcHRHQ0V2ZW50LmggKi87IH07CisJCTRGRUI3MkNDMTFCOTk5MTIwMDFCODA2NSAvKiBJbnNw
ZWN0b3JDbGllbnRMb2NhbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEZFQjcyQ0IxMUI5OTkxMjAwMUI4MDY1IC8qIEluc3BlY3RvckNsaWVudExvY2Fs
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNEZF
QjczMEYxMUI5OUFFQjAwMUI4MDY1IC8qIEluc3BlY3RvckNsaWVudExvY2FsLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGRUI3MzBFMTFCOTlBRUIw
MDFCODA2NSAvKiBJbnNwZWN0b3JDbGllbnRMb2NhbC5jcHAgKi87IH07CiAJCTUxMDE4NDY5MEIw
ODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFn
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
MDE4NDZBMEIwODYwMkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAv
KiBDYWNoZWRQYWdlLmNwcCAqLzsgfTsKIAkJNTEwRDRBMzMxMDMxNjVFRTAwNDlFQTU0IC8qIFNv
Y2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJy
b3JCYXNlLmNwcCAqLzsgfTsKQEAgLTY2NDAsNiArNjY0Miw4IEBACiAJCTRGMzI4OUI0MTFBNDJB
QUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRGRDhEMEYwMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRHQ0V2ZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEdDRXZlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0RkQ4RDBGMTExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NF
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRHQ0V2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGRUI3MkNCMTFCOTk5MTIwMDFCODA2NSAv
KiBJbnNwZWN0b3JDbGllbnRMb2NhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JDbGllbnRMb2NhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
RkVCNzMwRTExQjk5QUVCMDAxQjgwNjUgLyogSW5zcGVjdG9yQ2xpZW50TG9jYWwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ2xpZW50TG9jYWwuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYg
LyogQ2FjaGVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRQ
YWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY4MEIwODYwMkEwMDRB
ODI1RiAvKiBDYWNoZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENhY2hlZFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTBENEEy
RDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTE4Myw2ICsxMTE4Nyw4IEBACiAJCQkJN0E3
NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckJhY2tlbmQuaCAqLywKIAkJCQk3QTc0
RUNCNjEwMTgzOTlBMDBCRjkzOUUgLyogSW5zcGVjdG9yQmFja2VuZC5pZGwgKi8sCiAJCQkJMUM4
MUI5NTgwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oICovLAorCQkJCTRGRUI3
MzBFMTFCOTlBRUIwMDFCODA2NSAvKiBJbnNwZWN0b3JDbGllbnRMb2NhbC5jcHAgKi8sCisJCQkJ
NEZFQjcyQ0IxMUI5OTkxMjAwMUI4MDY1IC8qIEluc3BlY3RvckNsaWVudExvY2FsLmggKi8sCiAJ
CQkJMUM4MUI5NTcwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICov
LAogCQkJCTFDODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmgg
Ki8sCiAJCQkJODJCNjU4OTkxMTg5RTQ3NjAwRTA1MkExIC8qIEluc3BlY3RvckNTU1N0b3JlLmNw
cCAqLywKQEAgLTE5NDEwLDYgKzE5NDE2LDcgQEAKIAkJCQk0RjMyODlCNjExQTQyQUFCMDA1QUJF
N0UgLyogSW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5RkZFM0U3QjExQjU5
QzVEMDAzNzg3NEUgLyogTWVtb3J5SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUZGRTNFQTYx
MUI1QTQzOTAwMzc4NzRFIC8qIEpTTWVtb3J5SW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEZF
QjcyQ0MxMUI5OTkxMjAwMUI4MDY1IC8qIEluc3BlY3RvckNsaWVudExvY2FsLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTIxNzA5LDYgKzIxNzE2LDcgQEAKIAkJCQk0RjMyODlCNTExQTQyQUFCMDA1QUJF
N0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlGRkUzRTdBMTFC
NTlDNUQwMDM3ODc0RSAvKiBNZW1vcnlJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTlGRkUz
RUE1MTFCNUE0MzkwMDM3ODc0RSAvKiBKU01lbW9yeUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNEZFQjczMEYxMUI5OUFFQjAwMUI4MDY1IC8qIEluc3BlY3RvckNsaWVudExvY2FsLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA4NDFjMTVl
Li4yY2UzYTA5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQu
aAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNDgsNiArNDgs
OCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0
cmluZyYga2V5LCBTdHJpbmcqIHZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0
dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgPSAwOworCisgICAg
dmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNsaWVudExvY2FsLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNsaWVudExvY2FsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5jYjA0YzJiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2xpZW50TG9jYWwuY3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQ2xpZW50TG9jYWwuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisK
KyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCisjaW5j
bHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitib29sIEluc3BlY3RvckNsaWVudExvY2FsOjpzZW5kTWVzc2FnZVRv
RnJvbnRlbmQoUGFnZSogZnJvbnRlbmRQYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgaWYgKCFmcm9udGVuZFBhZ2UpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBTY3JpcHRTdGF0ZSogZnJvbnRlbmRT
Y3JpcHRTdGF0ZSA9IHNjcmlwdFN0YXRlRnJvbVBhZ2UoZGVidWdnZXJXb3JsZCgpLCBmcm9udGVu
ZFBhZ2UpOworICAgIGlmICghZnJvbnRlbmRTY3JpcHRTdGF0ZSkgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFNjcmlw
dE9iamVjdCB3ZWJJbnNwZWN0b3JPYmo7CisgICAgaWYgKCFTY3JpcHRHbG9iYWxPYmplY3Q6Omdl
dChmcm9udGVuZFNjcmlwdFN0YXRlLCAiV2ViSW5zcGVjdG9yIiwgd2ViSW5zcGVjdG9yT2JqKSkg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbih3ZWJJbnNwZWN0b3JPYmos
ICJkaXNwYXRjaE1lc3NhZ2VUb0Zyb250ZW5kIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQobWVzc2FnZSk7CisgICAgZnVuY3Rpb24uY2FsbCgpOworICAgIHJldHVybiB0cnVlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50TG9jYWwuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudExvY2FsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY3
MDY1NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dExvY2FsLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9yQ2xpZW50TG9jYWxfaAor
I2RlZmluZSBJbnNwZWN0b3JDbGllbnRMb2NhbF9oCisKKyNpbmNsdWRlICJJbnNwZWN0b3JDbGll
bnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQYWdlOworY2xhc3MgU3RyaW5n
OworCitjbGFzcyBJbnNwZWN0b3JDbGllbnRMb2NhbCA6IHB1YmxpYyBJbnNwZWN0b3JDbGllbnQg
eworcHVibGljOgorICAgIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKFBhZ2UqIHdlYkluc3Bl
Y3Rvck9iaiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmluZGV4IDY2ZmIyOWIuLjEzNjMxOWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCkBAIC00MjYsMTEgKzQyNiwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogICAgIH0KIH0KIAotdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpzZXRGcm9udGVuZChQYXNzT3duUHRyPEluc3BlY3RvckZyb250
ZW5kPiBmcm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5k
KGNvbnN0IFNjcmlwdE9iamVjdCYgd2ViSW5zcGVjdG9yKQogewotICAgIEFTU0VSVChmcm9udGVu
ZCk7CiAgICAgbV9vcGVuaW5nRnJvbnRlbmQgPSBmYWxzZTsKLSAgICBtX2Zyb250ZW5kID0gZnJv
bnRlbmQ7CisgICAgbV9mcm9udGVuZCA9IG5ldyBJbnNwZWN0b3JGcm9udGVuZCh3ZWJJbnNwZWN0
b3IsIG1fY2xpZW50KTsKICAgICByZWxlYXNlRE9NQWdlbnQoKTsKICAgICBtX2RvbUFnZW50ID0g
SW5zcGVjdG9yRE9NQWdlbnQ6OmNyZWF0ZShtX2Nzc1N0b3JlLmdldCgpLCBtX2Zyb250ZW5kLmdl
dCgpKTsKICAgICBpZiAobV90aW1lbGluZUFnZW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCmluZGV4IGEyYzhhNzcuLmYzMWM2MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEzNCw2ICsxMzQsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgc2hvdygpOwogICAgIHZvaWQgc2hvd1BhbmVsKFNwZWNpYWxQYW5lbHMpOwogICAgIHZvaWQg
Y2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCisgICAgLy8gV2UgYXJlIGluIHRyYW5zaXRpb24gZnJvbSBKUyB0cmFuc3BvcnQg
dmlhIHdlYkluc3BlY3RvciB0byBuYXRpdmUKKyAgICAvLyB0cmFuc3BvcnQgdmlhIEluc3BlY3Rv
ckNsaWVudC4gQWZ0ZXIgZmluaXNoIHdlYkluc3BlY3RvciBwYXJhbWV0ZXIgc2hvdWxkCisgICAg
Ly8gYmUgcmVtb3ZlZC4KKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChjb25zdCBTY3JpcHRPYmpl
Y3QmIHdlYkluc3BlY3Rvcik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoKTsKIAogICAg
IHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVz
c2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqKTsKQEAgLTE1MSw3ICsxNTYsNiBAQCBwdWJsaWM6
CiAgICAgdm9pZCBpbnNwZWN0ZWRXaW5kb3dTY3JpcHRPYmplY3RDbGVhcmVkKEZyYW1lKik7CiAK
ICAgICBib29sIHdpbmRvd1Zpc2libGUoKTsKLSAgICB2b2lkIHNldEZyb250ZW5kKFBhc3NPd25Q
dHI8SW5zcGVjdG9yRnJvbnRlbmQ+KTsKIAogICAgIHZvaWQgZGlkQ29tbWl0TG9hZChEb2N1bWVu
dExvYWRlciopOwogICAgIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUqKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCBmYjY2Y2FkLi5mNDAwYWRm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCkBAIC0zNiw2ICszNiw3
IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JX
b3JrZXJSZXNvdXJjZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTQ5LDggKzUwLDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnNwZWN0b3JGcm9udGVuZDo6SW5zcGVjdG9yRnJvbnRl
bmQoU2NyaXB0T2JqZWN0IHdlYkluc3BlY3RvcikKLSAgICA6IG1fd2ViSW5zcGVjdG9yKHdlYklu
c3BlY3RvcikKK0luc3BlY3RvckZyb250ZW5kOjpJbnNwZWN0b3JGcm9udGVuZChTY3JpcHRPYmpl
Y3Qgd2ViSW5zcGVjdG9yLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKKyAgICA6
IG1fd2ViSW5zcGVjdG9yKHdlYkluc3BlY3RvciksIG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3Rv
ckNsaWVudCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKaW5kZXgg
ZmE3NTJhYS4uZWIwYWViZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCkBA
IC0zNCwyMSArMzQsMjYgQEAKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJT
Y3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ29uc29sZU1lc3Nh
Z2U7CiAgICAgY2xhc3MgRGF0YWJhc2U7CiAgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgSW5z
cGVjdG9yQ2xpZW50OwogICAgIGNsYXNzIEluc3BlY3RvclJlc291cmNlOworICAgIGNsYXNzIElu
c3BlY3RvcldvcmtlclJlc291cmNlOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgU2NyaXB0
U3RyaW5nOwogICAgIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKICAgICBjbGFzcyBTdG9y
YWdlOwotICAgIGNsYXNzIEluc3BlY3RvcldvcmtlclJlc291cmNlOwogCiAgICAgY2xhc3MgSW5z
cGVjdG9yRnJvbnRlbmQgOiBwdWJsaWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgSW5zcGVjdG9yRnJvbnRlbmQoU2NyaXB0T2JqZWN0IHdlYkluc3BlY3Rvcik7CisgICAgICAg
IC8vIFdlIGFyZSBpbiB0cmFuc2l0aW9uIGZyb20gSlMgdHJhbnNwb3J0IHZpYSB3ZWJJbnNwZWN0
b3IgdG8gbmF0aXZlCisgICAgICAgIC8vIHRyYW5zcG9ydCB2aWEgaW5zcGVjdG9yQ2xpZW50LiBB
ZnRlciBmaW5pc2ggd2ViSW5zcGVjdG9yIHBhcmFtZXRlciBzaG91bGQKKyAgICAgICAgLy8gYmUg
cmVtb3ZlZC4KKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmQoU2NyaXB0T2JqZWN0IHdlYkluc3Bl
Y3RvciwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpOwogICAgICAgICB+SW5zcGVj
dG9yRnJvbnRlbmQoKTsKIAogICAgICAgICB2b2lkIGNsb3NlKCk7CkBAIC0xNjksNiArMTc0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY2FsbFNp
bXBsZUZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKTsKICAgICAgICAgU2NyaXB0
T2JqZWN0IG1fd2ViSW5zcGVjdG9yOworICAgICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVj
dG9yQ2xpZW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggMThj
NTJkYS4uMTg4NTY2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpmcm9udGVuZExvYWRlZCgpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1faW5zcGVjdG9yQ29udHJvbGxl
ci0+c2V0RnJvbnRlbmQobmV3IEluc3BlY3RvckZyb250ZW5kKHdlYkluc3BlY3Rvck9iaikpOwor
ICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y29ubmVjdEZyb250ZW5kKHdlYkluc3BlY3Rvck9i
aik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVxdWVzdEF0dGFj
aFdpbmRvdygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA5
M2IwNWMwLi44MTUxM2M2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anMKQEAgLTU3Miw2ICs1NzIsMTQgQEAgV2ViSW5zcGVjdG9yLmRpc3BhdGNoID0gZnVuY3Rpb24o
KSB7CiAgICAgc2V0VGltZW91dChkZWxheURpc3BhdGNoLCAwKTsKIH0KIAorV2ViSW5zcGVjdG9y
LmRpc3BhdGNoTWVzc2FnZVRvRnJvbnRlbmQgPSBmdW5jdGlvbihhcmdzKQoreworICAgIHZhciBh
cmd1bWVudHMgPSBKU09OLnBhcnNlKGFyZ3MpOworICAgIHZhciBtZXRob2ROYW1lID0gYXJndW1l
bnRzLnNoaWZ0KCk7CisgICAgV2ViSW5zcGVjdG9yW21ldGhvZE5hbWVdLmFwcGx5KHRoaXMsIGFy
Z3VtZW50cyk7Cit9CisKKwogV2ViSW5zcGVjdG9yLndpbmRvd1Jlc2l6ZSA9IGZ1bmN0aW9uKGV2
ZW50KQogewogICAgIGlmICh0aGlzLmN1cnJlbnRQYW5lbCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5k
ZXggYzYzMDkzMS4uZTQyZWUxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTQ4Niw2ICs0ODYs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0
cmluZyYsIFN0cmluZyopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggMTk5MTFjOS4uMDNhZjVmMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTAtMDYtMDMgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3Bl
Y3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMg
ZGF0YQorICAgICAgICBmcm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBz
aWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50
IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVj
dCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9y
IHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogc3JjL0luc3BlY3RvckNsaWVu
dEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnRJbXBsOjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmg6Cisg
ICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRGV2VG9vbHNBZ2VudEltcGw6OnNldEluc3BlY3RvckZyb250ZW5kUHJveHlUb0luc3BlY3Rv
ckNvbnRyb2xsZXIpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisKIDIwMTAtMDYt
MDQgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3Bl
Y3RvckNsaWVudEltcGwuY3BwCmluZGV4IDIyYjUxNWYuLjkxZDEwZDUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcApAQCAtMzUsNiArMzUsOCBAQAogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgorI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBsLmgiCisjaW5jbHVkZSAi
V2ViRGV2VG9vbHNNZXNzYWdlRGF0YS5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIKICNpbmNsdWRl
ICJXZWJVUkwuaCIKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCkBAIC0xMDIsNCArMTA0LDIw
IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1faW5zcGVjdGVkV2ViVmlldy0+c2V0SW5z
cGVjdG9yU2V0dGluZyhrZXksIHZhbHVlKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRJbXBs
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtZXNzYWdlKQor
eworICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBkZXZUb29sc0FnZW50ID0gc3RhdGljX2Nhc3Q8
V2ViRGV2VG9vbHNBZ2VudEltcGwqPihtX2luc3BlY3RlZFdlYlZpZXctPmRldlRvb2xzQWdlbnQo
KSk7CisgICAgaWYgKCFkZXZUb29sc0FnZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBhcmd1bWVudHMoc2l6ZV90KDEpKTsKKyAgICBhcmd1bWVu
dHNbMF0gPSBtZXNzYWdlOworICAgIFdlYkRldlRvb2xzTWVzc2FnZURhdGEgZGF0YTsKKyAgICBk
YXRhLmNsYXNzTmFtZSA9ICJUb29sc0FnZW50RGVsZWdhdGUiOworICAgIGRhdGEubWV0aG9kTmFt
ZSA9ICJkaXNwYXRjaE9uQ2xpZW50IjsKKyAgICBkYXRhLmFyZ3VtZW50cy5zd2FwKGFyZ3VtZW50
cyk7CisgICAgZGV2VG9vbHNBZ2VudC0+c2VuZFJwY01lc3NhZ2UoZGF0YSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0lu
c3BlY3RvckNsaWVudEltcGwuaAppbmRleCA3NDQ3ZDBjLi4wMTM5YjYzIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaApAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldlRv
b2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIAogY2xhc3MgSW5zcGVjdG9yQ2xp
ZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQgewpAQCAtNDYsMTUgKzQ4
LDE0IEBAIHB1YmxpYzoKICAgICAvLyBJbnNwZWN0b3JDbGllbnQgbWV0aG9kczoKICAgICB2aXJ0
dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5JbnNw
ZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CisKICAgICB2aXJ0
dWFsIHZvaWQgaGlnaGxpZ2h0KFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlk
ZUhpZ2hsaWdodCgpOwotICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoCi0gICAgICAg
IGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LAotICAgICAgICBXZWJDb3JlOjpTdHJpbmcqIHZh
bHVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKAotICAgICAgICBjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIGtleSwKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB2YWx1ZSk7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYga2V5LCBXZWJDb3JlOjpTdHJpbmcqIHZhbHVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmVT
ZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcm
IHZhbHVlKTsKKworICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJiBtZXNzYWdlKTsKIHByaXZhdGU6CiAKICAgICAvLyBUaGUgV2ViVmll
d0ltcGwgb2YgdGhlIHBhZ2UgYmVpbmcgaW5zcGVjdGVkOyBnZXRzIHBhc3NlZCB0byB0aGUgY29u
c3RydWN0b3IKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2Vu
dEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAK
aW5kZXggOGRkZTMxZi4uYmIzZDAwMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZU
b29sc0FnZW50SW1wbC5jcHAKQEAgLTQ3MCw4ICs0NzAsNyBAQCB2b2lkIFdlYkRldlRvb2xzQWdl
bnRJbXBsOjpzZXRJbnNwZWN0b3JGcm9udGVuZFByb3h5VG9JbnNwZWN0b3JDb250cm9sbGVyKCkK
ICAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Zm9yQ29udGV4dCgKICAgICAg
ICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fdXRpbGl0eUNvbnRleHQpKTsKICAgICBJ
bnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpYy0+
c2V0RnJvbnRlbmQobmV3IEluc3BlY3RvckZyb250ZW5kKAotICAgICAgICBTY3JpcHRPYmplY3Qo
c3RhdGUsIG1fdXRpbGl0eUNvbnRleHQtPkdsb2JhbCgpKSkpOworICAgIGljLT5jb25uZWN0RnJv
bnRlbmQoU2NyaXB0T2JqZWN0KHN0YXRlLCBtX3V0aWxpdHlDb250ZXh0LT5HbG9iYWwoKSkpOwog
fQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpzZXRBcHVBZ2VudEVuYWJsZWQoYm9vbCBl
bmFibGVkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA1YjUyODY3Li5kMWI2
MTUzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtODMsNiArODMsNyBAQAog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgogI2luY2x1
ZGUgIldlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50
LmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJE
cmFnRGF0YS5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwIGIvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCmluZGV4IDg4OTJkN2YuLjM1YTYw
NjggMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
RWZsLmNwcAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVm
bC5jcHAKQEAgLTU4LDQgKzU4LDExIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpzdG9yZVNl
dHRpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCitib29sIEluc3BlY3RvckNsaWVudEVmbDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBub3RJbXBlbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKKwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRFZmwuaCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50RWZsLmgKaW5kZXggMzBjOWNhZi4uY2Y0YjdhMSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAorKysgYi9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCkBAIC01MCw2ICs1MCw4IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBr
ZXksIFN0cmluZyogdmFsdWUpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOworCisgICAgdmlydHVhbCBib29sIHNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogfTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRl
eCAzYmNhYjQ0Li42ZjFlNjAzIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA2LTAzICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IEl0IHNob3VsZCBiZSBw
b3NzaWJsZSB0byB0cmFuc2ZlciB0aW1lbGluZS9kb20vZXRjIGRhdGEKKyAgICAgICAgZnJvbSBp
bnNwZWN0ZWQgcGFnZSBzaWRlIHRvIHRoZSBmcm9udC1lbmQgc2lkZSBpbiBzZXJpYWxpemVkIGZv
cm1hdC4KKyAgICAgICAgUmlnaHQgbm93IHdoZW4gd2Ugd2FudCB0byBzaG93IHNvbWV0aGluZyBh
dCBmcm9udC1lbmQgc2lkZSB3ZSBhcmUgdXNpbmcKKyAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGluIGZyb250LWVuZCBjb250ZXh0IGFuZCBTY3JpcHRPYmplY3QgZm9yIHBhc3NpbmcgdGhlIGRh
dGEuCisgICAgICAgIFRoYXQgaXMgbm90IHN1aXRhYmxlIGZvciByZW1vdGUgZGVidWdnaW5nIHVz
ZSBjYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDAxMzQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHA6
CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaDoKKwogMjAx
MC0wNi0wMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjYwNjMyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCmluZGV4IDMxN2EwNTguLmNmZTgw
MzAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0
ay5jcHAKQEAgLTEwNSw2ICsxMDUsMTIgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnQ6OnN0b3JlU2V0
dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIH0KIAogCitib29s
IEluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwog
Ym9vbCBkZXN0cm95ZWQgPSBUUlVFOwogCiBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoV2ViS2l0V2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViS2l0
V2ViVmlldyogaW5zcGVjdG9yV2ViVmlldywgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0
b3IsIFBhZ2UqIGluc3BlY3RvclBhZ2UpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRHdGsuaAppbmRleCBjZGI1Mzc1Li5jMDhkZGMyIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCisrKyBiL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKQEAgLTU2LDYgKzU2LDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRp
bmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIFdlYkNvcmU6OlN0cmluZyogdmFsdWUpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
a2V5LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVlKTsKIAorICAgICAgICB2aXJ0dWFsIGJv
b2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbWVzc2FnZSk7
CiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2ViVmlldyogbV9pbnNwZWN0ZWRXZWJWaWV3
OwogICAgIH07CmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nIGIvV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZwppbmRleCAzNWFkOThhLi4xMWU4MDI0IDEwMDY0NAotLS0gYS9XZWJLaXQv
aGFpa3UvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAxMC0wNi0wMyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5z
cGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0
YyBkYXRhCisgICAgICAgIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5k
IHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdh
bnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAg
ICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2Jq
ZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBm
b3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnRIYWlrdTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oOgorCiAyMDEwLTA1LTMxICBMeW9uIENoZW4gIDxsaWFj
aGVuQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1n
aXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3Bw
IGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmNwcApp
bmRleCA1OTIzMmU5Li5hNzJkZTRlIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3BwCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5jcHAKQEAgLTY3LDUgKzY3LDExIEBAIHZvaWQg
SW5zcGVjdG9yQ2xpZW50SGFpa3U6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEluc3Bl
Y3RvckNsaWVudEhhaWt1OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmgKaW5kZXggZDQyNzY3MC4uM2UwYTNjNSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmgK
KysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmgK
QEAgLTQ5LDYgKzQ5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIFdlYkNvcmU6
OlN0cmluZyogdmFsdWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVlKTsKKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYgbWVzc2FnZSk7CiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRl
eCAxMmIwOTFlLi45MjU4YTQ0IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA2LTAzICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IEl0IHNob3VsZCBiZSBw
b3NzaWJsZSB0byB0cmFuc2ZlciB0aW1lbGluZS9kb20vZXRjIGRhdGEKKyAgICAgICAgZnJvbSBp
bnNwZWN0ZWQgcGFnZSBzaWRlIHRvIHRoZSBmcm9udC1lbmQgc2lkZSBpbiBzZXJpYWxpemVkIGZv
cm1hdC4KKyAgICAgICAgUmlnaHQgbm93IHdoZW4gd2Ugd2FudCB0byBzaG93IHNvbWV0aGluZyBh
dCBmcm9udC1lbmQgc2lkZSB3ZSBhcmUgdXNpbmcKKyAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGluIGZyb250LWVuZCBjb250ZXh0IGFuZCBTY3JpcHRPYmplY3QgZm9yIHBhc3NpbmcgdGhlIGRh
dGEuCisgICAgICAgIFRoYXQgaXMgbm90IHN1aXRhYmxlIGZvciByZW1vdGUgZGVidWdnaW5nIHVz
ZSBjYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDAxMzQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkluc3Bl
Y3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKwogMjAxMC0wNi0wMiAgR2F2aW4g
QmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaAppbmRleCBlZTgxYjI1Li4wYWNhZDg4IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI2LDcgKzI2LDcgQEAKICAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JDbGllbnQuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvSW5zcGVjdG9yQ2xpZW50TG9jYWwuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVN0
cmluZy5oPgogCkBAIC00Miw3ICs0MiwxMyBAQCBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0ZXI7CiBj
bGFzcyBXZWJWaWV3OwogI2VuZGlmCiAKLWNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQgeworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBQYWdlOworCit9CisKK2NsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnRMb2NhbCB7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50
KFdlYlZpZXcgKik7CiAKQEAgLTU2LDI2ICs2MiwyOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgV2ViQ29yZTo6
U3RyaW5nKiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB2YWx1ZSk7CiAKKyAgICB2
aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
a2V5KTsKIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogICAgIFJldGFpblB0cjxX
ZWJOb2RlSGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7CisgICAgV2ViQ29yZTo6UGFnZSogbV9m
cm9udGVuZFBhZ2U7CiB9OwogCisKIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50IDog
cHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwgewogcHVibGljOgog
ICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqLCBXZWJJbnNwZWN0b3JXaW5k
b3dDb250cm9sbGVyKiwgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciosIFdlYkNvcmU6OlBh
Z2UqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBmcm9udGVuZExvYWRlZCgpOwotICAgIAorCiAgICAg
dmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpOwogICAgIHZpcnR1
YWwgV2ViQ29yZTo6U3RyaW5nIGhpZGRlblBhbmVscygpOwotICAgIAorCiAgICAgdmlydHVhbCB2
b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpOwotICAg
IAorCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdygpOwogICAgIHZpcnR1YWwgdm9pZCBk
ZXRhY2hXaW5kb3coKTsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRhY2hlZFdpbmRv
d0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpOwogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxD
aGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbmV3VVJMKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0gYi9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA2NjFiMGQyLi44NjQw
NzllIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFn
ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRPYmplY3QuaD4KICNpbXBvcnQgPFdlYktpdC9E
T01FeHRlbnNpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBv
cnQgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC04Myw2ICs4NCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAq
d2ViVmlldykKIDogbV93ZWJWaWV3KHdlYlZpZXcpCiAsIG1faGlnaGxpZ2h0ZXIoQWRvcHROUywg
W1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzp3ZWJW
aWV3XSkKKywgbV9mcm9udGVuZFBhZ2UoMCkKIHsKIH0KIApAQCAtOTQsOSArOTYsMTMgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiB2b2lkIFdlYkluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIpCiB7CiAgICAgUmV0YWluUHRyPFdlYkluc3BlY3RvcldpbmRvd0Nv
bnRyb2xsZXI+IHdpbmRvd0NvbnRyb2xsZXIoQWRvcHROUywgW1tXZWJJbnNwZWN0b3JXaW5kb3dD
b250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6bV93ZWJWaWV3XSk7Ci0g
ICAgUGFnZSogZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJvbGxlci5nZXQoKSB3ZWJW
aWV3XSk7CisgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKFt3aW5kb3dDb250cm9sbGVyLmdldCgp
IHdlYlZpZXddKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
ZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChuZXcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
bV93ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBt
X2Zyb250ZW5kUGFnZSkpOworfQogCi0gICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG5ldyBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChtX3dlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRy
b2xsZXIsIGZyb250ZW5kUGFnZSkpOworYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNz
YWdlVG9Gcm9udGVuZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgcmV0
dXJuIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudExvY2FsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
bV9mcm9udGVuZFBhZ2UsIG1lc3NhZ2UpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
aGlnaGxpZ2h0KE5vZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIv
V2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA5NDUwOTZhLi5iZDc5MTRmIDEwMDY0NAotLS0gYS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OCBAQAorMjAxMC0wNi0wMyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5z
cGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0
YyBkYXRhCisgICAgICAgIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5k
IHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdh
bnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAg
ICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2Jq
ZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBm
b3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRR
dDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRRdC5oOgorCiAyMDEwLTA2LTA0ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEu
Z29tYm9zQG5va2lhLmNvbT4KIAogICAgICAgICBTeW1iaWFuIGJ1aWxkIGZpeC4KZGlmZiAtLWdp
dCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgYi9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCmluZGV4IDJkMTE3MDAu
LjY3M2E0MTIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFF0LmNwcApAQCAtNzQsNiArNzQsNyBAQCBwdWJsaWM6CiAKIEluc3BlY3RvckNsaWVudFF0OjpJ
bnNwZWN0b3JDbGllbnRRdChRV2ViUGFnZSogcGFnZSkKICAgICA6IG1faW5zcGVjdGVkV2ViUGFn
ZShwYWdlKQorICAgICwgbV9mcm9udGVuZFdlYlBhZ2UoMCkKIHt9CiAKIHZvaWQgSW5zcGVjdG9y
Q2xpZW50UXQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCkBAIC0xMDQsNiArMTA1LDcgQEAgdm9pZCBJ
bnNwZWN0b3JDbGllbnRRdDo6b3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXIqKQogICAgIGluc3BlY3Rvci0+ZC0+c2V0RnJvbnRlbmQoaW5zcGVjdG9yVmll
dyk7CiAKICAgICBpbnNwZWN0b3JWaWV3LT5wYWdlKCktPmQtPnBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobmV3IEluc3BlY3RvckZyb250ZW5k
Q2xpZW50UXQobV9pbnNwZWN0ZWRXZWJQYWdlLCBpbnNwZWN0b3JWaWV3KSk7CisgICAgbV9mcm9u
dGVuZFdlYlBhZ2UgPSBpbnNwZWN0b3JQYWdlOwogfQogCiB2b2lkIEluc3BlY3RvckNsaWVudFF0
OjpoaWdobGlnaHQoTm9kZSopCkBAIC0xNjAsNiArMTYyLDExIEBAIHZvaWQgSW5zcGVjdG9yQ2xp
ZW50UXQ6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBzZXR0
aW5nKQogI2VuZGlmIC8vIFFUX05PX1NFVFRJTkdTCiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50
UXQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAg
cmV0dXJuIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudExvY2FsOjpzZW5kTWVzc2FnZVRvRnJvbnRl
bmQobV9mcm9udGVuZFBhZ2UsIG1lc3NhZ2UpOworfQorCiBzdGF0aWMgU3RyaW5nIHZhcmlhbnRU
b1NldHRpbmcoY29uc3QgUVZhcmlhbnQmIHF2YXJpYW50KQogewogICAgIFN0cmluZyByZXRWYWw7
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQu
aCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCmluZGV4IDRi
ZWFkYWIuLjUxNTcwNTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRRdC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRRdC5oCkBAIC01OCw4ICs1OCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBv
cHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2YWx1ZSk7CiAgICAgdmly
dHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSk7CisKIHByaXZhdGU6CiAgICAgUVdlYlBhZ2UqIG1faW5zcGVjdGVkV2Vi
UGFnZTsKKyAgICBRV2ViUGFnZSogbV9mcm9udGVuZFdlYlBhZ2U7CiB9OwogCiBjbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudFF0IDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwgewpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0NoYW5n
ZUxvZwppbmRleCAyOTc5NTU2Li45Yzk3ZGY1IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEwLTA2
LTAzICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IEl0IHNo
b3VsZCBiZSBwb3NzaWJsZSB0byB0cmFuc2ZlciB0aW1lbGluZS9kb20vZXRjIGRhdGEKKyAgICAg
ICAgZnJvbSBpbnNwZWN0ZWQgcGFnZSBzaWRlIHRvIHRoZSBmcm9udC1lbmQgc2lkZSBpbiBzZXJp
YWxpemVkIGZvcm1hdC4KKyAgICAgICAgUmlnaHQgbm93IHdoZW4gd2Ugd2FudCB0byBzaG93IHNv
bWV0aGluZyBhdCBmcm9udC1lbmQgc2lkZSB3ZSBhcmUgdXNpbmcKKyAgICAgICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGluIGZyb250LWVuZCBjb250ZXh0IGFuZCBTY3JpcHRPYmplY3QgZm9yIHBhc3Np
bmcgdGhlIGRhdGEuCisgICAgICAgIFRoYXQgaXMgbm90IHN1aXRhYmxlIGZvciByZW1vdGUgZGVi
dWdnaW5nIHVzZSBjYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisKIDIwMTAtMDUt
MzAgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IGF0dGVtcHQgdG8gZml4IHRoZSBidWlsZCBhZnRlciBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC82MDQxOC4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcAppbmRleCAzYzI2M2U1Li4wMjRmMTlkIDEwMDY0NAotLS0gYS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC02OCw3ICs2OCw4IEBA
IHN0YXRpYyBDRkJ1bmRsZVJlZiBnZXRXZWJLaXRCdW5kbGUoKQogfQogCiBXZWJJbnNwZWN0b3JD
bGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQotICAgIDogbV9pbnNw
ZWN0ZWRXZWJWaWV3KHdlYlZpZXcpCisgICAgOiBtX2luc3BlY3RlZFdlYlZpZXcod2ViVmlldyks
CisgICAgICBtX2Zyb250ZW5kUGFnZSgwKQogewogICAgIEFTU0VSVChtX2luc3BlY3RlZFdlYlZp
ZXcpOwogICAgIG1faW5zcGVjdGVkV2ViVmlldy0+dmlld1dpbmRvdygoT0xFX0hBTkRMRSopJm1f
aW5zcGVjdGVkV2ViVmlld0h3bmQpOwpAQCAtNzYsNiArNzcsNyBAQCBXZWJJbnNwZWN0b3JDbGll
bnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogCiBXZWJJbnNwZWN0b3JD
bGllbnQ6On5XZWJJbnNwZWN0b3JDbGllbnQoKQogeworICAgIG1fZnJvbnRlbmRQYWdlID0gMDsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCkBAIC0x
NzIsOCArMTc0LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9u
dGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb24KICAgICBpZiAoRkFJTEVEKGZy
b250ZW5kV2ViVmlldy0+dG9wTGV2ZWxGcmFtZSgpLT5sb2FkUmVxdWVzdChyZXF1ZXN0LmdldCgp
KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKGZyb250ZW5kV2Vi
Vmlldy5nZXQoKSk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0
b3JGcm9udGVuZENsaWVudChuZXcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9pbnNwZWN0
ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZpZXdId25kLCBmcm9udGVuZEh3bmQsIGZyb250ZW5k
V2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcykpOworICAgIG1fZnJvbnRlbmRQYWdl
ID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOworICAgIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50KiBmcm9udGVuZENsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCht
X2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIGZyb250ZW5kSHduZCwg
ZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzKTsKKyAgICBtX2Zyb250
ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChmcm9udGVuZENsaWVudCk7CiAgICAgbV9mcm9udGVuZEh3bmQgPSBmcm9udGVuZEh3bmQ7CiB9
CiAKQEAgLTIwNSw2ICsyMDgsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnVwZGF0ZUhp
Z2hsaWdodCgpCiAgICAgICAgIG1faGlnaGxpZ2h0LT51cGRhdGUoKTsKIH0KIAorYm9vbCBXZWJJ
bnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBXZWJDb3JlOjpTdHJp
bmcmIG1lc3NhZ2UpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudExvY2Fs
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQobV9wYWdlLCBtZXNzYWdlKTsKK30KKwogV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGlu
c3BlY3RlZFdlYlZpZXcsIEhXTkQgaW5zcGVjdGVkV2ViVmlld0h3bmQsIEhXTkQgZnJvbnRlbmRI
d25kLCBjb25zdCBDT01QdHI8V2ViVmlldz4mIGZyb250ZW5kV2ViVmlldywgSFdORCBmcm9udGVu
ZFdlYlZpZXdId25kLCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCkKICAgICA6
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpLT5p
bnNwZWN0b3JDb250cm9sbGVyKCksICBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSkpCiAgICAg
LCBtX2luc3BlY3RlZFdlYlZpZXcoaW5zcGVjdGVkV2ViVmlldykKZGlmZiAtLWdpdCBhL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDY0NzczYTUuLjBjMjg3Mzkg
MTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApA
QCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVIaWdobGlnaHQoKTsKICAg
ICB2b2lkIGZyb250ZW5kQ2xvc2luZygpIHsgbV9mcm9udGVuZEh3bmQgPSAwOyB9CiAKKyAgICBi
b29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG1lc3NhZ2Up
OworCiBwcml2YXRlOgogICAgIH5XZWJJbnNwZWN0b3JDbGllbnQoKTsKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggYWIyNTEwMi4u
OTliNGY3MiAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd3gv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDYtMDMgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRy
YW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YSBmcm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8g
dGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBu
b3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFy
ZSB1c2luZyBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlw
dE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFi
bGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViS2l0U3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnRXeDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFd4Lmg6CisKIDIwMTAtMDUtMjcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5v
QHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBCdWlsZCBmaXhlcyBmb3IgV2luZG93
cyBhZnRlciByZWNlbnQgY2hhbmdlcy4KZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0luc3BlY3RvckNsaWVudFd4LmNwcCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFd4LmNwcAppbmRleCA1ZGM5YWM3Li42MWExMjg3IDEwMDY0NAotLS0gYS9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guY3BwCkBAIC03Miw0ICs3MiwxMCBAQCB2
b2lkIEluc3BlY3RvckNsaWVudFd4OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgc2V0dGluZykKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIElu
c3BlY3RvckNsaWVudFd4OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3gu
aCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgKaW5kZXggNzY3
NWRjMS4uMWU1YzVhNyAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50V3guaAorKysgYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRXeC5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwb3B1
bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogdmFsdWUpOwogICAgIHZpcnR1
YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFs
dWUpOworCisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="42623"
          type_id="1"
          status="-"
          setter="yurys"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58040</attachid>
            <date>2010-06-07 09:40:42 -0700</date>
            <delta_ts>2010-06-08 00:00:25 -0700</delta_ts>
            <desc>[patch] fourth iteration.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>39298</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDdmZTlhNi4uNzA2YThhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUg
dG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAgIGZyb20gaW5zcGVjdGVk
IHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisg
ICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQt
ZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9u
dC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAg
ICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6Okluc3BlY3RvckZy
b250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpmcm9udGVuZExvYWRlZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPYmplY3Q6OndyaXRlSlNPTik6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNz
YWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RW1wdHlJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9G
cm9udGVuZCk6CisKIDIwMTAtMDYtMDcgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5u
QHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBVcGRhdGVkIHJ1bi1iaW5kaW5ncy10
ZXN0cyByZXN1bHRzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA4NDFjMTVl
Li5jODI4NzMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQu
aAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNDIsMTIgKzQy
LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250
cm9sbGVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChOb2RlKikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRl
U2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2YWx1ZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFs
dWUpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDdiMmNkN2MuLjdkNjZm
NmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00MjYs
MTEgKzQyNiwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFNlYXJjaGluZ0Zvck5v
ZGUoYm9vbCBlbmFibGVkKQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
ZXRGcm9udGVuZChQYXNzT3duUHRyPEluc3BlY3RvckZyb250ZW5kPiBmcm9udGVuZCkKK3ZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKGNvbnN0IFNjcmlwdE9iamVjdCYg
d2ViSW5zcGVjdG9yKQogewotICAgIEFTU0VSVChmcm9udGVuZCk7CiAgICAgbV9vcGVuaW5nRnJv
bnRlbmQgPSBmYWxzZTsKLSAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7CisgICAgbV9mcm9udGVu
ZCA9IG5ldyBJbnNwZWN0b3JGcm9udGVuZCh3ZWJJbnNwZWN0b3IsIG1fY2xpZW50KTsKICAgICBy
ZWxlYXNlRE9NQWdlbnQoKTsKICAgICBtX2RvbUFnZW50ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmNy
ZWF0ZShtX2Nzc1N0b3JlLmdldCgpLCBtX2Zyb250ZW5kLmdldCgpKTsKICAgICBpZiAobV90aW1l
bGluZUFnZW50KQpAQCAtNTMzLDYgKzUzMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlzY29ubmVjdEZyb250ZW5kKCkKIAogICAgIHJlbGVhc2VET01BZ2VudCgpOwogICAgIG1fdGlt
ZWxpbmVBZ2VudC5jbGVhcigpOworICAgIG1fY2xpZW50LT5jbG9zZUluc3BlY3RvckZyb250ZW5k
KCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVsZWFzZURPTUFnZW50KCkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBiYjZjMzg4Li5lZmZiZGYw
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMzQsNiArMTM0
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIHNob3dQYW5lbChTcGVj
aWFsUGFuZWxzKTsKICAgICB2b2lkIGNsb3NlKCk7CisKKyAgICAvLyBXZSBhcmUgaW4gdHJhbnNp
dGlvbiBmcm9tIEpTIHRyYW5zcG9ydCB2aWEgd2ViSW5zcGVjdG9yIHRvIG5hdGl2ZQorICAgIC8v
IHRyYW5zcG9ydCB2aWEgSW5zcGVjdG9yQ2xpZW50LiBBZnRlciBmaW5pc2ggd2ViSW5zcGVjdG9y
IHBhcmFtZXRlciBzaG91bGQKKyAgICAvLyBiZSByZW1vdmVkLgorICAgIHZvaWQgY29ubmVjdEZy
b250ZW5kKGNvbnN0IFNjcmlwdE9iamVjdCYgd2ViSW5zcGVjdG9yKTsKICAgICB2b2lkIGRpc2Nv
bm5lY3RGcm9udGVuZCgpOwogCiAgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VT
b3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIFNjcmlwdENhbGxTdGFjayopOwpAQCAt
MTUxLDcgKzE1Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc3BlY3RlZFdpbmRvd1NjcmlwdE9i
amVjdENsZWFyZWQoRnJhbWUqKTsKIAogICAgIGJvb2wgd2luZG93VmlzaWJsZSgpOwotICAgIHZv
aWQgc2V0RnJvbnRlbmQoUGFzc093blB0cjxJbnNwZWN0b3JGcm9udGVuZD4pOwogCiAgICAgdm9p
ZCBkaWRDb21taXRMb2FkKERvY3VtZW50TG9hZGVyKik7CiAgICAgdm9pZCBmcmFtZURldGFjaGVk
RnJvbVBhcmVudChGcmFtZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
CmluZGV4IDM5MGVkYWIuLjgxY2IwZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIkluc3BlY3RvcldvcmtlclJlc291cmNlLmgiCiAjaW5jbHVkZSAiTm9kZS5o
IgpAQCAtNDksOCArNTAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc3BlY3RvckZy
b250ZW5kOjpJbnNwZWN0b3JGcm9udGVuZChTY3JpcHRPYmplY3Qgd2ViSW5zcGVjdG9yKQotICAg
IDogbV93ZWJJbnNwZWN0b3Iod2ViSW5zcGVjdG9yKQorSW5zcGVjdG9yRnJvbnRlbmQ6Okluc3Bl
Y3RvckZyb250ZW5kKFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IsIEluc3BlY3RvckNsaWVudCog
aW5zcGVjdG9yQ2xpZW50KQorICAgIDogbV93ZWJJbnNwZWN0b3Iod2ViSW5zcGVjdG9yKSwgbV9p
bnNwZWN0b3JDbGllbnQoaW5zcGVjdG9yQ2xpZW50KQogewogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuaAppbmRleCBiOWY4N2VmLi43M2U5NTJhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgSW5zcGVjdG9y
RnJvbnRlbmRfaAogI2RlZmluZSBJbnNwZWN0b3JGcm9udGVuZF9oCiAKKyNpbmNsdWRlICJJbnNw
ZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJTY3JpcHRBcnJheS5oIgogI2luY2x1ZGUgIlNjcmlw
dE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCkBAIC0zOSwxNiArNDAsMjAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENvbnNvbGVNZXNzYWdlOwogICAgIGNsYXNz
IERhdGFiYXNlOwogICAgIGNsYXNzIEZyYW1lOworICAgIGNsYXNzIEluc3BlY3RvckNsaWVudDsK
ICAgICBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZTsKKyAgICBjbGFzcyBJbnNwZWN0b3JXb3JrZXJS
ZXNvdXJjZTsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFNjcmlwdFN0cmluZzsKICAgICBj
bGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAgICAgY2xhc3MgU3RvcmFnZTsKLSAgICBjbGFz
cyBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZTsKIAogICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5k
IDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEluc3BlY3RvckZy
b250ZW5kKFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IpOworICAgICAgICAvLyBXZSBhcmUgaW4g
dHJhbnNpdGlvbiBmcm9tIEpTIHRyYW5zcG9ydCB2aWEgd2ViSW5zcGVjdG9yIHRvIG5hdGl2ZQor
ICAgICAgICAvLyB0cmFuc3BvcnQgdmlhIGluc3BlY3RvckNsaWVudC4gQWZ0ZXIgZmluaXNoIHdl
Ykluc3BlY3RvciBwYXJhbWV0ZXIgc2hvdWxkCisgICAgICAgIC8vIGJlIHJlbW92ZWQuCisgICAg
ICAgIEluc3BlY3RvckZyb250ZW5kKFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IsIEluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KTsKICAgICAgICAgfkluc3BlY3RvckZyb250ZW5kKCk7
CiAKICAgICAgICAgdm9pZCBjbG9zZSgpOwpAQCAtMTY5LDYgKzE3NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGNhbGxTaW1wbGVGdW5jdGlvbihj
b25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSk7CiAgICAgICAgIFNjcmlwdE9iamVjdCBtX3dlYklu
c3BlY3RvcjsKKyAgICAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4IDE4YzUyZGEuLjE4ODU2NmYg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6ZnJvbnRlbmRMb2FkZWQoKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldEZyb250ZW5k
KG5ldyBJbnNwZWN0b3JGcm9udGVuZCh3ZWJJbnNwZWN0b3JPYmopKTsKKyAgICBtX2luc3BlY3Rv
ckNvbnRyb2xsZXItPmNvbm5lY3RGcm9udGVuZCh3ZWJJbnNwZWN0b3JPYmopOwogfQogCiB2b2lk
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlcXVlc3RBdHRhY2hXaW5kb3coKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKaW5kZXggMjM2MTJlNi4uNWM3ZDBjOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC02MjUsNyArNjI1LDcgQEAgdm9p
ZCBJbnNwZWN0b3JPYmplY3Q6OndyaXRlSlNPTihWZWN0b3I8VUNoYXI+KiBvdXRwdXQpIGNvbnN0
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29yZGVyLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIERpY3Rpb25hcnk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhLmZpbmQobV9vcmRlcltp
XSk7CiAgICAgICAgIEFTU0VSVChpdCAhPSBtX2RhdGEuZW5kKCkpOwotICAgICAgICBpZiAoaXQg
IT0gbV9kYXRhLmJlZ2luKCkpCisgICAgICAgIGlmIChpKQogICAgICAgICAgICAgb3V0cHV0LT5h
cHBlbmQoJywnKTsKICAgICAgICAgZG91YmxlUXVvdGVTdHJpbmcoaXQtPmZpcnN0LCBvdXRwdXQp
OwogICAgICAgICBvdXRwdXQtPmFwcGVuZCgnOicpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMKaW5kZXggOGE3OGNkMi4uZGMyMjBkOCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC01NzIsNiArNTcyLDEzIEBAIFdlYkluc3BlY3Rv
ci5kaXNwYXRjaCA9IGZ1bmN0aW9uKCkgewogICAgIHNldFRpbWVvdXQoZGVsYXlEaXNwYXRjaCwg
MCk7CiB9CiAKK1dlYkluc3BlY3Rvci5kaXNwYXRjaE1lc3NhZ2VUb0Zyb250ZW5kID0gZnVuY3Rp
b24oYXJndW1lbnRzKQoreworICAgIHZhciBtZXRob2ROYW1lID0gYXJndW1lbnRzLnNoaWZ0KCk7
CisgICAgV2ViSW5zcGVjdG9yW21ldGhvZE5hbWVdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cit9
CisKKwogV2ViSW5zcGVjdG9yLndpbmRvd1Jlc2l6ZSA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAg
IGlmICh0aGlzLmN1cnJlbnRQYW5lbCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggYzYzMDkzMS4u
NzBhMDA2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTQ4MCwxMiArNDgwLDE0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgeyB9CiAgICAgCiAgICAg
dmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoTm9kZSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoaWRl
SGlnaGxpZ2h0KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0
IFN0cmluZyYsIFN0cmluZyopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCBib29sIHNlbmRNZXNz
YWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvV2ViS2l0L0NoYW5nZUxvZyBiL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjM3
YjE0NC4uZGJmYjBlYyAxMDA2NDQKLS0tIGEvV2ViS2l0L0NoYW5nZUxvZworKysgYi9XZWJLaXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kg
IDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRy
YW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAgICAgICBmcm9tIGluc3BlY3RlZCBwYWdl
IHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0LgorICAgICAg
ICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250LWVuZCBz
aWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5k
IGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAgICAgICAg
VGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNCAgICAgICAg
CisKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVmbDo6Y2xvc2VJbnNwZWN0b3JGcm9u
dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRFZmw6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZCk6CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEVmbC5oOgorCiAyMDEwLTA2LTAxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2YvQ2hhbmdlTG9nIGIvV2ViS2l0L2NmL0NoYW5nZUxvZwppbmRleCAxZjU5ZGVjLi4wMjI5YzBi
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2YvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jZi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNs
b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIg
dGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAgIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0
byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0
IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2Ug
YXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4
dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlz
IG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0ICAgICAgICAKKworICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTAtMDEtMDcg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgR2VvZmZyZXkgR2FyZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudENGLmNwcAppbmRleCAwZDY2YjgzLi45YjA4ZTFiIDEwMDY0NAotLS0gYS9X
ZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1dl
YktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKQEAgLTUzLDYg
KzUzLDggQEAKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAK
KyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgogCiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgpAQCAtOTIsMyArOTQsMjggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnN0b3Jl
U2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBzZXR0aW5nKQogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkoQWRvcHRDRiwgY3JlYXRlS2V5Rm9y
UHJlZmVyZW5jZXMoa2V5KSk7CiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKHByZWZlcmVu
Y2VzS2V5LmdldCgpLCBvYmplY3RUb1N0b3JlLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRB
cHBsaWNhdGlvbik7CiB9CisKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3Rv
ckZyb250ZW5kKCkKK3sKKyAgICBtX2Zyb250ZW5kUGFnZSA9IDA7Cit9CisKK2Jvb2wgV2ViSW5z
cGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQoreworICAgIGlmICghbV9mcm9udGVuZFBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIEZyYW1lKiBmcmFtZSA9IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTY3JpcHRDb250cm9sbGVyKiBz
Y3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0Q29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIGRpc3BhdGNoVG9Gcm9u
dGVuZCgiV2ViSW5zcGVjdG9yLmRpc3BhdGNoTWVzc2FnZVRvRnJvbnRlbmQoIik7CisgICAgZGlz
cGF0Y2hUb0Zyb250ZW5kICs9IG1lc3NhZ2U7CisgICAgZGlzcGF0Y2hUb0Zyb250ZW5kICs9ICIp
OyI7CisgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChkaXNwYXRjaFRvRnJvbnRl
bmQpOworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDVmODVlNS4uZmZlNTAw
OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9u
b3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxl
IHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAgICAgICBmcm9tIGluc3BlY3Rl
ZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0Lgor
ICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250
LWVuZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJv
bnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAg
ICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2Uu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNCAg
ICAgICAgCisKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6Okluc3BlY3RvckNsaWVudEltcGw6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgor
ICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnRJbXBsOjpzZW5kTWVzc2FnZVRvRnJvbnRl
bmQpOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmg6CisgICAgICAgICogc3Jj
L1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNB
Z2VudEltcGw6OnNldEluc3BlY3RvckZyb250ZW5kUHJveHlUb0luc3BlY3RvckNvbnRyb2xsZXIp
OgorCiAyMDEwLTA2LTA3ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAppbmRleCAyMmI1MTVmLi44N2M1YWMwIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKQEAgLTM1LDYgKzM1LDgg
QEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50SW1wbC5oIgorI2lu
Y2x1ZGUgIldlYkRldlRvb2xzTWVzc2FnZURhdGEuaCIKICNpbmNsdWRlICJXZWJSZWN0LmgiCiAj
aW5jbHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgpAQCAtNjUsNiAr
NjcsMTAgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQo
SW5zcGVjdG9yQ29udHJvbGxlciopCiB7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6
Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCit7Cit9CisKIHN0YXRpYyB2b2lkIGludmFsaWRhdGVO
b2RlQm91bmRpbmdSZWN0KFdlYlZpZXdJbXBsKiB3ZWJWaWV3KQogewogICAgIC8vIEZJWE1FOiBJ
cyBpdCBpbXBvcnRhbnQgdG8ganVzdCBpbnZhbGlkYXRlIHRoZSByZWN0IG9mIHRoZSBub2RlIHJl
Z2lvbgpAQCAtMTAyLDQgKzEwOCwyMCBAQCB2b2lkIEluc3BlY3RvckNsaWVudEltcGw6OnN0b3Jl
U2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBtX2lu
c3BlY3RlZFdlYlZpZXctPnNldEluc3BlY3RvclNldHRpbmcoa2V5LCB2YWx1ZSk7CiB9CiAKK2Jv
b2wgSW5zcGVjdG9yQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBXZWJEZXZUb29sc0FnZW50SW1wbCogZGV2VG9v
bHNBZ2VudCA9IHN0YXRpY19jYXN0PFdlYkRldlRvb2xzQWdlbnRJbXBsKj4obV9pbnNwZWN0ZWRX
ZWJWaWV3LT5kZXZUb29sc0FnZW50KCkpOworICAgIGlmICghZGV2VG9vbHNBZ2VudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gYXJndW1lbnRzKHNp
emVfdCgxKSk7CisgICAgYXJndW1lbnRzWzBdID0gbWVzc2FnZTsKKyAgICBXZWJEZXZUb29sc01l
c3NhZ2VEYXRhIGRhdGE7CisgICAgZGF0YS5jbGFzc05hbWUgPSAiVG9vbHNBZ2VudERlbGVnYXRl
IjsKKyAgICBkYXRhLm1ldGhvZE5hbWUgPSAiZGlzcGF0Y2hPbkNsaWVudCI7CisgICAgZGF0YS5h
cmd1bWVudHMuc3dhcChhcmd1bWVudHMpOworICAgIGRldlRvb2xzQWdlbnQtPnNlbmRScGNNZXNz
YWdlKGRhdGEpOworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKaW5kZXggNzQ0N2QwYy4u
MjNhMWYxNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJ
bXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKQEAg
LTM2LDYgKzM2LDggQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViVmlld0ltcGw7
CiAKIGNsYXNzIEluc3BlY3RvckNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9y
Q2xpZW50IHsKQEAgLTQ2LDE1ICs0OCwxNSBAQCBwdWJsaWM6CiAgICAgLy8gSW5zcGVjdG9yQ2xp
ZW50IG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlciopOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CisK
ICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgaGlkZUhpZ2hsaWdodCgpOwotICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmco
Ci0gICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LAotICAgICAgICBXZWJDb3JlOjpT
dHJpbmcqIHZhbHVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKAotICAgICAgICBj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiB2YWx1ZSk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYga2V5LCBXZWJDb3JlOjpTdHJpbmcqIHZhbHVlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcmVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmIHZhbHVlKTsKKworICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRl
bmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtZXNzYWdlKTsKIHByaXZhdGU6CiAKICAgICAvLyBU
aGUgV2ViVmlld0ltcGwgb2YgdGhlIHBhZ2UgYmVpbmcgaW5zcGVjdGVkOyBnZXRzIHBhc3NlZCB0
byB0aGUgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2
VG9vbHNBZ2VudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50
SW1wbC5jcHAKaW5kZXggOGRkZTMxZi4uYmIzZDAwMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKQEAgLTQ3MCw4ICs0NzAsNyBAQCB2b2lkIFdlYkRl
dlRvb2xzQWdlbnRJbXBsOjpzZXRJbnNwZWN0b3JGcm9udGVuZFByb3h5VG9JbnNwZWN0b3JDb250
cm9sbGVyKCkKICAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Zm9yQ29udGV4
dCgKICAgICAgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fdXRpbGl0eUNvbnRleHQp
KTsKICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXIoKTsK
LSAgICBpYy0+c2V0RnJvbnRlbmQobmV3IEluc3BlY3RvckZyb250ZW5kKAotICAgICAgICBTY3Jp
cHRPYmplY3Qoc3RhdGUsIG1fdXRpbGl0eUNvbnRleHQtPkdsb2JhbCgpKSkpOworICAgIGljLT5j
b25uZWN0RnJvbnRlbmQoU2NyaXB0T2JqZWN0KHN0YXRlLCBtX3V0aWxpdHlDb250ZXh0LT5HbG9i
YWwoKSkpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpzZXRBcHVBZ2VudEVuYWJs
ZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuY3BwIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRFZmwuY3BwCmluZGV4IDg4OTJkN2YuLjU3MTY4ZDAgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcAorKysgYi9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAKQEAgLTM4LDYgKzM4LDEx
IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0
b3JDbGllbnRFZmw6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpoaWdobGlnaHQoTm9kZSogbm9k
ZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNTgsNCArNjMsMTEgQEAgdm9pZCBJbnNw
ZWN0b3JDbGllbnRFZmw6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50RWZsOjpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG5vdElt
cGVsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworCiB9CmRpZmYgLS1naXQgYS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oIGIvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAppbmRleCAzMGM5Y2FmLi5hZmY5
NmMyIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEVmbC5oCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZs
LmgKQEAgLTQ0LDEyICs0NCwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3Rv
ckRlc3Ryb3llZCgpOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJ
bnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJv
bnRlbmQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoTm9kZSopOwogICAgIHZpcnR1
YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0
aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKwor
ICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKTsKIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKaW5kZXggYWU5ODFkYi4uOWQyNjYxMSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVj
dG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBk
YXRhCisgICAgICAgIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNp
ZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQg
dG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAg
IFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0
IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3Ig
cmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQwMTM0ICAgICAgICAKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNs
aWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3Rv
ckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuaDoKKwogMjAxMC0wNi0wNCAgTWFydGluIFJvYmluc29uICA8
bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6Lgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsu
Y3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCmlu
ZGV4IDMxN2EwNTguLjEwYjE3ZmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEd0ay5jcHAKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRHdGsuaCIKIAorI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1ZGUgIndlYmtpdHdlYmluc3Bl
Y3Rvci5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKQEAgLTM4LDYgKzM5LDcgQEAgc3Rh
dGljIHZvaWQgbm90aWZ5V2ViVmlld0Rlc3Ryb3llZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBJ
bnNwZWN0b3JGcm9udGVuZENsaWUKIAogSW5zcGVjdG9yQ2xpZW50OjpJbnNwZWN0b3JDbGllbnQo
V2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICA6IG1faW5zcGVjdGVkV2ViVmlldyh3ZWJWaWV3
KQorICAgICwgbV9mcm9udGVuZFBhZ2UoMCkKIHt9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50Ojpp
bnNwZWN0b3JEZXN0cm95ZWQoKQpAQCAtODAsOCArODIsMTMgQEAgdm9pZCBJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVy
KQogCiAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQoaW5zcGVjdG9yV2ViVmlldykpOwog
Ci0gICAgUGFnZSogaW5zcGVjdG9yUGFnZSA9IGNvcmUoaW5zcGVjdG9yV2ViVmlldyk7Ci0gICAg
aW5zcGVjdG9yUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChuZXcgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9pbnNwZWN0ZWRXZWJWaWV3LCBp
bnNwZWN0b3JXZWJWaWV3LCB3ZWJJbnNwZWN0b3IsIGluc3BlY3RvclBhZ2UpKTsKKyAgICBtX2Zy
b250ZW5kUGFnZSA9IGNvcmUoaW5zcGVjdG9yV2ViVmlldyk7CisgICAgbV9mcm9udGVuZFBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobmV3IElu
c3BlY3RvckZyb250ZW5kQ2xpZW50KG1faW5zcGVjdGVkV2ViVmlldywgaW5zcGVjdG9yV2ViVmll
dywgd2ViSW5zcGVjdG9yLCBtX2Zyb250ZW5kUGFnZSkpOworfQorCit2b2lkIEluc3BlY3RvckNs
aWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCit7CisgICAgbV9mcm9udGVuZFBhZ2UgPSAw
OwogfQogCiB2b2lkIEluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KE5vZGUqIG5vZGUpCkBAIC0x
MDQsNiArMTExLDI1IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjpzdG9yZVNldHRpbmcoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kUGFnZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIEZyYW1lKiBmcmFtZSA9IG1fZnJvbnRlbmRQYWdlLT5tYWlu
RnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsK
KyAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICBTdHJpbmcgZGlzcGF0Y2hUb0Zyb250ZW5kKCJXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNz
YWdlVG9Gcm9udGVuZCgiKTsKKyAgICBkaXNwYXRjaFRvRnJvbnRlbmQgKz0gbWVzc2FnZTsKKyAg
ICBkaXNwYXRjaFRvRnJvbnRlbmQgKz0gIik7IjsKKyAgICBzY3JpcHRDb250cm9sbGVyLT5leGVj
dXRlU2NyaXB0KGRpc3BhdGNoVG9Gcm9udGVuZCk7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKIGJv
b2wgZGVzdHJveWVkID0gVFJVRTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50R3RrLmgKaW5kZXggY2RiNTM3NS4uMmI1ZDFhOCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAorKysgYi9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCkBAIC00OSw2ICs0OSw3IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJv
eWVkKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZUlu
c3BlY3RvckZyb250ZW5kKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChXZWJD
b3JlOjpOb2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CkBAIC01
Niw4ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBv
cHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgV2ViQ29yZTo6U3RyaW5n
KiB2YWx1ZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgV2ViQ29y
ZTo6U3RyaW5nJiBrZXksIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdmFsdWUpOwogCisgICAgICAg
IHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiBtZXNzYWdlKTsKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX2luc3Bl
Y3RlZFdlYlZpZXc7CisgICAgICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwogICAg
IH07CiAKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIHsKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlr
dS9DaGFuZ2VMb2cgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCmluZGV4IDM1YWQ5OGEuLjAwZDUw
Y2MgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2hhaWt1
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA2LTA3ICBJbHlhIFRpa2hvbm92c2t5
ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB0
cmFuc2ZlciB0aW1lbGluZS9kb20vZXRjIGRhdGEKKyAgICAgICAgZnJvbSBpbnNwZWN0ZWQgcGFn
ZSBzaWRlIHRvIHRoZSBmcm9udC1lbmQgc2lkZSBpbiBzZXJpYWxpemVkIGZvcm1hdC4KKyAgICAg
ICAgUmlnaHQgbm93IHdoZW4gd2Ugd2FudCB0byBzaG93IHNvbWV0aGluZyBhdCBmcm9udC1lbmQg
c2lkZSB3ZSBhcmUgdXNpbmcKKyAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGluIGZyb250LWVu
ZCBjb250ZXh0IGFuZCBTY3JpcHRPYmplY3QgZm9yIHBhc3NpbmcgdGhlIGRhdGEuCisgICAgICAg
IFRoYXQgaXMgbm90IHN1aXRhYmxlIGZvciByZW1vdGUgZGVidWdnaW5nIHVzZSBjYXNlLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQgICAgICAg
IAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50SGFpa3U6OmNsb3NlSW5zcGVjdG9yRnJv
bnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50SGFpa3U6OnNlbmRNZXNz
YWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
SGFpa3UuaDoKKwogMjAxMC0wNS0zMSAgTHlvbiBDaGVuICA8bGlhY2hlbkByaW0uY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5jcHAKaW5kZXggNTkyMzJlOS4uNmQ4
ZjM1YyAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEhhaWt1LmNwcAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50SGFpa3UuY3BwCkBAIC00Nyw2ICs0NywxMSBAQCB2b2lkIEluc3BlY3RvckNsaWVudEhh
aWt1OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciop
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDbGllbnRIYWlrdTo6
Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwog
dm9pZCBJbnNwZWN0b3JDbGllbnRIYWlrdTo6aGlnaGxpZ2h0KE5vZGUqIG5vZGUpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKQEAgLTY3LDUgKzcyLDExIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50
SGFpa3U6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEluc3BlY3RvckNsaWVudEhhaWt1
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRIYWlrdS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEhhaWt1LmgKaW5kZXggZDQyNzY3MC4uMzlhNDE5ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmgKKysrIGIvV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmgKQEAgLTQzLDEyICs0Mywx
NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JE
ZXN0cm95ZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5k
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNs
b3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0
KE5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKIAogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5
LCBXZWJDb3JlOjpTdHJpbmcqIHZhbHVlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0
dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB2
YWx1ZSk7CisKKyAgICAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBXZWJDb3JlOjpTdHJpbmcmIG1lc3NhZ2UpOwogICAgIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKaW5kZXggODVmODY4My4uYTkxYWZhNCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0w
Ni0wNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBz
aG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAg
ICAgIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2Vy
aWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBz
b21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNz
aW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRl
YnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQwMTM0ICAgICAgICAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50
KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToK
KwogMjAxMC0wNi0wNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IGVlODFiMjUuLjdkOWY1NTAgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgK
KysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAt
NDIsNiArNDIsMTIgQEAgY2xhc3MgV2ViTm9kZUhpZ2hsaWdodGVyOwogY2xhc3MgV2ViVmlldzsK
ICNlbmRpZgogCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2U7CisKK30KKwogY2xh
c3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCB7
CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKik7CkBAIC00OSw2ICs1
NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgp
OwogCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChXZWJDb3JlOjpOb2RlKik7CiAgICAgdmly
dHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKQEAgLTU2LDI2ICs2MywyOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtl
eSwgV2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGlu
Zyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB2YWx1
ZSk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYga2V5KTsKIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogICAg
IFJldGFpblB0cjxXZWJOb2RlSGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7CisgICAgV2ViQ29y
ZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7CiB9OwogCisKIGNsYXNzIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwg
ewogcHVibGljOgogICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqLCBXZWJJ
bnNwZWN0b3JXaW5kb3dDb250cm9sbGVyKiwgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcios
IFdlYkNvcmU6OlBhZ2UqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBmcm9udGVuZExvYWRlZCgpOwot
ICAgIAorCiAgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgp
OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGhpZGRlblBhbmVscygpOwotICAgIAorCiAg
ICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdp
bmRvdygpOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdygpOwogICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKTsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRB
dHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpOwogICAgIHZpcnR1YWwgdm9pZCBp
bnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbmV3VVJMKTsKIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0g
Yi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCA2
NjFiMGQyLi43MWIxYzE1IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5tbQpAQCAtODMsNiArODMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKndlYlZp
ZXcpCiA6IG1fd2ViVmlldyh3ZWJWaWV3KQogLCBtX2hpZ2hsaWdodGVyKEFkb3B0TlMsIFtbV2Vi
Tm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6d2ViVmlld10p
CissIG1fZnJvbnRlbmRQYWdlKDApCiB7CiB9CiAKQEAgLTk0LDkgKzk1LDggQEAgdm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCiB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIpCiB7CiAgICAgUmV0YWluUHRyPFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xs
ZXI+IHdpbmRvd0NvbnRyb2xsZXIoQWRvcHROUywgW1tXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9s
bGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6bV93ZWJWaWV3XSk7Ci0gICAgUGFn
ZSogZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJvbGxlci5nZXQoKSB3ZWJWaWV3XSk7
Ci0KLSAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQobmV3IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fd2ViVmlldywg
d2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJvbGxlciwgZnJvbnRlbmRQYWdl
KSk7CisgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHdl
YlZpZXddKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJ
bnNwZWN0b3JGcm9udGVuZENsaWVudChuZXcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV93
ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBtX2Zy
b250ZW5kUGFnZSkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KE5v
ZGUqIG5vZGUpCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0No
YW5nZUxvZwppbmRleCA5NDUwOTZhLi5mNmQ1ZjhkIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0w
Ni0wNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBz
aG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAg
ICAgIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2Vy
aWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBz
b21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNz
aW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRl
YnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQwMTM0ICAgICAgICAKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpJ
bnNwZWN0b3JDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6
b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dFF0OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudFF0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0Lmg6CisKIDIwMTAtMDYtMDQgIExhc3psbyBHb21ib3MgIDxs
YXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFN5bWJpYW4gYnVpbGQgZml4Lgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNw
cCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKaW5kZXgg
MmQxMTcwMC4uYjBlNDJiOSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50UXQuY3BwCkBAIC03NCw2ICs3NCw3IEBAIHB1YmxpYzoKIAogSW5zcGVjdG9yQ2xp
ZW50UXQ6Okluc3BlY3RvckNsaWVudFF0KFFXZWJQYWdlKiBwYWdlKQogICAgIDogbV9pbnNwZWN0
ZWRXZWJQYWdlKHBhZ2UpCisgICAgLCBtX2Zyb250ZW5kV2ViUGFnZSgwKQoge30KIAogdm9pZCBJ
bnNwZWN0b3JDbGllbnRRdDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKQEAgLTEwNCw2ICsxMDUsMTIg
QEAgdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6b3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXIqKQogICAgIGluc3BlY3Rvci0+ZC0+c2V0RnJvbnRlbmQoaW5z
cGVjdG9yVmlldyk7CiAKICAgICBpbnNwZWN0b3JWaWV3LT5wYWdlKCktPmQtPnBhZ2UtPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobmV3IEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50UXQobV9pbnNwZWN0ZWRXZWJQYWdlLCBpbnNwZWN0b3JWaWV3KSk7Cisg
ICAgbV9mcm9udGVuZFdlYlBhZ2UgPSBpbnNwZWN0b3JQYWdlOworfQorCit2b2lkIEluc3BlY3Rv
ckNsaWVudFF0OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKK3sKKyAgICBtX2Zyb250ZW5kV2Vi
UGFnZSA9IDA7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OmhpZ2hsaWdodChOb2RlKikK
QEAgLTE2MCw2ICsxNjcsMzAgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6c3RvcmVTZXR0aW5n
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNldHRpbmcpCiAjZW5kaWYgLy8gUVRf
Tk9fU0VUVElOR1MKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRRdDo6c2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmRXZWJQ
YWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBQYWdlKiBmcm9udGVuZFBhZ2UgPSBj
b3JlKG1fZnJvbnRlbmRXZWJQYWdlKTsKKyAgICBpZiAoIWZyb250ZW5kUGFnZSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgRnJhbWUqIGZyYW1lID0gZnJvbnRlbmRQYWdlLT5tYWluRnJh
bWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTY3Jp
cHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOworICAgIGlm
ICghc2NyaXB0Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5n
IGRpc3BhdGNoVG9Gcm9udGVuZCgiV2ViSW5zcGVjdG9yLmRpc3BhdGNoTWVzc2FnZVRvRnJvbnRl
bmQoIik7CisgICAgZGlzcGF0Y2hUb0Zyb250ZW5kICs9IG1lc3NhZ2U7CisgICAgZGlzcGF0Y2hU
b0Zyb250ZW5kICs9ICIpOyI7CisgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChk
aXNwYXRjaFRvRnJvbnRlbmQpOworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgU3RyaW5n
IHZhcmlhbnRUb1NldHRpbmcoY29uc3QgUVZhcmlhbnQmIHF2YXJpYW50KQogewogICAgIFN0cmlu
ZyByZXRWYWw7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50UXQuaCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5o
CmluZGV4IDRiZWFkYWIuLjViNGZiYWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRRdC5oCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3Bl
Y3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hs
aWdodChOb2RlKik7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKQEAgLTU4LDgg
KzU5LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0
IFN0cmluZyYga2V5LCBTdHJpbmcqIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0
aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKIAorICAgIHZpcnR1
YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKwog
cHJpdmF0ZToKICAgICBRV2ViUGFnZSogbV9pbnNwZWN0ZWRXZWJQYWdlOworICAgIFFXZWJQYWdl
KiBtX2Zyb250ZW5kV2ViUGFnZTsKIH07CiAKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
UXQgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCB7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDQyMmFlODcu
LjM3NWM4MjAgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zz
a3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRv
IHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAgICAgICBmcm9tIGluc3BlY3RlZCBw
YWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0LgorICAg
ICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250LWVu
ZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQt
ZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAgICAg
ICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNCAgICAg
ICAgCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yQ2xpZW50Ojp+V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdl
Ykluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKwogMjAxMC0wNi0wNCAgQWxpY2UgTGl1
ICA8YWxpY2UubGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb24gSG9uZXlj
dXR0LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwCmluZGV4IDNjMjYzZTUuLjM0ZmI4MjcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTY5LDYgKzY5LDcgQEAgc3RhdGljIENG
QnVuZGxlUmVmIGdldFdlYktpdEJ1bmRsZSgpCiAKIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5z
cGVjdG9yQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX2luc3BlY3RlZFdlYlZpZXco
d2ViVmlldykKKyAgICAsIG1fZnJvbnRlbmRQYWdlKDApCiB7CiAgICAgQVNTRVJUKG1faW5zcGVj
dGVkV2ViVmlldyk7CiAgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT52aWV3V2luZG93KChPTEVfSEFO
RExFKikmbV9pbnNwZWN0ZWRXZWJWaWV3SHduZCk7CkBAIC03Niw2ICs3Nyw3IEBAIFdlYkluc3Bl
Y3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAKIFdlYklu
c3BlY3RvckNsaWVudDo6fldlYkluc3BlY3RvckNsaWVudCgpCiB7CisgICAgbV9mcm9udGVuZFBh
Z2UgPSAwOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVk
KCkKQEAgLTE3Miw4ICsxNzQsOSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3Bl
Y3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbgogICAgIGlmIChG
QUlMRUQoZnJvbnRlbmRXZWJWaWV3LT50b3BMZXZlbEZyYW1lKCktPmxvYWRSZXF1ZXN0KHJlcXVl
c3QuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGFnZSogcGFnZSA9IGNvcmUoZnJv
bnRlbmRXZWJWaWV3LmdldCgpKTsKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNl
dEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG5ldyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCht
X2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIGZyb250ZW5kSHduZCwg
ZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzKSk7CisgICAgbV9mcm9u
dGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7CisgICAgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQqIGZyb250ZW5kQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SHduZCwgZnJvbnRl
bmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRoaXMpOworICAg
IG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluc3BlY3RvckZyb250
ZW5kQ2xpZW50KGZyb250ZW5kQ2xpZW50KTsKICAgICBtX2Zyb250ZW5kSHduZCA9IGZyb250ZW5k
SHduZDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgKaW5kZXggNjQ3NzNhNS4uYzFkOWEwMSAxMDA2NDQKLS0tIGEvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0zNyw2ICszNywxMiBAQAogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgUGFnZTsKKworfQorCiBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0OwogY2xhc3Mg
V2ViVmlldzsKIApAQCAtNDgsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGlu
c3BlY3RvckRlc3Ryb3llZCgpOwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9u
dGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgdmlydHVhbCB2b2lkIGNs
b3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoV2Vi
Q29yZTo6Tm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CkBAIC01OCwx
MCArNjUsMTMgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlSGlnaGxpZ2h0KCk7CiAgICAgdm9p
ZCBmcm9udGVuZENsb3NpbmcoKSB7IG1fZnJvbnRlbmRId25kID0gMDsgfQogCisgICAgYm9vbCBz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtZXNzYWdlKTsKKwog
cHJpdmF0ZToKICAgICB+V2ViSW5zcGVjdG9yQ2xpZW50KCk7CiAKICAgICBXZWJWaWV3KiBtX2lu
c3BlY3RlZFdlYlZpZXc7CisgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7CiAgICAg
SFdORCBtX2luc3BlY3RlZFdlYlZpZXdId25kOwogICAgIEhXTkQgbV9mcm9udGVuZEh3bmQ7CiAK
ZGlmZiAtLWdpdCBhL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCmlu
ZGV4IGFiMjUxMDIuLjBmZmE2ZTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA2LTA3ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IEl0IHNob3VsZCBiZSBw
b3NzaWJsZSB0byB0cmFuc2ZlciB0aW1lbGluZS9kb20vZXRjIGRhdGEKKyAgICAgICAgZnJvbSBp
bnNwZWN0ZWQgcGFnZSBzaWRlIHRvIHRoZSBmcm9udC1lbmQgc2lkZSBpbiBzZXJpYWxpemVkIGZv
cm1hdC4KKyAgICAgICAgUmlnaHQgbm93IHdoZW4gd2Ugd2FudCB0byBzaG93IHNvbWV0aGluZyBh
dCBmcm9udC1lbmQgc2lkZSB3ZSBhcmUgdXNpbmcKKyAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxs
IGluIGZyb250LWVuZCBjb250ZXh0IGFuZCBTY3JpcHRPYmplY3QgZm9yIHBhc3NpbmcgdGhlIGRh
dGEuCisgICAgICAgIFRoYXQgaXMgbm90IHN1aXRhYmxlIGZvciByZW1vdGUgZGVidWdnaW5nIHVz
ZSBjYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDAxMzQgICAgICAgIAorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRX
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXeDo6Y2xvc2VJbnNwZWN0
b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXeDo6c2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFd4Lmg6CisKIDIwMTAtMDUtMjcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVy
cy5jb20+CiAKICAgICAgICAgW3d4XSBCdWlsZCBmaXhlcyBmb3IgV2luZG93cyBhZnRlciByZWNl
bnQgY2hhbmdlcy4KZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFd4LmNwcCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4
LmNwcAppbmRleCA1ZGM5YWM3Li5mMDA1ZGI5IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50V3guY3BwCkBAIC01Miw2ICs1MiwxMSBAQCB2b2lkIEluc3BlY3Rv
ckNsaWVudFd4OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlciopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDbGllbnRX
eDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwogdm9pZCBJbnNwZWN0b3JDbGllbnRXeDo6aGlnaGxpZ2h0KE5vZGUqKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CkBAIC03Miw0ICs3NywxMCBAQCB2b2lkIEluc3BlY3RvckNsaWVudFd4Ojpz
dG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgc2V0dGluZykKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEluc3BlY3RvckNsaWVudFd4OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaCBiL1dlYktpdC93eC9XZWJLaXRTdXBw
b3J0L0luc3BlY3RvckNsaWVudFd4LmgKaW5kZXggNzY3NWRjMS4uNDFmMGIzOSAxMDA2NDQKLS0t
IGEvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaAorKysgYi9XZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oCkBAIC00MiwxMiArNDIsMTUg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlciopOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KE5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlk
ZUhpZ2hsaWdodCgpOwogCiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBT
dHJpbmcmIGtleSwgU3RyaW5nKiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGlu
Zyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisKKyAgICB2aXJ0dWFs
IGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="42834"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58119</attachid>
            <date>2010-06-08 00:00:25 -0700</date>
            <delta_ts>2010-06-08 08:06:31 -0700</delta_ts>
            <desc>[patch] Fifth version. Just try to get qt build happy.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>39429</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDdmZTlhNi4uNzA2YThhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUg
dG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAgIGZyb20gaW5zcGVjdGVk
IHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisg
ICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQt
ZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9u
dC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAg
ICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6Okluc3BlY3RvckZy
b250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpmcm9udGVuZExvYWRlZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPYmplY3Q6OndyaXRlSlNPTik6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNz
YWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RW1wdHlJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9G
cm9udGVuZCk6CisKIDIwMTAtMDYtMDcgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5u
QHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBVcGRhdGVkIHJ1bi1iaW5kaW5ncy10
ZXN0cyByZXN1bHRzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA4NDFjMTVl
Li5jODI4NzMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQu
aAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNDIsMTIgKzQy
LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250
cm9sbGVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChOb2RlKikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRl
U2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2YWx1ZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFs
dWUpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDdiMmNkN2MuLjdkNjZm
NmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00MjYs
MTEgKzQyNiwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFNlYXJjaGluZ0Zvck5v
ZGUoYm9vbCBlbmFibGVkKQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
ZXRGcm9udGVuZChQYXNzT3duUHRyPEluc3BlY3RvckZyb250ZW5kPiBmcm9udGVuZCkKK3ZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKGNvbnN0IFNjcmlwdE9iamVjdCYg
d2ViSW5zcGVjdG9yKQogewotICAgIEFTU0VSVChmcm9udGVuZCk7CiAgICAgbV9vcGVuaW5nRnJv
bnRlbmQgPSBmYWxzZTsKLSAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7CisgICAgbV9mcm9udGVu
ZCA9IG5ldyBJbnNwZWN0b3JGcm9udGVuZCh3ZWJJbnNwZWN0b3IsIG1fY2xpZW50KTsKICAgICBy
ZWxlYXNlRE9NQWdlbnQoKTsKICAgICBtX2RvbUFnZW50ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmNy
ZWF0ZShtX2Nzc1N0b3JlLmdldCgpLCBtX2Zyb250ZW5kLmdldCgpKTsKICAgICBpZiAobV90aW1l
bGluZUFnZW50KQpAQCAtNTMzLDYgKzUzMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlzY29ubmVjdEZyb250ZW5kKCkKIAogICAgIHJlbGVhc2VET01BZ2VudCgpOwogICAgIG1fdGlt
ZWxpbmVBZ2VudC5jbGVhcigpOworICAgIG1fY2xpZW50LT5jbG9zZUluc3BlY3RvckZyb250ZW5k
KCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVsZWFzZURPTUFnZW50KCkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBiYjZjMzg4Li4wNWE5Mzli
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMzQsNiArMTM0
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIHNob3dQYW5lbChTcGVj
aWFsUGFuZWxzKTsKICAgICB2b2lkIGNsb3NlKCk7CisKKyAgICAvLyBXZSBhcmUgaW4gdHJhbnNp
dGlvbiBmcm9tIEpTIHRyYW5zcG9ydCB2aWEgd2ViSW5zcGVjdG9yIHRvIG5hdGl2ZQorICAgIC8v
IHRyYW5zcG9ydCB2aWEgSW5zcGVjdG9yQ2xpZW50LiBBZnRlciBtaWdyYXRpb24sIHdlYkluc3Bl
Y3RvciBwYXJhbWV0ZXIgc2hvdWxkCisgICAgLy8gYmUgcmVtb3ZlZC4KKyAgICB2b2lkIGNvbm5l
Y3RGcm9udGVuZChjb25zdCBTY3JpcHRPYmplY3QmIHdlYkluc3BlY3Rvcik7CiAgICAgdm9pZCBk
aXNjb25uZWN0RnJvbnRlbmQoKTsKIAogICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNz
YWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBTY3JpcHRDYWxsU3RhY2sqKTsK
QEAgLTE1MSw3ICsxNTYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNwZWN0ZWRXaW5kb3dTY3Jp
cHRPYmplY3RDbGVhcmVkKEZyYW1lKik7CiAKICAgICBib29sIHdpbmRvd1Zpc2libGUoKTsKLSAg
ICB2b2lkIHNldEZyb250ZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ+KTsKIAogICAg
IHZvaWQgZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZnJhbWVEZXRh
Y2hlZEZyb21QYXJlbnQoRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
LmNwcAppbmRleCAzOTBlZGFiLi44MWNiMGUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgor
I2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKQEAgLTQ5LDggKzUwLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnNwZWN0
b3JGcm9udGVuZDo6SW5zcGVjdG9yRnJvbnRlbmQoU2NyaXB0T2JqZWN0IHdlYkluc3BlY3RvcikK
LSAgICA6IG1fd2ViSW5zcGVjdG9yKHdlYkluc3BlY3RvcikKK0luc3BlY3RvckZyb250ZW5kOjpJ
bnNwZWN0b3JGcm9udGVuZChTY3JpcHRPYmplY3Qgd2ViSW5zcGVjdG9yLCBJbnNwZWN0b3JDbGll
bnQqIGluc3BlY3RvckNsaWVudCkKKyAgICA6IG1fd2ViSW5zcGVjdG9yKHdlYkluc3BlY3Rvciks
IG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kLmgKaW5kZXggYjlmODdlZi4uNzhkOWJhYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIEluc3Bl
Y3RvckZyb250ZW5kX2gKICNkZWZpbmUgSW5zcGVjdG9yRnJvbnRlbmRfaAogCisjaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJyYXkuaCIKICNpbmNsdWRlICJT
Y3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgpAQCAtMzksMTYgKzQwLDIw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDb25zb2xlTWVzc2FnZTsKICAgICBj
bGFzcyBEYXRhYmFzZTsKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBJbnNwZWN0b3JDbGll
bnQ7CiAgICAgY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2U7CisgICAgY2xhc3MgSW5zcGVjdG9yV29y
a2VyUmVzb3VyY2U7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBTY3JpcHRTdHJpbmc7CiAg
ICAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFN0b3JhZ2U7Ci0gICAg
Y2xhc3MgSW5zcGVjdG9yV29ya2VyUmVzb3VyY2U7CiAKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9u
dGVuZCA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbnNwZWN0
b3JGcm9udGVuZChTY3JpcHRPYmplY3Qgd2ViSW5zcGVjdG9yKTsKKyAgICAgICAgLy8gV2UgYXJl
IGluIHRyYW5zaXRpb24gZnJvbSBKUyB0cmFuc3BvcnQgdmlhIHdlYkluc3BlY3RvciB0byBuYXRp
dmUKKyAgICAgICAgLy8gdHJhbnNwb3J0IHZpYSBpbnNwZWN0b3JDbGllbnQuIEFmdGVyIG1pZ3Jh
dGlvbiwgd2ViSW5zcGVjdG9yIHBhcmFtZXRlciBzaG91bGQKKyAgICAgICAgLy8gYmUgcmVtb3Zl
ZC4KKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmQoU2NyaXB0T2JqZWN0IHdlYkluc3BlY3Rvciwg
SW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpOwogICAgICAgICB+SW5zcGVjdG9yRnJv
bnRlbmQoKTsKIAogICAgICAgICB2b2lkIGNsb3NlKCk7CkBAIC0xNjksNiArMTc0LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY2FsbFNpbXBsZUZ1
bmN0aW9uKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKTsKICAgICAgICAgU2NyaXB0T2JqZWN0
IG1fd2ViSW5zcGVjdG9yOworICAgICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xp
ZW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggMThjNTJkYS4u
MTg4NTY2ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpmcm9udGVuZExvYWRlZCgpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0
RnJvbnRlbmQobmV3IEluc3BlY3RvckZyb250ZW5kKHdlYkluc3BlY3Rvck9iaikpOworICAgIG1f
aW5zcGVjdG9yQ29udHJvbGxlci0+Y29ubmVjdEZyb250ZW5kKHdlYkluc3BlY3Rvck9iaik7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVxdWVzdEF0dGFjaFdpbmRv
dygpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAppbmRleCAyMzYxMmU2Li41Yzdk
MGM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTYyNSw3ICs2MjUs
NyBAQCB2b2lkIEluc3BlY3Rvck9iamVjdDo6d3JpdGVKU09OKFZlY3RvcjxVQ2hhcj4qIG91dHB1
dCkgY29uc3QKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3JkZXIuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgRGljdGlvbmFyeTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGEuZmluZCht
X29yZGVyW2ldKTsKICAgICAgICAgQVNTRVJUKGl0ICE9IG1fZGF0YS5lbmQoKSk7Ci0gICAgICAg
IGlmIChpdCAhPSBtX2RhdGEuYmVnaW4oKSkKKyAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBv
dXRwdXQtPmFwcGVuZCgnLCcpOwogICAgICAgICBkb3VibGVRdW90ZVN0cmluZyhpdC0+Zmlyc3Qs
IG91dHB1dCk7CiAgICAgICAgIG91dHB1dC0+YXBwZW5kKCc6Jyk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA4YTc4Y2QyLi5kYzIyMGQ4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTU3Miw2ICs1NzIsMTMgQEAgV2Vi
SW5zcGVjdG9yLmRpc3BhdGNoID0gZnVuY3Rpb24oKSB7CiAgICAgc2V0VGltZW91dChkZWxheURp
c3BhdGNoLCAwKTsKIH0KIAorV2ViSW5zcGVjdG9yLmRpc3BhdGNoTWVzc2FnZVRvRnJvbnRlbmQg
PSBmdW5jdGlvbihhcmd1bWVudHMpCit7CisgICAgdmFyIG1ldGhvZE5hbWUgPSBhcmd1bWVudHMu
c2hpZnQoKTsKKyAgICBXZWJJbnNwZWN0b3JbbWV0aG9kTmFtZV0uYXBwbHkodGhpcywgYXJndW1l
bnRzKTsKK30KKworCiBXZWJJbnNwZWN0b3Iud2luZG93UmVzaXplID0gZnVuY3Rpb24oZXZlbnQp
CiB7CiAgICAgaWYgKHRoaXMuY3VycmVudFBhbmVsKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmggYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBj
NjMwOTMxLi43MGEwMDY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAorKysgYi9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApAQCAtNDgwLDEyICs0ODAsMTQg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKSB7IH0KICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRy
b2xsZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChOb2RlKikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGhpZGVIaWdobGlnaHQoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRp
bmcoY29uc3QgU3RyaW5nJiwgU3RyaW5nKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0
dGluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAyMzdiMTQ0Li5hNmY3YmZiIDEwMDY0NAotLS0gYS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWto
b25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2li
bGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAgIGZyb20gaW5zcGVj
dGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQu
CisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJv
bnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBm
cm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgor
ICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2Fz
ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0
CisKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVmbDo6Y2xvc2VJbnNwZWN0b3JGcm9u
dGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRFZmw6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZCk6CisgICAgICAgICogZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEVmbC5oOgorCiAyMDEwLTA2LTAxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJLaXQv
Y2YvQ2hhbmdlTG9nIGIvV2ViS2l0L2NmL0NoYW5nZUxvZwppbmRleCAxZjU5ZGVjLi4zNTM4MGUw
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2YvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jZi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNs
b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIg
dGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAgIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0
byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0
IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2Ug
YXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4
dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlz
IG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChXZWJJbnNw
ZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorCiAyMDEwLTAxLTA3ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
cmV5IEdhcmVuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudENGLmNwcCBiL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnRDRi5jcHAKaW5kZXggMGQ2NmI4My4uOWIwOGUxYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nm
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9XZWJLaXQvY2Yv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC01Myw2ICs1Myw4IEBA
CiAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogCisjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4KIAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
QEAgLTkyLDMgKzk0LDI4IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzdG9yZVNldHRpbmco
Y29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgc2V0dGluZykKICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0ZUtleUZvclByZWZlcmVu
Y2VzKGtleSkpOwogICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5n
ZXQoKSwgb2JqZWN0VG9TdG9yZS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRp
b24pOwogfQorCit2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVu
ZCgpCit7CisgICAgbV9mcm9udGVuZFBhZ2UgPSAwOworfQorCitib29sIFdlYkluc3BlY3RvckNs
aWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAg
ICBpZiAoIW1fZnJvbnRlbmRQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGcmFt
ZSogZnJhbWUgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29u
dHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBkaXNwYXRjaFRvRnJvbnRlbmQoIldl
Ykluc3BlY3Rvci5kaXNwYXRjaE1lc3NhZ2VUb0Zyb250ZW5kKCIpOworICAgIGRpc3BhdGNoVG9G
cm9udGVuZCArPSBtZXNzYWdlOworICAgIGRpc3BhdGNoVG9Gcm9udGVuZCArPSAiKTsiOworICAg
IHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHQoZGlzcGF0Y2hUb0Zyb250ZW5kKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA1Zjg1ZTUuLmQ0YzhjY2EgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEwLTA2LTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB0cmFu
c2ZlciB0aW1lbGluZS9kb20vZXRjIGRhdGEKKyAgICAgICAgZnJvbSBpbnNwZWN0ZWQgcGFnZSBz
aWRlIHRvIHRoZSBmcm9udC1lbmQgc2lkZSBpbiBzZXJpYWxpemVkIGZvcm1hdC4KKyAgICAgICAg
UmlnaHQgbm93IHdoZW4gd2Ugd2FudCB0byBzaG93IHNvbWV0aGluZyBhdCBmcm9udC1lbmQgc2lk
ZSB3ZSBhcmUgdXNpbmcKKyAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGluIGZyb250LWVuZCBj
b250ZXh0IGFuZCBTY3JpcHRPYmplY3QgZm9yIHBhc3NpbmcgdGhlIGRhdGEuCisgICAgICAgIFRo
YXQgaXMgbm90IHN1aXRhYmxlIGZvciByZW1vdGUgZGVidWdnaW5nIHVzZSBjYXNlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAg
ICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVj
dG9yQ2xpZW50SW1wbDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6
Okluc3BlY3RvckNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgICog
c3JjL0luc3BlY3RvckNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2Vu
dEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6c2V0SW5z
cGVjdG9yRnJvbnRlbmRQcm94eVRvSW5zcGVjdG9yQ29udHJvbGxlcik6CisKIDIwMTAtMDYtMDcg
IFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5z
cGVjdG9yQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVu
dEltcGwuY3BwCmluZGV4IDIyYjUxNWYuLjg3YzVhYzAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcApAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5o
IgorI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBsLmgiCisjaW5jbHVkZSAiV2ViRGV2VG9v
bHNNZXNzYWdlRGF0YS5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIKICNpbmNsdWRlICJXZWJVUkwu
aCIKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCkBAIC02NSw2ICs2NywxMCBAQCB2b2lkIElu
c3BlY3RvckNsaWVudEltcGw6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9s
bGVyKikKIHsKIH0KIAordm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjpjbG9zZUluc3BlY3RvckZy
b250ZW5kKCkKK3sKK30KKwogc3RhdGljIHZvaWQgaW52YWxpZGF0ZU5vZGVCb3VuZGluZ1JlY3Qo
V2ViVmlld0ltcGwqIHdlYlZpZXcpCiB7CiAgICAgLy8gRklYTUU6IElzIGl0IGltcG9ydGFudCB0
byBqdXN0IGludmFsaWRhdGUgdGhlIHJlY3Qgb2YgdGhlIG5vZGUgcmVnaW9uCkBAIC0xMDIsNCAr
MTA4LDIwIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1faW5zcGVjdGVkV2ViVmlldy0+
c2V0SW5zcGVjdG9yU2V0dGluZyhrZXksIHZhbHVlKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGll
bnRJbXBsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBtZXNz
YWdlKQoreworICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBkZXZUb29sc0FnZW50ID0gc3RhdGlj
X2Nhc3Q8V2ViRGV2VG9vbHNBZ2VudEltcGwqPihtX2luc3BlY3RlZFdlYlZpZXctPmRldlRvb2xz
QWdlbnQoKSk7CisgICAgaWYgKCFkZXZUb29sc0FnZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBhcmd1bWVudHMoc2l6ZV90KDEpKTsKKyAgICBh
cmd1bWVudHNbMF0gPSBtZXNzYWdlOworICAgIFdlYkRldlRvb2xzTWVzc2FnZURhdGEgZGF0YTsK
KyAgICBkYXRhLmNsYXNzTmFtZSA9ICJUb29sc0FnZW50RGVsZWdhdGUiOworICAgIGRhdGEubWV0
aG9kTmFtZSA9ICJkaXNwYXRjaE9uQ2xpZW50IjsKKyAgICBkYXRhLmFyZ3VtZW50cy5zd2FwKGFy
Z3VtZW50cyk7CisgICAgZGV2VG9vbHNBZ2VudC0+c2VuZFJwY01lc3NhZ2UoZGF0YSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0v
c3JjL0luc3BlY3RvckNsaWVudEltcGwuaAppbmRleCA3NDQ3ZDBjLi45YTdjM2JhIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaApAQCAtMzYsNiArMzYsOCBAQAog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YkRldlRvb2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIAogY2xhc3MgSW5zcGVj
dG9yQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQgewpAQCAtNDYs
MTUgKzQ4LDE1IEBAIHB1YmxpYzoKICAgICAvLyBJbnNwZWN0b3JDbGllbnQgbWV0aG9kczoKICAg
ICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCB2b2lkIG9w
ZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAg
dmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKKwogICAgIHZpcnR1YWwgdm9p
ZCBoaWdobGlnaHQoV2ViQ29yZTo6Tm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxp
Z2h0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZygKLSAgICAgICAgY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJiBrZXksCi0gICAgICAgIFdlYkNvcmU6OlN0cmluZyogdmFsdWUpOwot
ICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoCi0gICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYga2V5LAotICAgICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVlKTsKIAorICAg
IHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXks
IFdlYkNvcmU6OlN0cmluZyogdmFsdWUpOworICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmco
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdmFsdWUp
OworCisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmKTsKIHByaXZhdGU6CiAKICAgICAvLyBUaGUgV2ViVmlld0ltcGwgb2YgdGhlIHBh
Z2UgYmVpbmcgaW5zcGVjdGVkOyBnZXRzIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKaW5kZXggOGRkZTMxZi4u
YmIzZDAwMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50
SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5j
cHAKQEAgLTQ3MCw4ICs0NzAsNyBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpzZXRJbnNw
ZWN0b3JGcm9udGVuZFByb3h5VG9JbnNwZWN0b3JDb250cm9sbGVyKCkKICAgICBTY3JpcHRTdGF0
ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Zm9yQ29udGV4dCgKICAgICAgICAgdjg6OkxvY2FsPHY4
OjpDb250ZXh0Pjo6TmV3KG1fdXRpbGl0eUNvbnRleHQpKTsKICAgICBJbnNwZWN0b3JDb250cm9s
bGVyKiBpYyA9IGluc3BlY3RvckNvbnRyb2xsZXIoKTsKLSAgICBpYy0+c2V0RnJvbnRlbmQobmV3
IEluc3BlY3RvckZyb250ZW5kKAotICAgICAgICBTY3JpcHRPYmplY3Qoc3RhdGUsIG1fdXRpbGl0
eUNvbnRleHQtPkdsb2JhbCgpKSkpOworICAgIGljLT5jb25uZWN0RnJvbnRlbmQoU2NyaXB0T2Jq
ZWN0KHN0YXRlLCBtX3V0aWxpdHlDb250ZXh0LT5HbG9iYWwoKSkpOwogfQogCiB2b2lkIFdlYkRl
dlRvb2xzQWdlbnRJbXBsOjpzZXRBcHVBZ2VudEVuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwIGIv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCmluZGV4IDg4
OTJkN2YuLjJiZjllNGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50RWZsLmNwcAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudEVmbC5jcHAKQEAgLTM4LDYgKzM4LDExIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50
RWZsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDbGllbnRFZmw6OmNsb3NlSW5zcGVj
dG9yRnJvbnRlbmQoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgSW5zcGVj
dG9yQ2xpZW50RWZsOjpoaWdobGlnaHQoTm9kZSogbm9kZSkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwpAQCAtNTgsNCArNjMsMTEgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRFZmw6OnN0b3JlU2V0
dGluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50RWZsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBlbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKKwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRFZmwuaCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
RWZsLmgKaW5kZXggMzBjOWNhZi4uMTU5ZThhNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCkBAIC00NCwxMiArNDQsMTUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopOworICAgIHZpcnR1
YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaGln
aGxpZ2h0KE5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwogCiAgICAg
dmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2
YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYpOwogfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBhZTk4MWRiLi45MTIyNmNhIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA2LTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZWJJbnNwZWN0b3I6IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB0cmFuc2ZlciB0
aW1lbGluZS9kb20vZXRjIGRhdGEKKyAgICAgICAgZnJvbSBpbnNwZWN0ZWQgcGFnZSBzaWRlIHRv
IHRoZSBmcm9udC1lbmQgc2lkZSBpbiBzZXJpYWxpemVkIGZvcm1hdC4KKyAgICAgICAgUmlnaHQg
bm93IHdoZW4gd2Ugd2FudCB0byBzaG93IHNvbWV0aGluZyBhdCBmcm9udC1lbmQgc2lkZSB3ZSBh
cmUgdXNpbmcKKyAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGluIGZyb250LWVuZCBjb250ZXh0
IGFuZCBTY3JpcHRPYmplY3QgZm9yIHBhc3NpbmcgdGhlIGRhdGEuCisgICAgICAgIFRoYXQgaXMg
bm90IHN1aXRhYmxlIGZvciByZW1vdGUgZGVidWdnaW5nIHVzZSBjYXNlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
c3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6
Okluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaDoKKwogMjAxMC0wNi0wNCAgTWFydGluIFJv
Ymluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFu
IExvcGV6LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRH
dGsuY3BwCmluZGV4IDMxN2EwNTguLjVkYjI2NjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnRHdGsuaCIKIAorI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1ZGUgIndlYmtp
dHdlYmluc3BlY3Rvci5oIgogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKQEAgLTM4LDYgKzM5
LDcgQEAgc3RhdGljIHZvaWQgbm90aWZ5V2ViVmlld0Rlc3Ryb3llZChXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBJbnNwZWN0b3JGcm9udGVuZENsaWUKIAogSW5zcGVjdG9yQ2xpZW50OjpJbnNwZWN0
b3JDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICA6IG1faW5zcGVjdGVkV2ViVmll
dyh3ZWJWaWV3KQorICAgICwgbV9mcm9udGVuZFBhZ2UoMCkKIHt9CiAKIHZvaWQgSW5zcGVjdG9y
Q2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQpAQCAtODAsOCArODIsMTMgQEAgdm9pZCBJbnNw
ZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBj
b250cm9sbGVyKQogCiAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQoaW5zcGVjdG9yV2Vi
VmlldykpOwogCi0gICAgUGFnZSogaW5zcGVjdG9yUGFnZSA9IGNvcmUoaW5zcGVjdG9yV2ViVmll
dyk7Ci0gICAgaW5zcGVjdG9yUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0
b3JGcm9udGVuZENsaWVudChuZXcgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9pbnNwZWN0ZWRX
ZWJWaWV3LCBpbnNwZWN0b3JXZWJWaWV3LCB3ZWJJbnNwZWN0b3IsIGluc3BlY3RvclBhZ2UpKTsK
KyAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoaW5zcGVjdG9yV2ViVmlldyk7CisgICAgbV9mcm9u
dGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQobmV3IEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1faW5zcGVjdGVkV2ViVmlldywgaW5zcGVj
dG9yV2ViVmlldywgd2ViSW5zcGVjdG9yLCBtX2Zyb250ZW5kUGFnZSkpOworfQorCit2b2lkIElu
c3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCit7CisgICAgbV9mcm9udGVu
ZFBhZ2UgPSAwOwogfQogCiB2b2lkIEluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KE5vZGUqIG5v
ZGUpCkBAIC0xMDQsNiArMTExLDI1IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjpzdG9yZVNldHRp
bmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kUGFnZSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRnJhbWUqIGZyYW1lID0gbV9mcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7
CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBTdHJpbmcgZGlzcGF0Y2hUb0Zyb250ZW5kKCJXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNzYWdl
VG9Gcm9udGVuZCgiKTsKKyAgICBkaXNwYXRjaFRvRnJvbnRlbmQgKz0gbWVzc2FnZTsKKyAgICBk
aXNwYXRjaFRvRnJvbnRlbmQgKz0gIik7IjsKKyAgICBzY3JpcHRDb250cm9sbGVyLT5leGVjdXRl
U2NyaXB0KGRpc3BhdGNoVG9Gcm9udGVuZCk7CisgICAgcmV0dXJuIHRydWU7Cit9CiAKIGJvb2wg
ZGVzdHJveWVkID0gVFJVRTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50R3RrLmgKaW5kZXggY2RiNTM3NS4uZGY2YWM0NiAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCkBAIC00OSw2ICs0OSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVk
KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3Bl
Y3RvckZyb250ZW5kKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChXZWJDb3Jl
OjpOb2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CkBAIC01Niw4
ICs1NywxMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVs
YXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgV2ViQ29yZTo6U3RyaW5nKiB2
YWx1ZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6
U3RyaW5nJiBrZXksIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdmFsdWUpOwogCisgICAgICAgIHZp
cnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7
CiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2ViVmlldyogbV9pbnNwZWN0ZWRXZWJWaWV3
OworICAgICAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5kUGFnZTsKICAgICB9OwogCiAgICAg
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbCB7CmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9n
IGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCAzNWFkOThhLi5iMjk2ZGRkIDEwMDY0NAot
LS0gYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIgdGlt
ZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAgIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0
aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5v
dyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJl
IHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBh
bmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5v
dCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnRIYWlrdTo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRIYWlrdTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oOgorCiAyMDEwLTA1
LTMxICBMeW9uIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50SGFpa3UuY3BwIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudEhhaWt1LmNwcAppbmRleCA1OTIzMmU5Li42N2FhNmU0IDEwMDY0NAotLS0gYS9X
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3BwCisrKyBi
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5jcHAKQEAg
LTQ3LDYgKzQ3LDExIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50SGFpa3U6Om9wZW5JbnNwZWN0b3JG
cm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCit2b2lkIEluc3BlY3RvckNsaWVudEhhaWt1OjpjbG9zZUluc3BlY3RvckZyb250
ZW5kKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEluc3BlY3RvckNsaWVu
dEhhaWt1OjpoaWdobGlnaHQoTm9kZSogbm9kZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpA
QCAtNjcsNSArNzIsMTEgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRIYWlrdTo6c3RvcmVTZXR0aW5n
KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50SGFpa3U6OnNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oIGIvV2ViS2l0L2hh
aWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmgKaW5kZXggZDQyNzY3MC4u
ZTRkNWNiNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudEhhaWt1LmgKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudEhhaWt1LmgKQEAgLTQzLDEyICs0MywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXIqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KE5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGhpZGVIaWdobGlnaHQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0
aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBXZWJDb3JlOjpTdHJpbmcqIHZhbHVlKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcm
IGtleSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB2YWx1ZSk7CisKKyAgICAgICAgdmlydHVhbCBi
b29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICB9
OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDg1Zjg2ODMuLjI4YzhjZmUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVs
aW5lL2RvbS9ldGMgZGF0YQorICAgICAgICBmcm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhl
IGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBub3cg
d2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1
c2luZworICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5k
IFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qg
c3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJ
bnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVj
dG9yRnJvbnRlbmQpOgorCiAyMDEwLTA2LTA2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xv
dWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZWU4MWIy
NS4uOTIxNTU5NSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaAorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCkBAIC00Miw2ICs0MiwxMiBAQCBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0ZXI7CiBj
bGFzcyBXZWJWaWV3OwogI2VuZGlmCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFn
ZTsKKworfQorCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAq
KTsKQEAgLTQ5LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JE
ZXN0cm95ZWQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3Bl
Y3RvckZyb250ZW5kKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KFdlYkNvcmU6Ok5v
ZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwpAQCAtNTYsMjYgKzYzLDI5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYga2V5LCBXZWJDb3JlOjpTdHJpbmcqIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcmVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmIHZhbHVlKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRl
bmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2Vi
VmlldzsKICAgICBSZXRhaW5QdHI8V2ViTm9kZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdodGVyOwor
ICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwogfTsKIAorCiBjbGFzcyBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsIHsKIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJW
aWV3KiwgV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciosIFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXIqLCBXZWJDb3JlOjpQYWdlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRM
b2FkZWQoKTsKLSAgICAKKwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGxvY2FsaXplZFN0
cmluZ3NVUkwoKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBoaWRkZW5QYW5lbHMoKTsK
LSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xvc2VXaW5kb3coKTsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3co
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCk7Ci0gICAgCisKICAgICB2aXJ0dWFs
IHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KTsKICAgICB2aXJ0
dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG5ld1VS
TCk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lm1tIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
bW0KaW5kZXggNjYxYjBkMi4uNzFiMWMxNSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTgzLDYgKzgzLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJW
aWV3ICp3ZWJWaWV3KQogOiBtX3dlYlZpZXcod2ViVmlldykKICwgbV9oaWdobGlnaHRlcihBZG9w
dE5TLCBbW1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3
OndlYlZpZXddKQorLCBtX2Zyb250ZW5kUGFnZSgwKQogewogfQogCkBAIC05NCw5ICs5NSw4IEBA
IHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogdm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyKQogewogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JXaW5k
b3dDb250cm9sbGVyPiB3aW5kb3dDb250cm9sbGVyKEFkb3B0TlMsIFtbV2ViSW5zcGVjdG9yV2lu
ZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3Om1fd2ViVmlld10p
OwotICAgIFBhZ2UqIGZyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkg
d2ViVmlld10pOwotCi0gICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNl
dEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG5ldyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCht
X3dlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xsZXIsIGZy
b250ZW5kUGFnZSkpOworICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJvbGxl
ci5nZXQoKSB3ZWJWaWV3XSk7CisgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobmV3IFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50KG1fd2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29udHJv
bGxlciwgbV9mcm9udGVuZFBhZ2UpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omhp
Z2hsaWdodChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dl
YktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOTQ1MDk2YS4uNDU2NTE1NSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3Bl
Y3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMg
ZGF0YQorICAgICAgICBmcm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBz
aWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50
IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVj
dCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9y
IHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6
Okluc3BlY3RvckNsaWVudFF0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0
OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xp
ZW50UXQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50UXQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoKKwogMjAxMC0wNi0wNCAgTGFzemxvIEdvbWJvcyAg
PGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgU3ltYmlhbiBidWlsZCBmaXgu
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQu
Y3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAppbmRl
eCAyZDExNzAwLi4zOGRlZDY4IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRRdC5jcHAKQEAgLTQwLDEwICs0MCwxMiBAQAogI2luY2x1ZGUgPFF0Q29yZS9R
U2V0dGluZ3M+CiAjaW5jbHVkZSA8UXRDb3JlL1FDb3JlQXBwbGljYXRpb24+CiAKKyNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC03NCw2ICs3Niw3IEBAIHB1YmxpYzoKIAogSW5zcGVjdG9yQ2xpZW50UXQ6Oklu
c3BlY3RvckNsaWVudFF0KFFXZWJQYWdlKiBwYWdlKQogICAgIDogbV9pbnNwZWN0ZWRXZWJQYWdl
KHBhZ2UpCisgICAgLCBtX2Zyb250ZW5kV2ViUGFnZSgwKQoge30KIAogdm9pZCBJbnNwZWN0b3JD
bGllbnRRdDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKQEAgLTEwNCw2ICsxMDcsMTIgQEAgdm9pZCBJ
bnNwZWN0b3JDbGllbnRRdDo6b3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXIqKQogICAgIGluc3BlY3Rvci0+ZC0+c2V0RnJvbnRlbmQoaW5zcGVjdG9yVmll
dyk7CiAKICAgICBpbnNwZWN0b3JWaWV3LT5wYWdlKCktPmQtPnBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobmV3IEluc3BlY3RvckZyb250ZW5k
Q2xpZW50UXQobV9pbnNwZWN0ZWRXZWJQYWdlLCBpbnNwZWN0b3JWaWV3KSk7CisgICAgbV9mcm9u
dGVuZFdlYlBhZ2UgPSBpbnNwZWN0b3JQYWdlOworfQorCit2b2lkIEluc3BlY3RvckNsaWVudFF0
OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKK3sKKyAgICBtX2Zyb250ZW5kV2ViUGFnZSA9IDA7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OmhpZ2hsaWdodChOb2RlKikKQEAgLTE2MCw2
ICsxNjksMzAgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNldHRpbmcpCiAjZW5kaWYgLy8gUVRfTk9fU0VUVElO
R1MKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRRdDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmRXZWJQYWdlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBQYWdlKiBmcm9udGVuZFBhZ2UgPSBRV2ViUGFnZVBy
aXZhdGU6OmNvcmUobV9mcm9udGVuZFdlYlBhZ2UpOworICAgIGlmICghZnJvbnRlbmRQYWdlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGcmFtZSogZnJhbWUgPSBmcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7
CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBTdHJpbmcgZGlzcGF0Y2hUb0Zyb250ZW5kKCJXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNzYWdl
VG9Gcm9udGVuZCgiKTsKKyAgICBkaXNwYXRjaFRvRnJvbnRlbmQgKz0gbWVzc2FnZTsKKyAgICBk
aXNwYXRjaFRvRnJvbnRlbmQgKz0gIik7IjsKKyAgICBzY3JpcHRDb250cm9sbGVyLT5leGVjdXRl
U2NyaXB0KGRpc3BhdGNoVG9Gcm9udGVuZCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRp
YyBTdHJpbmcgdmFyaWFudFRvU2V0dGluZyhjb25zdCBRVmFyaWFudCYgcXZhcmlhbnQpCiB7CiAg
ICAgU3RyaW5nIHJldFZhbDsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudFF0LmgKaW5kZXggNGJlYWRhYi4uNmU2M2I5MCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBv
cGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOworICAg
IHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaGlnaGxpZ2h0KE5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwpA
QCAtNTgsOCArNTksMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRp
bmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogdmFsdWUpOwogICAgIHZpcnR1YWwgdm9pZCBz
dG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCisg
ICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKKwog
cHJpdmF0ZToKICAgICBRV2ViUGFnZSogbV9pbnNwZWN0ZWRXZWJQYWdlOworICAgIFFXZWJQYWdl
KiBtX2Zyb250ZW5kV2ViUGFnZTsKIH07CiAKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
UXQgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCB7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDQyMmFlODcu
LjM5ZWNhOWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zz
a3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRv
IHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAgICAgICBmcm9tIGluc3BlY3RlZCBw
YWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0LgorICAg
ICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250LWVu
ZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQt
ZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAgICAg
ICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3RvckNsaWVudDo6fldlYkluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisKIDIwMTAtMDYtMDQgIEFsaWNlIExpdSAgPGFsaWNl
LmxpdUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9uIEhvbmV5Y3V0dC4KZGlm
ZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRl
eCAzYzI2M2U1Li4zNGZiODI3IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC02OSw2ICs2OSw3IEBAIHN0YXRpYyBDRkJ1bmRsZVJl
ZiBnZXRXZWJLaXRCdW5kbGUoKQogCiBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNs
aWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV9pbnNwZWN0ZWRXZWJWaWV3KHdlYlZpZXcp
CisgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQogewogICAgIEFTU0VSVChtX2luc3BlY3RlZFdlYlZp
ZXcpOwogICAgIG1faW5zcGVjdGVkV2ViVmlldy0+dmlld1dpbmRvdygoT0xFX0hBTkRMRSopJm1f
aW5zcGVjdGVkV2ViVmlld0h3bmQpOwpAQCAtNzYsNiArNzcsNyBAQCBXZWJJbnNwZWN0b3JDbGll
bnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogCiBXZWJJbnNwZWN0b3JD
bGllbnQ6On5XZWJJbnNwZWN0b3JDbGllbnQoKQogeworICAgIG1fZnJvbnRlbmRQYWdlID0gMDsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCkBAIC0x
NzIsOCArMTc0LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9u
dGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb24KICAgICBpZiAoRkFJTEVEKGZy
b250ZW5kV2ViVmlldy0+dG9wTGV2ZWxGcmFtZSgpLT5sb2FkUmVxdWVzdChyZXF1ZXN0LmdldCgp
KSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKGZyb250ZW5kV2Vi
Vmlldy5nZXQoKSk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0
b3JGcm9udGVuZENsaWVudChuZXcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9pbnNwZWN0
ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZpZXdId25kLCBmcm9udGVuZEh3bmQsIGZyb250ZW5k
V2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcykpOworICAgIG1fZnJvbnRlbmRQYWdl
ID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOworICAgIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50KiBmcm9udGVuZENsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCht
X2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIGZyb250ZW5kSHduZCwg
ZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzKTsKKyAgICBtX2Zyb250
ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChmcm9udGVuZENsaWVudCk7CiAgICAgbV9mcm9udGVuZEh3bmQgPSBmcm9udGVuZEh3bmQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmlu
ZGV4IDY0NzczYTUuLjRhMzZiZDQgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMzcsNiArMzcsMTIgQEAKICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFBhZ2U7CisKK30KKwogY2xhc3MgV2ViTm9kZUhpZ2hsaWdodDsKIGNsYXNzIFdlYlZpZXc7
CiAKQEAgLTQ4LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JE
ZXN0cm95ZWQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3Bl
Y3RvckZyb250ZW5kKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KFdlYkNvcmU6Ok5v
ZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwpAQCAtNTgsMTAgKzY1LDEz
IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUhpZ2hsaWdodCgpOwogICAgIHZvaWQgZnJvbnRl
bmRDbG9zaW5nKCkgeyBtX2Zyb250ZW5kSHduZCA9IDA7IH0KIAorICAgIGJvb2wgc2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworCiBwcml2YXRlOgogICAgIH5X
ZWJJbnNwZWN0b3JDbGllbnQoKTsKIAogICAgIFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsK
KyAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5kUGFnZTsKICAgICBIV05EIG1faW5zcGVjdGVk
V2ViVmlld0h3bmQ7CiAgICAgSFdORCBtX2Zyb250ZW5kSHduZDsKIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggYWIyNTEwMi4uZTE1
ZjM3NCAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd3gvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyYW5z
ZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAgICAgICBmcm9tIGluc3BlY3RlZCBwYWdlIHNp
ZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBS
aWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRl
IHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNv
bnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAgICAgICAgVGhh
dCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAg
ICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnRXeDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXeDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAg
ICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4Lmg6CisKIDIwMTAtMDUtMjcgIEtl
dmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBC
dWlsZCBmaXhlcyBmb3IgV2luZG93cyBhZnRlciByZWNlbnQgY2hhbmdlcy4KZGlmZiAtLWdpdCBh
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcCBiL1dlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcAppbmRleCA1ZGM5YWM3Li44MDYz
ZjcwIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRX
eC5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guY3Bw
CkBAIC01Miw2ICs1MiwxMSBAQCB2b2lkIEluc3BlY3RvckNsaWVudFd4OjpvcGVuSW5zcGVjdG9y
RnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDbGllbnRXeDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVu
ZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDbGllbnRX
eDo6aGlnaGxpZ2h0KE5vZGUqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC03Miw0ICs3
NywxMCBAQCB2b2lkIEluc3BlY3RvckNsaWVudFd4OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgc2V0dGluZykKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQog
Citib29sIEluc3BlY3RvckNsaWVudFd4OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwog
fTsKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4
LmggYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oCmluZGV4IDc2
NzVkYzEuLjExZTk1ZmQgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFd4LmgKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50V3guaApAQCAtNDIsMTIgKzQyLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5z
cGVjdG9yRGVzdHJveWVkKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250
ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VJbnNwZWN0b3JGcm9udGVuZCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChOb2Rl
Kik7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKIAogICAgIHZpcnR1YWwgdm9p
ZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogdmFsdWUpOwogICAg
IHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOworCisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25z
dCBTdHJpbmcmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58139</attachid>
            <date>2010-06-08 08:06:31 -0700</date>
            <delta_ts>2010-06-09 06:00:14 -0700</delta_ts>
            <desc>[patch] sixth iteration. </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>44154</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDdmZTlhNi4uNzA2YThhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUg
dG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAgIGZyb20gaW5zcGVjdGVk
IHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisg
ICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQt
ZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9u
dC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAg
ICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6Okluc3BlY3RvckZy
b250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpmcm9udGVuZExvYWRlZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPYmplY3Q6OndyaXRlSlNPTik6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNz
YWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RW1wdHlJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9G
cm9udGVuZCk6CisKIDIwMTAtMDYtMDcgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5u
QHJpbS5jb20+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBVcGRhdGVkIHJ1bi1iaW5kaW5ncy10
ZXN0cyByZXN1bHRzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA4NDFjMTVl
Li5jODI4NzMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQu
aAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNDIsMTIgKzQy
LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250
cm9sbGVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChOb2RlKikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRl
U2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2YWx1ZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFs
dWUpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDdiMmNkN2MuLjc0Y2Vk
MDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC00MjYs
MTEgKzQyNiwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldFNlYXJjaGluZ0Zvck5v
ZGUoYm9vbCBlbmFibGVkKQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
ZXRGcm9udGVuZChQYXNzT3duUHRyPEluc3BlY3RvckZyb250ZW5kPiBmcm9udGVuZCkKK3ZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKGNvbnN0IFNjcmlwdE9iamVjdCYg
d2ViSW5zcGVjdG9yKQogewotICAgIEFTU0VSVChmcm9udGVuZCk7CiAgICAgbV9vcGVuaW5nRnJv
bnRlbmQgPSBmYWxzZTsKLSAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7CisgICAgbV9mcm9udGVu
ZCA9IG5ldyBJbnNwZWN0b3JGcm9udGVuZCh3ZWJJbnNwZWN0b3IsIG1fY2xpZW50KTsKICAgICBy
ZWxlYXNlRE9NQWdlbnQoKTsKICAgICBtX2RvbUFnZW50ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmNy
ZWF0ZShtX2Nzc1N0b3JlLmdldCgpLCBtX2Zyb250ZW5kLmdldCgpKTsKICAgICBpZiAobV90aW1l
bGluZUFnZW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGJi
NmMzODguLjA1YTkzOWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgK
QEAgLTEzNCw2ICsxMzQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2hvdygpOwogICAgIHZvaWQg
c2hvd1BhbmVsKFNwZWNpYWxQYW5lbHMpOwogICAgIHZvaWQgY2xvc2UoKTsKKworICAgIC8vIFdl
IGFyZSBpbiB0cmFuc2l0aW9uIGZyb20gSlMgdHJhbnNwb3J0IHZpYSB3ZWJJbnNwZWN0b3IgdG8g
bmF0aXZlCisgICAgLy8gdHJhbnNwb3J0IHZpYSBJbnNwZWN0b3JDbGllbnQuIEFmdGVyIG1pZ3Jh
dGlvbiwgd2ViSW5zcGVjdG9yIHBhcmFtZXRlciBzaG91bGQKKyAgICAvLyBiZSByZW1vdmVkLgor
ICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKGNvbnN0IFNjcmlwdE9iamVjdCYgd2ViSW5zcGVjdG9y
KTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogCiAgICAgdm9pZCBhZGRNZXNzYWdl
VG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIFNjcmlw
dENhbGxTdGFjayopOwpAQCAtMTUxLDcgKzE1Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc3Bl
Y3RlZFdpbmRvd1NjcmlwdE9iamVjdENsZWFyZWQoRnJhbWUqKTsKIAogICAgIGJvb2wgd2luZG93
VmlzaWJsZSgpOwotICAgIHZvaWQgc2V0RnJvbnRlbmQoUGFzc093blB0cjxJbnNwZWN0b3JGcm9u
dGVuZD4pOwogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKERvY3VtZW50TG9hZGVyKik7CiAgICAg
dm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVudChGcmFtZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuY3BwCmluZGV4IDM5MGVkYWIuLjgxY2IwZTEgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldvcmtlclJlc291cmNlLmgi
CiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtNDksOCArNTAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUluc3BlY3RvckZyb250ZW5kOjpJbnNwZWN0b3JGcm9udGVuZChTY3JpcHRPYmplY3Qg
d2ViSW5zcGVjdG9yKQotICAgIDogbV93ZWJJbnNwZWN0b3Iod2ViSW5zcGVjdG9yKQorSW5zcGVj
dG9yRnJvbnRlbmQ6Okluc3BlY3RvckZyb250ZW5kKFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3Is
IEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQorICAgIDogbV93ZWJJbnNwZWN0b3Io
d2ViSW5zcGVjdG9yKSwgbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVjdG9yQ2xpZW50KQogewogfQog
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAppbmRleCBiOWY4N2VmLi43OGQ5YmFi
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRfaAogI2RlZmluZSBJbnNwZWN0b3JGcm9udGVuZF9o
CiAKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJTY3JpcHRBcnJheS5o
IgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCkBA
IC0zOSwxNiArNDAsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENvbnNvbGVN
ZXNzYWdlOwogICAgIGNsYXNzIERhdGFiYXNlOwogICAgIGNsYXNzIEZyYW1lOworICAgIGNsYXNz
IEluc3BlY3RvckNsaWVudDsKICAgICBjbGFzcyBJbnNwZWN0b3JSZXNvdXJjZTsKKyAgICBjbGFz
cyBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZTsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFNj
cmlwdFN0cmluZzsKICAgICBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAgICAgY2xhc3Mg
U3RvcmFnZTsKLSAgICBjbGFzcyBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZTsKIAogICAgIGNsYXNz
IEluc3BlY3RvckZyb250ZW5kIDogcHVibGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEluc3BlY3RvckZyb250ZW5kKFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IpOworICAg
ICAgICAvLyBXZSBhcmUgaW4gdHJhbnNpdGlvbiBmcm9tIEpTIHRyYW5zcG9ydCB2aWEgd2ViSW5z
cGVjdG9yIHRvIG5hdGl2ZQorICAgICAgICAvLyB0cmFuc3BvcnQgdmlhIGluc3BlY3RvckNsaWVu
dC4gQWZ0ZXIgbWlncmF0aW9uLCB3ZWJJbnNwZWN0b3IgcGFyYW1ldGVyIHNob3VsZAorICAgICAg
ICAvLyBiZSByZW1vdmVkLgorICAgICAgICBJbnNwZWN0b3JGcm9udGVuZChTY3JpcHRPYmplY3Qg
d2ViSW5zcGVjdG9yLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCk7CiAgICAgICAg
IH5JbnNwZWN0b3JGcm9udGVuZCgpOwogCiAgICAgICAgIHZvaWQgY2xvc2UoKTsKQEAgLTE2OSw2
ICsxNzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9p
ZCBjYWxsU2ltcGxlRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUpOwogICAgICAg
ICBTY3JpcHRPYmplY3QgbV93ZWJJbnNwZWN0b3I7CisgICAgICAgIEluc3BlY3RvckNsaWVudCog
bV9pbnNwZWN0b3JDbGllbnQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApp
bmRleCAxOGM1MmRhLi4xODg1NjZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmZyb250ZW5kTG9hZGVkKCkKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9pbnNwZWN0b3JD
b250cm9sbGVyLT5zZXRGcm9udGVuZChuZXcgSW5zcGVjdG9yRnJvbnRlbmQod2ViSW5zcGVjdG9y
T2JqKSk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25uZWN0RnJvbnRlbmQod2ViSW5z
cGVjdG9yT2JqKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpyZXF1
ZXN0QXR0YWNoV2luZG93KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCmluZGV4
IDIzNjEyZTYuLjVjN2QwYzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApA
QCAtNjI1LDcgKzYyNSw3IEBAIHZvaWQgSW5zcGVjdG9yT2JqZWN0Ojp3cml0ZUpTT04oVmVjdG9y
PFVDaGFyPiogb3V0cHV0KSBjb25zdAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9vcmRl
ci5zaXplKCk7ICsraSkgewogICAgICAgICBEaWN0aW9uYXJ5Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG1fZGF0YS5maW5kKG1fb3JkZXJbaV0pOwogICAgICAgICBBU1NFUlQoaXQgIT0gbV9kYXRhLmVu
ZCgpKTsKLSAgICAgICAgaWYgKGl0ICE9IG1fZGF0YS5iZWdpbigpKQorICAgICAgICBpZiAoaSkK
ICAgICAgICAgICAgIG91dHB1dC0+YXBwZW5kKCcsJyk7CiAgICAgICAgIGRvdWJsZVF1b3RlU3Ry
aW5nKGl0LT5maXJzdCwgb3V0cHV0KTsKICAgICAgICAgb3V0cHV0LT5hcHBlbmQoJzonKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDhhNzhjZDIuLmRjMjIw
ZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNTcyLDYg
KzU3MiwxMyBAQCBXZWJJbnNwZWN0b3IuZGlzcGF0Y2ggPSBmdW5jdGlvbigpIHsKICAgICBzZXRU
aW1lb3V0KGRlbGF5RGlzcGF0Y2gsIDApOwogfQogCitXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNz
YWdlVG9Gcm9udGVuZCA9IGZ1bmN0aW9uKGFyZ3VtZW50cykKK3sKKyAgICB2YXIgbWV0aG9kTmFt
ZSA9IGFyZ3VtZW50cy5zaGlmdCgpOworICAgIFdlYkluc3BlY3RvclttZXRob2ROYW1lXS5hcHBs
eSh0aGlzLCBhcmd1bWVudHMpOworfQorCisKIFdlYkluc3BlY3Rvci53aW5kb3dSZXNpemUgPSBm
dW5jdGlvbihldmVudCkKIHsKICAgICBpZiAodGhpcy5jdXJyZW50UGFuZWwpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oCmluZGV4IGM2MzA5MzEuLjcwYTAwNjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00
ODAsMTIgKzQ4MCwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ry
b3llZCgpIHsgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQo
SW5zcGVjdG9yQ29udHJvbGxlciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3Rv
ckZyb250ZW5kKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KE5vZGUqKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmLCBTdHJpbmcqKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgeyByZXR1
cm4gZmFsc2U7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9DaGFuZ2VMb2cgYi9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDIzN2IxNDQuLmE2ZjdiZmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA2
LTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IEl0IHNo
b3VsZCBiZSBwb3NzaWJsZSB0byB0cmFuc2ZlciB0aW1lbGluZS9kb20vZXRjIGRhdGEKKyAgICAg
ICAgZnJvbSBpbnNwZWN0ZWQgcGFnZSBzaWRlIHRvIHRoZSBmcm9udC1lbmQgc2lkZSBpbiBzZXJp
YWxpemVkIGZvcm1hdC4KKyAgICAgICAgUmlnaHQgbm93IHdoZW4gd2Ugd2FudCB0byBzaG93IHNv
bWV0aGluZyBhdCBmcm9udC1lbmQgc2lkZSB3ZSBhcmUgdXNpbmcKKyAgICAgICAgU2NyaXB0RnVu
Y3Rpb25DYWxsIGluIGZyb250LWVuZCBjb250ZXh0IGFuZCBTY3JpcHRPYmplY3QgZm9yIHBhc3Np
bmcgdGhlIGRhdGEuCisgICAgICAgIFRoYXQgaXMgbm90IHN1aXRhYmxlIGZvciByZW1vdGUgZGVi
dWdnaW5nIHVzZSBjYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50RWZsOjpjbG9z
ZUluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVm
bDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50RWZsLmg6CisKIDIwMTAtMDYtMDEgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAt
LWdpdCBhL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9XZWJLaXQvY2YvQ2hhbmdlTG9nCmluZGV4IDFm
NTlkZWMuLjM1MzgwZTAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jZi9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA2LTA3ICBJbHlhIFRpa2hv
bm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IEl0IHNob3VsZCBiZSBwb3NzaWJs
ZSB0byB0cmFuc2ZlciB0aW1lbGluZS9kb20vZXRjIGRhdGEKKyAgICAgICAgZnJvbSBpbnNwZWN0
ZWQgcGFnZSBzaWRlIHRvIHRoZSBmcm9udC1lbmQgc2lkZSBpbiBzZXJpYWxpemVkIGZvcm1hdC4K
KyAgICAgICAgUmlnaHQgbm93IHdoZW4gd2Ugd2FudCB0byBzaG93IHNvbWV0aGluZyBhdCBmcm9u
dC1lbmQgc2lkZSB3ZSBhcmUgdXNpbmcKKyAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGluIGZy
b250LWVuZCBjb250ZXh0IGFuZCBTY3JpcHRPYmplY3QgZm9yIHBhc3NpbmcgdGhlIGRhdGEuCisg
ICAgICAgIFRoYXQgaXMgbm90IHN1aXRhYmxlIGZvciByZW1vdGUgZGVidWdnaW5nIHVzZSBjYXNl
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKKyAg
ICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTAt
MDEtMDcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2YvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAwZDY2YjgzLi45YjA4ZTFiIDEwMDY0NAot
LS0gYS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisr
KyBiL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKQEAg
LTUzLDYgKzUzLDggQEAKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9u
Lmg+CiAKKyNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgogCiAjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgpAQCAtOTIsMyArOTQsMjggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBzZXR0aW5nKQog
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkoQWRvcHRDRiwgY3JlYXRl
S2V5Rm9yUHJlZmVyZW5jZXMoa2V5KSk7CiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKHBy
ZWZlcmVuY2VzS2V5LmdldCgpLCBvYmplY3RUb1N0b3JlLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1
cnJlbnRBcHBsaWNhdGlvbik7CiB9CisKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUlu
c3BlY3RvckZyb250ZW5kKCkKK3sKKyAgICBtX2Zyb250ZW5kUGFnZSA9IDA7Cit9CisKK2Jvb2wg
V2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQoreworICAgIGlmICghbV9mcm9udGVuZFBhZ2UpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIEZyYW1lKiBmcmFtZSA9IG1fZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKTsKKyAg
ICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTY3JpcHRDb250cm9s
bGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0
Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU3RyaW5nIGRpc3BhdGNo
VG9Gcm9udGVuZCgiV2ViSW5zcGVjdG9yLmRpc3BhdGNoTWVzc2FnZVRvRnJvbnRlbmQoIik7Cisg
ICAgZGlzcGF0Y2hUb0Zyb250ZW5kICs9IG1lc3NhZ2U7CisgICAgZGlzcGF0Y2hUb0Zyb250ZW5k
ICs9ICIpOyI7CisgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChkaXNwYXRjaFRv
RnJvbnRlbmQpOworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDVmODVlNS4u
ZDRjOGNjYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDYtMDcgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBv
c3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAgICAgICBmcm9tIGlu
c3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9y
bWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0
IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwg
aW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0
YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNl
IGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MDEzNAorCisgICAgICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JDbGllbnRJbXBsOjpjbG9zZUluc3BlY3RvckZyb250ZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KToKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdl
bnRJbXBsOjpzZXRJbnNwZWN0b3JGcm9udGVuZFByb3h5VG9JbnNwZWN0b3JDb250cm9sbGVyKToK
KwogMjAxMC0wNi0wNyAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
SW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKaW5kZXggMjJiNTE1Zi4uODdjNWFjMCAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCkBAIC0zNSw2ICszNSw4IEBA
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNp
bmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudEltcGwuaCIKKyNpbmNs
dWRlICJXZWJEZXZUb29sc01lc3NhZ2VEYXRhLmgiCiAjaW5jbHVkZSAiV2ViUmVjdC5oIgogI2lu
Y2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKQEAgLTY1LDYgKzY3
LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKElu
c3BlY3RvckNvbnRyb2xsZXIqKQogewogfQogCit2b2lkIEluc3BlY3RvckNsaWVudEltcGw6OmNs
b3NlSW5zcGVjdG9yRnJvbnRlbmQoKQoreworfQorCiBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlTm9k
ZUJvdW5kaW5nUmVjdChXZWJWaWV3SW1wbCogd2ViVmlldykKIHsKICAgICAvLyBGSVhNRTogSXMg
aXQgaW1wb3J0YW50IHRvIGp1c3QgaW52YWxpZGF0ZSB0aGUgcmVjdCBvZiB0aGUgbm9kZSByZWdp
b24KQEAgLTEwMiw0ICsxMDgsMjAgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjpzdG9yZVNl
dHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbV9pbnNw
ZWN0ZWRXZWJWaWV3LT5zZXRJbnNwZWN0b3JTZXR0aW5nKGtleSwgdmFsdWUpOwogfQogCitib29s
IEluc3BlY3RvckNsaWVudEltcGw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgV2ViRGV2VG9vbHNBZ2VudEltcGwqIGRldlRvb2xz
QWdlbnQgPSBzdGF0aWNfY2FzdDxXZWJEZXZUb29sc0FnZW50SW1wbCo+KG1faW5zcGVjdGVkV2Vi
Vmlldy0+ZGV2VG9vbHNBZ2VudCgpKTsKKyAgICBpZiAoIWRldlRvb2xzQWdlbnQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IGFyZ3VtZW50cyhzaXpl
X3QoMSkpOworICAgIGFyZ3VtZW50c1swXSA9IG1lc3NhZ2U7CisgICAgV2ViRGV2VG9vbHNNZXNz
YWdlRGF0YSBkYXRhOworICAgIGRhdGEuY2xhc3NOYW1lID0gIlRvb2xzQWdlbnREZWxlZ2F0ZSI7
CisgICAgZGF0YS5tZXRob2ROYW1lID0gImRpc3BhdGNoT25DbGllbnQiOworICAgIGRhdGEuYXJn
dW1lbnRzLnN3YXAoYXJndW1lbnRzKTsKKyAgICBkZXZUb29sc0FnZW50LT5zZW5kUnBjTWVzc2Fn
ZShkYXRhKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCmluZGV4IDc0NDdkMGMuLjlh
N2MzYmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1w
bC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCkBAIC0z
Niw2ICszNiw4IEBACiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKIGNsYXNzIFdlYlZpZXdJbXBsOwog
CiBjbGFzcyBJbnNwZWN0b3JDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudCB7CkBAIC00NiwxNSArNDgsMTUgQEAgcHVibGljOgogICAgIC8vIEluc3BlY3RvckNsaWVu
dCBtZXRob2RzOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOworCiAg
ICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChXZWJDb3JlOjpOb2RlKik7CiAgICAgdmlydHVhbCB2
b2lkIGhpZGVIaWdobGlnaHQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKAot
ICAgICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwKLSAgICAgICAgV2ViQ29yZTo6U3Ry
aW5nKiB2YWx1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZygKLSAgICAgICAgY29u
c3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksCi0gICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
dmFsdWUpOwogCisgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmIGtleSwgV2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7CisgICAgdmlydHVhbCB2b2lk
IHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6
U3RyaW5nJiB2YWx1ZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogcHJpdmF0ZToKIAogICAgIC8vIFRoZSBXZWJWaWV3
SW1wbCBvZiB0aGUgcGFnZSBiZWluZyBpbnNwZWN0ZWQ7IGdldHMgcGFzc2VkIHRvIHRoZSBjb25z
dHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50
SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApp
bmRleCA4ZGRlMzFmLi5iYjNkMDAyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkRldlRvb2xzQWdlbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRv
b2xzQWdlbnRJbXBsLmNwcApAQCAtNDcwLDggKzQ3MCw3IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2Vu
dEltcGw6OnNldEluc3BlY3RvckZyb250ZW5kUHJveHlUb0luc3BlY3RvckNvbnRyb2xsZXIoKQog
ICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KAogICAgICAg
ICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV91dGlsaXR5Q29udGV4dCkpOwogICAgIElu
c3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGljLT5z
ZXRGcm9udGVuZChuZXcgSW5zcGVjdG9yRnJvbnRlbmQoCi0gICAgICAgIFNjcmlwdE9iamVjdChz
dGF0ZSwgbV91dGlsaXR5Q29udGV4dC0+R2xvYmFsKCkpKSk7CisgICAgaWMtPmNvbm5lY3RGcm9u
dGVuZChTY3JpcHRPYmplY3Qoc3RhdGUsIG1fdXRpbGl0eUNvbnRleHQtPkdsb2JhbCgpKSk7CiB9
CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnNldEFwdUFnZW50RW5hYmxlZChib29sIGVu
YWJsZWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEVmbC5jcHAgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVm
bC5jcHAKaW5kZXggODg5MmQ3Zi4uMmJmOWU0YyAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCisrKyBiL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcApAQCAtMzgsNiArMzgsMTEgQEAgdm9pZCBJ
bnNwZWN0b3JDbGllbnRFZmw6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9s
bGVyKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEluc3BlY3RvckNsaWVudEVm
bDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30K
Kwogdm9pZCBJbnNwZWN0b3JDbGllbnRFZmw6OmhpZ2hsaWdodChOb2RlKiBub2RlKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CkBAIC01OCw0ICs2MywxMSBAQCB2b2lkIEluc3BlY3RvckNsaWVu
dEVmbDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRFZmw6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGVsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKworCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oIGIvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuaAppbmRleCAzMGM5Y2FmLi4xNTllOGE0IDEwMDY0NAotLS0gYS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCisrKyBiL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgKQEAgLTQ0LDEyICs0NCwx
NSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVy
Kik7CisgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBoaWdobGlnaHQoTm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxp
Z2h0KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYg
a2V5LCBTdHJpbmcqIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKworICAgIHZpcnR1YWwgYm9vbCBz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CiB9OwogfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGFlOTgx
ZGIuLjkxMjI2Y2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9u
b3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxl
IHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAgICAgICBmcm9tIGluc3BlY3Rl
ZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0Lgor
ICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250
LWVuZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJv
bnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAg
ICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2Uu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKToKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oOgorCiAyMDEwLTA2
LTA0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEd0ay5jcHAKaW5kZXggMzE3YTA1OC4uYzIwNGVmNyAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCisrKyBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcApAQCAtMTksNiAr
MTksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudEd0
ay5oIgogCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3LmgiCiAj
aW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5o
IgpAQCAtMzgsNiArMzksNyBAQCBzdGF0aWMgdm9pZCBub3RpZnlXZWJWaWV3RGVzdHJveWVkKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIEluc3BlY3RvckZyb250ZW5kQ2xpZQogCiBJbnNwZWN0b3JD
bGllbnQ6Okluc3BlY3RvckNsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV9p
bnNwZWN0ZWRXZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQoge30KIAog
dm9pZCBJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCkBAIC04MCw4ICs4Miwx
MyBAQCB2b2lkIEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCiAKICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdF
VChpbnNwZWN0b3JXZWJWaWV3KSk7CiAKLSAgICBQYWdlKiBpbnNwZWN0b3JQYWdlID0gY29yZShp
bnNwZWN0b3JXZWJWaWV3KTsKLSAgICBpbnNwZWN0b3JQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG5ldyBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChtX2luc3BlY3RlZFdlYlZpZXcsIGluc3BlY3RvcldlYlZpZXcsIHdlYkluc3BlY3RvciwgaW5z
cGVjdG9yUGFnZSkpOworICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShpbnNwZWN0b3JXZWJWaWV3
KTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0
b3JGcm9udGVuZENsaWVudChuZXcgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9pbnNwZWN0ZWRX
ZWJWaWV3LCBpbnNwZWN0b3JXZWJWaWV3LCB3ZWJJbnNwZWN0b3IsIG1fZnJvbnRlbmRQYWdlLCB0
aGlzKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5k
KCkKK3sKKyAgICBtX2Zyb250ZW5kUGFnZSA9IDA7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50
OjpoaWdobGlnaHQoTm9kZSogbm9kZSkKQEAgLTEwNCwxNCArMTExLDM0IEBAIHZvaWQgSW5zcGVj
dG9yQ2xpZW50OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnQ6
OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYg
KCFtX2Zyb250ZW5kUGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRnJhbWUqIGZy
YW1lID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xs
ZXIgPSBmcmFtZS0+c2NyaXB0KCk7CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgZGlzcGF0Y2hUb0Zyb250ZW5kKCJXZWJJbnNw
ZWN0b3IuZGlzcGF0Y2hNZXNzYWdlVG9Gcm9udGVuZCgiKTsKKyAgICBkaXNwYXRjaFRvRnJvbnRl
bmQgKz0gbWVzc2FnZTsKKyAgICBkaXNwYXRjaFRvRnJvbnRlbmQgKz0gIik7IjsKKyAgICBzY3Jp
cHRDb250cm9sbGVyLT5leGVjdXRlU2NyaXB0KGRpc3BhdGNoVG9Gcm9udGVuZCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CiAKIGJvb2wgZGVzdHJveWVkID0gVFJVRTsKIAotSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYktpdFdlYlZpZXcqIGluc3BlY3Rl
ZFdlYlZpZXcsIFdlYktpdFdlYlZpZXcqIGluc3BlY3RvcldlYlZpZXcsIFdlYktpdFdlYkluc3Bl
Y3Rvciogd2ViSW5zcGVjdG9yLCBQYWdlKiBpbnNwZWN0b3JQYWdlKQorSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYktpdFdlYlZpZXcqIGluc3BlY3Rl
ZFdlYlZpZXcsIFdlYktpdFdlYlZpZXcqIGluc3BlY3RvcldlYlZpZXcsIFdlYktpdFdlYkluc3Bl
Y3Rvciogd2ViSW5zcGVjdG9yLCBQYWdlKiBpbnNwZWN0b3JQYWdlLCBJbnNwZWN0b3JDbGllbnQq
IGluc3BlY3RvckNsaWVudCkKICAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoY29y
ZShpbnNwZWN0ZWRXZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JQYWdl
KQogICAgICwgbV9pbnNwZWN0b3JXZWJWaWV3KGluc3BlY3RvcldlYlZpZXcpCiAgICAgLCBtX2lu
c3BlY3RlZFdlYlZpZXcoaW5zcGVjdGVkV2ViVmlldykKICAgICAsIG1fd2ViSW5zcGVjdG9yKHdl
Ykluc3BlY3RvcikKKyAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKIHsK
ICAgICBnX3NpZ25hbF9jb25uZWN0KG1faW5zcGVjdG9yV2ViVmlldywgImRlc3Ryb3kiLAogICAg
ICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyhub3RpZnlXZWJWaWV3RGVzdHJveWVkKSwgKGdw
b2ludGVyKXRoaXMpOwpAQCAtMTM4LDYgKzE2NSw4IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JXaW5kb3coKQogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFt
ZSh3ZWJJbnNwZWN0b3IsICJjbG9zZS13aW5kb3ciLCAmaGFuZGxlZCk7CiAgICAgQVNTRVJUKGhh
bmRsZWQpOwogCisgICAgbV9pbnNwZWN0b3JDbGllbnQtPmNsb3NlSW5zcGVjdG9yQ2xpZW50KCk7
CisKICAgICAvKiB3ZSBzaG91bGQgbm93IGRpc3Bvc2Ugb3VyIG93biByZWZlcmVuY2UgKi8KICAg
ICBnX29iamVjdF91bnJlZih3ZWJJbnNwZWN0b3IpOwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKaW5kZXggY2RiNTM3NS4uNDg4NmQ0NCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAor
KysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCkBAIC00
OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5z
cGVjdG9yRGVzdHJveWVkKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JG
cm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGhp
Z2hsaWdodChXZWJDb3JlOjpOb2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxp
Z2h0KCk7CkBAIC01NiwxMyArNTcsMTUgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIFdl
YkNvcmU6OlN0cmluZyogdmFsdWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5n
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVl
KTsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYpOwogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1f
aW5zcGVjdGVkV2ViVmlldzsKKyAgICAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7
CiAgICAgfTsKIAogICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50IDogcHVibGljIFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViS2l0V2ViVmlldyogaW5zcGVjdGVkV2ViVmll
dywgV2ViS2l0V2ViVmlldyogaW5zcGVjdG9yV2ViVmlldywgV2ViS2l0V2ViSW5zcGVjdG9yKiB3
ZWJJbnNwZWN0b3IsIFdlYkNvcmU6OlBhZ2UqIGluc3BlY3RvclBhZ2UpOworICAgICAgICBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudChXZWJLaXRXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJL
aXRXZWJWaWV3KiBpbnNwZWN0b3JXZWJWaWV3LCBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3Bl
Y3RvciwgV2ViQ29yZTo6UGFnZSogaW5zcGVjdG9yUGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNw
ZWN0b3JDbGllbnQpOwogCiAgICAgICAgIHZvaWQgZGVzdHJveUluc3BlY3RvcldpbmRvdygpOwog
CkBAIC04Niw2ICs4OSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICBXZWJLaXRXZWJW
aWV3KiBtX2luc3BlY3RvcldlYlZpZXc7CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1faW5zcGVj
dGVkV2ViVmlldzsKICAgICAgICAgV2ViS2l0V2ViSW5zcGVjdG9yKiBtX3dlYkluc3BlY3RvcjsK
KyAgICAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKICAgICB9OwogfQog
CmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nIGIvV2ViS2l0L2hhaWt1L0NoYW5n
ZUxvZwppbmRleCAzNWFkOThhLi5iMjk2ZGRkIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
MC0wNi0wNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJ
dCBzaG91bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisg
ICAgICAgIGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4g
c2VyaWFsaXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hv
dyBzb21ldGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlw
dEZ1bmN0aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBw
YXNzaW5nIHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3Rl
IGRlYnVnZ2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRIYWlrdTo6
Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnRIYWlrdTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oOgorCiAyMDEwLTA1LTMxICBMeW9uIENoZW4gIDxsaWFj
aGVuQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1n
aXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3Bw
IGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmNwcApp
bmRleCA1OTIzMmU5Li42N2FhNmU0IDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3BwCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5jcHAKQEAgLTQ3LDYgKzQ3LDExIEBAIHZvaWQg
SW5zcGVjdG9yQ2xpZW50SGFpa3U6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyKikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEluc3Bl
Y3RvckNsaWVudEhhaWt1OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCiB2b2lkIEluc3BlY3RvckNsaWVudEhhaWt1OjpoaWdobGlnaHQoTm9k
ZSogbm9kZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtNjcsNSArNzIsMTEgQEAgdm9p
ZCBJbnNwZWN0b3JDbGllbnRIYWlrdTo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgSW5z
cGVjdG9yQ2xpZW50SGFpa3U6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKQor
eworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEhhaWt1LmgKaW5kZXggZDQyNzY3MC4uZTRkNWNiNSAxMDA2NDQKLS0tIGEv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmgKKysrIGIv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmgKQEAgLTQz
LDEyICs0MywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBp
bnNwZWN0b3JEZXN0cm95ZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3Rv
ckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
aGlnaGxpZ2h0KE5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYga2V5LCBXZWJDb3JlOjpTdHJpbmcqIHZhbHVlKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6
U3RyaW5nJiB2YWx1ZSk7CisKKyAgICAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDg1Zjg2ODMuLjI4YzhjZmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAt
MDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQg
c2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAg
ICAgICBmcm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNl
cmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cg
c29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFz
c2luZyB0aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBk
ZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorCiAyMDEw
LTA2LTA2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZWU4MWIyNS4uOTIxNTU5NSAxMDA2NDQKLS0t
IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC00Miw2ICs0
MiwxMiBAQCBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0ZXI7CiBjbGFzcyBXZWJWaWV3OwogI2VuZGlm
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZTsKKworfQorCiBjbGFzcyBXZWJJ
bnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqKTsKQEAgLTQ5LDYgKzU1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAogICAgIHZp
cnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlciopOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2aXJ0dWFsIHZv
aWQgaGlkZUhpZ2hsaWdodCgpOwpAQCAtNTYsMjYgKzYzLDI5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBXZWJD
b3JlOjpTdHJpbmcqIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVlKTsKIAor
ICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJik7CiBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKICAgICBSZXRhaW5QdHI8
V2ViTm9kZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdodGVyOworICAgIFdlYkNvcmU6OlBhZ2UqIG1f
ZnJvbnRlbmRQYWdlOwogfTsKIAorCiBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCA6
IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIHsKIHB1YmxpYzoK
ICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiwgV2ViSW5zcGVjdG9yV2lu
ZG93Q29udHJvbGxlciosIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqLCBXZWJDb3JlOjpQ
YWdlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRMb2FkZWQoKTsKLSAgICAKKwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKTsKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OlN0cmluZyBoaWRkZW5QYW5lbHMoKTsKLSAgICAKKwogICAgIHZpcnR1YWwg
dm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKTsKLSAg
ICAKKwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoV2luZG93KCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJM
Q2hhbmdlZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG5ld1VSTCk7CiAKZGlmZiAtLWdpdCBhL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggNjYxYjBkMi4uMTdi
ZjI3ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQubW0KQEAgLTUwLDYgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgV2Vi
VmlldyAqX2luc3BlY3RlZFdlYlZpZXc7CiAgICAgV2ViVmlldyAqX3dlYlZpZXc7CiAgICAgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIF9mcm9udGVuZENsaWVudDsKKyAgICBXZWJJbnNwZWN0
b3JDbGllbnQqIF9pbnNwZWN0b3JDbGllbnQ7CiAgICAgQk9PTCBfYXR0YWNoZWRUb0luc3BlY3Rl
ZFdlYlZpZXc7CiAgICAgQk9PTCBfc2hvdWxkQXR0YWNoOwogICAgIEJPT0wgX3Zpc2libGU7CkBA
IC02MSw2ICs2Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogLSAodm9pZClkZXRhY2g7
CiAtIChCT09MKWF0dGFjaGVkOwogLSAodm9pZClzZXRGcm9udGVuZENsaWVudDooV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQqKWZyb250ZW5kQ2xpZW50OworLSAodm9pZClzZXRJbnNwZWN0b3JD
bGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopaW5zcGVjdG9yQ2xpZW50OwogLSAodm9pZClzZXRB
dHRhY2hlZFdpbmRvd0hlaWdodDoodW5zaWduZWQpaGVpZ2h0OwogLSAodm9pZClkZXN0cm95SW5z
cGVjdG9yVmlldzsKIEBlbmQKQEAgLTgzLDYgKzg1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICp3ZWJW
aWV3KQogOiBtX3dlYlZpZXcod2ViVmlldykKICwgbV9oaWdobGlnaHRlcihBZG9wdE5TLCBbW1dl
Yk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZpZXdd
KQorLCBtX2Zyb250ZW5kUGFnZSgwKQogewogfQogCkBAIC05NCw5ICs5Nyw5IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyKQogewogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9s
bGVyPiB3aW5kb3dDb250cm9sbGVyKEFkb3B0TlMsIFtbV2ViSW5zcGVjdG9yV2luZG93Q29udHJv
bGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3Om1fd2ViVmlld10pOwotICAgIFBh
Z2UqIGZyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgd2ViVmlld10p
OwotCi0gICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KG5ldyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX3dlYlZpZXcs
IHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xsZXIsIGZyb250ZW5kUGFn
ZSkpOworICAgIFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHNldEluc3BlY3RvckNsaWVudDp0aGlz
XTsKKyAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgd2Vi
Vmlld10pOworICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldElu
c3BlY3RvckZyb250ZW5kQ2xpZW50KG5ldyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX3dl
YlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xsZXIsIG1fZnJv
bnRlbmRQYWdlKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQoTm9k
ZSogbm9kZSkKQEAgLTQwNyw2ICs0MTAsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudDo6dXBkYXRlV2luZG93VGl0bGUoKSBjb25zdAogICAgIF9mcm9udGVuZENsaWVudCA9IGZy
b250ZW5kQ2xpZW50OwogfQogCistICh2b2lkKXNldEluc3BlY3RvckNsaWVudDooV2ViSW5zcGVj
dG9yQ2xpZW50KilpbnNwZWN0b3JDbGllbnQKK3sKKyAgICBfaW5zcGVjdG9yQ2xpZW50ID0gaW5z
cGVjdG9yQ2xpZW50OworfQorCiAtICh2b2lkKXNldEF0dGFjaGVkV2luZG93SGVpZ2h0Oih1bnNp
Z25lZCloZWlnaHQKIHsKICAgICBpZiAoIV9hdHRhY2hlZFRvSW5zcGVjdGVkV2ViVmlldykKQEAg
LTQzOSw2ICs0NDcsOCBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojp1cGRhdGVX
aW5kb3dUaXRsZSgpIGNvbnN0CiAgICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBbX2luc3Bl
Y3RlZFdlYlZpZXcgcGFnZV0pCiAgICAgICAgIGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7CiAKKyAgICBfaW5zcGVjdG9yQ2xpZW50LT5j
bG9zZUluc3BlY3RvckZyb250ZW5kKCk7CisKICAgICBbX3dlYlZpZXcgY2xvc2VdOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRl
eCA5NDUwOTZhLi40NTY1MTU1IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNi0wNyAgSWx5YSBU
aWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9z
c2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAgIGZyb20gaW5z
cGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3Jt
YXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQg
ZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBp
biBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRh
LgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2Ug
Y2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQw
MTM0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6SW5zcGVjdG9yQ2xpZW50UXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6Om9wZW5JbnNwZWN0b3JGcm9udGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6Y2xvc2VJbnNwZWN0b3JG
cm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6c2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRR
dC5oOgorCiAyMDEwLTA2LTA0ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lh
LmNvbT4KIAogICAgICAgICBTeW1iaWFuIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCmluZGV4IDJkMTE3MDAuLjUxMDNjMmEgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAK
KysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcApAQCAt
MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNs
aWVudFF0LmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgInF3ZWJpbnNwZWN0b3Iu
aCIKICNpbmNsdWRlICJxd2ViaW5zcGVjdG9yX3AuaCIKICNpbmNsdWRlICJxd2VicGFnZS5oIgpA
QCAtNDQsNiArNDUsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29u
dHJvbGxlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0LDYgKzc2LDcgQEAgcHVi
bGljOgogCiBJbnNwZWN0b3JDbGllbnRRdDo6SW5zcGVjdG9yQ2xpZW50UXQoUVdlYlBhZ2UqIHBh
Z2UpCiAgICAgOiBtX2luc3BlY3RlZFdlYlBhZ2UocGFnZSkKKyAgICAsIG1fZnJvbnRlbmRXZWJQ
YWdlKDApCiB7fQogCiB2b2lkIEluc3BlY3RvckNsaWVudFF0OjppbnNwZWN0b3JEZXN0cm95ZWQo
KQpAQCAtMTAzLDcgKzEwNiwxMyBAQCB2b2lkIEluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopCiAgICAgbV9pbnNwZWN0
ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3JGcm9udGVuZCA9IGluc3BlY3RvclZpZXc7CiAgICAgaW5z
cGVjdG9yLT5kLT5zZXRGcm9udGVuZChpbnNwZWN0b3JWaWV3KTsKIAotICAgIGluc3BlY3RvclZp
ZXctPnBhZ2UoKS0+ZC0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JG
cm9udGVuZENsaWVudChuZXcgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdChtX2luc3BlY3RlZFdl
YlBhZ2UsIGluc3BlY3RvclZpZXcpKTsKKyAgICBpbnNwZWN0b3JWaWV3LT5wYWdlKCktPmQtPnBh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobmV3
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQobV9pbnNwZWN0ZWRXZWJQYWdlLCBpbnNwZWN0b3JW
aWV3LCB0aGlzKSk7CisgICAgbV9mcm9udGVuZFdlYlBhZ2UgPSBpbnNwZWN0b3JQYWdlOworfQor
Cit2b2lkIEluc3BlY3RvckNsaWVudFF0OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKK3sKKyAg
ICBtX2Zyb250ZW5kV2ViUGFnZSA9IDA7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6Omhp
Z2hsaWdodChOb2RlKikKQEAgLTE2MCw2ICsxNjksMzAgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRR
dDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNldHRpbmcp
CiAjZW5kaWYgLy8gUVRfTk9fU0VUVElOR1MKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRRdDo6
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAo
IW1fZnJvbnRlbmRXZWJQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBQYWdlKiBm
cm9udGVuZFBhZ2UgPSBRV2ViUGFnZVByaXZhdGU6OmNvcmUobV9mcm9udGVuZFdlYlBhZ2UpOwor
ICAgIGlmICghZnJvbnRlbmRQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGcmFt
ZSogZnJhbWUgPSBmcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRy
b2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgZGlzcGF0Y2hUb0Zyb250ZW5kKCJXZWJJ
bnNwZWN0b3IuZGlzcGF0Y2hNZXNzYWdlVG9Gcm9udGVuZCgiKTsKKyAgICBkaXNwYXRjaFRvRnJv
bnRlbmQgKz0gbWVzc2FnZTsKKyAgICBkaXNwYXRjaFRvRnJvbnRlbmQgKz0gIik7IjsKKyAgICBz
Y3JpcHRDb250cm9sbGVyLT5leGVjdXRlU2NyaXB0KGRpc3BhdGNoVG9Gcm9udGVuZCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBTdHJpbmcgdmFyaWFudFRvU2V0dGluZyhjb25zdCBR
VmFyaWFudCYgcXZhcmlhbnQpCiB7CiAgICAgU3RyaW5nIHJldFZhbDsKQEAgLTE4MywxMSArMjE2
LDEyIEBAIHN0YXRpYyBRVmFyaWFudCBzZXR0aW5nVG9WYXJpYW50KGNvbnN0IFN0cmluZyYgc2V0
dGluZykKICAgICByZXR1cm4gcmV0VmFsOwogfQogCi1JbnNwZWN0b3JGcm9udGVuZENsaWVudFF0
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0KFFXZWJQYWdlKiBpbnNwZWN0ZWRXZWJQYWdlLCBQ
YXNzT3duUHRyPFFXZWJWaWV3PiBpbnNwZWN0b3JWaWV3KQorSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRRdDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdChRV2ViUGFnZSogaW5zcGVjdGVkV2ViUGFn
ZSwgUGFzc093blB0cjxRV2ViVmlldz4gaW5zcGVjdG9yVmlldywgSW5zcGVjdG9yQ2xpZW50UXQq
IGluc3BlY3RvckNsaWVudCkKICAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5z
cGVjdGVkV2ViUGFnZS0+ZC0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JW
aWV3LT5wYWdlKCktPmQtPnBhZ2UpIAogICAgICwgbV9pbnNwZWN0ZWRXZWJQYWdlKGluc3BlY3Rl
ZFdlYlBhZ2UpCiAgICAgLCBtX2luc3BlY3RvclZpZXcoaW5zcGVjdG9yVmlldykKICAgICAsIG1f
ZGVzdHJveWluZ0luc3BlY3RvclZpZXcoZmFsc2UpCisgICAgLCBtX2luc3BlY3RvckNsaWVudChp
bnNwZWN0b3JDbGllbnQpCiB7CiB9CiAKQEAgLTIyNSw2ICsyNTksOCBAQCB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50UXQ6OmNsb3NlV2luZG93KCkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNjb25u
ZWN0RnJvbnRlbmQoKTsKICNlbmRpZgorICAgIG1faW5zcGVjdG9yQ2xpZW50LT5jbG9zZUluc3Bl
Y3RvckZyb250ZW5kKCk7CisKICAgICAvLyBDbGVhciBwb2ludGVyIGJlZm9yZSBkZWxldGluZyBX
ZWJWaWV3IHRvIGF2b2lkIHJlY3Vyc2l2ZSBjYWxscyB0byBpdHMgZGVzdHJ1Y3Rvci4KICAgICBk
ZWxldGUgbV9pbnNwZWN0b3JWaWV3LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKaW5kZXggNGJlYWRhYi4uOTNjY2Y3MCAxMDA2NDQK
LS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKKysrIGIv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKQEAgLTUxLDYgKzUx
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlciopOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KE5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQg
aGlkZUhpZ2hsaWdodCgpOwpAQCAtNTgsMTMgKzU5LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHZhbHVlKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJik7CisKIHByaXZhdGU6CiAgICAgUVdlYlBhZ2UqIG1faW5zcGVjdGVkV2Vi
UGFnZTsKKyAgICBRV2ViUGFnZSogbV9mcm9udGVuZFdlYlBhZ2U7CiB9OwogCiBjbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudFF0IDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwgewogcHVibGljOgotICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQoUVdlYlBhZ2UqIGlu
c3BlY3RlZFdlYlBhZ2UsIFBhc3NPd25QdHI8UVdlYlZpZXc+IGluc3BlY3RvclZpZXcpOworICAg
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQoUVdlYlBhZ2UqIGluc3BlY3RlZFdlYlBhZ2UsIFBh
c3NPd25QdHI8UVdlYlZpZXc+IGluc3BlY3RvclZpZXcsIEluc3BlY3RvckNsaWVudFF0KiBpbnNw
ZWN0b3JDbGllbnQpOwogCiAgICAgdmlydHVhbCB2b2lkIGZyb250ZW5kTG9hZGVkKCk7CiAKQEAg
LTg4LDYgKzkyLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8UVdlYlZpZXc+IG1faW5zcGVjdG9y
VmlldzsKICAgICBRU3RyaW5nIG1faW5zcGVjdGVkVVJMOwogICAgIGJvb2wgbV9kZXN0cm95aW5n
SW5zcGVjdG9yVmlldzsKKyAgICBJbnNwZWN0b3JDbGllbnRRdCogbV9pbnNwZWN0b3JDbGllbnQ7
CiB9OwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4v
Q2hhbmdlTG9nCmluZGV4IDQyMmFlODcuLjM5ZWNhOWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4v
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3Rvcjog
SXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQor
ICAgICAgICBmcm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGlu
IHNlcmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNo
b3cgc29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3Jp
cHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3Ig
cGFzc2luZyB0aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90
ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9y
Q2xpZW50KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6fldlYkluc3BlY3RvckNsaWVu
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisKIDIwMTAt
MDYtMDQgIEFsaWNlIExpdSAgPGFsaWNlLmxpdUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgSm9uIEhvbmV5Y3V0dC4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCAzYzI2M2U1Li4zNGZiODI3IDEwMDY0NAotLS0gYS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC02OSw2ICs2
OSw3IEBAIHN0YXRpYyBDRkJ1bmRsZVJlZiBnZXRXZWJLaXRCdW5kbGUoKQogCiBXZWJJbnNwZWN0
b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV9p
bnNwZWN0ZWRXZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQogewogICAg
IEFTU0VSVChtX2luc3BlY3RlZFdlYlZpZXcpOwogICAgIG1faW5zcGVjdGVkV2ViVmlldy0+dmll
d1dpbmRvdygoT0xFX0hBTkRMRSopJm1faW5zcGVjdGVkV2ViVmlld0h3bmQpOwpAQCAtNzYsNiAr
NzcsNyBAQCBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3KiB3
ZWJWaWV3KQogCiBXZWJJbnNwZWN0b3JDbGllbnQ6On5XZWJJbnNwZWN0b3JDbGllbnQoKQogewor
ICAgIG1fZnJvbnRlbmRQYWdlID0gMDsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omlu
c3BlY3RvckRlc3Ryb3llZCgpCkBAIC0xNzIsOCArMTc0LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb24KICAgICBpZiAoRkFJTEVEKGZyb250ZW5kV2ViVmlldy0+dG9wTGV2ZWxGcmFtZSgpLT5s
b2FkUmVxdWVzdChyZXF1ZXN0LmdldCgpKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBhZ2Uq
IHBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7Ci0gICAgcGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChuZXcgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQobV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZpZXdId25k
LCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhp
cykpOworICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOwor
ICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBmcm9udGVuZENsaWVudCA9IG5ldyBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudChtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2Vi
Vmlld0h3bmQsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdI
d25kLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5z
ZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChmcm9udGVuZENsaWVudCk7CiAgICAgbV9mcm9udGVu
ZEh3bmQgPSBmcm9udGVuZEh3bmQ7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDY0NzczYTUuLjBhYWU1OWMgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMzcsNiArMzcs
MTIgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2U7CisKK30KKwogY2xhc3MgV2ViTm9kZUhp
Z2hsaWdodDsKIGNsYXNzIFdlYlZpZXc7CiAKQEAgLTQ4LDYgKzU0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBv
cGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOworICAg
IHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaGlnaGxpZ2h0KFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hs
aWdodCgpOwpAQCAtNTYsMTIgKzYzLDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3JlOjpTdHJp
bmcmIHZhbHVlKTsKIAogICAgIHZvaWQgdXBkYXRlSGlnaGxpZ2h0KCk7Ci0gICAgdm9pZCBmcm9u
dGVuZENsb3NpbmcoKSB7IG1fZnJvbnRlbmRId25kID0gMDsgfQorICAgIHZvaWQgZnJvbnRlbmRD
bG9zaW5nKCkKKyAgICB7CisgICAgICAgIG1fZnJvbnRlbmRId25kID0gMDsKKyAgICAgICAgY2xv
c2VJbnNwZWN0b3JGcm9udGVuZCgpOworICAgIH0KKworICAgIGJvb2wgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogCiBwcml2YXRlOgogICAgIH5XZWJJbnNw
ZWN0b3JDbGllbnQoKTsKIAogICAgIFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKKyAgICBX
ZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5kUGFnZTsKICAgICBIV05EIG1faW5zcGVjdGVkV2ViVmll
d0h3bmQ7CiAgICAgSFdORCBtX2Zyb250ZW5kSHduZDsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4
L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKaW5kZXggYWIyNTEwMi4uZTE1ZjM3NCAx
MDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd3gvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9A
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRp
bWVsaW5lL2RvbS9ldGMgZGF0YQorICAgICAgICBmcm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8g
dGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBu
b3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFy
ZSB1c2luZworICAgICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQg
YW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBu
b3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2Vi
S2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDbGllbnRXeDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnRXeDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4Lmg6CisKIDIwMTAtMDUtMjcgIEtldmluIE9s
bGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBCdWlsZCBm
aXhlcyBmb3IgV2luZG93cyBhZnRlciByZWNlbnQgY2hhbmdlcy4KZGlmZiAtLWdpdCBhL1dlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcCBiL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcAppbmRleCA1ZGM5YWM3Li44MDYzZjcwIDEw
MDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAK
KysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guY3BwCkBAIC01
Miw2ICs1MiwxMSBAQCB2b2lkIEluc3BlY3RvckNsaWVudFd4OjpvcGVuSW5zcGVjdG9yRnJvbnRl
bmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAordm9pZCBJbnNwZWN0b3JDbGllbnRXeDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDbGllbnRXeDo6aGln
aGxpZ2h0KE5vZGUqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC03Miw0ICs3NywxMCBA
QCB2b2lkIEluc3BlY3RvckNsaWVudFd4OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgc2V0dGluZykKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29s
IEluc3BlY3RvckNsaWVudFd4OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogfTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmggYi9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oCmluZGV4IDc2NzVkYzEu
LjExZTk1ZmQgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNs
aWVudFd4LmgKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3gu
aApAQCAtNDIsMTIgKzQyLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9y
RGVzdHJveWVkKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5kKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNw
ZWN0b3JGcm9udGVuZCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChOb2RlKik7CiAg
ICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwb3B1
bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogdmFsdWUpOwogICAgIHZpcnR1
YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFs
dWUpOworCisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="43013"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58238</attachid>
            <date>2010-06-09 06:00:14 -0700</date>
            <delta_ts>2010-06-10 10:56:50 -0700</delta_ts>
            <desc>[patch] seventh iteration.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>40591</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDdmZTlhNi4uMjYwOGRkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUg
dG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAgIGZyb20gaW5zcGVjdGVk
IHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisg
ICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQt
ZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9u
dC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAg
ICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6Okluc3BlY3RvckZy
b250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpmcm9udGVuZExvYWRlZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPYmplY3Q6OndyaXRlSlNPTik6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNz
YWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAg
ICAoV2ViQ29yZTo6RW1wdHlJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6
CisKIDIwMTAtMDYtMDcgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+
CiAKICAgICAgICAgTm90IHJldmlld2VkLiBVcGRhdGVkIHJ1bi1iaW5kaW5ncy10ZXN0cyByZXN1
bHRzLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCA4NDFjMTVlLi4yY2UzYTA5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNDgsNiArNDgsOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5
LCBTdHJpbmcqIHZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25z
dCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgPSAwOworCisgICAgdmlydHVhbCBi
b29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKaW5kZXggN2IyY2Q3Yy4uNzRjZWQwMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTQyNiwxMSArNDI2LDEwIEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6c2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiAgICAgfQog
fQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEZyb250ZW5kKFBhc3NPd25QdHI8SW5z
cGVjdG9yRnJvbnRlbmQ+IGZyb250ZW5kKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25u
ZWN0RnJvbnRlbmQoY29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpCiB7Ci0gICAgQVNT
RVJUKGZyb250ZW5kKTsKICAgICBtX29wZW5pbmdGcm9udGVuZCA9IGZhbHNlOwotICAgIG1fZnJv
bnRlbmQgPSBmcm9udGVuZDsKKyAgICBtX2Zyb250ZW5kID0gbmV3IEluc3BlY3RvckZyb250ZW5k
KHdlYkluc3BlY3RvciwgbV9jbGllbnQpOwogICAgIHJlbGVhc2VET01BZ2VudCgpOwogICAgIG1f
ZG9tQWdlbnQgPSBJbnNwZWN0b3JET01BZ2VudDo6Y3JlYXRlKG1fY3NzU3RvcmUuZ2V0KCksIG1f
ZnJvbnRlbmQuZ2V0KCkpOwogICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYmI2YzM4OC4uMDVhOTM5YiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTM0LDYgKzEzNCwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzaG93KCk7CiAgICAgdm9pZCBzaG93UGFuZWwoU3BlY2lhbFBhbmVscyk7
CiAgICAgdm9pZCBjbG9zZSgpOworCisgICAgLy8gV2UgYXJlIGluIHRyYW5zaXRpb24gZnJvbSBK
UyB0cmFuc3BvcnQgdmlhIHdlYkluc3BlY3RvciB0byBuYXRpdmUKKyAgICAvLyB0cmFuc3BvcnQg
dmlhIEluc3BlY3RvckNsaWVudC4gQWZ0ZXIgbWlncmF0aW9uLCB3ZWJJbnNwZWN0b3IgcGFyYW1l
dGVyIHNob3VsZAorICAgIC8vIGJlIHJlbW92ZWQuCisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQo
Y29uc3QgU2NyaXB0T2JqZWN0JiB3ZWJJbnNwZWN0b3IpOwogICAgIHZvaWQgZGlzY29ubmVjdEZy
b250ZW5kKCk7CiAKICAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwg
TWVzc2FnZVR5cGUsIE1lc3NhZ2VMZXZlbCwgU2NyaXB0Q2FsbFN0YWNrKik7CkBAIC0xNTEsNyAr
MTU2LDYgQEAgcHVibGljOgogICAgIHZvaWQgaW5zcGVjdGVkV2luZG93U2NyaXB0T2JqZWN0Q2xl
YXJlZChGcmFtZSopOwogCiAgICAgYm9vbCB3aW5kb3dWaXNpYmxlKCk7Ci0gICAgdm9pZCBzZXRG
cm9udGVuZChQYXNzT3duUHRyPEluc3BlY3RvckZyb250ZW5kPik7CiAKICAgICB2b2lkIGRpZENv
bW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGZyYW1lRGV0YWNoZWRGcm9tUGFy
ZW50KEZyYW1lKik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKaW5kZXgg
MzkwZWRhYi4uODFjYjBlMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNw
cApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5qZWN0
ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCIKICNpbmNsdWRlICJOb2RlLmgiCkBAIC00
OSw4ICs1MCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSW5zcGVjdG9yRnJvbnRlbmQ6
Okluc3BlY3RvckZyb250ZW5kKFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IpCi0gICAgOiBtX3dl
Ykluc3BlY3Rvcih3ZWJJbnNwZWN0b3IpCitJbnNwZWN0b3JGcm9udGVuZDo6SW5zcGVjdG9yRnJv
bnRlbmQoU2NyaXB0T2JqZWN0IHdlYkluc3BlY3RvciwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0
b3JDbGllbnQpCisgICAgOiBtX3dlYkluc3BlY3Rvcih3ZWJJbnNwZWN0b3IpLCBtX2luc3BlY3Rv
ckNsaWVudChpbnNwZWN0b3JDbGllbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZC5oCmluZGV4IGI5Zjg3ZWYuLjc4ZDliYWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRnJvbnRlbmQuaApAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JGcm9udGVu
ZF9oCiAjZGVmaW5lIEluc3BlY3RvckZyb250ZW5kX2gKIAorI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgogI2luY2x1ZGUgIlNjcmlwdEFycmF5LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKQEAgLTM5LDE2ICs0MCwyMCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ29uc29sZU1lc3NhZ2U7CiAgICAgY2xhc3MgRGF0YWJh
c2U7CiAgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogICAgIGNs
YXNzIEluc3BlY3RvclJlc291cmNlOworICAgIGNsYXNzIEluc3BlY3RvcldvcmtlclJlc291cmNl
OwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgU2NyaXB0U3RyaW5nOwogICAgIGNsYXNzIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTsKICAgICBjbGFzcyBTdG9yYWdlOwotICAgIGNsYXNzIEluc3Bl
Y3RvcldvcmtlclJlc291cmNlOwogCiAgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQgOiBwdWJs
aWMgTm9uY29weWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmQo
U2NyaXB0T2JqZWN0IHdlYkluc3BlY3Rvcik7CisgICAgICAgIC8vIFdlIGFyZSBpbiB0cmFuc2l0
aW9uIGZyb20gSlMgdHJhbnNwb3J0IHZpYSB3ZWJJbnNwZWN0b3IgdG8gbmF0aXZlCisgICAgICAg
IC8vIHRyYW5zcG9ydCB2aWEgaW5zcGVjdG9yQ2xpZW50LiBBZnRlciBtaWdyYXRpb24sIHdlYklu
c3BlY3RvciBwYXJhbWV0ZXIgc2hvdWxkCisgICAgICAgIC8vIGJlIHJlbW92ZWQuCisgICAgICAg
IEluc3BlY3RvckZyb250ZW5kKFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IsIEluc3BlY3RvckNs
aWVudCogaW5zcGVjdG9yQ2xpZW50KTsKICAgICAgICAgfkluc3BlY3RvckZyb250ZW5kKCk7CiAK
ICAgICAgICAgdm9pZCBjbG9zZSgpOwpAQCAtMTY5LDYgKzE3NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGNhbGxTaW1wbGVGdW5jdGlvbihjb25z
dCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSk7CiAgICAgICAgIFNjcmlwdE9iamVjdCBtX3dlYkluc3Bl
Y3RvcjsKKyAgICAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2luc3BlY3RvckNsaWVudDsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4IDE4YzUyZGEuLjE4ODU2NmYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
ZnJvbnRlbmRMb2FkZWQoKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldEZyb250ZW5kKG5l
dyBJbnNwZWN0b3JGcm9udGVuZCh3ZWJJbnNwZWN0b3JPYmopKTsKKyAgICBtX2luc3BlY3RvckNv
bnRyb2xsZXItPmNvbm5lY3RGcm9udGVuZCh3ZWJJbnNwZWN0b3JPYmopOwogfQogCiB2b2lkIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OnJlcXVlc3RBdHRhY2hXaW5kb3coKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKaW5kZXggMjM2MTJlNi4uNWM3ZDBjOCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC02MjUsNyArNjI1LDcgQEAgdm9pZCBJ
bnNwZWN0b3JPYmplY3Q6OndyaXRlSlNPTihWZWN0b3I8VUNoYXI+KiBvdXRwdXQpIGNvbnN0CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX29yZGVyLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IERpY3Rpb25hcnk6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhLmZpbmQobV9vcmRlcltpXSk7
CiAgICAgICAgIEFTU0VSVChpdCAhPSBtX2RhdGEuZW5kKCkpOwotICAgICAgICBpZiAoaXQgIT0g
bV9kYXRhLmJlZ2luKCkpCisgICAgICAgIGlmIChpKQogICAgICAgICAgICAgb3V0cHV0LT5hcHBl
bmQoJywnKTsKICAgICAgICAgZG91YmxlUXVvdGVTdHJpbmcoaXQtPmZpcnN0LCBvdXRwdXQpOwog
ICAgICAgICBvdXRwdXQtPmFwcGVuZCgnOicpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMKaW5kZXggOGE3OGNkMi4uODdjNGM3MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC01NzIsNiArNTcyLDEzIEBAIFdlYkluc3BlY3Rvci5k
aXNwYXRjaCA9IGZ1bmN0aW9uKCkgewogICAgIHNldFRpbWVvdXQoZGVsYXlEaXNwYXRjaCwgMCk7
CiB9CiAKK1dlYkluc3BlY3Rvci5kaXNwYXRjaE1lc3NhZ2VGcm9tQmFja2VuZCA9IGZ1bmN0aW9u
KGFyZ3VtZW50cykKK3sKKyAgICB2YXIgbWV0aG9kTmFtZSA9IGFyZ3VtZW50cy5zaGlmdCgpOwor
ICAgIFdlYkluc3BlY3RvclttZXRob2ROYW1lXS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworfQor
CisKIFdlYkluc3BlY3Rvci53aW5kb3dSZXNpemUgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICBp
ZiAodGhpcy5jdXJyZW50UGFuZWwpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9FbXB0eUNs
aWVudHMuaCBiL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCmluZGV4IGM2MzA5MzEuLmU0
MmVlMWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCkBAIC00ODYsNiArNDg2LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmLCBTdHJpbmcq
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJikgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYktp
dC9DaGFuZ2VMb2cgYi9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDIzN2IxNDQuLmZiY2ZlNzIgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDEwLTA2LTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBX
ZWJJbnNwZWN0b3I6IEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byB0cmFuc2ZlciB0aW1lbGluZS9k
b20vZXRjIGRhdGEKKyAgICAgICAgZnJvbSBpbnNwZWN0ZWQgcGFnZSBzaWRlIHRvIHRoZSBmcm9u
dC1lbmQgc2lkZSBpbiBzZXJpYWxpemVkIGZvcm1hdC4KKyAgICAgICAgUmlnaHQgbm93IHdoZW4g
d2Ugd2FudCB0byBzaG93IHNvbWV0aGluZyBhdCBmcm9udC1lbmQgc2lkZSB3ZSBhcmUgdXNpbmcK
KyAgICAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGluIGZyb250LWVuZCBjb250ZXh0IGFuZCBTY3Jp
cHRPYmplY3QgZm9yIHBhc3NpbmcgdGhlIGRhdGEuCisgICAgICAgIFRoYXQgaXMgbm90IHN1aXRh
YmxlIGZvciByZW1vdGUgZGVidWdnaW5nIHVzZSBjYXNlLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAqIGVmbC9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50RWZsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAqIGVmbC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaDoKKwogMjAxMC0wNi0wMSAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vp
bmlnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2NmL0NoYW5nZUxvZyBiL1dlYktpdC9jZi9DaGFuZ2VM
b2cKaW5kZXggMWY1OWRlYy4uYjc4NTM1ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2NmL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDYtMDcg
IElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxk
IGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAgICAgICBm
cm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6
ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRo
aW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRGdW5jdGlv
bkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0
aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dp
bmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDEzNAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Q0YuY3BwOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJvbnRlbmRQYWdl
KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToK
KwogMjAxMC0wMS0wNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jZi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9XZWJLaXQvY2YvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDBkNjZiODMuLmRjNWExODYg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRD
Ri5jcHAKKysrIGIvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENG
LmNwcApAQCAtNTMsNiArNTMsOCBAQAogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KIAorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+CiAKICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC05MiwzICs5NCwyOCBAQCB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNl
dHRpbmcpCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShBZG9wdENG
LCBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpKTsKICAgICBDRlByZWZlcmVuY2VzU2V0QXBw
VmFsdWUocHJlZmVyZW5jZXNLZXkuZ2V0KCksIG9iamVjdFRvU3RvcmUuZ2V0KCksIGtDRlByZWZl
cmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKIH0KKwordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
OnJlbGVhc2VGcm9udGVuZFBhZ2UoKQoreworICAgIG1fZnJvbnRlbmRQYWdlID0gMDsKK30KKwor
Ym9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kUGFnZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgRnJhbWUqIGZyYW1lID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNjcmlwdENv
bnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7CisgICAgaWYgKCFz
Y3JpcHRDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgZGlz
cGF0Y2hUb0Zyb250ZW5kKCJXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNzYWdlRnJvbUJhY2tlbmQo
Iik7CisgICAgZGlzcGF0Y2hUb0Zyb250ZW5kICs9IG1lc3NhZ2U7CisgICAgZGlzcGF0Y2hUb0Zy
b250ZW5kICs9ICIpOyI7CisgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChkaXNw
YXRjaFRvRnJvbnRlbmQpOworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDVm
ODVlNS4uYmNjMzBjMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDYtMDcg
IElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxk
IGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAgICAgICBm
cm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6
ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRo
aW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRGdW5jdGlv
bkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0
aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dp
bmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDEzNAorCisgICAgICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnRJbXBsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQp
OgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dl
YkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2Vu
dEltcGw6OnNldEluc3BlY3RvckZyb250ZW5kUHJveHlUb0luc3BlY3RvckNvbnRyb2xsZXIpOgor
CiAyMDEwLTA2LTA3ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9J
bnNwZWN0b3JDbGllbnRJbXBsLmNwcAppbmRleCAyMmI1MTVmLi45MWQxMGQ1IDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKQEAgLTM1LDYgKzM1LDggQEAK
ICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50SW1wbC5oIgorI2luY2x1
ZGUgIldlYkRldlRvb2xzTWVzc2FnZURhdGEuaCIKICNpbmNsdWRlICJXZWJSZWN0LmgiCiAjaW5j
bHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgpAQCAtMTAyLDQgKzEw
NCwyMCBAQCB2b2lkIEluc3BlY3RvckNsaWVudEltcGw6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJp
bmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnNl
dEluc3BlY3RvclNldHRpbmcoa2V5LCB2YWx1ZSk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50
SW1wbDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbWVzc2Fn
ZSkKK3sKKyAgICBXZWJEZXZUb29sc0FnZW50SW1wbCogZGV2VG9vbHNBZ2VudCA9IHN0YXRpY19j
YXN0PFdlYkRldlRvb2xzQWdlbnRJbXBsKj4obV9pbnNwZWN0ZWRXZWJWaWV3LT5kZXZUb29sc0Fn
ZW50KCkpOworICAgIGlmICghZGV2VG9vbHNBZ2VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gYXJndW1lbnRzKHNpemVfdCgxKSk7CisgICAgYXJn
dW1lbnRzWzBdID0gbWVzc2FnZTsKKyAgICBXZWJEZXZUb29sc01lc3NhZ2VEYXRhIGRhdGE7Cisg
ICAgZGF0YS5jbGFzc05hbWUgPSAiVG9vbHNBZ2VudERlbGVnYXRlIjsKKyAgICBkYXRhLm1ldGhv
ZE5hbWUgPSAiZGlzcGF0Y2hPbkNsaWVudCI7CisgICAgZGF0YS5hcmd1bWVudHMuc3dhcChhcmd1
bWVudHMpOworICAgIGRldlRvb2xzQWdlbnQtPnNlbmRScGNNZXNzYWdlKGRhdGEpOworICAgIHJl
dHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKaW5kZXggNzQ0N2QwYy4uZjQ5OTRlMyAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKQEAgLTM2LDYgKzM2LDggQEAKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJE
ZXZUb29sc0FnZW50Q2xpZW50OwogY2xhc3MgV2ViVmlld0ltcGw7CiAKIGNsYXNzIEluc3BlY3Rv
ckNsaWVudEltcGwgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50IHsKQEAgLTQ2LDE1
ICs0OCwxNCBAQCBwdWJsaWM6CiAgICAgLy8gSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHM6CiAgICAg
dmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVu
SW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOworCiAgICAg
dmlydHVhbCB2b2lkIGhpZ2hsaWdodChXZWJDb3JlOjpOb2RlKik7CiAgICAgdmlydHVhbCB2b2lk
IGhpZGVIaWdobGlnaHQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKAotICAg
ICAgICBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwKLSAgICAgICAgV2ViQ29yZTo6U3RyaW5n
KiB2YWx1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZygKLSAgICAgICAgY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJiBrZXksCi0gICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdmFs
dWUpOwogCisgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIGtleSwgV2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIHN0
b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJiB2YWx1ZSk7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYpOwogcHJpdmF0ZToKIAogICAgIC8vIFRoZSBXZWJWaWV3SW1w
bCBvZiB0aGUgcGFnZSBiZWluZyBpbnNwZWN0ZWQ7IGdldHMgcGFzc2VkIHRvIHRoZSBjb25zdHJ1
Y3RvcgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAppbmRl
eCA4ZGRlMzFmLi5iYjNkMDAyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRl
dlRvb2xzQWdlbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xz
QWdlbnRJbXBsLmNwcApAQCAtNDcwLDggKzQ3MCw3IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudElt
cGw6OnNldEluc3BlY3RvckZyb250ZW5kUHJveHlUb0luc3BlY3RvckNvbnRyb2xsZXIoKQogICAg
IFNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRlOjpmb3JDb250ZXh0KAogICAgICAgICB2
ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV91dGlsaXR5Q29udGV4dCkpOwogICAgIEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGljID0gaW5zcGVjdG9yQ29udHJvbGxlcigpOwotICAgIGljLT5zZXRG
cm9udGVuZChuZXcgSW5zcGVjdG9yRnJvbnRlbmQoCi0gICAgICAgIFNjcmlwdE9iamVjdChzdGF0
ZSwgbV91dGlsaXR5Q29udGV4dC0+R2xvYmFsKCkpKSk7CisgICAgaWMtPmNvbm5lY3RGcm9udGVu
ZChTY3JpcHRPYmplY3Qoc3RhdGUsIG1fdXRpbGl0eUNvbnRleHQtPkdsb2JhbCgpKSk7CiB9CiAK
IHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnNldEFwdUFnZW50RW5hYmxlZChib29sIGVuYWJs
ZWQpCmRpZmYgLS1naXQgYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEVmbC5jcHAgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5j
cHAKaW5kZXggODg5MmQ3Zi4uMmZhODYwYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcApAQCAtNTgsNCArNTgsMTEgQEAgdm9pZCBJbnNw
ZWN0b3JDbGllbnRFZmw6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50RWZsOjpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBlbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaCBiL1dlYktpdC9lZmwvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgKaW5kZXggMzBjOWNhZi4uMWNhNjQ2ZCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAor
KysgYi9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCkBAIC01
MCw2ICs1MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmco
Y29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogdmFsdWUpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9y
ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOworCisgICAg
dmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKIH07CiB9
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKaW5kZXggYWU5ODFkYi4uZWM3MmYwZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNi0w
NyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91
bGQgYmUgcG9zc2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAg
IGZyb20gaW5zcGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFs
aXplZCBmb3JtYXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21l
dGhpbmcgYXQgZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0
aW9uQ2FsbCBpbiBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5n
IHRoZSBkYXRhLgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVn
Z2luZyB1c2UgY2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRH
dGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OnJlbGVhc2VGcm9udGVu
ZFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9G
cm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmg6
CisKIDIwMTAtMDYtMDQgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAppbmRleCAzMTdhMDU4Li4zMjQzMTcwIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5j
cHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3Bw
CkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQ2xpZW50R3RrLmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIndlYmtpdHdl
YnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKICNpbmNsdWRlICJ3ZWJr
aXRwcml2YXRlLmgiCkBAIC0zOCw2ICszOSw3IEBAIHN0YXRpYyB2b2lkIG5vdGlmeVdlYlZpZXdE
ZXN0cm95ZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgSW5zcGVjdG9yRnJvbnRlbmRDbGllCiAK
IEluc3BlY3RvckNsaWVudDo6SW5zcGVjdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiAgICAgOiBtX2luc3BlY3RlZFdlYlZpZXcod2ViVmlldykKKyAgICAsIG1fZnJvbnRlbmRQYWdl
KDApCiB7fQogCiB2b2lkIEluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKQEAg
LTgwLDggKzgyLDEzIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRl
bmQoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIAogICAgIGd0a193aWRnZXRfc2hv
dyhHVEtfV0lER0VUKGluc3BlY3RvcldlYlZpZXcpKTsKIAotICAgIFBhZ2UqIGluc3BlY3RvclBh
Z2UgPSBjb3JlKGluc3BlY3RvcldlYlZpZXcpOwotICAgIGluc3BlY3RvclBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobmV3IEluc3BlY3RvckZy
b250ZW5kQ2xpZW50KG1faW5zcGVjdGVkV2ViVmlldywgaW5zcGVjdG9yV2ViVmlldywgd2ViSW5z
cGVjdG9yLCBpbnNwZWN0b3JQYWdlKSk7CisgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGluc3Bl
Y3RvcldlYlZpZXcpOworICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG5ldyBJbnNwZWN0b3JGcm9udGVuZENsaWVudCht
X2luc3BlY3RlZFdlYlZpZXcsIGluc3BlY3RvcldlYlZpZXcsIHdlYkluc3BlY3RvciwgbV9mcm9u
dGVuZFBhZ2UsIHRoaXMpKTsKK30KKwordm9pZCBJbnNwZWN0b3JDbGllbnQ6OnJlbGVhc2VGcm9u
dGVuZFBhZ2UoKQoreworICAgIG1fZnJvbnRlbmRQYWdlID0gMDsKIH0KIAogdm9pZCBJbnNwZWN0
b3JDbGllbnQ6OmhpZ2hsaWdodChOb2RlKiBub2RlKQpAQCAtMTA0LDE0ICsxMTEsMzQgQEAgdm9p
ZCBJbnNwZWN0b3JDbGllbnQ6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEluc3BlY3Rv
ckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sK
KyAgICBpZiAoIW1fZnJvbnRlbmRQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBG
cmFtZSogZnJhbWUgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFt
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0
Q29udHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBkaXNwYXRjaFRvRnJvbnRlbmQo
IldlYkluc3BlY3Rvci5kaXNwYXRjaE1lc3NhZ2VUb0Zyb250ZW5kKCIpOworICAgIGRpc3BhdGNo
VG9Gcm9udGVuZCArPSBtZXNzYWdlOworICAgIGRpc3BhdGNoVG9Gcm9udGVuZCArPSAiKTsiOwor
ICAgIHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHQoZGlzcGF0Y2hUb0Zyb250ZW5kKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KIAogYm9vbCBkZXN0cm95ZWQgPSBUUlVFOwogCi1JbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViS2l0V2ViVmlldyog
aW5zcGVjdGVkV2ViVmlldywgV2ViS2l0V2ViVmlldyogaW5zcGVjdG9yV2ViVmlldywgV2ViS2l0
V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3IsIFBhZ2UqIGluc3BlY3RvclBhZ2UpCitJbnNwZWN0
b3JGcm9udGVuZENsaWVudDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViS2l0V2ViVmlldyog
aW5zcGVjdGVkV2ViVmlldywgV2ViS2l0V2ViVmlldyogaW5zcGVjdG9yV2ViVmlldywgV2ViS2l0
V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3IsIFBhZ2UqIGluc3BlY3RvclBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQogICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbChjb3JlKGluc3BlY3RlZFdlYlZpZXcpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGluc3Bl
Y3RvclBhZ2UpCiAgICAgLCBtX2luc3BlY3RvcldlYlZpZXcoaW5zcGVjdG9yV2ViVmlldykKICAg
ICAsIG1faW5zcGVjdGVkV2ViVmlldyhpbnNwZWN0ZWRXZWJWaWV3KQogICAgICwgbV93ZWJJbnNw
ZWN0b3Iod2ViSW5zcGVjdG9yKQorICAgICwgbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVjdG9yQ2xp
ZW50KQogewogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9pbnNwZWN0b3JXZWJWaWV3LCAiZGVzdHJv
eSIsCiAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKG5vdGlmeVdlYlZpZXdEZXN0cm95
ZWQpLCAoZ3BvaW50ZXIpdGhpcyk7CkBAIC0xMzgsNiArMTY1LDggQEAgdm9pZCBJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6ZGVzdHJveUluc3BlY3RvcldpbmRvdygpCiAgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKHdlYkluc3BlY3RvciwgImNsb3NlLXdpbmRvdyIsICZoYW5kbGVkKTsKICAgICBB
U1NFUlQoaGFuZGxlZCk7CiAKKyAgICBtX2luc3BlY3RvckNsaWVudC0+cmVsZWFzZUZyb250ZW5k
UGFnZSgpOworCiAgICAgLyogd2Ugc2hvdWxkIG5vdyBkaXNwb3NlIG91ciBvd24gcmVmZXJlbmNl
ICovCiAgICAgZ19vYmplY3RfdW5yZWYod2ViSW5zcGVjdG9yKTsKIH0KZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCmluZGV4IGNkYjUzNzUuLjBhZGNj
MDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsu
aApAQCAtNTYsMTMgKzU2LDE4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBXZWJDb3Jl
OjpTdHJpbmcqIHZhbHVlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25z
dCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB2YWx1ZSk7CiAK
KyAgICAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmKTsKKworICAgICAgICB2b2lkIHJlbGVhc2VGcm9udGVuZFBhZ2UoKTsKKwogICAg
IHByaXZhdGU6CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKKyAg
ICAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7CiAgICAgfTsKIAogICAgIGNsYXNz
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwgewogICAgIHB1YmxpYzoKLSAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQoV2ViS2l0V2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViS2l0V2ViVmlldyogaW5z
cGVjdG9yV2ViVmlldywgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3IsIFdlYkNvcmU6
OlBhZ2UqIGluc3BlY3RvclBhZ2UpOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudChX
ZWJLaXRXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJLaXRXZWJWaWV3KiBpbnNwZWN0b3JX
ZWJWaWV3LCBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvciwgV2ViQ29yZTo6UGFnZSog
aW5zcGVjdG9yUGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpOwogCiAgICAg
ICAgIHZvaWQgZGVzdHJveUluc3BlY3RvcldpbmRvdygpOwogCkBAIC04Niw2ICs5MSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX2luc3BlY3RvcldlYlZp
ZXc7CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKICAgICAgICAg
V2ViS2l0V2ViSW5zcGVjdG9yKiBtX3dlYkluc3BlY3RvcjsKKyAgICAgICAgSW5zcGVjdG9yQ2xp
ZW50KiBtX2luc3BlY3RvckNsaWVudDsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQv
aGFpa3UvQ2hhbmdlTG9nIGIvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwppbmRleCAzNWFkOThhLi4x
Y2FkNDFiIDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9o
YWlrdS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUg
dG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAgIGZyb20gaW5zcGVjdGVk
IHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3JtYXQuCisg
ICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQgZnJvbnQt
ZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBpbiBmcm9u
dC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRhLgorICAg
ICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2UgY2FzZS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRIYWlrdTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oOgorCiAy
MDEwLTA1LTMxICBMeW9uIENoZW4gIDxsaWFjaGVuQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3BwIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudEhhaWt1LmNwcAppbmRleCA1OTIzMmU5Li44ODNmY2QzIDEwMDY0NAot
LS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3Bw
CisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5j
cHAKQEAgLTY3LDUgKzY3LDExIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50SGFpa3U6OnN0b3JlU2V0
dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCitib29sIEluc3BlY3RvckNsaWVudEhhaWt1OjpzZW5kTWVzc2FnZVRv
RnJvbnRlbmQoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuaCBiL1dlYktp
dC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5oCmluZGV4IGQ0Mjc2
NzAuLjM4MjhkMDQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRIYWlrdS5oCisrKyBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRIYWlrdS5oCkBAIC00OSw2ICs0OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYga2V5LCBXZWJDb3JlOjpTdHJpbmcqIHZhbHVlKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6
U3RyaW5nJiB2YWx1ZSk7CisKKyAgICAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCmluZGV4IDg1Zjg2ODMuLjI4YzhjZmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAt
MDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQg
c2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAg
ICAgICBmcm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNl
cmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cg
c29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFz
c2luZyB0aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBk
ZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1t
OgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpXZWJJbnNwZWN0b3JDbGllbnQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorCiAyMDEw
LTA2LTA2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZWU4MWIyNS4uODVmYzlkYyAxMDA2NDQKLS0t
IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC00Miw2ICs0
MiwxMiBAQCBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0ZXI7CiBjbGFzcyBXZWJWaWV3OwogI2VuZGlm
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZTsKKworfQorCiBjbGFzcyBXZWJJ
bnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqKTsKQEAgLTU2LDI2ICs2MiwzMiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmIGtleSwgV2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6
U3RyaW5nJiB2YWx1ZSk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworCisgICAgdm9pZCByZWxlYXNlRnJvbnRlbmRQYWdl
KCk7CisgICAgCiBwcml2YXRlOgogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKICAgICBSZXRhaW5Q
dHI8V2ViTm9kZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdodGVyOworICAgIFdlYkNvcmU6OlBhZ2Uq
IG1fZnJvbnRlbmRQYWdlOwogfTsKIAorCiBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIHsKIHB1Ymxp
YzoKICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiwgV2ViSW5zcGVjdG9y
V2luZG93Q29udHJvbGxlciosIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqLCBXZWJDb3Jl
OjpQYWdlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRMb2FkZWQoKTsKLSAgICAKKwog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKTsKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBoaWRkZW5QYW5lbHMoKTsKLSAgICAKKwogICAgIHZpcnR1
YWwgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coKTsK
LSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGV0YWNoV2luZG93KCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KTsKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVk
VVJMQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG5ld1VSTCk7CiAKZGlmZiAtLWdpdCBh
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggNjYxYjBkMi4u
ZDU5MTA5ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQubW0KKysrIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW0KQEAgLTUwLDYgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAg
V2ViVmlldyAqX2luc3BlY3RlZFdlYlZpZXc7CiAgICAgV2ViVmlldyAqX3dlYlZpZXc7CiAgICAg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIF9mcm9udGVuZENsaWVudDsKKyAgICBXZWJJbnNw
ZWN0b3JDbGllbnQqIF9pbnNwZWN0b3JDbGllbnQ7CiAgICAgQk9PTCBfYXR0YWNoZWRUb0luc3Bl
Y3RlZFdlYlZpZXc7CiAgICAgQk9PTCBfc2hvdWxkQXR0YWNoOwogICAgIEJPT0wgX3Zpc2libGU7
CkBAIC02MSw2ICs2Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogLSAodm9pZClkZXRh
Y2g7CiAtIChCT09MKWF0dGFjaGVkOwogLSAodm9pZClzZXRGcm9udGVuZENsaWVudDooV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQqKWZyb250ZW5kQ2xpZW50OworLSAodm9pZClzZXRJbnNwZWN0
b3JDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopaW5zcGVjdG9yQ2xpZW50OwogLSAodm9pZClz
ZXRBdHRhY2hlZFdpbmRvd0hlaWdodDoodW5zaWduZWQpaGVpZ2h0OwogLSAodm9pZClkZXN0cm95
SW5zcGVjdG9yVmlldzsKIEBlbmQKQEAgLTgzLDYgKzg1LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICp3
ZWJWaWV3KQogOiBtX3dlYlZpZXcod2ViVmlldykKICwgbV9oaWdobGlnaHRlcihBZG9wdE5TLCBb
W1dlYk5vZGVIaWdobGlnaHRlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3OndlYlZp
ZXddKQorLCBtX2Zyb250ZW5kUGFnZSgwKQogewogfQogCkBAIC05NCw5ICs5Nyw5IEBAIHZvaWQg
V2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogdm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyKQogewogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JXaW5kb3dDb250
cm9sbGVyPiB3aW5kb3dDb250cm9sbGVyKEFkb3B0TlMsIFtbV2ViSW5zcGVjdG9yV2luZG93Q29u
dHJvbGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRXZWJWaWV3Om1fd2ViVmlld10pOwotICAg
IFBhZ2UqIGZyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgd2ViVmll
d10pOwotCi0gICAgZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KG5ldyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX3dlYlZp
ZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xsZXIsIGZyb250ZW5k
UGFnZSkpOworICAgIFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHNldEluc3BlY3RvckNsaWVudDp0
aGlzXTsKKyAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkg
d2ViVmlld10pOworICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNl
dEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG5ldyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCht
X3dlYlZpZXcsIHdpbmRvd0NvbnRyb2xsZXIuZ2V0KCksIGluc3BlY3RvckNvbnRyb2xsZXIsIG1f
ZnJvbnRlbmRQYWdlKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpoaWdobGlnaHQo
Tm9kZSogbm9kZSkKQEAgLTQwNyw2ICs0MTAsMTEgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUoKSBjb25zdAogICAgIF9mcm9udGVuZENsaWVudCA9
IGZyb250ZW5kQ2xpZW50OwogfQogCistICh2b2lkKXNldEluc3BlY3RvckNsaWVudDooV2ViSW5z
cGVjdG9yQ2xpZW50KilpbnNwZWN0b3JDbGllbnQKK3sKKyAgICBfaW5zcGVjdG9yQ2xpZW50ID0g
aW5zcGVjdG9yQ2xpZW50OworfQorCiAtICh2b2lkKXNldEF0dGFjaGVkV2luZG93SGVpZ2h0Oih1
bnNpZ25lZCloZWlnaHQKIHsKICAgICBpZiAoIV9hdHRhY2hlZFRvSW5zcGVjdGVkV2ViVmlldykK
QEAgLTQzOSw2ICs0NDcsOCBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojp1cGRh
dGVXaW5kb3dUaXRsZSgpIGNvbnN0CiAgICAgaWYgKFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBbX2lu
c3BlY3RlZFdlYlZpZXcgcGFnZV0pCiAgICAgICAgIGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+ZGlzY29ubmVjdEZyb250ZW5kKCk7CiAKKyAgICBfaW5zcGVjdG9yQ2xpZW50
LT5yZWxlYXNlRnJvbnRlbmRQYWdlKCk7CisKICAgICBbX3dlYlZpZXcgY2xvc2VdOwogfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRl
eCA5NDUwOTZhLi45MzU3YTg3IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNi0wNyAgSWx5YSBU
aWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9z
c2libGUgdG8gdHJhbnNmZXIgdGltZWxpbmUvZG9tL2V0YyBkYXRhCisgICAgICAgIGZyb20gaW5z
cGVjdGVkIHBhZ2Ugc2lkZSB0byB0aGUgZnJvbnQtZW5kIHNpZGUgaW4gc2VyaWFsaXplZCBmb3Jt
YXQuCisgICAgICAgIFJpZ2h0IG5vdyB3aGVuIHdlIHdhbnQgdG8gc2hvdyBzb21ldGhpbmcgYXQg
ZnJvbnQtZW5kIHNpZGUgd2UgYXJlIHVzaW5nCisgICAgICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBp
biBmcm9udC1lbmQgY29udGV4dCBhbmQgU2NyaXB0T2JqZWN0IGZvciBwYXNzaW5nIHRoZSBkYXRh
LgorICAgICAgICBUaGF0IGlzIG5vdCBzdWl0YWJsZSBmb3IgcmVtb3RlIGRlYnVnZ2luZyB1c2Ug
Y2FzZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQw
MTM0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6SW5zcGVjdG9yQ2xpZW50UXQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6Om9wZW5JbnNwZWN0b3JGcm9udGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6cmVsZWFzZUZyb250ZW5k
UGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5o
OgorCiAyMDEwLTA2LTA0ICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNv
bT4KIAogICAgICAgICBTeW1iaWFuIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAgYi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCmluZGV4IDJkMTE3MDAuLmMyZjY3ZmUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKKysr
IGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVu
dFF0LmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgInF3ZWJpbnNwZWN0b3IuaCIK
ICNpbmNsdWRlICJxd2ViaW5zcGVjdG9yX3AuaCIKICNpbmNsdWRlICJxd2VicGFnZS5oIgpAQCAt
NDQsNiArNDUsNyBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJv
bGxlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0LDYgKzc2LDcgQEAgcHVibGlj
OgogCiBJbnNwZWN0b3JDbGllbnRRdDo6SW5zcGVjdG9yQ2xpZW50UXQoUVdlYlBhZ2UqIHBhZ2Up
CiAgICAgOiBtX2luc3BlY3RlZFdlYlBhZ2UocGFnZSkKKyAgICAsIG1fZnJvbnRlbmRXZWJQYWdl
KDApCiB7fQogCiB2b2lkIEluc3BlY3RvckNsaWVudFF0OjppbnNwZWN0b3JEZXN0cm95ZWQoKQpA
QCAtMTAzLDcgKzEwNiwxMyBAQCB2b2lkIEluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVjdG9y
RnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopCiAgICAgbV9pbnNwZWN0ZWRX
ZWJQYWdlLT5kLT5pbnNwZWN0b3JGcm9udGVuZCA9IGluc3BlY3RvclZpZXc7CiAgICAgaW5zcGVj
dG9yLT5kLT5zZXRGcm9udGVuZChpbnNwZWN0b3JWaWV3KTsKIAotICAgIGluc3BlY3RvclZpZXct
PnBhZ2UoKS0+ZC0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9u
dGVuZENsaWVudChuZXcgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdChtX2luc3BlY3RlZFdlYlBh
Z2UsIGluc3BlY3RvclZpZXcpKTsKKyAgICBpbnNwZWN0b3JWaWV3LT5wYWdlKCktPmQtPnBhZ2Ut
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobmV3IElu
c3BlY3RvckZyb250ZW5kQ2xpZW50UXQobV9pbnNwZWN0ZWRXZWJQYWdlLCBpbnNwZWN0b3JWaWV3
LCB0aGlzKSk7CisgICAgbV9mcm9udGVuZFdlYlBhZ2UgPSBpbnNwZWN0b3JQYWdlOworfQorCit2
b2lkIEluc3BlY3RvckNsaWVudFF0OjpyZWxlYXNlRnJvbnRlbmRQYWdlKCkKK3sKKyAgICBtX2Zy
b250ZW5kV2ViUGFnZSA9IDA7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OmhpZ2hsaWdo
dChOb2RlKikKQEAgLTE2MCw2ICsxNjksMzAgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6c3Rv
cmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNldHRpbmcpCiAjZW5k
aWYgLy8gUVRfTk9fU0VUVElOR1MKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRRdDo6c2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIW1fZnJv
bnRlbmRXZWJQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBQYWdlKiBmcm9udGVu
ZFBhZ2UgPSBRV2ViUGFnZVByaXZhdGU6OmNvcmUobV9mcm9udGVuZFdlYlBhZ2UpOworICAgIGlm
ICghZnJvbnRlbmRQYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGcmFtZSogZnJh
bWUgPSBmcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIg
PSBmcmFtZS0+c2NyaXB0KCk7CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgZGlzcGF0Y2hUb0Zyb250ZW5kKCJXZWJJbnNwZWN0
b3IuZGlzcGF0Y2hNZXNzYWdlVG9Gcm9udGVuZCgiKTsKKyAgICBkaXNwYXRjaFRvRnJvbnRlbmQg
Kz0gbWVzc2FnZTsKKyAgICBkaXNwYXRjaFRvRnJvbnRlbmQgKz0gIik7IjsKKyAgICBzY3JpcHRD
b250cm9sbGVyLT5leGVjdXRlU2NyaXB0KGRpc3BhdGNoVG9Gcm9udGVuZCk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHN0YXRpYyBTdHJpbmcgdmFyaWFudFRvU2V0dGluZyhjb25zdCBRVmFyaWFu
dCYgcXZhcmlhbnQpCiB7CiAgICAgU3RyaW5nIHJldFZhbDsKQEAgLTE4MywxMSArMjE2LDEyIEBA
IHN0YXRpYyBRVmFyaWFudCBzZXR0aW5nVG9WYXJpYW50KGNvbnN0IFN0cmluZyYgc2V0dGluZykK
ICAgICByZXR1cm4gcmV0VmFsOwogfQogCi1JbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpJbnNw
ZWN0b3JGcm9udGVuZENsaWVudFF0KFFXZWJQYWdlKiBpbnNwZWN0ZWRXZWJQYWdlLCBQYXNzT3du
UHRyPFFXZWJWaWV3PiBpbnNwZWN0b3JWaWV3KQorSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDo6
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdChRV2ViUGFnZSogaW5zcGVjdGVkV2ViUGFnZSwgUGFz
c093blB0cjxRV2ViVmlldz4gaW5zcGVjdG9yVmlldywgSW5zcGVjdG9yQ2xpZW50UXQqIGluc3Bl
Y3RvckNsaWVudCkKICAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdGVk
V2ViUGFnZS0+ZC0+cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JWaWV3LT5w
YWdlKCktPmQtPnBhZ2UpIAogICAgICwgbV9pbnNwZWN0ZWRXZWJQYWdlKGluc3BlY3RlZFdlYlBh
Z2UpCiAgICAgLCBtX2luc3BlY3RvclZpZXcoaW5zcGVjdG9yVmlldykKICAgICAsIG1fZGVzdHJv
eWluZ0luc3BlY3RvclZpZXcoZmFsc2UpCisgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0
b3JDbGllbnQpCiB7CiB9CiAKQEAgLTIyNSw2ICsyNTksOCBAQCB2b2lkIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50UXQ6OmNsb3NlV2luZG93KCkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIG1f
aW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0RnJv
bnRlbmQoKTsKICNlbmRpZgorICAgIG1faW5zcGVjdG9yQ2xpZW50LT5yZWxlYXNlRnJvbnRlbmRQ
YWdlKCk7CisKICAgICAvLyBDbGVhciBwb2ludGVyIGJlZm9yZSBkZWxldGluZyBXZWJWaWV3IHRv
IGF2b2lkIHJlY3Vyc2l2ZSBjYWxscyB0byBpdHMgZGVzdHJ1Y3Rvci4KICAgICBkZWxldGUgbV9p
bnNwZWN0b3JWaWV3LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFF0LmgKaW5kZXggNGJlYWRhYi4uYzk5NmY1NSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKQEAgLTU4LDEzICs1OCwxOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtl
eSwgU3RyaW5nKiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCByZWxlYXNlRnJv
bnRlbmRQYWdlKCk7CisKIHByaXZhdGU6CiAgICAgUVdlYlBhZ2UqIG1faW5zcGVjdGVkV2ViUGFn
ZTsKKyAgICBRV2ViUGFnZSogbV9mcm9udGVuZFdlYlBhZ2U7CiB9OwogCiBjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZENsaWVudFF0IDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwg
ewogcHVibGljOgotICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQoUVdlYlBhZ2UqIGluc3Bl
Y3RlZFdlYlBhZ2UsIFBhc3NPd25QdHI8UVdlYlZpZXc+IGluc3BlY3RvclZpZXcpOworICAgIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50UXQoUVdlYlBhZ2UqIGluc3BlY3RlZFdlYlBhZ2UsIFBhc3NP
d25QdHI8UVdlYlZpZXc+IGluc3BlY3RvclZpZXcsIEluc3BlY3RvckNsaWVudFF0KiBpbnNwZWN0
b3JDbGllbnQpOwogCiAgICAgdmlydHVhbCB2b2lkIGZyb250ZW5kTG9hZGVkKCk7CiAKQEAgLTg4
LDYgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8UVdlYlZpZXc+IG1faW5zcGVjdG9yVmll
dzsKICAgICBRU3RyaW5nIG1faW5zcGVjdGVkVVJMOwogICAgIGJvb2wgbV9kZXN0cm95aW5nSW5z
cGVjdG9yVmlldzsKKyAgICBJbnNwZWN0b3JDbGllbnRRdCogbV9pbnNwZWN0b3JDbGllbnQ7CiB9
OwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDQyMmFlODcuLjM5ZWNhOWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hh
bmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAt
MDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQg
c2hvdWxkIGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAg
ICAgICBmcm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNl
cmlhbGl6ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cg
c29tZXRoaW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFz
c2luZyB0aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBk
ZWJ1Z2dpbmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xp
ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6fldlYkluc3BlY3RvckNsaWVudCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisKIDIwMTAtMDYt
MDQgIEFsaWNlIExpdSAgPGFsaWNlLmxpdUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgSm9uIEhvbmV5Y3V0dC4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmNwcAppbmRleCAzYzI2M2U1Li4zNGZiODI3IDEwMDY0NAotLS0gYS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC02OSw2ICs2OSw3
IEBAIHN0YXRpYyBDRkJ1bmRsZVJlZiBnZXRXZWJLaXRCdW5kbGUoKQogCiBXZWJJbnNwZWN0b3JD
bGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV9pbnNw
ZWN0ZWRXZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQogewogICAgIEFT
U0VSVChtX2luc3BlY3RlZFdlYlZpZXcpOwogICAgIG1faW5zcGVjdGVkV2ViVmlldy0+dmlld1dp
bmRvdygoT0xFX0hBTkRMRSopJm1faW5zcGVjdGVkV2ViVmlld0h3bmQpOwpAQCAtNzYsNiArNzcs
NyBAQCBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3KiB3ZWJW
aWV3KQogCiBXZWJJbnNwZWN0b3JDbGllbnQ6On5XZWJJbnNwZWN0b3JDbGllbnQoKQogeworICAg
IG1fZnJvbnRlbmRQYWdlID0gMDsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3Bl
Y3RvckRlc3Ryb3llZCgpCkBAIC0xNzIsOCArMTc0LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b24KICAgICBpZiAoRkFJTEVEKGZyb250ZW5kV2ViVmlldy0+dG9wTGV2ZWxGcmFtZSgpLT5sb2Fk
UmVxdWVzdChyZXF1ZXN0LmdldCgpKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBhZ2UqIHBh
Z2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7Ci0gICAgcGFnZS0+aW5zcGVjdG9yQ29u
dHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChuZXcgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQobV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZpZXdId25kLCBm
cm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcykp
OworICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkpOworICAg
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBmcm9udGVuZENsaWVudCA9IG5ldyBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudChtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmll
d0h3bmQsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25k
LCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJ
bnNwZWN0b3JGcm9udGVuZENsaWVudChmcm9udGVuZENsaWVudCk7CiAgICAgbV9mcm9udGVuZEh3
bmQgPSBmcm9udGVuZEh3bmQ7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oCmluZGV4IDY0NzczYTUuLjE3YThkOTkgMTAwNjQ0Ci0tLSBhL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMzcsNiArMzcsMTIg
QEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgogCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2U7CisKK30KKwogY2xhc3MgV2ViTm9kZUhpZ2hs
aWdodDsKIGNsYXNzIFdlYlZpZXc7CiAKQEAgLTU1LDEzICs2MSwyMSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwg
V2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB2YWx1ZSk7
CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYpOworCiAgICAgdm9pZCB1cGRhdGVIaWdobGlnaHQoKTsKLSAgICB2b2lkIGZyb250
ZW5kQ2xvc2luZygpIHsgbV9mcm9udGVuZEh3bmQgPSAwOyB9CisgICAgdm9pZCBmcm9udGVuZENs
b3NpbmcoKQorICAgIHsKKyAgICAgICAgbV9mcm9udGVuZEh3bmQgPSAwOworICAgICAgICByZWxl
YXNlRnJvbnRlbmRQYWdlKCk7CisgICAgfQogCisgICAgdm9pZCByZWxlYXNlRnJvbnRlbmRQYWdl
KCk7CiBwcml2YXRlOgogICAgIH5XZWJJbnNwZWN0b3JDbGllbnQoKTsKIAogICAgIFdlYlZpZXcq
IG1faW5zcGVjdGVkV2ViVmlldzsKKyAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5kUGFnZTsK
ICAgICBIV05EIG1faW5zcGVjdGVkV2ViVmlld0h3bmQ7CiAgICAgSFdORCBtX2Zyb250ZW5kSHdu
ZDsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93eC9DaGFuZ2VM
b2cKaW5kZXggYWIyNTEwMi4uY2M2MjE3YiAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDYtMDcg
IElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogSXQgc2hvdWxk
IGJlIHBvc3NpYmxlIHRvIHRyYW5zZmVyIHRpbWVsaW5lL2RvbS9ldGMgZGF0YQorICAgICAgICBm
cm9tIGluc3BlY3RlZCBwYWdlIHNpZGUgdG8gdGhlIGZyb250LWVuZCBzaWRlIGluIHNlcmlhbGl6
ZWQgZm9ybWF0LgorICAgICAgICBSaWdodCBub3cgd2hlbiB3ZSB3YW50IHRvIHNob3cgc29tZXRo
aW5nIGF0IGZyb250LWVuZCBzaWRlIHdlIGFyZSB1c2luZworICAgICAgICBTY3JpcHRGdW5jdGlv
bkNhbGwgaW4gZnJvbnQtZW5kIGNvbnRleHQgYW5kIFNjcmlwdE9iamVjdCBmb3IgcGFzc2luZyB0
aGUgZGF0YS4KKyAgICAgICAgVGhhdCBpcyBub3Qgc3VpdGFibGUgZm9yIHJlbW90ZSBkZWJ1Z2dp
bmcgdXNlIGNhc2UuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDEzNAorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXeDo6c2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4Lmg6CisK
IDIwMTAtMDUtMjcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAK
ICAgICAgICAgW3d4XSBCdWlsZCBmaXhlcyBmb3IgV2luZG93cyBhZnRlciByZWNlbnQgY2hhbmdl
cy4KZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4
LmNwcCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcAppbmRl
eCA1ZGM5YWM3Li5jOTQ5ZDc3IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50V3guY3BwCkBAIC03Miw0ICs3MiwxMCBAQCB2b2lkIEluc3BlY3RvckNsaWVudFd4
OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgc2V0dGluZykK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEluc3BlY3RvckNsaWVudFd4OjpzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKwogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmggYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRXeC5oCmluZGV4IDc2NzVkYzEuLjY5OGEwZjUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgKKysrIGIvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaApAQCAtNDgsNiArNDgsOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5
LCBTdHJpbmcqIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKworICAgIHZpcnR1YWwgYm9vbCBzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCg==
</data>
<flag name="review"
          id="43179"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58390</attachid>
            <date>2010-06-10 10:56:50 -0700</date>
            <delta_ts>2010-06-11 01:35:18 -0700</delta_ts>
            <desc>[patch] next iteration with fixes for gtk</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42418</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWRlYTgzYi4uZTQ5YmZhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwg
RmVsZG1hbi4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IE9uIHRoZSB3YXkgdG8gUmVtb3RlIERl
YnVnZ2luZyB3ZSB3YW50IHRvIHRyYW5zZmVyIGRvbS90aW1lbGluZS9ldGMKKyAgICAgICAgZGF0
YSBmcm9tIGluc3BlY3RlZCBwYWdlIHRvIFdlYkluc3BlY3RvciBhcyBKU09OIHN0cmluZyB2aWEg
aHR0cC4gVGhlIG5hdGl2ZQorICAgICAgICBzZXJpYWxpemF0aW9uIHRvIEpTT04gc3RyaW5nIGlz
IHN1cHBvcnRlZCBieSBJbnNwZWN0b3JWYWx1ZSdzIGNsYXNzZXMuIFRoaXMgcGF0Y2gKKyAgICAg
ICAgaGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzZW5kTWVzc2FnZVRvRnJvbnRlbmQgZnVuY3Rp
b24uIFdlYktpdCB2ZXJzaW9uIG9mIGl0IHN0aWxsCisgICAgICAgIHVzZXMgU2NyaXB0RnVuY3Rp
b25DYWxsIGFuZCB3aWxsIGJlIHN3aXRjaGVkIHRvIGFub3RoZXIgdHJhbnNwb3J0IGEgbGl0dGxl
IGJpdCBsYXRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwMTM0CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6
Okluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpmcm9u
dGVuZExvYWRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPYmplY3Q6OndyaXRlSlNPTik6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
ZGlzcGF0Y2hNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50
cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZCk6CisKIDIwMTAtMDYtMDkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggODQxYzE1ZS4uMmNlM2EwOSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50LmgKQEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2YWx1ZSkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgdmFsdWUpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRv
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4
IGJmNzI1NzIuLjYzMjNjY2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuY3BwCkBAIC00MjUsMTEgKzQyNSwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNl
dFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpzZXRGcm9udGVuZChQYXNzT3duUHRyPEluc3BlY3RvckZyb250ZW5kPiBm
cm9udGVuZCkKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKGNvbnN0
IFNjcmlwdE9iamVjdCYgd2ViSW5zcGVjdG9yKQogewotICAgIEFTU0VSVChmcm9udGVuZCk7CiAg
ICAgbV9vcGVuaW5nRnJvbnRlbmQgPSBmYWxzZTsKLSAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7
CisgICAgbV9mcm9udGVuZCA9IG5ldyBJbnNwZWN0b3JGcm9udGVuZCh3ZWJJbnNwZWN0b3IsIG1f
Y2xpZW50KTsKICAgICByZWxlYXNlRE9NQWdlbnQoKTsKICAgICBtX2RvbUFnZW50ID0gSW5zcGVj
dG9yRE9NQWdlbnQ6OmNyZWF0ZShtX2Nzc1N0b3JlLmdldCgpLCBtX2Zyb250ZW5kLmdldCgpKTsK
ICAgICBpZiAobV90aW1lbGluZUFnZW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oCmluZGV4IGJkYTI3YWYuLjE2ZTA1OWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKQEAgLTEzNCw2ICsxMzQsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2hv
dygpOwogICAgIHZvaWQgc2hvd1BhbmVsKFNwZWNpYWxQYW5lbHMpOwogICAgIHZvaWQgY2xvc2Uo
KTsKKworICAgIC8vIFdlIGFyZSBpbiB0cmFuc2l0aW9uIGZyb20gSlMgdHJhbnNwb3J0IHZpYSB3
ZWJJbnNwZWN0b3IgdG8gbmF0aXZlCisgICAgLy8gdHJhbnNwb3J0IHZpYSBJbnNwZWN0b3JDbGll
bnQuIEFmdGVyIG1pZ3JhdGlvbiwgd2ViSW5zcGVjdG9yIHBhcmFtZXRlciBzaG91bGQKKyAgICAv
LyBiZSByZW1vdmVkLgorICAgIHZvaWQgY29ubmVjdEZyb250ZW5kKGNvbnN0IFNjcmlwdE9iamVj
dCYgd2ViSW5zcGVjdG9yKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwogCiAgICAg
dm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlLCBNZXNz
YWdlTGV2ZWwsIFNjcmlwdENhbGxTdGFjayopOwpAQCAtMTUxLDcgKzE1Niw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGluc3BlY3RlZFdpbmRvd1NjcmlwdE9iamVjdENsZWFyZWQoRnJhbWUqKTsKIAog
ICAgIGJvb2wgd2luZG93VmlzaWJsZSgpOwotICAgIHZvaWQgc2V0RnJvbnRlbmQoUGFzc093blB0
cjxJbnNwZWN0b3JGcm9udGVuZD4pOwogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKERvY3VtZW50
TG9hZGVyKik7CiAgICAgdm9pZCBmcmFtZURldGFjaGVkRnJvbVBhcmVudChGcmFtZSopOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCmluZGV4IGEzNjE4NTEuLmMzYzRjOWEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAorKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcldv
cmtlclJlc291cmNlLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtNDksOCArNTAsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc3BlY3RvckZyb250ZW5kOjpJbnNwZWN0b3JGcm9udGVu
ZChTY3JpcHRPYmplY3Qgd2ViSW5zcGVjdG9yKQotICAgIDogbV93ZWJJbnNwZWN0b3Iod2ViSW5z
cGVjdG9yKQorSW5zcGVjdG9yRnJvbnRlbmQ6Okluc3BlY3RvckZyb250ZW5kKFNjcmlwdE9iamVj
dCB3ZWJJbnNwZWN0b3IsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQorICAgIDog
bV93ZWJJbnNwZWN0b3Iod2ViSW5zcGVjdG9yKSwgbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVjdG9y
Q2xpZW50KQogewogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAppbmRleCA2
OWQ0YzRmLi5lYjg2ZDE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgSW5zcGVjdG9yRnJvbnRlbmRfaAogI2RlZmluZSBJbnNw
ZWN0b3JGcm9udGVuZF9oCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRl
ICJTY3JpcHRBcnJheS5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNj
cmlwdFN0YXRlLmgiCkBAIC0zOSwxNiArNDAsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIENvbnNvbGVNZXNzYWdlOwogICAgIGNsYXNzIERhdGFiYXNlOwogICAgIGNsYXNzIEZy
YW1lOworICAgIGNsYXNzIEluc3BlY3RvckNsaWVudDsKICAgICBjbGFzcyBJbnNwZWN0b3JSZXNv
dXJjZTsKKyAgICBjbGFzcyBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZTsKICAgICBjbGFzcyBOb2Rl
OwogICAgIGNsYXNzIFNjcmlwdFN0cmluZzsKICAgICBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWU7CiAgICAgY2xhc3MgU3RvcmFnZTsKLSAgICBjbGFzcyBJbnNwZWN0b3JXb3JrZXJSZXNvdXJj
ZTsKIAogICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEluc3BlY3RvckZyb250ZW5kKFNjcmlwdE9iamVjdCB3ZWJJ
bnNwZWN0b3IpOworICAgICAgICAvLyBXZSBhcmUgaW4gdHJhbnNpdGlvbiBmcm9tIEpTIHRyYW5z
cG9ydCB2aWEgd2ViSW5zcGVjdG9yIHRvIG5hdGl2ZQorICAgICAgICAvLyB0cmFuc3BvcnQgdmlh
IGluc3BlY3RvckNsaWVudC4gQWZ0ZXIgbWlncmF0aW9uLCB3ZWJJbnNwZWN0b3IgcGFyYW1ldGVy
IHNob3VsZAorICAgICAgICAvLyBiZSByZW1vdmVkLgorICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZChTY3JpcHRPYmplY3Qgd2ViSW5zcGVjdG9yLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNs
aWVudCk7CiAgICAgICAgIH5JbnNwZWN0b3JGcm9udGVuZCgpOwogCiAgICAgICAgIHZvaWQgY2xv
c2UoKTsKQEAgLTE3MSw2ICsxNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0
ZToKICAgICAgICAgdm9pZCBjYWxsU2ltcGxlRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBmdW5jdGlv
bk5hbWUpOwogICAgICAgICBTY3JpcHRPYmplY3QgbV93ZWJJbnNwZWN0b3I7CisgICAgICAgIElu
c3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcAppbmRleCAxOGM1MmRhLi4xODg1NjZmIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtODksNyArODks
NyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmZyb250ZW5kTG9hZGVkKCkK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZXRGcm9udGVuZChuZXcgSW5zcGVjdG9yRnJvbnRl
bmQod2ViSW5zcGVjdG9yT2JqKSk7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jb25uZWN0
RnJvbnRlbmQod2ViSW5zcGVjdG9yT2JqKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpyZXF1ZXN0QXR0YWNoV2luZG93KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuY3BwCmluZGV4IDIzNjEyZTYuLjVjN2QwYzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmNwcApAQCAtNjI1LDcgKzYyNSw3IEBAIHZvaWQgSW5zcGVjdG9yT2JqZWN0Ojp3
cml0ZUpTT04oVmVjdG9yPFVDaGFyPiogb3V0cHV0KSBjb25zdAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9vcmRlci5zaXplKCk7ICsraSkgewogICAgICAgICBEaWN0aW9uYXJ5Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG1fZGF0YS5maW5kKG1fb3JkZXJbaV0pOwogICAgICAgICBBU1NFUlQo
aXQgIT0gbV9kYXRhLmVuZCgpKTsKLSAgICAgICAgaWYgKGl0ICE9IG1fZGF0YS5iZWdpbigpKQor
ICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIG91dHB1dC0+YXBwZW5kKCcsJyk7CiAgICAgICAg
IGRvdWJsZVF1b3RlU3RyaW5nKGl0LT5maXJzdCwgb3V0cHV0KTsKICAgICAgICAgb3V0cHV0LT5h
cHBlbmQoJzonKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4
IDhhNzhjZDIuLjg3YzRjNzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qcwpAQCAtNTcyLDYgKzU3MiwxMyBAQCBXZWJJbnNwZWN0b3IuZGlzcGF0Y2ggPSBmdW5jdGlv
bigpIHsKICAgICBzZXRUaW1lb3V0KGRlbGF5RGlzcGF0Y2gsIDApOwogfQogCitXZWJJbnNwZWN0
b3IuZGlzcGF0Y2hNZXNzYWdlRnJvbUJhY2tlbmQgPSBmdW5jdGlvbihhcmd1bWVudHMpCit7Cisg
ICAgdmFyIG1ldGhvZE5hbWUgPSBhcmd1bWVudHMuc2hpZnQoKTsKKyAgICBXZWJJbnNwZWN0b3Jb
bWV0aG9kTmFtZV0uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKK30KKworCiBXZWJJbnNwZWN0b3Iu
d2luZG93UmVzaXplID0gZnVuY3Rpb24oZXZlbnQpCiB7CiAgICAgaWYgKHRoaXMuY3VycmVudFBh
bmVsKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmggYi9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAppbmRleCBjNjMwOTMxLi5lNDJlZTFkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAorKysgYi9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaApAQCAtNDg2LDYgKzQ4Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiwgU3RyaW5nKikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSB7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIHsgcmV0
dXJuIGZhbHNlOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvQ2hhbmdlTG9nIGIvV2Vi
S2l0L0NoYW5nZUxvZwppbmRleCBhMjgyZjA4Li4yYWE4NzY3IDEwMDY0NAotLS0gYS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0w
Ni0wNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IE9uIHRo
ZSB3YXkgdG8gUmVtb3RlIERlYnVnZ2luZyB3ZSB3YW50IHRvIHRyYW5zZmVyIGRvbS90aW1lbGlu
ZS9ldGMKKyAgICAgICAgZGF0YSBmcm9tIGluc3BlY3RlZCBwYWdlIHRvIFdlYkluc3BlY3RvciBh
cyBKU09OIHN0cmluZyB2aWEgaHR0cC4gVGhlIG5hdGl2ZQorICAgICAgICBzZXJpYWxpemF0aW9u
IHRvIEpTT04gc3RyaW5nIGlzIHN1cHBvcnRlZCBieSBJbnNwZWN0b3JWYWx1ZSdzIGNsYXNzZXMu
IFRoaXMgcGF0Y2gKKyAgICAgICAgaGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQgZnVuY3Rpb24uIFdlYktpdCB2ZXJzaW9uIG9mIGl0IHN0aWxsCisgICAgICAg
IHVzZXMgU2NyaXB0RnVuY3Rpb25DYWxsIGFuZCB3aWxsIGJlIHN3aXRjaGVkIHRvIGFub3RoZXIg
dHJhbnNwb3J0IGEgbGl0dGxlIGJpdCBsYXRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudEVmbDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBlZmwvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmg6CisKIDIwMTAtMDYtMDkgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHI2MDg4OS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9XZWJLaXQv
Y2YvQ2hhbmdlTG9nCmluZGV4IDQwOTkyZTYuLmMyNzQ1N2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
Zi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDEwLTA2LTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIFdlYkluc3BlY3Rvcjog
T24gdGhlIHdheSB0byBSZW1vdGUgRGVidWdnaW5nIHdlIHdhbnQgdG8gdHJhbnNmZXIgZG9tL3Rp
bWVsaW5lL2V0YworICAgICAgICBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2UgdG8gV2ViSW5zcGVj
dG9yIGFzIEpTT04gc3RyaW5nIHZpYSBodHRwLiBUaGUgbmF0aXZlCisgICAgICAgIHNlcmlhbGl6
YXRpb24gdG8gSlNPTiBzdHJpbmcgaXMgc3VwcG9ydGVkIGJ5IEluc3BlY3RvclZhbHVlJ3MgY2xh
c3Nlcy4gVGhpcyBwYXRjaAorICAgICAgICBoYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNlbmRN
ZXNzYWdlVG9Gcm9udGVuZCBmdW5jdGlvbi4gV2ViS2l0IHZlcnNpb24gb2YgaXQgc3RpbGwKKyAg
ICAgICAgdXNlcyBTY3JpcHRGdW5jdGlvbkNhbGwgYW5kIHdpbGwgYmUgc3dpdGNoZWQgdG8gYW5v
dGhlciB0cmFuc3BvcnQgYSBsaXR0bGUgYml0IGxhdGVyLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVu
dDo6cmVsZWFzZUZyb250ZW5kUGFnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OnNl
bmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTAtMDYtMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0
LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHI2MDg4OS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHAgYi9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Q0YuY3BwCmluZGV4IDBkNjZiODMuLmRjNWExODYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jZi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvV2ViS2l0L2NmL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNTMsNiArNTMsOCBAQAog
CiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KIAorI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+CiAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBA
IC05MiwzICs5NCwyOCBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c3RvcmVTZXR0aW5nKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNldHRpbmcpCiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShBZG9wdENGLCBjcmVhdGVLZXlGb3JQcmVmZXJlbmNl
cyhrZXkpKTsKICAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUocHJlZmVyZW5jZXNLZXkuZ2V0
KCksIG9iamVjdFRvU3RvcmUuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9u
KTsKIH0KKwordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnJlbGVhc2VGcm9udGVuZFBhZ2UoKQor
eworICAgIG1fZnJvbnRlbmRQYWdlID0gMDsKK30KKworYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6
OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgaWYg
KCFtX2Zyb250ZW5kUGFnZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRnJhbWUqIGZy
YW1lID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xs
ZXIgPSBmcmFtZS0+c2NyaXB0KCk7CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgZGlzcGF0Y2hUb0Zyb250ZW5kKCJXZWJJbnNw
ZWN0b3IuZGlzcGF0Y2hNZXNzYWdlRnJvbUJhY2tlbmQoIik7CisgICAgZGlzcGF0Y2hUb0Zyb250
ZW5kICs9IG1lc3NhZ2U7CisgICAgZGlzcGF0Y2hUb0Zyb250ZW5kICs9ICIpOyI7CisgICAgc2Ny
aXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChkaXNwYXRjaFRvRnJvbnRlbmQpOworICAgIHJl
dHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjJjM2Y4MS4uYmRhYjRkZiAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lz
bG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisK
KyAgICAgICAgV2ViSW5zcGVjdG9yOiBPbiB0aGUgd2F5IHRvIFJlbW90ZSBEZWJ1Z2dpbmcgd2Ug
d2FudCB0byB0cmFuc2ZlciBkb20vdGltZWxpbmUvZXRjCisgICAgICAgIGRhdGEgZnJvbSBpbnNw
ZWN0ZWQgcGFnZSB0byBXZWJJbnNwZWN0b3IgYXMgSlNPTiBzdHJpbmcgdmlhIGh0dHAuIFRoZSBu
YXRpdmUKKyAgICAgICAgc2VyaWFsaXphdGlvbiB0byBKU09OIHN0cmluZyBpcyBzdXBwb3J0ZWQg
YnkgSW5zcGVjdG9yVmFsdWUncyBjbGFzc2VzLiBUaGlzIHBhdGNoCisgICAgICAgIGhhcyB0aGUg
aW1wbGVtZW50YXRpb24gb2Ygc2VuZE1lc3NhZ2VUb0Zyb250ZW5kIGZ1bmN0aW9uLiBXZWJLaXQg
dmVyc2lvbiBvZiBpdCBzdGlsbAorICAgICAgICB1c2VzIFNjcmlwdEZ1bmN0aW9uQ2FsbCBhbmQg
d2lsbCBiZSBzd2l0Y2hlZCB0byBhbm90aGVyIHRyYW5zcG9ydCBhIGxpdHRsZSBiaXQgbGF0ZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAor
CisgICAgICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbnNwZWN0b3JDbGllbnRJbXBsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAq
IHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdl
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6OnNldElu
c3BlY3RvckZyb250ZW5kUHJveHlUb0luc3BlY3RvckNvbnRyb2xsZXIpOgorCiAyMDEwLTA2LTA5
ICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2
aWQgTGV2aW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVu
dEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcApp
bmRleCAyMmI1MTVmLi45MWQxMGQ1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0lu
c3BlY3RvckNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
Q2xpZW50SW1wbC5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRl
ICJXZWJEZXZUb29sc0FnZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYkRldlRvb2xzTWVzc2FnZURh
dGEuaCIKICNpbmNsdWRlICJXZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVk
ZSAiV2ViVVJMUmVxdWVzdC5oIgpAQCAtMTAyLDQgKzEwNCwyMCBAQCB2b2lkIEluc3BlY3RvckNs
aWVudEltcGw6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICBtX2luc3BlY3RlZFdlYlZpZXctPnNldEluc3BlY3RvclNldHRpbmcoa2V5LCB2
YWx1ZSk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50SW1wbDo6c2VuZE1lc3NhZ2VUb0Zyb250
ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBXZWJEZXZUb29sc0Fn
ZW50SW1wbCogZGV2VG9vbHNBZ2VudCA9IHN0YXRpY19jYXN0PFdlYkRldlRvb2xzQWdlbnRJbXBs
Kj4obV9pbnNwZWN0ZWRXZWJWaWV3LT5kZXZUb29sc0FnZW50KCkpOworICAgIGlmICghZGV2VG9v
bHNBZ2VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgV2ViVmVjdG9yPFdlYlN0cmlu
Zz4gYXJndW1lbnRzKHNpemVfdCgxKSk7CisgICAgYXJndW1lbnRzWzBdID0gbWVzc2FnZTsKKyAg
ICBXZWJEZXZUb29sc01lc3NhZ2VEYXRhIGRhdGE7CisgICAgZGF0YS5jbGFzc05hbWUgPSAiVG9v
bHNBZ2VudERlbGVnYXRlIjsKKyAgICBkYXRhLm1ldGhvZE5hbWUgPSAiZGlzcGF0Y2hPbkNsaWVu
dCI7CisgICAgZGF0YS5hcmd1bWVudHMuc3dhcChhcmd1bWVudHMpOworICAgIGRldlRvb2xzQWdl
bnQtPnNlbmRScGNNZXNzYWdlKGRhdGEpOworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
Q2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgK
aW5kZXggNzQ0N2QwYy4uZjQ5OTRlMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9J
bnNwZWN0b3JDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JD
bGllbnRJbXBsLmgKQEAgLTM2LDYgKzM2LDggQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xh
c3MgV2ViVmlld0ltcGw7CiAKIGNsYXNzIEluc3BlY3RvckNsaWVudEltcGwgOiBwdWJsaWMgV2Vi
Q29yZTo6SW5zcGVjdG9yQ2xpZW50IHsKQEAgLTQ2LDE1ICs0OCwxNCBAQCBwdWJsaWM6CiAgICAg
Ly8gSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHM6CiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRl
c3Ryb3llZCgpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29y
ZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOworCiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodChX
ZWJDb3JlOjpOb2RlKik7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKAotICAgICAgICBjb25zdCBXZWJDb3JlOjpTdHJp
bmcmIGtleSwKLSAgICAgICAgV2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7Ci0gICAgdmlydHVhbCB2
b2lkIHN0b3JlU2V0dGluZygKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksCi0g
ICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdmFsdWUpOwogCisgICAgdmlydHVhbCB2b2lk
IHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgV2ViQ29yZTo6U3Ry
aW5nKiB2YWx1ZSk7CisgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB2YWx1ZSk7CisKKyAgICB2aXJ0
dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwog
cHJpdmF0ZToKIAogICAgIC8vIFRoZSBXZWJWaWV3SW1wbCBvZiB0aGUgcGFnZSBiZWluZyBpbnNw
ZWN0ZWQ7IGdldHMgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCA3YzU1OWM5Li5jNGJiYmZhIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApAQCAtNDc1LDgg
KzQ3NSw3IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnNldEluc3BlY3RvckZyb250ZW5k
UHJveHlUb0luc3BlY3RvckNvbnRyb2xsZXIoKQogICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNj
cmlwdFN0YXRlOjpmb3JDb250ZXh0KAogICAgICAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpO
ZXcobV91dGlsaXR5Q29udGV4dCkpOwogICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGljID0gaW5z
cGVjdG9yQ29udHJvbGxlcigpOwotICAgIGljLT5zZXRGcm9udGVuZChuZXcgSW5zcGVjdG9yRnJv
bnRlbmQoCi0gICAgICAgIFNjcmlwdE9iamVjdChzdGF0ZSwgbV91dGlsaXR5Q29udGV4dC0+R2xv
YmFsKCkpKSk7CisgICAgaWMtPmNvbm5lY3RGcm9udGVuZChTY3JpcHRPYmplY3Qoc3RhdGUsIG1f
dXRpbGl0eUNvbnRleHQtPkdsb2JhbCgpKSk7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudElt
cGw6OnNldEFwdUFnZW50RW5hYmxlZChib29sIGVuYWJsZWQpCmRpZmYgLS1naXQgYS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAgYi9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAKaW5kZXggODg5MmQ3Zi4uMmZhODYw
YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRF
ZmwuY3BwCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZs
LmNwcApAQCAtNTgsNCArNTgsMTEgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRFZmw6OnN0b3JlU2V0
dGluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50RWZsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBlbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKKwogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRFZmwuaCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
RWZsLmgKaW5kZXggMzBjOWNhZi4uMWNhNjQ2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAorKysgYi9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCkBAIC01MCw2ICs1MCw4IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmlu
ZyogdmFsdWUpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOworCisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKTsKIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYTAwYTNmZC4uYzRhNjRi
MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25vdnNreSAgPGxv
aXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4K
KworICAgICAgICBXZWJJbnNwZWN0b3I6IE9uIHRoZSB3YXkgdG8gUmVtb3RlIERlYnVnZ2luZyB3
ZSB3YW50IHRvIHRyYW5zZmVyIGRvbS90aW1lbGluZS9ldGMKKyAgICAgICAgZGF0YSBmcm9tIGlu
c3BlY3RlZCBwYWdlIHRvIFdlYkluc3BlY3RvciBhcyBKU09OIHN0cmluZyB2aWEgaHR0cC4gVGhl
IG5hdGl2ZQorICAgICAgICBzZXJpYWxpemF0aW9uIHRvIEpTT04gc3RyaW5nIGlzIHN1cHBvcnRl
ZCBieSBJbnNwZWN0b3JWYWx1ZSdzIGNsYXNzZXMuIFRoaXMgcGF0Y2gKKyAgICAgICAgaGFzIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvZiBzZW5kTWVzc2FnZVRvRnJvbnRlbmQgZnVuY3Rpb24uIFdlYktp
dCB2ZXJzaW9uIG9mIGl0IHN0aWxsCisgICAgICAgIHVzZXMgU2NyaXB0RnVuY3Rpb25DYWxsIGFu
ZCB3aWxsIGJlIHN3aXRjaGVkIHRvIGFub3RoZXIgdHJhbnNwb3J0IGEgbGl0dGxlIGJpdCBsYXRl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OnJlbGVhc2VGcm9udGVuZFBhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmg6CisKIDIwMTAtMDYt
MDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MDg4OS4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAppbmRleCAzMTdhMDU4Li4wYTRkM2VkIDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5j
cHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3Bw
CkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQ2xpZW50R3RrLmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIndlYmtpdHdl
YnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKICNpbmNsdWRlICJ3ZWJr
aXRwcml2YXRlLmgiCkBAIC0zOCw2ICszOSw4IEBAIHN0YXRpYyB2b2lkIG5vdGlmeVdlYlZpZXdE
ZXN0cm95ZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgSW5zcGVjdG9yRnJvbnRlbmRDbGllCiAK
IEluc3BlY3RvckNsaWVudDo6SW5zcGVjdG9yQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiAgICAgOiBtX2luc3BlY3RlZFdlYlZpZXcod2ViVmlldykKKyAgICAsIG1fZnJvbnRlbmRQYWdl
KDApCisgICAgLCBtX2Zyb250ZW5kQ2xpZW50KDApCiB7fQogCiB2b2lkIEluc3BlY3RvckNsaWVu
dDo6aW5zcGVjdG9yRGVzdHJveWVkKCkKQEAgLTgwLDggKzgzLDE0IEBAIHZvaWQgSW5zcGVjdG9y
Q2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJv
bGxlcikKIAogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGluc3BlY3RvcldlYlZpZXcp
KTsKIAotICAgIFBhZ2UqIGluc3BlY3RvclBhZ2UgPSBjb3JlKGluc3BlY3RvcldlYlZpZXcpOwot
ICAgIGluc3BlY3RvclBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQobmV3IEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1faW5zcGVjdGVkV2ViVmll
dywgaW5zcGVjdG9yV2ViVmlldywgd2ViSW5zcGVjdG9yLCBpbnNwZWN0b3JQYWdlKSk7CisgICAg
bV9mcm9udGVuZFBhZ2UgPSBjb3JlKGluc3BlY3RvcldlYlZpZXcpOworICAgIG1fZnJvbnRlbmRD
bGllbnQgPSBuZXcgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9pbnNwZWN0ZWRXZWJWaWV3LCBp
bnNwZWN0b3JXZWJWaWV3LCB3ZWJJbnNwZWN0b3IsIG1fZnJvbnRlbmRQYWdlLCB0aGlzKTsKKyAg
ICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9u
dGVuZENsaWVudChtX2Zyb250ZW5kQ2xpZW50KTsKK30KKwordm9pZCBJbnNwZWN0b3JDbGllbnQ6
OnJlbGVhc2VGcm9udGVuZFBhZ2UoKQoreworICAgIG1fZnJvbnRlbmRQYWdlID0gMDsKIH0KIAog
dm9pZCBJbnNwZWN0b3JDbGllbnQ6OmhpZ2hsaWdodChOb2RlKiBub2RlKQpAQCAtMTA0LDE0ICsx
MTMsMzQgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnQ6OnN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcm
IGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiti
b29sIEluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmRQYWdlKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBGcmFtZSogZnJhbWUgPSBtX2Zyb250ZW5kUGFnZS0+bWFpbkZyYW1lKCk7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU2NyaXB0Q29udHJv
bGxlciogc2NyaXB0Q29udHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsKKyAgICBpZiAoIXNjcmlw
dENvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFN0cmluZyBkaXNwYXRj
aFRvRnJvbnRlbmQoIldlYkluc3BlY3Rvci5kaXNwYXRjaE1lc3NhZ2VUb0Zyb250ZW5kKCIpOwor
ICAgIGRpc3BhdGNoVG9Gcm9udGVuZCArPSBtZXNzYWdlOworICAgIGRpc3BhdGNoVG9Gcm9udGVu
ZCArPSAiKTsiOworICAgIHNjcmlwdENvbnRyb2xsZXItPmV4ZWN1dGVTY3JpcHQoZGlzcGF0Y2hU
b0Zyb250ZW5kKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KIAogYm9vbCBkZXN0cm95ZWQgPSBUUlVF
OwogCi1JbnNwZWN0b3JGcm9udGVuZENsaWVudDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2Vi
S2l0V2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViS2l0V2ViVmlldyogaW5zcGVjdG9yV2Vi
VmlldywgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3IsIFBhZ2UqIGluc3BlY3RvclBh
Z2UpCitJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2Vi
S2l0V2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViS2l0V2ViVmlldyogaW5zcGVjdG9yV2Vi
VmlldywgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3IsIFBhZ2UqIGluc3BlY3RvclBh
Z2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQogICAgIDogSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbChjb3JlKGluc3BlY3RlZFdlYlZpZXcpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCksIGluc3BlY3RvclBhZ2UpCiAgICAgLCBtX2luc3BlY3RvcldlYlZpZXcoaW5zcGVjdG9y
V2ViVmlldykKICAgICAsIG1faW5zcGVjdGVkV2ViVmlldyhpbnNwZWN0ZWRXZWJWaWV3KQogICAg
ICwgbV93ZWJJbnNwZWN0b3Iod2ViSW5zcGVjdG9yKQorICAgICwgbV9pbnNwZWN0b3JDbGllbnQo
aW5zcGVjdG9yQ2xpZW50KQogewogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9pbnNwZWN0b3JXZWJW
aWV3LCAiZGVzdHJveSIsCiAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLKG5vdGlmeVdl
YlZpZXdEZXN0cm95ZWQpLCAoZ3BvaW50ZXIpdGhpcyk7CkBAIC0xMTksNiArMTQ4LDEwIEBAIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJLaXRXZWJW
aWV3KiBpbnNwZWN0ZWRXZWJWaWV3CiAKIEluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojp+SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoKQogeworICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkgeworICAg
ICAgICBtX2luc3BlY3RvckNsaWVudC0+ZGlzY29ubmVjdEZyb250ZW5kQ2xpZW50KCk7CisgICAg
ICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gMDsKKyAgICB9CiAgICAgQVNTRVJUKCFtX3dlYkluc3Bl
Y3Rvcik7CiB9CiAKQEAgLTEzOCw2ICsxNzEsOSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OjpkZXN0cm95SW5zcGVjdG9yV2luZG93KCkKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUo
d2ViSW5zcGVjdG9yLCAiY2xvc2Utd2luZG93IiwgJmhhbmRsZWQpOwogICAgIEFTU0VSVChoYW5k
bGVkKTsKIAorICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKKyAgICAgICAgbV9pbnNwZWN0b3JD
bGllbnQtPnJlbGVhc2VGcm9udGVuZFBhZ2UoKTsKKwogICAgIC8qIHdlIHNob3VsZCBub3cgZGlz
cG9zZSBvdXIgb3duIHJlZmVyZW5jZSAqLwogICAgIGdfb2JqZWN0X3VucmVmKHdlYkluc3BlY3Rv
cik7CiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsu
aAppbmRleCBjZGI1Mzc1Li5mNzc4Yjg3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKQEAgLTQxLDEwICs0MSwyMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworICAgIAorICAgIGNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OwogCiAgICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdl
YkNvcmU6Okluc3BlY3RvckNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBJbnNwZWN0b3JD
bGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldyk7CisgICAgICAgIH5JbnNwZWN0b3JGcm9udGVu
ZENsaWVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtX2Zyb250ZW5kQ2xpZW50KSB7
CisgICAgICAgICAgICAgICAgbV9mcm9udGVuZENsaWVudC0+ZGlzY29ubmVjdEluc3BlY3RvckNs
aWVudCgpOworICAgICAgICAgICAgICAgIG1fZnJvbnRlbmRDbGllbnQgPSAwOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5kQ2xpZW50KCkg
eyBtX2Zyb250ZW5kQ2xpZW50ID0gMDsgfQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0
b3JEZXN0cm95ZWQoKTsKIApAQCAtNTYsMTMgKzY2LDIxIEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYga2V5LCBXZWJDb3JlOjpTdHJpbmcqIHZhbHVlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHN0
b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJiB2YWx1ZSk7CiAKKyAgICAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKworICAgICAgICB2b2lkIHJlbGVhc2VGcm9udGVu
ZFBhZ2UoKTsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1faW5zcGVj
dGVkV2ViVmlldzsKKyAgICAgICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7CisgICAg
ICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBtX2Zyb250ZW5kQ2xpZW50OwogICAgIH07CiAK
ICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KFdlYktpdFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYktpdFdl
YlZpZXcqIGluc3BlY3RvcldlYlZpZXcsIFdlYktpdFdlYkluc3BlY3Rvciogd2ViSW5zcGVjdG9y
LCBXZWJDb3JlOjpQYWdlKiBpbnNwZWN0b3JQYWdlKTsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQoV2ViS2l0V2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViS2l0V2ViVmlldyog
aW5zcGVjdG9yV2ViVmlldywgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3IsIFdlYkNv
cmU6OlBhZ2UqIGluc3BlY3RvclBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50
KTsKKworICAgICAgICB2b2lkIGRpc2Nvbm5lY3RJbnNwZWN0b3JDbGllbnQoKSB7IG1faW5zcGVj
dG9yQ2xpZW50ID0gMDsgfQogCiAgICAgICAgIHZvaWQgZGVzdHJveUluc3BlY3RvcldpbmRvdygp
OwogCkBAIC04Niw2ICsxMDQsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgV2ViS2l0
V2ViVmlldyogbV9pbnNwZWN0b3JXZWJWaWV3OwogICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX2lu
c3BlY3RlZFdlYlZpZXc7CiAgICAgICAgIFdlYktpdFdlYkluc3BlY3RvciogbV93ZWJJbnNwZWN0
b3I7CisgICAgICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiAgICAgfTsK
IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktpdC9oYWlrdS9D
aGFuZ2VMb2cKaW5kZXggY2ViZmNkNC4uNjFlZDcwMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAgV2ViSW5zcGVjdG9y
OiBPbiB0aGUgd2F5IHRvIFJlbW90ZSBEZWJ1Z2dpbmcgd2Ugd2FudCB0byB0cmFuc2ZlciBkb20v
dGltZWxpbmUvZXRjCisgICAgICAgIGRhdGEgZnJvbSBpbnNwZWN0ZWQgcGFnZSB0byBXZWJJbnNw
ZWN0b3IgYXMgSlNPTiBzdHJpbmcgdmlhIGh0dHAuIFRoZSBuYXRpdmUKKyAgICAgICAgc2VyaWFs
aXphdGlvbiB0byBKU09OIHN0cmluZyBpcyBzdXBwb3J0ZWQgYnkgSW5zcGVjdG9yVmFsdWUncyBj
bGFzc2VzLiBUaGlzIHBhdGNoCisgICAgICAgIGhhcyB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kIGZ1bmN0aW9uLiBXZWJLaXQgdmVyc2lvbiBvZiBpdCBzdGlsbAor
ICAgICAgICB1c2VzIFNjcmlwdEZ1bmN0aW9uQ2FsbCBhbmQgd2lsbCBiZSBzd2l0Y2hlZCB0byBh
bm90aGVyIHRyYW5zcG9ydCBhIGxpdHRsZSBiaXQgbGF0ZXIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50SGFpa3U6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuaDoKKwogMjAxMC0wNi0wOSAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjYwODg5LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmNwcCBiL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRIYWlrdS5jcHAKaW5kZXggNTkyMzJlOS4uODgzZmNkMyAxMDA2NDQK
LS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmNw
cAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3Uu
Y3BwCkBAIC02Nyw1ICs2NywxMSBAQCB2b2lkIEluc3BlY3RvckNsaWVudEhhaWt1OjpzdG9yZVNl
dHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRIYWlrdTo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmggYi9XZWJL
aXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuaAppbmRleCBkNDI3
NjcwLi4zODI4ZDA0IDEwMDY0NAotLS0gYS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50SGFpa3UuaAorKysgYi9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50SGFpa3UuaApAQCAtNDksNiArNDksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIGtleSwgV2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBzdG9yZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYgdmFsdWUpOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJv
bnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0No
YW5nZUxvZwppbmRleCA3MDY2OTgyLi4yZDdiMThkIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEw
LTA2LTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogT24g
dGhlIHdheSB0byBSZW1vdGUgRGVidWdnaW5nIHdlIHdhbnQgdG8gdHJhbnNmZXIgZG9tL3RpbWVs
aW5lL2V0YworICAgICAgICBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2UgdG8gV2ViSW5zcGVjdG9y
IGFzIEpTT04gc3RyaW5nIHZpYSBodHRwLiBUaGUgbmF0aXZlCisgICAgICAgIHNlcmlhbGl6YXRp
b24gdG8gSlNPTiBzdHJpbmcgaXMgc3VwcG9ydGVkIGJ5IEluc3BlY3RvclZhbHVlJ3MgY2xhc3Nl
cy4gVGhpcyBwYXRjaAorICAgICAgICBoYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNlbmRNZXNz
YWdlVG9Gcm9udGVuZCBmdW5jdGlvbi4gV2ViS2l0IHZlcnNpb24gb2YgaXQgc3RpbGwKKyAgICAg
ICAgdXNlcyBTY3JpcHRGdW5jdGlvbkNhbGwgYW5kIHdpbGwgYmUgc3dpdGNoZWQgdG8gYW5vdGhl
ciB0cmFuc3BvcnQgYSBsaXR0bGUgYml0IGxhdGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5tbToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9y
Q2xpZW50KToKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250
ZW5kKToKKwogMjAxMC0wNi0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjYwODg5LgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZWU4MWIy
NS4uYmQ1Mjk1NCAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaAorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCkBAIC00Miw2ICs0MiwxMiBAQCBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0ZXI7CiBj
bGFzcyBXZWJWaWV3OwogI2VuZGlmCiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFn
ZTsKKworfQorCiBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50IHsKIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAq
KTsKQEAgLTU2LDI2ICs2MiwzMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRl
U2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgV2ViQ29yZTo6U3RyaW5nKiB2YWx1
ZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcm
IGtleSwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB2YWx1ZSk7CiAKKyAgICB2aXJ0dWFsIGJvb2wg
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworCisgICAgdm9p
ZCByZWxlYXNlRnJvbnRlbmRQYWdlKCk7CisKIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJW
aWV3OwogICAgIFJldGFpblB0cjxXZWJOb2RlSGlnaGxpZ2h0ZXI+IG1faGlnaGxpZ2h0ZXI7Cisg
ICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7CiB9OwogCisKIGNsYXNzIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwgewogcHVibGljOgogICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZp
ZXcqLCBXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyKiwgV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlciosIFdlYkNvcmU6OlBhZ2UqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBmcm9udGVuZExv
YWRlZCgpOwotICAgIAorCiAgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgbG9jYWxpemVkU3Ry
aW5nc1VSTCgpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U3RyaW5nIGhpZGRlblBhbmVscygpOwot
ICAgIAorCiAgICAgdmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZVdpbmRvdygpOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdygp
OwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKTsKLSAgICAKKwogICAgIHZpcnR1YWwg
dm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpOwogICAgIHZpcnR1
YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbmV3VVJM
KTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQubW0gYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5t
bQppbmRleCA2NjFiMGQyLi5kNTkxMDllIDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQpAQCAtNTAsNiArNTAsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKICAgICBXZWJWaWV3ICpfaW5zcGVjdGVkV2ViVmlldzsKICAgICBXZWJWaWV3
ICpfd2ViVmlldzsKICAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogX2Zyb250ZW5kQ2xp
ZW50OworICAgIFdlYkluc3BlY3RvckNsaWVudCogX2luc3BlY3RvckNsaWVudDsKICAgICBCT09M
IF9hdHRhY2hlZFRvSW5zcGVjdGVkV2ViVmlldzsKICAgICBCT09MIF9zaG91bGRBdHRhY2g7CiAg
ICAgQk9PTCBfdmlzaWJsZTsKQEAgLTYxLDYgKzYyLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAtICh2b2lkKWRldGFjaDsKIC0gKEJPT0wpYXR0YWNoZWQ7CiAtICh2b2lkKXNldEZyb250
ZW5kQ2xpZW50OihXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCopZnJvbnRlbmRDbGllbnQ7Cist
ICh2b2lkKXNldEluc3BlY3RvckNsaWVudDooV2ViSW5zcGVjdG9yQ2xpZW50KilpbnNwZWN0b3JD
bGllbnQ7CiAtICh2b2lkKXNldEF0dGFjaGVkV2luZG93SGVpZ2h0Oih1bnNpZ25lZCloZWlnaHQ7
CiAtICh2b2lkKWRlc3Ryb3lJbnNwZWN0b3JWaWV3OwogQGVuZApAQCAtODMsNiArODUsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9y
Q2xpZW50KFdlYlZpZXcgKndlYlZpZXcpCiA6IG1fd2ViVmlldyh3ZWJWaWV3KQogLCBtX2hpZ2hs
aWdodGVyKEFkb3B0TlMsIFtbV2ViTm9kZUhpZ2hsaWdodGVyIGFsbG9jXSBpbml0V2l0aEluc3Bl
Y3RlZFdlYlZpZXc6d2ViVmlld10pCissIG1fZnJvbnRlbmRQYWdlKDApCiB7CiB9CiAKQEAgLTk0
LDkgKzk3LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Ryb3llZCgp
CiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCiB7CiAgICAgUmV0YWluUHRyPFdlYklu
c3BlY3RvcldpbmRvd0NvbnRyb2xsZXI+IHdpbmRvd0NvbnRyb2xsZXIoQWRvcHROUywgW1tXZWJJ
bnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6
bV93ZWJWaWV3XSk7Ci0gICAgUGFnZSogZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93Q29udHJv
bGxlci5nZXQoKSB3ZWJWaWV3XSk7Ci0KLSAgICBmcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobmV3IFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50KG1fd2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVjdG9yQ29u
dHJvbGxlciwgZnJvbnRlbmRQYWdlKSk7CisgICAgW3dpbmRvd0NvbnRyb2xsZXIuZ2V0KCkgc2V0
SW5zcGVjdG9yQ2xpZW50OnRoaXNdOworICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShbd2luZG93
Q29udHJvbGxlci5nZXQoKSB3ZWJWaWV3XSk7CisgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobmV3IFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KG1fd2ViVmlldywgd2luZG93Q29udHJvbGxlci5nZXQoKSwgaW5zcGVj
dG9yQ29udHJvbGxlciwgbV9mcm9udGVuZFBhZ2UpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OmhpZ2hsaWdodChOb2RlKiBub2RlKQpAQCAtNDA3LDYgKzQxMCwxMSBAQCB2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojp1cGRhdGVXaW5kb3dUaXRsZSgpIGNvbnN0CiAgICAg
X2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQ7CiB9CiAKKy0gKHZvaWQpc2V0SW5zcGVj
dG9yQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQqKWluc3BlY3RvckNsaWVudAoreworICAgIF9p
bnNwZWN0b3JDbGllbnQgPSBpbnNwZWN0b3JDbGllbnQ7Cit9CisKIC0gKHZvaWQpc2V0QXR0YWNo
ZWRXaW5kb3dIZWlnaHQ6KHVuc2lnbmVkKWhlaWdodAogewogICAgIGlmICghX2F0dGFjaGVkVG9J
bnNwZWN0ZWRXZWJWaWV3KQpAQCAtNDM5LDYgKzQ0Nyw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkgY29uc3QKICAgICBpZiAoUGFnZSogaW5z
cGVjdGVkUGFnZSA9IFtfaW5zcGVjdGVkV2ViVmlldyBwYWdlXSkKICAgICAgICAgaW5zcGVjdGVk
UGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKIAorICAg
IF9pbnNwZWN0b3JDbGllbnQtPnJlbGVhc2VGcm9udGVuZFBhZ2UoKTsKKwogICAgIFtfd2ViVmll
dyBjbG9zZV07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQv
cXQvQ2hhbmdlTG9nCmluZGV4IGVmNzMzNjcuLmI1ZTFmMmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9x
dC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDEwLTA2LTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIFdlYkluc3BlY3Rvcjog
T24gdGhlIHdheSB0byBSZW1vdGUgRGVidWdnaW5nIHdlIHdhbnQgdG8gdHJhbnNmZXIgZG9tL3Rp
bWVsaW5lL2V0YworICAgICAgICBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2UgdG8gV2ViSW5zcGVj
dG9yIGFzIEpTT04gc3RyaW5nIHZpYSBodHRwLiBUaGUgbmF0aXZlCisgICAgICAgIHNlcmlhbGl6
YXRpb24gdG8gSlNPTiBzdHJpbmcgaXMgc3VwcG9ydGVkIGJ5IEluc3BlY3RvclZhbHVlJ3MgY2xh
c3Nlcy4gVGhpcyBwYXRjaAorICAgICAgICBoYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNlbmRN
ZXNzYWdlVG9Gcm9udGVuZCBmdW5jdGlvbi4gV2ViS2l0IHZlcnNpb24gb2YgaXQgc3RpbGwKKyAg
ICAgICAgdXNlcyBTY3JpcHRGdW5jdGlvbkNhbGwgYW5kIHdpbGwgYmUgc3dpdGNoZWQgdG8gYW5v
dGhlciB0cmFuc3BvcnQgYSBsaXR0bGUgYml0IGxhdGVyLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNs
aWVudFF0OjpJbnNwZWN0b3JDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnRRdDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudFF0OjpyZWxlYXNlRnJvbnRlbmRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNsaWVudFF0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0Lmg6CisKIDIwMTAtMDYtMDkgIFBpZXJyZSBSb3Nz
aSAgPHBpZXJyZS5yb3NzaUBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0
aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFF0LmNwcAppbmRleCBhMTM5N2Q3Li5mZGUwNTU2IDEwMDY0NAotLS0gYS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKQEAgLTMxLDEwICszMSwxMiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudFF0LmgiCiAK
KyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJxd2ViaW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAicXdlYmluc3BlY3Rvcl9wLmgiCiAjaW5jbHVk
ZSAicXdlYnBhZ2UuaCIKQEAgLTcyLDYgKzc0LDcgQEAgcHVibGljOgogCiBJbnNwZWN0b3JDbGll
bnRRdDo6SW5zcGVjdG9yQ2xpZW50UXQoUVdlYlBhZ2UqIHBhZ2UpCiAgICAgOiBtX2luc3BlY3Rl
ZFdlYlBhZ2UocGFnZSkKKyAgICAsIG1fZnJvbnRlbmRXZWJQYWdlKDApCiB7fQogCiB2b2lkIElu
c3BlY3RvckNsaWVudFF0OjppbnNwZWN0b3JEZXN0cm95ZWQoKQpAQCAtMTAxLDcgKzEwNCwxMyBA
QCB2b2lkIEluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlciopCiAgICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0
b3JGcm9udGVuZCA9IGluc3BlY3RvclZpZXc7CiAgICAgaW5zcGVjdG9yLT5kLT5zZXRGcm9udGVu
ZChpbnNwZWN0b3JWaWV3KTsKIAotICAgIGluc3BlY3RvclZpZXctPnBhZ2UoKS0+ZC0+cGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChuZXcgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRRdChtX2luc3BlY3RlZFdlYlBhZ2UsIGluc3BlY3RvclZpZXcp
KTsKKyAgICBpbnNwZWN0b3JWaWV3LT5wYWdlKCktPmQtPnBhZ2UtPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobmV3IEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50UXQobV9pbnNwZWN0ZWRXZWJQYWdlLCBpbnNwZWN0b3JWaWV3LCB0aGlzKSk7CisgICAgbV9m
cm9udGVuZFdlYlBhZ2UgPSBpbnNwZWN0b3JQYWdlOworfQorCit2b2lkIEluc3BlY3RvckNsaWVu
dFF0OjpyZWxlYXNlRnJvbnRlbmRQYWdlKCkKK3sKKyAgICBtX2Zyb250ZW5kV2ViUGFnZSA9IDA7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OmhpZ2hsaWdodChOb2RlKikKQEAgLTE1OCw2
ICsxNjcsMzAgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0
cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNldHRpbmcpCiAjZW5kaWYgLy8gUVRfTk9fU0VUVElO
R1MKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRRdDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmRXZWJQYWdlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBQYWdlKiBmcm9udGVuZFBhZ2UgPSBRV2ViUGFnZVBy
aXZhdGU6OmNvcmUobV9mcm9udGVuZFdlYlBhZ2UpOworICAgIGlmICghZnJvbnRlbmRQYWdlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGcmFtZSogZnJhbWUgPSBmcm9udGVuZFBhZ2Ut
Pm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7
CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBTdHJpbmcgZGlzcGF0Y2hUb0Zyb250ZW5kKCJXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNzYWdl
VG9Gcm9udGVuZCgiKTsKKyAgICBkaXNwYXRjaFRvRnJvbnRlbmQgKz0gbWVzc2FnZTsKKyAgICBk
aXNwYXRjaFRvRnJvbnRlbmQgKz0gIik7IjsKKyAgICBzY3JpcHRDb250cm9sbGVyLT5leGVjdXRl
U2NyaXB0KGRpc3BhdGNoVG9Gcm9udGVuZCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRp
YyBTdHJpbmcgdmFyaWFudFRvU2V0dGluZyhjb25zdCBRVmFyaWFudCYgcXZhcmlhbnQpCiB7CiAg
ICAgU3RyaW5nIHJldFZhbDsKQEAgLTE4MSwxMSArMjE0LDEyIEBAIHN0YXRpYyBRVmFyaWFudCBz
ZXR0aW5nVG9WYXJpYW50KGNvbnN0IFN0cmluZyYgc2V0dGluZykKICAgICByZXR1cm4gcmV0VmFs
OwogfQogCi1JbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpJbnNwZWN0b3JGcm9udGVuZENsaWVu
dFF0KFFXZWJQYWdlKiBpbnNwZWN0ZWRXZWJQYWdlLCBQYXNzT3duUHRyPFFXZWJWaWV3PiBpbnNw
ZWN0b3JWaWV3KQorSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDo6SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRRdChRV2ViUGFnZSogaW5zcGVjdGVkV2ViUGFnZSwgUGFzc093blB0cjxRV2ViVmlldz4g
aW5zcGVjdG9yVmlldywgSW5zcGVjdG9yQ2xpZW50UXQqIGluc3BlY3RvckNsaWVudCkKICAgICA6
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdGVkV2ViUGFnZS0+ZC0+cGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JWaWV3LT5wYWdlKCktPmQtPnBhZ2UpIAog
ICAgICwgbV9pbnNwZWN0ZWRXZWJQYWdlKGluc3BlY3RlZFdlYlBhZ2UpCiAgICAgLCBtX2luc3Bl
Y3RvclZpZXcoaW5zcGVjdG9yVmlldykKICAgICAsIG1fZGVzdHJveWluZ0luc3BlY3RvclZpZXco
ZmFsc2UpCisgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCiB7CiB9CiAK
QEAgLTIyMyw2ICsyNTcsOCBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6OmNsb3Nl
V2luZG93KCkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIG1faW5zcGVjdGVkV2ViUGFnZS0+
ZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKICNlbmRpZgor
ICAgIG1faW5zcGVjdG9yQ2xpZW50LT5yZWxlYXNlRnJvbnRlbmRQYWdlKCk7CisKICAgICAvLyBD
bGVhciBwb2ludGVyIGJlZm9yZSBkZWxldGluZyBXZWJWaWV3IHRvIGF2b2lkIHJlY3Vyc2l2ZSBj
YWxscyB0byBpdHMgZGVzdHJ1Y3Rvci4KICAgICBkZWxldGUgbV9pbnNwZWN0b3JWaWV3LnJlbGVh
c2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgK
aW5kZXggNGJlYWRhYi4uYzk5NmY1NSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFF0LmgKQEAgLTU4LDEzICs1OCwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2YWx1ZSk7
CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCByZWxlYXNlRnJvbnRlbmRQYWdlKCk7CisKIHBy
aXZhdGU6CiAgICAgUVdlYlBhZ2UqIG1faW5zcGVjdGVkV2ViUGFnZTsKKyAgICBRV2ViUGFnZSog
bV9mcm9udGVuZFdlYlBhZ2U7CiB9OwogCiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0
IDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwgewogcHVibGljOgotICAgIElu
c3BlY3RvckZyb250ZW5kQ2xpZW50UXQoUVdlYlBhZ2UqIGluc3BlY3RlZFdlYlBhZ2UsIFBhc3NP
d25QdHI8UVdlYlZpZXc+IGluc3BlY3RvclZpZXcpOworICAgIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50UXQoUVdlYlBhZ2UqIGluc3BlY3RlZFdlYlBhZ2UsIFBhc3NPd25QdHI8UVdlYlZpZXc+IGlu
c3BlY3RvclZpZXcsIEluc3BlY3RvckNsaWVudFF0KiBpbnNwZWN0b3JDbGllbnQpOwogCiAgICAg
dmlydHVhbCB2b2lkIGZyb250ZW5kTG9hZGVkKCk7CiAKQEAgLTg4LDYgKzkzLDcgQEAgcHJpdmF0
ZToKICAgICBPd25QdHI8UVdlYlZpZXc+IG1faW5zcGVjdG9yVmlldzsKICAgICBRU3RyaW5nIG1f
aW5zcGVjdGVkVVJMOwogICAgIGJvb2wgbV9kZXN0cm95aW5nSW5zcGVjdG9yVmlldzsKKyAgICBJ
bnNwZWN0b3JDbGllbnRRdCogbV9pbnNwZWN0b3JDbGllbnQ7CiB9OwogfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDcwNGJj
YjAuLjNhMDRjNTkgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktp
dC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9u
b3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFBhdmVs
IEZlbGRtYW4uCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBPbiB0aGUgd2F5IHRvIFJlbW90ZSBE
ZWJ1Z2dpbmcgd2Ugd2FudCB0byB0cmFuc2ZlciBkb20vdGltZWxpbmUvZXRjCisgICAgICAgIGRh
dGEgZnJvbSBpbnNwZWN0ZWQgcGFnZSB0byBXZWJJbnNwZWN0b3IgYXMgSlNPTiBzdHJpbmcgdmlh
IGh0dHAuIFRoZSBuYXRpdmUKKyAgICAgICAgc2VyaWFsaXphdGlvbiB0byBKU09OIHN0cmluZyBp
cyBzdXBwb3J0ZWQgYnkgSW5zcGVjdG9yVmFsdWUncyBjbGFzc2VzLiBUaGlzIHBhdGNoCisgICAg
ICAgIGhhcyB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc2VuZE1lc3NhZ2VUb0Zyb250ZW5kIGZ1bmN0
aW9uLiBXZWJLaXQgdmVyc2lvbiBvZiBpdCBzdGlsbAorICAgICAgICB1c2VzIFNjcmlwdEZ1bmN0
aW9uQ2FsbCBhbmQgd2lsbCBiZSBzd2l0Y2hlZCB0byBhbm90aGVyIHRyYW5zcG9ydCBhIGxpdHRs
ZSBiaXQgbGF0ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDEzNAorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KToK
KyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6fldlYkluc3BlY3RvckNsaWVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisKIDIwMTAtMDYtMDkgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MDg4OS4KZGlmZiAtLWdpdCBhL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCAzYzI2M2U1Li4zNGZiODI3IDEwMDY0NAot
LS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysr
IGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCkBAIC02
OSw2ICs2OSw3IEBAIHN0YXRpYyBDRkJ1bmRsZVJlZiBnZXRXZWJLaXRCdW5kbGUoKQogCiBXZWJJ
bnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IDogbV9pbnNwZWN0ZWRXZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX2Zyb250ZW5kUGFnZSgwKQog
ewogICAgIEFTU0VSVChtX2luc3BlY3RlZFdlYlZpZXcpOwogICAgIG1faW5zcGVjdGVkV2ViVmll
dy0+dmlld1dpbmRvdygoT0xFX0hBTkRMRSopJm1faW5zcGVjdGVkV2ViVmlld0h3bmQpOwpAQCAt
NzYsNiArNzcsNyBAQCBXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNsaWVudChXZWJW
aWV3KiB3ZWJWaWV3KQogCiBXZWJJbnNwZWN0b3JDbGllbnQ6On5XZWJJbnNwZWN0b3JDbGllbnQo
KQogeworICAgIG1fZnJvbnRlbmRQYWdlID0gMDsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGll
bnQ6Omluc3BlY3RvckRlc3Ryb3llZCgpCkBAIC0xNzIsOCArMTc0LDkgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb24KICAgICBpZiAoRkFJTEVEKGZyb250ZW5kV2ViVmlldy0+dG9wTGV2ZWxGcmFt
ZSgpLT5sb2FkUmVxdWVzdChyZXF1ZXN0LmdldCgpKSkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFBhZ2UqIHBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7Ci0gICAgcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChuZXcgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQobV9pbnNwZWN0ZWRXZWJWaWV3LCBtX2luc3BlY3RlZFdlYlZp
ZXdId25kLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmlldywgZnJvbnRlbmRXZWJWaWV3SHdu
ZCwgdGhpcykpOworICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0
KCkpOworICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBmcm9udGVuZENsaWVudCA9IG5l
dyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVj
dGVkV2ViVmlld0h3bmQsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdl
YlZpZXdId25kLCB0aGlzKTsKKyAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChmcm9udGVuZENsaWVudCk7CiAgICAgbV9m
cm9udGVuZEh3bmQgPSBmcm9udGVuZEh3bmQ7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDY0NzczYTUuLjE3YThkOTkgMTAwNjQ0
Ci0tLSBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysr
IGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtMzcs
NiArMzcsMTIgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d2luZG93cy5o
PgogCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2U7CisKK30KKwogY2xhc3MgV2Vi
Tm9kZUhpZ2hsaWdodDsKIGNsYXNzIFdlYlZpZXc7CiAKQEAgLTU1LDEzICs2MSwyMSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJp
bmcmIGtleSwgV2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3Jl
U2V0dGluZyhjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwgY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiB2YWx1ZSk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYpOworCiAgICAgdm9pZCB1cGRhdGVIaWdobGlnaHQoKTsKLSAgICB2
b2lkIGZyb250ZW5kQ2xvc2luZygpIHsgbV9mcm9udGVuZEh3bmQgPSAwOyB9CisgICAgdm9pZCBm
cm9udGVuZENsb3NpbmcoKQorICAgIHsKKyAgICAgICAgbV9mcm9udGVuZEh3bmQgPSAwOworICAg
ICAgICByZWxlYXNlRnJvbnRlbmRQYWdlKCk7CisgICAgfQogCisgICAgdm9pZCByZWxlYXNlRnJv
bnRlbmRQYWdlKCk7CiBwcml2YXRlOgogICAgIH5XZWJJbnNwZWN0b3JDbGllbnQoKTsKIAogICAg
IFdlYlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKKyAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250
ZW5kUGFnZTsKICAgICBIV05EIG1faW5zcGVjdGVkV2ViVmlld0h3bmQ7CiAgICAgSFdORCBtX2Zy
b250ZW5kSHduZDsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3d4L0NoYW5nZUxvZyBiL1dlYktpdC93
eC9DaGFuZ2VMb2cKaW5kZXggNjNhM2VkMC4uODI1YjZlYSAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4
L0NoYW5nZUxvZworKysgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBP
biB0aGUgd2F5IHRvIFJlbW90ZSBEZWJ1Z2dpbmcgd2Ugd2FudCB0byB0cmFuc2ZlciBkb20vdGlt
ZWxpbmUvZXRjCisgICAgICAgIGRhdGEgZnJvbSBpbnNwZWN0ZWQgcGFnZSB0byBXZWJJbnNwZWN0
b3IgYXMgSlNPTiBzdHJpbmcgdmlhIGh0dHAuIFRoZSBuYXRpdmUKKyAgICAgICAgc2VyaWFsaXph
dGlvbiB0byBKU09OIHN0cmluZyBpcyBzdXBwb3J0ZWQgYnkgSW5zcGVjdG9yVmFsdWUncyBjbGFz
c2VzLiBUaGlzIHBhdGNoCisgICAgICAgIGhhcyB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc2VuZE1l
c3NhZ2VUb0Zyb250ZW5kIGZ1bmN0aW9uLiBXZWJLaXQgdmVyc2lvbiBvZiBpdCBzdGlsbAorICAg
ICAgICB1c2VzIFNjcmlwdEZ1bmN0aW9uQ2FsbCBhbmQgd2lsbCBiZSBzd2l0Y2hlZCB0byBhbm90
aGVyIHRyYW5zcG9ydCBhIGxpdHRsZSBiaXQgbGF0ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViS2l0U3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnRXeDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFd4Lmg6CisKIDIwMTAtMDYtMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2
MDg4OS4KZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFd4LmNwcCBiL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcApp
bmRleCA1ZGM5YWM3Li5jOTQ5ZDc3IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50V3guY3BwCkBAIC03Miw0ICs3MiwxMCBAQCB2b2lkIEluc3BlY3RvckNsaWVu
dFd4OjpzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgc2V0dGlu
ZykKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEluc3BlY3RvckNsaWVudFd4Ojpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmggYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRXeC5oCmluZGV4IDc2NzVkYzEuLjY5OGEwZjUgMTAwNjQ0Ci0tLSBh
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgKKysrIGIvV2ViS2l0
L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaApAQCAtNDgsNiArNDgsOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYg
a2V5LCBTdHJpbmcqIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKworICAgIHZpcnR1YWwgYm9vbCBz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58454</attachid>
            <date>2010-06-11 01:35:18 -0700</date>
            <delta_ts>2010-06-11 16:00:52 -0700</delta_ts>
            <desc>[patch] next iteration.</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>42349</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjNhMDFjZS4uMTdkNDczOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25v
dnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBPbiB0aGUgd2F5IHRvIFJlbW90ZSBE
ZWJ1Z2dpbmcgd2Ugd2FudCB0byB0cmFuc2ZlciBkb20vdGltZWxpbmUvZXRjCisgICAgICAgIGRh
dGEgZnJvbSBpbnNwZWN0ZWQgcGFnZSB0byBXZWJJbnNwZWN0b3IgYXMgSlNPTiBzdHJpbmcgdmlh
IGh0dHAuIFRoZSBuYXRpdmUKKyAgICAgICAgc2VyaWFsaXphdGlvbiB0byBKU09OIHN0cmluZyBp
cyBzdXBwb3J0ZWQgYnkgSW5zcGVjdG9yVmFsdWUncyBjbGFzc2VzLiBUaGlzIHBhdGNoCisgICAg
ICAgIGhhcyB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc2VuZE1lc3NhZ2VUb0Zyb250ZW5kIGZ1bmN0
aW9uLiBXZWJLaXQgdmVyc2lvbiBvZiBpdCBzdGlsbAorICAgICAgICB1c2VzIFNjcmlwdEZ1bmN0
aW9uQ2FsbCBhbmQgd2lsbCBiZSBzd2l0Y2hlZCB0byBhbm90aGVyIHRyYW5zcG9ydCBhIGxpdHRs
ZSBiaXQgbGF0ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDEzNAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
OjpJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZnJv
bnRlbmRMb2FkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT2JqZWN0Ojp3cml0ZUpTT04pOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmRpc3BhdGNoTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVu
dHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQpOgorCiAyMDEwLTA2LTEwICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5oCmluZGV4IDg0MWMxNWUuLjJjZTNhMDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogdmFsdWUpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIHZhbHVlKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBiZjcy
NTcyLi42MzIzY2NiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cApAQCAtNDI1LDExICs0MjUsMTAgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRTZWFy
Y2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6c2V0RnJvbnRlbmQoUGFzc093blB0cjxJbnNwZWN0b3JGcm9udGVuZD4gZnJvbnRl
bmQpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZChjb25zdCBTY3Jp
cHRPYmplY3QmIHdlYkluc3BlY3RvcikKIHsKLSAgICBBU1NFUlQoZnJvbnRlbmQpOwogICAgIG1f
b3BlbmluZ0Zyb250ZW5kID0gZmFsc2U7Ci0gICAgbV9mcm9udGVuZCA9IGZyb250ZW5kOworICAg
IG1fZnJvbnRlbmQgPSBuZXcgSW5zcGVjdG9yRnJvbnRlbmQod2ViSW5zcGVjdG9yLCBtX2NsaWVu
dCk7CiAgICAgcmVsZWFzZURPTUFnZW50KCk7CiAgICAgbV9kb21BZ2VudCA9IEluc3BlY3RvckRP
TUFnZW50OjpjcmVhdGUobV9jc3NTdG9yZS5nZXQoKSwgbV9mcm9udGVuZC5nZXQoKSk7CiAgICAg
aWYgKG1fdGltZWxpbmVBZ2VudCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aAppbmRleCBiZGEyN2FmLi4xNmUwNTlhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCkBAIC0xMzQsNiArMTM0LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNob3coKTsK
ICAgICB2b2lkIHNob3dQYW5lbChTcGVjaWFsUGFuZWxzKTsKICAgICB2b2lkIGNsb3NlKCk7CisK
KyAgICAvLyBXZSBhcmUgaW4gdHJhbnNpdGlvbiBmcm9tIEpTIHRyYW5zcG9ydCB2aWEgd2ViSW5z
cGVjdG9yIHRvIG5hdGl2ZQorICAgIC8vIHRyYW5zcG9ydCB2aWEgSW5zcGVjdG9yQ2xpZW50LiBB
ZnRlciBtaWdyYXRpb24sIHdlYkluc3BlY3RvciBwYXJhbWV0ZXIgc2hvdWxkCisgICAgLy8gYmUg
cmVtb3ZlZC4KKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChjb25zdCBTY3JpcHRPYmplY3QmIHdl
Ykluc3BlY3Rvcik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoKTsKIAogICAgIHZvaWQg
YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlwZSwgTWVzc2FnZUxl
dmVsLCBTY3JpcHRDYWxsU3RhY2sqKTsKQEAgLTE1MSw3ICsxNTYsNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbnNwZWN0ZWRXaW5kb3dTY3JpcHRPYmplY3RDbGVhcmVkKEZyYW1lKik7CiAKICAgICBi
b29sIHdpbmRvd1Zpc2libGUoKTsKLSAgICB2b2lkIHNldEZyb250ZW5kKFBhc3NPd25QdHI8SW5z
cGVjdG9yRnJvbnRlbmQ+KTsKIAogICAgIHZvaWQgZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRl
ciopOwogICAgIHZvaWQgZnJhbWVEZXRhY2hlZEZyb21QYXJlbnQoRnJhbWUqKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCBhMzYxODUxLi41ZGE5MGJkIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUg
IkluamVjdGVkU2NyaXB0SG9zdC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXb3JrZXJS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTQ5LDggKzUwLDkgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1JbnNwZWN0b3JGcm9udGVuZDo6SW5zcGVjdG9yRnJvbnRlbmQoU2Ny
aXB0T2JqZWN0IHdlYkluc3BlY3RvcikKK0luc3BlY3RvckZyb250ZW5kOjpJbnNwZWN0b3JGcm9u
dGVuZChTY3JpcHRPYmplY3Qgd2ViSW5zcGVjdG9yLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3Rv
ckNsaWVudCkKICAgICA6IG1fd2ViSW5zcGVjdG9yKHdlYkluc3BlY3RvcikKKyAgICAsIG1faW5z
cGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kLmgKaW5kZXggNjlkNGM0Zi4uZWI4NmQxNSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIEluc3BlY3RvckZy
b250ZW5kX2gKICNkZWZpbmUgSW5zcGVjdG9yRnJvbnRlbmRfaAogCisjaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJyYXkuaCIKICNpbmNsdWRlICJTY3JpcHRP
YmplY3QuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgpAQCAtMzksMTYgKzQwLDIwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDb25zb2xlTWVzc2FnZTsKICAgICBjbGFzcyBE
YXRhYmFzZTsKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiAg
ICAgY2xhc3MgSW5zcGVjdG9yUmVzb3VyY2U7CisgICAgY2xhc3MgSW5zcGVjdG9yV29ya2VyUmVz
b3VyY2U7CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBTY3JpcHRTdHJpbmc7CiAgICAgY2xh
c3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogICAgIGNsYXNzIFN0b3JhZ2U7Ci0gICAgY2xhc3Mg
SW5zcGVjdG9yV29ya2VyUmVzb3VyY2U7CiAKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZCA6
IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbnNwZWN0b3JGcm9u
dGVuZChTY3JpcHRPYmplY3Qgd2ViSW5zcGVjdG9yKTsKKyAgICAgICAgLy8gV2UgYXJlIGluIHRy
YW5zaXRpb24gZnJvbSBKUyB0cmFuc3BvcnQgdmlhIHdlYkluc3BlY3RvciB0byBuYXRpdmUKKyAg
ICAgICAgLy8gdHJhbnNwb3J0IHZpYSBpbnNwZWN0b3JDbGllbnQuIEFmdGVyIG1pZ3JhdGlvbiwg
d2ViSW5zcGVjdG9yIHBhcmFtZXRlciBzaG91bGQKKyAgICAgICAgLy8gYmUgcmVtb3ZlZC4KKyAg
ICAgICAgSW5zcGVjdG9yRnJvbnRlbmQoU2NyaXB0T2JqZWN0IHdlYkluc3BlY3RvciwgSW5zcGVj
dG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpOwogICAgICAgICB+SW5zcGVjdG9yRnJvbnRlbmQo
KTsKIAogICAgICAgICB2b2lkIGNsb3NlKCk7CkBAIC0xNzEsNiArMTc2LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY2FsbFNpbXBsZUZ1bmN0aW9u
KGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lKTsKICAgICAgICAgU2NyaXB0T2JqZWN0IG1fd2Vi
SW5zcGVjdG9yOworICAgICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVjdG9yQ2xpZW50Owog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggMThjNTJkYS4uMTg4NTY2
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpmcm9udGVuZExvYWRlZCgpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0RnJvbnRl
bmQobmV3IEluc3BlY3RvckZyb250ZW5kKHdlYkluc3BlY3Rvck9iaikpOworICAgIG1faW5zcGVj
dG9yQ29udHJvbGxlci0+Y29ubmVjdEZyb250ZW5kKHdlYkluc3BlY3Rvck9iaik7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVxdWVzdEF0dGFjaFdpbmRvdygpCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAppbmRleCAyMzYxMmU2Li41YzdkMGM4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKQEAgLTYyNSw3ICs2MjUsNyBAQCB2
b2lkIEluc3BlY3Rvck9iamVjdDo6d3JpdGVKU09OKFZlY3RvcjxVQ2hhcj4qIG91dHB1dCkgY29u
c3QKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3JkZXIuc2l6ZSgpOyArK2kpIHsKICAg
ICAgICAgRGljdGlvbmFyeTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGEuZmluZChtX29yZGVy
W2ldKTsKICAgICAgICAgQVNTRVJUKGl0ICE9IG1fZGF0YS5lbmQoKSk7Ci0gICAgICAgIGlmIChp
dCAhPSBtX2RhdGEuYmVnaW4oKSkKKyAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBvdXRwdXQt
PmFwcGVuZCgnLCcpOwogICAgICAgICBkb3VibGVRdW90ZVN0cmluZyhpdC0+Zmlyc3QsIG91dHB1
dCk7CiAgICAgICAgIG91dHB1dC0+YXBwZW5kKCc6Jyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcwppbmRleCA4YTc4Y2QyLi44N2M0YzczIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTU3Miw2ICs1NzIsMTMgQEAgV2ViSW5zcGVj
dG9yLmRpc3BhdGNoID0gZnVuY3Rpb24oKSB7CiAgICAgc2V0VGltZW91dChkZWxheURpc3BhdGNo
LCAwKTsKIH0KIAorV2ViSW5zcGVjdG9yLmRpc3BhdGNoTWVzc2FnZUZyb21CYWNrZW5kID0gZnVu
Y3Rpb24oYXJndW1lbnRzKQoreworICAgIHZhciBtZXRob2ROYW1lID0gYXJndW1lbnRzLnNoaWZ0
KCk7CisgICAgV2ViSW5zcGVjdG9yW21ldGhvZE5hbWVdLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
Cit9CisKKwogV2ViSW5zcGVjdG9yLndpbmRvd1Jlc2l6ZSA9IGZ1bmN0aW9uKGV2ZW50KQogewog
ICAgIGlmICh0aGlzLmN1cnJlbnRQYW5lbCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oIGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggYzYzMDkz
MS4uZTQyZWUxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysr
IGIvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKQEAgLTQ4Niw2ICs0ODYsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYsIFN0
cmluZyopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L0NoYW5nZUxvZyBiL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTI4MmYwOC4uMmFhODc2
NyAxMDA2NDQKLS0tIGEvV2ViS2l0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlYkluc3BlY3RvcjogT24gdGhlIHdheSB0byBSZW1vdGUgRGVidWdnaW5nIHdlIHdhbnQg
dG8gdHJhbnNmZXIgZG9tL3RpbWVsaW5lL2V0YworICAgICAgICBkYXRhIGZyb20gaW5zcGVjdGVk
IHBhZ2UgdG8gV2ViSW5zcGVjdG9yIGFzIEpTT04gc3RyaW5nIHZpYSBodHRwLiBUaGUgbmF0aXZl
CisgICAgICAgIHNlcmlhbGl6YXRpb24gdG8gSlNPTiBzdHJpbmcgaXMgc3VwcG9ydGVkIGJ5IElu
c3BlY3RvclZhbHVlJ3MgY2xhc3Nlcy4gVGhpcyBwYXRjaAorICAgICAgICBoYXMgdGhlIGltcGxl
bWVudGF0aW9uIG9mIHNlbmRNZXNzYWdlVG9Gcm9udGVuZCBmdW5jdGlvbi4gV2ViS2l0IHZlcnNp
b24gb2YgaXQgc3RpbGwKKyAgICAgICAgdXNlcyBTY3JpcHRGdW5jdGlvbkNhbGwgYW5kIHdpbGwg
YmUgc3dpdGNoZWQgdG8gYW5vdGhlciB0cmFuc3BvcnQgYSBsaXR0bGUgYml0IGxhdGVyLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAg
ICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50RWZsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgor
ICAgICAgICAqIGVmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaDoKKwogMjAx
MC0wNi0wOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjYwODg5LgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2NmL0NoYW5nZUxvZyBiL1dlYktpdC9jZi9DaGFuZ2VMb2cKaW5kZXggNDA5OTJlNi4uYzI3NDU3
YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2YvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lz
bG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFdlYkluc3BlY3RvcjogT24gdGhlIHdheSB0byBSZW1vdGUgRGVidWdnaW5nIHdl
IHdhbnQgdG8gdHJhbnNmZXIgZG9tL3RpbWVsaW5lL2V0YworICAgICAgICBkYXRhIGZyb20gaW5z
cGVjdGVkIHBhZ2UgdG8gV2ViSW5zcGVjdG9yIGFzIEpTT04gc3RyaW5nIHZpYSBodHRwLiBUaGUg
bmF0aXZlCisgICAgICAgIHNlcmlhbGl6YXRpb24gdG8gSlNPTiBzdHJpbmcgaXMgc3VwcG9ydGVk
IGJ5IEluc3BlY3RvclZhbHVlJ3MgY2xhc3Nlcy4gVGhpcyBwYXRjaAorICAgICAgICBoYXMgdGhl
IGltcGxlbWVudGF0aW9uIG9mIHNlbmRNZXNzYWdlVG9Gcm9udGVuZCBmdW5jdGlvbi4gV2ViS2l0
IHZlcnNpb24gb2YgaXQgc3RpbGwKKyAgICAgICAgdXNlcyBTY3JpcHRGdW5jdGlvbkNhbGwgYW5k
IHdpbGwgYmUgc3dpdGNoZWQgdG8gYW5vdGhlciB0cmFuc3BvcnQgYSBsaXR0bGUgYml0IGxhdGVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKKyAg
ICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kUGFnZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisKIDIwMTAtMDYt
MDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MDg4OS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jZi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9XZWJLaXQvY2YvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDBkNjZiODMuLmRjNWExODYg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRD
Ri5jcHAKKysrIGIvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENG
LmNwcApAQCAtNTMsNiArNTMsOCBAQAogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KIAorI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+CiAKICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC05MiwzICs5NCwyOCBAQCB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNl
dHRpbmcpCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShBZG9wdENG
LCBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpKTsKICAgICBDRlByZWZlcmVuY2VzU2V0QXBw
VmFsdWUocHJlZmVyZW5jZXNLZXkuZ2V0KCksIG9iamVjdFRvU3RvcmUuZ2V0KCksIGtDRlByZWZl
cmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKIH0KKwordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
OnJlbGVhc2VGcm9udGVuZFBhZ2UoKQoreworICAgIG1fZnJvbnRlbmRQYWdlID0gMDsKK30KKwor
Ym9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCit7CisgICAgaWYgKCFtX2Zyb250ZW5kUGFnZSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgRnJhbWUqIGZyYW1lID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgp
OworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNjcmlwdENv
bnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7CisgICAgaWYgKCFz
Y3JpcHRDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBTdHJpbmcgZGlz
cGF0Y2hUb0Zyb250ZW5kKCJXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNzYWdlRnJvbUJhY2tlbmQo
Iik7CisgICAgZGlzcGF0Y2hUb0Zyb250ZW5kICs9IG1lc3NhZ2U7CisgICAgZGlzcGF0Y2hUb0Zy
b250ZW5kICs9ICIpOyI7CisgICAgc2NyaXB0Q29udHJvbGxlci0+ZXhlY3V0ZVNjcmlwdChkaXNw
YXRjaFRvRnJvbnRlbmQpOworICAgIHJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYWQx
NGY0NS4uMGIwOTIxYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDYtMDcg
IElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogT24gdGhlIHdh
eSB0byBSZW1vdGUgRGVidWdnaW5nIHdlIHdhbnQgdG8gdHJhbnNmZXIgZG9tL3RpbWVsaW5lL2V0
YworICAgICAgICBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2UgdG8gV2ViSW5zcGVjdG9yIGFzIEpT
T04gc3RyaW5nIHZpYSBodHRwLiBUaGUgbmF0aXZlCisgICAgICAgIHNlcmlhbGl6YXRpb24gdG8g
SlNPTiBzdHJpbmcgaXMgc3VwcG9ydGVkIGJ5IEluc3BlY3RvclZhbHVlJ3MgY2xhc3Nlcy4gVGhp
cyBwYXRjaAorICAgICAgICBoYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNlbmRNZXNzYWdlVG9G
cm9udGVuZCBmdW5jdGlvbi4gV2ViS2l0IHZlcnNpb24gb2YgaXQgc3RpbGwKKyAgICAgICAgdXNl
cyBTY3JpcHRGdW5jdGlvbkNhbGwgYW5kIHdpbGwgYmUgc3dpdGNoZWQgdG8gYW5vdGhlciB0cmFu
c3BvcnQgYSBsaXR0bGUgYml0IGxhdGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50SW1wbDo6c2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oOgorICAg
ICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkRldlRvb2xzQWdlbnRJbXBsOjpzZXRJbnNwZWN0b3JGcm9udGVuZFByb3h5VG9JbnNwZWN0b3JD
b250cm9sbGVyKToKKwogMjAxMC0wNi0xMCAgTWlrZSBCZWxzaGUgIDxtYmVsc2hlQGdvb2dsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4KZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCmluZGV4IDIyYjUxNWYuLjkxZDEwZDUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKKysrIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcApAQCAtMzUsNiArMzUs
OCBAQAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBsLmgiCisj
aW5jbHVkZSAiV2ViRGV2VG9vbHNNZXNzYWdlRGF0YS5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIK
ICNpbmNsdWRlICJXZWJVUkwuaCIKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCkBAIC0xMDIs
NCArMTA0LDIwIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6c3RvcmVTZXR0aW5nKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1faW5zcGVjdGVkV2ViVmll
dy0+c2V0SW5zcGVjdG9yU2V0dGluZyhrZXksIHZhbHVlKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JD
bGllbnRJbXBsOjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBt
ZXNzYWdlKQoreworICAgIFdlYkRldlRvb2xzQWdlbnRJbXBsKiBkZXZUb29sc0FnZW50ID0gc3Rh
dGljX2Nhc3Q8V2ViRGV2VG9vbHNBZ2VudEltcGwqPihtX2luc3BlY3RlZFdlYlZpZXctPmRldlRv
b2xzQWdlbnQoKSk7CisgICAgaWYgKCFkZXZUb29sc0FnZW50KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBhcmd1bWVudHMoc2l6ZV90KDEpKTsKKyAg
ICBhcmd1bWVudHNbMF0gPSBtZXNzYWdlOworICAgIFdlYkRldlRvb2xzTWVzc2FnZURhdGEgZGF0
YTsKKyAgICBkYXRhLmNsYXNzTmFtZSA9ICJUb29sc0FnZW50RGVsZWdhdGUiOworICAgIGRhdGEu
bWV0aG9kTmFtZSA9ICJkaXNwYXRjaE9uQ2xpZW50IjsKKyAgICBkYXRhLmFyZ3VtZW50cy5zd2Fw
KGFyZ3VtZW50cyk7CisgICAgZGV2VG9vbHNBZ2VudC0+c2VuZFJwY01lc3NhZ2UoZGF0YSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAppbmRleCA3NDQ3ZDBjLi5mNDk5NGUzIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaApAQCAtMzYsNiArMzYsOCBA
QAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIAogY2xhc3MgSW5z
cGVjdG9yQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQgewpAQCAt
NDYsMTUgKzQ4LDE0IEBAIHB1YmxpYzoKICAgICAvLyBJbnNwZWN0b3JDbGllbnQgbWV0aG9kczoK
ICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAgICAgdmlydHVhbCB2b2lk
IG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CisK
ICAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0KFdlYkNvcmU6Ok5vZGUqKTsKICAgICB2aXJ0dWFs
IHZvaWQgaGlkZUhpZ2hsaWdodCgpOwotICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmco
Ci0gICAgICAgIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LAotICAgICAgICBXZWJDb3JlOjpT
dHJpbmcqIHZhbHVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKAotICAgICAgICBj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIGtleSwKLSAgICAgICAgY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiB2YWx1ZSk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYga2V5LCBXZWJDb3JlOjpTdHJpbmcqIHZhbHVlKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcmVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmIHZhbHVlKTsKKworICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRl
bmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiBwcml2YXRlOgogCiAgICAgLy8gVGhlIFdlYlZp
ZXdJbXBsIG9mIHRoZSBwYWdlIGJlaW5nIGluc3BlY3RlZDsgZ2V0cyBwYXNzZWQgdG8gdGhlIGNv
bnN0cnVjdG9yCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdl
bnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3Bw
CmluZGV4IDdjNTU5YzkuLmM0YmJiZmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2
VG9vbHNBZ2VudEltcGwuY3BwCkBAIC00NzUsOCArNDc1LDcgQEAgdm9pZCBXZWJEZXZUb29sc0Fn
ZW50SW1wbDo6c2V0SW5zcGVjdG9yRnJvbnRlbmRQcm94eVRvSW5zcGVjdG9yQ29udHJvbGxlcigp
CiAgICAgU2NyaXB0U3RhdGUqIHN0YXRlID0gU2NyaXB0U3RhdGU6OmZvckNvbnRleHQoCiAgICAg
ICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhtX3V0aWxpdHlDb250ZXh0KSk7CiAgICAg
SW5zcGVjdG9yQ29udHJvbGxlciogaWMgPSBpbnNwZWN0b3JDb250cm9sbGVyKCk7Ci0gICAgaWMt
PnNldEZyb250ZW5kKG5ldyBJbnNwZWN0b3JGcm9udGVuZCgKLSAgICAgICAgU2NyaXB0T2JqZWN0
KHN0YXRlLCBtX3V0aWxpdHlDb250ZXh0LT5HbG9iYWwoKSkpKTsKKyAgICBpYy0+Y29ubmVjdEZy
b250ZW5kKFNjcmlwdE9iamVjdChzdGF0ZSwgbV91dGlsaXR5Q29udGV4dC0+R2xvYmFsKCkpKTsK
IH0KIAogdm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6c2V0QXB1QWdlbnRFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKZGlmZiAtLWdpdCBhL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50RWZsLmNwcCBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
RWZsLmNwcAppbmRleCA4ODkyZDdmLi4yZmE4NjBhIDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAKKysrIGIvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCkBAIC01OCw0ICs1OCwxMSBAQCB2b2lk
IEluc3BlY3RvckNsaWVudEVmbDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRF
Zmw6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGVs
ZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworCiB9CmRpZmYgLS1naXQgYS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oIGIvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaAppbmRleCAzMGM5Y2FmLi4xY2E2NDZk
IDEwMDY0NAotLS0gYS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVm
bC5oCisrKyBiL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgK
QEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0
dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisK
KyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpOwog
fTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0No
YW5nZUxvZwppbmRleCAyNDM2NTFmLi5jODc1NzM1IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0No
YW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEw
LTA2LTA3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IE9u
IHRoZSB3YXkgdG8gUmVtb3RlIERlYnVnZ2luZyB3ZSB3YW50IHRvIHRyYW5zZmVyIGRvbS90aW1l
bGluZS9ldGMKKyAgICAgICAgZGF0YSBmcm9tIGluc3BlY3RlZCBwYWdlIHRvIFdlYkluc3BlY3Rv
ciBhcyBKU09OIHN0cmluZyB2aWEgaHR0cC4gVGhlIG5hdGl2ZQorICAgICAgICBzZXJpYWxpemF0
aW9uIHRvIEpTT04gc3RyaW5nIGlzIHN1cHBvcnRlZCBieSBJbnNwZWN0b3JWYWx1ZSdzIGNsYXNz
ZXMuIFRoaXMgcGF0Y2gKKyAgICAgICAgaGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzZW5kTWVz
c2FnZVRvRnJvbnRlbmQgZnVuY3Rpb24uIFdlYktpdCB2ZXJzaW9uIG9mIGl0IHN0aWxsCisgICAg
ICAgIHVzZXMgU2NyaXB0RnVuY3Rpb25DYWxsIGFuZCB3aWxsIGJlIHN3aXRjaGVkIHRvIGFub3Ro
ZXIgdHJhbnNwb3J0IGEgbGl0dGxlIGJpdCBsYXRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMTM0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGll
bnQ6OnJlbGVhc2VGcm9udGVuZFBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGll
bnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50R3RrLmg6CisKIDIwMTAtMDYtMTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAgYi9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKaW5kZXggMzE3YTA1OC4u
NWU2OWMzMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50R3RrLmNwcApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckNsaWVudEd0ay5oIgogCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJ3ZWJraXR3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCiAjaW5j
bHVkZSAid2Via2l0cHJpdmF0ZS5oIgpAQCAtMzgsOCArMzksMTggQEAgc3RhdGljIHZvaWQgbm90
aWZ5V2ViVmlld0Rlc3Ryb3llZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBJbnNwZWN0b3JGcm9u
dGVuZENsaWUKIAogSW5zcGVjdG9yQ2xpZW50OjpJbnNwZWN0b3JDbGllbnQoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKICAgICA6IG1faW5zcGVjdGVkV2ViVmlldyh3ZWJWaWV3KQorICAgICwgbV9m
cm9udGVuZFBhZ2UoMCkKKyAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKIHt9CiAKK0luc3BlY3Rv
ckNsaWVudDo6fkluc3BlY3RvckNsaWVudCgpCit7CisgICAgaWYgKG1fZnJvbnRlbmRDbGllbnQp
IHsKKyAgICAgICAgbV9mcm9udGVuZENsaWVudC0+ZGlzY29ubmVjdEluc3BlY3RvckNsaWVudCgp
OworICAgICAgICBtX2Zyb250ZW5kQ2xpZW50ID0gMDsKKyAgICB9Cit9CisKIHZvaWQgSW5zcGVj
dG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQoKQogewogICAgIGRlbGV0ZSB0aGlzOwpAQCAt
ODAsOCArOTEsMTQgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVu
ZChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQogCiAgICAgZ3RrX3dpZGdldF9zaG93
KEdUS19XSURHRVQoaW5zcGVjdG9yV2ViVmlldykpOwogCi0gICAgUGFnZSogaW5zcGVjdG9yUGFn
ZSA9IGNvcmUoaW5zcGVjdG9yV2ViVmlldyk7Ci0gICAgaW5zcGVjdG9yUGFnZS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChuZXcgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQobV9pbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0b3JXZWJWaWV3LCB3ZWJJbnNw
ZWN0b3IsIGluc3BlY3RvclBhZ2UpKTsKKyAgICBtX2Zyb250ZW5kUGFnZSA9IGNvcmUoaW5zcGVj
dG9yV2ViVmlldyk7CisgICAgbV9mcm9udGVuZENsaWVudCA9IG5ldyBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChtX2luc3BlY3RlZFdlYlZpZXcsIGluc3BlY3RvcldlYlZpZXcsIHdlYkluc3BlY3Rv
ciwgbV9mcm9udGVuZFBhZ2UsIHRoaXMpOworICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCktPnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG1fZnJvbnRlbmRDbGllbnQp
OworfQorCit2b2lkIEluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kUGFnZSgpCit7Cisg
ICAgbV9mcm9udGVuZFBhZ2UgPSAwOwogfQogCiB2b2lkIEluc3BlY3RvckNsaWVudDo6aGlnaGxp
Z2h0KE5vZGUqIG5vZGUpCkBAIC0xMDQsMTQgKzEyMSwzNCBAQCB2b2lkIEluc3BlY3RvckNsaWVu
dDo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIGlmICghbV9mcm9u
dGVuZFBhZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEZyYW1lKiBmcmFtZSA9IG1f
ZnJvbnRlbmRQYWdlLT5tYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJh
bWUtPnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0Q29udHJvbGxlcikKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgU3RyaW5nIGRpc3BhdGNoVG9Gcm9udGVuZCgiV2ViSW5zcGVjdG9yLmRp
c3BhdGNoTWVzc2FnZVRvRnJvbnRlbmQoIik7CisgICAgZGlzcGF0Y2hUb0Zyb250ZW5kICs9IG1l
c3NhZ2U7CisgICAgZGlzcGF0Y2hUb0Zyb250ZW5kICs9ICIpOyI7CisgICAgc2NyaXB0Q29udHJv
bGxlci0+ZXhlY3V0ZVNjcmlwdChkaXNwYXRjaFRvRnJvbnRlbmQpOworICAgIHJldHVybiB0cnVl
OworfQogCiBib29sIGRlc3Ryb3llZCA9IFRSVUU7CiAKLUluc3BlY3RvckZyb250ZW5kQ2xpZW50
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJLaXRXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3
LCBXZWJLaXRXZWJWaWV3KiBpbnNwZWN0b3JXZWJWaWV3LCBXZWJLaXRXZWJJbnNwZWN0b3IqIHdl
Ykluc3BlY3RvciwgUGFnZSogaW5zcGVjdG9yUGFnZSkKK0luc3BlY3RvckZyb250ZW5kQ2xpZW50
OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJLaXRXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3
LCBXZWJLaXRXZWJWaWV3KiBpbnNwZWN0b3JXZWJWaWV3LCBXZWJLaXRXZWJJbnNwZWN0b3IqIHdl
Ykluc3BlY3RvciwgUGFnZSogaW5zcGVjdG9yUGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0
b3JDbGllbnQpCiAgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKGNvcmUoaW5zcGVj
dGVkV2ViVmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgaW5zcGVjdG9yUGFnZSkKICAgICAs
IG1faW5zcGVjdG9yV2ViVmlldyhpbnNwZWN0b3JXZWJWaWV3KQogICAgICwgbV9pbnNwZWN0ZWRX
ZWJWaWV3KGluc3BlY3RlZFdlYlZpZXcpCiAgICAgLCBtX3dlYkluc3BlY3Rvcih3ZWJJbnNwZWN0
b3IpCisgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCiB7CiAgICAgZ19z
aWduYWxfY29ubmVjdChtX2luc3BlY3RvcldlYlZpZXcsICJkZXN0cm95IiwKICAgICAgICAgICAg
ICAgICAgICAgIEdfQ0FMTEJBQ0sobm90aWZ5V2ViVmlld0Rlc3Ryb3llZCksIChncG9pbnRlcil0
aGlzKTsKQEAgLTExOSw2ICsxNTYsMTAgQEAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KFdlYktpdFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcKIAogSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6On5JbnNwZWN0b3JGcm9udGVuZENsaWVudCgpCiB7CisgICAg
aWYgKG1faW5zcGVjdG9yQ2xpZW50KSB7CisgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5kaXNj
b25uZWN0RnJvbnRlbmRDbGllbnQoKTsKKyAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSAwOwor
ICAgIH0KICAgICBBU1NFUlQoIW1fd2ViSW5zcGVjdG9yKTsKIH0KIApAQCAtMTM4LDYgKzE3OSw5
IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmRlc3Ryb3lJbnNwZWN0b3JXaW5kb3co
KQogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJJbnNwZWN0b3IsICJjbG9zZS13aW5kb3ci
LCAmaGFuZGxlZCk7CiAgICAgQVNTRVJUKGhhbmRsZWQpOwogCisgICAgaWYgKG1faW5zcGVjdG9y
Q2xpZW50KQorICAgICAgICBtX2luc3BlY3RvckNsaWVudC0+cmVsZWFzZUZyb250ZW5kUGFnZSgp
OworCiAgICAgLyogd2Ugc2hvdWxkIG5vdyBkaXNwb3NlIG91ciBvd24gcmVmZXJlbmNlICovCiAg
ICAgZ19vYmplY3RfdW5yZWYod2ViSW5zcGVjdG9yKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oCmluZGV4IGNkYjUzNzUuLmZjOWI2ZDggMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgK
KysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaApAQCAt
NDIsOSArNDIsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OworCiAgICAgY2xhc3MgSW5zcGVj
dG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCB7CiAgICAgcHVibGlj
OgogICAgICAgICBJbnNwZWN0b3JDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldyk7CisgICAg
ICAgIH5JbnNwZWN0b3JDbGllbnQoKTsKKworICAgICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVu
ZENsaWVudCgpIHsgbV9mcm9udGVuZENsaWVudCA9IDA7IH0KIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAKQEAgLTU2LDEzICs2MSwyMSBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIGtleSwgV2ViQ29yZTo6U3RyaW5nKiB2YWx1ZSk7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBrZXksIGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYgdmFsdWUpOwogCisgICAgICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisKKyAgICAgICAgdm9pZCByZWxl
YXNlRnJvbnRlbmRQYWdlKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXRXZWJWaWV3
KiBtX2luc3BlY3RlZFdlYlZpZXc7CisgICAgICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQ
YWdlOworICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9mcm9udGVuZENsaWVudDsK
ICAgICB9OwogCiAgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCB7CiAgICAgcHVibGljOgotICAgICAg
ICBJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJLaXRXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3
LCBXZWJLaXRXZWJWaWV3KiBpbnNwZWN0b3JXZWJWaWV3LCBXZWJLaXRXZWJJbnNwZWN0b3IqIHdl
Ykluc3BlY3RvciwgV2ViQ29yZTo6UGFnZSogaW5zcGVjdG9yUGFnZSk7CisgICAgICAgIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KFdlYktpdFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYktp
dFdlYlZpZXcqIGluc3BlY3RvcldlYlZpZXcsIFdlYktpdFdlYkluc3BlY3Rvciogd2ViSW5zcGVj
dG9yLCBXZWJDb3JlOjpQYWdlKiBpbnNwZWN0b3JQYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3Bl
Y3RvckNsaWVudCk7CisKKyAgICAgICAgdm9pZCBkaXNjb25uZWN0SW5zcGVjdG9yQ2xpZW50KCkg
eyBtX2luc3BlY3RvckNsaWVudCA9IDA7IH0KIAogICAgICAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0
b3JXaW5kb3coKTsKIApAQCAtODYsNiArOTksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAg
ICAgV2ViS2l0V2ViVmlldyogbV9pbnNwZWN0b3JXZWJWaWV3OwogICAgICAgICBXZWJLaXRXZWJW
aWV3KiBtX2luc3BlY3RlZFdlYlZpZXc7CiAgICAgICAgIFdlYktpdFdlYkluc3BlY3RvciogbV93
ZWJJbnNwZWN0b3I7CisgICAgICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7
CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2hhaWt1L0NoYW5nZUxvZyBiL1dlYktp
dC9oYWlrdS9DaGFuZ2VMb2cKaW5kZXggY2ViZmNkNC4uNjFlZDcwMCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2hhaWt1L0NoYW5nZUxvZworKysgYi9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
Ykluc3BlY3RvcjogT24gdGhlIHdheSB0byBSZW1vdGUgRGVidWdnaW5nIHdlIHdhbnQgdG8gdHJh
bnNmZXIgZG9tL3RpbWVsaW5lL2V0YworICAgICAgICBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2Ug
dG8gV2ViSW5zcGVjdG9yIGFzIEpTT04gc3RyaW5nIHZpYSBodHRwLiBUaGUgbmF0aXZlCisgICAg
ICAgIHNlcmlhbGl6YXRpb24gdG8gSlNPTiBzdHJpbmcgaXMgc3VwcG9ydGVkIGJ5IEluc3BlY3Rv
clZhbHVlJ3MgY2xhc3Nlcy4gVGhpcyBwYXRjaAorICAgICAgICBoYXMgdGhlIGltcGxlbWVudGF0
aW9uIG9mIHNlbmRNZXNzYWdlVG9Gcm9udGVuZCBmdW5jdGlvbi4gV2ViS2l0IHZlcnNpb24gb2Yg
aXQgc3RpbGwKKyAgICAgICAgdXNlcyBTY3JpcHRGdW5jdGlvbkNhbGwgYW5kIHdpbGwgYmUgc3dp
dGNoZWQgdG8gYW5vdGhlciB0cmFuc3BvcnQgYSBsaXR0bGUgYml0IGxhdGVyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNsaWVudEhhaWt1OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1Lmg6CisKIDIwMTAtMDYtMDkg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MDg4OS4KZGlmZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlrdS5jcHAgYi9XZWJLaXQvaGFpa3UvV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50SGFpa3UuY3BwCmluZGV4IDU5MjMyZTkuLjg4M2Zj
ZDMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRIYWlrdS5jcHAKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEhhaWt1LmNwcApAQCAtNjcsNSArNjcsMTEgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRIYWlr
dTo6c3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50SGFpa3U6OnNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRIYWlr
dS5oIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmgK
aW5kZXggZDQyNzY3MC4uMzgyOGQwNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2hhaWt1L1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmgKKysrIGIvV2ViS2l0L2hhaWt1L1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEhhaWt1LmgKQEAgLTQ5LDYgKzQ5LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJiBrZXksIFdlYkNvcmU6OlN0cmluZyogdmFsdWUpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBjb25z
dCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVlKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogICAgIH07CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNzA2Njk4Mi4uMmQ3YjE4ZCAxMDA2NDQKLS0tIGEvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
OSBAQAorMjAxMC0wNi0wNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5z
cGVjdG9yOiBPbiB0aGUgd2F5IHRvIFJlbW90ZSBEZWJ1Z2dpbmcgd2Ugd2FudCB0byB0cmFuc2Zl
ciBkb20vdGltZWxpbmUvZXRjCisgICAgICAgIGRhdGEgZnJvbSBpbnNwZWN0ZWQgcGFnZSB0byBX
ZWJJbnNwZWN0b3IgYXMgSlNPTiBzdHJpbmcgdmlhIGh0dHAuIFRoZSBuYXRpdmUKKyAgICAgICAg
c2VyaWFsaXphdGlvbiB0byBKU09OIHN0cmluZyBpcyBzdXBwb3J0ZWQgYnkgSW5zcGVjdG9yVmFs
dWUncyBjbGFzc2VzLiBUaGlzIHBhdGNoCisgICAgICAgIGhhcyB0aGUgaW1wbGVtZW50YXRpb24g
b2Ygc2VuZE1lc3NhZ2VUb0Zyb250ZW5kIGZ1bmN0aW9uLiBXZWJLaXQgdmVyc2lvbiBvZiBpdCBz
dGlsbAorICAgICAgICB1c2VzIFNjcmlwdEZ1bmN0aW9uQ2FsbCBhbmQgd2lsbCBiZSBzd2l0Y2hl
ZCB0byBhbm90aGVyIHRyYW5zcG9ydCBhIGxpdHRsZSBiaXQgbGF0ZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpX
ZWJJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5z
cGVjdG9yRnJvbnRlbmQpOgorCiAyMDEwLTA2LTA5ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjA4
ODkuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oIGIvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApp
bmRleCBlZTgxYjI1Li5iZDUyOTU0IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTQyLDYgKzQyLDEyIEBAIGNsYXNzIFdlYk5vZGVIaWdo
bGlnaHRlcjsKIGNsYXNzIFdlYlZpZXc7CiAjZW5kaWYKIAorbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBQYWdlOworCit9CisKIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQgewogcHVibGljOgogICAgIFdlYkluc3BlY3RvckNsaWVu
dChXZWJWaWV3ICopOwpAQCAtNTYsMjYgKzYyLDMyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBXZWJDb3JlOjpT
dHJpbmcqIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVlKTsKIAorICAgIHZp
cnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7
CisKKyAgICB2b2lkIHJlbGVhc2VGcm9udGVuZFBhZ2UoKTsKKwogcHJpdmF0ZToKICAgICBXZWJW
aWV3ICptX3dlYlZpZXc7CiAgICAgUmV0YWluUHRyPFdlYk5vZGVIaWdobGlnaHRlcj4gbV9oaWdo
bGlnaHRlcjsKKyAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5kUGFnZTsKIH07CiAKKwogY2xh
c3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbCB7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQoV2ViVmlldyosIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIqLCBXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyKiwgV2ViQ29yZTo6UGFnZSopOwogCiAgICAgdmlydHVhbCB2b2lk
IGZyb250ZW5kTG9hZGVkKCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlN0cmluZyBs
b2NhbGl6ZWRTdHJpbmdzVVJMKCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgaGlkZGVu
UGFuZWxzKCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdUb0Zyb250KCk7CiAgICAg
dmlydHVhbCB2b2lkIGNsb3NlV2luZG93KCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoV2luZG93KCk7CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaFdpbmRvdygpOwotICAgIAorCiAg
ICAgdmlydHVhbCB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCk7
CiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJiBuZXdVUkwpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbSBiL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50Lm1tCmluZGV4IDY2MWIwZDIuLmQ1OTEwOWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCisrKyBiL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCkBAIC01MCw2ICs1MCw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogICAgIFdlYlZpZXcgKl9pbnNwZWN0ZWRXZWJWaWV3Owog
ICAgIFdlYlZpZXcgKl93ZWJWaWV3OwogICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBf
ZnJvbnRlbmRDbGllbnQ7CisgICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBfaW5zcGVjdG9yQ2xpZW50
OwogICAgIEJPT0wgX2F0dGFjaGVkVG9JbnNwZWN0ZWRXZWJWaWV3OwogICAgIEJPT0wgX3Nob3Vs
ZEF0dGFjaDsKICAgICBCT09MIF92aXNpYmxlOwpAQCAtNjEsNiArNjIsNyBAQCB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIC0gKHZvaWQpZGV0YWNoOwogLSAoQk9PTClhdHRhY2hlZDsKIC0gKHZv
aWQpc2V0RnJvbnRlbmRDbGllbnQ6KFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Kilmcm9udGVu
ZENsaWVudDsKKy0gKHZvaWQpc2V0SW5zcGVjdG9yQ2xpZW50OihXZWJJbnNwZWN0b3JDbGllbnQq
KWluc3BlY3RvckNsaWVudDsKIC0gKHZvaWQpc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQ6KHVuc2ln
bmVkKWhlaWdodDsKIC0gKHZvaWQpZGVzdHJveUluc3BlY3RvclZpZXc7CiBAZW5kCkBAIC04Myw2
ICs4NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViSW5zcGVjdG9yQ2xpZW50OjpX
ZWJJbnNwZWN0b3JDbGllbnQoV2ViVmlldyAqd2ViVmlldykKIDogbV93ZWJWaWV3KHdlYlZpZXcp
CiAsIG1faGlnaGxpZ2h0ZXIoQWRvcHROUywgW1tXZWJOb2RlSGlnaGxpZ2h0ZXIgYWxsb2NdIGlu
aXRXaXRoSW5zcGVjdGVkV2ViVmlldzp3ZWJWaWV3XSkKKywgbV9mcm9udGVuZFBhZ2UoMCkKIHsK
IH0KIApAQCAtOTQsOSArOTcsOSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9y
RGVzdHJveWVkKCkKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRl
bmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKIHsKICAgICBSZXRh
aW5QdHI8V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlcj4gd2luZG93Q29udHJvbGxlcihBZG9w
dE5TLCBbW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVj
dGVkV2ViVmlldzptX3dlYlZpZXddKTsKLSAgICBQYWdlKiBmcm9udGVuZFBhZ2UgPSBjb3JlKFt3
aW5kb3dDb250cm9sbGVyLmdldCgpIHdlYlZpZXddKTsKLQotICAgIGZyb250ZW5kUGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChuZXcgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQobV93ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdldCgpLCBp
bnNwZWN0b3JDb250cm9sbGVyLCBmcm9udGVuZFBhZ2UpKTsKKyAgICBbd2luZG93Q29udHJvbGxl
ci5nZXQoKSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CisgICAgbV9mcm9udGVuZFBhZ2UgPSBj
b3JlKFt3aW5kb3dDb250cm9sbGVyLmdldCgpIHdlYlZpZXddKTsKKyAgICBtX2Zyb250ZW5kUGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChuZXcg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV93ZWJWaWV3LCB3aW5kb3dDb250cm9sbGVyLmdl
dCgpLCBpbnNwZWN0b3JDb250cm9sbGVyLCBtX2Zyb250ZW5kUGFnZSkpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvckNsaWVudDo6aGlnaGxpZ2h0KE5vZGUqIG5vZGUpCkBAIC00MDcsNiArNDEwLDEx
IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkg
Y29uc3QKICAgICBfZnJvbnRlbmRDbGllbnQgPSBmcm9udGVuZENsaWVudDsKIH0KIAorLSAodm9p
ZClzZXRJbnNwZWN0b3JDbGllbnQ6KFdlYkluc3BlY3RvckNsaWVudCopaW5zcGVjdG9yQ2xpZW50
Cit7CisgICAgX2luc3BlY3RvckNsaWVudCA9IGluc3BlY3RvckNsaWVudDsKK30KKwogLSAodm9p
ZClzZXRBdHRhY2hlZFdpbmRvd0hlaWdodDoodW5zaWduZWQpaGVpZ2h0CiB7CiAgICAgaWYgKCFf
YXR0YWNoZWRUb0luc3BlY3RlZFdlYlZpZXcpCkBAIC00MzksNiArNDQ3LDggQEAgdm9pZCBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUoKSBjb25zdAogICAgIGlm
IChQYWdlKiBpbnNwZWN0ZWRQYWdlID0gW19pbnNwZWN0ZWRXZWJWaWV3IHBhZ2VdKQogICAgICAg
ICBpbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmRpc2Nvbm5lY3RGcm9udGVu
ZCgpOwogCisgICAgX2luc3BlY3RvckNsaWVudC0+cmVsZWFzZUZyb250ZW5kUGFnZSgpOworCiAg
ICAgW193ZWJWaWV3IGNsb3NlXTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxv
ZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYzE1YTQ4OC4uMDhlZWIzMyAxMDA2NDQKLS0t
IGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTAtMDYtMDcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdl
Ykluc3BlY3RvcjogT24gdGhlIHdheSB0byBSZW1vdGUgRGVidWdnaW5nIHdlIHdhbnQgdG8gdHJh
bnNmZXIgZG9tL3RpbWVsaW5lL2V0YworICAgICAgICBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2Ug
dG8gV2ViSW5zcGVjdG9yIGFzIEpTT04gc3RyaW5nIHZpYSBodHRwLiBUaGUgbmF0aXZlCisgICAg
ICAgIHNlcmlhbGl6YXRpb24gdG8gSlNPTiBzdHJpbmcgaXMgc3VwcG9ydGVkIGJ5IEluc3BlY3Rv
clZhbHVlJ3MgY2xhc3Nlcy4gVGhpcyBwYXRjaAorICAgICAgICBoYXMgdGhlIGltcGxlbWVudGF0
aW9uIG9mIHNlbmRNZXNzYWdlVG9Gcm9udGVuZCBmdW5jdGlvbi4gV2ViS2l0IHZlcnNpb24gb2Yg
aXQgc3RpbGwKKyAgICAgICAgdXNlcyBTY3JpcHRGdW5jdGlvbkNhbGwgYW5kIHdpbGwgYmUgc3dp
dGNoZWQgdG8gYW5vdGhlciB0cmFuc3BvcnQgYSBsaXR0bGUgYml0IGxhdGVyLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudFF0OjpJbnNwZWN0b3JDbGllbnRRdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnRRdDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpyZWxlYXNlRnJvbnRlbmRQYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0Lmg6CisKIDIwMTAtMDYtMTAg
IE1haGVzaCBLdWxrYXJuaSAgPG1haGVzaC5rdWxrYXJuaUBub2tpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudFF0LmNwcAppbmRleCBhMTM5N2Q3Li5mZGUwNTU2IDEwMDY0NAotLS0g
YS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCisrKyBiL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAKQEAgLTMxLDEwICsz
MSwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudFF0
LmgiCiAKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJxd2ViaW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAicXdlYmluc3BlY3Rvcl9wLmgiCiAj
aW5jbHVkZSAicXdlYnBhZ2UuaCIKQEAgLTcyLDYgKzc0LDcgQEAgcHVibGljOgogCiBJbnNwZWN0
b3JDbGllbnRRdDo6SW5zcGVjdG9yQ2xpZW50UXQoUVdlYlBhZ2UqIHBhZ2UpCiAgICAgOiBtX2lu
c3BlY3RlZFdlYlBhZ2UocGFnZSkKKyAgICAsIG1fZnJvbnRlbmRXZWJQYWdlKDApCiB7fQogCiB2
b2lkIEluc3BlY3RvckNsaWVudFF0OjppbnNwZWN0b3JEZXN0cm95ZWQoKQpAQCAtMTAxLDcgKzEw
NCwxMyBAQCB2b2lkIEluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopCiAgICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5p
bnNwZWN0b3JGcm9udGVuZCA9IGluc3BlY3RvclZpZXc7CiAgICAgaW5zcGVjdG9yLT5kLT5zZXRG
cm9udGVuZChpbnNwZWN0b3JWaWV3KTsKIAotICAgIGluc3BlY3RvclZpZXctPnBhZ2UoKS0+ZC0+
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChu
ZXcgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdChtX2luc3BlY3RlZFdlYlBhZ2UsIGluc3BlY3Rv
clZpZXcpKTsKKyAgICBpbnNwZWN0b3JWaWV3LT5wYWdlKCktPmQtPnBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobmV3IEluc3BlY3RvckZyb250
ZW5kQ2xpZW50UXQobV9pbnNwZWN0ZWRXZWJQYWdlLCBpbnNwZWN0b3JWaWV3LCB0aGlzKSk7Cisg
ICAgbV9mcm9udGVuZFdlYlBhZ2UgPSBpbnNwZWN0b3JQYWdlOworfQorCit2b2lkIEluc3BlY3Rv
ckNsaWVudFF0OjpyZWxlYXNlRnJvbnRlbmRQYWdlKCkKK3sKKyAgICBtX2Zyb250ZW5kV2ViUGFn
ZSA9IDA7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6OmhpZ2hsaWdodChOb2RlKikKQEAg
LTE1OCw2ICsxNjcsMzAgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6c3RvcmVTZXR0aW5nKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNldHRpbmcpCiAjZW5kaWYgLy8gUVRfTk9f
U0VUVElOR1MKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRRdDo6c2VuZE1lc3NhZ2VUb0Zyb250
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmRXZWJQYWdl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBQYWdlKiBmcm9udGVuZFBhZ2UgPSBRV2Vi
UGFnZVByaXZhdGU6OmNvcmUobV9mcm9udGVuZFdlYlBhZ2UpOworICAgIGlmICghZnJvbnRlbmRQ
YWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGcmFtZSogZnJhbWUgPSBmcm9udGVu
ZFBhZ2UtPm1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2Ny
aXB0KCk7CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBTdHJpbmcgZGlzcGF0Y2hUb0Zyb250ZW5kKCJXZWJJbnNwZWN0b3IuZGlzcGF0Y2hN
ZXNzYWdlVG9Gcm9udGVuZCgiKTsKKyAgICBkaXNwYXRjaFRvRnJvbnRlbmQgKz0gbWVzc2FnZTsK
KyAgICBkaXNwYXRjaFRvRnJvbnRlbmQgKz0gIik7IjsKKyAgICBzY3JpcHRDb250cm9sbGVyLT5l
eGVjdXRlU2NyaXB0KGRpc3BhdGNoVG9Gcm9udGVuZCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHN0YXRpYyBTdHJpbmcgdmFyaWFudFRvU2V0dGluZyhjb25zdCBRVmFyaWFudCYgcXZhcmlhbnQp
CiB7CiAgICAgU3RyaW5nIHJldFZhbDsKQEAgLTE4MSwxMSArMjE0LDEyIEBAIHN0YXRpYyBRVmFy
aWFudCBzZXR0aW5nVG9WYXJpYW50KGNvbnN0IFN0cmluZyYgc2V0dGluZykKICAgICByZXR1cm4g
cmV0VmFsOwogfQogCi1JbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OjpJbnNwZWN0b3JGcm9udGVu
ZENsaWVudFF0KFFXZWJQYWdlKiBpbnNwZWN0ZWRXZWJQYWdlLCBQYXNzT3duUHRyPFFXZWJWaWV3
PiBpbnNwZWN0b3JWaWV3KQorSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRRdDo6SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRRdChRV2ViUGFnZSogaW5zcGVjdGVkV2ViUGFnZSwgUGFzc093blB0cjxRV2Vi
Vmlldz4gaW5zcGVjdG9yVmlldywgSW5zcGVjdG9yQ2xpZW50UXQqIGluc3BlY3RvckNsaWVudCkK
ICAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdGVkV2ViUGFnZS0+ZC0+
cGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JWaWV3LT5wYWdlKCktPmQtPnBh
Z2UpIAogICAgICwgbV9pbnNwZWN0ZWRXZWJQYWdlKGluc3BlY3RlZFdlYlBhZ2UpCiAgICAgLCBt
X2luc3BlY3RvclZpZXcoaW5zcGVjdG9yVmlldykKICAgICAsIG1fZGVzdHJveWluZ0luc3BlY3Rv
clZpZXcoZmFsc2UpCisgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCiB7
CiB9CiAKQEAgLTIyMyw2ICsyNTcsOCBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ6
OmNsb3NlV2luZG93KCkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIG1faW5zcGVjdGVkV2Vi
UGFnZS0+ZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5kaXNjb25uZWN0RnJvbnRlbmQoKTsKICNl
bmRpZgorICAgIG1faW5zcGVjdG9yQ2xpZW50LT5yZWxlYXNlRnJvbnRlbmRQYWdlKCk7CisKICAg
ICAvLyBDbGVhciBwb2ludGVyIGJlZm9yZSBkZWxldGluZyBXZWJWaWV3IHRvIGF2b2lkIHJlY3Vy
c2l2ZSBjYWxscyB0byBpdHMgZGVzdHJ1Y3Rvci4KICAgICBkZWxldGUgbV9pbnNwZWN0b3JWaWV3
LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRRdC5oIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFF0LmgKaW5kZXggNGJlYWRhYi4uYzk5NmY1NSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmgKKysrIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmgKQEAgLTU4LDEzICs1OCwxOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiB2
YWx1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYpOworCisgICAgdm9pZCByZWxlYXNlRnJvbnRlbmRQYWdlKCk7
CisKIHByaXZhdGU6CiAgICAgUVdlYlBhZ2UqIG1faW5zcGVjdGVkV2ViUGFnZTsKKyAgICBRV2Vi
UGFnZSogbV9mcm9udGVuZFdlYlBhZ2U7CiB9OwogCiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENs
aWVudFF0IDogcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwgewogcHVibGljOgot
ICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQoUVdlYlBhZ2UqIGluc3BlY3RlZFdlYlBhZ2Us
IFBhc3NPd25QdHI8UVdlYlZpZXc+IGluc3BlY3RvclZpZXcpOworICAgIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50UXQoUVdlYlBhZ2UqIGluc3BlY3RlZFdlYlBhZ2UsIFBhc3NPd25QdHI8UVdlYlZp
ZXc+IGluc3BlY3RvclZpZXcsIEluc3BlY3RvckNsaWVudFF0KiBpbnNwZWN0b3JDbGllbnQpOwog
CiAgICAgdmlydHVhbCB2b2lkIGZyb250ZW5kTG9hZGVkKCk7CiAKQEAgLTg4LDYgKzkzLDcgQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8UVdlYlZpZXc+IG1faW5zcGVjdG9yVmlldzsKICAgICBRU3Ry
aW5nIG1faW5zcGVjdGVkVVJMOwogICAgIGJvb2wgbV9kZXN0cm95aW5nSW5zcGVjdG9yVmlldzsK
KyAgICBJbnNwZWN0b3JDbGllbnRRdCogbV9pbnNwZWN0b3JDbGllbnQ7CiB9OwogfQogCmRpZmYg
LS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4
IDg2OWM1MGQuLmUyMzk2NmIgMTAwNjQ0Ci0tLSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDYtMDcgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkluc3BlY3RvcjogT24gdGhlIHdheSB0byBS
ZW1vdGUgRGVidWdnaW5nIHdlIHdhbnQgdG8gdHJhbnNmZXIgZG9tL3RpbWVsaW5lL2V0YworICAg
ICAgICBkYXRhIGZyb20gaW5zcGVjdGVkIHBhZ2UgdG8gV2ViSW5zcGVjdG9yIGFzIEpTT04gc3Ry
aW5nIHZpYSBodHRwLiBUaGUgbmF0aXZlCisgICAgICAgIHNlcmlhbGl6YXRpb24gdG8gSlNPTiBz
dHJpbmcgaXMgc3VwcG9ydGVkIGJ5IEluc3BlY3RvclZhbHVlJ3MgY2xhc3Nlcy4gVGhpcyBwYXRj
aAorICAgICAgICBoYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNlbmRNZXNzYWdlVG9Gcm9udGVu
ZCBmdW5jdGlvbi4gV2ViS2l0IHZlcnNpb24gb2YgaXQgc3RpbGwKKyAgICAgICAgdXNlcyBTY3Jp
cHRGdW5jdGlvbkNhbGwgYW5kIHdpbGwgYmUgc3dpdGNoZWQgdG8gYW5vdGhlciB0cmFuc3BvcnQg
YSBsaXR0bGUgYml0IGxhdGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAxMzQKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OldlYkluc3BlY3RvckNs
aWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6On5XZWJJbnNwZWN0b3JDbGllbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorCiAyMDEwLTA2
LTEwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuY3BwIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwCmluZGV4IDNjMjYzZTUuLjM0ZmI4MjcgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTY5LDYgKzY5LDcgQEAg
c3RhdGljIENGQnVuZGxlUmVmIGdldFdlYktpdEJ1bmRsZSgpCiAKIFdlYkluc3BlY3RvckNsaWVu
dDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX2luc3BlY3Rl
ZFdlYlZpZXcod2ViVmlldykKKyAgICAsIG1fZnJvbnRlbmRQYWdlKDApCiB7CiAgICAgQVNTRVJU
KG1faW5zcGVjdGVkV2ViVmlldyk7CiAgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT52aWV3V2luZG93
KChPTEVfSEFORExFKikmbV9pbnNwZWN0ZWRXZWJWaWV3SHduZCk7CkBAIC03Niw2ICs3Nyw3IEBA
IFdlYkluc3BlY3RvckNsaWVudDo6V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcqIHdlYlZpZXcp
CiAKIFdlYkluc3BlY3RvckNsaWVudDo6fldlYkluc3BlY3RvckNsaWVudCgpCiB7CisgICAgbV9m
cm9udGVuZFBhZ2UgPSAwOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9y
RGVzdHJveWVkKCkKQEAgLTE3Miw4ICsxNzQsOSBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6
b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbgog
ICAgIGlmIChGQUlMRUQoZnJvbnRlbmRXZWJWaWV3LT50b3BMZXZlbEZyYW1lKCktPmxvYWRSZXF1
ZXN0KHJlcXVlc3QuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGFnZSogcGFnZSA9
IGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKTsKLSAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCktPnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KG5ldyBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIGZyb250
ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzKSk7Cisg
ICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSk7CisgICAgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIGZyb250ZW5kQ2xpZW50ID0gbmV3IFdlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KG1faW5zcGVjdGVkV2ViVmlldywgbV9pbnNwZWN0ZWRXZWJWaWV3SHdu
ZCwgZnJvbnRlbmRId25kLCBmcm9udGVuZFdlYlZpZXcsIGZyb250ZW5kV2ViVmlld0h3bmQsIHRo
aXMpOworICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KGZyb250ZW5kQ2xpZW50KTsKICAgICBtX2Zyb250ZW5kSHduZCA9
IGZyb250ZW5kSHduZDsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmgKaW5kZXggNjQ3NzNhNS4uMTdhOGQ5OSAxMDA2NDQKLS0tIGEvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC0zNyw2ICszNywxMiBAQAog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZTsKKworfQorCiBjbGFzcyBXZWJOb2RlSGlnaGxpZ2h0
OwogY2xhc3MgV2ViVmlldzsKIApAQCAtNTUsMTMgKzYxLDIxIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYga2V5LCBXZWJD
b3JlOjpTdHJpbmcqIHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYga2V5LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVlKTsKIAor
ICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJik7CisKICAgICB2b2lkIHVwZGF0ZUhpZ2hsaWdodCgpOwotICAgIHZvaWQgZnJvbnRlbmRD
bG9zaW5nKCkgeyBtX2Zyb250ZW5kSHduZCA9IDA7IH0KKyAgICB2b2lkIGZyb250ZW5kQ2xvc2lu
ZygpCisgICAgeworICAgICAgICBtX2Zyb250ZW5kSHduZCA9IDA7CisgICAgICAgIHJlbGVhc2VG
cm9udGVuZFBhZ2UoKTsKKyAgICB9CiAKKyAgICB2b2lkIHJlbGVhc2VGcm9udGVuZFBhZ2UoKTsK
IHByaXZhdGU6CiAgICAgfldlYkluc3BlY3RvckNsaWVudCgpOwogCiAgICAgV2ViVmlldyogbV9p
bnNwZWN0ZWRXZWJWaWV3OworICAgIFdlYkNvcmU6OlBhZ2UqIG1fZnJvbnRlbmRQYWdlOwogICAg
IEhXTkQgbV9pbnNwZWN0ZWRXZWJWaWV3SHduZDsKICAgICBIV05EIG1fZnJvbnRlbmRId25kOwog
CmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwpp
bmRleCA2M2EzZWQwLi44MjViNmVhIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvQ2hhbmdlTG9nCisr
KyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMC0wNi0wNyAgSWx5
YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBPbiB0aGUgd2F5IHRv
IFJlbW90ZSBEZWJ1Z2dpbmcgd2Ugd2FudCB0byB0cmFuc2ZlciBkb20vdGltZWxpbmUvZXRjCisg
ICAgICAgIGRhdGEgZnJvbSBpbnNwZWN0ZWQgcGFnZSB0byBXZWJJbnNwZWN0b3IgYXMgSlNPTiBz
dHJpbmcgdmlhIGh0dHAuIFRoZSBuYXRpdmUKKyAgICAgICAgc2VyaWFsaXphdGlvbiB0byBKU09O
IHN0cmluZyBpcyBzdXBwb3J0ZWQgYnkgSW5zcGVjdG9yVmFsdWUncyBjbGFzc2VzLiBUaGlzIHBh
dGNoCisgICAgICAgIGhhcyB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc2VuZE1lc3NhZ2VUb0Zyb250
ZW5kIGZ1bmN0aW9uLiBXZWJLaXQgdmVyc2lvbiBvZiBpdCBzdGlsbAorICAgICAgICB1c2VzIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBhbmQgd2lsbCBiZSBzd2l0Y2hlZCB0byBhbm90aGVyIHRyYW5zcG9y
dCBhIGxpdHRsZSBiaXQgbGF0ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MDEzNAorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXeDo6c2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFd4Lmg6CisKIDIwMTAtMDYtMDkgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MDg4OS4KZGlmZiAt
LWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcCBiL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcAppbmRleCA1ZGM5YWM3
Li5jOTQ5ZDc3IDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRXeC5jcHAKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
V3guY3BwCkBAIC03Miw0ICs3MiwxMCBAQCB2b2lkIEluc3BlY3RvckNsaWVudFd4OjpzdG9yZVNl
dHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgc2V0dGluZykKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCitib29sIEluc3BlY3RvckNsaWVudFd4OjpzZW5kTWVzc2FnZVRv
RnJvbnRlbmQoY29uc3QgU3RyaW5nJikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKwogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0
L0luc3BlY3RvckNsaWVudFd4LmggYi9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRXeC5oCmluZGV4IDc2NzVkYzEuLjY5OGEwZjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgKKysrIGIvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaApAQCAtNDgsNiArNDgsOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcq
IHZhbHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKworICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRv
RnJvbnRlbmQoY29uc3QgU3RyaW5nJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="44179"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>