<?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>95187</bug_id>
          
          <creation_ts>2012-08-28 03:21:55 -0700</creation_ts>
          <short_desc>Web Inspector: Add ability to replay XHR in network panel.</short_desc>
          <delta_ts>2012-09-14 05:41:04 -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>https://code.google.com/p/chromium/issues/detail?id=107006</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Chadnov">chadnov</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>ap</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ossy</cc>
    
    <cc>peter+ews</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
    
    <cc>zarvai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706214</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Chadnov">chadnov</who>
    <bug_when>2012-08-28 03:21:55 -0700</bug_when>
    <thetext>Ability to replay existing XHR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706246</commentid>
    <comment_count>1</comment_count>
      <attachid>160952</attachid>
    <who name="Pavel Chadnov">chadnov</who>
    <bug_when>2012-08-28 04:39:33 -0700</bug_when>
    <thetext>Created attachment 160952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706257</commentid>
    <comment_count>2</comment_count>
      <attachid>160952</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-28 05:45:59 -0700</bug_when>
    <thetext>Comment on attachment 160952
Patch

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

Please add tests.

&gt; Source/WebCore/inspector/Inspector.json:878
&gt; +                &quot;description&quot;: &quot;Replays XHR.&quot;,

Please make this description more verbose. It should mention that XHR resent is identical to the original one and specify the concrete parameters that are identical in them.

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:333
&gt; +void InspectorInstrumentation::DidCreateXhrRequestImpl(InstrumentingAgents* instrumentingAgents, String method, bool async, PassRefPtr&lt;FormData&gt; formData, const HTTPHeaderMap&amp; headers, bool includeCredentials, String login, String password)

didCreateXhrRequestImpl

&gt; Source/WebCore/inspector/InspectorResourceAgent.h:71
&gt; +struct XhrData;

XHRReplayData

&gt; Source/WebCore/inspector/InspectorResourceAgent.h:-108
&gt; -

Please revert unneeded changes.

&gt; Source/WebCore/inspector/front-end/NetworkPanel.js:965
&gt; +        if (request &amp;&amp; request.type.name() === &quot;xhr&quot;) {

request.type === WebInspector.resourceTypes.XHR

&gt; Source/WebCore/inspector/front-end/NetworkRequest.js:801
&gt; +        

Please revert

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:403
&gt; +    if (m_preflightRequestIdentifier)

Let&apos;s make it look like 
if (m_actualRequest)
  ... 
else if (m_preflightRequestIdentifier)
  ... 
for consistency.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:690
&gt; +    createRequest(ec);

As discussed we should set Content-Type header here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706258</commentid>
    <comment_count>3</comment_count>
      <attachid>160952</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-28 05:48:19 -0700</bug_when>
    <thetext>Comment on attachment 160952
Patch

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

Please add a screenshot

&gt; Source/WebCore/ChangeLog:8
&gt; +        Added XHR replay in network tab.

Please add a description of implementation details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706281</commentid>
    <comment_count>4</comment_count>
      <attachid>160961</attachid>
    <who name="Pavel Chadnov">chadnov</who>
    <bug_when>2012-08-28 06:28:02 -0700</bug_when>
    <thetext>Created attachment 160961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706288</commentid>
    <comment_count>5</comment_count>
      <attachid>160961</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-28 06:39:05 -0700</bug_when>
    <thetext>Comment on attachment 160961
Patch

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

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:165
&gt; +    static void didCreateXHRRequestImpl(InstrumentingAgents*, String, bool, PassRefPtr&lt;FormData&gt;, const HTTPHeaderMap&amp;, bool, String, String);

...Impl methods should be below (together with the others).

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:167
&gt; +    static void preflightRequestSuccededImpl(InstrumentingAgents*, unsigned long);

Ditto

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:226
&gt; +        m_preflightIdToRequestId.add(requestId, IdentifiersFactory::requestId(m_preflightRequestId));

m_resourcesData-&gt;setXHRReplayData(requestId, m_resourcesData-&gt;XHRData(m_preflightRequestId));
This way you don&apos;t need this map at all.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:650
&gt; +    , m_XHRData(0)

m_XHRReplayData

&gt; Source/WebCore/inspector/InspectorResourceAgent.h:164
&gt; +    unsigned long m_preflightRequestId;

I eould call it m_xhrReplayDataRequestId and reuse in replayXHR to avoid duplicating xhrReplayData for replayed xhrs.

&gt; Source/WebCore/inspector/InspectorResourceAgent.h:165
&gt; +    HashMap&lt;String, String&gt; m_preflightIdToRequestId;

This map is not really needed, see above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706300</commentid>
    <comment_count>6</comment_count>
      <attachid>160961</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-28 06:53:48 -0700</bug_when>
    <thetext>Comment on attachment 160961
Patch

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

&gt; Source/WebCore/inspector/InspectorResourceAgent.h:163
&gt; +    XHRReplayData* m_XHRData;

RefPtr

&gt; Source/WebCore/inspector/NetworkResourcesData.h:58
&gt; +    XHRReplayData(String method, bool async, PassRefPtr&lt;FormData&gt; formData, const HTTPHeaderMap&amp; headers, bool includeCredentials, String login, String password): m_method(method), m_async(async), m_formData(formData), m_headers(headers), m_includeCredentials(includeCredentials), m_login(login), m_password(password) { }

Please move implementation to .cpp

&gt; Source/WebCore/inspector/NetworkResourcesData.h:118
&gt; +        XHRReplayData* m_XHRData;

RefPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707423</commentid>
    <comment_count>7</comment_count>
      <attachid>161220</attachid>
    <who name="Pavel Chadnov">chadnov</who>
    <bug_when>2012-08-29 07:14:53 -0700</bug_when>
    <thetext>Created attachment 161220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707438</commentid>
    <comment_count>8</comment_count>
      <attachid>161220</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-29 07:45:13 -0700</bug_when>
    <thetext>Comment on attachment 161220
Patch

Attachment 161220 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13686209</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707443</commentid>
    <comment_count>9</comment_count>
      <attachid>161220</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-29 07:49:20 -0700</bug_when>
    <thetext>Comment on attachment 161220
Patch

Attachment 161220 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13683283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707450</commentid>
    <comment_count>10</comment_count>
      <attachid>161220</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-29 08:00:45 -0700</bug_when>
    <thetext>Comment on attachment 161220
Patch

Clearing r? as some comments were not addressed yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707468</commentid>
    <comment_count>11</comment_count>
      <attachid>161232</attachid>
    <who name="Pavel Chadnov">chadnov</who>
    <bug_when>2012-08-29 08:25:47 -0700</bug_when>
    <thetext>Created attachment 161232
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707513</commentid>
    <comment_count>12</comment_count>
      <attachid>161232</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-29 09:14:46 -0700</bug_when>
    <thetext>Comment on attachment 161232
Patch

Attachment 161232 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13685292</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707564</commentid>
    <comment_count>13</comment_count>
      <attachid>161256</attachid>
    <who name="Pavel Chadnov">chadnov</who>
    <bug_when>2012-08-29 10:01:28 -0700</bug_when>
    <thetext>Created attachment 161256
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707630</commentid>
    <comment_count>14</comment_count>
      <attachid>161256</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-29 10:45:12 -0700</bug_when>
    <thetext>Comment on attachment 161256
Patch

Attachment 161256 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13680301</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707640</commentid>
    <comment_count>15</comment_count>
      <attachid>161256</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-29 10:55:22 -0700</bug_when>
    <thetext>Comment on attachment 161256
Patch

Attachment 161256 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13682283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707766</commentid>
    <comment_count>16</comment_count>
      <attachid>161256</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-29 12:51:20 -0700</bug_when>
    <thetext>Comment on attachment 161256
Patch

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

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:595
&gt; +void InspectorResourceAgent::replayXHR(ErrorString* errorString, const String&amp; requestId)

Add ASSERT_UNUSED(errorString); below to make mac bot happy.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:602
&gt; +    RefPtr&lt;XHRReplayData&gt; XHRData = m_resourcesData-&gt;XHRData(actualRequestId);

xhrData

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:654
&gt; +    , m_XHRData(0)

m_xhrData

&gt; Source/WebCore/inspector/NetworkResourcesData.h:120
&gt; +        RefPtr&lt;XHRReplayData&gt; m_XHRData;

ditto

&gt; Source/WebCore/inspector/NetworkResourcesData.h:153
&gt; +    PassRefPtr&lt;XHRReplayData&gt; XHRData(const String&amp; requestId);

ditto

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:386
&gt; +            InspectorInstrumentation::preflightRequestSucceded(m_document, m_preflightRequestIdentifier);

No brackets for one line conditionals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708349</commentid>
    <comment_count>17</comment_count>
      <attachid>161256</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-29 23:37:12 -0700</bug_when>
    <thetext>Comment on attachment 161256
Patch

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

&gt; Source/WebCore/inspector/Inspector.json:882
&gt; +                &quot;returns&quot;: [

Empty returns is redundant.

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:333
&gt; +void InspectorInstrumentation::didCreateXHRRequestImpl(InstrumentingAgents* instrumentingAgents, String method, bool async, PassRefPtr&lt;FormData&gt; formData, const HTTPHeaderMap&amp; headers, bool includeCredentials, String login, String password)

Here and in other places: s/String/const String&amp;/

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:689
&gt; +    m_requestEntityBody = formData;

You are not really passing the ownership of formData here. You should pass it by pointer and deepCopy back here.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:728
&gt; +    InspectorInstrumentation::didCreateXHRRequest(scriptExecutionContext(), m_method, m_async, m_requestEntityBody ? m_requestEntityBody-&gt;deepCopy() : 0, m_requestHeaders, m_includeCredentials, m_url.user(), m_url.pass());

We&apos;d better use m_requestHeaders.copyData() here instead of m_requestHeaders (and adopt() the result on the other side)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708621</commentid>
    <comment_count>18</comment_count>
      <attachid>161470</attachid>
    <who name="Pavel Chadnov">chadnov</who>
    <bug_when>2012-08-30 07:58:10 -0700</bug_when>
    <thetext>Created attachment 161470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708633</commentid>
    <comment_count>19</comment_count>
      <attachid>161470</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-30 08:14:57 -0700</bug_when>
    <thetext>Comment on attachment 161470
Patch

This patch looks identical to the previous one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708635</commentid>
    <comment_count>20</comment_count>
      <attachid>161475</attachid>
    <who name="Pavel Chadnov">chadnov</who>
    <bug_when>2012-08-30 08:20:10 -0700</bug_when>
    <thetext>Created attachment 161475
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708643</commentid>
    <comment_count>21</comment_count>
      <attachid>161475</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 08:29:14 -0700</bug_when>
    <thetext>Comment on attachment 161475
Patch

Attachment 161475 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13694695</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708650</commentid>
    <comment_count>22</comment_count>
      <attachid>161475</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-08-30 08:36:29 -0700</bug_when>
    <thetext>Comment on attachment 161475
Patch

Attachment 161475 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13682716</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708651</commentid>
    <comment_count>23</comment_count>
      <attachid>161475</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-30 08:37:07 -0700</bug_when>
    <thetext>Comment on attachment 161475
Patch

Attachment 161475 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13681720</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708658</commentid>
    <comment_count>24</comment_count>
      <attachid>161475</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-30 08:43:14 -0700</bug_when>
    <thetext>Comment on attachment 161475
Patch

Attachment 161475 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13690727</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708667</commentid>
    <comment_count>25</comment_count>
      <attachid>161475</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-30 08:47:32 -0700</bug_when>
    <thetext>Comment on attachment 161475
Patch

Attachment 161475 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13686692</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708675</commentid>
    <comment_count>26</comment_count>
      <attachid>161475</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-08-30 08:52:27 -0700</bug_when>
    <thetext>Comment on attachment 161475
Patch

Attachment 161475 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13695710</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708676</commentid>
    <comment_count>27</comment_count>
      <attachid>161475</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-30 08:52:38 -0700</bug_when>
    <thetext>Comment on attachment 161475
Patch

Attachment 161475 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13686693</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708685</commentid>
    <comment_count>28</comment_count>
      <attachid>161475</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-08-30 08:59:56 -0700</bug_when>
    <thetext>Comment on attachment 161475
Patch

Attachment 161475 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13690732</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708689</commentid>
    <comment_count>29</comment_count>
      <attachid>161487</attachid>
    <who name="Pavel Chadnov">chadnov</who>
    <bug_when>2012-08-30 09:05:12 -0700</bug_when>
    <thetext>Created attachment 161487
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708731</commentid>
    <comment_count>30</comment_count>
      <attachid>161487</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-30 09:45:30 -0700</bug_when>
    <thetext>Comment on attachment 161487
Patch

Attachment 161487 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13682752</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709336</commentid>
    <comment_count>31</comment_count>
      <attachid>161487</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-08-30 23:59:04 -0700</bug_when>
    <thetext>Comment on attachment 161487
Patch

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

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:212
&gt; +        OwnPtr&lt;CrossThreadHTTPHeaderMapData&gt; headerMapData = headers.copyData();

Please remove

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:614
&gt; +        xhr-&gt;setRequestHeader(it-&gt;first, it-&gt;second, code);    xhr-&gt;sendFromInspector(xhrData-&gt;m_formData, code);

New line

&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:276
&gt; +void NetworkResourcesData::setXHRReplayData(const String&amp; requestId, PassRefPtr&lt;XHRReplayData&gt; XHRData)

zhrData

&gt; Source/WebCore/inspector/NetworkResourcesData.h:51
&gt; +    String m_method;

Please make fields private an add getters.

&gt; Source/WebCore/inspector/NetworkResourcesData.h:108
&gt; +        void setXHRReplayData(PassRefPtr&lt;XHRReplayData&gt; XHRData) { m_xhrReplayData = XHRData;};

space between ; and }

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:404
&gt; +    if (m_actualRequest)

Please surround with #if ENABLE(INSPECTOR)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709392</commentid>
    <comment_count>32</comment_count>
      <attachid>161641</attachid>
    <who name="Pavel Chadnov">chadnov</who>
    <bug_when>2012-08-31 01:55:14 -0700</bug_when>
    <thetext>Created attachment 161641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709416</commentid>
    <comment_count>33</comment_count>
      <attachid>161641</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-08-31 02:22:39 -0700</bug_when>
    <thetext>Comment on attachment 161641
Patch

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

&gt; Source/WebCore/inspector/Inspector.json:878
&gt; +                &quot;description&quot;: &quot;Replays XHR. The new XHR is identical to original (parameters method, async, body, headers, withCredentials, login, password are copied)&quot;,

to original -&gt; to the original one

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:1185
&gt; +

extra line?

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:600
&gt; +void InspectorResourceAgent::replayXHR(ErrorString* errorString, const String&amp; requestId)

&quot;ErrorString* errorString,&quot; -&gt; &quot;ErrorString*,&quot; and remove UNUSED_PARAM macro below

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:615
&gt; +    m_originalRequestId = String();

I guess String should have a method like clear() or reset()

&gt; Source/WebCore/inspector/InspectorResourceAgent.h:71
&gt; +struct XHRReplayData;

struct -&gt; class

&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:49
&gt; +PassRefPtr&lt;XHRReplayData&gt; XHRReplayData::create(String method, bool async, PassRefPtr&lt;FormData&gt; formData, const HTTPHeaderMap&amp; headers, bool includeCredentials, String login, String password)

String method -&gt; const String&amp; method? for all other places also.

&gt; Source/WebCore/inspector/NetworkResourcesData.h:52
&gt; +    String method() { return m_method; }

const String&amp; method() const;

and for other methods also.

&gt; Source/WebCore/inspector/NetworkResourcesData.h:53
&gt; +    bool async() { return m_async; }

bool async() const;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709417</commentid>
    <comment_count>34</comment_count>
      <attachid>161641</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-31 02:25:25 -0700</bug_when>
    <thetext>Comment on attachment 161641
Patch

Attachment 161641 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13717093</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709455</commentid>
    <comment_count>35</comment_count>
      <attachid>161651</attachid>
    <who name="Pavel Chadnov">chadnov</who>
    <bug_when>2012-08-31 03:24:20 -0700</bug_when>
    <thetext>Created attachment 161651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709654</commentid>
    <comment_count>36</comment_count>
      <attachid>161707</attachid>
    <who name="Pavel Chadnov">chadnov</who>
    <bug_when>2012-08-31 08:35:28 -0700</bug_when>
    <thetext>Created attachment 161707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709716</commentid>
    <comment_count>37</comment_count>
      <attachid>161707</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 09:27:40 -0700</bug_when>
    <thetext>Comment on attachment 161707
Patch

Attachment 161707 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13723250

New failing tests:
animations/suspend-resume-animation-events.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719651</commentid>
    <comment_count>38</comment_count>
      <attachid>163904</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-13 10:32:35 -0700</bug_when>
    <thetext>Created attachment 163904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719652</commentid>
    <comment_count>39</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-13 10:33:24 -0700</bug_when>
    <thetext>ap, japhet: Could you please review XMLHttpRequest / DocumentThreadableLoader / CachedResource changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719667</commentid>
    <comment_count>40</comment_count>
      <attachid>163904</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-09-13 10:51:56 -0700</bug_when>
    <thetext>Comment on attachment 163904
Patch

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

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:46
&gt; +#include &quot;SubresourceLoader.h&quot;

I don&apos;t think this include is necessary.

&gt; Source/WebCore/loader/cache/CachedRawResource.h:-44
&gt; -    // FIXME: This is exposed for the InpsectorInstrumentation for preflights in DocumentThreadableLoader. It&apos;s also really lame.
&gt; -    unsigned long identifier() const { return m_identifier; }
&gt; -

Does this actually need to move down to CachedResource? I don&apos;t immediately see a call that requires it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719668</commentid>
    <comment_count>41</comment_count>
      <attachid>163904</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-09-13 10:51:56 -0700</bug_when>
    <thetext>Comment on attachment 163904
Patch

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

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:46
&gt; +#include &quot;SubresourceLoader.h&quot;

I don&apos;t think this include is necessary.

&gt; Source/WebCore/loader/cache/CachedRawResource.h:-44
&gt; -    // FIXME: This is exposed for the InpsectorInstrumentation for preflights in DocumentThreadableLoader. It&apos;s also really lame.
&gt; -    unsigned long identifier() const { return m_identifier; }
&gt; -

Does this actually need to move down to CachedResource? I don&apos;t immediately see a call that requires it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719676</commentid>
    <comment_count>42</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-13 11:01:20 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; (From update of attachment 163904 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163904&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:46
&gt; &gt; +#include &quot;SubresourceLoader.h&quot;
&gt; 
&gt; I don&apos;t think this include is necessary.
&gt; 
It is not, thanks

&gt; &gt; Source/WebCore/loader/cache/CachedRawResource.h:-44
&gt; &gt; -    // FIXME: This is exposed for the InpsectorInstrumentation for preflights in DocumentThreadableLoader. It&apos;s also really lame.
&gt; &gt; -    unsigned long identifier() const { return m_identifier; }
&gt; &gt; -
&gt; 
&gt; Does this actually need to move down to CachedResource? I don&apos;t immediately see a call that requires it.
It does not need it, I will move it back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720221</commentid>
    <comment_count>43</comment_count>
      <attachid>163904</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 19:04:47 -0700</bug_when>
    <thetext>Comment on attachment 163904
Patch

Attachment 163904 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13849390

New failing tests:
http/tests/inspector/network/network-xhr-replay.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720248</commentid>
    <comment_count>44</comment_count>
      <attachid>163904</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 20:01:55 -0700</bug_when>
    <thetext>Comment on attachment 163904
Patch

Attachment 163904 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13858019

New failing tests:
http/tests/inspector/network/network-xhr-replay.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720378</commentid>
    <comment_count>45</comment_count>
      <attachid>164061</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-13 23:59:39 -0700</bug_when>
    <thetext>Created attachment 164061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720444</commentid>
    <comment_count>46</comment_count>
      <attachid>164070</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-14 01:47:48 -0700</bug_when>
    <thetext>Created attachment 164070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720480</commentid>
    <comment_count>47</comment_count>
      <attachid>164070</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-14 02:44:16 -0700</bug_when>
    <thetext>Comment on attachment 164070
Patch

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

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:-364
&gt; -void InspectorResourceAgent::willLoadXHRSynchronously()

Let&apos;s keep will/didLoadXHRSynchronously as before for clarity as discussed off the bug.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:618
&gt; +    xhr-&gt;sendFromInspector(xhrReplayData-&gt;formData(), code);return;

Remove &apos;return;&apos;

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:410
&gt; +#if ENABLE(INSPECTOR)

No need in this guard as we already have one in the InspectorInstrumentation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720531</commentid>
    <comment_count>48</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-14 03:41:31 -0700</bug_when>
    <thetext>Committed r128580: &lt;http://trac.webkit.org/changeset/128580&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720554</commentid>
    <comment_count>49</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-09-14 04:04:16 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; Committed r128580: &lt;http://trac.webkit.org/changeset/128580&gt;

It broke the !ENABLE(INSPECTOR) builds:
----------------------------------------
/ramdisk/qt-linux-release-minimal/build/Source/WebCore/loader/DocumentThreadableLoader.cpp: In member function &apos;void WebCore::DocumentThreadableLoader::loadRequest(const WebCore::ResourceRequest&amp;, WebCore::SecurityCheckPolicy)&apos;:
/ramdisk/qt-linux-release-minimal/build/Source/WebCore/loader/DocumentThreadableLoader.cpp:410: error: &apos;InspectorInstrumentation&apos; has not been declared

Could you fix it, please? It seems only an ifdef guard is missing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720579</commentid>
    <comment_count>50</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-14 04:38:03 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; (In reply to comment #48)
&gt; &gt; Committed r128580: &lt;http://trac.webkit.org/changeset/128580&gt;
&gt; 
&gt; It broke the !ENABLE(INSPECTOR) builds:
&gt; ----------------------------------------
&gt; /ramdisk/qt-linux-release-minimal/build/Source/WebCore/loader/DocumentThreadableLoader.cpp: In member function &apos;void WebCore::DocumentThreadableLoader::loadRequest(const WebCore::ResourceRequest&amp;, WebCore::SecurityCheckPolicy)&apos;:
&gt; /ramdisk/qt-linux-release-minimal/build/Source/WebCore/loader/DocumentThreadableLoader.cpp:410: error: &apos;InspectorInstrumentation&apos; has not been declared
&gt; 
&gt; Could you fix it, please? It seems only an ifdef guard is missing.

Should be fixed, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720631</commentid>
    <comment_count>51</comment_count>
    <who name="Zoltan Arvai">zarvai</who>
    <bug_when>2012-09-14 05:37:15 -0700</bug_when>
    <thetext>http/tests/inspector/network/network-xhr-replay.html crashes on EFL, Lion, MountenLion, Qt. Can you check it, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720637</commentid>
    <comment_count>52</comment_count>
    <who name="Zoltan Arvai">zarvai</who>
    <bug_when>2012-09-14 05:41:04 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; http/tests/inspector/network/network-xhr-replay.html crashes on EFL, Lion, MountenLion, Qt. Can you check it, please?

On Qt http/tests/inspector/network/network-xhr-same-url-as-main-resource.html is crashing, sorry.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160952</attachid>
            <date>2012-08-28 04:39:33 -0700</date>
            <delta_ts>2012-08-28 06:27:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120828153924.patch</filename>
            <type>text/plain</type>
            <size>24755</size>
            <attacher name="Pavel Chadnov">chadnov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBjNWNjOGM2NWQxZGE3
ODJiODkzZmFjZDU3YmM5ZmNjYjc3ZTg4OC4uZjlhOTNkODNhMTkxMzMyNzgwOGIwZmJmZDhkODky
YjEyNTI4ZTRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA4LTI4ICBQYXZl
bCBDaGFkbm92ICA8Y2hhZG5vdkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFhIUiByZXBsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgWEhSIHJlcGxheSBpbiBuZXR3b3JrIHRhYi4KKyAgICAgICAgIAorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpEaWRDcmVhdGVYaHJSZXF1ZXN0SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByZWZsaWdodFJlcXVl
c3RTdWNjZWRlZEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaDoKKyAgICAgICAgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OkRpZENyZWF0ZVhoclJlcXVlc3QpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6RGlkQ3JlYXRlWGhyUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OnByZWZsaWdodFJlcXVlc3RT
dWNjZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxs
U2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
cmVwbGF5WEhSKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6Oklu
c3BlY3RvclJlc291cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluc3BlY3RvclJlc291
cmNlQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6eGhyRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpz
ZXRYaHJEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoK
KyAgICAgICAgKFhockRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6WGhyRGF0YTo6WGhyRGF0YSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGE6OnhockRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jl
c291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6c2V0WGhyRGF0YSk6CisgICAgICAgIChSZXNvdXJj
ZURhdGEpOgorICAgICAgICAoTmV0d29ya1Jlc291cmNlc0RhdGEpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fcmVwbGF5WEhSKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtSZXF1ZXN0LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5faW5uZXJSZXF1ZXN0Q29udGVudCk6CisgICAgICAg
ICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGYWlsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0U3Vj
Y2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXF1ZXN0KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QpOgor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorICAgICAgICAoWE1MSHR0cFJlcXVlc3Qp
OgorCiAyMDEyLTA4LTI3ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbQ2hyb21pdW1dIEZpeGluZyBpbmZpbml0ZSByZWN1cnNpb24gaW4gQ2FudmFzMkRM
YXllck1hbmFnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBk
YWUzNjg5NDhlOTcxZWU2MWI5N2Q1ZGQ4NjY1MmRjOGZiMzk4OTU4Li4yNzExODZmY2E5N2ZmYWZi
NjUyNjRlZWMzYTM3M2FmYjQyOTIyYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCkBAIC04NzQsNiArODc0LDE1IEBACiAgICAgICAgICAgICAgICAgXQogICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXBsYXlY
SFIiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYXlzIFhIUi4iLAorICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVu
dGlmaWVyIG9mIHRoZSBuZXR3b3JrIHJlcXVlc3QgdG8gZ2V0IGNvbnRlbnQgZm9yLiIgfQorICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAi
bmFtZSI6ICJjYW5DbGVhckJyb3dzZXJDYWNoZSIsCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIlRlbGxzIHdoZXRoZXIgY2xlYXJpbmcgYnJvd3NlciBjYWNoZSBpcyBzdXBwb3J0ZWQu
IiwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYWY0NDcyOGM2
NDYxMDA4YmFmMzk0N2YzZGI2OTdmNjI0ZmE2YzZlNy4uNzc4ZjU5M2ZmYmU2NzQ0NGE4MGFiOGQ3
NTBiZmY5ZDI1ZGMzN2RmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTMzMCw2ICszMzAsMTggQEAgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGNvbnN0
IEluc3BlY3Rvckluc3RydW0KICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ2hhbmdlWEhSUmVh
ZHlTdGF0ZSgpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6RGlkQ3JlYXRl
WGhyUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
U3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEs
IGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBT
dHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJl
c291cmNlQWdlbnQoKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+RGlkQ3JlYXRlWGhyUmVxdWVz
dChtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNyZWRlbnRpYWxzLCBs
b2dpbiwgcGFzc3dvcmQpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJl
ZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkKQoreworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCgpKQorICAgICAgICByZXNvdXJjZUFnZW50LT5wcmVmbGlnaHRSZXF1ZXN0U3Vj
Y2VkZWQoaWQpOworfQorCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdp
bmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycywg
RG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CmluZGV4IGRiMzM1YmZhZjQ1MGNjMzE4Y2JjZTRkZjYxODExMjdkZDI1NGY1YzguLjc0YTkwNjAw
NGIyNjc1ZTI0ZGFjYWMwMGM4ODJlNjYwN2Q4NDAyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTE2MSw2ICsxNjEs
MTEgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdpbGxQcm9jZXNzVGFzayhQYWdlKik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUHJvY2Vzc1Rhc2soUGFnZSopOwogCisgICAgc3RhdGljIHZvaWQg
RGlkQ3JlYXRlWGhyUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgU3RyaW5nLCBib29s
LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2wsIFN0cmlu
ZywgU3RyaW5nKTsKKyAgICBzdGF0aWMgdm9pZCBEaWRDcmVhdGVYaHJSZXF1ZXN0SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgU3RyaW5nLCBib29sLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29u
c3QgSFRUUEhlYWRlck1hcCYsIGJvb2wsIFN0cmluZywgU3RyaW5nKTsKKyAgICBzdGF0aWMgdm9p
ZCBwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2ln
bmVkIGxvbmcpOworICAgIHN0YXRpYyB2b2lkIHByZWZsaWdodFJlcXVlc3RTdWNjZWRlZEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcpOworCiAgICAgc3RhdGljIHZvaWQg
YXBwbHlVc2VyQWdlbnRPdmVycmlkZShGcmFtZSosIFN0cmluZyopOwogICAgIHN0YXRpYyB2b2lk
IGFwcGx5U2NyZWVuV2lkdGhPdmVycmlkZShGcmFtZSosIGxvbmcqKTsKICAgICBzdGF0aWMgdm9p
ZCBhcHBseVNjcmVlbkhlaWdodE92ZXJyaWRlKEZyYW1lKiwgbG9uZyopOwpAQCAtMTE2MSw2ICsx
MTY2LDIzIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZVhIUlJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAjZW5kaWYKIH0KIAoraW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpEaWRDcmVhdGVYaHJSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFN0cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NS
ZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBi
b29sIGluY2x1ZGVDcmVkZW50aWFscywgU3RyaW5nIGxvZ2luLCBTdHJpbmcgcGFzc3dvcmQpCit7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQp
KQorICAgICAgICBEaWRDcmVhdGVYaHJSZXF1ZXN0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBt
ZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNyZWRlbnRpYWxzLCBsb2dp
biwgcGFzc3dvcmQpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAg
ICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1l
bnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0
U3VjY2VkZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlkKTsKKyNlbmRpZgorfQorCisKIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFJTeW5jaHJvbm91
c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcAppbmRleCA5ZDkyOWM5YTEwYmVkMzRjMjljMjg5NDgxYWIwYTRhNWE2Mjg2OTE0
Li45ODVhZjlmMGJiMzhiM2E3MGY1ZWEzNGJmNzk2ZDA5OWUyYWU4OGY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC02
NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UuaCIKKyNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgogCiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgpAQCAtMjAzLDEzICsyMDQs
MzEgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fkluc3BlY3RvclJlc291cmNlQWdlbnQoKQog
ICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50
KCkpOwogfQogCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OkRpZENyZWF0ZVhoclJlcXVl
c3QoU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURh
dGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxz
LCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKK3sKKyAgICBtX3hockRhdGEgPSBuZXcg
WGhyRGF0YShtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNyZWRlbnRp
YWxzLCBsb2dpbiwgcGFzc3dvcmQpOworfQorCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZCh1bnNpZ25lZCBsb25nIGlkKQoreworICAgIG1fcHJl
ZmxpZ2h0UmVxdWVzdElkID0gaWQ7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVy
c0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKICAgICBtX3Jlc291cmNlc0RhdGEtPnJl
c291cmNlQ3JlYXRlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpKTsK
IAotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBtX3N0YXRlLT5nZXRPYmpl
Y3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzKTsKKyAgICBpZiAobV94
aHJEYXRhKSB7CisgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0WGhyRGF0YShyZXF1ZXN0SWQs
IG1feGhyRGF0YSk7CisgICAgICAgIG1feGhyRGF0YSA9IDA7CisgICAgfSBlbHNlIGlmIChtX3By
ZWZsaWdodFJlcXVlc3RJZCkgeworICAgICAgICBtX3ByZWZsaWdodElkVG9SZXF1ZXN0SWQuYWRk
KHJlcXVlc3RJZCwgSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQobV9wcmVmbGlnaHRSZXF1
ZXN0SWQpKTsKKyAgICAgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWQgPSAwOworICAgIH0KIAorCisg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGVhZGVycyA9IG1fc3RhdGUtPmdldE9iamVjdChS
ZXNvdXJjZUFnZW50U3RhdGU6OmV4dHJhUmVxdWVzdEhlYWRlcnMpOwogICAgIGlmIChoZWFkZXJz
KSB7CiAgICAgICAgIEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVy
cy0+ZW5kKCk7CiAgICAgICAgIGZvciAoSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBp
dCA9IGhlYWRlcnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNTcwLDYgKzU4OSwy
MiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldFJlc3BvbnNlQm9keShFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cgogICAgICplcnJvclN0cmluZyA9ICJObyBkYXRh
IGZvdW5kIGZvciByZXNvdXJjZSB3aXRoIGdpdmVuIGlkZW50aWZpZXIiOwogfQogCit2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OnJlcGxheVhIUihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQoreworICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4g
eGhyID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCktPmRv
Y3VtZW50KCkpOworICAgIEV4Y2VwdGlvbkNvZGUgY29kZTsKKyAgICBTdHJpbmcgYWN0dWFsUmVx
dWVzdElkID0gbV9wcmVmbGlnaHRJZFRvUmVxdWVzdElkLmNvbnRhaW5zKHJlcXVlc3RJZCkgPyBt
X3ByZWZsaWdodElkVG9SZXF1ZXN0SWQuZ2V0KHJlcXVlc3RJZCkgOiByZXF1ZXN0SWQ7CisKKyAg
ICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEg
PSBtX3Jlc291cmNlc0RhdGEtPmRhdGEoYWN0dWFsUmVxdWVzdElkKTsKKyAgICBYaHJEYXRhKiB4
aHJEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT54aHJEYXRhKGFjdHVhbFJlcXVlc3RJZCk7CisKKyAg
ICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSB4aHJEYXRhLT5tX2hlYWRlcnMu
ZW5kKCk7CisgICAgeGhyLT5vcGVuKHhockRhdGEtPm1fbWV0aG9kLCBLVVJMKFBhcnNlZFVSTFN0
cmluZywgcmVzb3VyY2VEYXRhLT51cmwoKSksIHhockRhdGEtPm1fYXN5bmMsIGNvZGUpOworICAg
IGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB4aHJEYXRhLT5tX2hlYWRl
cnMuYmVnaW4oKTsgaXQhPSBlbmQ7ICsraXQpCisgICAgICAgIHhoci0+c2V0UmVxdWVzdEhlYWRl
cihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQsIGNvZGUpOworICAgIHhoci0+c2VuZEZyb21JbnNwZWN0
b3IoeGhyRGF0YS0+bV9mb3JtRGF0YSwgY29kZSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6Y2FuQ2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqLCBib29sKiByZXN1bHQp
CiB7CiAgICAgKnJlc3VsdCA9IG1fY2xpZW50LT5jYW5DbGVhckJyb3dzZXJDYWNoZSgpOwpAQCAt
NjEyLDYgKzY0Nyw5IEBAIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNl
QWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluCiAgICAgLCBtX2Zyb250ZW5k
KDApCiAgICAgLCBtX3Jlc291cmNlc0RhdGEoYWRvcHRQdHIobmV3IE5ldHdvcmtSZXNvdXJjZXNE
YXRhKCkpKQogICAgICwgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseShmYWxzZSkKKyAgICAsIG1f
eGhyRGF0YSgwKQorICAgICwgbV9wcmVmbGlnaHRSZXF1ZXN0SWQoMCkKKyAgICAsIG1fcHJlZmxp
Z2h0SWRUb1JlcXVlc3RJZCgpCiAgICAgLCBtX2lzUmVjYWxjdWxhdGluZ1N0eWxlKGZhbHNlKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmgKaW5kZXggNWM5ZmJlMjYyZTZlMGZiYWNhNzM5YWE4MmE2ZmIzNTY5NTk1MjM0ZC4uMWQx
NWEzZjNhZTFlYmYxNDk4YWQ2MjdkODBkZDFkZDJlOTRmMzcwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC01MCw3ICs1MCw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgRG9j
dW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKK2NsYXNzIEZvcm1EYXRhOwogY2xhc3MgRnJh
bWU7CitjbGFzcyBIVFRQSGVhZGVyTWFwOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJ
bnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKQEAgLTY2LDYgKzY4LDcg
QEAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworc3RydWN0IFhockRhdGE7CiAK
ICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiBzdHJ1Y3QgV2ViU29ja2V0RnJhbWU7CkBAIC0xMDUs
OCArMTA4LDkgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91c2x5KCk7
CiAgICAgdm9pZCBkaWRMb2FkWEhSU3luY2hyb25vdXNseSgpOwogICAgIHZvaWQgd2lsbERlc3Ry
b3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwotCiAgICAgdm9pZCBhcHBseVVzZXJB
Z2VudE92ZXJyaWRlKFN0cmluZyogdXNlckFnZW50KTsKKyAgICB2b2lkIERpZENyZWF0ZVhoclJl
cXVlc3QoU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gYm9k
eSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlbmRlbnRpYWxz
LCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCk7CisgICAgdm9pZCBwcmVmbGlnaHRSZXF1
ZXN0U3VjY2VkZWQodW5zaWduZWQgbG9uZyBpZCk7CiAKICAgICAvLyBGSVhNRTogSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24u
CiAgICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwpAQCAtMTM1LDYgKzEzOSw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyos
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldFJl
c3BvbnNlQm9keShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJpbmcq
IGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogCisgICAgdmlydHVhbCB2b2lkIHJlcGxh
eVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKKwogICAgIHZpcnR1
YWwgdm9pZCBjYW5DbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyosIGJvb2wqKTsKICAgICB2
aXJ0dWFsIHZvaWQgY2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFs
IHZvaWQgY2FuQ2xlYXJCcm93c2VyQ29va2llcyhFcnJvclN0cmluZyosIGJvb2wqKTsKQEAgLTE1
Miw3ICsxNTgsOSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3VzZXJBZ2VudE92ZXJyaWRlOwog
ICAgIE93blB0cjxOZXR3b3JrUmVzb3VyY2VzRGF0YT4gbV9yZXNvdXJjZXNEYXRhOwogICAgIGJv
b2wgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseTsKLQorICAgIFhockRhdGEqIG1feGhyRGF0YTsK
KyAgICB1bnNpZ25lZCBsb25nIG1fcHJlZmxpZ2h0UmVxdWVzdElkOworICAgIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+IG1fcHJlZmxpZ2h0SWRUb1JlcXVlc3RJZDsKICAgICAvLyBGSVhNRTogSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3Vs
YXRpb24uCiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IG1fc3R5
bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yOwogICAgIGJvb2wgbV9pc1JlY2FsY3VsYXRpbmdTdHls
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IGUwNWQxM2RlY2IzODE4ZmNmMWJiODMzMjgzNTlkZWFmYjI5NWRmYWMuLmI1MzI4
OGMzOGEzM2UwYTA5ZmI3NTUzYTI2NWRiY2E4YTA5OWVjZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMjUzLDYgKzI1Mywx
NiBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6ZGF0YShjb25zdCBTdHJpbgogICAgIHJldHVybiBtX3JlcXVlc3RJZFRvUmVz
b3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOwogfQogCitYaHJEYXRhKiBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6eGhyRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKK3sKKyAgICByZXR1cm4g
bV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVxdWVzdElkKS0+eGhyRGF0YSgpOwor
fQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRYaHJEYXRhKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBYaHJEYXRhKiB4aHJEYXRhKQoreworICAgIG1fcmVxdWVzdElkVG9SZXNvdXJj
ZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCktPnNldFhockRhdGEoeGhyRGF0YSk7Cit9CisKIFZlY3Rv
cjxTdHJpbmc+IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApp
bmRleCA4ZGZkNWRkMGRiYjIxMWEwYzQ5MmVhNmYxZmQzYTQ4ZTkwNzcxZWM4Li4zZmIzZDgzMzE2
NzQzMjg0MjhiOThiYWZiYzYyMzNhZWE4YzQyNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtNDYsNiArNDYsMTggQEAgY2xhc3Mg
Q2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwogCitzdHJ1Y3QgWGhyRGF0YSB7CitwdWJsaWM6CisgICAgU3RyaW5nIG1fbWV0aG9k
OworICAgIGJvb2wgbV9hc3luYzsKKyAgICBSZWZQdHI8Rm9ybURhdGE+IG1fZm9ybURhdGE7Cisg
ICAgSFRUUEhlYWRlck1hcCBtX2hlYWRlcnM7CisgICAgYm9vbCBtX2luY2x1ZGVDcmVkZW50aWFs
czsKKyAgICBTdHJpbmcgbV9sb2dpbjsKKyAgICBTdHJpbmcgbV9wYXNzd29yZDsKKyAgICBYaHJE
YXRhKFN0cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1E
YXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFs
cywgU3RyaW5nIGxvZ2luLCBTdHJpbmcgcGFzc3dvcmQpOiBtX21ldGhvZChtZXRob2QpLCBtX2Fz
eW5jKGFzeW5jKSwgbV9mb3JtRGF0YShmb3JtRGF0YSksIG1faGVhZGVycyhoZWFkZXJzKSwgbV9p
bmNsdWRlQ3JlZGVudGlhbHMoaW5jbHVkZUNyZWRlbnRpYWxzKSwgbV9sb2dpbihsb2dpbiksIG1f
cGFzc3dvcmQocGFzc3dvcmQpIHsgfQorfTsKKwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEg
ewogcHVibGljOgogICAgIGNsYXNzIFJlc291cmNlRGF0YSB7CkBAIC05MCw2ICsxMDIsOCBAQCBw
dWJsaWM6CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2FjaGVkUmVzb3VyY2U7IH0KICAgICAgICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJj
ZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpIHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNh
Y2hlZFJlc291cmNlOyB9CiAKKyAgICAgICAgWGhyRGF0YSogeGhyRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1feGhyRGF0YTsgfQorICAgICAgICB2b2lkIHNldFhockRhdGEoWGhyRGF0YSogeGhyRGF0
YSkgeyBtX3hockRhdGEgPSB4aHJEYXRhO307CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBo
YXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBk
YXRhTGVuZ3RoKCkgY29uc3Q7CkBAIC0xMDEsNiArMTE1LDcgQEAgcHVibGljOgogICAgICAgICBT
dHJpbmcgbV9mcmFtZUlkOwogICAgICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIFN0cmluZyBt
X2NvbnRlbnQ7CisgICAgICAgIFhockRhdGEqIG1feGhyRGF0YTsKICAgICAgICAgYm9vbCBtX2Jh
c2U2NEVuY29kZWQ7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsK
ICAgICAgICAgYm9vbCBtX2lzQ29udGVudFB1cmdlZDsKQEAgLTEyOCw5ICsxNDMsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJp
bmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCk7CisgICAgdm9pZCBzZXRYaHJEYXRhKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBYaHJEYXRhKik7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVtb3ZlQ2FjaGVkUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgcHJl
c2VydmVkTG9hZGVySWQgPSBTdHJpbmcoKSk7Ci0KKyAgICBYaHJEYXRhKiB4aHJEYXRhKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIHNldFJlc291cmNlc0RhdGFTaXplTGltaXRz
KHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIHNpemVfdCBtYXhpbXVtU2luZ2xl
UmVzb3VyY2VDb250ZW50U2l6ZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IDVjODBhYzE3ODIwOGU1
YjIwOTM5N2Y2MDk3NWFjNzA0NzBiNzA2NzYuLjY0N2Y1OGIxOWM5NDhiOWM5NGM1MjAzZjk4YTg1
MDA2MzBlNjFiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya1BhbmVsLmpzCkBAIC05NjIsOCArOTYyLDIwIEBAIFdlYkluc3BlY3Rvci5OZXR3
b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9jYW5DbGVhckJyb3dz
ZXJDb29raWVzKQogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJDbGVh
ciBicm93c2VyIGNvb2tpZXMiIDogIkNsZWFyIEJyb3dzZXIgQ29va2llcyIpLCB0aGlzLl9jbGVh
ckJyb3dzZXJDb29raWVzLmJpbmQodGhpcykpOwogCisgICAgICAgIGlmIChyZXF1ZXN0ICYmIHJl
cXVlc3QudHlwZS5uYW1lKCkgPT09ICJ4aHIiKSB7CisgICAgICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBsYXkgWEhSIiksIHRoaXMuX3JlcGxheVhIUi5iaW5kKHRo
aXMsIHJlcXVlc3QucmVxdWVzdElkKSk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRT
ZXBhcmF0b3IoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQp
OwogICAgIH0sCisgICAgCisgICAgX3JlcGxheVhIUjogZnVuY3Rpb24ocmVxdWVzdElkKQorICAg
IHsKKyAgICAgICAgTmV0d29ya0FnZW50LnJlcGxheVhIUihyZXF1ZXN0SWQsIHJlcGxheUZpbmlz
aGVkLmJpbmQodGhpcykpOworICAgIH0sCisgICAgCiAKICAgICBfY29weUFsbDogZnVuY3Rpb24o
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1JlcXVlc3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05l
dHdvcmtSZXF1ZXN0LmpzCmluZGV4IDdmODk5NWE4NzY2ZGQzZjkwOGU4Y2EyNWI5NWI5MjFkOGZh
MWEwNjAuLjQxODVhMDJhYmFkYTQwYTI5N2YwY2UwMGJhOTI3MTI2YjgyZDA3OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1JlcXVlc3QuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUmVxdWVzdC5q
cwpAQCAtNzk4LDYgKzc5OCw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nQ29udGVudENhbGxiYWNrcy5sZW5ndGgg
PSAwOwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NvbnRlbnRSZXF1ZXN0ZWQ7CiAgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIE5ldHdvcmtBZ2VudC5nZXRSZXNwb25zZUJvZHkodGhpcy5f
cmVxdWVzdElkLCBvblJlc291cmNlQ29udGVudC5iaW5kKHRoaXMpKTsKICAgICB9LAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmlu
ZGV4IGEwYzY0ODljYjA2MzkwOTBhZDk1MzlkODRiNGUyZTA5ZWY0NWM2YmIuLjk3NDQ3NGQ5NTdk
MGFjYmU5ODNhMWFjMGRmZjgyNzgwMmIwNTkzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnMKICAgICBBU1NFUlQobV9jbGllbnQpOwogCiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikgewor
ICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyICYmIG1fYXN5bmMpIHsKICAgICAg
ICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2UobV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmll
ciwgcmVzcG9uc2UpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVSZXNvdXJjZVJlc3BvbnNlKGNvb2tpZSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwg
bG9hZGVyLCByZXNwb25zZSwgMCk7CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNv
bnN0IGNoYXIKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291
cmNlKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVz
dElkZW50aWZpZXIpCisgICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgJiYgbV9h
c3luYykKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YSht
X2RvY3VtZW50LT5mcmFtZSgpLCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyLCAwLCAwLCBk
YXRhTGVuZ3RoKTsKICNlbmRpZgogCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkK
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAjaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICBpZiAobV9w
cmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciAmJiBtX2FzeW5jKQogICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpbmlzaExvYWRpbmcobV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9k
b2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIG1fcHJlZmxpZ2h0
UmVxdWVzdElkZW50aWZpZXIsIGZpbmlzaFRpbWUpOwogI2VuZGlmCiAKQEAgLTMzMCwxNCArMzMw
LDE0IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgIGlm
IChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyICYmIG1fYXN5bmMpCiAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9kb2N1bWVudC0+ZnJhbWUoKSwg
bV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIG1fcHJlZmxp
Z2h0UmVxdWVzdElkZW50aWZpZXIsIGVycm9yKTsKICNlbmRpZgogCiAgICAgbV9jbGllbnQtPmRp
ZEZhaWwoZXJyb3IpOwogfQotCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxp
Z2h0U3VjY2VzcygpCisKIHsKICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiBhY3R1YWxSZXF1
ZXN0OwogICAgIGFjdHVhbFJlcXVlc3Quc3dhcChtX2FjdHVhbFJlcXVlc3QpOwpAQCAtMzYzLDcg
KzM2Myw2IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAgICAgbV9vcHRpb25zLnNlY3VyaXR5
Q2hlY2sgPSBzZWN1cml0eUNoZWNrOwogICAgIEFTU0VSVChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8
IHJlcXVlc3RVUkwudXNlcigpLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fc2FtZU9yaWdpblJl
cXVlc3QgfHwgcmVxdWVzdFVSTC5wYXNzKCkuaXNFbXB0eSgpKTsKLQogICAgIGlmIChtX2FzeW5j
KSB7CiAgICAgICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBtX29wdGlvbnM7
CiAgICAgICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5DcmVkZW50aWFsUG9saWN5ID0gRG9Ob3RBc2tD
bGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzOwpAQCAtMzgyLDYgKzM4MSw4IEBAIHZvaWQg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFNlY3VyCiAgICAgICAgICAgICBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlm
aWVyID0gbV9kb2N1bWVudC0+ZnJhbWUoKS0+cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlx
dWVJZGVudGlmaWVyKCk7CiAgICAgICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7CiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxTZW5kUmVxdWVzdChtX2RvY3VtZW50LT5mcmFtZSgpLCBtX3ByZWZsaWdo
dFJlcXVlc3RJZGVudGlmaWVyLCBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1l
bnRMb2FkZXIoKSwgbmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgIH0gZWxz
ZSBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikgeworICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQobV9kb2N1bWVudCwg
bV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgIH0KICNlbmRpZgogICAgICAg
ICBBU1NFUlQoIW1fcmVzb3VyY2UpOwpAQCAtMzk5LDYgKzQwMCwxMSBAQCB2b2lkIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBTZWN1cgogICAgIGlmIChtX2RvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICBpZGVudGlm
aWVyID0gbV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkocmVxdWVzdCwgbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25z
ZSwgZGF0YSk7CiAKKyAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQobV9k
b2N1bWVudCwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcik7CisgICAgZWxzZQorICAgICAg
ICBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKwogICAgIC8vIE5v
IGV4Y2VwdGlvbiBmb3IgZmlsZTovLy8gcmVzb3VyY2VzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5
NjIyOTg+LgogICAgIC8vIEFsc28sIGlmIHdlIGhhdmUgYW4gSFRUUCByZXNwb25zZSwgdGhlbiBp
dCB3YXNuJ3QgYSBuZXR3b3JrIGVycm9yIGluIGZhY3QuCiAgICAgaWYgKCFlcnJvci5pc051bGwo
KSAmJiAhcmVxdWVzdFVSTC5pc0xvY2FsRmlsZSgpICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkgPD0gMCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMTExYTY0
OWExM2U3NmFlZjgzNzBiMTgyYzk1MWNhOWU3NWNmYjIyZS4uYjYyYWQ5ZjY1NDBiMTJlOGRlZTA1
MGQ2Yzc2ZWQyZmQwODEzMTJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CkBAIC02ODQsNiArNjg0LDEyIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmRCeXRlc0RhdGEo
Y29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRXhjZXB0aW9uQ29kCiAgICAgY3JlYXRl
UmVxdWVzdChlYyk7CiB9CiAKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9y
KFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0gZm9ybURhdGE7CisgICAgY3JlYXRlUmVxdWVzdChlYyk7
Cit9CisKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAjaWYgRU5BQkxFKEJMT0IpCkBAIC03MTgsNiArNzI0LDggQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXF1ZXN0LnNl
dFRhcmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1hIUik7CiAjZW5kaWYKIAorICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6RGlkQ3JlYXRlWGhyUmVxdWVzdChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIG1fbWV0aG9kLCBtX2FzeW5jLCBtX3JlcXVlc3RFbnRpdHlCb2R5ID8g
bV9yZXF1ZXN0RW50aXR5Qm9keS0+ZGVlcENvcHkoKSA6IDAsIG1fcmVxdWVzdEhlYWRlcnMsIG1f
aW5jbHVkZUNyZWRlbnRpYWxzLCBtX3VybC51c2VyKCksIG1fdXJsLnBhc3MoKSk7CisKICAgICBp
ZiAobV9yZXF1ZXN0RW50aXR5Qm9keSkgewogICAgICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkdF
VCIpOwogICAgICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkhFQUQiKTsKQEAgLTc1OSw5ICs3Njcs
MTEgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBl
YykKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSU3luY2hyb25v
dXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIH0KIAorCiAgICAgaWYgKCFtX2V4
Y2VwdGlvbkNvZGUgJiYgbV9lcnJvcikKICAgICAgICAgbV9leGNlcHRpb25Db2RlID0gWE1MSHR0
cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOwogICAgIGVjID0gbV9leGNlcHRpb25Db2Rl
OworCiB9CiAKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmFib3J0KCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmgKaW5kZXggNjA2NDI4Yjc2YzcxNjQwY2QwYzgxN2MzMThlOTg1Y2FiMmZmNDgy
Yy4uY2M2Y2JjNTBjMzYwMTY1MDg5ZTI2NTk5NzVjZDEwZDMxMTIyZWY1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTEwNSw2ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgQmxv
YiogcmVzcG9uc2VCbG9iKEV4Y2VwdGlvbkNvZGUmKTsKICAgICBCbG9iKiBvcHRpb25hbFJlc3Bv
bnNlQmxvYigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VCbG9iLmdldCgpOyB9CiAKKyAgICB2
b2lkIHNlbmRGcm9tSW5zcGVjdG9yKFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBFeGNlcHRpb25Db2Rl
Jik7CisKICAgICAvLyBFeHBvc2UgSFRUUCB2YWxpZGF0aW9uIG1ldGhvZHMgZm9yIG90aGVyIHVu
dHJ1c3RlZCByZXF1ZXN0cy4KICAgICBzdGF0aWMgYm9vbCBpc0FsbG93ZWRIVFRQTWV0aG9kKGNv
bnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBTdHJpbmcgdXBwZXJjYXNlS25vd25IVFRQTWV0aG9k
KGNvbnN0IFN0cmluZyYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160961</attachid>
            <date>2012-08-28 06:28:02 -0700</date>
            <delta_ts>2012-08-29 07:14:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120828172752.patch</filename>
            <type>text/plain</type>
            <size>23092</size>
            <attacher name="Pavel Chadnov">chadnov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBjNWNjOGM2NWQxZGE3
ODJiODkzZmFjZDU3YmM5ZmNjYjc3ZTg4OC4uMDhlYjI1MjU5YjI2ZTJmMDcyMGYwOGNhZDBiNDQ3
ZDg3YTBiOTlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA4LTI4ICBQYXZl
bCBDaGFkbm92ICA8Y2hhZG5vdkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFhIUiByZXBsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgWEhSIHJlcGxheSBpbiBuZXR3b3JrIHRhYi4gICAgICAgIAorICAgICAgICAKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGln
aHRSZXF1ZXN0U3VjY2VkZWRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVYSFJSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpwcmVmbGlnaHRS
ZXF1ZXN0U3VjY2VkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNl
QWdlbnQ6OnJlcGxheVhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlhIUkRhdGEp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6c2V0WEhSUmVwbGF5RGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmg6CisgICAgICAgIChYSFJSZXBsYXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OlhIUlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpYSFJEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OnNldFhockRhdGEpOgorICAgICAgICAoUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKE5ldHdvcmtS
ZXNvdXJjZXNEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5l
bC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX2Nv
bnRleHRNZW51KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5
cGUuX3JlcGxheVhIUik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6cHJlZmxpZ2h0U3VjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJl
cXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmRGcm9tSW5z
cGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgor
ICAgICAgICAoWE1MSHR0cFJlcXVlc3QpOgorCiAyMDEyLTA4LTI3ICBKdXN0aW4gTm92b3NhZCAg
PGp1bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEZpeGluZyBpbmZpbml0
ZSByZWN1cnNpb24gaW4gQ2FudmFzMkRMYXllck1hbmFnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgppbmRleCBkYWUzNjg5NDhlOTcxZWU2MWI5N2Q1ZGQ4NjY1MmRjOGZi
Mzk4OTU4Li4yNzExODZmY2E5N2ZmYWZiNjUyNjRlZWMzYTM3M2FmYjQyOTIyYmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC04NzQsNiArODc0LDE1IEBACiAg
ICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAibmFtZSI6ICJyZXBsYXlYSFIiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJSZXBsYXlzIFhIUi4iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJ
ZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSBuZXR3b3JrIHJlcXVlc3QgdG8g
Z2V0IGNvbnRlbnQgZm9yLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
InJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJjYW5DbGVhckJyb3dzZXJDYWNoZSIsCiAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRlbGxzIHdoZXRoZXIgY2xlYXJpbmcgYnJv
d3NlciBjYWNoZSBpcyBzdXBwb3J0ZWQuIiwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAKaW5kZXggYWY0NDcyOGM2NDYxMDA4YmFmMzk0N2YzZGI2OTdmNjI0ZmE2YzZlNy4u
ZjQ4YjA2ZWQzNjZhYTUwZDlhYTA1YmI1NmMzYmZmZTFhMDgwNDU5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAg
LTMzMCw2ICszMzAsMTggQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5n
ZVhIUlJlYWR5U3RhdGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW0KICAgICAgICAgdGltZWxp
bmVBZ2VudC0+ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZSgpOwogfQogCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJv
b2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKK3sK
KyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICAgICAgcmVzb3VyY2VB
Z2VudC0+ZGlkQ3JlYXRlWEhSUmVxdWVzdChtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVy
cywgaW5jbHVkZUNyZWRlbnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpOworfQorCit2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkKQorewor
ICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQorICAgICAgICByZXNvdXJjZUFn
ZW50LT5wcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQoaWQpOworfQorCiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVu
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgRXZl
bnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2
ZW50Q29udGV4dD4mIGFuY2VzdG9ycywgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGludCB0
aW1lbGluZUFnZW50SWQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGRiMzM1YmZhZjQ1MGNjMzE4Y2JjZTRkZjYx
ODExMjdkZDI1NGY1YzguLmE0Yzc1NjcxZmM2MzA0Njk5MDkzNzA1YTNlMDMzOTgyYjA4ODg0YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKQEAgLTE2MSw2ICsxNjEsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdp
bGxQcm9jZXNzVGFzayhQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHJvY2Vzc1Rhc2soUGFn
ZSopOwogCisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlWEhSUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgU3RyaW5nLCBib29sLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgSFRU
UEhlYWRlck1hcCYsIGJvb2wsIFN0cmluZywgU3RyaW5nKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRD
cmVhdGVYSFJSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgU3RyaW5nLCBib29sLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2wsIFN0cmluZywg
U3RyaW5nKTsKKyAgICBzdGF0aWMgdm9pZCBwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcpOworICAgIHN0YXRpYyB2b2lkIHByZWZs
aWdodFJlcXVlc3RTdWNjZWRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxv
bmcpOworCiAgICAgc3RhdGljIHZvaWQgYXBwbHlVc2VyQWdlbnRPdmVycmlkZShGcmFtZSosIFN0
cmluZyopOwogICAgIHN0YXRpYyB2b2lkIGFwcGx5U2NyZWVuV2lkdGhPdmVycmlkZShGcmFtZSos
IGxvbmcqKTsKICAgICBzdGF0aWMgdm9pZCBhcHBseVNjcmVlbkhlaWdodE92ZXJyaWRlKEZyYW1l
KiwgbG9uZyopOwpAQCAtMTE2MSw2ICsxMTY2LDIzIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
CiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
cmVhdGVYSFJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFN0cmluZyBt
ZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBI
VFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU3RyaW5nIGxv
Z2luLCBTdHJpbmcgcGFzc3dvcmQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICBkaWRDcmVhdGVYSFJSZXF1ZXN0SW1w
bChpbnN0cnVtZW50aW5nQWdlbnRzLCBtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywg
aW5jbHVkZUNyZWRlbnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpOworI2VuZGlmCit9CisKK2lubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVk
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWQpCit7Cisj
aWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQor
ICAgICAgICBwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMs
IGlkKTsKKyNlbmRpZgorfQorCisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA5ZDkyOWM5YTEwYmVkMzRj
MjljMjg5NDgxYWIwYTRhNWE2Mjg2OTE0Li4zNzU0MDM2OTYwMjA0Y2Y0Mjk4MTYxYmY2ZTc0OTI2
OThlZmFhYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0
RnJhbWUuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJYTUxIdHRwUmVxdWVz
dC5oIgogCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51
bWJlci5oPgpAQCAtMjAzLDEzICsyMDQsMzEgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fklu
c3BlY3RvclJlc291cmNlQWdlbnQoKQogICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRz
LT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpOwogfQogCit2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZENyZWF0ZVhIUlJlcXVlc3QoU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFz
c1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMs
IGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkK
K3sKKyAgICBtX1hIUkRhdGEgPSBuZXcgWEhSUmVwbGF5RGF0YShtZXRob2QsIGFzeW5jLCBmb3Jt
RGF0YSwgaGVhZGVycywgaW5jbHVkZUNyZWRlbnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpOworfQor
Cit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZCh1
bnNpZ25lZCBsb25nIGlkKQoreworICAgIG1fcHJlZmxpZ2h0UmVxdWVzdElkID0gaWQ7Cit9CisK
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAg
IFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlm
aWVyKTsKICAgICBtX3Jlc291cmNlc0RhdGEtPnJlc291cmNlQ3JlYXRlZChyZXF1ZXN0SWQsIG1f
cGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGhlYWRlcnMgPSBtX3N0YXRlLT5nZXRPYmplY3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRy
YVJlcXVlc3RIZWFkZXJzKTsKKyAgICBpZiAobV9YSFJEYXRhKSB7CisgICAgICAgIG1fcmVzb3Vy
Y2VzRGF0YS0+c2V0WEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQsIG1fWEhSRGF0YSk7CisgICAgICAg
IG1fWEhSRGF0YSA9IDA7CisgICAgfSBlbHNlIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZCkgewor
ICAgICAgICBtX3ByZWZsaWdodElkVG9SZXF1ZXN0SWQuYWRkKHJlcXVlc3RJZCwgSWRlbnRpZmll
cnNGYWN0b3J5OjpyZXF1ZXN0SWQobV9wcmVmbGlnaHRSZXF1ZXN0SWQpKTsKKyAgICAgICAgbV9w
cmVmbGlnaHRSZXF1ZXN0SWQgPSAwOworICAgIH0KIAorCisgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gaGVhZGVycyA9IG1fc3RhdGUtPmdldE9iamVjdChSZXNvdXJjZUFnZW50U3RhdGU6OmV4
dHJhUmVxdWVzdEhlYWRlcnMpOwogICAgIGlmIChoZWFkZXJzKSB7CiAgICAgICAgIEluc3BlY3Rv
ck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVycy0+ZW5kKCk7CiAgICAgICAgIGZv
ciAoSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNTcwLDYgKzU4OSwyMiBAQCB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cgogICAgICplcnJvclN0cmluZyA9ICJObyBkYXRhIGZvdW5kIGZvciByZXNvdXJjZSB3
aXRoIGdpdmVuIGlkZW50aWZpZXIiOwogfQogCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OnJlcGxheVhIUihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkKQoreworICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4gWEhSID0gWE1MSHR0cFJlcXVlc3Q6
OmNyZWF0ZShtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOworICAgIEV4Y2Vw
dGlvbkNvZGUgY29kZTsKKyAgICBTdHJpbmcgYWN0dWFsUmVxdWVzdElkID0gbV9wcmVmbGlnaHRJ
ZFRvUmVxdWVzdElkLmNvbnRhaW5zKHJlcXVlc3RJZCkgPyBtX3ByZWZsaWdodElkVG9SZXF1ZXN0
SWQuZ2V0KHJlcXVlc3RJZCkgOiByZXF1ZXN0SWQ7CisKKyAgICBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRh
dGEoYWN0dWFsUmVxdWVzdElkKTsKKyAgICBYSFJSZXBsYXlEYXRhKiBYSFJEYXRhID0gbV9yZXNv
dXJjZXNEYXRhLT5YSFJEYXRhKGFjdHVhbFJlcXVlc3RJZCk7CisKKyAgICBIVFRQSGVhZGVyTWFw
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBYSFJEYXRhLT5tX2hlYWRlcnMuZW5kKCk7CisgICAgWEhS
LT5vcGVuKFhIUkRhdGEtPm1fbWV0aG9kLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgcmVzb3VyY2VE
YXRhLT51cmwoKSksIFhIUkRhdGEtPm1fYXN5bmMsIGNvZGUpOworICAgIGZvciAoSFRUUEhlYWRl
ck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBYSFJEYXRhLT5tX2hlYWRlcnMuYmVnaW4oKTsgaXQh
PSBlbmQ7ICsraXQpCisgICAgICAgIFhIUi0+c2V0UmVxdWVzdEhlYWRlcihpdC0+Zmlyc3QsIGl0
LT5zZWNvbmQsIGNvZGUpOworICAgIFhIUi0+c2VuZEZyb21JbnNwZWN0b3IoWEhSRGF0YS0+bV9m
b3JtRGF0YSwgY29kZSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2FuQ2xl
YXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqLCBib29sKiByZXN1bHQpCiB7CiAgICAgKnJlc3Vs
dCA9IG1fY2xpZW50LT5jYW5DbGVhckJyb3dzZXJDYWNoZSgpOwpAQCAtNjEyLDYgKzY0Nyw5IEBA
IEluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluCiAgICAgLCBtX2Zyb250ZW5kKDApCiAgICAgLCBtX3Jl
c291cmNlc0RhdGEoYWRvcHRQdHIobmV3IE5ldHdvcmtSZXNvdXJjZXNEYXRhKCkpKQogICAgICwg
bV9sb2FkaW5nWEhSU3luY2hyb25vdXNseShmYWxzZSkKKyAgICAsIG1fWEhSRGF0YSgwKQorICAg
ICwgbV9wcmVmbGlnaHRSZXF1ZXN0SWQoMCkKKyAgICAsIG1fcHJlZmxpZ2h0SWRUb1JlcXVlc3RJ
ZCgpCiAgICAgLCBtX2lzUmVjYWxjdWxhdGluZ1N0eWxlKGZhbHNlKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggNWM5
ZmJlMjYyZTZlMGZiYWNhNzM5YWE4MmE2ZmIzNTY5NTk1MjM0ZC4uZWVjYTFjMDk0NTdlMmMyOTI3
MTU2OTM0ZWNiYjViYmY2NzVhNzMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC01MCw3ICs1MCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBE
b2N1bWVudExvYWRlcjsKK2NsYXNzIEZvcm1EYXRhOwogY2xhc3MgRnJhbWU7CitjbGFzcyBIVFRQ
SGVhZGVyTWFwOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7
CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKQEAgLTY2LDYgKzY4LDcgQEAgY2xhc3MgUmVzb3Vy
Y2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNl
OwogY2xhc3MgU2hhcmVkQnVmZmVyOworc3RydWN0IFhIUlJlcGxheURhdGE7CiAKICNpZiBFTkFC
TEUoV0VCX1NPQ0tFVFMpCiBzdHJ1Y3QgV2ViU29ja2V0RnJhbWU7CkBAIC0xMDcsNiArMTEwLDgg
QEAgcHVibGljOgogICAgIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNv
dXJjZSopOwogCiAgICAgdm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlKFN0cmluZyogdXNlckFn
ZW50KTsKKyAgICB2b2lkIGRpZENyZWF0ZVhIUlJlcXVlc3QoU3RyaW5nIG1ldGhvZCwgYm9vbCBh
c3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gYm9keSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVh
ZGVycywgYm9vbCBpbmNsdWRlQ3JlbmRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNz
d29yZCk7CisgICAgdm9pZCBwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQodW5zaWduZWQgbG9uZyBp
ZCk7CiAKICAgICAvLyBGSVhNRTogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBzaG91bGQgbm93IGJl
IGF3YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24uCiAgICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVT
dHlsZSgpOwpAQCAtMTM1LDYgKzE0MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29k
ZWQpOwogCisgICAgdmlydHVhbCB2b2lkIHJlcGxheVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKTsKKwogICAgIHZpcnR1YWwgdm9pZCBjYW5DbGVhckJyb3dzZXJDYWNo
ZShFcnJvclN0cmluZyosIGJvb2wqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCcm93c2VyQ2Fj
aGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuQ2xlYXJCcm93c2VyQ29va2ll
cyhFcnJvclN0cmluZyosIGJvb2wqKTsKQEAgLTE1Myw2ICsxNjAsOSBAQCBwcml2YXRlOgogICAg
IE93blB0cjxOZXR3b3JrUmVzb3VyY2VzRGF0YT4gbV9yZXNvdXJjZXNEYXRhOwogICAgIGJvb2wg
bV9sb2FkaW5nWEhSU3luY2hyb25vdXNseTsKIAorICAgIFhIUlJlcGxheURhdGEqIG1fWEhSRGF0
YTsKKyAgICB1bnNpZ25lZCBsb25nIG1fcHJlZmxpZ2h0UmVxdWVzdElkOworICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IG1fcHJlZmxpZ2h0SWRUb1JlcXVlc3RJZDsKICAgICAvLyBGSVhNRTog
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2Fs
Y3VsYXRpb24uCiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IG1f
c3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yOwogICAgIGJvb2wgbV9pc1JlY2FsY3VsYXRpbmdT
dHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCmluZGV4IGUwNWQxM2RlY2IzODE4ZmNmMWJiODMzMjgzNTlkZWFmYjI5NWRmYWMuLjBh
N2ZmMDQ4MDE4NDhiMWY1MWViYjJmNThlZjI3MDRlNDdhYjFjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtMjUzLDYgKzI1
MywxNiBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6ZGF0YShjb25zdCBTdHJpbgogICAgIHJldHVybiBtX3JlcXVlc3RJZFRv
UmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOwogfQogCitYSFJSZXBsYXlEYXRhKiBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6WEhSRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKK3sKKyAg
ICByZXR1cm4gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVxdWVzdElkKS0+WEhS
RGF0YSgpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRYSFJSZXBsYXlEYXRh
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBYSFJSZXBsYXlEYXRhKiBYSFJEYXRhKQoreworICAg
IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCktPnNldFhIUlJlcGxh
eURhdGEoWEhSRGF0YSk7Cit9CisKIFZlY3RvcjxTdHJpbmc+IE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7
CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCA4ZGZkNWRkMGRiYjIxMWEwYzQ5MmVhNmYx
ZmQzYTQ4ZTkwNzcxZWM4Li4yODM4MWQyOWIzNDZlNzdjOWQzMzY0MTkyOWYwYWIwZDU1OGY5MjI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
aApAQCAtNDYsNiArNDYsMTggQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRC
dWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCitzdHJ1Y3QgWEhSUmVwbGF5RGF0
YSB7CitwdWJsaWM6CisgICAgU3RyaW5nIG1fbWV0aG9kOworICAgIGJvb2wgbV9hc3luYzsKKyAg
ICBSZWZQdHI8Rm9ybURhdGE+IG1fZm9ybURhdGE7CisgICAgSFRUUEhlYWRlck1hcCBtX2hlYWRl
cnM7CisgICAgYm9vbCBtX2luY2x1ZGVDcmVkZW50aWFsczsKKyAgICBTdHJpbmcgbV9sb2dpbjsK
KyAgICBTdHJpbmcgbV9wYXNzd29yZDsKKyAgICBYSFJSZXBsYXlEYXRhKFN0cmluZyBtZXRob2Qs
IGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVh
ZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU3RyaW5nIGxvZ2luLCBT
dHJpbmcgcGFzc3dvcmQpOiBtX21ldGhvZChtZXRob2QpLCBtX2FzeW5jKGFzeW5jKSwgbV9mb3Jt
RGF0YShmb3JtRGF0YSksIG1faGVhZGVycyhoZWFkZXJzKSwgbV9pbmNsdWRlQ3JlZGVudGlhbHMo
aW5jbHVkZUNyZWRlbnRpYWxzKSwgbV9sb2dpbihsb2dpbiksIG1fcGFzc3dvcmQocGFzc3dvcmQp
IHsgfQorfTsKKwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogcHVibGljOgogICAgIGNs
YXNzIFJlc291cmNlRGF0YSB7CkBAIC05MCw2ICsxMDIsOCBAQCBwdWJsaWM6CiAgICAgICAgIENh
Y2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVz
b3VyY2U7IH0KICAgICAgICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UpIHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlOyB9CiAK
KyAgICAgICAgWEhSUmVwbGF5RGF0YSogWEhSRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fWEhSRGF0
YTsgfQorICAgICAgICB2b2lkIHNldFhIUlJlcGxheURhdGEoWEhSUmVwbGF5RGF0YSogWEhSRGF0
YSkgeyBtX1hIUkRhdGEgPSBYSFJEYXRhO307CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBo
YXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBk
YXRhTGVuZ3RoKCkgY29uc3Q7CkBAIC0xMDEsNiArMTE1LDcgQEAgcHVibGljOgogICAgICAgICBT
dHJpbmcgbV9mcmFtZUlkOwogICAgICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIFN0cmluZyBt
X2NvbnRlbnQ7CisgICAgICAgIFhIUlJlcGxheURhdGEqIG1fWEhSRGF0YTsKICAgICAgICAgYm9v
bCBtX2Jhc2U2NEVuY29kZWQ7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1
ZmZlcjsKICAgICAgICAgYm9vbCBtX2lzQ29udGVudFB1cmdlZDsKQEAgLTEyOCw5ICsxNDMsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZl
cihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CisgICAgdm9pZCBzZXRYSFJSZXBsYXlEYXRhKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBYSFJSZXBsYXlEYXRhKik7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGNsZWFy
KGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQgPSBTdHJpbmcoKSk7CiAKKyAgICBYSFJS
ZXBsYXlEYXRhKiBYSFJEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKICAgICB2b2lkIHNl
dFJlc291cmNlc0RhdGFTaXplTGltaXRzKHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNp
emUsIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7CiAKIHByaXZhdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQ
YW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVs
LmpzCmluZGV4IDVjODBhYzE3ODIwOGU1YjIwOTM5N2Y2MDk3NWFjNzA0NzBiNzA2NzYuLjY0N2Y1
OGIxOWM5NDhiOWM5NGM1MjAzZjk4YTg1MDA2MzBlNjFiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBAIC05NjIsOCArOTYy
LDIwIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGlmICh0aGlzLl9jYW5DbGVhckJyb3dzZXJDb29raWVzKQogICAgICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2Vy
Q2FzZU1lbnVUaXRsZXMoKSA/ICJDbGVhciBicm93c2VyIGNvb2tpZXMiIDogIkNsZWFyIEJyb3dz
ZXIgQ29va2llcyIpLCB0aGlzLl9jbGVhckJyb3dzZXJDb29raWVzLmJpbmQodGhpcykpOwogCisg
ICAgICAgIGlmIChyZXF1ZXN0ICYmIHJlcXVlc3QudHlwZS5uYW1lKCkgPT09ICJ4aHIiKSB7Cisg
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBsYXkgWEhSIiks
IHRoaXMuX3JlcGxheVhIUi5iaW5kKHRoaXMsIHJlcXVlc3QucmVxdWVzdElkKSk7CisgICAgICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgfQorCiAgICAgICAg
IGNvbnRleHRNZW51LnNob3coZXZlbnQpOwogICAgIH0sCisgICAgCisgICAgX3JlcGxheVhIUjog
ZnVuY3Rpb24ocmVxdWVzdElkKQorICAgIHsKKyAgICAgICAgTmV0d29ya0FnZW50LnJlcGxheVhI
UihyZXF1ZXN0SWQsIHJlcGxheUZpbmlzaGVkLmJpbmQodGhpcykpOworICAgIH0sCisgICAgCiAK
ICAgICBfY29weUFsbDogZnVuY3Rpb24oKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYTBjNjQ4OWNiMDYzOTA5
MGFkOTUzOWQ4NGI0ZTJlMDllZjQ1YzZiYi4uZmFkZWQxNGUxOWNlMzU2ZjU3M2RlNjU2MTlhMGYw
ZTYyYWY0YzkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29ucwogICAgIEFTU0VSVChtX2NsaWVudCk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAg
IGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKSB7CisgICAgaWYgKG1fcHJlZmxpZ2h0
UmVxdWVzdElkZW50aWZpZXIgJiYgbV9hc3luYykgewogICAgICAgICBEb2N1bWVudExvYWRlciog
bG9hZGVyID0gbV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCk7
CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2RvY3VtZW50
LT5mcmFtZSgpLCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2Uo
Y29va2llLCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlLCAw
KTsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0
YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgY2hhcgogICAgIEFTU0VS
VF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICBp
ZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciAmJiBtX2FzeW5jKQogICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVEYXRhKG1fZG9jdW1lbnQtPmZyYW1lKCks
IG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIsIDAsIDAsIGRhdGFMZW5ndGgpOwogI2VuZGlm
CiAKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBk
b3VibGUgZmluaXNoVGltZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChtX3By
ZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVu
dGlmaWVyICYmIG1fYXN5bmMpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmluaXNoTG9hZGluZyhtX2RvY3VtZW50LT5mcmFtZSgpLCBtX2RvY3VtZW50LT5mcmFtZSgpLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwg
ZmluaXNoVGltZSk7CiAjZW5kaWYKIApAQCAtMzMwLDcgKzMzMCw3IEBAIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgZG91YmxlCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmICht
X3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJ
ZGVudGlmaWVyICYmIG1fYXN5bmMpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmFpbExvYWRpbmcobV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9kb2N1bWVudC0+ZnJhbWUoKS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIs
IGVycm9yKTsKICNlbmRpZgogCkBAIC0zODIsNiArMzgyLDggQEAgdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
U2VjdXIKICAgICAgICAgICAgIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgPSBtX2RvY3Vt
ZW50LT5mcmFtZSgpLT5wYWdlKCktPnByb2dyZXNzKCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIo
KTsKICAgICAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSA9IFJlc291
cmNlUmVzcG9uc2UoKTsKICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFNlbmRSZXF1ZXN0KG1fZG9jdW1lbnQtPmZyYW1lKCksIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50
aWZpZXIsIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCBu
ZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgfSBlbHNlIGlmIChtX3ByZWZs
aWdodFJlcXVlc3RJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZChtX2RvY3VtZW50LCBtX3ByZWZsaWdodFJl
cXVlc3RJZGVudGlmaWVyKTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIEFTU0VSVCghbV9y
ZXNvdXJjZSk7CkBAIC0zOTksNiArNDAxLDExIEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAg
ICAgaWYgKG1fZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIGlkZW50aWZpZXIgPSBtX2RvY3Vt
ZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXF1ZXN0
LCBtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIAor
ICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZChtX2RvY3VtZW50LCBtX3By
ZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICBlbHNlCisgICAgICAgIG1fcHJlZmxpZ2h0
UmVxdWVzdElkZW50aWZpZXIgPSBpZGVudGlmaWVyOworCiAgICAgLy8gTm8gZXhjZXB0aW9uIGZv
ciBmaWxlOi8vLyByZXNvdXJjZXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDk2MjI5OD4uCiAgICAg
Ly8gQWxzbywgaWYgd2UgaGF2ZSBhbiBIVFRQIHJlc3BvbnNlLCB0aGVuIGl0IHdhc24ndCBhIG5l
dHdvcmsgZXJyb3IgaW4gZmFjdC4KICAgICBpZiAoIWVycm9yLmlzTnVsbCgpICYmICFyZXF1ZXN0
VVJMLmlzTG9jYWxGaWxlKCkgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA8PSAwKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAxMTFhNjQ5YTEzZTc2YWVmODM3
MGIxODJjOTUxY2E5ZTc1Y2ZiMjJlLi5kZjUzM2E5YzQyMjI5YjYzNmIzZTg3YmQ4MGJhMzQ1MTg4
YjI5ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTY4NCw2ICs2
ODQsMTIgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2VuZEJ5dGVzRGF0YShjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3QgbGVuZ3RoLCBFeGNlcHRpb25Db2QKICAgICBjcmVhdGVSZXF1ZXN0KGVjKTsK
IH0KIAordm9pZCBYTUxIdHRwUmVxdWVzdDo6c2VuZEZyb21JbnNwZWN0b3IoUGFzc1JlZlB0cjxG
b3JtRGF0YT4gZm9ybURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIG1fcmVxdWVzdEVu
dGl0eUJvZHkgPSBmb3JtRGF0YTsKKyAgICBjcmVhdGVSZXF1ZXN0KGVjKTsKK30KKwogdm9pZCBY
TUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykKIHsKICNpZiBF
TkFCTEUoQkxPQikKQEAgLTcxOCw2ICs3MjQsOCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXF1ZXN0KEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJlcXVlc3Quc2V0VGFyZ2V0VHlwZShS
ZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzWEhSKTsKICNlbmRpZgogCisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVYSFJSZXF1ZXN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgbV9tZXRob2QsIG1fYXN5bmMsIG1fcmVxdWVzdEVudGl0eUJvZHkgPyBtX3JlcXVlc3RFbnRp
dHlCb2R5LT5kZWVwQ29weSgpIDogMCwgbV9yZXF1ZXN0SGVhZGVycywgbV9pbmNsdWRlQ3JlZGVu
dGlhbHMsIG1fdXJsLnVzZXIoKSwgbV91cmwucGFzcygpKTsKKwogICAgIGlmIChtX3JlcXVlc3RF
bnRpdHlCb2R5KSB7CiAgICAgICAgIEFTU0VSVChtX21ldGhvZCAhPSAiR0VUIik7CiAgICAgICAg
IEFTU0VSVChtX21ldGhvZCAhPSAiSEVBRCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aAppbmRleCA2MDY0MjhiNzZjNzE2NDBjZDBjODE3YzMxOGU5ODVjYWIyZmY0ODJjLi5jYzZjYmM1
MGMzNjAxNjUwODllMjY1OTk3NWNkMTBkMzExMjJlZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHB1YmxpYzoKICAgICBCbG9iKiByZXNwb25z
ZUJsb2IoRXhjZXB0aW9uQ29kZSYpOwogICAgIEJsb2IqIG9wdGlvbmFsUmVzcG9uc2VCbG9iKCkg
Y29uc3QgeyByZXR1cm4gbV9yZXNwb25zZUJsb2IuZ2V0KCk7IH0KIAorICAgIHZvaWQgc2VuZEZy
b21JbnNwZWN0b3IoUGFzc1JlZlB0cjxGb3JtRGF0YT4sIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAg
IC8vIEV4cG9zZSBIVFRQIHZhbGlkYXRpb24gbWV0aG9kcyBmb3Igb3RoZXIgdW50cnVzdGVkIHJl
cXVlc3RzLgogICAgIHN0YXRpYyBib29sIGlzQWxsb3dlZEhUVFBNZXRob2QoY29uc3QgU3RyaW5n
Jik7CiAgICAgc3RhdGljIFN0cmluZyB1cHBlcmNhc2VLbm93bkhUVFBNZXRob2QoY29uc3QgU3Ry
aW5nJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161220</attachid>
            <date>2012-08-29 07:14:53 -0700</date>
            <delta_ts>2012-08-29 08:25:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120829181442.patch</filename>
            <type>text/plain</type>
            <size>24555</size>
            <attacher name="Pavel Chadnov">chadnov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBjNWNjOGM2NWQxZGE3
ODJiODkzZmFjZDU3YmM5ZmNjYjc3ZTg4OC4uZDYwOTQwMTQ2ZDdmY2Q0MjRiYTEyOTVmODNkNjc4
YTYyMjVkMDg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA4LTI5ICBQYXZl
bCBDaGFkbm92ICA8Y2hhZG5vdkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFhIUiByZXBsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgWEhSIHJlcGxheSBpbiBuZXR3b3JrIHRhYi4gICAgICAgIAorICAgICAgICAKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdElt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGln
aHRSZXF1ZXN0U3VjY2VkZWRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVYSFJSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpwcmVmbGlnaHRS
ZXF1ZXN0U3VjY2VkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNl
QWdlbnQ6OnJlcGxheVhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFn
ZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6WEhSUmVwbGF5
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6WEhSRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0WEhSUmVwbGF5RGF0
YSk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAg
IChYSFJSZXBsYXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6WEhSRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRYSFJSZXBsYXlE
YXRhKToKKyAgICAgICAgKFJlc291cmNlRGF0YSk6CisgICAgICAgIChOZXR3b3JrUmVzb3VyY2Vz
RGF0YSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9jb250ZXh0TWVu
dSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9yZXBs
YXlYSFIpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRh
UmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJl
cXVlc3QpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5oOgorICAgICAgICAoWE1MSHR0
cFJlcXVlc3QpOgorCiAyMDEyLTA4LTI3ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEZpeGluZyBpbmZpbml0ZSByZWN1cnNpb24gaW4g
Q2FudmFzMkRMYXllck1hbmFnZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
bgppbmRleCBkYWUzNjg5NDhlOTcxZWU2MWI5N2Q1ZGQ4NjY1MmRjOGZiMzk4OTU4Li4yNzExODZm
Y2E5N2ZmYWZiNjUyNjRlZWMzYTM3M2FmYjQyOTIyYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCkBAIC04NzQsNiArODc0LDE1IEBACiAgICAgICAgICAgICAgICAg
XQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6
ICJyZXBsYXlYSFIiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYXlzIFhI
Ui4iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlv
biI6ICJJZGVudGlmaWVyIG9mIHRoZSBuZXR3b3JrIHJlcXVlc3QgdG8gZ2V0IGNvbnRlbnQgZm9y
LiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCisg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAibmFtZSI6ICJjYW5DbGVhckJyb3dzZXJDYWNoZSIsCiAgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlRlbGxzIHdoZXRoZXIgY2xlYXJpbmcgYnJvd3NlciBjYWNoZSBpcyBz
dXBwb3J0ZWQuIiwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXgg
YWY0NDcyOGM2NDYxMDA4YmFmMzk0N2YzZGI2OTdmNjI0ZmE2YzZlNy4uZjQ4YjA2ZWQzNjZhYTUw
ZDlhYTA1YmI1NmMzYmZmZTFhMDgwNDU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTMzMCw2ICszMzAsMTgg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGVJ
bXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW0KICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ2hh
bmdlWEhSUmVhZHlTdGF0ZSgpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ3JlYXRlWEhSUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
Zm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRl
bnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKK3sKKyAgICBpZiAoSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmlu
c3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkQ3JlYXRl
WEhSUmVxdWVzdChtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNyZWRl
bnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkKQoreworICAgIGlmIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCgpKQorICAgICAgICByZXNvdXJjZUFnZW50LT5wcmVmbGlnaHRS
ZXF1ZXN0U3VjY2VkZWQoaWQpOworfQorCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgRXZlbnQmIGV2ZW50LCBET01X
aW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFu
Y2VzdG9ycywgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oCmluZGV4IGRiMzM1YmZhZjQ1MGNjMzE4Y2JjZTRkZjYxODExMjdkZDI1NGY1Yzgu
LjM2ZmE3ZDQ1NzdlZWFiYzhmNjVkNDQ5N2RkOWE0MzhkZjE3YTlhZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTE2
MSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgd2lsbFByb2Nlc3NUYXNrKFBh
Z2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQcm9jZXNzVGFzayhQYWdlKik7CiAKKyAgICBzdGF0
aWMgdm9pZCBkaWRDcmVhdGVYSFJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBTdHJp
bmcsIGJvb2wsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9v
bCwgU3RyaW5nLCBTdHJpbmcpOworICAgIHN0YXRpYyB2b2lkIHByZWZsaWdodFJlcXVlc3RTdWNj
ZWRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyk7CisKICAgICBzdGF0
aWMgdm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlKEZyYW1lKiwgU3RyaW5nKik7CiAgICAgc3Rh
dGljIHZvaWQgYXBwbHlTY3JlZW5XaWR0aE92ZXJyaWRlKEZyYW1lKiwgbG9uZyopOwogICAgIHN0
YXRpYyB2b2lkIGFwcGx5U2NyZWVuSGVpZ2h0T3ZlcnJpZGUoRnJhbWUqLCBsb25nKik7CkBAIC0z
MzYsNiArMzM5LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRQcm9jZXNzUnVsZUlt
cGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZv
aWQgd2lsbFByb2Nlc3NUYXNrSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3RhdGlj
IHZvaWQgZGlkUHJvY2Vzc1Rhc2tJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRDcmVhdGVYSFJSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgU3Ry
aW5nLCBib29sLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIGJv
b2wsIFN0cmluZywgU3RyaW5nKTsKKyAgICBzdGF0aWMgdm9pZCBwcmVmbGlnaHRSZXF1ZXN0U3Vj
Y2VkZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nKTsKIAogICAgIHN0
YXRpYyB2b2lkIGFwcGx5VXNlckFnZW50T3ZlcnJpZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBTdHJpbmcqKTsKICAgICBzdGF0aWMgdm9pZCBhcHBseVNjcmVlbldpZHRoT3ZlcnJpZGVJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqLCBsb25nKik7CkBAIC0xMTYxLDYgKzExNjYsMjMgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9uc2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGUKICNlbmRpZgogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVhIUlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0
YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNy
ZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKK3sKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCisgICAgICAgIGRp
ZENyZWF0ZVhIUlJlcXVlc3RJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIG1ldGhvZCwgYXN5bmMs
IGZvcm1EYXRhLCBoZWFkZXJzLCBpbmNsdWRlQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNzd29yZCk7
CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVm
bGlnaHRSZXF1ZXN0U3VjY2VkZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdW5z
aWduZWQgbG9uZyBpZCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckNvbnRleHQoY29udGV4dCkpCisgICAgICAgIHByZWZsaWdodFJlcXVlc3RTdWNjZWRlZEltcGwo
aW5zdHJ1bWVudGluZ0FnZW50cywgaWQpOworI2VuZGlmCit9CisKKwogaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmlu
ZGV4IDlkOTI5YzlhMTBiZWQzNGMyOWMyODk0ODFhYjBhNGE1YTYyODY5MTQuLjkzMzAyYWRiN2Vl
MWU4NWVlNzFjOTNiNDllYzQxOTA0NjRmYjBmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTY0LDYgKzY0LDcgQEAK
ICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgorI2lu
Y2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CkBAIC0yMDMsMTMgKzIwNCwzNCBAQCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50Ojp+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpCiAgICAgQVNTRVJUKCFt
X2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlWEhSUmVxdWVzdChTdHJpbmcgbWV0
aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRU
UEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMsIFN0cmluZyBsb2dp
biwgU3RyaW5nIHBhc3N3b3JkKQoreworICAgIGlmICghbV9vcmlnaW5hbFJlcXVlc3RJZC5pc0Vt
cHR5KCkpCisgICAgICAgIG1fWEhSRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+WEhSRGF0YShtX29y
aWdpbmFsUmVxdWVzdElkKTsKKyAgICBlbHNlCisgICAgICAgIG1fWEhSRGF0YSA9IFhIUlJlcGxh
eURhdGE6OmNyZWF0ZShtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNy
ZWRlbnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpOworfQorCit2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZCh1bnNpZ25lZCBsb25nIGlkKQoreworICAg
IG1fcHJlZmxpZ2h0UmVxdWVzdElkID0gaWQ7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVu
dGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKICAgICBtX3Jlc291cmNlc0Rh
dGEtPnJlc291cmNlQ3JlYXRlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2Fk
ZXIpKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBtX3N0YXRlLT5n
ZXRPYmplY3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzKTsKKyAgICBp
ZiAobV9YSFJEYXRhKSB7CisgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0WEhSUmVwbGF5RGF0
YShyZXF1ZXN0SWQsIG1fWEhSRGF0YSk7CisgICAgICAgIG1fWEhSRGF0YSA9IG51bGxwdHI7Cisg
ICAgfSBlbHNlIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZCkgeworICAgICAgICBtX3Jlc291cmNl
c0RhdGEtPnNldFhIUlJlcGxheURhdGEocmVxdWVzdElkLCBtX3Jlc291cmNlc0RhdGEtPlhIUkRh
dGEoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQobV9wcmVmbGlnaHRSZXF1ZXN0SWQpKSk7
CisgICAgICAgIG1fcHJlZmxpZ2h0UmVxdWVzdElkID0gMDsKKyAgICB9CisKIAorICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBtX3N0YXRlLT5nZXRPYmplY3QoUmVzb3VyY2VB
Z2VudFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzKTsKICAgICBpZiAoaGVhZGVycykgewogICAg
ICAgICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMtPmVuZCgp
OwogICAgICAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFk
ZXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTU3MCw2ICs1OTIsMjQgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHIKICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gZGF0YSBmb3VuZCBm
b3IgcmVzb3VyY2Ugd2l0aCBnaXZlbiBpZGVudGlmaWVyIjsKIH0KIAordm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCkKK3sKKyAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IFhIUiA9IFhN
TEh0dHBSZXF1ZXN0OjpjcmVhdGUobV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgp
KTsKKyAgICBFeGNlcHRpb25Db2RlIGNvZGU7CisgICAgU3RyaW5nIGFjdHVhbFJlcXVlc3RJZCA9
IHJlcXVlc3RJZDsKKyAgICAvLyBhY3R1YWxSZXF1ZXN0SWQgPSBtX3ByZWZsaWdodElkVG9SZXF1
ZXN0SWQuY29udGFpbnMocmVxdWVzdElkKSA/IG1fcHJlZmxpZ2h0SWRUb1JlcXVlc3RJZC5nZXQo
cmVxdWVzdElkKSA6IHJlcXVlc3RJZDsKKworICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNv
dXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+ZGF0YShhY3R1
YWxSZXF1ZXN0SWQpOworICAgIFJlZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJEYXRhID0gbV9yZXNv
dXJjZXNEYXRhLT5YSFJEYXRhKGFjdHVhbFJlcXVlc3RJZCk7CisgICAgbV9vcmlnaW5hbFJlcXVl
c3RJZCA9IHJlcXVlc3RJZDsKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBYSFJEYXRhLT5tX2hlYWRlcnMuZW5kKCk7CisgICAgWEhSLT5vcGVuKFhIUkRhdGEtPm1fbWV0
aG9kLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgcmVzb3VyY2VEYXRhLT51cmwoKSksIFhIUkRhdGEt
Pm1fYXN5bmMsIGNvZGUpOworICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBYSFJEYXRhLT5tX2hlYWRlcnMuYmVnaW4oKTsgaXQhPSBlbmQ7ICsraXQpCisgICAgICAg
IFhIUi0+c2V0UmVxdWVzdEhlYWRlcihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQsIGNvZGUpOworICAg
IFhIUi0+c2VuZEZyb21JbnNwZWN0b3IoWEhSRGF0YS0+bV9mb3JtRGF0YSwgY29kZSk7CisgICAg
bV9vcmlnaW5hbFJlcXVlc3RJZCA9IFN0cmluZygpOworfQorCiB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmNhbkNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKiwgYm9vbCogcmVzdWx0
KQogewogICAgICpyZXN1bHQgPSBtX2NsaWVudC0+Y2FuQ2xlYXJCcm93c2VyQ2FjaGUoKTsKQEAg
LTYxMiw2ICs2NTIsOSBAQCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogICAgICwgbV9mcm9udGVu
ZCgwKQogICAgICwgbV9yZXNvdXJjZXNEYXRhKGFkb3B0UHRyKG5ldyBOZXR3b3JrUmVzb3VyY2Vz
RGF0YSgpKSkKICAgICAsIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkoZmFsc2UpCisgICAgLCBt
X1hIUkRhdGEoMCkKKyAgICAsIG1fcHJlZmxpZ2h0UmVxdWVzdElkKDApCisgICAgLCBtX3ByZWZs
aWdodElkVG9SZXF1ZXN0SWQoKQogICAgICwgbV9pc1JlY2FsY3VsYXRpbmdTdHlsZShmYWxzZSkK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5oCmluZGV4IDVjOWZiZTI2MmU2ZTBmYmFjYTczOWFhODJhNmZiMzU2OTU5NTIzNGQuLmRi
MjY1YWRhYjljY2U4MjAzZDkyYTkwZjFjZGEyZDJkMjI1NTIxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNTAsNyArNTAs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIERv
Y3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CitjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEZy
YW1lOworY2xhc3MgSFRUUEhlYWRlck1hcDsKIGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3Mg
SW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CkBAIC02Niw2ICs2OCw3
IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK3N0cnVjdCBYSFJSZXBsYXlE
YXRhOwogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogc3RydWN0IFdlYlNvY2tldEZyYW1lOwpA
QCAtMTA3LDYgKzExMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAgIHZvaWQgYXBwbHlVc2VyQWdlbnRPdmVycmlk
ZShTdHJpbmcqIHVzZXJBZ2VudCk7CisgICAgdm9pZCBkaWRDcmVhdGVYSFJSZXF1ZXN0KFN0cmlu
ZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGJvZHksIGNvbnN0IEhU
VFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZW5kZW50aWFscywgU3RyaW5nIGxv
Z2luLCBTdHJpbmcgcGFzc3dvcmQpOworICAgIHZvaWQgcHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVk
KHVuc2lnbmVkIGxvbmcgaWQpOwogCiAgICAgLy8gRklYTUU6IEluc3BlY3RvclJlc291cmNlQWdl
bnQgc2hvdWxkIG5vdyBiZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1bGF0aW9uLgogICAgIHZvaWQg
d2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKQEAgLTEzNSw2ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNwb25zZUJvZHko
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBjb250ZW50LCBi
b29sKiBiYXNlNjRFbmNvZGVkKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBsYXlYSFIoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CisKICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Q2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2b2lk
IGNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGNhbkNs
ZWFyQnJvd3NlckNvb2tpZXMoRXJyb3JTdHJpbmcqLCBib29sKik7CkBAIC0xNTMsNiArMTYwLDEw
IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPE5ldHdvcmtSZXNvdXJjZXNEYXRhPiBtX3Jlc291cmNl
c0RhdGE7CiAgICAgYm9vbCBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5OwogCisgICAgUmVmUHRy
PFhIUlJlcGxheURhdGE+IG1fWEhSRGF0YTsKKyAgICB1bnNpZ25lZCBsb25nIG1fcHJlZmxpZ2h0
UmVxdWVzdElkOworICAgIFN0cmluZyBtX29yaWdpbmFsUmVxdWVzdElkOworICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IG1fcHJlZmxpZ2h0SWRUb1JlcXVlc3RJZDsKICAgICAvLyBGSVhNRTog
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2Fs
Y3VsYXRpb24uCiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IG1f
c3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yOwogICAgIGJvb2wgbV9pc1JlY2FsY3VsYXRpbmdT
dHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCmluZGV4IGUwNWQxM2RlY2IzODE4ZmNmMWJiODMzMjgzNTlkZWFmYjI5NWRmYWMuLjZh
MWMxMTA4ZGY1MzM1OWRjMWM0YmE1NzY4NWUyZDhkNDE3YzZmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDYsNiArNDYs
MjEgQEAgc3RhdGljIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEw
ICogMTAwMCAqIDEwMDA7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxYSFJS
ZXBsYXlEYXRhPiBYSFJSZXBsYXlEYXRhOjpjcmVhdGUoU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3lu
YywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
YWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNz
d29yZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhIUlJlcGxheURhdGEobWV0aG9kLCBh
c3luYywgZm9ybURhdGEsIGhlYWRlcnMsIGluY2x1ZGVDcmVkZW50aWFscywgbG9naW4sIHBhc3N3
b3JkKSk7Cit9CisKK1hIUlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEoU3RyaW5nIG1ldGhvZCwg
Ym9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0
cmluZyBwYXNzd29yZCkKKyAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAsIG1fYXN5bmMoYXN5
bmMpCisgICAgLCBtX2Zvcm1EYXRhKGZvcm1EYXRhKQorICAgICwgbV9oZWFkZXJzKGhlYWRlcnMp
CisgICAgLCBtX2luY2x1ZGVDcmVkZW50aWFscyhpbmNsdWRlQ3JlZGVudGlhbHMpCisgICAgLCBt
X2xvZ2luKGxvZ2luKQorICAgICwgbV9wYXNzd29yZChwYXNzd29yZCkKK3sKK30KIAogLy8gUmVz
b3VyY2VEYXRhCiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURh
dGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbG9hZGVySWQpCkBAIC0y
NTMsNiArMjY4LDE2IEBAIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3Qq
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhKGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIG1fcmVx
dWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCk7CiB9CiAKK1Bhc3NSZWZQdHI8
WEhSUmVwbGF5RGF0YT4gTmV0d29ya1Jlc291cmNlc0RhdGE6OlhIUkRhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQpCit7CisgICAgcmV0dXJuIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAu
Z2V0KHJlcXVlc3RJZCktPlhIUkRhdGEoKTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6c2V0WEhSUmVwbGF5RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUGFzc1JlZlB0cjxY
SFJSZXBsYXlEYXRhPiBYSFJEYXRhKQoreworICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFN
YXAuZ2V0KHJlcXVlc3RJZCktPnNldFhIUlJlcGxheURhdGEoWEhSRGF0YSk7Cit9CisKIFZlY3Rv
cjxTdHJpbmc+IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApp
bmRleCA4ZGZkNWRkMGRiYjIxMWEwYzQ5MmVhNmYxZmQzYTQ4ZTkwNzcxZWM4Li5mYjU0MDc2OWFj
ODgwOTI2ZDg2MDcwNjdiNjk0MjJlOWYwNmQ4OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtNDYsNiArNDYsMjAgQEAgY2xhc3Mg
Q2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VE
ZWNvZGVyOwogCitjbGFzcyBYSFJSZXBsYXlEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8WEhSUmVw
bGF5RGF0YT4geworcHVibGljOgorICAgIFN0cmluZyBtX21ldGhvZDsKKyAgICBib29sIG1fYXN5
bmM7CisgICAgUmVmUHRyPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOworICAgIEhUVFBIZWFkZXJNYXAg
bV9oZWFkZXJzOworICAgIGJvb2wgbV9pbmNsdWRlQ3JlZGVudGlhbHM7CisgICAgU3RyaW5nIG1f
bG9naW47CisgICAgU3RyaW5nIG1fcGFzc3dvcmQ7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8WEhS
UmVwbGF5RGF0YT4gY3JlYXRlKFN0cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8
Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVk
ZW50aWFscywgU3RyaW5nIGxvZ2luLCBTdHJpbmcgcGFzc3dvcmQpOworcHJpdmF0ZToKKyAgICBY
SFJSZXBsYXlEYXRhKFN0cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURh
dGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFs
cywgU3RyaW5nIGxvZ2luLCBTdHJpbmcgcGFzc3dvcmQpOworfTsKKwogY2xhc3MgTmV0d29ya1Jl
c291cmNlc0RhdGEgewogcHVibGljOgogICAgIGNsYXNzIFJlc291cmNlRGF0YSB7CkBAIC05MCw2
ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2U7IH0KICAgICAgICAgdm9pZCBzZXRD
YWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpIHsgbV9jYWNoZWRS
ZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlOyB9CiAKKyAgICAgICAgUGFzc1JlZlB0cjxYSFJSZXBs
YXlEYXRhPiBYSFJEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9YSFJEYXRhOyB9CisgICAgICAgIHZv
aWQgc2V0WEhSUmVwbGF5RGF0YShQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IFhIUkRhdGEpIHsg
bV9YSFJEYXRhID0gWEhSRGF0YTt9OwogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaGFzRGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQogICAgICAgICBzaXplX3QgZGF0YUxl
bmd0aCgpIGNvbnN0OwpAQCAtMTAxLDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5n
IG1fZnJhbWVJZDsKICAgICAgICAgU3RyaW5nIG1fdXJsOwogICAgICAgICBTdHJpbmcgbV9jb250
ZW50OworICAgICAgICBSZWZQdHI8WEhSUmVwbGF5RGF0YT4gbV9YSFJEYXRhOwogICAgICAgICBi
b29sIG1fYmFzZTY0RW5jb2RlZDsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRh
QnVmZmVyOwogICAgICAgICBib29sIG1faXNDb250ZW50UHVyZ2VkOwpAQCAtMTMyLDYgKzE0OSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVy
SWQgPSBTdHJpbmcoKSk7CiAKICAgICB2b2lkIHNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKHNp
emVfdCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVz
b3VyY2VDb250ZW50U2l6ZSk7CisgICAgdm9pZCBzZXRYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+KTsKKyAgICBQYXNzUmVmUHRy
PFhIUlJlcGxheURhdGE+IFhIUkRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogCiBwcml2
YXRlOgogICAgIHZvaWQgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3
b3JrUGFuZWwuanMKaW5kZXggNWM4MGFjMTc4MjA4ZTViMjA5Mzk3ZjYwOTc1YWM3MDQ3MGI3MDY3
Ni4uOTczNTA3MjQxNDQ0MTc5N2M0MGIwZjcwMTYxZDM5NjY1YWZkMzc4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTk2
Miw4ICs5NjIsMjAgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKHRoaXMuX2NhbkNsZWFyQnJvd3NlckNvb2tpZXMpCiAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3Iu
dXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIkNsZWFyIGJyb3dzZXIgY29va2llcyIgOiAiQ2xl
YXIgQnJvd3NlciBDb29raWVzIiksIHRoaXMuX2NsZWFyQnJvd3NlckNvb2tpZXMuYmluZCh0aGlz
KSk7CiAKKyAgICAgICAgaWYgKHJlcXVlc3QgJiYgcmVxdWVzdC50eXBlLm5hbWUoKSA9PT0gInho
ciIpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAg
ICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcGxh
eSBYSFIiKSwgdGhpcy5fcmVwbGF5WEhSLmJpbmQodGhpcywgcmVxdWVzdC5yZXF1ZXN0SWQpKTsK
KyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICB9CisK
ICAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CiAgICAgfSwKKyAgICAKKyAgICBfcmVw
bGF5WEhSOiBmdW5jdGlvbihyZXF1ZXN0SWQpCisgICAgeworICAgICAgICBOZXR3b3JrQWdlbnQu
cmVwbGF5WEhSKHJlcXVlc3RJZCk7CisgICAgfSwKKyAgICAKIAogICAgIF9jb3B5QWxsOiBmdW5j
dGlvbigpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAppbmRleCBhMGM2NDg5Y2IwNjM5MDkwYWQ5NTM5ZDg0YjRlMmUwOWVm
NDVjNmJiLi5mYWRlZDE0ZTE5Y2UzNTZmNTczZGU2NTYxOWEwZjBlNjJhZjRjOTEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApA
QCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zCiAgICAgQVNTRVJUKG1f
Y2xpZW50KTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVx
dWVzdElkZW50aWZpZXIpIHsKKyAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciAm
JiBtX2FzeW5jKSB7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtX2RvY3VtZW50
LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKICAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZG9jdW1lbnQtPmZyYW1lKCksIG1fcHJlZmxp
Z2h0UmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIG1fcHJlZmxpZ2h0
UmVxdWVzdElkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UsIDApOwpAQCAtMjg3LDcgKzI4Nyw3
IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyCiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwg
cmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlm
IChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgIGlmIChtX3ByZWZsaWdodFJlcXVl
c3RJZGVudGlmaWVyICYmIG1fYXN5bmMpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjZWl2ZURhdGEobV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0
SWRlbnRpZmllciwgMCwgMCwgZGF0YUxlbmd0aCk7CiAjZW5kaWYKIApAQCAtMzE1LDcgKzMxNSw3
IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSogcmVzb3VyY2UpCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50
aWZpZXIpCisgICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgJiYgbV9hc3luYykK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKG1fZG9j
dW1lbnQtPmZyYW1lKCksIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExv
YWRlcigpLCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKICNlbmRp
ZgogCkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUKIHZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElk
ZW50aWZpZXIpCisgICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgJiYgbV9hc3lu
YykKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtX2Rv
Y3VtZW50LT5mcmFtZSgpLCBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRM
b2FkZXIoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOwogI2VuZGlmCiAK
QEAgLTM4Miw2ICszODIsOCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cgogICAgICAgICAgICAg
bV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPnBhZ2Uo
KS0+cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgICAgICAgICAgUmVz
b3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwogICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QobV9kb2N1
bWVudC0+ZnJhbWUoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgbV9kb2N1bWVudC0+
ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIG5ld1JlcXVlc3QsIHJlZGlyZWN0
UmVzcG9uc2UpOworICAgICAgICB9IGVsc2UgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZp
ZXIpIHsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVx
dWVzdFN1Y2NlZGVkKG1fZG9jdW1lbnQsIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpOwog
ICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgQVNTRVJUKCFtX3Jlc291cmNlKTsKQEAgLTM5OSw2
ICs0MDEsMTEgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICAgICBpZiAobV9kb2N1bWVudC0+
ZnJhbWUoKSkKICAgICAgICAgaWRlbnRpZmllciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRl
cigpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QsIG1fb3B0aW9ucy5hbGxvd0Ny
ZWRlbnRpYWxzLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCisgICAgaWYgKG1fcHJlZmxpZ2h0
UmVxdWVzdElkZW50aWZpZXIpCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJl
ZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKG1fZG9jdW1lbnQsIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50
aWZpZXIpOworICAgIGVsc2UKKyAgICAgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciA9
IGlkZW50aWZpZXI7CisKICAgICAvLyBObyBleGNlcHRpb24gZm9yIGZpbGU6Ly8vIHJlc291cmNl
cywgc2VlIDxyZGFyOi8vcHJvYmxlbS80OTYyMjk4Pi4KICAgICAvLyBBbHNvLCBpZiB3ZSBoYXZl
IGFuIEhUVFAgcmVzcG9uc2UsIHRoZW4gaXQgd2Fzbid0IGEgbmV0d29yayBlcnJvciBpbiBmYWN0
LgogICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgIXJlcXVlc3RVUkwuaXNMb2NhbEZpbGUoKSAm
JiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIDw9IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCmluZGV4IDExMWE2NDlhMTNlNzZhZWY4MzcwYjE4MmM5NTFjYTllNzVjZmIy
MmUuLmRmNTMzYTljNDIyMjliNjM2YjNlODdiZDgwYmEzNDUxODhiMjlkOWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNjg0LDYgKzY4NCwxMiBAQCB2b2lkIFhNTEh0
dHBSZXF1ZXN0OjpzZW5kQnl0ZXNEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgs
IEV4Y2VwdGlvbkNvZAogICAgIGNyZWF0ZVJlcXVlc3QoZWMpOwogfQogCit2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpzZW5kRnJvbUluc3BlY3RvcihQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgbV9yZXF1ZXN0RW50aXR5Qm9keSA9IGZvcm1EYXRh
OworICAgIGNyZWF0ZVJlcXVlc3QoZWMpOworfQorCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXF1ZXN0KEV4Y2VwdGlvbkNvZGUmIGVjKQogewogI2lmIEVOQUJMRShCTE9CKQpAQCAtNzE4
LDYgKzcyNCw4IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9u
Q29kZSYgZWMpCiAgICAgcmVxdWVzdC5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFy
Z2V0SXNYSFIpOwogI2VuZGlmCiAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENy
ZWF0ZVhIUlJlcXVlc3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX21ldGhvZCwgbV9hc3lu
YywgbV9yZXF1ZXN0RW50aXR5Qm9keSA/IG1fcmVxdWVzdEVudGl0eUJvZHktPmRlZXBDb3B5KCkg
OiAwLCBtX3JlcXVlc3RIZWFkZXJzLCBtX2luY2x1ZGVDcmVkZW50aWFscywgbV91cmwudXNlcigp
LCBtX3VybC5wYXNzKCkpOworCiAgICAgaWYgKG1fcmVxdWVzdEVudGl0eUJvZHkpIHsKICAgICAg
ICAgQVNTRVJUKG1fbWV0aG9kICE9ICJHRVQiKTsKICAgICAgICAgQVNTRVJUKG1fbWV0aG9kICE9
ICJIRUFEIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDYwNjQyOGI3NmM3
MTY0MGNkMGM4MTdjMzE4ZTk4NWNhYjJmZjQ4MmMuLmNjNmNiYzUwYzM2MDE2NTA4OWUyNjU5OTc1
Y2QxMGQzMTEyMmVmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0xMDUs
NiArMTA1LDggQEAgcHVibGljOgogICAgIEJsb2IqIHJlc3BvbnNlQmxvYihFeGNlcHRpb25Db2Rl
Jik7CiAgICAgQmxvYiogb3B0aW9uYWxSZXNwb25zZUJsb2IoKSBjb25zdCB7IHJldHVybiBtX3Jl
c3BvbnNlQmxvYi5nZXQoKTsgfQogCisgICAgdm9pZCBzZW5kRnJvbUluc3BlY3RvcihQYXNzUmVm
UHRyPEZvcm1EYXRhPiwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgLy8gRXhwb3NlIEhUVFAgdmFs
aWRhdGlvbiBtZXRob2RzIGZvciBvdGhlciB1bnRydXN0ZWQgcmVxdWVzdHMuCiAgICAgc3RhdGlj
IGJvb2wgaXNBbGxvd2VkSFRUUE1ldGhvZChjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgU3Ry
aW5nIHVwcGVyY2FzZUtub3duSFRUUE1ldGhvZChjb25zdCBTdHJpbmcmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161232</attachid>
            <date>2012-08-29 08:25:47 -0700</date>
            <delta_ts>2012-08-29 10:01:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120829192537.patch</filename>
            <type>text/plain</type>
            <size>24708</size>
            <attacher name="Pavel Chadnov">chadnov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBjNWNjOGM2NWQxZGE3
ODJiODkzZmFjZDU3YmM5ZmNjYjc3ZTg4OC4uZDlmMWZmYWI5MWU1ODI5Mzc1ZjE2NzViMjk5ODhh
NmZmYWI3MDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA4LTI5ICBQYXZl
bCBDaGFkbm92ICA8Y2hhZG5vdkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFhIUiByZXBsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgWEhSIHJlcGxheSBpbiBuZXR3b3JrIHRhYi4gQWxsIFhIUiBwYXJhbWV0ZXJzICht
ZXRob2QsIGFzeW5jLCBib2R5LCBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNz
d29yZCkgYXJlIHNhdmVkIGluIFhIUlJlcGxheURhdGEgc3RydWN0IGFuZCBpcyByZXN0b3JlZCBm
cm9tIGl0IHdoZW4gcmVwbGF5aW5nLgorICAgICAgICAKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWRJbXBs
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVYSFJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGln
aHRSZXF1ZXN0U3VjY2VkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlcGxheVhIUik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WEhSUmVwbGF5RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6WEhSUmVwbGF5RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6WEhSRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0WEhSUmVwbGF5RGF0YSk6CisgICAgICAgICogaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChYSFJSZXBsYXlEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6WEhSRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRYSFJSZXBsYXlEYXRhKToKKyAgICAgICAgKFJlc291
cmNlRGF0YSk6CisgICAgICAgIChOZXR3b3JrUmVzb3VyY2VzRGF0YSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9jb250ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9yZXBsYXlYSFIpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmFpbCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5oOgorICAgICAgICAoWE1MSHR0cFJlcXVlc3QpOgorCiAyMDEyLTA4
LTI3ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIEZpeGluZyBpbmZpbml0ZSByZWN1cnNpb24gaW4gQ2FudmFzMkRMYXllck1hbmFnZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBkYWUzNjg5NDhlOTcx
ZWU2MWI5N2Q1ZGQ4NjY1MmRjOGZiMzk4OTU4Li5hYjljNjg4MjY3Mzg4MWQzY2MwMjQyMTFjNjc2
NzY0ZDJmOGI0NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBA
IC04NzQsNiArODc0LDE1IEBACiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXBsYXlYSFIiLAorICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYXlzIFhIUi4gVGhlIG5ldyBYSFIgaXMgaWRl
bnRpY2FsIHRvIG9yaWdpbmFsIChwYXJhbWV0ZXJzIG1ldGhvZCwgYXN5bmMsIGJvZHksIGhlYWRl
cnMsIHdpdGhDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkIGFyZSBjb3BpZWQpIiwKKyAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRp
ZmllciBvZiBYSFIgdG8gcmVwbGF5LiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJjYW5DbGVhckJyb3dzZXJDYWNo
ZSIsCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRlbGxzIHdoZXRoZXIgY2xlYXJp
bmcgYnJvd3NlciBjYWNoZSBpcyBzdXBwb3J0ZWQuIiwKICAgICAgICAgICAgICAgICAicmV0dXJu
cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKaW5kZXggYWY0NDcyOGM2NDYxMDA4YmFmMzk0N2YzZGI2OTdmNjI0ZmE2
YzZlNy4uZjQ4YjA2ZWQzNjZhYTUwZDlhYTA1YmI1NmMzYmZmZTFhMDgwNDU5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKQEAgLTMzMCw2ICszMzAsMTggQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW0KICAgICAgICAg
dGltZWxpbmVBZ2VudC0+ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZSgpOwogfQogCit2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywg
UGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRl
cnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29y
ZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICAgICAgcmVz
b3VyY2VBZ2VudC0+ZGlkQ3JlYXRlWEhSUmVxdWVzdChtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwg
aGVhZGVycywgaW5jbHVkZUNyZWRlbnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpOworfQorCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlk
KQoreworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQorICAgICAgICByZXNv
dXJjZUFnZW50LT5wcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQoaWQpOworfQorCiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0
Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29u
c3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVj
dG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycywgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAg
IGludCB0aW1lbGluZUFnZW50SWQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGRiMzM1YmZhZjQ1MGNjMzE4Y2Jj
ZTRkZjYxODExMjdkZDI1NGY1YzguLjM2ZmE3ZDQ1NzdlZWFiYzhmNjVkNDQ5N2RkOWE0MzhkZjE3
YTlhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgKQEAgLTE2MSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgd2lsbFByb2Nlc3NUYXNrKFBhZ2UqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQcm9jZXNzVGFz
ayhQYWdlKik7CiAKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVYSFJSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBTdHJpbmcsIGJvb2wsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25z
dCBIVFRQSGVhZGVyTWFwJiwgYm9vbCwgU3RyaW5nLCBTdHJpbmcpOworICAgIHN0YXRpYyB2b2lk
IHByZWZsaWdodFJlcXVlc3RTdWNjZWRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWdu
ZWQgbG9uZyk7CisKICAgICBzdGF0aWMgdm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlKEZyYW1l
KiwgU3RyaW5nKik7CiAgICAgc3RhdGljIHZvaWQgYXBwbHlTY3JlZW5XaWR0aE92ZXJyaWRlKEZy
YW1lKiwgbG9uZyopOwogICAgIHN0YXRpYyB2b2lkIGFwcGx5U2NyZWVuSGVpZ2h0T3ZlcnJpZGUo
RnJhbWUqLCBsb25nKik7CkBAIC0zMzYsNiArMzM5LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBkaWRQcm9jZXNzUnVsZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFByb2Nlc3NUYXNrSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHJvY2Vzc1Rhc2tJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVYSFJSZXF1ZXN0SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgU3RyaW5nLCBib29sLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29u
c3QgSFRUUEhlYWRlck1hcCYsIGJvb2wsIFN0cmluZywgU3RyaW5nKTsKKyAgICBzdGF0aWMgdm9p
ZCBwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNp
Z25lZCBsb25nKTsKIAogICAgIHN0YXRpYyB2b2lkIGFwcGx5VXNlckFnZW50T3ZlcnJpZGVJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqLCBTdHJpbmcqKTsKICAgICBzdGF0aWMgdm9pZCBhcHBseVNj
cmVlbldpZHRoT3ZlcnJpZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBsb25nKik7CkBAIC0x
MTYxLDYgKzExNjYsMjMgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlWEhSUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGUKICNlbmRpZgogfQogCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVhIUlJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3lu
YywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
YWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNz
d29yZCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQo
Y29udGV4dCkpCisgICAgICAgIGRpZENyZWF0ZVhIUlJlcXVlc3RJbXBsKGluc3RydW1lbnRpbmdB
Z2VudHMsIG1ldGhvZCwgYXN5bmMsIGZvcm1EYXRhLCBoZWFkZXJzLCBpbmNsdWRlQ3JlZGVudGlh
bHMsIGxvZ2luLCBwYXNzd29yZCk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyBpZCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVD
VE9SKQorICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCisgICAgICAgIHByZWZsaWdo
dFJlcXVlc3RTdWNjZWRlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWQpOworI2VuZGlmCit9
CisKKwogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUlN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwCmluZGV4IDlkOTI5YzlhMTBiZWQzNGMyOWMyODk0ODFhYjBhNGE1
YTYyODY5MTQuLmI2ZDhmMjk5NTA2Y2UyZjhiNmVjYmU5YTQxNzNiMjUxYWU5YzRjZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5j
cHAKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1
ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZS5oIgorI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CkBAIC0yMDMs
MTMgKzIwNCwzNCBAQCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp+SW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCgpCiAgICAgQVNTRVJUKCFtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291
cmNlQWdlbnQoKSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRl
WEhSUmVxdWVzdChTdHJpbmcgbWV0aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRh
PiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3Jl
ZGVudGlhbHMsIFN0cmluZyBsb2dpbiwgU3RyaW5nIHBhc3N3b3JkKQoreworICAgIGlmICghbV9v
cmlnaW5hbFJlcXVlc3RJZC5pc0VtcHR5KCkpCisgICAgICAgIG1fWEhSRGF0YSA9IG1fcmVzb3Vy
Y2VzRGF0YS0+WEhSRGF0YShtX29yaWdpbmFsUmVxdWVzdElkKTsKKyAgICBlbHNlCisgICAgICAg
IG1fWEhSRGF0YSA9IFhIUlJlcGxheURhdGE6OmNyZWF0ZShtZXRob2QsIGFzeW5jLCBmb3JtRGF0
YSwgaGVhZGVycywgaW5jbHVkZUNyZWRlbnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpOworfQorCit2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZCh1bnNp
Z25lZCBsb25nIGlkKQoreworICAgIG1fcHJlZmxpZ2h0UmVxdWVzdElkID0gaWQ7Cit9CisKIHZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIFN0
cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVy
KTsKICAgICBtX3Jlc291cmNlc0RhdGEtPnJlc291cmNlQ3JlYXRlZChyZXF1ZXN0SWQsIG1fcGFn
ZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpKTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGhlYWRlcnMgPSBtX3N0YXRlLT5nZXRPYmplY3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRyYVJl
cXVlc3RIZWFkZXJzKTsKKyAgICBpZiAobV9YSFJEYXRhKSB7CisgICAgICAgIG1fcmVzb3VyY2Vz
RGF0YS0+c2V0WEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQsIG1fWEhSRGF0YSk7CisgICAgICAgIG1f
WEhSRGF0YSA9IG51bGxwdHI7CisgICAgfSBlbHNlIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZCkg
eworICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFhIUlJlcGxheURhdGEocmVxdWVzdElkLCBt
X3Jlc291cmNlc0RhdGEtPlhIUkRhdGEoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQobV9w
cmVmbGlnaHRSZXF1ZXN0SWQpKSk7CisgICAgICAgIG1fcHJlZmxpZ2h0UmVxdWVzdElkID0gMDsK
KyAgICB9CisKIAorICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBtX3N0YXRl
LT5nZXRPYmplY3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzKTsKICAg
ICBpZiAoaGVhZGVycykgewogICAgICAgICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGhlYWRlcnMtPmVuZCgpOwogICAgICAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAg
LTU3MCw2ICs1OTIsMjMgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRSZXNwb25z
ZUJvZHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHIKICAgICAqZXJyb3JTdHJp
bmcgPSAiTm8gZGF0YSBmb3VuZCBmb3IgcmVzb3VyY2Ugd2l0aCBnaXZlbiBpZGVudGlmaWVyIjsK
IH0KIAordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKK3sKKyAgICBSZWZQdHI8WE1M
SHR0cFJlcXVlc3Q+IHhociA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUobV9wYWdlQWdlbnQtPm1h
aW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKKyAgICBFeGNlcHRpb25Db2RlIGNvZGU7CisgICAgU3Ry
aW5nIGFjdHVhbFJlcXVlc3RJZCA9IHJlcXVlc3RJZDsKKworICAgIE5ldHdvcmtSZXNvdXJjZXNE
YXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+
ZGF0YShhY3R1YWxSZXF1ZXN0SWQpOworICAgIFJlZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJEYXRh
ID0gbV9yZXNvdXJjZXNEYXRhLT5YSFJEYXRhKGFjdHVhbFJlcXVlc3RJZCk7CisgICAgbV9vcmln
aW5hbFJlcXVlc3RJZCA9IHJlcXVlc3RJZDsKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBYSFJEYXRhLT5tX2hlYWRlcnMuZW5kKCk7CisgICAgeGhyLT5vcGVuKFhIUkRh
dGEtPm1fbWV0aG9kLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgcmVzb3VyY2VEYXRhLT51cmwoKSks
IFhIUkRhdGEtPm1fYXN5bmMsIGNvZGUpOworICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBYSFJEYXRhLT5tX2hlYWRlcnMuYmVnaW4oKTsgaXQhPSBlbmQ7ICsraXQp
CisgICAgICAgIHhoci0+c2V0UmVxdWVzdEhlYWRlcihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQsIGNv
ZGUpOworICAgIHhoci0+c2VuZEZyb21JbnNwZWN0b3IoWEhSRGF0YS0+bV9mb3JtRGF0YSwgY29k
ZSk7CisgICAgbV9vcmlnaW5hbFJlcXVlc3RJZCA9IFN0cmluZygpOworfQorCiB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmNhbkNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKiwgYm9v
bCogcmVzdWx0KQogewogICAgICpyZXN1bHQgPSBtX2NsaWVudC0+Y2FuQ2xlYXJCcm93c2VyQ2Fj
aGUoKTsKQEAgLTYxMiw2ICs2NTEsOSBAQCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogICAgICwg
bV9mcm9udGVuZCgwKQogICAgICwgbV9yZXNvdXJjZXNEYXRhKGFkb3B0UHRyKG5ldyBOZXR3b3Jr
UmVzb3VyY2VzRGF0YSgpKSkKICAgICAsIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkoZmFsc2Up
CisgICAgLCBtX1hIUkRhdGEoMCkKKyAgICAsIG1fcHJlZmxpZ2h0UmVxdWVzdElkKDApCisgICAg
LCBtX3ByZWZsaWdodElkVG9SZXF1ZXN0SWQoKQogICAgICwgbV9pc1JlY2FsY3VsYXRpbmdTdHls
ZShmYWxzZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5oCmluZGV4IDVjOWZiZTI2MmU2ZTBmYmFjYTczOWFhODJhNmZiMzU2OTU5
NTIzNGQuLmRiMjY1YWRhYjljY2U4MjAzZDkyYTkwZjFjZGEyZDJkMjI1NTIxZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAt
NTAsNyArNTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CitjbGFzcyBGb3JtRGF0YTsK
IGNsYXNzIEZyYW1lOworY2xhc3MgSFRUUEhlYWRlck1hcDsKIGNsYXNzIEluc3BlY3RvckFycmF5
OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CkBAIC02
Niw2ICs2OCw3IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK3N0cnVjdCBY
SFJSZXBsYXlEYXRhOwogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogc3RydWN0IFdlYlNvY2tl
dEZyYW1lOwpAQCAtMTA3LDYgKzExMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxEZXN0cm95
Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAgIHZvaWQgYXBwbHlVc2VyQWdl
bnRPdmVycmlkZShTdHJpbmcqIHVzZXJBZ2VudCk7CisgICAgdm9pZCBkaWRDcmVhdGVYSFJSZXF1
ZXN0KFN0cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGJvZHks
IGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZW5kZW50aWFscywg
U3RyaW5nIGxvZ2luLCBTdHJpbmcgcGFzc3dvcmQpOworICAgIHZvaWQgcHJlZmxpZ2h0UmVxdWVz
dFN1Y2NlZGVkKHVuc2lnbmVkIGxvbmcgaWQpOwogCiAgICAgLy8gRklYTUU6IEluc3BlY3RvclJl
c291cmNlQWdlbnQgc2hvdWxkIG5vdyBiZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1bGF0aW9uLgog
ICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKQEAgLTEzNSw2ICsxNDAsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNw
b25zZUJvZHkoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBj
b250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBsYXlY
SFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CisKICAgICB2aXJ0dWFs
IHZvaWQgY2FuQ2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2
b2lkIGNhbkNsZWFyQnJvd3NlckNvb2tpZXMoRXJyb3JTdHJpbmcqLCBib29sKik7CkBAIC0xNTMs
NiArMTYwLDEwIEBAIHByaXZhdGU6CiAgICAgT3duUHRyPE5ldHdvcmtSZXNvdXJjZXNEYXRhPiBt
X3Jlc291cmNlc0RhdGE7CiAgICAgYm9vbCBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5OwogCisg
ICAgUmVmUHRyPFhIUlJlcGxheURhdGE+IG1fWEhSRGF0YTsKKyAgICB1bnNpZ25lZCBsb25nIG1f
cHJlZmxpZ2h0UmVxdWVzdElkOworICAgIFN0cmluZyBtX29yaWdpbmFsUmVxdWVzdElkOworICAg
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcHJlZmxpZ2h0SWRUb1JlcXVlc3RJZDsKICAgICAv
LyBGSVhNRTogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0
eWxlIHJlY2FsY3VsYXRpb24uCiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0
aWF0b3I+IG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yOwogICAgIGJvb2wgbV9pc1JlY2Fs
Y3VsYXRpbmdTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuY3BwCmluZGV4IGUwNWQxM2RlY2IzODE4ZmNmMWJiODMzMjgzNTlkZWFmYjI5
NWRmYWMuLjZhMWMxMTA4ZGY1MzM1OWRjMWM0YmE1NzY4NWUyZDhkNDE3YzZmZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAt
NDYsNiArNDYsMjEgQEAgc3RhdGljIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50
U2l6ZSA9IDEwICogMTAwMCAqIDEwMDA7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1Jl
ZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJSZXBsYXlEYXRhOjpjcmVhdGUoU3RyaW5nIG1ldGhvZCwg
Ym9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0
cmluZyBwYXNzd29yZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhIUlJlcGxheURhdGEo
bWV0aG9kLCBhc3luYywgZm9ybURhdGEsIGhlYWRlcnMsIGluY2x1ZGVDcmVkZW50aWFscywgbG9n
aW4sIHBhc3N3b3JkKSk7Cit9CisKK1hIUlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEoU3RyaW5n
IG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcg
bG9naW4sIFN0cmluZyBwYXNzd29yZCkKKyAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAsIG1f
YXN5bmMoYXN5bmMpCisgICAgLCBtX2Zvcm1EYXRhKGZvcm1EYXRhKQorICAgICwgbV9oZWFkZXJz
KGhlYWRlcnMpCisgICAgLCBtX2luY2x1ZGVDcmVkZW50aWFscyhpbmNsdWRlQ3JlZGVudGlhbHMp
CisgICAgLCBtX2xvZ2luKGxvZ2luKQorICAgICwgbV9wYXNzd29yZChwYXNzd29yZCkKK3sKK30K
IAogLy8gUmVzb3VyY2VEYXRhCiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpS
ZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbG9hZGVy
SWQpCkBAIC0yNTMsNiArMjY4LDE2IEBAIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhKGNvbnN0IFN0cmluCiAgICAgcmV0
dXJuIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCk7CiB9CiAKK1Bh
c3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gTmV0d29ya1Jlc291cmNlc0RhdGE6OlhIUkRhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQpCit7CisgICAgcmV0dXJuIG1fcmVxdWVzdElkVG9SZXNvdXJj
ZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCktPlhIUkRhdGEoKTsKK30KKwordm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6c2V0WEhSUmVwbGF5RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUGFz
c1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJEYXRhKQoreworICAgIG1fcmVxdWVzdElkVG9SZXNv
dXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCktPnNldFhIUlJlcGxheURhdGEoWEhSRGF0YSk7Cit9
CisKIFZlY3RvcjxTdHJpbmc+IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAppbmRleCA4ZGZkNWRkMGRiYjIxMWEwYzQ5MmVhNmYxZmQzYTQ4ZTkwNzcxZWM4Li5m
YjU0MDc2OWFjODgwOTI2ZDg2MDcwNjdiNjk0MjJlOWYwNmQ4OTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtNDYsNiArNDYsMjAg
QEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0
UmVzb3VyY2VEZWNvZGVyOwogCitjbGFzcyBYSFJSZXBsYXlEYXRhIDogcHVibGljIFJlZkNvdW50
ZWQ8WEhSUmVwbGF5RGF0YT4geworcHVibGljOgorICAgIFN0cmluZyBtX21ldGhvZDsKKyAgICBi
b29sIG1fYXN5bmM7CisgICAgUmVmUHRyPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOworICAgIEhUVFBI
ZWFkZXJNYXAgbV9oZWFkZXJzOworICAgIGJvb2wgbV9pbmNsdWRlQ3JlZGVudGlhbHM7CisgICAg
U3RyaW5nIG1fbG9naW47CisgICAgU3RyaW5nIG1fcGFzc3dvcmQ7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8WEhSUmVwbGF5RGF0YT4gY3JlYXRlKFN0cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBh
c3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGlu
Y2x1ZGVDcmVkZW50aWFscywgU3RyaW5nIGxvZ2luLCBTdHJpbmcgcGFzc3dvcmQpOworcHJpdmF0
ZToKKyAgICBYSFJSZXBsYXlEYXRhKFN0cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQ
dHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVD
cmVkZW50aWFscywgU3RyaW5nIGxvZ2luLCBTdHJpbmcgcGFzc3dvcmQpOworfTsKKwogY2xhc3Mg
TmV0d29ya1Jlc291cmNlc0RhdGEgewogcHVibGljOgogICAgIGNsYXNzIFJlc291cmNlRGF0YSB7
CkBAIC05MCw2ICsxMDQsOCBAQCBwdWJsaWM6CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNo
ZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2U7IH0KICAgICAgICAg
dm9pZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpIHsg
bV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlOyB9CiAKKyAgICAgICAgUGFzc1JlZlB0
cjxYSFJSZXBsYXlEYXRhPiBYSFJEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9YSFJEYXRhOyB9Cisg
ICAgICAgIHZvaWQgc2V0WEhSUmVwbGF5RGF0YShQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IFhI
UkRhdGEpIHsgbV9YSFJEYXRhID0gWEhSRGF0YTt9OwogICAgIHByaXZhdGU6CiAgICAgICAgIGJv
b2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQogICAgICAgICBzaXpl
X3QgZGF0YUxlbmd0aCgpIGNvbnN0OwpAQCAtMTAxLDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICAg
ICAgU3RyaW5nIG1fZnJhbWVJZDsKICAgICAgICAgU3RyaW5nIG1fdXJsOwogICAgICAgICBTdHJp
bmcgbV9jb250ZW50OworICAgICAgICBSZWZQdHI8WEhSUmVwbGF5RGF0YT4gbV9YSFJEYXRhOwog
ICAgICAgICBib29sIG1fYmFzZTY0RW5jb2RlZDsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhQnVmZmVyOwogICAgICAgICBib29sIG1faXNDb250ZW50UHVyZ2VkOwpAQCAtMTMy
LDYgKzE0OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2Vy
dmVkTG9hZGVySWQgPSBTdHJpbmcoKSk7CiAKICAgICB2b2lkIHNldFJlc291cmNlc0RhdGFTaXpl
TGltaXRzKHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIHNpemVfdCBtYXhpbXVt
U2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7CisgICAgdm9pZCBzZXRYSFJSZXBsYXlEYXRhKGNv
bnN0IFN0cmluZyYgcmVxdWVzdElkLCBQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+KTsKKyAgICBQ
YXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IFhIUkRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQp
OwogCiBwcml2YXRlOgogICAgIHZvaWQgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggNWM4MGFjMTc4MjA4ZTViMjA5Mzk3ZjYwOTc1YWM3
MDQ3MGI3MDY3Ni4uYzdiOTAwNjMyMTdjMGJiYjQ5MDE4OGFjODYyYjg3ZmI4NDNlZDQ1NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwu
anMKQEAgLTk2Miw4ICs5NjIsMjEgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX2NhbkNsZWFyQnJvd3NlckNvb2tpZXMpCiAgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJ
bnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIkNsZWFyIGJyb3dzZXIgY29va2ll
cyIgOiAiQ2xlYXIgQnJvd3NlciBDb29raWVzIiksIHRoaXMuX2NsZWFyQnJvd3NlckNvb2tpZXMu
YmluZCh0aGlzKSk7CiAKKworICAgICAgICBpZiAocmVxdWVzdC50eXBlID09PSBXZWJJbnNwZWN0
b3IucmVzb3VyY2VUeXBlcy5YSFIpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNl
cGFyYXRvcigpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlcGxheSBYSFIiKSwgdGhpcy5fcmVwbGF5WEhSLmJpbmQodGhpcywgcmVx
dWVzdC5yZXF1ZXN0SWQpKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRv
cigpOworICAgICAgICB9CisKICAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CiAgICAg
fSwKKyAgICAKKyAgICBfcmVwbGF5WEhSOiBmdW5jdGlvbihyZXF1ZXN0SWQpCisgICAgeworICAg
ICAgICBOZXR3b3JrQWdlbnQucmVwbGF5WEhSKHJlcXVlc3RJZCk7CisgICAgfSwKKyAgICAKIAog
ICAgIF9jb3B5QWxsOiBmdW5jdGlvbigpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBhMGM2NDg5Y2IwNjM5MDkw
YWQ5NTM5ZDg0YjRlMmUwOWVmNDVjNmJiLi5iZjU5N2UzN2EyMDc3MzJmZmZhMzk2NGZmY2U0MDYz
ZjExOWFhYTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zCiAgICAgQVNTRVJUKG1fY2xpZW50KTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
aWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpIHsKKyAgICBpZiAobV9wcmVmbGlnaHRS
ZXF1ZXN0SWRlbnRpZmllciAmJiBtX2FzeW5jKSB7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBs
b2FkZXIgPSBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZG9jdW1lbnQt
PmZyYW1lKCksIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShj
b29raWUsIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UsIDAp
OwpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyCiAgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgIGlm
IChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyICYmIG1fYXN5bmMpCiAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEobV9kb2N1bWVudC0+ZnJhbWUoKSwg
bV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgMCwgMCwgZGF0YUxlbmd0aCk7CiAjZW5kaWYK
IApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRv
dWJsZSBmaW5pc2hUaW1lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJl
ZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpCisgICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50
aWZpZXIgJiYgbV9hc3luYykKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRG
aW5pc2hMb2FkaW5nKG1fZG9jdW1lbnQtPmZyYW1lKCksIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyLCBm
aW5pc2hUaW1lKTsKICNlbmRpZgogCkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBkb3VibGUKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1f
cHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpCisgICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElk
ZW50aWZpZXIgJiYgbV9hc3luYykKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGYWlsTG9hZGluZyhtX2RvY3VtZW50LT5mcmFtZSgpLCBtX2RvY3VtZW50LT5mcmFtZSgpLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwg
ZXJyb3IpOwogI2VuZGlmCiAKQEAgLTM4Miw2ICszODIsOCBAQCB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBT
ZWN1cgogICAgICAgICAgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciA9IG1fZG9jdW1l
bnQtPmZyYW1lKCktPnBhZ2UoKS0+cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigp
OwogICAgICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlID0gUmVzb3Vy
Y2VSZXNwb25zZSgpOwogICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
U2VuZFJlcXVlc3QobV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRp
ZmllciwgbV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIG5l
d1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICB9IGVsc2UgaWYgKG1fcHJlZmxp
Z2h0UmVxdWVzdElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKG1fZG9jdW1lbnQsIG1fcHJlZmxpZ2h0UmVx
dWVzdElkZW50aWZpZXIpOwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgQVNTRVJUKCFtX3Jl
c291cmNlKTsKQEAgLTM5OSw2ICs0MDEsMTEgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICAg
ICBpZiAobV9kb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgaWRlbnRpZmllciA9IG1fZG9jdW1l
bnQtPmZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3Qs
IG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCisg
ICAgaWYgKG1fYWN0dWFsUmVxdWVzdCkKKyAgICAgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRp
ZmllciA9IGlkZW50aWZpZXI7CisgICAgZWxzZSBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRp
ZmllcikKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0
U3VjY2VkZWQobV9kb2N1bWVudCwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcik7CisKICAg
ICAvLyBObyBleGNlcHRpb24gZm9yIGZpbGU6Ly8vIHJlc291cmNlcywgc2VlIDxyZGFyOi8vcHJv
YmxlbS80OTYyMjk4Pi4KICAgICAvLyBBbHNvLCBpZiB3ZSBoYXZlIGFuIEhUVFAgcmVzcG9uc2Us
IHRoZW4gaXQgd2Fzbid0IGEgbmV0d29yayBlcnJvciBpbiBmYWN0LgogICAgIGlmICghZXJyb3Iu
aXNOdWxsKCkgJiYgIXJlcXVlc3RVUkwuaXNMb2NhbEZpbGUoKSAmJiByZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpIDw9IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4
IDExMWE2NDlhMTNlNzZhZWY4MzcwYjE4MmM5NTFjYTllNzVjZmIyMmUuLmRmNTMzYTljNDIyMjli
NjM2YjNlODdiZDgwYmEzNDUxODhiMjlkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcApAQCAtNjg0LDYgKzY4NCwxMiBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kQnl0
ZXNEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEV4Y2VwdGlvbkNvZAogICAg
IGNyZWF0ZVJlcXVlc3QoZWMpOwogfQogCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kRnJvbUlu
c3BlY3RvcihQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgbV9yZXF1ZXN0RW50aXR5Qm9keSA9IGZvcm1EYXRhOworICAgIGNyZWF0ZVJlcXVl
c3QoZWMpOworfQorCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogI2lmIEVOQUJMRShCTE9CKQpAQCAtNzE4LDYgKzcyNCw4IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmVx
dWVzdC5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNYSFIpOwogI2VuZGlm
CiAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVhIUlJlcXVlc3Qoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX21ldGhvZCwgbV9hc3luYywgbV9yZXF1ZXN0RW50aXR5
Qm9keSA/IG1fcmVxdWVzdEVudGl0eUJvZHktPmRlZXBDb3B5KCkgOiAwLCBtX3JlcXVlc3RIZWFk
ZXJzLCBtX2luY2x1ZGVDcmVkZW50aWFscywgbV91cmwudXNlcigpLCBtX3VybC5wYXNzKCkpOwor
CiAgICAgaWYgKG1fcmVxdWVzdEVudGl0eUJvZHkpIHsKICAgICAgICAgQVNTRVJUKG1fbWV0aG9k
ICE9ICJHRVQiKTsKICAgICAgICAgQVNTRVJUKG1fbWV0aG9kICE9ICJIRUFEIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDYwNjQyOGI3NmM3MTY0MGNkMGM4MTdjMzE4ZTk4
NWNhYjJmZjQ4MmMuLmNjNmNiYzUwYzM2MDE2NTA4OWUyNjU5OTc1Y2QxMGQzMTEyMmVmNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0xMDUsNiArMTA1LDggQEAgcHVibGlj
OgogICAgIEJsb2IqIHJlc3BvbnNlQmxvYihFeGNlcHRpb25Db2RlJik7CiAgICAgQmxvYiogb3B0
aW9uYWxSZXNwb25zZUJsb2IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlQmxvYi5nZXQoKTsg
fQogCisgICAgdm9pZCBzZW5kRnJvbUluc3BlY3RvcihQYXNzUmVmUHRyPEZvcm1EYXRhPiwgRXhj
ZXB0aW9uQ29kZSYpOworCiAgICAgLy8gRXhwb3NlIEhUVFAgdmFsaWRhdGlvbiBtZXRob2RzIGZv
ciBvdGhlciB1bnRydXN0ZWQgcmVxdWVzdHMuCiAgICAgc3RhdGljIGJvb2wgaXNBbGxvd2VkSFRU
UE1ldGhvZChjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVwcGVyY2FzZUtub3du
SFRUUE1ldGhvZChjb25zdCBTdHJpbmcmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161256</attachid>
            <date>2012-08-29 10:01:28 -0700</date>
            <delta_ts>2012-08-30 07:58:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120829210117.patch</filename>
            <type>text/plain</type>
            <size>24768</size>
            <attacher name="Pavel Chadnov">chadnov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBjNWNjOGM2NWQxZGE3
ODJiODkzZmFjZDU3YmM5ZmNjYjc3ZTg4OC4uZDlmMWZmYWI5MWU1ODI5Mzc1ZjE2NzViMjk5ODhh
NmZmYWI3MDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA4LTI5ICBQYXZl
bCBDaGFkbm92ICA8Y2hhZG5vdkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFhIUiByZXBsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgWEhSIHJlcGxheSBpbiBuZXR3b3JrIHRhYi4gQWxsIFhIUiBwYXJhbWV0ZXJzICht
ZXRob2QsIGFzeW5jLCBib2R5LCBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNz
d29yZCkgYXJlIHNhdmVkIGluIFhIUlJlcGxheURhdGEgc3RydWN0IGFuZCBpcyByZXN0b3JlZCBm
cm9tIGl0IHdoZW4gcmVwbGF5aW5nLgorICAgICAgICAKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWRJbXBs
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVYSFJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGln
aHRSZXF1ZXN0U3VjY2VkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlcGxheVhIUik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WEhSUmVwbGF5RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6WEhSUmVwbGF5RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6WEhSRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0WEhSUmVwbGF5RGF0YSk6CisgICAgICAgICogaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChYSFJSZXBsYXlEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6WEhSRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRYSFJSZXBsYXlEYXRhKToKKyAgICAgICAgKFJlc291
cmNlRGF0YSk6CisgICAgICAgIChOZXR3b3JrUmVzb3VyY2VzRGF0YSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9jb250ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9yZXBsYXlYSFIpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmFpbCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5oOgorICAgICAgICAoWE1MSHR0cFJlcXVlc3QpOgorCiAyMDEyLTA4
LTI3ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIEZpeGluZyBpbmZpbml0ZSByZWN1cnNpb24gaW4gQ2FudmFzMkRMYXllck1hbmFnZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBkYWUzNjg5NDhlOTcx
ZWU2MWI5N2Q1ZGQ4NjY1MmRjOGZiMzk4OTU4Li5mNThiNzVkMmEyY2RiZjM3MzAwZmQ3YWU0YmYw
ZTVlYWNmYzlmNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBA
IC04NzQsNiArODc0LDE2IEBACiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXBsYXlYSFIiLAorICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYXlzIFhIUi4gVGhlIG5ldyBYSFIgaXMgaWRl
bnRpY2FsIHRvIG9yaWdpbmFsIChwYXJhbWV0ZXJzIG1ldGhvZCwgYXN5bmMsIGJvZHksIGhlYWRl
cnMsIHdpdGhDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkIGFyZSBjb3BpZWQpIiwKKyAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRp
ZmllciBvZiBYSFIgdG8gcmVwbGF5LiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAi
aGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAibmFtZSI6ICJjYW5DbGVhckJyb3dzZXJDYWNoZSIsCiAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlRlbGxzIHdoZXRoZXIgY2xlYXJpbmcgYnJvd3NlciBjYWNoZSBpcyBzdXBw
b3J0ZWQuIiwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYWY0
NDcyOGM2NDYxMDA4YmFmMzk0N2YzZGI2OTdmNjI0ZmE2YzZlNy4uZjQ4YjA2ZWQzNjZhYTUwZDlh
YTA1YmI1NmMzYmZmZTFhMDgwNDU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTMzMCw2ICszMzAsMTggQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBs
KGNvbnN0IEluc3BlY3Rvckluc3RydW0KICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ2hhbmdl
WEhSUmVhZHlTdGF0ZSgpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q3JlYXRlWEhSUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9y
bURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRp
YWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvclJlc291cmNlQWdlbnQoKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkQ3JlYXRlWEhS
UmVxdWVzdChtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNyZWRlbnRp
YWxzLCBsb2dpbiwgcGFzc3dvcmQpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkKQoreworICAgIGlmIChJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCgpKQorICAgICAgICByZXNvdXJjZUFnZW50LT5wcmVmbGlnaHRSZXF1
ZXN0U3VjY2VkZWQoaWQpOworfQorCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5k
b3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2Vz
dG9ycywgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCmluZGV4IGRiMzM1YmZhZjQ1MGNjMzE4Y2JjZTRkZjYxODExMjdkZDI1NGY1YzguLjM2
ZmE3ZDQ1NzdlZWFiYzhmNjVkNDQ5N2RkOWE0MzhkZjE3YTlhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTE2MSw2
ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgd2lsbFByb2Nlc3NUYXNrKFBhZ2Uq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRQcm9jZXNzVGFzayhQYWdlKik7CiAKKyAgICBzdGF0aWMg
dm9pZCBkaWRDcmVhdGVYSFJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBTdHJpbmcs
IGJvb2wsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCwg
U3RyaW5nLCBTdHJpbmcpOworICAgIHN0YXRpYyB2b2lkIHByZWZsaWdodFJlcXVlc3RTdWNjZWRl
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyk7CisKICAgICBzdGF0aWMg
dm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlKEZyYW1lKiwgU3RyaW5nKik7CiAgICAgc3RhdGlj
IHZvaWQgYXBwbHlTY3JlZW5XaWR0aE92ZXJyaWRlKEZyYW1lKiwgbG9uZyopOwogICAgIHN0YXRp
YyB2b2lkIGFwcGx5U2NyZWVuSGVpZ2h0T3ZlcnJpZGUoRnJhbWUqLCBsb25nKik7CkBAIC0zMzYs
NiArMzM5LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRQcm9jZXNzUnVsZUltcGwo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZvaWQg
d2lsbFByb2Nlc3NUYXNrSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3RhdGljIHZv
aWQgZGlkUHJvY2Vzc1Rhc2tJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRDcmVhdGVYSFJSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgU3RyaW5n
LCBib29sLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2ws
IFN0cmluZywgU3RyaW5nKTsKKyAgICBzdGF0aWMgdm9pZCBwcmVmbGlnaHRSZXF1ZXN0U3VjY2Vk
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nKTsKIAogICAgIHN0YXRp
YyB2b2lkIGFwcGx5VXNlckFnZW50T3ZlcnJpZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBT
dHJpbmcqKTsKICAgICBzdGF0aWMgdm9pZCBhcHBseVNjcmVlbldpZHRoT3ZlcnJpZGVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBsb25nKik7CkBAIC0xMTYxLDYgKzExNjYsMjMgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9uc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGUKICNlbmRpZgogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENyZWF0ZVhIUlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
Zm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRl
bnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKK3sKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCisgICAgICAgIGRpZENy
ZWF0ZVhIUlJlcXVlc3RJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIG1ldGhvZCwgYXN5bmMsIGZv
cm1EYXRhLCBoZWFkZXJzLCBpbmNsdWRlQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNzd29yZCk7Cisj
ZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGln
aHRSZXF1ZXN0U3VjY2VkZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdW5zaWdu
ZWQgbG9uZyBpZCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNv
bnRleHQoY29udGV4dCkpCisgICAgICAgIHByZWZsaWdodFJlcXVlc3RTdWNjZWRlZEltcGwoaW5z
dHJ1bWVudGluZ0FnZW50cywgaWQpOworI2VuZGlmCit9CisKKwogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4
IDlkOTI5YzlhMTBiZWQzNGMyOWMyODk0ODFhYjBhNGE1YTYyODY5MTQuLmI2ZDhmMjk5NTA2Y2Uy
ZjhiNmVjYmU5YTQxNzNiMjUxYWU5YzRjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTY0LDYgKzY0LDcgQEAKICNp
bmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgorI2luY2x1
ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CkBAIC0yMDMsMTMgKzIwNCwzNCBAQCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50Ojp+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpCiAgICAgQVNTRVJUKCFtX2lu
c3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSk7CiB9CiAKK3ZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlWEhSUmVxdWVzdChTdHJpbmcgbWV0aG9k
LCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhl
YWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMsIFN0cmluZyBsb2dpbiwg
U3RyaW5nIHBhc3N3b3JkKQoreworICAgIGlmICghbV9vcmlnaW5hbFJlcXVlc3RJZC5pc0VtcHR5
KCkpCisgICAgICAgIG1fWEhSRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+WEhSRGF0YShtX29yaWdp
bmFsUmVxdWVzdElkKTsKKyAgICBlbHNlCisgICAgICAgIG1fWEhSRGF0YSA9IFhIUlJlcGxheURh
dGE6OmNyZWF0ZShtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNyZWRl
bnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpOworfQorCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZCh1bnNpZ25lZCBsb25nIGlkKQoreworICAgIG1f
cHJlZmxpZ2h0UmVxdWVzdElkID0gaWQ7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlm
aWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKICAgICBtX3Jlc291cmNlc0RhdGEt
PnJlc291cmNlQ3JlYXRlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIp
KTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBtX3N0YXRlLT5nZXRP
YmplY3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzKTsKKyAgICBpZiAo
bV9YSFJEYXRhKSB7CisgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0WEhSUmVwbGF5RGF0YShy
ZXF1ZXN0SWQsIG1fWEhSRGF0YSk7CisgICAgICAgIG1fWEhSRGF0YSA9IG51bGxwdHI7CisgICAg
fSBlbHNlIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZCkgeworICAgICAgICBtX3Jlc291cmNlc0Rh
dGEtPnNldFhIUlJlcGxheURhdGEocmVxdWVzdElkLCBtX3Jlc291cmNlc0RhdGEtPlhIUkRhdGEo
SWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQobV9wcmVmbGlnaHRSZXF1ZXN0SWQpKSk7Cisg
ICAgICAgIG1fcHJlZmxpZ2h0UmVxdWVzdElkID0gMDsKKyAgICB9CisKIAorICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBtX3N0YXRlLT5nZXRPYmplY3QoUmVzb3VyY2VBZ2Vu
dFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzKTsKICAgICBpZiAoaGVhZGVycykgewogICAgICAg
ICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMtPmVuZCgpOwog
ICAgICAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJz
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTU3MCw2ICs1OTIsMjMgQEAgdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHIKICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gZGF0YSBmb3VuZCBmb3Ig
cmVzb3VyY2Ugd2l0aCBnaXZlbiBpZGVudGlmaWVyIjsKIH0KIAordm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCkKK3sKKyAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhociA9IFhNTEh0
dHBSZXF1ZXN0OjpjcmVhdGUobV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsK
KyAgICBFeGNlcHRpb25Db2RlIGNvZGU7CisgICAgU3RyaW5nIGFjdHVhbFJlcXVlc3RJZCA9IHJl
cXVlc3RJZDsKKworICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3Qq
IHJlc291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+ZGF0YShhY3R1YWxSZXF1ZXN0SWQpOwor
ICAgIFJlZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5YSFJE
YXRhKGFjdHVhbFJlcXVlc3RJZCk7CisgICAgbV9vcmlnaW5hbFJlcXVlc3RJZCA9IHJlcXVlc3RJ
ZDsKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBYSFJEYXRhLT5tX2hl
YWRlcnMuZW5kKCk7CisgICAgeGhyLT5vcGVuKFhIUkRhdGEtPm1fbWV0aG9kLCBLVVJMKFBhcnNl
ZFVSTFN0cmluZywgcmVzb3VyY2VEYXRhLT51cmwoKSksIFhIUkRhdGEtPm1fYXN5bmMsIGNvZGUp
OworICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBYSFJEYXRhLT5t
X2hlYWRlcnMuYmVnaW4oKTsgaXQhPSBlbmQ7ICsraXQpCisgICAgICAgIHhoci0+c2V0UmVxdWVz
dEhlYWRlcihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQsIGNvZGUpOworICAgIHhoci0+c2VuZEZyb21J
bnNwZWN0b3IoWEhSRGF0YS0+bV9mb3JtRGF0YSwgY29kZSk7CisgICAgbV9vcmlnaW5hbFJlcXVl
c3RJZCA9IFN0cmluZygpOworfQorCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNhbkNs
ZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKiwgYm9vbCogcmVzdWx0KQogewogICAgICpyZXN1
bHQgPSBtX2NsaWVudC0+Y2FuQ2xlYXJCcm93c2VyQ2FjaGUoKTsKQEAgLTYxMiw2ICs2NTEsOSBA
QCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9y
ZXNvdXJjZXNEYXRhKGFkb3B0UHRyKG5ldyBOZXR3b3JrUmVzb3VyY2VzRGF0YSgpKSkKICAgICAs
IG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkoZmFsc2UpCisgICAgLCBtX1hIUkRhdGEoMCkKKyAg
ICAsIG1fcHJlZmxpZ2h0UmVxdWVzdElkKDApCisgICAgLCBtX3ByZWZsaWdodElkVG9SZXF1ZXN0
SWQoKQogICAgICwgbV9pc1JlY2FsY3VsYXRpbmdTdHlsZShmYWxzZSkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IDVj
OWZiZTI2MmU2ZTBmYmFjYTczOWFhODJhNmZiMzU2OTU5NTIzNGQuLmRiMjY1YWRhYjljY2U4MjAz
ZDkyYTkwZjFjZGEyZDJkMjI1NTIxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNTAsNyArNTAsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RG9jdW1lbnRMb2FkZXI7CitjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEZyYW1lOworY2xhc3MgSFRU
UEhlYWRlck1hcDsKIGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50
OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CkBAIC02Niw2ICs2OCw3IEBAIGNsYXNzIFJlc291
cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK3N0cnVjdCBYSFJSZXBsYXlEYXRhOwogCiAjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQogc3RydWN0IFdlYlNvY2tldEZyYW1lOwpAQCAtMTA3LDYgKzExMCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UqKTsKIAogICAgIHZvaWQgYXBwbHlVc2VyQWdlbnRPdmVycmlkZShTdHJpbmcqIHVzZXJB
Z2VudCk7CisgICAgdm9pZCBkaWRDcmVhdGVYSFJSZXF1ZXN0KFN0cmluZyBtZXRob2QsIGJvb2wg
YXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGJvZHksIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
YWRlcnMsIGJvb2wgaW5jbHVkZUNyZW5kZW50aWFscywgU3RyaW5nIGxvZ2luLCBTdHJpbmcgcGFz
c3dvcmQpOworICAgIHZvaWQgcHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKHVuc2lnbmVkIGxvbmcg
aWQpOwogCiAgICAgLy8gRklYTUU6IEluc3BlY3RvclJlc291cmNlQWdlbnQgc2hvdWxkIG5vdyBi
ZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1bGF0aW9uLgogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRl
U3R5bGUoKTsKQEAgLTEzNSw2ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNv
ZGVkKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCk7CisKICAgICB2aXJ0dWFsIHZvaWQgY2FuQ2xlYXJCcm93c2VyQ2Fj
aGUoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3NlckNh
Y2hlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGNhbkNsZWFyQnJvd3NlckNvb2tp
ZXMoRXJyb3JTdHJpbmcqLCBib29sKik7CkBAIC0xNTMsNiArMTYwLDEwIEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPE5ldHdvcmtSZXNvdXJjZXNEYXRhPiBtX3Jlc291cmNlc0RhdGE7CiAgICAgYm9v
bCBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5OwogCisgICAgUmVmUHRyPFhIUlJlcGxheURhdGE+
IG1fWEhSRGF0YTsKKyAgICB1bnNpZ25lZCBsb25nIG1fcHJlZmxpZ2h0UmVxdWVzdElkOworICAg
IFN0cmluZyBtX29yaWdpbmFsUmVxdWVzdElkOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
IG1fcHJlZmxpZ2h0SWRUb1JlcXVlc3RJZDsKICAgICAvLyBGSVhNRTogSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24uCiAgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IG1fc3R5bGVSZWNhbGN1bGF0
aW9uSW5pdGlhdG9yOwogICAgIGJvb2wgbV9pc1JlY2FsY3VsYXRpbmdTdHlsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGUw
NWQxM2RlY2IzODE4ZmNmMWJiODMzMjgzNTlkZWFmYjI5NWRmYWMuLjZhMWMxMTA4ZGY1MzM1OWRj
MWM0YmE1NzY4NWUyZDhkNDE3YzZmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDYsNiArNDYsMjEgQEAgc3RhdGljIHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEwICogMTAwMCAqIDEwMDA7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJS
ZXBsYXlEYXRhOjpjcmVhdGUoU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxG
b3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5j
bHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFhIUlJlcGxheURhdGEobWV0aG9kLCBhc3luYywgZm9ybURhdGEs
IGhlYWRlcnMsIGluY2x1ZGVDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkKSk7Cit9CisKK1hI
UlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEoU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFz
c1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMs
IGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkK
KyAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAsIG1fYXN5bmMoYXN5bmMpCisgICAgLCBtX2Zv
cm1EYXRhKGZvcm1EYXRhKQorICAgICwgbV9oZWFkZXJzKGhlYWRlcnMpCisgICAgLCBtX2luY2x1
ZGVDcmVkZW50aWFscyhpbmNsdWRlQ3JlZGVudGlhbHMpCisgICAgLCBtX2xvZ2luKGxvZ2luKQor
ICAgICwgbV9wYXNzd29yZChwYXNzd29yZCkKK3sKK30KIAogLy8gUmVzb3VyY2VEYXRhCiBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbG9hZGVySWQpCkBAIC0yNTMsNiArMjY4LDE2IEBA
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpkYXRhKGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIG1fcmVxdWVzdElkVG9SZXNvdXJj
ZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCk7CiB9CiAKK1Bhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4g
TmV0d29ya1Jlc291cmNlc0RhdGE6OlhIUkRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCit7
CisgICAgcmV0dXJuIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCkt
PlhIUkRhdGEoKTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0WEhSUmVwbGF5
RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBY
SFJEYXRhKQoreworICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJ
ZCktPnNldFhIUlJlcGxheURhdGEoWEhSRGF0YSk7Cit9CisKIFZlY3RvcjxTdHJpbmc+IE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2Fj
aGVkUmVzb3VyY2UpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCA4ZGZkNWRkMGRi
YjIxMWEwYzQ5MmVhNmYxZmQzYTQ4ZTkwNzcxZWM4Li5mYjU0MDc2OWFjODgwOTI2ZDg2MDcwNjdi
Njk0MjJlOWYwNmQ4OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaApAQCAtNDYsNiArNDYsMjAgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCitjbGFz
cyBYSFJSZXBsYXlEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8WEhSUmVwbGF5RGF0YT4geworcHVi
bGljOgorICAgIFN0cmluZyBtX21ldGhvZDsKKyAgICBib29sIG1fYXN5bmM7CisgICAgUmVmUHRy
PEZvcm1EYXRhPiBtX2Zvcm1EYXRhOworICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFkZXJzOworICAg
IGJvb2wgbV9pbmNsdWRlQ3JlZGVudGlhbHM7CisgICAgU3RyaW5nIG1fbG9naW47CisgICAgU3Ry
aW5nIG1fcGFzc3dvcmQ7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gY3Jl
YXRlKFN0cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25z
dCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU3RyaW5n
IGxvZ2luLCBTdHJpbmcgcGFzc3dvcmQpOworcHJpdmF0ZToKKyAgICBYSFJSZXBsYXlEYXRhKFN0
cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQ
SGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU3RyaW5nIGxvZ2lu
LCBTdHJpbmcgcGFzc3dvcmQpOworfTsKKwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewog
cHVibGljOgogICAgIGNsYXNzIFJlc291cmNlRGF0YSB7CkBAIC05MCw2ICsxMDQsOCBAQCBwdWJs
aWM6CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkUmVzb3VyY2U7IH0KICAgICAgICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpIHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hl
ZFJlc291cmNlOyB9CiAKKyAgICAgICAgUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9YSFJEYXRhOyB9CisgICAgICAgIHZvaWQgc2V0WEhSUmVwbGF5
RGF0YShQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IFhIUkRhdGEpIHsgbV9YSFJEYXRhID0gWEhS
RGF0YTt9OwogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YUJ1ZmZlcjsgfQogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwpA
QCAtMTAxLDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fZnJhbWVJZDsKICAg
ICAgICAgU3RyaW5nIG1fdXJsOwogICAgICAgICBTdHJpbmcgbV9jb250ZW50OworICAgICAgICBS
ZWZQdHI8WEhSUmVwbGF5RGF0YT4gbV9YSFJEYXRhOwogICAgICAgICBib29sIG1fYmFzZTY0RW5j
b2RlZDsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOwogICAgICAg
ICBib29sIG1faXNDb250ZW50UHVyZ2VkOwpAQCAtMTMyLDYgKzE0OSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQgPSBTdHJpbmcoKSk7
CiAKICAgICB2b2lkIHNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKHNpemVfdCBtYXhpbXVtUmVz
b3VyY2VzQ29udGVudFNpemUsIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6
ZSk7CisgICAgdm9pZCBzZXRYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBQ
YXNzUmVmUHRyPFhIUlJlcGxheURhdGE+KTsKKyAgICBQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+
IFhIUkRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
ZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5k
ZXggNWM4MGFjMTc4MjA4ZTViMjA5Mzk3ZjYwOTc1YWM3MDQ3MGI3MDY3Ni4uYzdiOTAwNjMyMTdj
MGJiYjQ5MDE4OGFjODYyYjg3ZmI4NDNlZDQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTk2Miw4ICs5NjIsMjEgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRo
aXMuX2NhbkNsZWFyQnJvd3NlckNvb2tpZXMpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVu
dVRpdGxlcygpID8gIkNsZWFyIGJyb3dzZXIgY29va2llcyIgOiAiQ2xlYXIgQnJvd3NlciBDb29r
aWVzIiksIHRoaXMuX2NsZWFyQnJvd3NlckNvb2tpZXMuYmluZCh0aGlzKSk7CiAKKworICAgICAg
ICBpZiAocmVxdWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5YSFIpIHsK
KyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcGxheSBYSFIi
KSwgdGhpcy5fcmVwbGF5WEhSLmJpbmQodGhpcywgcmVxdWVzdC5yZXF1ZXN0SWQpKTsKKyAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICB9CisKICAgICAg
ICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CiAgICAgfSwKKyAgICAKKyAgICBfcmVwbGF5WEhS
OiBmdW5jdGlvbihyZXF1ZXN0SWQpCisgICAgeworICAgICAgICBOZXR3b3JrQWdlbnQucmVwbGF5
WEhSKHJlcXVlc3RJZCk7CisgICAgfSwKKyAgICAKIAogICAgIF9jb3B5QWxsOiBmdW5jdGlvbigp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAppbmRleCBhMGM2NDg5Y2IwNjM5MDkwYWQ5NTM5ZDg0YjRlMmUwOWVmNDVjNmJi
Li5iZjU5N2UzN2EyMDc3MzJmZmZhMzk2NGZmY2U0MDYzZjExOWFhYTkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMjQ2
LDcgKzI0Niw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zCiAgICAgQVNTRVJUKG1fY2xpZW50
KTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElk
ZW50aWZpZXIpIHsKKyAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciAmJiBtX2Fz
eW5jKSB7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtX2RvY3VtZW50LT5mcmFt
ZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZG9jdW1lbnQtPmZyYW1lKCksIG1fcHJlZmxpZ2h0UmVx
dWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIG1fcHJlZmxpZ2h0UmVxdWVz
dElkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UsIDApOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBjb25zdCBjaGFyCiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3Vy
Y2UgPT0gbV9yZXNvdXJjZSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChtX3By
ZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVu
dGlmaWVyICYmIG1fYXN5bmMpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZURhdGEobV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRp
ZmllciwgMCwgMCwgZGF0YUxlbmd0aCk7CiAjZW5kaWYKIApAQCAtMzE1LDcgKzMxNSw3IEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIp
CisgICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgJiYgbV9hc3luYykKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKG1fZG9jdW1lbnQt
PmZyYW1lKCksIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigp
LCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKICNlbmRpZgogCkBA
IC0zMzAsNyArMzMwLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUKIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZp
ZXIpCisgICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgJiYgbV9hc3luYykKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtX2RvY3VtZW50
LT5mcmFtZSgpLCBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIo
KSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOwogI2VuZGlmCiAKQEAgLTM4
Miw2ICszODIsOCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cgogICAgICAgICAgICAgbV9wcmVm
bGlnaHRSZXF1ZXN0SWRlbnRpZmllciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPnBhZ2UoKS0+cHJv
Z3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgICAgICAgICAgUmVzb3VyY2VS
ZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwogICAgICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QobV9kb2N1bWVudC0+
ZnJhbWUoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgbV9kb2N1bWVudC0+ZnJhbWUo
KS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpOworICAgICAgICB9IGVsc2UgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpIHsK
KyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1
Y2NlZGVkKG1fZG9jdW1lbnQsIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpOwogICAgICAg
ICB9CiAjZW5kaWYKICAgICAgICAgQVNTRVJUKCFtX3Jlc291cmNlKTsKQEAgLTM5OSw2ICs0MDEs
MTEgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICAgICBpZiAobV9kb2N1bWVudC0+ZnJhbWUo
KSkKICAgICAgICAgaWRlbnRpZmllciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5s
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QsIG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRp
YWxzLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCisgICAgaWYgKG1fYWN0dWFsUmVxdWVzdCkK
KyAgICAgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAg
ZWxzZSBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQobV9kb2N1bWVudCwgbV9w
cmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcik7CisKICAgICAvLyBObyBleGNlcHRpb24gZm9yIGZp
bGU6Ly8vIHJlc291cmNlcywgc2VlIDxyZGFyOi8vcHJvYmxlbS80OTYyMjk4Pi4KICAgICAvLyBB
bHNvLCBpZiB3ZSBoYXZlIGFuIEhUVFAgcmVzcG9uc2UsIHRoZW4gaXQgd2Fzbid0IGEgbmV0d29y
ayBlcnJvciBpbiBmYWN0LgogICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgIXJlcXVlc3RVUkwu
aXNMb2NhbEZpbGUoKSAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIDw9IDApIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDExMWE2NDlhMTNlNzZhZWY4MzcwYjE4
MmM5NTFjYTllNzVjZmIyMmUuLmNjYWYzOWEwZDA4NTIxZDM4NTg1YjE3ZTEyMTI2ZmYwZDA3NDRm
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNjg0LDYgKzY4NCwx
MyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kQnl0ZXNEYXRhKGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIEV4Y2VwdGlvbkNvZAogICAgIGNyZWF0ZVJlcXVlc3QoZWMpOwogfQog
Cit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kRnJvbUluc3BlY3RvcihQYXNzUmVmUHRyPEZvcm1E
YXRhPiBmb3JtRGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgbV9yZXF1ZXN0RW50aXR5
Qm9keSA9IGZvcm1EYXRhOworICAgIGNyZWF0ZVJlcXVlc3QoZWMpOworICAgIG1fZXhjZXB0aW9u
Q29kZSA9IGVjOworfQorCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogI2lmIEVOQUJMRShCTE9CKQpAQCAtNzE4LDYgKzcyNSw4IEBAIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
cmVxdWVzdC5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNYSFIpOwogI2Vu
ZGlmCiAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVhIUlJlcXVlc3Qo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX21ldGhvZCwgbV9hc3luYywgbV9yZXF1ZXN0RW50
aXR5Qm9keSA/IG1fcmVxdWVzdEVudGl0eUJvZHktPmRlZXBDb3B5KCkgOiAwLCBtX3JlcXVlc3RI
ZWFkZXJzLCBtX2luY2x1ZGVDcmVkZW50aWFscywgbV91cmwudXNlcigpLCBtX3VybC5wYXNzKCkp
OworCiAgICAgaWYgKG1fcmVxdWVzdEVudGl0eUJvZHkpIHsKICAgICAgICAgQVNTRVJUKG1fbWV0
aG9kICE9ICJHRVQiKTsKICAgICAgICAgQVNTRVJUKG1fbWV0aG9kICE9ICJIRUFEIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDYwNjQyOGI3NmM3MTY0MGNkMGM4MTdjMzE4
ZTk4NWNhYjJmZjQ4MmMuLmNjNmNiYzUwYzM2MDE2NTA4OWUyNjU5OTc1Y2QxMGQzMTEyMmVmNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0xMDUsNiArMTA1LDggQEAgcHVi
bGljOgogICAgIEJsb2IqIHJlc3BvbnNlQmxvYihFeGNlcHRpb25Db2RlJik7CiAgICAgQmxvYiog
b3B0aW9uYWxSZXNwb25zZUJsb2IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlQmxvYi5nZXQo
KTsgfQogCisgICAgdm9pZCBzZW5kRnJvbUluc3BlY3RvcihQYXNzUmVmUHRyPEZvcm1EYXRhPiwg
RXhjZXB0aW9uQ29kZSYpOworCiAgICAgLy8gRXhwb3NlIEhUVFAgdmFsaWRhdGlvbiBtZXRob2Rz
IGZvciBvdGhlciB1bnRydXN0ZWQgcmVxdWVzdHMuCiAgICAgc3RhdGljIGJvb2wgaXNBbGxvd2Vk
SFRUUE1ldGhvZChjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVwcGVyY2FzZUtu
b3duSFRUUE1ldGhvZChjb25zdCBTdHJpbmcmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161470</attachid>
            <date>2012-08-30 07:58:10 -0700</date>
            <delta_ts>2012-08-30 08:20:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120830185757.patch</filename>
            <type>text/plain</type>
            <size>24768</size>
            <attacher name="Pavel Chadnov">chadnov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBjNWNjOGM2NWQxZGE3
ODJiODkzZmFjZDU3YmM5ZmNjYjc3ZTg4OC4uZDlmMWZmYWI5MWU1ODI5Mzc1ZjE2NzViMjk5ODhh
NmZmYWI3MDMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTA4LTI5ICBQYXZl
bCBDaGFkbm92ICA8Y2hhZG5vdkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFhIUiByZXBsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgWEhSIHJlcGxheSBpbiBuZXR3b3JrIHRhYi4gQWxsIFhIUiBwYXJhbWV0ZXJzICht
ZXRob2QsIGFzeW5jLCBib2R5LCBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNz
d29yZCkgYXJlIHNhdmVkIGluIFhIUlJlcGxheURhdGEgc3RydWN0IGFuZCBpcyByZXN0b3JlZCBm
cm9tIGl0IHdoZW4gcmVwbGF5aW5nLgorICAgICAgICAKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWRJbXBs
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVYSFJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGln
aHRSZXF1ZXN0U3VjY2VkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlcGxheVhIUik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6WEhSUmVwbGF5RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6WEhSUmVwbGF5RGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6WEhSRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpO
ZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0WEhSUmVwbGF5RGF0YSk6CisgICAgICAgICogaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChYSFJSZXBsYXlEYXRhKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6WEhSRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRYSFJSZXBsYXlEYXRhKToKKyAgICAgICAgKFJlc291
cmNlRGF0YSk6CisgICAgICAgIChOZXR3b3JrUmVzb3VyY2VzRGF0YSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9jb250ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9yZXBsYXlYSFIpOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmFpbCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KToKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5oOgorICAgICAgICAoWE1MSHR0cFJlcXVlc3QpOgorCiAyMDEyLTA4
LTI3ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIEZpeGluZyBpbmZpbml0ZSByZWN1cnNpb24gaW4gQ2FudmFzMkRMYXllck1hbmFnZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBkYWUzNjg5NDhlOTcx
ZWU2MWI5N2Q1ZGQ4NjY1MmRjOGZiMzk4OTU4Li5mNThiNzVkMmEyY2RiZjM3MzAwZmQ3YWU0YmYw
ZTVlYWNmYzlmNWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBA
IC04NzQsNiArODc0LDE2IEBACiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXBsYXlYSFIiLAorICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYXlzIFhIUi4gVGhlIG5ldyBYSFIgaXMgaWRl
bnRpY2FsIHRvIG9yaWdpbmFsIChwYXJhbWV0ZXJzIG1ldGhvZCwgYXN5bmMsIGJvZHksIGhlYWRl
cnMsIHdpdGhDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkIGFyZSBjb3BpZWQpIiwKKyAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRp
ZmllciBvZiBYSFIgdG8gcmVwbGF5LiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAi
aGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAibmFtZSI6ICJjYW5DbGVhckJyb3dzZXJDYWNoZSIsCiAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlRlbGxzIHdoZXRoZXIgY2xlYXJpbmcgYnJvd3NlciBjYWNoZSBpcyBzdXBw
b3J0ZWQuIiwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYWY0
NDcyOGM2NDYxMDA4YmFmMzk0N2YzZGI2OTdmNjI0ZmE2YzZlNy4uZjQ4YjA2ZWQzNjZhYTUwZDlh
YTA1YmI1NmMzYmZmZTFhMDgwNDU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTMzMCw2ICszMzAsMTggQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBs
KGNvbnN0IEluc3BlY3Rvckluc3RydW0KICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ2hhbmdl
WEhSUmVhZHlTdGF0ZSgpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q3JlYXRlWEhSUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9y
bURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRp
YWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvclJlc291cmNlQWdlbnQoKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkQ3JlYXRlWEhS
UmVxdWVzdChtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNyZWRlbnRp
YWxzLCBsb2dpbiwgcGFzc3dvcmQpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkKQoreworICAgIGlmIChJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yUmVzb3VyY2VBZ2VudCgpKQorICAgICAgICByZXNvdXJjZUFnZW50LT5wcmVmbGlnaHRSZXF1
ZXN0U3VjY2VkZWQoaWQpOworfQorCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5k
b3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2Vz
dG9ycywgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCmluZGV4IGRiMzM1YmZhZjQ1MGNjMzE4Y2JjZTRkZjYxODExMjdkZDI1NGY1YzguLjM2
ZmE3ZDQ1NzdlZWFiYzhmNjVkNDQ5N2RkOWE0MzhkZjE3YTlhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTE2MSw2
ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgd2lsbFByb2Nlc3NUYXNrKFBhZ2Uq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRQcm9jZXNzVGFzayhQYWdlKik7CiAKKyAgICBzdGF0aWMg
dm9pZCBkaWRDcmVhdGVYSFJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBTdHJpbmcs
IGJvb2wsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCwg
U3RyaW5nLCBTdHJpbmcpOworICAgIHN0YXRpYyB2b2lkIHByZWZsaWdodFJlcXVlc3RTdWNjZWRl
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyk7CisKICAgICBzdGF0aWMg
dm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlKEZyYW1lKiwgU3RyaW5nKik7CiAgICAgc3RhdGlj
IHZvaWQgYXBwbHlTY3JlZW5XaWR0aE92ZXJyaWRlKEZyYW1lKiwgbG9uZyopOwogICAgIHN0YXRp
YyB2b2lkIGFwcGx5U2NyZWVuSGVpZ2h0T3ZlcnJpZGUoRnJhbWUqLCBsb25nKik7CkBAIC0zMzYs
NiArMzM5LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRQcm9jZXNzUnVsZUltcGwo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZvaWQg
d2lsbFByb2Nlc3NUYXNrSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3RhdGljIHZv
aWQgZGlkUHJvY2Vzc1Rhc2tJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRDcmVhdGVYSFJSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgU3RyaW5n
LCBib29sLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2ws
IFN0cmluZywgU3RyaW5nKTsKKyAgICBzdGF0aWMgdm9pZCBwcmVmbGlnaHRSZXF1ZXN0U3VjY2Vk
ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nKTsKIAogICAgIHN0YXRp
YyB2b2lkIGFwcGx5VXNlckFnZW50T3ZlcnJpZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBT
dHJpbmcqKTsKICAgICBzdGF0aWMgdm9pZCBhcHBseVNjcmVlbldpZHRoT3ZlcnJpZGVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBsb25nKik7CkBAIC0xMTYxLDYgKzExNjYsMjMgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9uc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGUKICNlbmRpZgogfQogCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENyZWF0ZVhIUlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
Zm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRl
bnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKK3sKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCisgICAgICAgIGRpZENy
ZWF0ZVhIUlJlcXVlc3RJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIG1ldGhvZCwgYXN5bmMsIGZv
cm1EYXRhLCBoZWFkZXJzLCBpbmNsdWRlQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNzd29yZCk7Cisj
ZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGln
aHRSZXF1ZXN0U3VjY2VkZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdW5zaWdu
ZWQgbG9uZyBpZCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNv
bnRleHQoY29udGV4dCkpCisgICAgICAgIHByZWZsaWdodFJlcXVlc3RTdWNjZWRlZEltcGwoaW5z
dHJ1bWVudGluZ0FnZW50cywgaWQpOworI2VuZGlmCit9CisKKwogaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4
IDlkOTI5YzlhMTBiZWQzNGMyOWMyODk0ODFhYjBhNGE1YTYyODY5MTQuLmI2ZDhmMjk5NTA2Y2Uy
ZjhiNmVjYmU5YTQxNzNiMjUxYWU5YzRjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTY0LDYgKzY0LDcgQEAKICNp
bmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgorI2luY2x1
ZGUgIlhNTEh0dHBSZXF1ZXN0LmgiCiAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvSGV4TnVtYmVyLmg+CkBAIC0yMDMsMTMgKzIwNCwzNCBAQCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50Ojp+SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpCiAgICAgQVNTRVJUKCFtX2lu
c3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSk7CiB9CiAKK3ZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkQ3JlYXRlWEhSUmVxdWVzdChTdHJpbmcgbWV0aG9k
LCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhl
YWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMsIFN0cmluZyBsb2dpbiwg
U3RyaW5nIHBhc3N3b3JkKQoreworICAgIGlmICghbV9vcmlnaW5hbFJlcXVlc3RJZC5pc0VtcHR5
KCkpCisgICAgICAgIG1fWEhSRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+WEhSRGF0YShtX29yaWdp
bmFsUmVxdWVzdElkKTsKKyAgICBlbHNlCisgICAgICAgIG1fWEhSRGF0YSA9IFhIUlJlcGxheURh
dGE6OmNyZWF0ZShtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNyZWRl
bnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpOworfQorCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZCh1bnNpZ25lZCBsb25nIGlkKQoreworICAgIG1f
cHJlZmxpZ2h0UmVxdWVzdElkID0gaWQ7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlm
aWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKICAgICBtX3Jlc291cmNlc0RhdGEt
PnJlc291cmNlQ3JlYXRlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIp
KTsKIAotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBtX3N0YXRlLT5nZXRP
YmplY3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzKTsKKyAgICBpZiAo
bV9YSFJEYXRhKSB7CisgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0WEhSUmVwbGF5RGF0YShy
ZXF1ZXN0SWQsIG1fWEhSRGF0YSk7CisgICAgICAgIG1fWEhSRGF0YSA9IG51bGxwdHI7CisgICAg
fSBlbHNlIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZCkgeworICAgICAgICBtX3Jlc291cmNlc0Rh
dGEtPnNldFhIUlJlcGxheURhdGEocmVxdWVzdElkLCBtX3Jlc291cmNlc0RhdGEtPlhIUkRhdGEo
SWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQobV9wcmVmbGlnaHRSZXF1ZXN0SWQpKSk7Cisg
ICAgICAgIG1fcHJlZmxpZ2h0UmVxdWVzdElkID0gMDsKKyAgICB9CisKIAorICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBtX3N0YXRlLT5nZXRPYmplY3QoUmVzb3VyY2VBZ2Vu
dFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzKTsKICAgICBpZiAoaGVhZGVycykgewogICAgICAg
ICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMtPmVuZCgpOwog
ICAgICAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJz
LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTU3MCw2ICs1OTIsMjMgQEAgdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHIKICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gZGF0YSBmb3VuZCBmb3Ig
cmVzb3VyY2Ugd2l0aCBnaXZlbiBpZGVudGlmaWVyIjsKIH0KIAordm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCkKK3sKKyAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhociA9IFhNTEh0
dHBSZXF1ZXN0OjpjcmVhdGUobV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsK
KyAgICBFeGNlcHRpb25Db2RlIGNvZGU7CisgICAgU3RyaW5nIGFjdHVhbFJlcXVlc3RJZCA9IHJl
cXVlc3RJZDsKKworICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3Qq
IHJlc291cmNlRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+ZGF0YShhY3R1YWxSZXF1ZXN0SWQpOwor
ICAgIFJlZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5YSFJE
YXRhKGFjdHVhbFJlcXVlc3RJZCk7CisgICAgbV9vcmlnaW5hbFJlcXVlc3RJZCA9IHJlcXVlc3RJ
ZDsKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBYSFJEYXRhLT5tX2hl
YWRlcnMuZW5kKCk7CisgICAgeGhyLT5vcGVuKFhIUkRhdGEtPm1fbWV0aG9kLCBLVVJMKFBhcnNl
ZFVSTFN0cmluZywgcmVzb3VyY2VEYXRhLT51cmwoKSksIFhIUkRhdGEtPm1fYXN5bmMsIGNvZGUp
OworICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBYSFJEYXRhLT5t
X2hlYWRlcnMuYmVnaW4oKTsgaXQhPSBlbmQ7ICsraXQpCisgICAgICAgIHhoci0+c2V0UmVxdWVz
dEhlYWRlcihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQsIGNvZGUpOworICAgIHhoci0+c2VuZEZyb21J
bnNwZWN0b3IoWEhSRGF0YS0+bV9mb3JtRGF0YSwgY29kZSk7CisgICAgbV9vcmlnaW5hbFJlcXVl
c3RJZCA9IFN0cmluZygpOworfQorCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNhbkNs
ZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKiwgYm9vbCogcmVzdWx0KQogewogICAgICpyZXN1
bHQgPSBtX2NsaWVudC0+Y2FuQ2xlYXJCcm93c2VyQ2FjaGUoKTsKQEAgLTYxMiw2ICs2NTEsOSBA
QCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9y
ZXNvdXJjZXNEYXRhKGFkb3B0UHRyKG5ldyBOZXR3b3JrUmVzb3VyY2VzRGF0YSgpKSkKICAgICAs
IG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkoZmFsc2UpCisgICAgLCBtX1hIUkRhdGEoMCkKKyAg
ICAsIG1fcHJlZmxpZ2h0UmVxdWVzdElkKDApCisgICAgLCBtX3ByZWZsaWdodElkVG9SZXF1ZXN0
SWQoKQogICAgICwgbV9pc1JlY2FsY3VsYXRpbmdTdHlsZShmYWxzZSkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IDVj
OWZiZTI2MmU2ZTBmYmFjYTczOWFhODJhNmZiMzU2OTU5NTIzNGQuLmRiMjY1YWRhYjljY2U4MjAz
ZDkyYTkwZjFjZGEyZDJkMjI1NTIxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNTAsNyArNTAsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3Mg
RG9jdW1lbnRMb2FkZXI7CitjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEZyYW1lOworY2xhc3MgSFRU
UEhlYWRlck1hcDsKIGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50
OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CkBAIC02Niw2ICs2OCw3IEBAIGNsYXNzIFJlc291
cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25z
ZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK3N0cnVjdCBYSFJSZXBsYXlEYXRhOwogCiAjaWYgRU5B
QkxFKFdFQl9TT0NLRVRTKQogc3RydWN0IFdlYlNvY2tldEZyYW1lOwpAQCAtMTA3LDYgKzExMCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UqKTsKIAogICAgIHZvaWQgYXBwbHlVc2VyQWdlbnRPdmVycmlkZShTdHJpbmcqIHVzZXJB
Z2VudCk7CisgICAgdm9pZCBkaWRDcmVhdGVYSFJSZXF1ZXN0KFN0cmluZyBtZXRob2QsIGJvb2wg
YXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGJvZHksIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
YWRlcnMsIGJvb2wgaW5jbHVkZUNyZW5kZW50aWFscywgU3RyaW5nIGxvZ2luLCBTdHJpbmcgcGFz
c3dvcmQpOworICAgIHZvaWQgcHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKHVuc2lnbmVkIGxvbmcg
aWQpOwogCiAgICAgLy8gRklYTUU6IEluc3BlY3RvclJlc291cmNlQWdlbnQgc2hvdWxkIG5vdyBi
ZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1bGF0aW9uLgogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRl
U3R5bGUoKTsKQEAgLTEzNSw2ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNv
ZGVkKTsKIAorICAgIHZpcnR1YWwgdm9pZCByZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCk7CisKICAgICB2aXJ0dWFsIHZvaWQgY2FuQ2xlYXJCcm93c2VyQ2Fj
aGUoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3NlckNh
Y2hlKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGNhbkNsZWFyQnJvd3NlckNvb2tp
ZXMoRXJyb3JTdHJpbmcqLCBib29sKik7CkBAIC0xNTMsNiArMTYwLDEwIEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPE5ldHdvcmtSZXNvdXJjZXNEYXRhPiBtX3Jlc291cmNlc0RhdGE7CiAgICAgYm9v
bCBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5OwogCisgICAgUmVmUHRyPFhIUlJlcGxheURhdGE+
IG1fWEhSRGF0YTsKKyAgICB1bnNpZ25lZCBsb25nIG1fcHJlZmxpZ2h0UmVxdWVzdElkOworICAg
IFN0cmluZyBtX29yaWdpbmFsUmVxdWVzdElkOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
IG1fcHJlZmxpZ2h0SWRUb1JlcXVlc3RJZDsKICAgICAvLyBGSVhNRTogSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24uCiAgICAg
UmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IG1fc3R5bGVSZWNhbGN1bGF0
aW9uSW5pdGlhdG9yOwogICAgIGJvb2wgbV9pc1JlY2FsY3VsYXRpbmdTdHlsZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGUw
NWQxM2RlY2IzODE4ZmNmMWJiODMzMjgzNTlkZWFmYjI5NWRmYWMuLjZhMWMxMTA4ZGY1MzM1OWRj
MWM0YmE1NzY4NWUyZDhkNDE3YzZmZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDYsNiArNDYsMjEgQEAgc3RhdGljIHNp
emVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEwICogMTAwMCAqIDEwMDA7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJS
ZXBsYXlEYXRhOjpjcmVhdGUoU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxG
b3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5j
bHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFhIUlJlcGxheURhdGEobWV0aG9kLCBhc3luYywgZm9ybURhdGEs
IGhlYWRlcnMsIGluY2x1ZGVDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkKSk7Cit9CisKK1hI
UlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEoU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFz
c1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMs
IGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkK
KyAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAsIG1fYXN5bmMoYXN5bmMpCisgICAgLCBtX2Zv
cm1EYXRhKGZvcm1EYXRhKQorICAgICwgbV9oZWFkZXJzKGhlYWRlcnMpCisgICAgLCBtX2luY2x1
ZGVDcmVkZW50aWFscyhpbmNsdWRlQ3JlZGVudGlhbHMpCisgICAgLCBtX2xvZ2luKGxvZ2luKQor
ICAgICwgbV9wYXNzd29yZChwYXNzd29yZCkKK3sKK30KIAogLy8gUmVzb3VyY2VEYXRhCiBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbG9hZGVySWQpCkBAIC0yNTMsNiArMjY4LDE2IEBA
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpkYXRhKGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIG1fcmVxdWVzdElkVG9SZXNvdXJj
ZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCk7CiB9CiAKK1Bhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4g
TmV0d29ya1Jlc291cmNlc0RhdGE6OlhIUkRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCit7
CisgICAgcmV0dXJuIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCkt
PlhIUkRhdGEoKTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0WEhSUmVwbGF5
RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBY
SFJEYXRhKQoreworICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJ
ZCktPnNldFhIUlJlcGxheURhdGEoWEhSRGF0YSk7Cit9CisKIFZlY3RvcjxTdHJpbmc+IE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2Fj
aGVkUmVzb3VyY2UpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCA4ZGZkNWRkMGRi
YjIxMWEwYzQ5MmVhNmYxZmQzYTQ4ZTkwNzcxZWM4Li5mYjU0MDc2OWFjODgwOTI2ZDg2MDcwNjdi
Njk0MjJlOWYwNmQ4OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0
d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaApAQCAtNDYsNiArNDYsMjAgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCitjbGFz
cyBYSFJSZXBsYXlEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8WEhSUmVwbGF5RGF0YT4geworcHVi
bGljOgorICAgIFN0cmluZyBtX21ldGhvZDsKKyAgICBib29sIG1fYXN5bmM7CisgICAgUmVmUHRy
PEZvcm1EYXRhPiBtX2Zvcm1EYXRhOworICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFkZXJzOworICAg
IGJvb2wgbV9pbmNsdWRlQ3JlZGVudGlhbHM7CisgICAgU3RyaW5nIG1fbG9naW47CisgICAgU3Ry
aW5nIG1fcGFzc3dvcmQ7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gY3Jl
YXRlKFN0cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25z
dCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU3RyaW5n
IGxvZ2luLCBTdHJpbmcgcGFzc3dvcmQpOworcHJpdmF0ZToKKyAgICBYSFJSZXBsYXlEYXRhKFN0
cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQ
SGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU3RyaW5nIGxvZ2lu
LCBTdHJpbmcgcGFzc3dvcmQpOworfTsKKwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewog
cHVibGljOgogICAgIGNsYXNzIFJlc291cmNlRGF0YSB7CkBAIC05MCw2ICsxMDQsOCBAQCBwdWJs
aWM6CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY2FjaGVkUmVzb3VyY2U7IH0KICAgICAgICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpIHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hl
ZFJlc291cmNlOyB9CiAKKyAgICAgICAgUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9YSFJEYXRhOyB9CisgICAgICAgIHZvaWQgc2V0WEhSUmVwbGF5
RGF0YShQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IFhIUkRhdGEpIHsgbV9YSFJEYXRhID0gWEhS
RGF0YTt9OwogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YUJ1ZmZlcjsgfQogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwpA
QCAtMTAxLDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fZnJhbWVJZDsKICAg
ICAgICAgU3RyaW5nIG1fdXJsOwogICAgICAgICBTdHJpbmcgbV9jb250ZW50OworICAgICAgICBS
ZWZQdHI8WEhSUmVwbGF5RGF0YT4gbV9YSFJEYXRhOwogICAgICAgICBib29sIG1fYmFzZTY0RW5j
b2RlZDsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOwogICAgICAg
ICBib29sIG1faXNDb250ZW50UHVyZ2VkOwpAQCAtMTMyLDYgKzE0OSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQgPSBTdHJpbmcoKSk7
CiAKICAgICB2b2lkIHNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKHNpemVfdCBtYXhpbXVtUmVz
b3VyY2VzQ29udGVudFNpemUsIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6
ZSk7CisgICAgdm9pZCBzZXRYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBQ
YXNzUmVmUHRyPFhIUlJlcGxheURhdGE+KTsKKyAgICBQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+
IFhIUkRhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
ZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5k
ZXggNWM4MGFjMTc4MjA4ZTViMjA5Mzk3ZjYwOTc1YWM3MDQ3MGI3MDY3Ni4uYzdiOTAwNjMyMTdj
MGJiYjQ5MDE4OGFjODYyYjg3ZmI4NDNlZDQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTk2Miw4ICs5NjIsMjEgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRo
aXMuX2NhbkNsZWFyQnJvd3NlckNvb2tpZXMpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVu
dVRpdGxlcygpID8gIkNsZWFyIGJyb3dzZXIgY29va2llcyIgOiAiQ2xlYXIgQnJvd3NlciBDb29r
aWVzIiksIHRoaXMuX2NsZWFyQnJvd3NlckNvb2tpZXMuYmluZCh0aGlzKSk7CiAKKworICAgICAg
ICBpZiAocmVxdWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5YSFIpIHsK
KyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcGxheSBYSFIi
KSwgdGhpcy5fcmVwbGF5WEhSLmJpbmQodGhpcywgcmVxdWVzdC5yZXF1ZXN0SWQpKTsKKyAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICB9CisKICAgICAg
ICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CiAgICAgfSwKKyAgICAKKyAgICBfcmVwbGF5WEhS
OiBmdW5jdGlvbihyZXF1ZXN0SWQpCisgICAgeworICAgICAgICBOZXR3b3JrQWdlbnQucmVwbGF5
WEhSKHJlcXVlc3RJZCk7CisgICAgfSwKKyAgICAKIAogICAgIF9jb3B5QWxsOiBmdW5jdGlvbigp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAppbmRleCBhMGM2NDg5Y2IwNjM5MDkwYWQ5NTM5ZDg0YjRlMmUwOWVmNDVjNmJi
Li5iZjU5N2UzN2EyMDc3MzJmZmZhMzk2NGZmY2U0MDYzZjExOWFhYTkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMjQ2
LDcgKzI0Niw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zCiAgICAgQVNTRVJUKG1fY2xpZW50
KTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElk
ZW50aWZpZXIpIHsKKyAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciAmJiBtX2Fz
eW5jKSB7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtX2RvY3VtZW50LT5mcmFt
ZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZG9jdW1lbnQtPmZyYW1lKCksIG1fcHJlZmxpZ2h0UmVx
dWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIG1fcHJlZmxpZ2h0UmVxdWVz
dElkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UsIDApOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBjb25zdCBjaGFyCiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3Vy
Y2UgPT0gbV9yZXNvdXJjZSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChtX3By
ZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVu
dGlmaWVyICYmIG1fYXN5bmMpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZURhdGEobV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRp
ZmllciwgMCwgMCwgZGF0YUxlbmd0aCk7CiAjZW5kaWYKIApAQCAtMzE1LDcgKzMxNSw3IEBAIHZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UpCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIp
CisgICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgJiYgbV9hc3luYykKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKG1fZG9jdW1lbnQt
PmZyYW1lKCksIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigp
LCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKICNlbmRpZgogCkBA
IC0zMzAsNyArMzMwLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUKIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZp
ZXIpCisgICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgJiYgbV9hc3luYykKICAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtX2RvY3VtZW50
LT5mcmFtZSgpLCBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIo
KSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOwogI2VuZGlmCiAKQEAgLTM4
Miw2ICszODIsOCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cgogICAgICAgICAgICAgbV9wcmVm
bGlnaHRSZXF1ZXN0SWRlbnRpZmllciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPnBhZ2UoKS0+cHJv
Z3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgICAgICAgICAgUmVzb3VyY2VS
ZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwogICAgICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QobV9kb2N1bWVudC0+
ZnJhbWUoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgbV9kb2N1bWVudC0+ZnJhbWUo
KS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpOworICAgICAgICB9IGVsc2UgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpIHsK
KyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1
Y2NlZGVkKG1fZG9jdW1lbnQsIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpOwogICAgICAg
ICB9CiAjZW5kaWYKICAgICAgICAgQVNTRVJUKCFtX3Jlc291cmNlKTsKQEAgLTM5OSw2ICs0MDEs
MTEgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICAgICBpZiAobV9kb2N1bWVudC0+ZnJhbWUo
KSkKICAgICAgICAgaWRlbnRpZmllciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5s
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QsIG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRp
YWxzLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCisgICAgaWYgKG1fYWN0dWFsUmVxdWVzdCkK
KyAgICAgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAg
ZWxzZSBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQobV9kb2N1bWVudCwgbV9w
cmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcik7CisKICAgICAvLyBObyBleGNlcHRpb24gZm9yIGZp
bGU6Ly8vIHJlc291cmNlcywgc2VlIDxyZGFyOi8vcHJvYmxlbS80OTYyMjk4Pi4KICAgICAvLyBB
bHNvLCBpZiB3ZSBoYXZlIGFuIEhUVFAgcmVzcG9uc2UsIHRoZW4gaXQgd2Fzbid0IGEgbmV0d29y
ayBlcnJvciBpbiBmYWN0LgogICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgIXJlcXVlc3RVUkwu
aXNMb2NhbEZpbGUoKSAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIDw9IDApIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDExMWE2NDlhMTNlNzZhZWY4MzcwYjE4
MmM5NTFjYTllNzVjZmIyMmUuLmNjYWYzOWEwZDA4NTIxZDM4NTg1YjE3ZTEyMTI2ZmYwZDA3NDRm
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNjg0LDYgKzY4NCwx
MyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kQnl0ZXNEYXRhKGNvbnN0IHZvaWQqIGRhdGEs
IHNpemVfdCBsZW5ndGgsIEV4Y2VwdGlvbkNvZAogICAgIGNyZWF0ZVJlcXVlc3QoZWMpOwogfQog
Cit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kRnJvbUluc3BlY3RvcihQYXNzUmVmUHRyPEZvcm1E
YXRhPiBmb3JtRGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgbV9yZXF1ZXN0RW50aXR5
Qm9keSA9IGZvcm1EYXRhOworICAgIGNyZWF0ZVJlcXVlc3QoZWMpOworICAgIG1fZXhjZXB0aW9u
Q29kZSA9IGVjOworfQorCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogI2lmIEVOQUJMRShCTE9CKQpAQCAtNzE4LDYgKzcyNSw4IEBAIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
cmVxdWVzdC5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNYSFIpOwogI2Vu
ZGlmCiAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVhIUlJlcXVlc3Qo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX21ldGhvZCwgbV9hc3luYywgbV9yZXF1ZXN0RW50
aXR5Qm9keSA/IG1fcmVxdWVzdEVudGl0eUJvZHktPmRlZXBDb3B5KCkgOiAwLCBtX3JlcXVlc3RI
ZWFkZXJzLCBtX2luY2x1ZGVDcmVkZW50aWFscywgbV91cmwudXNlcigpLCBtX3VybC5wYXNzKCkp
OworCiAgICAgaWYgKG1fcmVxdWVzdEVudGl0eUJvZHkpIHsKICAgICAgICAgQVNTRVJUKG1fbWV0
aG9kICE9ICJHRVQiKTsKICAgICAgICAgQVNTRVJUKG1fbWV0aG9kICE9ICJIRUFEIik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDYwNjQyOGI3NmM3MTY0MGNkMGM4MTdjMzE4
ZTk4NWNhYjJmZjQ4MmMuLmNjNmNiYzUwYzM2MDE2NTA4OWUyNjU5OTc1Y2QxMGQzMTEyMmVmNWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0xMDUsNiArMTA1LDggQEAgcHVi
bGljOgogICAgIEJsb2IqIHJlc3BvbnNlQmxvYihFeGNlcHRpb25Db2RlJik7CiAgICAgQmxvYiog
b3B0aW9uYWxSZXNwb25zZUJsb2IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlQmxvYi5nZXQo
KTsgfQogCisgICAgdm9pZCBzZW5kRnJvbUluc3BlY3RvcihQYXNzUmVmUHRyPEZvcm1EYXRhPiwg
RXhjZXB0aW9uQ29kZSYpOworCiAgICAgLy8gRXhwb3NlIEhUVFAgdmFsaWRhdGlvbiBtZXRob2Rz
IGZvciBvdGhlciB1bnRydXN0ZWQgcmVxdWVzdHMuCiAgICAgc3RhdGljIGJvb2wgaXNBbGxvd2Vk
SFRUUE1ldGhvZChjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVwcGVyY2FzZUtu
b3duSFRUUE1ldGhvZChjb25zdCBTdHJpbmcmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161475</attachid>
            <date>2012-08-30 08:20:10 -0700</date>
            <delta_ts>2012-08-30 09:05:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120830191958.patch</filename>
            <type>text/plain</type>
            <size>24304</size>
            <attacher name="Pavel Chadnov">chadnov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBjNWNjOGM2NWQxZGE3
ODJiODkzZmFjZDU3YmM5ZmNjYjc3ZTg4OC4uOTYwMWI4NzdiMGU3ZTRhMDgwNzAxNThmNjkzMGU5
ZTFmNzI5NmUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA4LTMwICBQYXZl
bCBDaGFkbm92ICA8Y2hhZG5vdkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFhIUiByZXBsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgWEhSIHJlcGxheSBpbiBuZXR3b3JrIHRhYi4gQWxsIFhIUiBwYXJhbWV0ZXJzICht
ZXRob2QsIGFzeW5jLCBib2R5LCBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNz
d29yZCkgYXJlIHNhdmVkIGluIFhIUlJlcGxheURhdGEgc3RydWN0IGFuZCBpcyByZXN0b3JlZCBm
cm9tIGl0IHdoZW4gcmVwbGF5aW5nLgorICAgICAgICAKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdEltcGwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnJlcGxheVhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpY
SFJSZXBsYXlEYXRhOjpYSFJSZXBsYXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjp4aHJSZXBsYXlEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFhIUlJlcGxheURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6WEhSRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRYSFJS
ZXBsYXlEYXRhKToKKyAgICAgICAgKFJlc291cmNlRGF0YSk6CisgICAgICAgIChOZXR3b3JrUmVz
b3VyY2VzRGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKToKKyAgICAgICAgCiAyMDEyLTA4
LTI3ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIEZpeGluZyBpbmZpbml0ZSByZWN1cnNpb24gaW4gQ2FudmFzMkRMYXllck1hbmFnZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBkYWUzNjg5NDhlOTcx
ZWU2MWI5N2Q1ZGQ4NjY1MmRjOGZiMzk4OTU4Li4yYzMxZjBlOTVlY2MzNGNkZjAzNDJkMjYwZjgx
OWE4YTRhNTA3ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBA
IC04NzQsNiArODc0LDE0IEBACiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXBsYXlYSFIiLAorICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYXlzIFhIUi4gVGhlIG5ldyBYSFIgaXMgaWRl
bnRpY2FsIHRvIG9yaWdpbmFsIChwYXJhbWV0ZXJzIG1ldGhvZCwgYXN5bmMsIGJvZHksIGhlYWRl
cnMsIHdpdGhDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkIGFyZSBjb3BpZWQpIiwKKyAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRp
ZmllciBvZiBYSFIgdG8gcmVwbGF5LiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAiY2FuQ2xlYXJCcm93c2VyQ2FjaGUiLAogICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJUZWxscyB3aGV0aGVyIGNsZWFyaW5nIGJyb3dzZXIgY2FjaGUg
aXMgc3VwcG9ydGVkLiIsCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmlu
ZGV4IGFmNDQ3MjhjNjQ2MTAwOGJhZjM5NDdmM2RiNjk3ZjYyNGZhNmM2ZTcuLmM3OTZjYjZjZDJi
OWI2NTdiMWFmYzVkMTYyNTY2NWIyYjk4NmUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zMzAsNiArMzMw
LDE4IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0
YXRlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRp
ZENoYW5nZVhIUlJlYWR5U3RhdGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENyZWF0ZVhIUlJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRy
PEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBp
bmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbG9naW4sIGNvbnN0IFN0cmluZyYgcGFz
c3dvcmQpCit7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgICAg
IHJlc291cmNlQWdlbnQtPmRpZENyZWF0ZVhIUlJlcXVlc3QobWV0aG9kLCBhc3luYywgZm9ybURh
dGEsIGhlYWRlcnMsIGluY2x1ZGVDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9u
ZyBpZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICAgICAg
cmVzb3VyY2VBZ2VudC0+cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKGlkKTsKK30KKwogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERp
c3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0
IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMsIERvY3VtZW50KiBkb2N1bWVudCkKIHsK
ICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBkYjMzNWJmYWY0NTBjYzMx
OGNiY2U0ZGY2MTgxMTI3ZGQyNTRmNWM4Li5hYjZjOWY5ZTU0ZDllMjc4NzYwZjZlYmYzYTdlNGFm
MDVmNGU5MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCkBAIC0xNjEsNiArMTYxLDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHdpbGxQcm9jZXNzVGFzayhQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHJvY2Vz
c1Rhc2soUGFnZSopOwogCisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlWEhSUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCBwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcpOworCiAgICAgc3RhdGljIHZvaWQgYXBw
bHlVc2VyQWdlbnRPdmVycmlkZShGcmFtZSosIFN0cmluZyopOwogICAgIHN0YXRpYyB2b2lkIGFw
cGx5U2NyZWVuV2lkdGhPdmVycmlkZShGcmFtZSosIGxvbmcqKTsKICAgICBzdGF0aWMgdm9pZCBh
cHBseVNjcmVlbkhlaWdodE92ZXJyaWRlKEZyYW1lKiwgbG9uZyopOwpAQCAtMzM2LDYgKzMzOSw4
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkUHJvY2Vzc1J1bGVJbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQcm9j
ZXNzVGFza0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIHN0YXRpYyB2b2lkIGRpZFBy
b2Nlc3NUYXNrSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgc3RhdGljIHZvaWQgZGlk
Q3JlYXRlWEhSUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFN0cmluZyYs
IGJvb2wsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHZvaWQgcHJlZmxpZ2h0
UmVxdWVzdFN1Y2NlZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyk7
CiAKICAgICBzdGF0aWMgdm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgU3RyaW5nKik7CiAgICAgc3RhdGljIHZvaWQgYXBwbHlTY3JlZW5XaWR0aE92
ZXJyaWRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgbG9uZyopOwpAQCAtMTE2MSw2ICsxMTY2
LDIzIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVhI
UlJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVYSFJSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBib29sIGFzeW5jLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVy
cywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbG9naW4sIGNvbnN0IFN0
cmluZyYgcGFzc3dvcmQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICBkaWRDcmVhdGVYSFJSZXF1ZXN0SW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzLCBtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVk
ZUNyZWRlbnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWQpCit7CisjaWYgRU5B
QkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAg
ICBwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlkKTsK
KyNlbmRpZgorfQorCisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA5ZDkyOWM5YTEwYmVkMzRjMjljMjg5
NDgxYWIwYTRhNWE2Mjg2OTE0Li5kNmIyNjNjMzRhMWJiM2YxNzg5MTZhMmUxMzE2NGM3NWU4Yzhh
ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUu
aCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgog
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5o
PgpAQCAtMjAzLDEzICsyMDQsMzYgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fkluc3BlY3Rv
clJlc291cmNlQWdlbnQoKQogICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KCkpOwogfQogCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZENyZWF0ZVhIUlJlcXVlc3QoY29uc3QgU3RyaW5nJiBtZXRob2QsIGJvb2wgYXN5bmMsIFBh
c3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJz
LCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBsb2dpbiwgY29uc3QgU3Ry
aW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoIW1fb3JpZ2luYWxSZXF1ZXN0SWQuaXNFbXB0eSgp
KQorICAgICAgICBtX3hockRhdGEgPSBtX3Jlc291cmNlc0RhdGEtPnhoclJlcGxheURhdGEobV9v
cmlnaW5hbFJlcXVlc3RJZCk7CisgICAgZWxzZSB7CisgICAgICAgIE93blB0cjxDcm9zc1RocmVh
ZEhUVFBIZWFkZXJNYXBEYXRhPiBoZWFkZXJNYXBEYXRhID0gaGVhZGVycy5jb3B5RGF0YSgpOwor
ICAgICAgICBtX3hockRhdGEgPSBYSFJSZXBsYXlEYXRhOjpjcmVhdGUobWV0aG9kLCBhc3luYywg
Zm9ybURhdGEsIGhlYWRlck1hcERhdGEsIGluY2x1ZGVDcmVkZW50aWFscywgbG9naW4sIHBhc3N3
b3JkKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cHJlZmxpZ2h0
UmVxdWVzdFN1Y2NlZGVkKHVuc2lnbmVkIGxvbmcgaWQpCit7CisgICAgbV9wcmVmbGlnaHRSZXF1
ZXN0SWQgPSBpZDsKK30KKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpCiB7CiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6
cmVxdWVzdElkKGlkZW50aWZpZXIpOwogICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VDcmVh
dGVkKHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlcikpOwogCi0gICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gaGVhZGVycyA9IG1fc3RhdGUtPmdldE9iamVjdChSZXNvdXJj
ZUFnZW50U3RhdGU6OmV4dHJhUmVxdWVzdEhlYWRlcnMpOworICAgIGlmIChtX3hockRhdGEpIHsK
KyAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRYSFJSZXBsYXlEYXRhKHJlcXVlc3RJZCwgbV94
aHJEYXRhKTsKKyAgICAgICAgbV94aHJEYXRhID0gbnVsbHB0cjsKKyAgICB9IGVsc2UgaWYgKG1f
cHJlZmxpZ2h0UmVxdWVzdElkKSB7CisgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0WEhSUmVw
bGF5RGF0YShyZXF1ZXN0SWQsIG1fcmVzb3VyY2VzRGF0YS0+eGhyUmVwbGF5RGF0YShJZGVudGlm
aWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChtX3ByZWZsaWdodFJlcXVlc3RJZCkpKTsKKyAgICAgICAg
bV9wcmVmbGlnaHRSZXF1ZXN0SWQgPSAwOworICAgIH0KKwogCisgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gaGVhZGVycyA9IG1fc3RhdGUtPmdldE9iamVjdChSZXNvdXJjZUFnZW50U3RhdGU6
OmV4dHJhUmVxdWVzdEhlYWRlcnMpOwogICAgIGlmIChoZWFkZXJzKSB7CiAgICAgICAgIEluc3Bl
Y3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVycy0+ZW5kKCk7CiAgICAgICAg
IGZvciAoSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNTcwLDYgKzU5NCwyMyBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cgogICAgICplcnJvclN0cmluZyA9ICJObyBkYXRhIGZvdW5kIGZvciByZXNvdXJj
ZSB3aXRoIGdpdmVuIGlkZW50aWZpZXIiOwogfQogCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OnJlcGxheVhIUihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkKQoreworICAgIFVOVVNFRF9QQVJBTShlcnJvclN0cmluZyk7CisgICAgUmVmUHRyPFhN
TEh0dHBSZXF1ZXN0PiB4aHIgPSBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKG1fcGFnZUFnZW50LT5t
YWluRnJhbWUoKS0+ZG9jdW1lbnQoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBjb2RlOworICAgIFN0
cmluZyBhY3R1YWxSZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7CisKKyAgICBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEt
PmRhdGEoYWN0dWFsUmVxdWVzdElkKTsKKyAgICBSZWZQdHI8WEhSUmVwbGF5RGF0YT4geGhyRGF0
YSA9IG1fcmVzb3VyY2VzRGF0YS0+eGhyUmVwbGF5RGF0YShhY3R1YWxSZXF1ZXN0SWQpOworICAg
IG1fb3JpZ2luYWxSZXF1ZXN0SWQgPSByZXF1ZXN0SWQ7CisgICAgeGhyLT5vcGVuKHhockRhdGEt
Pm1fbWV0aG9kLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgcmVzb3VyY2VEYXRhLT51cmwoKSksIHho
ckRhdGEtPm1fYXN5bmMsIGNvZGUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgeGhyRGF0
YS0+bV9oZWFkZXJzLT5zaXplKCk7ICsraSkKKyAgICAgICAgeGhyLT5zZXRSZXF1ZXN0SGVhZGVy
KHhockRhdGEtPm1faGVhZGVycy0+YXQoaSkuZmlyc3QsIHhockRhdGEtPm1faGVhZGVycy0+YXQo
aSkuc2Vjb25kLCBjb2RlKTsKKyAgICB4aHItPnNlbmRGcm9tSW5zcGVjdG9yKHhockRhdGEtPm1f
Zm9ybURhdGEsIGNvZGUpOworICAgIG1fb3JpZ2luYWxSZXF1ZXN0SWQgPSBTdHJpbmcoKTsKK30K
Kwogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjYW5DbGVhckJyb3dzZXJDYWNoZShFcnJv
clN0cmluZyosIGJvb2wqIHJlc3VsdCkKIHsKICAgICAqcmVzdWx0ID0gbV9jbGllbnQtPmNhbkNs
ZWFyQnJvd3NlckNhY2hlKCk7CkBAIC02MTIsNiArNjUzLDkgQEAgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW4KICAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fcmVzb3VyY2VzRGF0YShhZG9wdFB0
cihuZXcgTmV0d29ya1Jlc291cmNlc0RhdGEoKSkpCiAgICAgLCBtX2xvYWRpbmdYSFJTeW5jaHJv
bm91c2x5KGZhbHNlKQorICAgICwgbV94aHJEYXRhKDApCisgICAgLCBtX3ByZWZsaWdodFJlcXVl
c3RJZCgwKQorICAgICwgbV9wcmVmbGlnaHRJZFRvUmVxdWVzdElkKCkKICAgICAsIG1faXNSZWNh
bGN1bGF0aW5nU3R5bGUoZmFsc2UpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA1YzlmYmUyNjJlNmUwZmJhY2E3Mzlh
YTgyYTZmYjM1Njk1OTUyMzRkLi5lYWQ4MTJmOTc1YmI0NDU3YTM5Y2EzNmU2ODgzY2NhNTE2Zjhh
YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmgKQEAgLTUwLDcgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2Fj
aGVkUmVzb3VyY2U7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9hZGVyOworY2xh
c3MgRm9ybURhdGE7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBJ
bnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckZy
b250ZW5kOwpAQCAtNjYsNiArNjgsNyBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFJl
c291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBTaGFyZWRCdWZm
ZXI7CitzdHJ1Y3QgWEhSUmVwbGF5RGF0YTsKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKIHN0
cnVjdCBXZWJTb2NrZXRGcmFtZTsKQEAgLTEwNyw2ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2b2lk
IGFwcGx5VXNlckFnZW50T3ZlcnJpZGUoU3RyaW5nKiB1c2VyQWdlbnQpOworICAgIHZvaWQgZGlk
Q3JlYXRlWEhSUmVxdWVzdChjb25zdCBTdHJpbmcmIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gYm9keSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBp
bmNsdWRlQ3JlbmRlbnRpYWxzLCBjb25zdCBTdHJpbmcmIGxvZ2luLCBjb25zdCBTdHJpbmcmIHBh
c3N3b3JkKTsKKyAgICB2b2lkIHByZWZsaWdodFJlcXVlc3RTdWNjZWRlZCh1bnNpZ25lZCBsb25n
IGlkKTsKIAogICAgIC8vIEZJWE1FOiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50IHNob3VsZCBub3cg
YmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxjdWxhdGlvbi4KICAgICB2b2lkIHdpbGxSZWNhbGN1bGF0
ZVN0eWxlKCk7CkBAIC0xMzUsNiArMTQwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5j
b2RlZCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5WEhSKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQpOworCiAgICAgdmlydHVhbCB2b2lkIGNhbkNsZWFyQnJvd3NlckNh
Y2hlKEVycm9yU3RyaW5nKiwgYm9vbCopOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJD
YWNoZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBjYW5DbGVhckJyb3dzZXJDb29r
aWVzKEVycm9yU3RyaW5nKiwgYm9vbCopOwpAQCAtMTUzLDYgKzE2MCwxMCBAQCBwcml2YXRlOgog
ICAgIE93blB0cjxOZXR3b3JrUmVzb3VyY2VzRGF0YT4gbV9yZXNvdXJjZXNEYXRhOwogICAgIGJv
b2wgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseTsKIAorICAgIFJlZlB0cjxYSFJSZXBsYXlEYXRh
PiBtX3hockRhdGE7CisgICAgdW5zaWduZWQgbG9uZyBtX3ByZWZsaWdodFJlcXVlc3RJZDsKKyAg
ICBTdHJpbmcgbV9vcmlnaW5hbFJlcXVlc3RJZDsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBtX3ByZWZsaWdodElkVG9SZXF1ZXN0SWQ7CiAgICAgLy8gRklYTUU6IEluc3BlY3RvclJlc291
cmNlQWdlbnQgc2hvdWxkIG5vdyBiZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1bGF0aW9uLgogICAg
IFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBtX3N0eWxlUmVjYWxjdWxh
dGlvbkluaXRpYXRvcjsKICAgICBib29sIG1faXNSZWNhbGN1bGF0aW5nU3R5bGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCBl
MDVkMTNkZWNiMzgxOGZjZjFiYjgzMzI4MzU5ZGVhZmIyOTVkZmFjLi4wNTc1NmMxZDhjZTcxYTI5
OWI3NzA1ZmNjYjI5MTc3YTJiZjQ5NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ2LDYgKzQ2LDIxIEBAIHN0YXRpYyBz
aXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUgPSAxMCAqIDEwMDAgKiAxMDAw
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gWEhS
UmVwbGF5RGF0YTo6Y3JlYXRlKFN0cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8
Rm9ybURhdGE+IGZvcm1EYXRhLCBQYXNzT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERh
dGE+IGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmlu
ZyBwYXNzd29yZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhIUlJlcGxheURhdGEobWV0
aG9kLCBhc3luYywgZm9ybURhdGEsIGhlYWRlcnMsIGluY2x1ZGVDcmVkZW50aWFscywgbG9naW4s
IHBhc3N3b3JkKSk7Cit9CisKK1hIUlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEoU3RyaW5nIG1l
dGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIFBhc3NPd25Q
dHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gaGVhZGVycywgYm9vbCBpbmNsdWRlQ3Jl
ZGVudGlhbHMsIFN0cmluZyBsb2dpbiwgU3RyaW5nIHBhc3N3b3JkKQorICAgIDogbV9tZXRob2Qo
bWV0aG9kKQorICAgICwgbV9hc3luYyhhc3luYykKKyAgICAsIG1fZm9ybURhdGEoZm9ybURhdGEp
CisgICAgLCBtX2hlYWRlcnMoaGVhZGVycykKKyAgICAsIG1faW5jbHVkZUNyZWRlbnRpYWxzKGlu
Y2x1ZGVDcmVkZW50aWFscykKKyAgICAsIG1fbG9naW4obG9naW4pCisgICAgLCBtX3Bhc3N3b3Jk
KHBhc3N3b3JkKQoreworfQogCiAvLyBSZXNvdXJjZURhdGEKIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29u
c3QgU3RyaW5nJiBsb2FkZXJJZCkKQEAgLTI1Myw2ICsyNjgsMTYgQEAgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGEoY29u
c3QgU3RyaW4KICAgICByZXR1cm4gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVx
dWVzdElkKTsKIH0KIAorUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6eGhyUmVwbGF5RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKK3sKKyAgICByZXR1
cm4gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVxdWVzdElkKS0+WEhSRGF0YSgp
OworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRYSFJSZXBsYXlEYXRhKGNvbnN0
IFN0cmluZyYgcmVxdWVzdElkLCBQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IFhIUkRhdGEpCit7
CisgICAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVxdWVzdElkKS0+c2V0WEhS
UmVwbGF5RGF0YShYSFJEYXRhKTsKK30KKwogVmVjdG9yPFN0cmluZz4gTmV0d29ya1Jlc291cmNl
c0RhdGE6OnJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJj
ZSkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IDhkZmQ1ZGQwZGJiMjExYTBjNDky
ZWE2ZjFmZDNhNDhlOTA3NzFlYzguLjJkOTljZTdkYmJkODliNzY1MzAyMjFjMzAxYzc4Yzc4NmFi
NWVjYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oCkBAIC00Niw2ICs0NiwyMCBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFNo
YXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7CiAKK2NsYXNzIFhIUlJlcGxh
eURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxYSFJSZXBsYXlEYXRhPiB7CitwdWJsaWM6CisgICAg
U3RyaW5nIG1fbWV0aG9kOworICAgIGJvb2wgbV9hc3luYzsKKyAgICBSZWZQdHI8Rm9ybURhdGE+
IG1fZm9ybURhdGE7CisgICAgT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IG1f
aGVhZGVyczsKKyAgICBib29sIG1faW5jbHVkZUNyZWRlbnRpYWxzOworICAgIFN0cmluZyBtX2xv
Z2luOworICAgIFN0cmluZyBtX3Bhc3N3b3JkOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFhIUlJl
cGxheURhdGE+IGNyZWF0ZShTdHJpbmcgbWV0aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZv
cm1EYXRhPiwgUGFzc093blB0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBoZWFkZXJz
LCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU3RyaW5nIGxvZ2luLCBTdHJpbmcgcGFzc3dvcmQp
OworcHJpdmF0ZToKKyAgICBYSFJSZXBsYXlEYXRhKFN0cmluZyBtZXRob2QsIGJvb2wgYXN5bmMs
IFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBQYXNzT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1h
cERhdGE+IGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0
cmluZyBwYXNzd29yZCk7Cit9OworCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0YSB7CiBwdWJs
aWM6CiAgICAgY2xhc3MgUmVzb3VyY2VEYXRhIHsKQEAgLTkwLDYgKzEwNCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKCkgY29uc3QgeyByZXR1cm4g
bV9jYWNoZWRSZXNvdXJjZTsgfQogICAgICAgICB2b2lkIHNldENhY2hlZFJlc291cmNlKENhY2hl
ZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkgeyBtX2NhY2hlZFJlc291cmNlID0gY2FjaGVkUmVz
b3VyY2U7IH0KIAorICAgICAgICBQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IFhIUkRhdGEoKSBj
b25zdCB7IHJldHVybiBtX3hoclJlcGxheURhdGE7IH0KKyAgICAgICAgdm9pZCBzZXRYSFJSZXBs
YXlEYXRhKFBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gWEhSRGF0YSkgeyBtX3hoclJlcGxheURh
dGEgPSBYSFJEYXRhO307CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkg
Y29uc3Q7CkBAIC0xMDEsNiArMTE3LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV9mcmFt
ZUlkOwogICAgICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIFN0cmluZyBtX2NvbnRlbnQ7Cisg
ICAgICAgIFJlZlB0cjxYSFJSZXBsYXlEYXRhPiBtX3hoclJlcGxheURhdGE7CiAgICAgICAgIGJv
b2wgbV9iYXNlNjRFbmNvZGVkOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFC
dWZmZXI7CiAgICAgICAgIGJvb2wgbV9pc0NvbnRlbnRQdXJnZWQ7CkBAIC0xMzIsNiArMTQ5LDgg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiBwcmVzZXJ2ZWRMb2FkZXJJ
ZCA9IFN0cmluZygpKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoc2l6
ZV90IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNv
dXJjZUNvbnRlbnRTaXplKTsKKyAgICB2b2lkIHNldFhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIFBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4pOworICAgIFBhc3NSZWZQdHI8
WEhSUmVwbGF5RGF0YT4geGhyUmVwbGF5RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L05ldHdvcmtQYW5lbC5qcwppbmRleCA1YzgwYWMxNzgyMDhlNWIyMDkzOTdmNjA5NzVhYzcwNDcw
YjcwNjc2Li5jN2I5MDA2MzIxN2MwYmJiNDkwMTg4YWM4NjJiODdmYjg0M2VkNDU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpA
QCAtOTYyLDggKzk2MiwyMSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICBpZiAodGhpcy5fY2FuQ2xlYXJCcm93c2VyQ29va2llcykKICAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3Bl
Y3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiQ2xlYXIgYnJvd3NlciBjb29raWVzIiA6
ICJDbGVhciBCcm93c2VyIENvb2tpZXMiKSwgdGhpcy5fY2xlYXJCcm93c2VyQ29va2llcy5iaW5k
KHRoaXMpKTsKIAorCisgICAgICAgIGlmIChyZXF1ZXN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVR5cGVzLlhIUikgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJh
dG9yKCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmVwbGF5IFhIUiIpLCB0aGlzLl9yZXBsYXlYSFIuYmluZCh0aGlzLCByZXF1ZXN0
LnJlcXVlc3RJZCkpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7
CisgICAgICAgIH0KKwogICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsKICAgICB9LAor
ICAgIAorICAgIF9yZXBsYXlYSFI6IGZ1bmN0aW9uKHJlcXVlc3RJZCkKKyAgICB7CisgICAgICAg
IE5ldHdvcmtBZ2VudC5yZXBsYXlYSFIocmVxdWVzdElkKTsKKyAgICB9LAorICAgIAogCiAgICAg
X2NvcHlBbGw6IGZ1bmN0aW9uKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGEwYzY0ODljYjA2MzkwOTBhZDk1
MzlkODRiNGUyZTA5ZWY0NWM2YmIuLjBiYWU2NmRkMDYwZDkzZmRkMDMwODRlMzViMDc0OTgxZmZi
YzRjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnMK
ICAgICBBU1NFUlQobV9jbGllbnQpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
bV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikgeworICAgIGlmIChtX3ByZWZsaWdodFJlcXVl
c3RJZGVudGlmaWVyICYmIG1fYXN5bmMpIHsKICAgICAgICAgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpOwogICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobV9kb2N1bWVudC0+ZnJh
bWUoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGNvb2tp
ZSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25zZSwgMCk7CkBA
IC0yODcsNyArMjg3LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRhdGFSZWNl
aXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIKICAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpCisgICAgaWYgKG1f
cHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgJiYgbV9hc3luYykKICAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShtX2RvY3VtZW50LT5mcmFtZSgpLCBtX3By
ZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyLCAwLCAwLCBkYXRhTGVuZ3RoKTsKICNlbmRpZgogCkBA
IC0zMTUsNyArMzE1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om5vdGlmeUZp
bmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91Ymxl
IGZpbmlzaFRpbWUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAobV9wcmVmbGln
aHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmll
ciAmJiBtX2FzeW5jKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlz
aExvYWRpbmcobV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVy
KCktPmRvY3VtZW50TG9hZGVyKCksIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIsIGZpbmlz
aFRpbWUpOwogI2VuZGlmCiAKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRv
dWJsZQogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZhaWwoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAobV9wcmVm
bGlnaHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRp
ZmllciAmJiBtX2FzeW5jKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZh
aWxMb2FkaW5nKG1fZG9jdW1lbnQtPmZyYW1lKCksIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyLCBlcnJv
cik7CiAjZW5kaWYKIApAQCAtMzgyLDcgKzM4Miw5IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3Vy
CiAgICAgICAgICAgICBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyID0gbV9kb2N1bWVudC0+
ZnJhbWUoKS0+cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlmaWVyKCk7CiAg
ICAgICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UgPSBSZXNvdXJjZVJl
c3BvbnNlKCk7CiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5k
UmVxdWVzdChtX2RvY3VtZW50LT5mcmFtZSgpLCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVy
LCBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSwgbmV3UmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICht
X3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQobV9kb2N1bWVudCwgbV9wcmVmbGln
aHRSZXF1ZXN0SWRlbnRpZmllcik7CisKICNlbmRpZgogICAgICAgICBBU1NFUlQoIW1fcmVzb3Vy
Y2UpOwogICAgICAgICBtX3Jlc291cmNlID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS0+cmVxdWVzdFJhd1Jlc291cmNlKG5ld1JlcXVlc3QsIG9wdGlvbnMpOwpAQCAtMzk5LDYg
KzQwMSwxMSBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cgogICAgIGlmIChtX2RvY3VtZW50LT5m
cmFtZSgpKQogICAgICAgICBpZGVudGlmaWVyID0gbV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVy
KCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVzdCwgbV9vcHRpb25zLmFsbG93Q3Jl
ZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKKyAgICBpZiAobV9hY3R1YWxSZXF1
ZXN0KQorICAgICAgICBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyID0gaWRlbnRpZmllcjsK
KyAgICBlbHNlIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgICAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZChtX2RvY3VtZW50
LCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKTsKKwogICAgIC8vIE5vIGV4Y2VwdGlvbiBm
b3IgZmlsZTovLy8gcmVzb3VyY2VzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5NjIyOTg+LgogICAg
IC8vIEFsc28sIGlmIHdlIGhhdmUgYW4gSFRUUCByZXNwb25zZSwgdGhlbiBpdCB3YXNuJ3QgYSBu
ZXR3b3JrIGVycm9yIGluIGZhY3QuCiAgICAgaWYgKCFlcnJvci5pc051bGwoKSAmJiAhcmVxdWVz
dFVSTC5pc0xvY2FsRmlsZSgpICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPD0gMCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMTExYTY0OWExM2U3NmFlZjgz
NzBiMTgyYzk1MWNhOWU3NWNmYjIyZS4uZjU3MmNkZDZlY2Q4ZDhmNjZkYzAzMWI2Mjc4YjhlZDQ2
M2Y4ODA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC02ODQsNiAr
Njg0LDEzIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmRCeXRlc0RhdGEoY29uc3Qgdm9pZCog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgRXhjZXB0aW9uQ29kCiAgICAgY3JlYXRlUmVxdWVzdChlYyk7
CiB9CiAKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKFBhc3NSZWZQdHI8
Rm9ybURhdGE+IGZvcm1EYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBtX3JlcXVlc3RF
bnRpdHlCb2R5ID0gZm9ybURhdGEgPyBmb3JtRGF0YS0+ZGVlcENvcHkoKSA6IEZvcm1EYXRhOjpj
cmVhdGUoKTsKKyAgICBjcmVhdGVSZXF1ZXN0KGVjKTsKKyAgICBtX2V4Y2VwdGlvbkNvZGUgPSBl
YzsKK30KKwogdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2Rl
JiBlYykKIHsKICNpZiBFTkFCTEUoQkxPQikKQEAgLTcxOCw2ICs3MjUsOCBAQCB2b2lkIFhNTEh0
dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJlcXVlc3Qu
c2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzWEhSKTsKICNlbmRpZgogCisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVYSFJSZXF1ZXN0KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgbV9tZXRob2QsIG1fYXN5bmMsIG1fcmVxdWVzdEVudGl0eUJvZHkg
PyBtX3JlcXVlc3RFbnRpdHlCb2R5LT5kZWVwQ29weSgpIDogMCwgbV9yZXF1ZXN0SGVhZGVycywg
bV9pbmNsdWRlQ3JlZGVudGlhbHMsIG1fdXJsLnVzZXIoKSwgbV91cmwucGFzcygpKTsKKwogICAg
IGlmIChtX3JlcXVlc3RFbnRpdHlCb2R5KSB7CiAgICAgICAgIEFTU0VSVChtX21ldGhvZCAhPSAi
R0VUIik7CiAgICAgICAgIEFTU0VSVChtX21ldGhvZCAhPSAiSEVBRCIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaAppbmRleCA2MDY0MjhiNzZjNzE2NDBjZDBjODE3YzMxOGU5ODVjYWIy
ZmY0ODJjLi5jYzZjYmM1MGMzNjAxNjUwODllMjY1OTk3NWNkMTBkMzExMjJlZjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHB1YmxpYzoKICAg
ICBCbG9iKiByZXNwb25zZUJsb2IoRXhjZXB0aW9uQ29kZSYpOwogICAgIEJsb2IqIG9wdGlvbmFs
UmVzcG9uc2VCbG9iKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZUJsb2IuZ2V0KCk7IH0KIAor
ICAgIHZvaWQgc2VuZEZyb21JbnNwZWN0b3IoUGFzc1JlZlB0cjxGb3JtRGF0YT4sIEV4Y2VwdGlv
bkNvZGUmKTsKKwogICAgIC8vIEV4cG9zZSBIVFRQIHZhbGlkYXRpb24gbWV0aG9kcyBmb3Igb3Ro
ZXIgdW50cnVzdGVkIHJlcXVlc3RzLgogICAgIHN0YXRpYyBib29sIGlzQWxsb3dlZEhUVFBNZXRo
b2QoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFN0cmluZyB1cHBlcmNhc2VLbm93bkhUVFBN
ZXRob2QoY29uc3QgU3RyaW5nJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161487</attachid>
            <date>2012-08-30 09:05:12 -0700</date>
            <delta_ts>2012-08-31 01:55:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120830200500.patch</filename>
            <type>text/plain</type>
            <size>24473</size>
            <attacher name="Pavel Chadnov">chadnov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBjNWNjOGM2NWQxZGE3
ODJiODkzZmFjZDU3YmM5ZmNjYjc3ZTg4OC4uOTYwMWI4NzdiMGU3ZTRhMDgwNzAxNThmNjkzMGU5
ZTFmNzI5NmUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA4LTMwICBQYXZl
bCBDaGFkbm92ICA8Y2hhZG5vdkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFhIUiByZXBsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgWEhSIHJlcGxheSBpbiBuZXR3b3JrIHRhYi4gQWxsIFhIUiBwYXJhbWV0ZXJzICht
ZXRob2QsIGFzeW5jLCBib2R5LCBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNz
d29yZCkgYXJlIHNhdmVkIGluIFhIUlJlcGxheURhdGEgc3RydWN0IGFuZCBpcyByZXN0b3JlZCBm
cm9tIGl0IHdoZW4gcmVwbGF5aW5nLgorICAgICAgICAKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdEltcGwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnJlcGxheVhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpY
SFJSZXBsYXlEYXRhOjpYSFJSZXBsYXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjp4aHJSZXBsYXlEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFhIUlJlcGxheURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6WEhSRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRYSFJS
ZXBsYXlEYXRhKToKKyAgICAgICAgKFJlc291cmNlRGF0YSk6CisgICAgICAgIChOZXR3b3JrUmVz
b3VyY2VzRGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKToKKyAgICAgICAgCiAyMDEyLTA4
LTI3ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIEZpeGluZyBpbmZpbml0ZSByZWN1cnNpb24gaW4gQ2FudmFzMkRMYXllck1hbmFnZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBkYWUzNjg5NDhlOTcx
ZWU2MWI5N2Q1ZGQ4NjY1MmRjOGZiMzk4OTU4Li4yYzMxZjBlOTVlY2MzNGNkZjAzNDJkMjYwZjgx
OWE4YTRhNTA3ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBA
IC04NzQsNiArODc0LDE0IEBACiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXBsYXlYSFIiLAorICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYXlzIFhIUi4gVGhlIG5ldyBYSFIgaXMgaWRl
bnRpY2FsIHRvIG9yaWdpbmFsIChwYXJhbWV0ZXJzIG1ldGhvZCwgYXN5bmMsIGJvZHksIGhlYWRl
cnMsIHdpdGhDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkIGFyZSBjb3BpZWQpIiwKKyAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRp
ZmllciBvZiBYSFIgdG8gcmVwbGF5LiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAiY2FuQ2xlYXJCcm93c2VyQ2FjaGUiLAogICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJUZWxscyB3aGV0aGVyIGNsZWFyaW5nIGJyb3dzZXIgY2FjaGUg
aXMgc3VwcG9ydGVkLiIsCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmlu
ZGV4IGFmNDQ3MjhjNjQ2MTAwOGJhZjM5NDdmM2RiNjk3ZjYyNGZhNmM2ZTcuLmM3OTZjYjZjZDJi
OWI2NTdiMWFmYzVkMTYyNTY2NWIyYjk4NmUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zMzAsNiArMzMw
LDE4IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0
YXRlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRp
ZENoYW5nZVhIUlJlYWR5U3RhdGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENyZWF0ZVhIUlJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRy
PEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBp
bmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbG9naW4sIGNvbnN0IFN0cmluZyYgcGFz
c3dvcmQpCit7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgICAg
IHJlc291cmNlQWdlbnQtPmRpZENyZWF0ZVhIUlJlcXVlc3QobWV0aG9kLCBhc3luYywgZm9ybURh
dGEsIGhlYWRlcnMsIGluY2x1ZGVDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9u
ZyBpZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICAgICAg
cmVzb3VyY2VBZ2VudC0+cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKGlkKTsKK30KKwogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERp
c3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0
IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMsIERvY3VtZW50KiBkb2N1bWVudCkKIHsK
ICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBkYjMzNWJmYWY0NTBjYzMx
OGNiY2U0ZGY2MTgxMTI3ZGQyNTRmNWM4Li5hYjZjOWY5ZTU0ZDllMjc4NzYwZjZlYmYzYTdlNGFm
MDVmNGU5MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCkBAIC0xNjEsNiArMTYxLDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHdpbGxQcm9jZXNzVGFzayhQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHJvY2Vz
c1Rhc2soUGFnZSopOwogCisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlWEhSUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCBwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcpOworCiAgICAgc3RhdGljIHZvaWQgYXBw
bHlVc2VyQWdlbnRPdmVycmlkZShGcmFtZSosIFN0cmluZyopOwogICAgIHN0YXRpYyB2b2lkIGFw
cGx5U2NyZWVuV2lkdGhPdmVycmlkZShGcmFtZSosIGxvbmcqKTsKICAgICBzdGF0aWMgdm9pZCBh
cHBseVNjcmVlbkhlaWdodE92ZXJyaWRlKEZyYW1lKiwgbG9uZyopOwpAQCAtMzM2LDYgKzMzOSw4
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkUHJvY2Vzc1J1bGVJbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQcm9j
ZXNzVGFza0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIHN0YXRpYyB2b2lkIGRpZFBy
b2Nlc3NUYXNrSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgc3RhdGljIHZvaWQgZGlk
Q3JlYXRlWEhSUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFN0cmluZyYs
IGJvb2wsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHZvaWQgcHJlZmxpZ2h0
UmVxdWVzdFN1Y2NlZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyk7
CiAKICAgICBzdGF0aWMgdm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgU3RyaW5nKik7CiAgICAgc3RhdGljIHZvaWQgYXBwbHlTY3JlZW5XaWR0aE92
ZXJyaWRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgbG9uZyopOwpAQCAtMTE2MSw2ICsxMTY2
LDIzIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVhI
UlJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVYSFJSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBib29sIGFzeW5jLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVy
cywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbG9naW4sIGNvbnN0IFN0
cmluZyYgcGFzc3dvcmQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICBkaWRDcmVhdGVYSFJSZXF1ZXN0SW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzLCBtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVk
ZUNyZWRlbnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWQpCit7CisjaWYgRU5B
QkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAg
ICBwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlkKTsK
KyNlbmRpZgorfQorCisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA5ZDkyOWM5YTEwYmVkMzRjMjljMjg5
NDgxYWIwYTRhNWE2Mjg2OTE0Li41YmQ0OTJmNjZkMmM0OWI1OGVkYTlhZmM4MzVjNDRhN2Y2ZjQy
N2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUu
aCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgog
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5o
PgpAQCAtMjAzLDEzICsyMDQsNDAgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fkluc3BlY3Rv
clJlc291cmNlQWdlbnQoKQogICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KCkpOwogfQogCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZENyZWF0ZVhIUlJlcXVlc3QoY29uc3QgU3RyaW5nJiBtZXRob2QsIGJvb2wgYXN5bmMsIFBh
c3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJz
LCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBsb2dpbiwgY29uc3QgU3Ry
aW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoIW1fb3JpZ2luYWxSZXF1ZXN0SWQuaXNFbXB0eSgp
KQorICAgICAgICBtX3hockRhdGEgPSBtX3Jlc291cmNlc0RhdGEtPnhoclJlcGxheURhdGEobV9v
cmlnaW5hbFJlcXVlc3RJZCk7CisgICAgZWxzZSB7CisgICAgICAgIE93blB0cjxDcm9zc1RocmVh
ZEhUVFBIZWFkZXJNYXBEYXRhPiBoZWFkZXJNYXBEYXRhID0gaGVhZGVycy5jb3B5RGF0YSgpOwor
ICAgICAgICBIVFRQSGVhZGVyTWFwIGhlYWRlck1hcDsKKyAgICAgICAgSFRUUEhlYWRlck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVycy5lbmQoKTsKKyAgICAgICAgZm9yIChIVFRQSGVh
ZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKTsgaXQhPSBlbmQ7ICsr
aXQpCisgICAgICAgICAgICBoZWFkZXJNYXAuYWRkKGl0LT5maXJzdCwgaXQtPnNlY29uZCk7Cisg
ICAgICAgIG1feGhyRGF0YSA9IFhIUlJlcGxheURhdGE6OmNyZWF0ZShtZXRob2QsIGFzeW5jLCBm
b3JtRGF0YSwgaGVhZGVyTWFwLCBpbmNsdWRlQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNzd29yZCk7
CisgICAgfQorfQorCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnByZWZsaWdodFJlcXVl
c3RTdWNjZWRlZCh1bnNpZ25lZCBsb25nIGlkKQoreworICAgIG1fcHJlZmxpZ2h0UmVxdWVzdElk
ID0gaWQ7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKQogewogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVl
c3RJZChpZGVudGlmaWVyKTsKICAgICBtX3Jlc291cmNlc0RhdGEtPnJlc291cmNlQ3JlYXRlZChy
ZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpKTsKIAotICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBtX3N0YXRlLT5nZXRPYmplY3QoUmVzb3VyY2VBZ2Vu
dFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzKTsKKyAgICBpZiAobV94aHJEYXRhKSB7CisgICAg
ICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0WEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQsIG1feGhyRGF0
YSk7CisgICAgICAgIG1feGhyRGF0YSA9IG51bGxwdHI7CisgICAgfSBlbHNlIGlmIChtX3ByZWZs
aWdodFJlcXVlc3RJZCkgeworICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFhIUlJlcGxheURh
dGEocmVxdWVzdElkLCBtX3Jlc291cmNlc0RhdGEtPnhoclJlcGxheURhdGEoSWRlbnRpZmllcnNG
YWN0b3J5OjpyZXF1ZXN0SWQobV9wcmVmbGlnaHRSZXF1ZXN0SWQpKSk7CisgICAgICAgIG1fcHJl
ZmxpZ2h0UmVxdWVzdElkID0gMDsKKyAgICB9CisKIAorICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGhlYWRlcnMgPSBtX3N0YXRlLT5nZXRPYmplY3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRy
YVJlcXVlc3RIZWFkZXJzKTsKICAgICBpZiAoaGVhZGVycykgewogICAgICAgICBJbnNwZWN0b3JP
YmplY3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMtPmVuZCgpOwogICAgICAgICBmb3Ig
KEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLT5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpIHsKQEAgLTU3MCw2ICs1OTgsMjMgQEAgdm9pZCBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHIKICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gZGF0YSBmb3VuZCBmb3IgcmVzb3VyY2Ugd2l0
aCBnaXZlbiBpZGVudGlmaWVyIjsKIH0KIAordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpy
ZXBsYXlYSFIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJ
ZCkKK3sKKyAgICBVTlVTRURfUEFSQU0oZXJyb3JTdHJpbmcpOworICAgIFJlZlB0cjxYTUxIdHRw
UmVxdWVzdD4geGhyID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShtX3BhZ2VBZ2VudC0+bWFpbkZy
YW1lKCktPmRvY3VtZW50KCkpOworICAgIEV4Y2VwdGlvbkNvZGUgY29kZTsKKyAgICBTdHJpbmcg
YWN0dWFsUmVxdWVzdElkID0gcmVxdWVzdElkOworCisgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRh
KGFjdHVhbFJlcXVlc3RJZCk7CisgICAgUmVmUHRyPFhIUlJlcGxheURhdGE+IHhockRhdGEgPSBt
X3Jlc291cmNlc0RhdGEtPnhoclJlcGxheURhdGEoYWN0dWFsUmVxdWVzdElkKTsKKyAgICBtX29y
aWdpbmFsUmVxdWVzdElkID0gcmVxdWVzdElkOworICAgIHhoci0+b3Blbih4aHJEYXRhLT5tX21l
dGhvZCwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHJlc291cmNlRGF0YS0+dXJsKCkpLCB4aHJEYXRh
LT5tX2FzeW5jLCBjb2RlKTsKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSB4aHJEYXRhLT5tX2hlYWRlcnMuZW5kKCk7CisgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IHhockRhdGEtPm1faGVhZGVycy5iZWdpbigpOyBpdCE9IGVuZDsgKytp
dCkKKyAgICAgICAgeGhyLT5zZXRSZXF1ZXN0SGVhZGVyKGl0LT5maXJzdCwgaXQtPnNlY29uZCwg
Y29kZSk7ICAgIHhoci0+c2VuZEZyb21JbnNwZWN0b3IoeGhyRGF0YS0+bV9mb3JtRGF0YSwgY29k
ZSk7CisgICAgbV9vcmlnaW5hbFJlcXVlc3RJZCA9IFN0cmluZygpOworfQorCiB2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmNhbkNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKiwgYm9v
bCogcmVzdWx0KQogewogICAgICpyZXN1bHQgPSBtX2NsaWVudC0+Y2FuQ2xlYXJCcm93c2VyQ2Fj
aGUoKTsKQEAgLTYxMiw2ICs2NTcsOSBAQCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogICAgICwg
bV9mcm9udGVuZCgwKQogICAgICwgbV9yZXNvdXJjZXNEYXRhKGFkb3B0UHRyKG5ldyBOZXR3b3Jr
UmVzb3VyY2VzRGF0YSgpKSkKICAgICAsIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkoZmFsc2Up
CisgICAgLCBtX3hockRhdGEoMCkKKyAgICAsIG1fcHJlZmxpZ2h0UmVxdWVzdElkKDApCisgICAg
LCBtX3ByZWZsaWdodElkVG9SZXF1ZXN0SWQoKQogICAgICwgbV9pc1JlY2FsY3VsYXRpbmdTdHls
ZShmYWxzZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5oCmluZGV4IDVjOWZiZTI2MmU2ZTBmYmFjYTczOWFhODJhNmZiMzU2OTU5
NTIzNGQuLmVhZDgxMmY5NzViYjQ0NTdhMzljYTM2ZTY4ODNjY2E1MTZmOGFiZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAt
NTAsNyArNTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CitjbGFzcyBGb3JtRGF0YTsK
IGNsYXNzIEZyYW1lOworY2xhc3MgSFRUUEhlYWRlck1hcDsKIGNsYXNzIEluc3BlY3RvckFycmF5
OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CkBAIC02
Niw2ICs2OCw3IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK3N0cnVjdCBY
SFJSZXBsYXlEYXRhOwogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQogc3RydWN0IFdlYlNvY2tl
dEZyYW1lOwpAQCAtMTA3LDYgKzExMCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxEZXN0cm95
Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAgIHZvaWQgYXBwbHlVc2VyQWdl
bnRPdmVycmlkZShTdHJpbmcqIHVzZXJBZ2VudCk7CisgICAgdm9pZCBkaWRDcmVhdGVYSFJSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRh
PiBib2R5LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVuZGVu
dGlhbHMsIGNvbnN0IFN0cmluZyYgbG9naW4sIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpOworICAg
IHZvaWQgcHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKHVuc2lnbmVkIGxvbmcgaWQpOwogCiAgICAg
Ly8gRklYTUU6IEluc3BlY3RvclJlc291cmNlQWdlbnQgc2hvdWxkIG5vdyBiZSBhd2FyZSBvZiBz
dHlsZSByZWNhbGN1bGF0aW9uLgogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKQEAg
LTEzNSw2ICsxNDAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhl
YWRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYpOwogICAg
IHZpcnR1YWwgdm9pZCBnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKIAorICAg
IHZpcnR1YWwgdm9pZCByZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCk7CisKICAgICB2aXJ0dWFsIHZvaWQgY2FuQ2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJp
bmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3Ry
aW5nKik7CiAgICAgdmlydHVhbCB2b2lkIGNhbkNsZWFyQnJvd3NlckNvb2tpZXMoRXJyb3JTdHJp
bmcqLCBib29sKik7CkBAIC0xNTMsNiArMTYwLDEwIEBAIHByaXZhdGU6CiAgICAgT3duUHRyPE5l
dHdvcmtSZXNvdXJjZXNEYXRhPiBtX3Jlc291cmNlc0RhdGE7CiAgICAgYm9vbCBtX2xvYWRpbmdY
SFJTeW5jaHJvbm91c2x5OwogCisgICAgUmVmUHRyPFhIUlJlcGxheURhdGE+IG1feGhyRGF0YTsK
KyAgICB1bnNpZ25lZCBsb25nIG1fcHJlZmxpZ2h0UmVxdWVzdElkOworICAgIFN0cmluZyBtX29y
aWdpbmFsUmVxdWVzdElkOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1fcHJlZmxpZ2h0
SWRUb1JlcXVlc3RJZDsKICAgICAvLyBGSVhNRTogSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCBzaG91
bGQgbm93IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24uCiAgICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9y
OwogICAgIGJvb2wgbV9pc1JlY2FsY3VsYXRpbmdTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCmluZGV4IGUwNWQxM2RlY2IzODE4
ZmNmMWJiODMzMjgzNTlkZWFmYjI5NWRmYWMuLjY0YjVhM2M3NWE1YWYwMGU3NDA4MzQ5YjI1YmU5
NTZjNzQ2NDUxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmNwcApAQCAtNDYsNiArNDYsMjEgQEAgc3RhdGljIHNpemVfdCBtYXhpbXVt
U2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEwICogMTAwMCAqIDEwMDA7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJSZXBsYXlEYXRhOjpj
cmVhdGUoU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9y
bURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRp
YWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFhIUlJlcGxheURhdGEobWV0aG9kLCBhc3luYywgZm9ybURhdGEsIGhlYWRlcnMsIGlu
Y2x1ZGVDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkKSk7Cit9CisKK1hIUlJlcGxheURhdGE6
OlhIUlJlcGxheURhdGEoU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAgJmhlYWRlcnMsIGJvb2wgaW5jbHVk
ZUNyZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCkKKyAgICA6IG1fbWV0
aG9kKG1ldGhvZCkKKyAgICAsIG1fYXN5bmMoYXN5bmMpCisgICAgLCBtX2Zvcm1EYXRhKGZvcm1E
YXRhKQorICAgICwgbV9oZWFkZXJzKGhlYWRlcnMpCisgICAgLCBtX2luY2x1ZGVDcmVkZW50aWFs
cyhpbmNsdWRlQ3JlZGVudGlhbHMpCisgICAgLCBtX2xvZ2luKGxvZ2luKQorICAgICwgbV9wYXNz
d29yZChwYXNzd29yZCkKK3sKK30KIAogLy8gUmVzb3VyY2VEYXRhCiBOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IGNvbnN0IFN0cmluZyYgbG9hZGVySWQpCkBAIC0yNTMsNiArMjY4LDE2IEBAIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRh
KGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0
KHJlcXVlc3RJZCk7CiB9CiAKK1Bhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gTmV0d29ya1Jlc291
cmNlc0RhdGE6OnhoclJlcGxheURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCit7CisgICAg
cmV0dXJuIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCktPlhIUkRh
dGEoKTsKK30KKwordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0WEhSUmVwbGF5RGF0YShj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJEYXRh
KQoreworICAgIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCktPnNl
dFhIUlJlcGxheURhdGEoWEhSRGF0YSk7Cit9CisKIFZlY3RvcjxTdHJpbmc+IE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCA4ZGZkNWRkMGRiYjIxMWEw
YzQ5MmVhNmYxZmQzYTQ4ZTkwNzcxZWM4Li5kYjE5MGYzMzI2MjE0ZGVjY2ZhYmZlY2Q3YTc0ZWIw
Nzk2N2MyYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaApAQCAtNDYsNiArNDYsMjAgQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCitjbGFzcyBYSFJS
ZXBsYXlEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8WEhSUmVwbGF5RGF0YT4geworcHVibGljOgor
ICAgIFN0cmluZyBtX21ldGhvZDsKKyAgICBib29sIG1fYXN5bmM7CisgICAgUmVmUHRyPEZvcm1E
YXRhPiBtX2Zvcm1EYXRhOworICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFkZXJzOworICAgIGJvb2wg
bV9pbmNsdWRlQ3JlZGVudGlhbHM7CisgICAgU3RyaW5nIG1fbG9naW47CisgICAgU3RyaW5nIG1f
cGFzc3dvcmQ7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gY3JlYXRlKFN0
cmluZyBtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQ
SGVhZGVyTWFwICZoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU3RyaW5nIGxvZ2lu
LCBTdHJpbmcgcGFzc3dvcmQpOworcHJpdmF0ZToKKyAgICBYSFJSZXBsYXlEYXRhKFN0cmluZyBt
ZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVy
TWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU3RyaW5nIGxvZ2luLCBTdHJp
bmcgcGFzc3dvcmQpOworfTsKKwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogcHVibGlj
OgogICAgIGNsYXNzIFJlc291cmNlRGF0YSB7CkBAIC05MCw2ICsxMDQsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkUmVzb3VyY2U7IH0KICAgICAgICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRS
ZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpIHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291
cmNlOyB9CiAKKyAgICAgICAgUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJEYXRhKCkgY29u
c3QgeyByZXR1cm4gbV94aHJSZXBsYXlEYXRhOyB9CisgICAgICAgIHZvaWQgc2V0WEhSUmVwbGF5
RGF0YShQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IFhIUkRhdGEpIHsgbV94aHJSZXBsYXlEYXRh
ID0gWEhSRGF0YTt9OwogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNv
bnN0OwpAQCAtMTAxLDYgKzExNyw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fZnJhbWVJ
ZDsKICAgICAgICAgU3RyaW5nIG1fdXJsOwogICAgICAgICBTdHJpbmcgbV9jb250ZW50OworICAg
ICAgICBSZWZQdHI8WEhSUmVwbGF5RGF0YT4gbV94aHJSZXBsYXlEYXRhOwogICAgICAgICBib29s
IG1fYmFzZTY0RW5jb2RlZDsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVm
ZmVyOwogICAgICAgICBib29sIG1faXNDb250ZW50UHVyZ2VkOwpAQCAtMTMyLDYgKzE0OSw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQg
PSBTdHJpbmcoKSk7CiAKICAgICB2b2lkIHNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKHNpemVf
dCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3Vy
Y2VDb250ZW50U2l6ZSk7CisgICAgdm9pZCBzZXRYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkLCBQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+KTsKKyAgICBQYXNzUmVmUHRyPFhI
UlJlcGxheURhdGE+IHhoclJlcGxheURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogCiBw
cml2YXRlOgogICAgIHZvaWQgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTmV0d29ya1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9O
ZXR3b3JrUGFuZWwuanMKaW5kZXggNWM4MGFjMTc4MjA4ZTViMjA5Mzk3ZjYwOTc1YWM3MDQ3MGI3
MDY3Ni4uYzdiOTAwNjMyMTdjMGJiYjQ5MDE4OGFjODYyYjg3ZmI4NDNlZDQ1NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAg
LTk2Miw4ICs5NjIsMjEgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKHRoaXMuX2NhbkNsZWFyQnJvd3NlckNvb2tpZXMpCiAgICAgICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0
b3IudXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIkNsZWFyIGJyb3dzZXIgY29va2llcyIgOiAi
Q2xlYXIgQnJvd3NlciBDb29raWVzIiksIHRoaXMuX2NsZWFyQnJvd3NlckNvb2tpZXMuYmluZCh0
aGlzKSk7CiAKKworICAgICAgICBpZiAocmVxdWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IucmVz
b3VyY2VUeXBlcy5YSFIpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRv
cigpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJlcGxheSBYSFIiKSwgdGhpcy5fcmVwbGF5WEhSLmJpbmQodGhpcywgcmVxdWVzdC5y
ZXF1ZXN0SWQpKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwor
ICAgICAgICB9CisKICAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CiAgICAgfSwKKyAg
ICAKKyAgICBfcmVwbGF5WEhSOiBmdW5jdGlvbihyZXF1ZXN0SWQpCisgICAgeworICAgICAgICBO
ZXR3b3JrQWdlbnQucmVwbGF5WEhSKHJlcXVlc3RJZCk7CisgICAgfSwKKyAgICAKIAogICAgIF9j
b3B5QWxsOiBmdW5jdGlvbigpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBhMGM2NDg5Y2IwNjM5MDkwYWQ5NTM5
ZDg0YjRlMmUwOWVmNDVjNmJiLi4wYmFlNjZkZDA2MGQ5M2ZkZDAzMDg0ZTM1YjA3NDk4MWZmYmM0
YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zCiAg
ICAgQVNTRVJUKG1fY2xpZW50KTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1f
cHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpIHsKKyAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0
SWRlbnRpZmllciAmJiBtX2FzeW5jKSB7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIg
PSBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKICAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZG9jdW1lbnQtPmZyYW1l
KCksIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUs
IG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UsIDApOwpAQCAt
Mjg3LDcgKzI4Nyw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2
ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyCiAgICAgQVNTRVJUX1VOVVNF
RChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgIGlmIChtX3By
ZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyICYmIG1fYXN5bmMpCiAgICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZURhdGEobV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9wcmVm
bGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgMCwgMCwgZGF0YUxlbmd0aCk7CiAjZW5kaWYKIApAQCAt
MzE1LDcgKzMxNSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UpCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBm
aW5pc2hUaW1lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0
UmVxdWVzdElkZW50aWZpZXIpCisgICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIg
JiYgbV9hc3luYykKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hM
b2FkaW5nKG1fZG9jdW1lbnQtPmZyYW1lKCksIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigp
LT5kb2N1bWVudExvYWRlcigpLCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyLCBmaW5pc2hU
aW1lKTsKICNlbmRpZgogCkBAIC0zMzAsNyArMzMwLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3Vi
bGUKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxp
Z2h0UmVxdWVzdElkZW50aWZpZXIpCisgICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZp
ZXIgJiYgbV9hc3luYykKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWls
TG9hZGluZyhtX2RvY3VtZW50LT5mcmFtZSgpLCBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3Ip
OwogI2VuZGlmCiAKQEAgLTM4Miw3ICszODIsOSBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cgog
ICAgICAgICAgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciA9IG1fZG9jdW1lbnQtPmZy
YW1lKCktPnBhZ2UoKS0+cHJvZ3Jlc3MoKS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAg
ICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlID0gUmVzb3VyY2VSZXNw
b25zZSgpOwogICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJl
cXVlc3QobV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwg
bV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIG5ld1JlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAobV9w
cmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKG1fZG9jdW1lbnQsIG1fcHJlZmxpZ2h0
UmVxdWVzdElkZW50aWZpZXIpOworCiAjZW5kaWYKICAgICAgICAgQVNTRVJUKCFtX3Jlc291cmNl
KTsKICAgICAgICAgbV9yZXNvdXJjZSA9IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPnJlcXVlc3RSYXdSZXNvdXJjZShuZXdSZXF1ZXN0LCBvcHRpb25zKTsKQEAgLTM5OSw2ICs0
MDEsMTEgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICAgICBpZiAobV9kb2N1bWVudC0+ZnJh
bWUoKSkKICAgICAgICAgaWRlbnRpZmllciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigp
LT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QsIG1fb3B0aW9ucy5hbGxvd0NyZWRl
bnRpYWxzLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCisgICAgaWYgKG1fYWN0dWFsUmVxdWVz
dCkKKyAgICAgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciA9IGlkZW50aWZpZXI7Cisg
ICAgZWxzZSBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQobV9kb2N1bWVudCwg
bV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcik7CisKICAgICAvLyBObyBleGNlcHRpb24gZm9y
IGZpbGU6Ly8vIHJlc291cmNlcywgc2VlIDxyZGFyOi8vcHJvYmxlbS80OTYyMjk4Pi4KICAgICAv
LyBBbHNvLCBpZiB3ZSBoYXZlIGFuIEhUVFAgcmVzcG9uc2UsIHRoZW4gaXQgd2Fzbid0IGEgbmV0
d29yayBlcnJvciBpbiBmYWN0LgogICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgIXJlcXVlc3RV
UkwuaXNMb2NhbEZpbGUoKSAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIDw9IDApIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDExMWE2NDlhMTNlNzZhZWY4Mzcw
YjE4MmM5NTFjYTllNzVjZmIyMmUuLmY1NzJjZGQ2ZWNkOGQ4ZjY2ZGMwMzFiNjI3OGI4ZWQ0NjNm
ODgwN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNjg0LDYgKzY4
NCwxMyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kQnl0ZXNEYXRhKGNvbnN0IHZvaWQqIGRh
dGEsIHNpemVfdCBsZW5ndGgsIEV4Y2VwdGlvbkNvZAogICAgIGNyZWF0ZVJlcXVlc3QoZWMpOwog
fQogCit2b2lkIFhNTEh0dHBSZXF1ZXN0OjpzZW5kRnJvbUluc3BlY3RvcihQYXNzUmVmUHRyPEZv
cm1EYXRhPiBmb3JtRGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgbV9yZXF1ZXN0RW50
aXR5Qm9keSA9IGZvcm1EYXRhID8gZm9ybURhdGEtPmRlZXBDb3B5KCkgOiBGb3JtRGF0YTo6Y3Jl
YXRlKCk7CisgICAgY3JlYXRlUmVxdWVzdChlYyk7CisgICAgbV9leGNlcHRpb25Db2RlID0gZWM7
Cit9CisKIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7CiAjaWYgRU5BQkxFKEJMT0IpCkBAIC03MTgsNiArNzI1LDggQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXF1ZXN0LnNl
dFRhcmdldFR5cGUoUmVzb3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1hIUik7CiAjZW5kaWYKIAorICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIG1fbWV0aG9kLCBtX2FzeW5jLCBtX3JlcXVlc3RFbnRpdHlCb2R5ID8g
bV9yZXF1ZXN0RW50aXR5Qm9keS0+ZGVlcENvcHkoKSA6IDAsIG1fcmVxdWVzdEhlYWRlcnMsIG1f
aW5jbHVkZUNyZWRlbnRpYWxzLCBtX3VybC51c2VyKCksIG1fdXJsLnBhc3MoKSk7CisKICAgICBp
ZiAobV9yZXF1ZXN0RW50aXR5Qm9keSkgewogICAgICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkdF
VCIpOwogICAgICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkhFQUQiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKaW5kZXggNjA2NDI4Yjc2YzcxNjQwY2QwYzgxN2MzMThlOTg1Y2FiMmZm
NDgyYy4uY2M2Y2JjNTBjMzYwMTY1MDg5ZTI2NTk5NzVjZDEwZDMxMTIyZWY1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTEwNSw2ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAg
QmxvYiogcmVzcG9uc2VCbG9iKEV4Y2VwdGlvbkNvZGUmKTsKICAgICBCbG9iKiBvcHRpb25hbFJl
c3BvbnNlQmxvYigpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VCbG9iLmdldCgpOyB9CiAKKyAg
ICB2b2lkIHNlbmRGcm9tSW5zcGVjdG9yKFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBFeGNlcHRpb25D
b2RlJik7CisKICAgICAvLyBFeHBvc2UgSFRUUCB2YWxpZGF0aW9uIG1ldGhvZHMgZm9yIG90aGVy
IHVudHJ1c3RlZCByZXF1ZXN0cy4KICAgICBzdGF0aWMgYm9vbCBpc0FsbG93ZWRIVFRQTWV0aG9k
KGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBTdHJpbmcgdXBwZXJjYXNlS25vd25IVFRQTWV0
aG9kKGNvbnN0IFN0cmluZyYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161641</attachid>
            <date>2012-08-31 01:55:14 -0700</date>
            <delta_ts>2012-08-31 03:24:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120831125501.patch</filename>
            <type>text/plain</type>
            <size>24765</size>
            <attacher name="Pavel Chadnov">chadnov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBjNWNjOGM2NWQxZGE3
ODJiODkzZmFjZDU3YmM5ZmNjYjc3ZTg4OC4uOTYwMWI4NzdiMGU3ZTRhMDgwNzAxNThmNjkzMGU5
ZTFmNzI5NmUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA4LTMwICBQYXZl
bCBDaGFkbm92ICA8Y2hhZG5vdkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFhIUiByZXBsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgWEhSIHJlcGxheSBpbiBuZXR3b3JrIHRhYi4gQWxsIFhIUiBwYXJhbWV0ZXJzICht
ZXRob2QsIGFzeW5jLCBib2R5LCBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNz
d29yZCkgYXJlIHNhdmVkIGluIFhIUlJlcGxheURhdGEgc3RydWN0IGFuZCBpcyByZXN0b3JlZCBm
cm9tIGl0IHdoZW4gcmVwbGF5aW5nLgorICAgICAgICAKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdEltcGwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnJlcGxheVhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpY
SFJSZXBsYXlEYXRhOjpYSFJSZXBsYXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjp4aHJSZXBsYXlEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFhIUlJlcGxheURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6WEhSRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRYSFJS
ZXBsYXlEYXRhKToKKyAgICAgICAgKFJlc291cmNlRGF0YSk6CisgICAgICAgIChOZXR3b3JrUmVz
b3VyY2VzRGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKToKKyAgICAgICAgCiAyMDEyLTA4
LTI3ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIEZpeGluZyBpbmZpbml0ZSByZWN1cnNpb24gaW4gQ2FudmFzMkRMYXllck1hbmFnZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBkYWUzNjg5NDhlOTcx
ZWU2MWI5N2Q1ZGQ4NjY1MmRjOGZiMzk4OTU4Li4yYzMxZjBlOTVlY2MzNGNkZjAzNDJkMjYwZjgx
OWE4YTRhNTA3ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBA
IC04NzQsNiArODc0LDE0IEBACiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXBsYXlYSFIiLAorICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYXlzIFhIUi4gVGhlIG5ldyBYSFIgaXMgaWRl
bnRpY2FsIHRvIG9yaWdpbmFsIChwYXJhbWV0ZXJzIG1ldGhvZCwgYXN5bmMsIGJvZHksIGhlYWRl
cnMsIHdpdGhDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkIGFyZSBjb3BpZWQpIiwKKyAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRp
ZmllciBvZiBYSFIgdG8gcmVwbGF5LiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAiY2FuQ2xlYXJCcm93c2VyQ2FjaGUiLAogICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJUZWxscyB3aGV0aGVyIGNsZWFyaW5nIGJyb3dzZXIgY2FjaGUg
aXMgc3VwcG9ydGVkLiIsCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmlu
ZGV4IGFmNDQ3MjhjNjQ2MTAwOGJhZjM5NDdmM2RiNjk3ZjYyNGZhNmM2ZTcuLmM3OTZjYjZjZDJi
OWI2NTdiMWFmYzVkMTYyNTY2NWIyYjk4NmUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zMzAsNiArMzMw
LDE4IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0
YXRlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRp
ZENoYW5nZVhIUlJlYWR5U3RhdGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENyZWF0ZVhIUlJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRy
PEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBp
bmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbG9naW4sIGNvbnN0IFN0cmluZyYgcGFz
c3dvcmQpCit7CisgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgICAg
IHJlc291cmNlQWdlbnQtPmRpZENyZWF0ZVhIUlJlcXVlc3QobWV0aG9kLCBhc3luYywgZm9ybURh
dGEsIGhlYWRlcnMsIGluY2x1ZGVDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9u
ZyBpZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICAgICAg
cmVzb3VyY2VBZ2VudC0+cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKGlkKTsKK30KKwogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERp
c3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0
IFZlY3RvcjxFdmVudENvbnRleHQ+JiBhbmNlc3RvcnMsIERvY3VtZW50KiBkb2N1bWVudCkKIHsK
ICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBkYjMzNWJmYWY0NTBjYzMx
OGNiY2U0ZGY2MTgxMTI3ZGQyNTRmNWM4Li5hYjZjOWY5ZTU0ZDllMjc4NzYwZjZlYmYzYTdlNGFm
MDVmNGU5MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCkBAIC0xNjEsNiArMTYxLDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHdpbGxQcm9jZXNzVGFzayhQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHJvY2Vz
c1Rhc2soUGFnZSopOwogCisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlWEhSUmVxdWVzdChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCBwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcpOworCiAgICAgc3RhdGljIHZvaWQgYXBw
bHlVc2VyQWdlbnRPdmVycmlkZShGcmFtZSosIFN0cmluZyopOwogICAgIHN0YXRpYyB2b2lkIGFw
cGx5U2NyZWVuV2lkdGhPdmVycmlkZShGcmFtZSosIGxvbmcqKTsKICAgICBzdGF0aWMgdm9pZCBh
cHBseVNjcmVlbkhlaWdodE92ZXJyaWRlKEZyYW1lKiwgbG9uZyopOwpAQCAtMzM2LDYgKzMzOSw4
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkUHJvY2Vzc1J1bGVJbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQcm9j
ZXNzVGFza0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIHN0YXRpYyB2b2lkIGRpZFBy
b2Nlc3NUYXNrSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgc3RhdGljIHZvaWQgZGlk
Q3JlYXRlWEhSUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFN0cmluZyYs
IGJvb2wsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHZvaWQgcHJlZmxpZ2h0
UmVxdWVzdFN1Y2NlZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyk7
CiAKICAgICBzdGF0aWMgdm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgU3RyaW5nKik7CiAgICAgc3RhdGljIHZvaWQgYXBwbHlTY3JlZW5XaWR0aE92
ZXJyaWRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgbG9uZyopOwpAQCAtMTE2MSw2ICsxMTY2
LDIzIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVhI
UlJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRlCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVYSFJSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBib29sIGFzeW5jLCBQ
YXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVy
cywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbG9naW4sIGNvbnN0IFN0
cmluZyYgcGFzc3dvcmQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICBkaWRDcmVhdGVYSFJSZXF1ZXN0SW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzLCBtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVk
ZUNyZWRlbnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWQpCit7CisjaWYgRU5B
QkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAg
ICBwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlkKTsK
KyNlbmRpZgorfQorCisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA5ZDkyOWM5YTEwYmVkMzRjMjljMjg5
NDgxYWIwYTRhNWE2Mjg2OTE0Li4yNmIyMGIwZTUxNjU3ZDA3OTE3ZDM1NDY3MDY5OGJkMmRjMTA1
NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUu
aCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgog
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5o
PgpAQCAtMjAzLDEzICsyMDQsMzkgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fkluc3BlY3Rv
clJlc291cmNlQWdlbnQoKQogICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KCkpOwogfQogCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZENyZWF0ZVhIUlJlcXVlc3QoY29uc3QgU3RyaW5nJiBtZXRob2QsIGJvb2wgYXN5bmMsIFBh
c3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJz
LCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBsb2dpbiwgY29uc3QgU3Ry
aW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoIW1fb3JpZ2luYWxSZXF1ZXN0SWQuaXNFbXB0eSgp
KQorICAgICAgICBtX3hockRhdGEgPSBtX3Jlc291cmNlc0RhdGEtPnhoclJlcGxheURhdGEobV9v
cmlnaW5hbFJlcXVlc3RJZCk7CisgICAgZWxzZSB7CisgICAgICAgIEhUVFBIZWFkZXJNYXAgaGVh
ZGVyTWFwOworICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBoZWFk
ZXJzLmVuZCgpOworICAgICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0
ID0gaGVhZGVycy5iZWdpbigpOyBpdCE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGhlYWRlck1h
cC5hZGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKKyAgICAgICAgbV94aHJEYXRhID0gWEhSUmVw
bGF5RGF0YTo6Y3JlYXRlKG1ldGhvZCwgYXN5bmMsIGZvcm1EYXRhLCBoZWFkZXJNYXAsIGluY2x1
ZGVDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKHVuc2lnbmVkIGxvbmcg
aWQpCit7CisgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWQgPSBpZDsKK30KKwogdm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgU3RyaW5nIHJlcXVl
c3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwogICAgIG1f
cmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VDcmVhdGVkKHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmxv
YWRlcklkKGxvYWRlcikpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGVhZGVycyA9
IG1fc3RhdGUtPmdldE9iamVjdChSZXNvdXJjZUFnZW50U3RhdGU6OmV4dHJhUmVxdWVzdEhlYWRl
cnMpOworICAgIGlmIChtX3hockRhdGEpIHsKKyAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRY
SFJSZXBsYXlEYXRhKHJlcXVlc3RJZCwgbV94aHJEYXRhKTsKKyAgICAgICAgbV94aHJEYXRhID0g
bnVsbHB0cjsKKyAgICB9IGVsc2UgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkKSB7CisgICAgICAg
IG1fcmVzb3VyY2VzRGF0YS0+c2V0WEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQsIG1fcmVzb3VyY2Vz
RGF0YS0+eGhyUmVwbGF5RGF0YShJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChtX3ByZWZs
aWdodFJlcXVlc3RJZCkpKTsKKyAgICAgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWQgPSAwOworICAg
IH0KKwogCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGVhZGVycyA9IG1fc3RhdGUtPmdl
dE9iamVjdChSZXNvdXJjZUFnZW50U3RhdGU6OmV4dHJhUmVxdWVzdEhlYWRlcnMpOwogICAgIGlm
IChoZWFkZXJzKSB7CiAgICAgICAgIEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gaGVhZGVycy0+ZW5kKCk7CiAgICAgICAgIGZvciAoSW5zcGVjdG9yT2JqZWN0Ojpjb25zdF9p
dGVyYXRvciBpdCA9IGhlYWRlcnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtNTcw
LDYgKzU5NywyNCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldFJlc3BvbnNlQm9k
eShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cgogICAgICplcnJvclN0cmluZyA9
ICJObyBkYXRhIGZvdW5kIGZvciByZXNvdXJjZSB3aXRoIGdpdmVuIGlkZW50aWZpZXIiOwogfQog
Cit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlcGxheVhIUihFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQoreworICAgIFVOVVNFRF9QQVJBTShl
cnJvclN0cmluZyk7CisgICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4aHIgPSBYTUxIdHRwUmVx
dWVzdDo6Y3JlYXRlKG1fcGFnZUFnZW50LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSk7CisgICAg
RXhjZXB0aW9uQ29kZSBjb2RlOworICAgIFN0cmluZyBhY3R1YWxSZXF1ZXN0SWQgPSByZXF1ZXN0
SWQ7CisKKyAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiByZXNv
dXJjZURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPmRhdGEoYWN0dWFsUmVxdWVzdElkKTsKKyAgICBS
ZWZQdHI8WEhSUmVwbGF5RGF0YT4geGhyRGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+eGhyUmVwbGF5
RGF0YShhY3R1YWxSZXF1ZXN0SWQpOworICAgIG1fb3JpZ2luYWxSZXF1ZXN0SWQgPSByZXF1ZXN0
SWQ7CisgICAgeGhyLT5vcGVuKHhockRhdGEtPm1ldGhvZCgpLCBLVVJMKFBhcnNlZFVSTFN0cmlu
ZywgcmVzb3VyY2VEYXRhLT51cmwoKSksIHhockRhdGEtPmFzeW5jKCksIGNvZGUpOworICAgIEhU
VFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHhockRhdGEtPmhlYWRlcnMoKS5lbmQo
KTsKKyAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0geGhyRGF0YS0+
aGVhZGVycygpLmJlZ2luKCk7IGl0IT0gZW5kOyArK2l0KQorICAgICAgICB4aHItPnNldFJlcXVl
c3RIZWFkZXIoaXQtPmZpcnN0LCBpdC0+c2Vjb25kLCBjb2RlKTsKKyAgICB4aHItPnNlbmRGcm9t
SW5zcGVjdG9yKHhockRhdGEtPmZvcm1EYXRhKCksIGNvZGUpOworICAgIG1fb3JpZ2luYWxSZXF1
ZXN0SWQgPSBTdHJpbmcoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjYW5D
bGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyosIGJvb2wqIHJlc3VsdCkKIHsKICAgICAqcmVz
dWx0ID0gbV9jbGllbnQtPmNhbkNsZWFyQnJvd3NlckNhY2hlKCk7CkBAIC02MTIsNiArNjU3LDkg
QEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW4KICAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1f
cmVzb3VyY2VzRGF0YShhZG9wdFB0cihuZXcgTmV0d29ya1Jlc291cmNlc0RhdGEoKSkpCiAgICAg
LCBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5KGZhbHNlKQorICAgICwgbV94aHJEYXRhKDApCisg
ICAgLCBtX3ByZWZsaWdodFJlcXVlc3RJZCgwKQorICAgICwgbV9wcmVmbGlnaHRJZFRvUmVxdWVz
dElkKCkKICAgICAsIG1faXNSZWNhbGN1bGF0aW5nU3R5bGUoZmFsc2UpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA1
YzlmYmUyNjJlNmUwZmJhY2E3MzlhYTgyYTZmYjM1Njk1OTUyMzRkLi5lYWQ4MTJmOTc1YmI0NDU3
YTM5Y2EzNmU2ODgzY2NhNTE2ZjhhYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTUwLDcgKzUwLDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IERvY3VtZW50TG9hZGVyOworY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEhU
VFBIZWFkZXJNYXA7CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckNsaWVu
dDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOwpAQCAtNjYsNiArNjgsNyBAQCBjbGFzcyBSZXNv
dXJjZUxvYWRlcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitzdHJ1Y3QgWEhSUmVwbGF5RGF0YTsKIAogI2lmIEVO
QUJMRShXRUJfU09DS0VUUykKIHN0cnVjdCBXZWJTb2NrZXRGcmFtZTsKQEAgLTEwNyw2ICsxMTAs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJl
c291cmNlKik7CiAKICAgICB2b2lkIGFwcGx5VXNlckFnZW50T3ZlcnJpZGUoU3RyaW5nKiB1c2Vy
QWdlbnQpOworICAgIHZvaWQgZGlkQ3JlYXRlWEhSUmVxdWVzdChjb25zdCBTdHJpbmcmIG1ldGhv
ZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gYm9keSwgY29uc3QgSFRUUEhlYWRl
ck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlbmRlbnRpYWxzLCBjb25zdCBTdHJpbmcmIGxv
Z2luLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKTsKKyAgICB2b2lkIHByZWZsaWdodFJlcXVlc3RT
dWNjZWRlZCh1bnNpZ25lZCBsb25nIGlkKTsKIAogICAgIC8vIEZJWE1FOiBJbnNwZWN0b3JSZXNv
dXJjZUFnZW50IHNob3VsZCBub3cgYmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxjdWxhdGlvbi4KICAg
ICB2b2lkIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKCk7CkBAIC0xMzUsNiArMTQwLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzcG9u
c2VCb2R5KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0cmluZyogY29u
dGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5WEhS
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOworCiAgICAgdmlydHVhbCB2
b2lkIGNhbkNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKiwgYm9vbCopOwogICAgIHZpcnR1
YWwgdm9pZCBjbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9p
ZCBjYW5DbGVhckJyb3dzZXJDb29raWVzKEVycm9yU3RyaW5nKiwgYm9vbCopOwpAQCAtMTUzLDYg
KzE2MCwxMCBAQCBwcml2YXRlOgogICAgIE93blB0cjxOZXR3b3JrUmVzb3VyY2VzRGF0YT4gbV9y
ZXNvdXJjZXNEYXRhOwogICAgIGJvb2wgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseTsKIAorICAg
IFJlZlB0cjxYSFJSZXBsYXlEYXRhPiBtX3hockRhdGE7CisgICAgdW5zaWduZWQgbG9uZyBtX3By
ZWZsaWdodFJlcXVlc3RJZDsKKyAgICBTdHJpbmcgbV9vcmlnaW5hbFJlcXVlc3RJZDsKKyAgICBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3ByZWZsaWdodElkVG9SZXF1ZXN0SWQ7CiAgICAgLy8g
RklYTUU6IEluc3BlY3RvclJlc291cmNlQWdlbnQgc2hvdWxkIG5vdyBiZSBhd2FyZSBvZiBzdHls
ZSByZWNhbGN1bGF0aW9uLgogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlh
dG9yPiBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvcjsKICAgICBib29sIG1faXNSZWNhbGN1
bGF0aW5nU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAppbmRleCBlMDVkMTNkZWNiMzgxOGZjZjFiYjgzMzI4MzU5ZGVhZmIyOTVk
ZmFjLi4yM2I1NDM5Y2NkMTcwNGEwMDdkZDg1MTc5NzQyMThkMGE5MWVjMDI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ2
LDYgKzQ2LDIxIEBAIHN0YXRpYyBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNp
emUgPSAxMCAqIDEwMDAgKiAxMDAwOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1Bhc3NSZWZQ
dHI8WEhSUmVwbGF5RGF0YT4gWEhSUmVwbGF5RGF0YTo6Y3JlYXRlKFN0cmluZyBtZXRob2QsIGJv
b2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVy
TWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU3RyaW5nIGxvZ2luLCBTdHJp
bmcgcGFzc3dvcmQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYSFJSZXBsYXlEYXRhKG1l
dGhvZCwgYXN5bmMsIGZvcm1EYXRhLCBoZWFkZXJzLCBpbmNsdWRlQ3JlZGVudGlhbHMsIGxvZ2lu
LCBwYXNzd29yZCkpOworfQorCitYSFJSZXBsYXlEYXRhOjpYSFJSZXBsYXlEYXRhKFN0cmluZyBt
ZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBI
VFRQSGVhZGVyTWFwICZoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgU3RyaW5nIGxv
Z2luLCBTdHJpbmcgcGFzc3dvcmQpCisgICAgOiBtX21ldGhvZChtZXRob2QpCisgICAgLCBtX2Fz
eW5jKGFzeW5jKQorICAgICwgbV9mb3JtRGF0YShmb3JtRGF0YSkKKyAgICAsIG1faGVhZGVycyho
ZWFkZXJzKQorICAgICwgbV9pbmNsdWRlQ3JlZGVudGlhbHMoaW5jbHVkZUNyZWRlbnRpYWxzKQor
ICAgICwgbV9sb2dpbihsb2dpbikKKyAgICAsIG1fcGFzc3dvcmQocGFzc3dvcmQpCit7Cit9CiAK
IC8vIFJlc291cmNlRGF0YQogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6UmVz
b3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRlcklk
KQpAQCAtMjUzLDYgKzI2OCwxNiBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRh
IGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZGF0YShjb25zdCBTdHJpbgogICAgIHJldHVy
biBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOwogfQogCitQYXNz
UmVmUHRyPFhIUlJlcGxheURhdGE+IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjp4aHJSZXBsYXlEYXRh
KGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQoreworICAgIHJldHVybiBtX3JlcXVlc3RJZFRvUmVz
b3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpLT5YSFJEYXRhKCk7Cit9CisKK3ZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OnNldFhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQs
IFBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4geGhyRGF0YSkKK3sKKyAgICBtX3JlcXVlc3RJZFRv
UmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpLT5zZXRYSFJSZXBsYXlEYXRhKHhockRhdGEp
OworfQorCiBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVtb3ZlQ2FjaGVk
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQogewogICAgIFZlY3RvcjxT
dHJpbmc+IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3
b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmgKaW5kZXggOGRmZDVkZDBkYmIyMTFhMGM0OTJlYTZmMWZkM2E0OGU5MDc3MWVj
OC4uNmIxM2IyZmUxYzhjYzkyOGVkZWM5NTEyOTJmYThlZTcxZmVjZGFlOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTQ2LDYgKzQ2
LDI3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3Mg
VGV4dFJlc291cmNlRGVjb2RlcjsKIAorY2xhc3MgWEhSUmVwbGF5RGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPFhIUlJlcGxheURhdGE+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxY
SFJSZXBsYXlEYXRhPiBjcmVhdGUoU3RyaW5nIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0
cjxGb3JtRGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAgJmhlYWRlcnMsIGJvb2wgaW5jbHVkZUNy
ZWRlbnRpYWxzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCk7CisgICAgU3RyaW5nIG1l
dGhvZCgpIHsgcmV0dXJuIG1fbWV0aG9kOyB9CisgICAgYm9vbCBhc3luYygpIHsgcmV0dXJuIG1f
YXN5bmM7IH0KKyAgICBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSgpIHsgcmV0dXJuIG1f
Zm9ybURhdGE7IH0KKyAgICBIVFRQSGVhZGVyTWFwIGhlYWRlcnMoKSB7IHJldHVybiBtX2hlYWRl
cnM7IH0KKyAgICBib29sIGluY2x1ZGVDcmVkZW50aWFscygpIHsgcmV0dXJuIG1faW5jbHVkZUNy
ZWRlbnRpYWxzOyB9CisgICAgU3RyaW5nIGxvZ2luKCkgeyByZXR1cm4gbV9sb2dpbjsgfQorICAg
IFN0cmluZyBwYXNzd29yZCgpIHsgcmV0dXJuIG1fcGFzc3dvcmQ7IH0KK3ByaXZhdGU6CisgICAg
WEhSUmVwbGF5RGF0YShTdHJpbmcgbWV0aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1E
YXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlh
bHMsIFN0cmluZyBsb2dpbiwgU3RyaW5nIHBhc3N3b3JkKTsKKyAgICBTdHJpbmcgbV9tZXRob2Q7
CisgICAgYm9vbCBtX2FzeW5jOworICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9mb3JtRGF0YTsKKyAg
ICBIVFRQSGVhZGVyTWFwIG1faGVhZGVyczsKKyAgICBib29sIG1faW5jbHVkZUNyZWRlbnRpYWxz
OworICAgIFN0cmluZyBtX2xvZ2luOworICAgIFN0cmluZyBtX3Bhc3N3b3JkOworfTsKKwogY2xh
c3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogcHVibGljOgogICAgIGNsYXNzIFJlc291cmNlRGF0
YSB7CkBAIC05MCw2ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBj
YWNoZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2U7IH0KICAgICAg
ICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2Up
IHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlOyB9CiAKKyAgICAgICAgUGFzc1Jl
ZlB0cjxYSFJSZXBsYXlEYXRhPiBYSFJEYXRhKCkgY29uc3QgeyByZXR1cm4gbV94aHJSZXBsYXlE
YXRhOyB9CisgICAgICAgIHZvaWQgc2V0WEhSUmVwbGF5RGF0YShQYXNzUmVmUHRyPFhIUlJlcGxh
eURhdGE+IHhockRhdGEpIHsgbV94aHJSZXBsYXlEYXRhID0geGhyRGF0YTsgfQogICAgIHByaXZh
dGU6CiAgICAgICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsg
fQogICAgICAgICBzaXplX3QgZGF0YUxlbmd0aCgpIGNvbnN0OwpAQCAtMTAxLDYgKzEyNCw3IEBA
IHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG1fZnJhbWVJZDsKICAgICAgICAgU3RyaW5nIG1fdXJs
OwogICAgICAgICBTdHJpbmcgbV9jb250ZW50OworICAgICAgICBSZWZQdHI8WEhSUmVwbGF5RGF0
YT4gbV94aHJSZXBsYXlEYXRhOwogICAgICAgICBib29sIG1fYmFzZTY0RW5jb2RlZDsKICAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhQnVmZmVyOwogICAgICAgICBib29sIG1faXND
b250ZW50UHVyZ2VkOwpAQCAtMTMyLDYgKzE1Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFy
KGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQgPSBTdHJpbmcoKSk7CiAKICAgICB2b2lk
IHNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKHNpemVfdCBtYXhpbXVtUmVzb3VyY2VzQ29udGVu
dFNpemUsIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7CisgICAgdm9p
ZCBzZXRYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBQYXNzUmVmUHRyPFhI
UlJlcGxheURhdGE+KTsKKyAgICBQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IHhoclJlcGxheURh
dGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgZW5zdXJl
Tm9EYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKaW5kZXggNWM4
MGFjMTc4MjA4ZTViMjA5Mzk3ZjYwOTc1YWM3MDQ3MGI3MDY3Ni4uYzdiOTAwNjMyMTdjMGJiYjQ5
MDE4OGFjODYyYjg3ZmI4NDNlZDQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMKQEAgLTk2Miw4ICs5NjIsMjEgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX2Nh
bkNsZWFyQnJvd3NlckNvb2tpZXMpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3IudXNlTG93ZXJDYXNlTWVudVRpdGxl
cygpID8gIkNsZWFyIGJyb3dzZXIgY29va2llcyIgOiAiQ2xlYXIgQnJvd3NlciBDb29raWVzIiks
IHRoaXMuX2NsZWFyQnJvd3NlckNvb2tpZXMuYmluZCh0aGlzKSk7CiAKKworICAgICAgICBpZiAo
cmVxdWVzdC50eXBlID09PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5YSFIpIHsKKyAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAgY29udGV4
dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcGxheSBYSFIiKSwgdGhp
cy5fcmVwbGF5WEhSLmJpbmQodGhpcywgcmVxdWVzdC5yZXF1ZXN0SWQpKTsKKyAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICB9CisKICAgICAgICAgY29u
dGV4dE1lbnUuc2hvdyhldmVudCk7CiAgICAgfSwKKyAgICAKKyAgICBfcmVwbGF5WEhSOiBmdW5j
dGlvbihyZXF1ZXN0SWQpCisgICAgeworICAgICAgICBOZXR3b3JrQWdlbnQucmVwbGF5WEhSKHJl
cXVlc3RJZCk7CisgICAgfSwKKyAgICAKIAogICAgIF9jb3B5QWxsOiBmdW5jdGlvbigpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcAppbmRleCBhMGM2NDg5Y2IwNjM5MDkwYWQ5NTM5ZDg0YjRlMmUwOWVmNDVjNmJiLi5mYTFi
NGQ1MzRlMTlmMGU5M2Q0MDRhYWJmNDQyYzgyOWEyMWZkMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMjQ2LDcgKzI0
Niw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zCiAgICAgQVNTRVJUKG1fY2xpZW50KTsKIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZp
ZXIpIHsKKyAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciAmJiBtX2FzeW5jKSB7
CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtX2RvY3VtZW50LT5mcmFtZSgpLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlKG1fZG9jdW1lbnQtPmZyYW1lKCksIG1fcHJlZmxpZ2h0UmVxdWVzdElk
ZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUsIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50
aWZpZXIsIGxvYWRlciwgcmVzcG9uc2UsIDApOwpAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlLCBjb25zdCBjaGFyCiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChtX3ByZWZsaWdo
dFJlcXVlc3RJZGVudGlmaWVyKQorICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVy
ICYmIG1fYXN5bmMpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2
ZURhdGEobV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwg
MCwgMCwgZGF0YUxlbmd0aCk7CiAjZW5kaWYKIApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCiB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQogewogI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpCisgICAg
aWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgJiYgbV9hc3luYykKICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nKG1fZG9jdW1lbnQtPmZyYW1l
KCksIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCBtX3By
ZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyLCBmaW5pc2hUaW1lKTsKICNlbmRpZgogCkBAIC0zMzAs
NyArMzMwLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUKIHZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpCisg
ICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgJiYgbV9hc3luYykKICAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZyhtX2RvY3VtZW50LT5mcmFt
ZSgpLCBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSwgbV9w
cmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgZXJyb3IpOwogI2VuZGlmCiAKQEAgLTM4Miw3ICsz
ODIsOSBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cgogICAgICAgICAgICAgbV9wcmVmbGlnaHRS
ZXF1ZXN0SWRlbnRpZmllciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPnBhZ2UoKS0+cHJvZ3Jlc3Mo
KS0+Y3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogICAgICAgICAgICAgUmVzb3VyY2VSZXNwb25z
ZSByZWRpcmVjdFJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwogICAgICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFJlcXVlc3QobV9kb2N1bWVudC0+ZnJhbWUo
KSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgbV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9h
ZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwot
ICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmll
cikKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVz
dFN1Y2NlZGVkKG1fZG9jdW1lbnQsIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpOworCiAj
ZW5kaWYKICAgICAgICAgQVNTRVJUKCFtX3Jlc291cmNlKTsKICAgICAgICAgbV9yZXNvdXJjZSA9
IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RSYXdSZXNvdXJjZShu
ZXdSZXF1ZXN0LCBvcHRpb25zKTsKQEAgLTM5OSw2ICs0MDEsMTMgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgU2VjdXIKICAgICBpZiAobV9kb2N1bWVudC0+ZnJhbWUoKSkKICAgICAgICAgaWRlbnRpZmll
ciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KHJlcXVlc3QsIG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzLCBlcnJvciwgcmVzcG9uc2Us
IGRhdGEpOwogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAobV9hY3R1YWxSZXF1ZXN0
KQorICAgICAgICBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyID0gaWRlbnRpZmllcjsKKyAg
ICBlbHNlIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZChtX2RvY3VtZW50LCBt
X3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKTsKKyNlbmRpZgorCiAgICAgLy8gTm8gZXhjZXB0
aW9uIGZvciBmaWxlOi8vLyByZXNvdXJjZXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDk2MjI5OD4u
CiAgICAgLy8gQWxzbywgaWYgd2UgaGF2ZSBhbiBIVFRQIHJlc3BvbnNlLCB0aGVuIGl0IHdhc24n
dCBhIG5ldHdvcmsgZXJyb3IgaW4gZmFjdC4KICAgICBpZiAoIWVycm9yLmlzTnVsbCgpICYmICFy
ZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA8PSAw
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCAxMTFhNjQ5YTEzZTc2
YWVmODM3MGIxODJjOTUxY2E5ZTc1Y2ZiMjJlLi5mNTcyY2RkNmVjZDhkOGY2NmRjMDMxYjYyNzhi
OGVkNDYzZjg4MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTY4
NCw2ICs2ODQsMTMgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6c2VuZEJ5dGVzRGF0YShjb25zdCB2
b2lkKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBFeGNlcHRpb25Db2QKICAgICBjcmVhdGVSZXF1ZXN0
KGVjKTsKIH0KIAordm9pZCBYTUxIdHRwUmVxdWVzdDo6c2VuZEZyb21JbnNwZWN0b3IoUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIG1fcmVx
dWVzdEVudGl0eUJvZHkgPSBmb3JtRGF0YSA/IGZvcm1EYXRhLT5kZWVwQ29weSgpIDogRm9ybURh
dGE6OmNyZWF0ZSgpOworICAgIGNyZWF0ZVJlcXVlc3QoZWMpOworICAgIG1fZXhjZXB0aW9uQ29k
ZSA9IGVjOworfQorCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KEV4Y2VwdGlv
bkNvZGUmIGVjKQogewogI2lmIEVOQUJMRShCTE9CKQpAQCAtNzE4LDYgKzcyNSw4IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgcmVx
dWVzdC5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNYSFIpOwogI2VuZGlm
CiAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVhIUlJlcXVlc3Qoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX21ldGhvZCwgbV9hc3luYywgbV9yZXF1ZXN0RW50aXR5
Qm9keSA/IG1fcmVxdWVzdEVudGl0eUJvZHktPmRlZXBDb3B5KCkgOiAwLCBtX3JlcXVlc3RIZWFk
ZXJzLCBtX2luY2x1ZGVDcmVkZW50aWFscywgbV91cmwudXNlcigpLCBtX3VybC5wYXNzKCkpOwor
CiAgICAgaWYgKG1fcmVxdWVzdEVudGl0eUJvZHkpIHsKICAgICAgICAgQVNTRVJUKG1fbWV0aG9k
ICE9ICJHRVQiKTsKICAgICAgICAgQVNTRVJUKG1fbWV0aG9kICE9ICJIRUFEIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCmluZGV4IDYwNjQyOGI3NmM3MTY0MGNkMGM4MTdjMzE4ZTk4
NWNhYjJmZjQ4MmMuLmNjNmNiYzUwYzM2MDE2NTA4OWUyNjU5OTc1Y2QxMGQzMTEyMmVmNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0xMDUsNiArMTA1LDggQEAgcHVibGlj
OgogICAgIEJsb2IqIHJlc3BvbnNlQmxvYihFeGNlcHRpb25Db2RlJik7CiAgICAgQmxvYiogb3B0
aW9uYWxSZXNwb25zZUJsb2IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlQmxvYi5nZXQoKTsg
fQogCisgICAgdm9pZCBzZW5kRnJvbUluc3BlY3RvcihQYXNzUmVmUHRyPEZvcm1EYXRhPiwgRXhj
ZXB0aW9uQ29kZSYpOworCiAgICAgLy8gRXhwb3NlIEhUVFAgdmFsaWRhdGlvbiBtZXRob2RzIGZv
ciBvdGhlciB1bnRydXN0ZWQgcmVxdWVzdHMuCiAgICAgc3RhdGljIGJvb2wgaXNBbGxvd2VkSFRU
UE1ldGhvZChjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgU3RyaW5nIHVwcGVyY2FzZUtub3du
SFRUUE1ldGhvZChjb25zdCBTdHJpbmcmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161651</attachid>
            <date>2012-08-31 03:24:20 -0700</date>
            <delta_ts>2012-08-31 08:35:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120831142407.patch</filename>
            <type>text/plain</type>
            <size>24880</size>
            <attacher name="Pavel Chadnov">chadnov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBjNWNjOGM2NWQxZGE3
ODJiODkzZmFjZDU3YmM5ZmNjYjc3ZTg4OC4uOTYwMWI4NzdiMGU3ZTRhMDgwNzAxNThmNjkzMGU5
ZTFmNzI5NmUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA4LTMwICBQYXZl
bCBDaGFkbm92ICA8Y2hhZG5vdkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFhIUiByZXBsYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk1MTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgWEhSIHJlcGxheSBpbiBuZXR3b3JrIHRhYi4gQWxsIFhIUiBwYXJhbWV0ZXJzICht
ZXRob2QsIGFzeW5jLCBib2R5LCBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNz
d29yZCkgYXJlIHNhdmVkIGluIFhIUlJlcGxheURhdGEgc3RydWN0IGFuZCBpcyByZXN0b3JlZCBm
cm9tIGl0IHdoZW4gcmVwbGF5aW5nLgorICAgICAgICAKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdEltcGwpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZENyZWF0ZVhIUlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnJlcGxheVhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNv
dXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpY
SFJSZXBsYXlEYXRhOjpYSFJSZXBsYXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjp4aHJSZXBsYXlEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFhIUlJlcGxheURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6WEhSRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRYSFJS
ZXBsYXlEYXRhKToKKyAgICAgICAgKFJlc291cmNlRGF0YSk6CisgICAgICAgIChOZXR3b3JrUmVz
b3VyY2VzRGF0YSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKToKKyAgICAgICAgCiAyMDEyLTA4
LTI3ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIEZpeGluZyBpbmZpbml0ZSByZWN1cnNpb24gaW4gQ2FudmFzMkRMYXllck1hbmFnZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBkYWUzNjg5NDhlOTcx
ZWU2MWI5N2Q1ZGQ4NjY1MmRjOGZiMzk4OTU4Li5lZmUyYzRiYzYxM2ViMDllZTU5YzUxNjM0MWEy
NGNjMGMwYzU4MDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBA
IC04NzQsNiArODc0LDE0IEBACiAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXBsYXlYSFIiLAorICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXBsYXlzIFhIUi4gVGhlIG5ldyBYSFIgaXMgaWRl
bnRpY2FsIHRvIHRoZSBvcmlnaW5hbCBvbmUgKHBhcmFtZXRlcnMgbWV0aG9kLCBhc3luYywgYm9k
eSwgaGVhZGVycywgd2l0aENyZWRlbnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQgYXJlIGNvcGllZCki
LAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjogIlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6
ICJJZGVudGlmaWVyIG9mIFhIUiB0byByZXBsYXkuIiB9CisgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJjYW5DbGVhckJyb3dzZXJDYWNoZSIsCiAgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRlbGxzIHdoZXRoZXIgY2xlYXJpbmcgYnJvd3Nl
ciBjYWNoZSBpcyBzdXBwb3J0ZWQuIiwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKaW5kZXggYWY0NDcyOGM2NDYxMDA4YmFmMzk0N2YzZGI2OTdmNjI0ZmE2YzZlNy4uYzc5
NmNiNmNkMmI5YjY1N2IxYWZjNWQxNjI1NjY1YjJiOTg2ZTI4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTMz
MCw2ICszMzAsMTggQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhI
UlJlYWR5U3RhdGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW0KICAgICAgICAgdGltZWxpbmVB
Z2VudC0+ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZSgpOwogfQogCit2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3RyaW5nJiBtZXRob2QsIGJvb2wgYXN5bmMsIFBh
c3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJz
LCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBsb2dpbiwgY29uc3QgU3Ry
aW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3Vy
Y2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkK
KyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkQ3JlYXRlWEhSUmVxdWVzdChtZXRob2QsIGFzeW5j
LCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNyZWRlbnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQp
OworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1
Y2NlZGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNp
Z25lZCBsb25nIGlkKQoreworICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJj
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQor
ICAgICAgICByZXNvdXJjZUFnZW50LT5wcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQoaWQpOworfQor
CiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9k
ZSwgY29uc3QgVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycywgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGRiMzM1YmZh
ZjQ1MGNjMzE4Y2JjZTRkZjYxODExMjdkZDI1NGY1YzguLmVmMGMzNjFmYWVhZDZjODk0YmJlYTZl
YjE2ZmY1OTdkOTZkODYyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTE2MSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgd2lsbFByb2Nlc3NUYXNrKFBhZ2UqKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRQcm9jZXNzVGFzayhQYWdlKik7CiAKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVYSFJSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmLCBib29sLCBQYXNzUmVm
UHRyPEZvcm1EYXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIGJvb2wsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyB2b2lkIHByZWZsaWdodFJlcXVlc3RTdWNjZWRl
ZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyk7CisKICAgICBzdGF0aWMg
dm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlKEZyYW1lKiwgU3RyaW5nKik7CiAgICAgc3RhdGlj
IHZvaWQgYXBwbHlTY3JlZW5XaWR0aE92ZXJyaWRlKEZyYW1lKiwgbG9uZyopOwogICAgIHN0YXRp
YyB2b2lkIGFwcGx5U2NyZWVuSGVpZ2h0T3ZlcnJpZGUoRnJhbWUqLCBsb25nKik7CkBAIC0zMzYs
NiArMzM5LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRQcm9jZXNzUnVsZUltcGwo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZvaWQg
d2lsbFByb2Nlc3NUYXNrSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3RhdGljIHZv
aWQgZGlkUHJvY2Vzc1Rhc2tJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRDcmVhdGVYSFJSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3Qg
U3RyaW5nJiwgYm9vbCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAm
LCBib29sLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCBw
cmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25l
ZCBsb25nKTsKIAogICAgIHN0YXRpYyB2b2lkIGFwcGx5VXNlckFnZW50T3ZlcnJpZGVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBTdHJpbmcqKTsKICAgICBzdGF0aWMgdm9pZCBhcHBseVNjcmVl
bldpZHRoT3ZlcnJpZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBsb25nKik7CkBAIC0xMTYx
LDYgKzExNjYsMjIgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlWEhSUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGUKICNlbmRpZgogfQogCitpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVhIUlJlcXVlc3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGJvb2wg
YXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFw
JiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBsb2dpbiwg
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCisgICAgICAgIGRpZENyZWF0ZVhIUlJlcXVlc3RJ
bXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIG1ldGhvZCwgYXN5bmMsIGZvcm1EYXRhLCBoZWFkZXJz
LCBpbmNsdWRlQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNzd29yZCk7CisjZW5kaWYKK30KKworaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2Vk
ZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyBpZCkKK3sK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkp
CisgICAgICAgIHByZWZsaWdodFJlcXVlc3RTdWNjZWRlZEltcGwoaW5zdHJ1bWVudGluZ0FnZW50
cywgaWQpOworI2VuZGlmCit9CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA5ZDkyOWM5YTEwYmVkMzRj
MjljMjg5NDgxYWIwYTRhNWE2Mjg2OTE0Li4xMjlkZmI2MzVmMDRjMTBlMGZjMGIwZWU1N2MzNDkz
NjVjYjM1NGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0
RnJhbWUuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJYTUxIdHRwUmVxdWVz
dC5oIgogCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51
bWJlci5oPgpAQCAtMjAzLDEzICsyMDQsMzkgQEAgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6fklu
c3BlY3RvclJlc291cmNlQWdlbnQoKQogICAgIEFTU0VSVCghbV9pbnN0cnVtZW50aW5nQWdlbnRz
LT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpOwogfQogCit2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZENyZWF0ZVhIUlJlcXVlc3QoY29uc3QgU3RyaW5nJiBtZXRob2QsIGJvb2wgYXN5
bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBo
ZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nJiBsb2dpbiwgY29u
c3QgU3RyaW5nJiBwYXNzd29yZCkKK3sKKyAgICBpZiAoIW1fb3JpZ2luYWxSZXF1ZXN0SWQuaXNF
bXB0eSgpKQorICAgICAgICBtX3hockRhdGEgPSBtX3Jlc291cmNlc0RhdGEtPnhoclJlcGxheURh
dGEobV9vcmlnaW5hbFJlcXVlc3RJZCk7CisgICAgZWxzZSB7CisgICAgICAgIEhUVFBIZWFkZXJN
YXAgaGVhZGVyTWFwOworICAgICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBoZWFkZXJzLmVuZCgpOworICAgICAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gaGVhZGVycy5iZWdpbigpOyBpdCE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGhl
YWRlck1hcC5hZGQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKKyAgICAgICAgbV94aHJEYXRhID0g
WEhSUmVwbGF5RGF0YTo6Y3JlYXRlKG1ldGhvZCwgYXN5bmMsIGZvcm1EYXRhLCBoZWFkZXJNYXAs
IGluY2x1ZGVDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkKTsKKyAgICB9Cit9CisKK3ZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKHVuc2lnbmVk
IGxvbmcgaWQpCit7CisgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWQgPSBpZDsKK30KKwogdm9pZCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgU3RyaW5n
IHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwog
ICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VDcmVhdGVkKHJlcXVlc3RJZCwgbV9wYWdlQWdl
bnQtPmxvYWRlcklkKGxvYWRlcikpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGVh
ZGVycyA9IG1fc3RhdGUtPmdldE9iamVjdChSZXNvdXJjZUFnZW50U3RhdGU6OmV4dHJhUmVxdWVz
dEhlYWRlcnMpOworICAgIGlmIChtX3hockRhdGEpIHsKKyAgICAgICAgbV9yZXNvdXJjZXNEYXRh
LT5zZXRYSFJSZXBsYXlEYXRhKHJlcXVlc3RJZCwgbV94aHJEYXRhKTsKKyAgICAgICAgbV94aHJE
YXRhID0gbnVsbHB0cjsKKyAgICB9IGVsc2UgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkKSB7Cisg
ICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0WEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQsIG1fcmVz
b3VyY2VzRGF0YS0+eGhyUmVwbGF5RGF0YShJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZCht
X3ByZWZsaWdodFJlcXVlc3RJZCkpKTsKKyAgICAgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWQgPSAw
OworICAgIH0KKwogCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaGVhZGVycyA9IG1fc3Rh
dGUtPmdldE9iamVjdChSZXNvdXJjZUFnZW50U3RhdGU6OmV4dHJhUmVxdWVzdEhlYWRlcnMpOwog
ICAgIGlmIChoZWFkZXJzKSB7CiAgICAgICAgIEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gaGVhZGVycy0+ZW5kKCk7CiAgICAgICAgIGZvciAoSW5zcGVjdG9yT2JqZWN0Ojpj
b25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewpA
QCAtNTcwLDYgKzU5NywyMyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldFJlc3Bv
bnNlQm9keShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cgogICAgICplcnJvclN0
cmluZyA9ICJObyBkYXRhIGZvdW5kIGZvciByZXNvdXJjZSB3aXRoIGdpdmVuIGlkZW50aWZpZXIi
OwogfQogCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlcGxheVhIUihFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQoreworICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVz
dD4geGhyID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCkt
PmRvY3VtZW50KCkpOworICAgIEV4Y2VwdGlvbkNvZGUgY29kZTsKKyAgICBTdHJpbmcgYWN0dWFs
UmVxdWVzdElkID0gcmVxdWVzdElkOworCisgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YSBjb25zdCogcmVzb3VyY2VEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRhKGFjdHVh
bFJlcXVlc3RJZCk7CisgICAgUmVmUHRyPFhIUlJlcGxheURhdGE+IHhockRhdGEgPSBtX3Jlc291
cmNlc0RhdGEtPnhoclJlcGxheURhdGEoYWN0dWFsUmVxdWVzdElkKTsKKyAgICBtX29yaWdpbmFs
UmVxdWVzdElkID0gcmVxdWVzdElkOworICAgIHhoci0+b3Blbih4aHJEYXRhLT5tZXRob2QoKSwg
S1VSTChQYXJzZWRVUkxTdHJpbmcsIHJlc291cmNlRGF0YS0+dXJsKCkpLCB4aHJEYXRhLT5hc3lu
YygpLCBjb2RlKTsKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSB4aHJE
YXRhLT5oZWFkZXJzKCkuZW5kKCk7CisgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IHhockRhdGEtPmhlYWRlcnMoKS5iZWdpbigpOyBpdCE9IGVuZDsgKytpdCkKKyAg
ICAgICAgeGhyLT5zZXRSZXF1ZXN0SGVhZGVyKGl0LT5maXJzdCwgaXQtPnNlY29uZCwgY29kZSk7
CisgICAgeGhyLT5zZW5kRnJvbUluc3BlY3Rvcih4aHJEYXRhLT5mb3JtRGF0YSgpLCBjb2RlKTsK
KyAgICBtX29yaWdpbmFsUmVxdWVzdElkID0gU3RyaW5nKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6Y2FuQ2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqLCBib29sKiBy
ZXN1bHQpCiB7CiAgICAgKnJlc3VsdCA9IG1fY2xpZW50LT5jYW5DbGVhckJyb3dzZXJDYWNoZSgp
OwpAQCAtNjEyLDYgKzY1Niw5IEBAIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJl
c291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluCiAgICAgLCBtX2Zy
b250ZW5kKDApCiAgICAgLCBtX3Jlc291cmNlc0RhdGEoYWRvcHRQdHIobmV3IE5ldHdvcmtSZXNv
dXJjZXNEYXRhKCkpKQogICAgICwgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseShmYWxzZSkKKyAg
ICAsIG1feGhyRGF0YSgwKQorICAgICwgbV9wcmVmbGlnaHRSZXF1ZXN0SWQoMCkKKyAgICAsIG1f
cHJlZmxpZ2h0SWRUb1JlcXVlc3RJZCgpCiAgICAgLCBtX2lzUmVjYWxjdWxhdGluZ1N0eWxlKGZh
bHNlKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmgKaW5kZXggNWM5ZmJlMjYyZTZlMGZiYWNhNzM5YWE4MmE2ZmIzNTY5NTk1MjM0
ZC4uNzQ5OTEzODg2ZGJhMDgyYzMwMjM1NDU4Nzc2OGUzYTNmYjhkMjgwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC01MCw3
ICs1MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKK2NsYXNzIEZvcm1EYXRhOwogY2xh
c3MgRnJhbWU7CitjbGFzcyBIVFRQSGVhZGVyTWFwOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBj
bGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKQEAgLTY2LDYg
KzY4LDcgQEAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgWEhSUmVw
bGF5RGF0YTsKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKIHN0cnVjdCBXZWJTb2NrZXRGcmFt
ZTsKQEAgLTEwNyw2ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGVzdHJveUNhY2hl
ZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2b2lkIGFwcGx5VXNlckFnZW50T3Zl
cnJpZGUoU3RyaW5nKiB1c2VyQWdlbnQpOworICAgIHZvaWQgZGlkQ3JlYXRlWEhSUmVxdWVzdChj
b25zdCBTdHJpbmcmIG1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gYm9k
eSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlbmRlbnRpYWxz
LCBjb25zdCBTdHJpbmcmIGxvZ2luLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKTsKKyAgICB2b2lk
IHByZWZsaWdodFJlcXVlc3RTdWNjZWRlZCh1bnNpZ25lZCBsb25nIGlkKTsKIAogICAgIC8vIEZJ
WE1FOiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50IHNob3VsZCBub3cgYmUgYXdhcmUgb2Ygc3R5bGUg
cmVjYWxjdWxhdGlvbi4KICAgICB2b2lkIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKCk7CkBAIC0xMzUs
NiArMTQwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRFeHRyYUhUVFBIZWFkZXJz
KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mKTsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCk7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgcmVwbGF5WEhSKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQp
OworCiAgICAgdmlydHVhbCB2b2lkIGNhbkNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKiwg
Ym9vbCopOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyop
OwogICAgIHZpcnR1YWwgdm9pZCBjYW5DbGVhckJyb3dzZXJDb29raWVzKEVycm9yU3RyaW5nKiwg
Ym9vbCopOwpAQCAtMTUzLDYgKzE2MCwxMCBAQCBwcml2YXRlOgogICAgIE93blB0cjxOZXR3b3Jr
UmVzb3VyY2VzRGF0YT4gbV9yZXNvdXJjZXNEYXRhOwogICAgIGJvb2wgbV9sb2FkaW5nWEhSU3lu
Y2hyb25vdXNseTsKIAorICAgIFJlZlB0cjxYSFJSZXBsYXlEYXRhPiBtX3hockRhdGE7CisgICAg
dW5zaWduZWQgbG9uZyBtX3ByZWZsaWdodFJlcXVlc3RJZDsKKyAgICBTdHJpbmcgbV9vcmlnaW5h
bFJlcXVlc3RJZDsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtX3ByZWZsaWdodElkVG9S
ZXF1ZXN0SWQ7CiAgICAgLy8gRklYTUU6IEluc3BlY3RvclJlc291cmNlQWdlbnQgc2hvdWxkIG5v
dyBiZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1bGF0aW9uLgogICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6TmV0d29yazo6SW5pdGlhdG9yPiBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvcjsKICAg
ICBib29sIG1faXNSZWNhbGN1bGF0aW5nU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAppbmRleCBlMDVkMTNkZWNiMzgxOGZjZjFi
YjgzMzI4MzU5ZGVhZmIyOTVkZmFjLi4wY2JjOWQyYjBiNWI4NmEwN2QyYTY1M2MyZjNmYzY4YzBh
OWI2NzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5jcHAKQEAgLTQ2LDYgKzQ2LDIxIEBAIHN0YXRpYyBzaXplX3QgbWF4aW11bVNpbmds
ZVJlc291cmNlQ29udGVudFNpemUgPSAxMCAqIDEwMDAgKiAxMDAwOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK1Bhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gWEhSUmVwbGF5RGF0YTo6Y3JlYXRl
KGNvbnN0IFN0cmluZyAmbWV0aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBm
b3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVu
dGlhbHMsIGNvbnN0IFN0cmluZyAmbG9naW4sIGNvbnN0IFN0cmluZyAmcGFzc3dvcmQpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYSFJSZXBsYXlEYXRhKG1ldGhvZCwgYXN5bmMsIGZvcm1E
YXRhLCBoZWFkZXJzLCBpbmNsdWRlQ3JlZGVudGlhbHMsIGxvZ2luLCBwYXNzd29yZCkpOworfQor
CitYSFJSZXBsYXlEYXRhOjpYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBib29s
IGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1h
cCAmaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyAmbG9naW4s
IGNvbnN0IFN0cmluZyAmcGFzc3dvcmQpCisgICAgOiBtX21ldGhvZChtZXRob2QpCisgICAgLCBt
X2FzeW5jKGFzeW5jKQorICAgICwgbV9mb3JtRGF0YShmb3JtRGF0YSkKKyAgICAsIG1faGVhZGVy
cyhoZWFkZXJzKQorICAgICwgbV9pbmNsdWRlQ3JlZGVudGlhbHMoaW5jbHVkZUNyZWRlbnRpYWxz
KQorICAgICwgbV9sb2dpbihsb2dpbikKKyAgICAsIG1fcGFzc3dvcmQocGFzc3dvcmQpCit7Cit9
CiAKIC8vIFJlc291cmNlRGF0YQogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6
UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGxvYWRl
cklkKQpAQCAtMjUzLDYgKzI2OCwxNiBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZGF0YShjb25zdCBTdHJpbgogICAgIHJl
dHVybiBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOwogfQogCitQ
YXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjp4aHJSZXBsYXlE
YXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQoreworICAgIHJldHVybiBtX3JlcXVlc3RJZFRv
UmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpLT5YSFJEYXRhKCk7Cit9CisKK3ZvaWQgTmV0
d29ya1Jlc291cmNlc0RhdGE6OnNldFhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIFBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4geGhyRGF0YSkKK3sKKyAgICBtX3JlcXVlc3RJ
ZFRvUmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpLT5zZXRYSFJSZXBsYXlEYXRhKHhockRh
dGEpOworfQorCiBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVtb3ZlQ2Fj
aGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQogewogICAgIFZlY3Rv
cjxTdHJpbmc+IHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmgKaW5kZXggOGRmZDVkZDBkYmIyMTFhMGM0OTJlYTZmMWZkM2E0OGU5MDc3
MWVjOC4uZDFhZDQ0OTc2NjIyNDk1NGFjZjg3OTQ5YmJlNWU2OGY3ZjZkZTRiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTQ2LDYg
KzQ2LDI3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xh
c3MgVGV4dFJlc291cmNlRGVjb2RlcjsKIAorY2xhc3MgWEhSUmVwbGF5RGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPFhIUlJlcGxheURhdGE+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxYSFJSZXBsYXlEYXRhPiBjcmVhdGUoY29uc3QgU3RyaW5nICZtZXRob2QsIGJvb2wgYXN5bmMs
IFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwICZoZWFkZXJzLCBib29s
IGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3RyaW5nICZsb2dpbiwgY29uc3QgU3RyaW5nICZw
YXNzd29yZCk7CisgICAgY29uc3QgU3RyaW5nJiBtZXRob2QoKSBjb25zdCB7IHJldHVybiBtX21l
dGhvZDsgfQorICAgIGJvb2wgYXN5bmMoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jOyB9CisgICAg
UGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1EYXRh
OyB9CisgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1f
aGVhZGVyczsgfQorICAgIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKCkgY29uc3QgeyByZXR1cm4g
bV9pbmNsdWRlQ3JlZGVudGlhbHM7IH0KKyAgICBjb25zdCBTdHJpbmcmIGxvZ2luKCkgY29uc3Qg
eyByZXR1cm4gbV9sb2dpbjsgfQorICAgIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQoKSBjb25zdCB7
IHJldHVybiBtX3Bhc3N3b3JkOyB9Citwcml2YXRlOgorICAgIFhIUlJlcGxheURhdGEoY29uc3Qg
U3RyaW5nICZtZXRob2QsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBjb25zdCBI
VFRQSGVhZGVyTWFwJiBoZWFkZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscywgY29uc3QgU3Ry
aW5nICZsb2dpbiwgY29uc3QgU3RyaW5nICZwYXNzd29yZCk7CisgICAgU3RyaW5nIG1fbWV0aG9k
OworICAgIGJvb2wgbV9hc3luYzsKKyAgICBSZWZQdHI8Rm9ybURhdGE+IG1fZm9ybURhdGE7Cisg
ICAgSFRUUEhlYWRlck1hcCBtX2hlYWRlcnM7CisgICAgYm9vbCBtX2luY2x1ZGVDcmVkZW50aWFs
czsKKyAgICBTdHJpbmcgbV9sb2dpbjsKKyAgICBTdHJpbmcgbV9wYXNzd29yZDsKK307CisKIGNs
YXNzIE5ldHdvcmtSZXNvdXJjZXNEYXRhIHsKIHB1YmxpYzoKICAgICBjbGFzcyBSZXNvdXJjZURh
dGEgewpAQCAtOTAsNiArMTExLDggQEAgcHVibGljOgogICAgICAgICBDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlOyB9CiAgICAg
ICAgIHZvaWQgc2V0Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
KSB7IG1fY2FjaGVkUmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZTsgfQogCisgICAgICAgIFBhc3NS
ZWZQdHI8WEhSUmVwbGF5RGF0YT4gWEhSRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1feGhyUmVwbGF5
RGF0YTsgfQorICAgICAgICB2b2lkIHNldFhIUlJlcGxheURhdGEoUGFzc1JlZlB0cjxYSFJSZXBs
YXlEYXRhPiB4aHJEYXRhKSB7IG1feGhyUmVwbGF5RGF0YSA9IHhockRhdGE7IH0KICAgICBwcml2
YXRlOgogICAgICAgICBib29sIGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7
IH0KICAgICAgICAgc2l6ZV90IGRhdGFMZW5ndGgoKSBjb25zdDsKQEAgLTEwMSw2ICsxMjQsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX2ZyYW1lSWQ7CiAgICAgICAgIFN0cmluZyBtX3Vy
bDsKICAgICAgICAgU3RyaW5nIG1fY29udGVudDsKKyAgICAgICAgUmVmUHRyPFhIUlJlcGxheURh
dGE+IG1feGhyUmVwbGF5RGF0YTsKICAgICAgICAgYm9vbCBtX2Jhc2U2NEVuY29kZWQ7CiAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKICAgICAgICAgYm9vbCBtX2lz
Q29udGVudFB1cmdlZDsKQEAgLTEzMiw2ICsxNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
cihjb25zdCBTdHJpbmcmIHByZXNlcnZlZExvYWRlcklkID0gU3RyaW5nKCkpOwogCiAgICAgdm9p
ZCBzZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0cyhzaXplX3QgbWF4aW11bVJlc291cmNlc0NvbnRl
bnRTaXplLCBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOworICAgIHZv
aWQgc2V0WEhSUmVwbGF5RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUGFzc1JlZlB0cjxY
SFJSZXBsYXlEYXRhPik7CisgICAgUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRhPiB4aHJSZXBsYXlE
YXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVuc3Vy
ZU5vRGF0YUZvclJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCmluZGV4IDVj
ODBhYzE3ODIwOGU1YjIwOTM5N2Y2MDk3NWFjNzA0NzBiNzA2NzYuLmM3YjkwMDYzMjE3YzBiYmI0
OTAxODhhYzg2MmI4N2ZiODQzZWQ0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBAIC05NjIsOCArOTYyLDIxIEBAIFdlYklu
c3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9j
YW5DbGVhckJyb3dzZXJDb29raWVzKQogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRl
bShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVjdG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRs
ZXMoKSA/ICJDbGVhciBicm93c2VyIGNvb2tpZXMiIDogIkNsZWFyIEJyb3dzZXIgQ29va2llcyIp
LCB0aGlzLl9jbGVhckJyb3dzZXJDb29raWVzLmJpbmQodGhpcykpOwogCisKKyAgICAgICAgaWYg
KHJlcXVlc3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuWEhSKSB7CisgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXBsYXkgWEhSIiksIHRo
aXMuX3JlcGxheVhIUi5iaW5kKHRoaXMsIHJlcXVlc3QucmVxdWVzdElkKSk7CisgICAgICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGNv
bnRleHRNZW51LnNob3coZXZlbnQpOwogICAgIH0sCisgICAgCisgICAgX3JlcGxheVhIUjogZnVu
Y3Rpb24ocmVxdWVzdElkKQorICAgIHsKKyAgICAgICAgTmV0d29ya0FnZW50LnJlcGxheVhIUihy
ZXF1ZXN0SWQpOworICAgIH0sCisgICAgCiAKICAgICBfY29weUFsbDogZnVuY3Rpb24oKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggYTBjNjQ4OWNiMDYzOTA5MGFkOTUzOWQ4NGI0ZTJlMDllZjQ1YzZiYi4uZmEx
YjRkNTM0ZTE5ZjBlOTNkNDA0YWFiZjQ0MmM4MjlhMjFmZDFmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTI0Niw3ICsy
NDYsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29ucwogICAgIEFTU0VSVChtX2NsaWVudCk7CiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlm
aWVyKSB7CisgICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgJiYgbV9hc3luYykg
ewogICAgICAgICBEb2N1bWVudExvYWRlciogbG9hZGVyID0gbV9kb2N1bWVudC0+ZnJhbWUoKS0+
bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCk7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZl
UmVzb3VyY2VSZXNwb25zZShtX2RvY3VtZW50LT5mcmFtZSgpLCBtX3ByZWZsaWdodFJlcXVlc3RJ
ZGVudGlmaWVyLCByZXNwb25zZSk7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29va2llLCBtX3ByZWZsaWdodFJlcXVlc3RJZGVu
dGlmaWVyLCBsb2FkZXIsIHJlc3BvbnNlLCAwKTsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSwgY29uc3QgY2hhcgogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09
IG1fcmVzb3VyY2UpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAobV9wcmVmbGln
aHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmll
ciAmJiBtX2FzeW5jKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVEYXRhKG1fZG9jdW1lbnQtPmZyYW1lKCksIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIs
IDAsIDAsIGRhdGFMZW5ndGgpOwogI2VuZGlmCiAKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlKQogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSkKIHsKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAg
IGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyICYmIG1fYXN5bmMpCiAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoTG9hZGluZyhtX2RvY3VtZW50LT5mcmFt
ZSgpLCBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSwgbV9w
cmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgZmluaXNoVGltZSk7CiAjZW5kaWYKIApAQCAtMzMw
LDcgKzMzMCw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlCiB2b2lkIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQor
ICAgIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyICYmIG1fYXN5bmMpCiAgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbExvYWRpbmcobV9kb2N1bWVudC0+ZnJh
bWUoKSwgbV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIG1f
cHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIsIGVycm9yKTsKICNlbmRpZgogCkBAIC0zODIsNyAr
MzgyLDkgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICAgICAgICAgICAgIG1fcHJlZmxpZ2h0
UmVxdWVzdElkZW50aWZpZXIgPSBtX2RvY3VtZW50LT5mcmFtZSgpLT5wYWdlKCktPnByb2dyZXNz
KCktPmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKICAgICAgICAgICAgIFJlc291cmNlUmVzcG9u
c2UgcmVkaXJlY3RSZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKICAgICAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0KG1fZG9jdW1lbnQtPmZyYW1l
KCksIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIsIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxv
YWRlcigpLT5kb2N1bWVudExvYWRlcigpLCBuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsK
LSAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZp
ZXIpCisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnByZWZsaWdodFJlcXVl
c3RTdWNjZWRlZChtX2RvY3VtZW50LCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKTsKKwog
I2VuZGlmCiAgICAgICAgIEFTU0VSVCghbV9yZXNvdXJjZSk7CiAgICAgICAgIG1fcmVzb3VyY2Ug
PSBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0UmF3UmVzb3VyY2Uo
bmV3UmVxdWVzdCwgb3B0aW9ucyk7CkBAIC0zOTksNiArNDAxLDEzIEBAIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFNlY3VyCiAgICAgaWYgKG1fZG9jdW1lbnQtPmZyYW1lKCkpCiAgICAgICAgIGlkZW50aWZp
ZXIgPSBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShyZXF1ZXN0LCBtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscywgZXJyb3IsIHJlc3BvbnNl
LCBkYXRhKTsKIAorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKG1fYWN0dWFsUmVxdWVz
dCkKKyAgICAgICAgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciA9IGlkZW50aWZpZXI7Cisg
ICAgZWxzZSBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQobV9kb2N1bWVudCwg
bV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcik7CisjZW5kaWYKKwogICAgIC8vIE5vIGV4Y2Vw
dGlvbiBmb3IgZmlsZTovLy8gcmVzb3VyY2VzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5NjIyOTg+
LgogICAgIC8vIEFsc28sIGlmIHdlIGhhdmUgYW4gSFRUUCByZXNwb25zZSwgdGhlbiBpdCB3YXNu
J3QgYSBuZXR3b3JrIGVycm9yIGluIGZhY3QuCiAgICAgaWYgKCFlcnJvci5pc051bGwoKSAmJiAh
cmVxdWVzdFVSTC5pc0xvY2FsRmlsZSgpICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPD0g
MCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggMTExYTY0OWExM2U3
NmFlZjgzNzBiMTgyYzk1MWNhOWU3NWNmYjIyZS4uZjU3MmNkZDZlY2Q4ZDhmNjZkYzAzMWI2Mjc4
YjhlZDQ2M2Y4ODA3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC02
ODQsNiArNjg0LDEzIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmRCeXRlc0RhdGEoY29uc3Qg
dm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRXhjZXB0aW9uQ29kCiAgICAgY3JlYXRlUmVxdWVz
dChlYyk7CiB9CiAKK3ZvaWQgWE1MSHR0cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKFBhc3NS
ZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBtX3Jl
cXVlc3RFbnRpdHlCb2R5ID0gZm9ybURhdGEgPyBmb3JtRGF0YS0+ZGVlcENvcHkoKSA6IEZvcm1E
YXRhOjpjcmVhdGUoKTsKKyAgICBjcmVhdGVSZXF1ZXN0KGVjKTsKKyAgICBtX2V4Y2VwdGlvbkNv
ZGUgPSBlYzsKK30KKwogdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRp
b25Db2RlJiBlYykKIHsKICNpZiBFTkFCTEUoQkxPQikKQEAgLTcxOCw2ICs3MjUsOCBAQCB2b2lk
IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJl
cXVlc3Quc2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzWEhSKTsKICNlbmRp
ZgogCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVYSFJSZXF1ZXN0KHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9tZXRob2QsIG1fYXN5bmMsIG1fcmVxdWVzdEVudGl0
eUJvZHkgPyBtX3JlcXVlc3RFbnRpdHlCb2R5LT5kZWVwQ29weSgpIDogMCwgbV9yZXF1ZXN0SGVh
ZGVycywgbV9pbmNsdWRlQ3JlZGVudGlhbHMsIG1fdXJsLnVzZXIoKSwgbV91cmwucGFzcygpKTsK
KwogICAgIGlmIChtX3JlcXVlc3RFbnRpdHlCb2R5KSB7CiAgICAgICAgIEFTU0VSVChtX21ldGhv
ZCAhPSAiR0VUIik7CiAgICAgICAgIEFTU0VSVChtX21ldGhvZCAhPSAiSEVBRCIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA2MDY0MjhiNzZjNzE2NDBjZDBjODE3YzMxOGU5
ODVjYWIyZmY0ODJjLi5jYzZjYmM1MGMzNjAxNjUwODllMjY1OTk3NWNkMTBkMzExMjJlZjVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHB1Ymxp
YzoKICAgICBCbG9iKiByZXNwb25zZUJsb2IoRXhjZXB0aW9uQ29kZSYpOwogICAgIEJsb2IqIG9w
dGlvbmFsUmVzcG9uc2VCbG9iKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZUJsb2IuZ2V0KCk7
IH0KIAorICAgIHZvaWQgc2VuZEZyb21JbnNwZWN0b3IoUGFzc1JlZlB0cjxGb3JtRGF0YT4sIEV4
Y2VwdGlvbkNvZGUmKTsKKwogICAgIC8vIEV4cG9zZSBIVFRQIHZhbGlkYXRpb24gbWV0aG9kcyBm
b3Igb3RoZXIgdW50cnVzdGVkIHJlcXVlc3RzLgogICAgIHN0YXRpYyBib29sIGlzQWxsb3dlZEhU
VFBNZXRob2QoY29uc3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFN0cmluZyB1cHBlcmNhc2VLbm93
bkhUVFBNZXRob2QoY29uc3QgU3RyaW5nJik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161707</attachid>
            <date>2012-08-31 08:35:28 -0700</date>
            <delta_ts>2012-09-13 10:32:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120831193514.patch</filename>
            <type>text/plain</type>
            <size>32324</size>
            <attacher name="Pavel Chadnov">chadnov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2Nzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTBjNWNjOGM2NWQxZGE3
ODJiODkzZmFjZDU3YmM5ZmNjYjc3ZTg4OC4uZjE0NzhhZThiYzk1ZDU1NzdlN2FkYzBhMGFiMjk4
MzYxZDQ4Mzc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAxMi0wOC0zMSAgUGF2
ZWwgQ2hhZG5vdiAgPGNoYWRub3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBYSFIgcmVwbGF5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NTE4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIFhIUiByZXBsYXkgaW4gbmV0d29yayB0YWIuIEFsbCBYSFIgcGFyYW1ldGVycyAo
bWV0aG9kLCBhc3luYywgYm9keSwgaGVhZGVycywgd2l0aENyZWRlbnRpYWxzLCBsb2dpbiwgcGFz
c3dvcmQpIGFyZSBzYXZlZCBpbiBYSFJSZXBsYXlEYXRhIHN0cnVjdCBhbmQgaXMgcmVzdG9yZWQg
ZnJvbSBpdCB3aGVuIHJlcGxheWluZy4KKyAgICAgICAgCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVhIUlJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkSW1w
bCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAg
ICAgICAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxp
Z2h0UmVxdWVzdFN1Y2NlZGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpk
aWRDcmVhdGVYSFJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlhIUlJlcGxheURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnhoclJlcGxheURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFhIUlJlcGxheURhdGEpOgorICAgICAgICAq
IGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoWEhSUmVwbGF5RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpYSFJSZXBsYXlEYXRhOjptZXRob2QpOgorICAgICAgICAo
V2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6YXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6WEhSUmVw
bGF5RGF0YTo6Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6aGVh
ZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpYSFJSZXBsYXlEYXRhOjppbmNsdWRlQ3JlZGVudGlh
bHMpOgorICAgICAgICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6bG9naW4pOgorICAgICAgICAo
V2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6cGFzc3dvcmQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpYSFJE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGE6OnNldFhIUlJlcGxheURhdGEpOgorICAgICAgICAoUmVzb3VyY2VEYXRhKToKKyAgICAgICAg
KE5ldHdvcmtSZXNvdXJjZXNEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05l
dHdvcmtQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90
b3R5cGUuX2NvbnRleHRNZW51KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmll
dy5wcm90b3R5cGUuX3JlcGxheVhIUik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIHhtbC9YTUxIdHRw
UmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2VuZEZyb21J
bnNwZWN0b3IpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVxdWVzdCk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6
CisgICAgICAgIChYTUxIdHRwUmVxdWVzdCk6CisKKzIwMTItMDgtMzEgIFBhdmVsIENoYWRub3Yg
IDxjaGFkbm92QGdvb2dsZS5jb20+CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENyZWF0ZVhIUlJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkSW1wbCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1
Y2NlZGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVYSFJS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCk6CisgICAgICAgICogaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhIUlJl
cGxheURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlhIUlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OnhoclJlcGxheURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1Jlc291cmNlc0RhdGE6OnNldFhIUlJlcGxheURhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9O
ZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoWEhSUmVwbGF5RGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpYSFJSZXBsYXlEYXRhOjptZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6WEhS
UmVwbGF5RGF0YTo6YXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6Zm9y
bURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6aGVhZGVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpYSFJSZXBsYXlEYXRhOjppbmNsdWRlQ3JlZGVudGlhbHMpOgorICAgICAg
ICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6bG9naW4pOgorICAgICAgICAoV2ViQ29yZTo6WEhS
UmVwbGF5RGF0YTo6cGFzc3dvcmQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpYSFJEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldFhIUlJl
cGxheURhdGEpOgorICAgICAgICAoUmVzb3VyY2VEYXRhKToKKyAgICAgICAgKE5ldHdvcmtSZXNv
dXJjZXNEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUuX2NvbnRl
eHRNZW51KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUu
X3JlcGxheVhIUik6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmRhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpkaWRGYWlsKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2VuZEZyb21JbnNwZWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3Jl
YXRlUmVxdWVzdCk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgIChY
TUxIdHRwUmVxdWVzdCk6CisgICAgICAgIAogMjAxMi0wOC0yNyAgSnVzdGluIE5vdm9zYWQgIDxq
dW5vdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBGaXhpbmcgaW5maW5pdGUg
cmVjdXJzaW9uIGluIENhbnZhczJETGF5ZXJNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KaW5kZXggZGFlMzY4OTQ4ZTk3MWVlNjFiOTdkNWRkODY2NTJkYzhmYjM5
ODk1OC4uZWZlMmM0YmM2MTNlYjA5ZWU1OWM1MTYzNDFhMjRjYzBjMGM1ODAzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtODc0LDYgKzg3NCwxNCBAQAogICAg
ICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgIm5hbWUiOiAicmVwbGF5WEhSIiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiUmVwbGF5cyBYSFIuIFRoZSBuZXcgWEhSIGlzIGlkZW50aWNhbCB0byB0aGUgb3JpZ2luYWwg
b25lIChwYXJhbWV0ZXJzIG1ldGhvZCwgYXN5bmMsIGJvZHksIGhlYWRlcnMsIHdpdGhDcmVkZW50
aWFscywgbG9naW4sIHBhc3N3b3JkIGFyZSBjb3BpZWQpIiwKKyAgICAgICAgICAgICAgICAicGFy
YW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXF1ZXN0SWQiLCAi
JHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiBYSFIgdG8g
cmVwbGF5LiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImhpZGRlbiI6
IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5h
bWUiOiAiY2FuQ2xlYXJCcm93c2VyQ2FjaGUiLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJUZWxscyB3aGV0aGVyIGNsZWFyaW5nIGJyb3dzZXIgY2FjaGUgaXMgc3VwcG9ydGVkLiIs
CiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGFmNDQ3MjhjNjQ2
MTAwOGJhZjM5NDdmM2RiNjk3ZjYyNGZhNmM2ZTcuLmM3OTZjYjZjZDJiOWI2NTdiMWFmYzVkMTYy
NTY2NWIyYjk4NmUyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zMzAsNiArMzMwLDE4IEBAIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENoYW5nZVhIUlJlYWR5
U3RhdGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVhI
UlJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnN0IFN0cmluZyYgbWV0aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3Jt
RGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlh
bHMsIGNvbnN0IFN0cmluZyYgbG9naW4sIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCit7CisgICAg
aWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgICAgIHJlc291cmNlQWdlbnQt
PmRpZENyZWF0ZVhIUlJlcXVlc3QobWV0aG9kLCBhc3luYywgZm9ybURhdGEsIGhlYWRlcnMsIGlu
Y2x1ZGVDcmVkZW50aWFscywgbG9naW4sIHBhc3N3b3JkKTsKK30KKwordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9uZyBpZCkKK3sKKyAgICBp
ZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+
cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKGlkKTsKK30KKwogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEV2ZW50JiBl
dmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxFdmVudENv
bnRleHQ+JiBhbmNlc3RvcnMsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBpbnQgdGltZWxp
bmVBZ2VudElkID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBkYjMzNWJmYWY0NTBjYzMxOGNiY2U0ZGY2MTgxMTI3
ZGQyNTRmNWM4Li5lZjBjMzYxZmFlYWQ2Yzg5NGJiZWE2ZWIxNmZmNTk3ZDk2ZDg2MjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oCkBAIC0xNjEsNiArMTYxLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdpbGxQcm9j
ZXNzVGFzayhQYWdlKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHJvY2Vzc1Rhc2soUGFnZSopOwog
CisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlWEhSUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGNvbnN0IEhU
VFBIZWFkZXJNYXAmLCBib29sLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBz
dGF0aWMgdm9pZCBwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIHVuc2lnbmVkIGxvbmcpOworCiAgICAgc3RhdGljIHZvaWQgYXBwbHlVc2VyQWdlbnRPdmVy
cmlkZShGcmFtZSosIFN0cmluZyopOwogICAgIHN0YXRpYyB2b2lkIGFwcGx5U2NyZWVuV2lkdGhP
dmVycmlkZShGcmFtZSosIGxvbmcqKTsKICAgICBzdGF0aWMgdm9pZCBhcHBseVNjcmVlbkhlaWdo
dE92ZXJyaWRlKEZyYW1lKiwgbG9uZyopOwpAQCAtMzM2LDYgKzMzOSw4IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIHZvaWQgZGlkUHJvY2Vzc1J1bGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQcm9jZXNzVGFza0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyopOwogICAgIHN0YXRpYyB2b2lkIGRpZFByb2Nlc3NUYXNrSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlWEhSUmVxdWVz
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFN0cmluZyYsIGJvb2wsIFBhc3NSZWZQ
dHI8Rm9ybURhdGE+LCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgYm9vbCwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHZvaWQgcHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyk7CiAKICAgICBzdGF0aWMg
dm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgU3Ry
aW5nKik7CiAgICAgc3RhdGljIHZvaWQgYXBwbHlTY3JlZW5XaWR0aE92ZXJyaWRlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgbG9uZyopOwpAQCAtMTE2MSw2ICsxMTY2LDIyIEBAIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRlCiAjZW5kaWYKIH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDcmVhdGVYSFJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1E
YXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRl
Q3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbG9naW4sIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQp
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRl
eHQpKQorICAgICAgICBkaWRDcmVhdGVYSFJSZXF1ZXN0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRz
LCBtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNyZWRlbnRpYWxzLCBs
b2dpbiwgcGFzc3dvcmQpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6cHJlZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikK
KyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICBwcmVmbGlnaHRSZXF1
ZXN0U3VjY2VkZWRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlkKTsKKyNlbmRpZgorfQorCiBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSU3luY2hyb25v
dXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKaW5kZXggOWQ5MjljOWExMGJlZDM0YzI5YzI4OTQ4MWFiMGE0YTVhNjI4Njkx
NC4uMTI5ZGZiNjM1ZjA0YzEwZTBmYzBiMGVlNTdjMzQ5MzY1Y2IzNTRiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAt
NjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSAiV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlLmgiCisjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKIAogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KQEAgLTIwMywxMyArMjA0
LDM5IEBAIEluc3BlY3RvclJlc291cmNlQWdlbnQ6On5JbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkK
ICAgICBBU1NFUlQoIW1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dCgpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRDcmVhdGVYSFJSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgbWV0aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRh
PiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3Jl
ZGVudGlhbHMsIGNvbnN0IFN0cmluZyYgbG9naW4sIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCit7
CisgICAgaWYgKCFtX29yaWdpbmFsUmVxdWVzdElkLmlzRW1wdHkoKSkKKyAgICAgICAgbV94aHJE
YXRhID0gbV9yZXNvdXJjZXNEYXRhLT54aHJSZXBsYXlEYXRhKG1fb3JpZ2luYWxSZXF1ZXN0SWQp
OworICAgIGVsc2UgeworICAgICAgICBIVFRQSGVhZGVyTWFwIGhlYWRlck1hcDsKKyAgICAgICAg
SFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaGVhZGVycy5lbmQoKTsKKyAgICAg
ICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4o
KTsgaXQhPSBlbmQ7ICsraXQpCisgICAgICAgICAgICBoZWFkZXJNYXAuYWRkKGl0LT5maXJzdCwg
aXQtPnNlY29uZCk7CisgICAgICAgIG1feGhyRGF0YSA9IFhIUlJlcGxheURhdGE6OmNyZWF0ZSht
ZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVyTWFwLCBpbmNsdWRlQ3JlZGVudGlhbHMsIGxv
Z2luLCBwYXNzd29yZCk7CisgICAgfQorfQorCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OnByZWZsaWdodFJlcXVlc3RTdWNjZWRlZCh1bnNpZ25lZCBsb25nIGlkKQoreworICAgIG1fcHJl
ZmxpZ2h0UmVxdWVzdElkID0gaWQ7Cit9CisKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVy
c0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKTsKICAgICBtX3Jlc291cmNlc0RhdGEtPnJl
c291cmNlQ3JlYXRlZChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5sb2FkZXJJZChsb2FkZXIpKTsK
IAotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBtX3N0YXRlLT5nZXRPYmpl
Y3QoUmVzb3VyY2VBZ2VudFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzKTsKKyAgICBpZiAobV94
aHJEYXRhKSB7CisgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0WEhSUmVwbGF5RGF0YShyZXF1
ZXN0SWQsIG1feGhyRGF0YSk7CisgICAgICAgIG1feGhyRGF0YSA9IG51bGxwdHI7CisgICAgfSBl
bHNlIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZCkgeworICAgICAgICBtX3Jlc291cmNlc0RhdGEt
PnNldFhIUlJlcGxheURhdGEocmVxdWVzdElkLCBtX3Jlc291cmNlc0RhdGEtPnhoclJlcGxheURh
dGEoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQobV9wcmVmbGlnaHRSZXF1ZXN0SWQpKSk7
CisgICAgICAgIG1fcHJlZmxpZ2h0UmVxdWVzdElkID0gMDsKKyAgICB9CisKIAorICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGhlYWRlcnMgPSBtX3N0YXRlLT5nZXRPYmplY3QoUmVzb3VyY2VB
Z2VudFN0YXRlOjpleHRyYVJlcXVlc3RIZWFkZXJzKTsKICAgICBpZiAoaGVhZGVycykgewogICAg
ICAgICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMtPmVuZCgp
OwogICAgICAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFk
ZXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKQEAgLTU3MCw2ICs1OTcsMjMgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHIKICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gZGF0YSBmb3VuZCBm
b3IgcmVzb3VyY2Ugd2l0aCBnaXZlbiBpZGVudGlmaWVyIjsKIH0KIAordm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCkKK3sKKyAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhociA9IFhNTEh0dHBSZXF1ZXN0
OjpjcmVhdGUobV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKKyAgICBFeGNl
cHRpb25Db2RlIGNvZGU7CisgICAgU3RyaW5nIGFjdHVhbFJlcXVlc3RJZCA9IHJlcXVlc3RJZDsK
KworICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHJlc291cmNl
RGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+ZGF0YShhY3R1YWxSZXF1ZXN0SWQpOworICAgIFJlZlB0
cjxYSFJSZXBsYXlEYXRhPiB4aHJEYXRhID0gbV9yZXNvdXJjZXNEYXRhLT54aHJSZXBsYXlEYXRh
KGFjdHVhbFJlcXVlc3RJZCk7CisgICAgbV9vcmlnaW5hbFJlcXVlc3RJZCA9IHJlcXVlc3RJZDsK
KyAgICB4aHItPm9wZW4oeGhyRGF0YS0+bWV0aG9kKCksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBy
ZXNvdXJjZURhdGEtPnVybCgpKSwgeGhyRGF0YS0+YXN5bmMoKSwgY29kZSk7CisgICAgSFRUUEhl
YWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0geGhyRGF0YS0+aGVhZGVycygpLmVuZCgpOwor
ICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB4aHJEYXRhLT5oZWFk
ZXJzKCkuYmVnaW4oKTsgaXQhPSBlbmQ7ICsraXQpCisgICAgICAgIHhoci0+c2V0UmVxdWVzdEhl
YWRlcihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQsIGNvZGUpOworICAgIHhoci0+c2VuZEZyb21JbnNw
ZWN0b3IoeGhyRGF0YS0+Zm9ybURhdGEoKSwgY29kZSk7CisgICAgbV9vcmlnaW5hbFJlcXVlc3RJ
ZCA9IFN0cmluZygpOworfQorCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmNhbkNsZWFy
QnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKiwgYm9vbCogcmVzdWx0KQogewogICAgICpyZXN1bHQg
PSBtX2NsaWVudC0+Y2FuQ2xlYXJCcm93c2VyQ2FjaGUoKTsKQEAgLTYxMiw2ICs2NTYsOSBAQCBJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbgogICAgICwgbV9mcm9udGVuZCgwKQogICAgICwgbV9yZXNv
dXJjZXNEYXRhKGFkb3B0UHRyKG5ldyBOZXR3b3JrUmVzb3VyY2VzRGF0YSgpKSkKICAgICAsIG1f
bG9hZGluZ1hIUlN5bmNocm9ub3VzbHkoZmFsc2UpCisgICAgLCBtX3hockRhdGEoMCkKKyAgICAs
IG1fcHJlZmxpZ2h0UmVxdWVzdElkKDApCisgICAgLCBtX3ByZWZsaWdodElkVG9SZXF1ZXN0SWQo
KQogICAgICwgbV9pc1JlY2FsY3VsYXRpbmdTdHlsZShmYWxzZSkKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IDVjOWZi
ZTI2MmU2ZTBmYmFjYTczOWFhODJhNmZiMzU2OTU5NTIzNGQuLjc0OTkxMzg4NmRiYTA4MmMzMDIz
NTQ1ODc3NjhlM2EzZmI4ZDI4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNTAsNyArNTAsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRG9j
dW1lbnRMb2FkZXI7CitjbGFzcyBGb3JtRGF0YTsKIGNsYXNzIEZyYW1lOworY2xhc3MgSFRUUEhl
YWRlck1hcDsKIGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50Owog
Y2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CkBAIC02Niw2ICs2OCw3IEBAIGNsYXNzIFJlc291cmNl
TG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFhIUlJlcGxheURhdGE7CiAKICNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCiBzdHJ1Y3QgV2ViU29ja2V0RnJhbWU7CkBAIC0xMDcsNiArMTEwLDggQEAg
cHVibGljOgogICAgIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSopOwogCiAgICAgdm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlKFN0cmluZyogdXNlckFnZW50
KTsKKyAgICB2b2lkIGRpZENyZWF0ZVhIUlJlcXVlc3QoY29uc3QgU3RyaW5nJiBtZXRob2QsIGJv
b2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGJvZHksIGNvbnN0IEhUVFBIZWFkZXJNYXAm
IGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZW5kZW50aWFscywgY29uc3QgU3RyaW5nJiBsb2dpbiwg
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCk7CisgICAgdm9pZCBwcmVmbGlnaHRSZXF1ZXN0U3VjY2Vk
ZWQodW5zaWduZWQgbG9uZyBpZCk7CiAKICAgICAvLyBGSVhNRTogSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24uCiAgICAgdm9p
ZCB3aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwpAQCAtMTM1LDYgKzE0MCw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyosIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldFJlc3BvbnNlQm9k
eShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJpbmcqIGNvbnRlbnQs
IGJvb2wqIGJhc2U2NEVuY29kZWQpOwogCisgICAgdmlydHVhbCB2b2lkIHJlcGxheVhIUihFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKKwogICAgIHZpcnR1YWwgdm9pZCBj
YW5DbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyosIGJvb2wqKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Q2xlYXJCcm93c2VyQ29va2llcyhFcnJvclN0cmluZyosIGJvb2wqKTsKQEAgLTE1Myw2ICsxNjAs
MTAgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8TmV0d29ya1Jlc291cmNlc0RhdGE+IG1fcmVzb3Vy
Y2VzRGF0YTsKICAgICBib29sIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHk7CiAKKyAgICBSZWZQ
dHI8WEhSUmVwbGF5RGF0YT4gbV94aHJEYXRhOworICAgIHVuc2lnbmVkIGxvbmcgbV9wcmVmbGln
aHRSZXF1ZXN0SWQ7CisgICAgU3RyaW5nIG1fb3JpZ2luYWxSZXF1ZXN0SWQ7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gbV9wcmVmbGlnaHRJZFRvUmVxdWVzdElkOwogICAgIC8vIEZJWE1F
OiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50IHNob3VsZCBub3cgYmUgYXdhcmUgb2Ygc3R5bGUgcmVj
YWxjdWxhdGlvbi4KICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4g
bV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3I7CiAgICAgYm9vbCBtX2lzUmVjYWxjdWxhdGlu
Z1N0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAKaW5kZXggZTA1ZDEzZGVjYjM4MThmY2YxYmI4MzMyODM1OWRlYWZiMjk1ZGZhYy4u
MGNiYzlkMmIwYjViODZhMDdkMmE2NTNjMmYzZmM2OGMwYTliNjcwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC00Niw2ICs0
NiwyMSBAQCBzdGF0aWMgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplID0g
MTAgKiAxMDAwICogMTAwMDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitQYXNzUmVmUHRyPFhI
UlJlcGxheURhdGE+IFhIUlJlcGxheURhdGE6OmNyZWF0ZShjb25zdCBTdHJpbmcgJm1ldGhvZCwg
Ym9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcgJmxv
Z2luLCBjb25zdCBTdHJpbmcgJnBhc3N3b3JkKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
WEhSUmVwbGF5RGF0YShtZXRob2QsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVkZUNy
ZWRlbnRpYWxzLCBsb2dpbiwgcGFzc3dvcmQpKTsKK30KKworWEhSUmVwbGF5RGF0YTo6WEhSUmVw
bGF5RGF0YShjb25zdCBTdHJpbmcgJm1ldGhvZCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAgJmhlYWRlcnMsIGJvb2wgaW5jbHVk
ZUNyZWRlbnRpYWxzLCBjb25zdCBTdHJpbmcgJmxvZ2luLCBjb25zdCBTdHJpbmcgJnBhc3N3b3Jk
KQorICAgIDogbV9tZXRob2QobWV0aG9kKQorICAgICwgbV9hc3luYyhhc3luYykKKyAgICAsIG1f
Zm9ybURhdGEoZm9ybURhdGEpCisgICAgLCBtX2hlYWRlcnMoaGVhZGVycykKKyAgICAsIG1faW5j
bHVkZUNyZWRlbnRpYWxzKGluY2x1ZGVDcmVkZW50aWFscykKKyAgICAsIG1fbG9naW4obG9naW4p
CisgICAgLCBtX3Bhc3N3b3JkKHBhc3N3b3JkKQoreworfQogCiAvLyBSZXNvdXJjZURhdGEKIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKQEAgLTI1Myw2ICsyNjgsMTYg
QEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291
cmNlc0RhdGE6OmRhdGEoY29uc3QgU3RyaW4KICAgICByZXR1cm4gbV9yZXF1ZXN0SWRUb1Jlc291
cmNlRGF0YU1hcC5nZXQocmVxdWVzdElkKTsKIH0KIAorUGFzc1JlZlB0cjxYSFJSZXBsYXlEYXRh
PiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6eGhyUmVwbGF5RGF0YShjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCkKK3sKKyAgICByZXR1cm4gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVx
dWVzdElkKS0+WEhSRGF0YSgpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRY
SFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBQYXNzUmVmUHRyPFhIUlJlcGxh
eURhdGE+IHhockRhdGEpCit7CisgICAgbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQo
cmVxdWVzdElkKS0+c2V0WEhSUmVwbGF5RGF0YSh4aHJEYXRhKTsKK30KKwogVmVjdG9yPFN0cmlu
Zz4gTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291
cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCmluZGV4IDhk
ZmQ1ZGQwZGJiMjExYTBjNDkyZWE2ZjFmZDNhNDhlOTA3NzFlYzguLmQxYWQ0NDk3NjYyMjQ5NTRh
Y2Y4Nzk0OWJiZTVlNjhmN2Y2ZGU0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC00Niw2ICs0NiwyNyBAQCBjbGFzcyBDYWNoZWRS
ZXNvdXJjZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRSZXNvdXJjZURlY29kZXI7
CiAKK2NsYXNzIFhIUlJlcGxheURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxYSFJSZXBsYXlEYXRh
PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4gY3JlYXRl
KGNvbnN0IFN0cmluZyAmbWV0aG9kLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwg
Y29uc3QgSFRUUEhlYWRlck1hcCAmaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMsIGNv
bnN0IFN0cmluZyAmbG9naW4sIGNvbnN0IFN0cmluZyAmcGFzc3dvcmQpOworICAgIGNvbnN0IFN0
cmluZyYgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2Q7IH0KKyAgICBib29sIGFzeW5j
KCkgY29uc3QgeyByZXR1cm4gbV9hc3luYzsgfQorICAgIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZv
cm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9mb3JtRGF0YTsgfQorICAgIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlcnMoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlcnM7IH0KKyAgICBib29sIGlu
Y2x1ZGVDcmVkZW50aWFscygpIGNvbnN0IHsgcmV0dXJuIG1faW5jbHVkZUNyZWRlbnRpYWxzOyB9
CisgICAgY29uc3QgU3RyaW5nJiBsb2dpbigpIGNvbnN0IHsgcmV0dXJuIG1fbG9naW47IH0KKyAg
ICBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKCkgY29uc3QgeyByZXR1cm4gbV9wYXNzd29yZDsgfQor
cHJpdmF0ZToKKyAgICBYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBib29sIGFz
eW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywg
Ym9vbCBpbmNsdWRlQ3JlZGVudGlhbHMsIGNvbnN0IFN0cmluZyAmbG9naW4sIGNvbnN0IFN0cmlu
ZyAmcGFzc3dvcmQpOworICAgIFN0cmluZyBtX21ldGhvZDsKKyAgICBib29sIG1fYXN5bmM7Cisg
ICAgUmVmUHRyPEZvcm1EYXRhPiBtX2Zvcm1EYXRhOworICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFk
ZXJzOworICAgIGJvb2wgbV9pbmNsdWRlQ3JlZGVudGlhbHM7CisgICAgU3RyaW5nIG1fbG9naW47
CisgICAgU3RyaW5nIG1fcGFzc3dvcmQ7Cit9OworCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2VzRGF0
YSB7CiBwdWJsaWM6CiAgICAgY2xhc3MgUmVzb3VyY2VEYXRhIHsKQEAgLTkwLDYgKzExMSw4IEBA
IHB1YmxpYzoKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKCkgY29uc3Qg
eyByZXR1cm4gbV9jYWNoZWRSZXNvdXJjZTsgfQogICAgICAgICB2b2lkIHNldENhY2hlZFJlc291
cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkgeyBtX2NhY2hlZFJlc291cmNlID0g
Y2FjaGVkUmVzb3VyY2U7IH0KIAorICAgICAgICBQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IFhI
UkRhdGEoKSBjb25zdCB7IHJldHVybiBtX3hoclJlcGxheURhdGE7IH0KKyAgICAgICAgdm9pZCBz
ZXRYSFJSZXBsYXlEYXRhKFBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4geGhyRGF0YSkgeyBtX3ho
clJlcGxheURhdGEgPSB4aHJEYXRhOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNE
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBkYXRh
TGVuZ3RoKCkgY29uc3Q7CkBAIC0xMDEsNiArMTI0LDcgQEAgcHVibGljOgogICAgICAgICBTdHJp
bmcgbV9mcmFtZUlkOwogICAgICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIFN0cmluZyBtX2Nv
bnRlbnQ7CisgICAgICAgIFJlZlB0cjxYSFJSZXBsYXlEYXRhPiBtX3hoclJlcGxheURhdGE7CiAg
ICAgICAgIGJvb2wgbV9iYXNlNjRFbmNvZGVkOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIGJvb2wgbV9pc0NvbnRlbnRQdXJnZWQ7CkBAIC0xMzIs
NiArMTU2LDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiBwcmVzZXJ2
ZWRMb2FkZXJJZCA9IFN0cmluZygpKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VzRGF0YVNpemVM
aW1pdHMoc2l6ZV90IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgc2l6ZV90IG1heGltdW1T
aW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKTsKKyAgICB2b2lkIHNldFhIUlJlcGxheURhdGEoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQsIFBhc3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4pOworICAgIFBh
c3NSZWZQdHI8WEhSUmVwbGF5RGF0YT4geGhyUmVwbGF5RGF0YShjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQoY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCA1YzgwYWMxNzgyMDhlNWIyMDkzOTdmNjA5
NzVhYzcwNDcwYjcwNjc2Li5jN2I5MDA2MzIxN2MwYmJiNDkwMTg4YWM4NjJiODdmYjg0M2VkNDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQ
YW5lbC5qcwpAQCAtOTYyLDggKzk2MiwyMSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fY2FuQ2xlYXJCcm93c2VyQ29va2llcykK
ICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiQ2xlYXIgYnJvd3NlciBj
b29raWVzIiA6ICJDbGVhciBCcm93c2VyIENvb2tpZXMiKSwgdGhpcy5fY2xlYXJCcm93c2VyQ29v
a2llcy5iaW5kKHRoaXMpKTsKIAorCisgICAgICAgIGlmIChyZXF1ZXN0LnR5cGUgPT09IFdlYklu
c3BlY3Rvci5yZXNvdXJjZVR5cGVzLlhIUikgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVwbGF5IFhIUiIpLCB0aGlzLl9yZXBsYXlYSFIuYmluZCh0aGlz
LCByZXF1ZXN0LnJlcXVlc3RJZCkpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2Vw
YXJhdG9yKCk7CisgICAgICAgIH0KKwogICAgICAgICBjb250ZXh0TWVudS5zaG93KGV2ZW50KTsK
ICAgICB9LAorICAgIAorICAgIF9yZXBsYXlYSFI6IGZ1bmN0aW9uKHJlcXVlc3RJZCkKKyAgICB7
CisgICAgICAgIE5ldHdvcmtBZ2VudC5yZXBsYXlYSFIocmVxdWVzdElkKTsKKyAgICB9LAorICAg
IAogCiAgICAgX2NvcHlBbGw6IGZ1bmN0aW9uKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGEwYzY0ODljYjA2
MzkwOTBhZDk1MzlkODRiNGUyZTA5ZWY0NWM2YmIuLmZhMWI0ZDUzNGUxOWYwZTkzZDQwNGFhYmY0
NDJjODI5YTIxZmQxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnMKICAgICBBU1NFUlQobV9jbGllbnQpOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
LSAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikgeworICAgIGlmIChtX3ByZWZs
aWdodFJlcXVlc3RJZGVudGlmaWVyICYmIG1fYXN5bmMpIHsKICAgICAgICAgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciA9IG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRl
cigpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobV9kb2N1
bWVudC0+ZnJhbWUoKSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgcmVzcG9uc2UpOwog
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3Bv
bnNlKGNvb2tpZSwgbV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25z
ZSwgMCk7CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIKICAgICBB
U1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIpCisg
ICAgaWYgKG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgJiYgbV9hc3luYykKICAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YShtX2RvY3VtZW50LT5mcmFt
ZSgpLCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyLCAwLCAwLCBkYXRhTGVuZ3RoKTsKICNl
bmRpZgogCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
bV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICBpZiAobV9wcmVmbGlnaHRSZXF1ZXN0
SWRlbnRpZmllciAmJiBtX2FzeW5jKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZpbmlzaExvYWRpbmcobV9kb2N1bWVudC0+ZnJhbWUoKSwgbV9kb2N1bWVudC0+ZnJhbWUo
KS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCksIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZp
ZXIsIGZpbmlzaFRpbWUpOwogI2VuZGlmCiAKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGRvdWJsZQogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBp
ZiAobV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcikKKyAgICBpZiAobV9wcmVmbGlnaHRSZXF1
ZXN0SWRlbnRpZmllciAmJiBtX2FzeW5jKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZhaWxMb2FkaW5nKG1fZG9jdW1lbnQtPmZyYW1lKCksIG1fZG9jdW1lbnQtPmZyYW1l
KCktPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLCBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlm
aWVyLCBlcnJvcik7CiAjZW5kaWYKIApAQCAtMzgyLDcgKzM4Miw5IEBAIHZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFNlY3VyCiAgICAgICAgICAgICBtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyID0gbV9k
b2N1bWVudC0+ZnJhbWUoKS0+cGFnZSgpLT5wcm9ncmVzcygpLT5jcmVhdGVVbmlxdWVJZGVudGlm
aWVyKCk7CiAgICAgICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlKCk7CiAgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxTZW5kUmVxdWVzdChtX2RvY3VtZW50LT5mcmFtZSgpLCBtX3ByZWZsaWdodFJlcXVlc3RJ
ZGVudGlmaWVyLCBtX2RvY3VtZW50LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIo
KSwgbmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIGlmIChtX3ByZWZsaWdodFJlcXVlc3RJZGVudGlmaWVyKQorICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpwcmVmbGlnaHRSZXF1ZXN0U3VjY2VkZWQobV9kb2N1bWVudCwg
bV9wcmVmbGlnaHRSZXF1ZXN0SWRlbnRpZmllcik7CisKICNlbmRpZgogICAgICAgICBBU1NFUlQo
IW1fcmVzb3VyY2UpOwogICAgICAgICBtX3Jlc291cmNlID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS0+cmVxdWVzdFJhd1Jlc291cmNlKG5ld1JlcXVlc3QsIG9wdGlvbnMpOwpA
QCAtMzk5LDYgKzQwMSwxMyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cgogICAgIGlmIChtX2Rv
Y3VtZW50LT5mcmFtZSgpKQogICAgICAgICBpZGVudGlmaWVyID0gbV9kb2N1bWVudC0+ZnJhbWUo
KS0+bG9hZGVyKCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVzdCwgbV9vcHRpb25z
LmFsbG93Q3JlZGVudGlhbHMsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiAKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorICAgIGlmIChtX2FjdHVhbFJlcXVlc3QpCisgICAgICAgIG1fcHJlZmxpZ2h0
UmVxdWVzdElkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIGVsc2UgaWYgKG1fcHJlZmxpZ2h0
UmVxdWVzdElkZW50aWZpZXIpCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cHJl
ZmxpZ2h0UmVxdWVzdFN1Y2NlZGVkKG1fZG9jdW1lbnQsIG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50
aWZpZXIpOworI2VuZGlmCisKICAgICAvLyBObyBleGNlcHRpb24gZm9yIGZpbGU6Ly8vIHJlc291
cmNlcywgc2VlIDxyZGFyOi8vcHJvYmxlbS80OTYyMjk4Pi4KICAgICAvLyBBbHNvLCBpZiB3ZSBo
YXZlIGFuIEhUVFAgcmVzcG9uc2UsIHRoZW4gaXQgd2Fzbid0IGEgbmV0d29yayBlcnJvciBpbiBm
YWN0LgogICAgIGlmICghZXJyb3IuaXNOdWxsKCkgJiYgIXJlcXVlc3RVUkwuaXNMb2NhbEZpbGUo
KSAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIDw9IDApIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCmluZGV4IDExMWE2NDlhMTNlNzZhZWY4MzcwYjE4MmM5NTFjYTllNzVj
ZmIyMmUuLmY1NzJjZGQ2ZWNkOGQ4ZjY2ZGMwMzFiNjI3OGI4ZWQ0NjNmODgwN2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNjg0LDYgKzY4NCwxMyBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpzZW5kQnl0ZXNEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5n
dGgsIEV4Y2VwdGlvbkNvZAogICAgIGNyZWF0ZVJlcXVlc3QoZWMpOwogfQogCit2b2lkIFhNTEh0
dHBSZXF1ZXN0OjpzZW5kRnJvbUluc3BlY3RvcihQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0
YSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgbV9yZXF1ZXN0RW50aXR5Qm9keSA9IGZvcm1E
YXRhID8gZm9ybURhdGEtPmRlZXBDb3B5KCkgOiBGb3JtRGF0YTo6Y3JlYXRlKCk7CisgICAgY3Jl
YXRlUmVxdWVzdChlYyk7CisgICAgbV9leGNlcHRpb25Db2RlID0gZWM7Cit9CisKIHZvaWQgWE1M
SHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAjaWYgRU5B
QkxFKEJMT0IpCkBAIC03MTgsNiArNzI1LDggQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
UmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXF1ZXN0LnNldFRhcmdldFR5cGUoUmVz
b3VyY2VSZXF1ZXN0OjpUYXJnZXRJc1hIUik7CiAjZW5kaWYKIAorICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ3JlYXRlWEhSUmVxdWVzdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IG1fbWV0aG9kLCBtX2FzeW5jLCBtX3JlcXVlc3RFbnRpdHlCb2R5ID8gbV9yZXF1ZXN0RW50aXR5
Qm9keS0+ZGVlcENvcHkoKSA6IDAsIG1fcmVxdWVzdEhlYWRlcnMsIG1faW5jbHVkZUNyZWRlbnRp
YWxzLCBtX3VybC51c2VyKCksIG1fdXJsLnBhc3MoKSk7CisKICAgICBpZiAobV9yZXF1ZXN0RW50
aXR5Qm9keSkgewogICAgICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkdFVCIpOwogICAgICAgICBB
U1NFUlQobV9tZXRob2QgIT0gIkhFQUQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
aW5kZXggNjA2NDI4Yjc2YzcxNjQwY2QwYzgxN2MzMThlOTg1Y2FiMmZmNDgyYy4uY2M2Y2JjNTBj
MzYwMTY1MDg5ZTI2NTk5NzVjZDEwZDMxMTIyZWY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmgKQEAgLTEwNSw2ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgQmxvYiogcmVzcG9uc2VC
bG9iKEV4Y2VwdGlvbkNvZGUmKTsKICAgICBCbG9iKiBvcHRpb25hbFJlc3BvbnNlQmxvYigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzcG9uc2VCbG9iLmdldCgpOyB9CiAKKyAgICB2b2lkIHNlbmRGcm9t
SW5zcGVjdG9yKFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBFeGNlcHRpb25Db2RlJik7CisKICAgICAv
LyBFeHBvc2UgSFRUUCB2YWxpZGF0aW9uIG1ldGhvZHMgZm9yIG90aGVyIHVudHJ1c3RlZCByZXF1
ZXN0cy4KICAgICBzdGF0aWMgYm9vbCBpc0FsbG93ZWRIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYp
OwogICAgIHN0YXRpYyBTdHJpbmcgdXBwZXJjYXNlS25vd25IVFRQTWV0aG9kKGNvbnN0IFN0cmlu
ZyYpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDA5NzRiMWVjMjk3ZGI0ODMzZWVjYTFjOTFhMTkxNjJjYTNiZGIwOTQuLjVl
Y2E3ZDU3MDZiNzIzZTNlNmYwNDU5ZTAzNDAwYmIzYTY2ZGRhMTggMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0wOC0zMSAgUGF2ZWwgQ2hhZG5vdiAgPGNoYWRub3ZAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgYWJpbGl0eSB0byByZXBsYXkgWEhSIGluIG5ldHdv
cmsgcGFuZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTE4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RzIFhIUiByZXBsYXkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmsteGhyLXJlcGxheS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItcmVwbGF5Lmh0bWw6IEFkZGVk
LgorCiAyMDEyLTA4LTI3ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBUZXh0VHJhY2sgbW9kZXMgYXJlIHN0cmluZ3MKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItcmVwbGF5LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay14aHItcmVwbGF5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjQwZjAzNGJlY2JiZmIyMmQ1
NjQ1YTA0MDNkNDEyZjAzMTBmYTVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1yZXBsYXktZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMiBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBYSFIgZG9uZQorVGVz
dHMgWEhSIHJlcGxheWluZy4gQnVnIDk1MTg3CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXJlcGxheS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1yZXBsYXkuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iMzFhYTk4ZTBlNzQ5NDkyMDJhNjFhZmRjYjhiZjZjNTMwNDRjMmI1Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLXhoci1yZXBsYXkuaHRtbApAQCAtMCwwICsxLDY3IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24g
c2VuZFhocjEoKSAKK3sKKyAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAg
eGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh4
aHIucmVhZHlTdGF0ZSA9PT0gWE1MSHR0cFJlcXVlc3QuRE9ORSkgeworICAgICAgICAgICAgY29u
c29sZS5sb2coIlhIUiBkb25lIik7CisgICAgICAgIH0KKyAgICB9CisgICAgeGhyLm9wZW4oIlBP
U1QiLCAicmVzb3VyY2VzL2VjaG8tcGF5bG9hZC5waHAiLCBmYWxzZSk7CisgICAgeGhyLnNlbmQo
J2NvbnRlbnQnKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisKKyAgICBJbnNwZWN0b3JUZXN0
LnJlc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YShzdGVwMSk7CisgICAgCisgICAgZnVuY3Rpb24g
c3RlcDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihz
dGVwMik7CisgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInNlbmRYaHIxKCki
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjb21wYXJlUmVxdWVzdHMocmVxdWVzdDEsIHJlcXVl
c3QyKQorICAgIHsKKyAgICAgICAgdmFyIGZpZWxkcyA9IFsidXJsIiwgInJlcXVlc3RDb250ZW50
IiwgInJlcXVlc3RNZXRob2QiLCAicmVxdWVzdEhlYWRlcnNUZXh0Il07CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgZmllbGRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgZmll
bGQgPSBmaWVsZHNbaV07IAorICAgICAgICAgICAgaWYgKHJlcXVlc3QxW2ZpZWxkXSAhPT0gcmVx
dWVzdDJbZmllbGRdKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZmllbGQrIiAiK3Jl
cXVlc3QxW2ZpZWxkXSArICIgIityZXF1ZXN0MltmaWVsZF0pOworICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gc3RlcDIoKQorICAgIHsKKyAgICAgICAgdmFy
IG9yaWdpbmFsUmVxdWVzdCA9IFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3Rz
W1dlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzLmxlbmd0aCAtIDFdOworICAg
ICAgICBOZXR3b3JrQWdlbnQucmVwbGF5WEhSKG9yaWdpbmFsUmVxdWVzdC5yZXF1ZXN0SWQpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9yLk5ldHdvcmtMb2dW
aWV3LnByb3RvdHlwZSwgIl9hcHBlbmRSZXF1ZXN0Iiwgc3RlcDMpOworICAgIH0KKyAgICAKKyAg
ICBmdW5jdGlvbiBzdGVwMygpCisgICAgeworICAgICAgICB2YXIgb3JpZ2luYWxSZXF1ZXN0ID0g
V2ViSW5zcGVjdG9yLnBhbmVsKCJuZXR3b3JrIikucmVxdWVzdHNbV2ViSW5zcGVjdG9yLnBhbmVs
KCJuZXR3b3JrIikucmVxdWVzdHMubGVuZ3RoIC0gMV07CisgICAgICAgIHZhciByZXBsYXllZFJl
cXVlc3QgPSBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJbnNwZWN0
b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0cy5sZW5ndGggLSAyXTsKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnRUcnVlKGNvbXBhcmVSZXF1ZXN0cyhvcmlnaW5hbFJlcXVlc3QsIHJlcGxh
eWVkUmVxdWVzdCkpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAg
IH0KKyAgICAKKyAgICAKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorVGVzdHMgWEhSIHJlcGxheWluZy4KKzxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE4NyI+QnVnIDk1MTg3PC9hPgorPC9ib2R5PgorPC9o
dG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163904</attachid>
            <date>2012-09-13 10:32:35 -0700</date>
            <delta_ts>2012-09-13 23:59:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120913213207.patch</filename>
            <type>text/plain</type>
            <size>48863</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY5NmMzM2RhMjMyNDJh
ODU2NTQ3OWE0ZmEwNDc5ZTUzOTBkYmJmOC4uOWI4MDU1YzA4ZTAxOWNiYWYyZThkYTVkYmYwYThi
OWE3ODdkMzdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5IEBACisyMDEyLTA5LTEzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCBhYmlsaXR5IHRvIHJlcGxheSBYSFIgaW4gbmV0d29yayBwYW5lbC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYmFzZWQgb24gUGF2
ZWwgQ2hhZG5vdidzIHBhdGNoLgorICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgUmVwbGF5
IFhIUiBmZWF0dXJlIGluIHdlYiBpbnNwZWN0b3IuCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0J3Mg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCBpcyBub3cgdXNlZCB0byBtYXAgWE1MSHR0cFJlcXVlc3Qg
b2JqZWN0IHRvIFJlc291cmNlTG9hZGVyIHJlcXVlc3QgaWRlbnRpZmllcnMuCisgICAgICAgIFJl
c291cmNlIGxvYWRlciBpZGVudGlmaWVyIGlzIG5vdyBleHBvc2VkIG9uIENhY2hlZFJlc291cmNl
IHRvIGJlIGFjY2Vzc2VkIGJ5IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci4KKyAgICAgICAgQmVm
b3JlIGluaXRpYXRpbmcgbG9hZCBhbGwgWEhSIHBhcmFtZXRlcnMgYXJlIG5vdyBzZW50IHRvIGlu
c3BlY3Rvci4KKyAgICAgICAgWE1MSHR0cFJlcXVlc3QgcGFyYW1ldGVycyBhcmUgc3RvcmVkIGlu
IGluc3BlY3RvcidzIG5ldHdvcmsgcmVxdWVzdCBjYWNoZSBpbiBYSFJSZXBsYXlEYXRhIGNsYXNz
LgorICAgICAgICBXaGVuIFhIUiByZXBsYXkgaXMgcmVxdWVzdGVkLCBhIG5ldyBYTUxIdHRwUmVx
dWVzdCBpcyBjcmVhdGVkIGJhc2VkIG9uIHN0b3JlZCBkYXRhLgorCisgICAgICAgIFRlc3Q6IGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItcmVwbGF5Lmh0bWwKKworICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNv
bGVBZ2VudDo6ZGlkRmluaXNoWEhSTG9hZGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yQ29uc29sZUFnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
b2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsWEhS
TG9hZGluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGaW5pc2hYSFJMb2FkaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExv
YWRpbmdGb3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsTG9hZFhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxYSFJMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoWEhSTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVYSFJSZXNwb25zZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxMb2FkWEhSKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxYSFJMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaFhIUkxvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRSZWNlaXZlWEhSUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6cmVwbGF5WEhSKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6YWRkSGVhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnhoclJlcGxheURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFhIUlJlcGxheURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJldXNlWEhSUmVwbGF5RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6Y2xlYXIpOgorICAgICAgICAq
IGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoWEhSUmVwbGF5RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpYSFJSZXBsYXlEYXRhOjptZXRob2QpOgorICAgICAgICAo
V2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlhIUlJlcGxh
eURhdGE6OmFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OmZvcm1EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OmhlYWRlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6aW5jbHVkZUNyZWRlbnRpYWxzKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6eGhyUmVwbGF5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRYSFJSZXBsYXlEYXRhKToKKyAgICAgICAgKFJlc291cmNl
RGF0YSk6CisgICAgICAgIChOZXR3b3JrUmVzb3VyY2VzRGF0YSk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0
d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9jb250ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9yZXBsYXlYSFIpOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6IGFkZGVkIGRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50IGluc3RydW1lbnRhdGlvbgorICAgICAgICBz
byB0aGF0IGluc3BlY3RvciBjb3VsZCBtYXAgWE1MSHR0cFJlcXVlc3QgdG8gUmVzb3VyY2VMb2Fk
ZXIncyBpZGVudGlmaWVycy4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jl
c291cmNlKTogUmVtb3ZlZCBtX2lkZW50aWZpZXIgZmllbGQgYXMgaXQgaXMgbm93IGV4cG9zZWQg
b24gQ2FjaGVkUmVzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
c2V0UmVzcG9uc2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
OgorICAgICAgICAoQ2FjaGVkUmF3UmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlOjppZGVudGlmaWVyKTogZXhwb3NlZCBsb2FkZXIgaWRlbnRpZmllciBu
ZWVkZWQgYnkgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2UpOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6c2VuZEZyb21JbnNwZWN0b3IpOiBBZGRlZCBhIG1ldGhvZCBmb3Igc2VuZGluZyBYTUxIdHRw
UmVxdWVzdHMgYmFzZWQgb24gcmVxdWVzdCBib2R5IHN0b3JlZCBpbiBpbnNwZWN0b3IuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVS
ZXF1ZXN0KTogUmVwbGFjZWQgd2lsbC9kaWRMb2FkWEhSU3luY2hvbm91c2x5IGluc3RydW1lbnRh
dGlvbnMgd2l0aCB3aWxsTG9hZFhIUiBpbnN0cnVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCk6IEFkZGVkIGRpZEZhaWxYSFJMb2FkaW5n
SW5zdHJ1bWVudGF0aW9uCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlkRmlu
aXNoTG9hZGluZyk6IEFkZGVkIGRpZEZpbmlzaFhIUkxvYWRpbmcgaW5zdHJ1bWVudGF0aW9uCisg
ICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgIChYTUxIdHRwUmVxdWVzdCk6
CisKIDIwMTItMDktMTMgIExhdXJvIE5ldG8gIDxsYXVyby5uZXRvQG9wZW5ib3NzYS5vcmc+CiAK
ICAgICAgICAgW1F0XVtXSzJdIGZhc3QvZm9ybXMvYWNjZXNzLWtleS1mb3ItYWxsLWVsZW1lbnRz
Lmh0bWwgZmFpbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBm
OThlYTMzYmJiMzdiYTdlZTJhMzYyMDFmNjdmZDQ1OWU1YWI3NjlmLi44YjUwMWM5ZmYxZTM0OWRm
MWM2MThmM2FlZWE2NTExMjQxYzVlZGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvci5qc29uCkBAIC04NzUsNiArODc1LDE0IEBACiAgICAgICAgICAgICAgICAgXQogICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZXBsYXlY
SFIiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGlzIG1ldGhvZCBzZW5kcyBh
IG5ldyBYTUxIdHRwUmVxdWVzdCB3aGljaCBpcyBpZGVudGljYWwgdG8gdGhlIG9yaWdpbmFsIG9u
ZS4gVGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzIHNob3VsZCBiZSBpZGVudGljYWw6IG1ldGhvZCwg
dXJsLCBhc3luYywgcmVxdWVzdCBib2R5LCBleHRyYSBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHMg
YXR0cmlidXRlLCB1c2VyLCBwYXNzd29yZC4iLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICIkcmVmIjog
IlJlcXVlc3RJZCIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIFhIUiB0byByZXBsYXku
IiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJj
YW5DbGVhckJyb3dzZXJDYWNoZSIsCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRl
bGxzIHdoZXRoZXIgY2xlYXJpbmcgYnJvd3NlciBjYWNoZSBpcyBzdXBwb3J0ZWQuIiwKICAgICAg
ICAgICAgICAgICAicmV0dXJucyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKaW5kZXggMmYzZTIyNDZkMDQzNDM2OGU1MmIyNTc3
YzM0NzcyOGJmZDE0MmQ3MC4uYWNlYjJkYTRhZjZmODUzNTFmODhkOThjODNmNjk1ODA1NTgxNjJm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6
ZnJhbWVXaW5kb3dEaXNjYXJkZWQoRE9NV2luZG93KiB3aW5kb3cpCiAgICAgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXItPmRpc2NhcmRJbmplY3RlZFNjcmlwdHNGb3Iod2luZG93KTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQordm9pZCBJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OmRpZEZpbmlzaFhIUkxvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGlu
ZU51bWJlcikKIHsKICAgICBpZiAoIWRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oCmluZGV4IDdiZDY4OTk5NzJhNjY1ODYxODJiNmYwMWMwZWVlNTU4MTgwOTM2MTkuLjUy
YmUxMTgxODI1MDJmY2MyMDA2NWQ2NDg5Y2U2NmI2MmQzNjQwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTc3LDcgKzc3LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqKTsK
IAotICAgIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwg
dW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOworICAgIHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KTsKICAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcAppbmRleCBiZmEzZjMwY2M0YzIxMzk4NmEyZDNkZjkyOTQ2NjZhZDljMzYzZTE3Li45YzJh
Y2MzMDExNjRlMjZjNzE3MDVhZjUzODBmYTE4OTYxYTYyMTYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNzYz
LDMwICs3NjMsMzYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2Fk
aW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW4KICAgICAgICAgY29uc29sZUFn
ZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7IC8vIFRoaXMgc2hvdWxkIGNv
bWUgQUZURVIgcmVzb3VyY2Ugbm90aWZpY2F0aW9uLCBmcm9udC1lbmQgcmVsaWVzIG9uIHRoaXMu
CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXNvdXJjZVJldHJpZXZlZEJ5
WE1MSHR0cFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRM
aW5lTnVtYmVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICBpZiAoSW5zcGVjdG9yQ29uc29sZUFnZW50
KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDb25zb2xlQWdl
bnQoKSkKLSAgICAgICAgY29uc29sZUFnZW50LT5yZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJl
cXVlc3QoaWRlbnRpZmllciwgdXJsLCBzZW5kVVJMLCBzZW5kTGluZU51bWJlcik7CiAgICAgaWYg
KEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCi0gICAgICAgIHJlc291cmNlQWdlbnQtPnNl
dEluaXRpYWxYSFJDb250ZW50KGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7CisgICAgICAgIHJl
c291cmNlQWdlbnQtPmRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xp
ZW50KGlkZW50aWZpZXIsIGNsaWVudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBT
dHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZv
cm1EYXRhPiBmb3JtRGF0YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNs
dWRlQ3JlZGVudGlhbHMpCiB7CiAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291
cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkp
Ci0gICAgICAgIHJlc291cmNlQWdlbnQtPmRpZFJlY2VpdmVYSFJSZXNwb25zZShpZGVudGlmaWVy
KTsKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+d2lsbExvYWRYSFIoY2xpZW50LCBtZXRob2QsIHVy
bCwgYXN5bmMsIGZvcm1EYXRhLCBoZWFkZXJzLCBpbmNsdWRlQ3JlZGVudGlhbHMpOworfQorCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbFhIUkxvYWRpbmdJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFRocmVhZGFibGVMb2FkZXJDbGll
bnQqIGNsaWVudCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKKyAg
ICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmFpbFhIUkxvYWRpbmcoY2xpZW50KTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5l
TnVtYmVyKQogeworICAgIGlmIChJbnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNvbnNvbGVBZ2VudCgpKQorICAgICAgICBj
b25zb2xlQWdlbnQtPmRpZEZpbmlzaFhIUkxvYWRpbmcoaWRlbnRpZmllciwgdXJsLCBzZW5kVVJM
LCBzZW5kTGluZU51bWJlcik7CiAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291
cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkp
Ci0gICAgICAgIHJlc291cmNlQWdlbnQtPndpbGxMb2FkWEhSU3luY2hyb25vdXNseSgpOworICAg
ICAgICByZXNvdXJjZUFnZW50LT5kaWRGaW5pc2hYSFJMb2FkaW5nKGNsaWVudCwgaWRlbnRpZmll
ciwgc291cmNlU3RyaW5nKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVYSFJS
ZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyKQogewogICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50
KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRMb2FkWEhSU3luY2hyb25vdXNseSgp
OworICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlWEhSUmVzcG9uc2UoaWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzY3JpcHRJbXBvcnRlZElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCAyZGVj
MjIwNmQ1NGYyMTg3YjA0N2Q1MTY1MGE4ODNmMTBjYmY0MjY1Li4wNjQwYjIwNmNiYzFjOGU3OGE5
OGQyMWU2YTk3NGE3M2Q0YjAyNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC03Nyw2ICs3Nyw3IEBAIGNsYXNzIFNl
Y3VyaXR5T3JpZ2luOwogY2xhc3MgU2hhZG93Um9vdDsKIGNsYXNzIFN0b3JhZ2VBcmVhOwogY2xh
c3MgU3R5bGVSdWxlOworY2xhc3MgVGhyZWFkYWJsZUxvYWRlckNsaWVudDsKIGNsYXNzIFdvcmtl
ckNvbnRleHQ7CiBjbGFzcyBXb3JrZXJDb250ZXh0UHJveHk7CiBjbGFzcyBYTUxIdHRwUmVxdWVz
dDsKQEAgLTE4MywxMCArMTg0LDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlRGF0YShGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0
YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7CiAgICAgc3RhdGljIHZv
aWQgZGlkRmluaXNoTG9hZGluZyhGcmFtZSosIERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFp
bExvYWRpbmcoRnJhbWUqLCBEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHN0YXRpYyB2b2lkIHJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOworICAg
IHN0YXRpYyB2b2lkIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xp
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsTG9hZFhIUihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEtVUkwmLCBib29sLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgSFRUUEhl
YWRlck1hcCYsIGJvb2wpOworICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxYSFJMb2FkaW5nKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7CisgICAgc3RhdGlj
IHZvaWQgZGlkRmluaXNoWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFk
YWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkws
IHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlWEhS
UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRMb2FkWEhSU3luY2hyb25vdXNseShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgc3RhdGljIHZvaWQgc2NyaXB0SW1wb3J0ZWQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTY3JpcHRS
ZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KTsKICAgICBzdGF0aWMgdm9pZCBkb21Db250ZW50TG9hZGVkRXZlbnRGaXJlZChGcmFtZSopOwpA
QCAtMzYyLDEwICszNjQsMTEgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
RGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgsIGludCBlbmNvZGVkRGF0YUxlbmd0aCk7
CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqLCBkb3VibGUgZmlu
aXNoVGltZSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VFcnJvciYpOwotICAgIHN0YXRpYyB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlY
TUxIdHRwUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKKyAgICBzdGF0
aWMgdm9pZCBkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgVGhyZWFk
YWJsZUxvYWRlckNsaWVudCopOworICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFN0cmluZyYs
IGNvbnN0IEtVUkwmLCBib29sLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgY29uc3QgSFRUUEhlYWRl
ck1hcCYsIGJvb2wpOworICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxYSFJMb2FkaW5nSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCopOworICAgIHN0YXRpYyB2
b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VuZFVSTCwg
dW5zaWduZWQgc2VuZExpbmVOdW1iZXIpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVYSFJS
ZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cik7Ci0gICAgc3RhdGljIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkTG9hZFhIUlN5bmNocm9ub3VzbHlJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICBzdGF0aWMgdm9pZCBzY3JpcHRJbXBvcnRl
ZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVTY3Jp
cHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
Zmllcik7CiAgICAgc3RhdGljIHZvaWQgZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBGcmFtZSopOwpAQCAtMTE2OCwzNSArMTE3MSw0NCBAQCBpbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxMb2FkaW5nKEZyYW1lKiBm
cmFtZSwgRG9jdW1lbnRMb2FkZQogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNl
bmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNs
aWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIHJlc291
cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRl
bnRpZmllciwgc291cmNlU3RyaW5nLCB1cmwsIHNlbmRVUkwsIHNlbmRMaW5lTnVtYmVyKTsKKyAg
ICAgICAgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIGNsaWVudCk7CiAjZW5kaWYKIH0KIAot
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9u
c2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMs
IFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFk
ZXJzLCBib29sIGluY2x1ZGVDcmVkZW50aWFscykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
ICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIGRpZFJlY2VpdmVYSFJS
ZXNwb25zZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRpZmllcik7CisgICAgICAgIHdp
bGxMb2FkWEhSSW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBjbGllbnQsIG1ldGhvZCwgdXJsLCBh
c3luYywgZm9ybURhdGEsIGhlYWRlcnMsIGluY2x1ZGVDcmVkZW50aWFscyk7CiAjZW5kaWYKIH0K
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUlN5bmNo
cm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbFhIUkxvYWRpbmcoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50KQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKLSAg
ICAgICAgd2lsbExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzKTsK
KyAgICAgICAgZGlkRmFpbFhIUkxvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGNsaWVu
dCk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRMb2FkWEhSU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRp
bmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCogY2xpZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25l
ZCBzZW5kTGluZU51bWJlcikKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIGRpZExvYWRYSFJTeW5jaHJvbm91c2x5SW1w
bChpbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICAgICAgZGlkRmluaXNoWEhSTG9hZGluZ0ltcGwo
aW5zdHJ1bWVudGluZ0FnZW50cywgY2xpZW50LCBpZGVudGlmaWVyLCBzb3VyY2VTdHJpbmcsIHVy
bCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCisgICAg
ICAgIGRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgaWRlbnRp
Zmllcik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDlkOTI5YzlhMTBiZWQzNGMyOWMyODk0ODFh
YjBhNGE1YTYyODY5MTQuLmVhOWMzODQ0Yjg5YmZlNzExOGFmYjllYWQ4MjkxYzE4OGVmOWM2N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvclJlc291cmNl
QWdlbnQuaCIKIAorI2luY2x1ZGUgIkNhY2hlZFJhd1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCkBAIC02NCw2ICs2NSw3IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0RnJh
bWUuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAi
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5o
IgogCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJl
ci5oPgpAQCAtMzMzLDYgKzMzNSwxMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShEb2N1bWVudExvYWRlciogbG9hZAogICAgIFN0
cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVy
KTsKICAgICBtX3Jlc291cmNlc0RhdGEtPnJlc291cmNlQ3JlYXRlZChyZXF1ZXN0SWQsIGxvYWRl
cklkKTsKICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZENhY2hlZFJlc291cmNlKHJlcXVlc3RJZCwg
cmVzb3VyY2UpOworICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpS
YXdSZXNvdXJjZSkgeworICAgICAgICBDYWNoZWRSYXdSZXNvdXJjZSogcmF3UmVzb3VyY2UgPSBz
dGF0aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZSo+KHJlc291cmNlKTsKKyAgICAgICAgU3RyaW5n
IHJhd1JlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKHJhd1Jlc291cmNl
LT5pZGVudGlmaWVyKCkpOworICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnJldXNlWEhSUmVwbGF5
RGF0YShyZXF1ZXN0SWQsIHJhd1JlcXVlc3RJZCk7CisgICAgfQorCiAgICAgUmVmUHRyPFR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlh
dG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6
IDApOwogCiAgICAgbV9mcm9udGVuZC0+cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1
ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBjdXJyZW50
VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoKnJl
c291cmNlLCBsb2FkZXIpKTsKQEAgLTM0OCwyNyArMzU2LDUwIEBAIHZvaWQgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllcikKICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShJZGVudGlmaWVyc0Zh
Y3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgSW5zcGVjdG9yUGFnZUFnZW50OjpTY3JpcHRS
ZXNvdXJjZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0SW5pdGlhbFhI
UkNvbnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0
cmluZykKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgLy8gRm9yIEFzeW5jaHJvbm91cyBY
SFJzLCB0aGUgaW5zcGVjdG9yIGNhbiBncmFiIHRoZSBkYXRhIGRpcmVjdGx5IG9mZiBvZiB0aGUg
Q2FjaGVkUmVzb3VyY2UuIEZvciBzeW5jIFhIUnMsIHdlIG5lZWQgdG8KLSAgICAvLyBwcm92aWRl
IHRoZSBkYXRhIGhlcmUsIHNpbmNlIG5vIENhY2hlZFJlc291cmNlIHdhcyBpbnZvbHZlZC4KLSAg
ICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSkKLSAgICAgICAgbV9yZXNvdXJjZXNEYXRh
LT5zZXRSZXNvdXJjZUNvbnRlbnQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRp
ZmllciksIHNvdXJjZVN0cmluZyk7CisgICAgaWYgKCFjbGllbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIFBlbmRpbmdYSFJSZXBsYXlEYXRhTWFwOjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ1hI
UlJlcGxheURhdGEuZmluZChjbGllbnQpOworICAgIGlmIChpdCA9PSBtX3BlbmRpbmdYSFJSZXBs
YXlEYXRhLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBYSFJSZXBsYXlEYXRhKiB4aHJS
ZXBsYXlEYXRhID0gaXQtPnNlY29uZC5nZXQoKTsKKyAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRl
bnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7CisgICAgbV9yZXNvdXJjZXNE
YXRhLT5zZXRYSFJSZXBsYXlEYXRhKHJlcXVlc3RJZCwgeGhyUmVwbGF5RGF0YSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcikKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbExvYWRY
SFIoVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwg
Y29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0
YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMp
CiB7Ci0gICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZVR5cGUoSWRlbnRpZmllcnNGYWN0
b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3Vy
Y2UpOworICAgIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkgPSAhYXN5bmM7CisKKyAgICBSZWZQ
dHI8WEhSUmVwbGF5RGF0YT4geGhyUmVwbGF5RGF0YSA9IFhIUlJlcGxheURhdGE6OmNyZWF0ZSht
ZXRob2QsIHVybCwgYXN5bmMsIGZvcm1EYXRhLCBpbmNsdWRlQ3JlZGVudGlhbHMpOworICAgIEhU
VFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGhlYWRlcnMuZW5kKCk7CisgICAgZm9y
IChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKTsgaXQh
PSBlbmQ7ICsraXQpCisgICAgICAgIHhoclJlcGxheURhdGEtPmFkZEhlYWRlcihpdC0+Zmlyc3Qs
IGl0LT5zZWNvbmQpOworICAgIG1fcGVuZGluZ1hIUlJlcGxheURhdGEuc2V0KGNsaWVudCwgeGhy
UmVwbGF5RGF0YSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbExvYWRY
SFJTeW5jaHJvbm91c2x5KCkKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmFpbFhI
UkxvYWRpbmcoVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50KQogewotICAgIG1fbG9hZGlu
Z1hIUlN5bmNocm9ub3VzbHkgPSB0cnVlOworICAgIG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkg
PSBmYWxzZTsKKyAgICBtX3BlbmRpbmdYSFJSZXBsYXlEYXRhLnJlbW92ZShjbGllbnQpOwogfQog
Ci12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KCkK
K3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoWEhSTG9hZGluZyhUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VTdHJpbmcpCiB7CisgICAgLy8gRm9yIEFzeW5jaHJvbm91cyBYSFJzLCB0
aGUgaW5zcGVjdG9yIGNhbiBncmFiIHRoZSBkYXRhIGRpcmVjdGx5IG9mZiBvZiB0aGUgQ2FjaGVk
UmVzb3VyY2UuIEZvciBzeW5jIFhIUnMsIHdlIG5lZWQgdG8KKyAgICAvLyBwcm92aWRlIHRoZSBk
YXRhIGhlcmUsIHNpbmNlIG5vIENhY2hlZFJlc291cmNlIHdhcyBpbnZvbHZlZC4KKyAgICBpZiAo
bV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSkKKyAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRS
ZXNvdXJjZUNvbnRlbnQoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciks
IHNvdXJjZVN0cmluZyk7CiAgICAgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSA9IGZhbHNlOwor
ICAgIG1fcGVuZGluZ1hIUlJlcGxheURhdGEucmVtb3ZlKGNsaWVudCk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllcikKK3sKKyAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShJZGVu
dGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZChpZGVudGlmaWVyKSwgSW5zcGVjdG9yUGFnZUFnZW50
OjpYSFJSZXNvdXJjZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbERl
c3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCkBAIC01
NzAsNiArNjAxLDIzIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Z2V0UmVzcG9uc2VC
b2R5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyCiAgICAgKmVycm9yU3RyaW5n
ID0gIk5vIGRhdGEgZm91bmQgZm9yIHJlc291cmNlIHdpdGggZ2l2ZW4gaWRlbnRpZmllciI7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVwbGF5WEhSKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCit7CisgICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4
aHIgPSBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKG1fcGFnZUFnZW50LT5tYWluRnJhbWUoKS0+ZG9j
dW1lbnQoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBjb2RlOworICAgIFN0cmluZyBhY3R1YWxSZXF1
ZXN0SWQgPSByZXF1ZXN0SWQ7CisKKyAgICBYSFJSZXBsYXlEYXRhKiB4aHJSZXBsYXlEYXRhID0g
bV9yZXNvdXJjZXNEYXRhLT54aHJSZXBsYXlEYXRhKHJlcXVlc3RJZCk7CisgICAgaWYgKCF4aHJS
ZXBsYXlEYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICB4aHItPm9wZW4oeGhyUmVwbGF5RGF0
YS0+bWV0aG9kKCksIHhoclJlcGxheURhdGEtPnVybCgpLCB4aHJSZXBsYXlEYXRhLT5hc3luYygp
LCBjb2RlKTsKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSB4aHJSZXBs
YXlEYXRhLT5oZWFkZXJzKCkuZW5kKCk7CisgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IHhoclJlcGxheURhdGEtPmhlYWRlcnMoKS5iZWdpbigpOyBpdCE9IGVuZDsg
KytpdCkKKyAgICAgICAgeGhyLT5zZXRSZXF1ZXN0SGVhZGVyKGl0LT5maXJzdCwgaXQtPnNlY29u
ZCwgY29kZSk7CisgICAgeGhyLT5zZW5kRnJvbUluc3BlY3Rvcih4aHJSZXBsYXlEYXRhLT5mb3Jt
RGF0YSgpLCBjb2RlKTsKK30KKwogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpjYW5DbGVh
ckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyosIGJvb2wqIHJlc3VsdCkKIHsKICAgICAqcmVzdWx0
ID0gbV9jbGllbnQtPmNhbkNsZWFyQnJvd3NlckNhY2hlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCBmOGZjOGJkMzA0YTZm
ODRjMmFhOTZkZGU0MGZiYjBkOWZmZjg5NmNiLi4xMzExOTM3YjczM2Q5ZTZkODZkN2I3NTE3MDVl
NTk1Y2Y5MzVhNzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmgKQEAgLTUwLDcgKzUwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIERvY3VtZW50TG9h
ZGVyOworY2xhc3MgRm9ybURhdGE7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEhUVFBIZWFkZXJNYXA7
CiBjbGFzcyBJbnNwZWN0b3JBcnJheTsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIElu
c3BlY3RvckZyb250ZW5kOwpAQCAtNjYsNiArNjgsOSBAQCBjbGFzcyBSZXNvdXJjZUxvYWRlcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CitjbGFzcyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50OworY2xhc3MgWEhSUmVw
bGF5RGF0YTsKK2NsYXNzIFhNTEh0dHBSZXF1ZXN0OwogCiAjaWYgRU5BQkxFKFdFQl9TT0NLRVRT
KQogc3RydWN0IFdlYlNvY2tldEZyYW1lOwpAQCAtMTAwLDEwICsxMDUsMTMgQEAgcHVibGljOgog
ICAgIHZvaWQgbWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKik7CiAgICAgdm9pZCBz
ZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTY3JpcHRSZXNwb25zZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHZvaWQgc2V0SW5pdGlhbFhIUkNvbnRlbnQo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CisK
KyAgICB2b2lkIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCopOworICAg
IHZvaWQgd2lsbExvYWRYSFIoVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFN0cmluZyYg
bWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gYm9k
eSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlbmRlbnRpYWxz
KTsKKyAgICB2b2lkIGRpZEZhaWxYSFJMb2FkaW5nKFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsK
KyAgICB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmcoVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0g
ICAgdm9pZCB3aWxsTG9hZFhIUlN5bmNocm9ub3VzbHkoKTsKLSAgICB2b2lkIGRpZExvYWRYSFJT
eW5jaHJvbm91c2x5KCk7CisKICAgICB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2UqKTsKIAogICAgIHZvaWQgYXBwbHlVc2VyQWdlbnRPdmVycmlkZShTdHJpbmcq
IHVzZXJBZ2VudCk7CkBAIC0xMzUsNiArMTQzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0
RW5jb2RlZCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5WEhSKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiByZXF1ZXN0SWQpOworCiAgICAgdmlydHVhbCB2b2lkIGNhbkNsZWFyQnJvd3Nl
ckNhY2hlKEVycm9yU3RyaW5nKiwgYm9vbCopOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dz
ZXJDYWNoZShFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBjYW5DbGVhckJyb3dzZXJD
b29raWVzKEVycm9yU3RyaW5nKiwgYm9vbCopOwpAQCAtMTUzLDYgKzE2Myw4IEBAIHByaXZhdGU6
CiAgICAgT3duUHRyPE5ldHdvcmtSZXNvdXJjZXNEYXRhPiBtX3Jlc291cmNlc0RhdGE7CiAgICAg
Ym9vbCBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5OwogCisgICAgdHlwZWRlZiBIYXNoTWFwPFRo
cmVhZGFibGVMb2FkZXJDbGllbnQqLCBSZWZQdHI8WEhSUmVwbGF5RGF0YT4gPiBQZW5kaW5nWEhS
UmVwbGF5RGF0YU1hcDsKKyAgICBQZW5kaW5nWEhSUmVwbGF5RGF0YU1hcCBtX3BlbmRpbmdYSFJS
ZXBsYXlEYXRhOwogICAgIC8vIEZJWE1FOiBJbnNwZWN0b3JSZXNvdXJjZUFnZW50IHNob3VsZCBu
b3cgYmUgYXdhcmUgb2Ygc3R5bGUgcmVjYWxjdWxhdGlvbi4KICAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gbV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3I7CiAg
ICAgYm9vbCBtX2lzUmVjYWxjdWxhdGluZ1N0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNDQxNmFkZjc2N2YzZThkZTJk
YjU1MjIyNGQ3ZjI2Y2U2NWY4OGNjMi4uNDE5OGZiNTFkNjlhYmQwNmQxZDAyM2I0NzI1NzEyOTI2
MTVhMTBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNv
dXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuY3BwCkBAIC00Nyw2ICs0NywyNSBAQCBzdGF0aWMgc2l6ZV90IG1heGltdW1TaW5n
bGVSZXNvdXJjZUNvbnRlbnRTaXplID0gMTAgKiAxMDAwICogMTAwMDsKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogCitQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IFhIUlJlcGxheURhdGE6OmNyZWF0
ZShjb25zdCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBYSFJSZXBsYXlEYXRhKG1ldGhvZCwgdXJsLCBhc3luYywg
Zm9ybURhdGEsIGluY2x1ZGVDcmVkZW50aWFscykpOworfQorCit2b2lkIFhIUlJlcGxheURhdGE6
OmFkZEhlYWRlcihjb25zdCBBdG9taWNTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
K3sKKyAgICBtX2hlYWRlcnMuc2V0KGtleSwgdmFsdWUpOworfQorCitYSFJSZXBsYXlEYXRhOjpY
SFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wg
YXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBib29sIGluY2x1ZGVDcmVkZW50
aWFscykKKyAgICA6IG1fbWV0aG9kKG1ldGhvZCkKKyAgICAsIG1fdXJsKHVybCkKKyAgICAsIG1f
YXN5bmMoYXN5bmMpCisgICAgLCBtX2Zvcm1EYXRhKGZvcm1EYXRhKQorICAgICwgbV9pbmNsdWRl
Q3JlZGVudGlhbHMoaW5jbHVkZUNyZWRlbnRpYWxzKQoreworfQorCiAvLyBSZXNvdXJjZURhdGEK
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OlJlc291cmNlRGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBsb2FkZXJJZCkKICAgICA6IG1fcmVxdWVz
dElkKHJlcXVlc3RJZCkKQEAgLTI1Myw2ICsyNzIsNDYgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGEoY29uc3QgU3Ry
aW4KICAgICByZXR1cm4gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVxdWVzdElk
KTsKIH0KIAorWEhSUmVwbGF5RGF0YSogTmV0d29ya1Jlc291cmNlc0RhdGE6OnhoclJlcGxheURh
dGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpCit7CisgICAgaWYgKG1fcmV1c2VkWEhSUmVwbGF5
RGF0YVJlcXVlc3RJZHMuY29udGFpbnMocmVxdWVzdElkKSkKKyAgICAgICAgcmV0dXJuIHhoclJl
cGxheURhdGEobV9yZXVzZWRYSFJSZXBsYXlEYXRhUmVxdWVzdElkcy5nZXQocmVxdWVzdElkKSk7
CisKKyAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IG1fcmVxdWVzdElkVG9SZXNvdXJj
ZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCk7CisgICAgaWYgKCFyZXNvdXJjZURhdGEpCisgICAgICAg
IHJldHVybiAwOworICAgIHJldHVybiByZXNvdXJjZURhdGEtPnhoclJlcGxheURhdGEoKTsKK30K
Kwordm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0WEhSUmVwbGF5RGF0YShjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgWEhSUmVwbGF5RGF0YSogeGhyUmVwbGF5RGF0YSkKK3sKKyAgICBSZXNv
dXJjZURhdGEqIHJlc291cmNlRGF0YSA9IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0
KHJlcXVlc3RJZCk7CisgICAgaWYgKCFyZXNvdXJjZURhdGEpIHsKKyAgICAgICAgVmVjdG9yPFN0
cmluZz4gcmVzdWx0OworICAgICAgICBSZXVzZWRSZXF1ZXN0SWRzOjppdGVyYXRvciBpdDsKKyAg
ICAgICAgUmV1c2VkUmVxdWVzdElkczo6aXRlcmF0b3IgZW5kID0gbV9yZXVzZWRYSFJSZXBsYXlE
YXRhUmVxdWVzdElkcy5lbmQoKTsKKyAgICAgICAgZm9yIChpdCA9IG1fcmV1c2VkWEhSUmVwbGF5
RGF0YVJlcXVlc3RJZHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBp
ZiAoaXQtPnNlY29uZCA9PSByZXF1ZXN0SWQpCisgICAgICAgICAgICAgICAgc2V0WEhSUmVwbGF5
RGF0YShpdC0+Zmlyc3QsIHhoclJlcGxheURhdGEpOworICAgICAgICB9CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICByZXNvdXJjZURhdGEtPnNldFhIUlJlcGxheURhdGEoeGhyUmVwbGF5
RGF0YSk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJldXNlWEhSUmVwbGF5RGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiByZXVzZWRSZXF1ZXN0SWQp
Cit7CisgICAgUmVzb3VyY2VEYXRhKiByZXVzZWRSZXNvdXJjZURhdGEgPSBtX3JlcXVlc3RJZFRv
UmVzb3VyY2VEYXRhTWFwLmdldChyZXVzZWRSZXF1ZXN0SWQpOworICAgIFJlc291cmNlRGF0YSog
cmVzb3VyY2VEYXRhID0gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVxdWVzdElk
KTsKKyAgICBpZiAoIXJldXNlZFJlc291cmNlRGF0YSB8fCAhcmVzb3VyY2VEYXRhKSB7CisgICAg
ICAgIG1fcmV1c2VkWEhSUmVwbGF5RGF0YVJlcXVlc3RJZHMuc2V0KHJlcXVlc3RJZCwgcmV1c2Vk
UmVxdWVzdElkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlc291cmNlRGF0YS0+
c2V0WEhSUmVwbGF5RGF0YShyZXVzZWRSZXNvdXJjZURhdGEtPnhoclJlcGxheURhdGEoKSk7Cit9
CisKIFZlY3RvcjxTdHJpbmc+IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVzdWx0OwpAQCAtMjg2LDYgKzM0NSw4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OmNsZWFyKGNvbnN0IFN0cmluZyYgcHJlc2VydmVkTG9hZGVySWQpCiAgICAgICAgICAgICBkZWxl
dGUgcmVzb3VyY2VEYXRhOwogICAgIH0KICAgICBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFw
LnN3YXAocHJlc2VydmVkTWFwKTsKKworICAgIG1fcmV1c2VkWEhSUmVwbGF5RGF0YVJlcXVlc3RJ
ZHMuY2xlYXIoKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6c2V0UmVzb3VyY2Vz
RGF0YVNpemVMaW1pdHMoc2l6ZV90IG1heGltdW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgc2l6ZV90
IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCA4ZGZkNWRkMGRiYjIxMWEwYzQ5
MmVhNmYxZmQzYTQ4ZTkwNzcxZWM4Li4yMjU5NTIxYTk5NDZhZmQ3YzdhZDA2NzhlMDRkYWFhYjBi
NWM2ZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaApAQCAtNDYsNiArNDYsMjggQEAgY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CiBjbGFzcyBUZXh0UmVzb3VyY2VEZWNvZGVyOwogCitjbGFzcyBYSFJSZXBs
YXlEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8WEhSUmVwbGF5RGF0YT4geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFhIUlJlcGxheURhdGE+IGNyZWF0ZShjb25zdCBTdHJpbmcgJm1l
dGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBib29s
IGluY2x1ZGVDcmVkZW50aWFscyk7CisKKyAgICB2b2lkIGFkZEhlYWRlcihjb25zdCBBdG9taWNT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgY29uc3QgU3RyaW5nJiBtZXRo
b2QoKSBjb25zdCB7IHJldHVybiBtX21ldGhvZDsgfQorICAgIGNvbnN0IEtVUkwmIHVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgYm9vbCBhc3luYygpIGNvbnN0IHsgcmV0dXJuIG1f
YXN5bmM7IH0KKyAgICBGb3JtRGF0YSogZm9ybURhdGEoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1E
YXRhLmdldCgpOyB9CisgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycygpIGNvbnN0IHsg
cmV0dXJuIG1faGVhZGVyczsgfQorICAgIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKCkgY29uc3Qg
eyByZXR1cm4gbV9pbmNsdWRlQ3JlZGVudGlhbHM7IH0KK3ByaXZhdGU6CisgICAgWEhSUmVwbGF5
RGF0YShjb25zdCBTdHJpbmcgJm1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5bmMsIFBhc3NS
ZWZQdHI8Rm9ybURhdGE+LCBib29sIGluY2x1ZGVDcmVkZW50aWFscyk7CisKKyAgICBTdHJpbmcg
bV9tZXRob2Q7CisgICAgS1VSTCBtX3VybDsKKyAgICBib29sIG1fYXN5bmM7CisgICAgUmVmUHRy
PEZvcm1EYXRhPiBtX2Zvcm1EYXRhOworICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFkZXJzOworICAg
IGJvb2wgbV9pbmNsdWRlQ3JlZGVudGlhbHM7Cit9OworCiBjbGFzcyBOZXR3b3JrUmVzb3VyY2Vz
RGF0YSB7CiBwdWJsaWM6CiAgICAgY2xhc3MgUmVzb3VyY2VEYXRhIHsKQEAgLTkwLDYgKzExMiw4
IEBAIHB1YmxpYzoKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKCkgY29u
c3QgeyByZXR1cm4gbV9jYWNoZWRSZXNvdXJjZTsgfQogICAgICAgICB2b2lkIHNldENhY2hlZFJl
c291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkgeyBtX2NhY2hlZFJlc291cmNl
ID0gY2FjaGVkUmVzb3VyY2U7IH0KIAorICAgICAgICBYSFJSZXBsYXlEYXRhKiB4aHJSZXBsYXlE
YXRhKCkgY29uc3QgeyByZXR1cm4gbV94aHJSZXBsYXlEYXRhLmdldCgpOyB9CisgICAgICAgIHZv
aWQgc2V0WEhSUmVwbGF5RGF0YShYSFJSZXBsYXlEYXRhKiB4aHJSZXBsYXlEYXRhKSB7IG1feGhy
UmVwbGF5RGF0YSA9IHhoclJlcGxheURhdGE7IH0KICAgICBwcml2YXRlOgogICAgICAgICBib29s
IGhhc0RhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGFCdWZmZXI7IH0KICAgICAgICAgc2l6ZV90
IGRhdGFMZW5ndGgoKSBjb25zdDsKQEAgLTEwMSw2ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFN0cmluZyBtX2ZyYW1lSWQ7CiAgICAgICAgIFN0cmluZyBtX3VybDsKICAgICAgICAgU3RyaW5n
IG1fY29udGVudDsKKyAgICAgICAgUmVmUHRyPFhIUlJlcGxheURhdGE+IG1feGhyUmVwbGF5RGF0
YTsKICAgICAgICAgYm9vbCBtX2Jhc2U2NEVuY29kZWQ7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZGF0YUJ1ZmZlcjsKICAgICAgICAgYm9vbCBtX2lzQ29udGVudFB1cmdlZDsKQEAg
LTEzMiw2ICsxNTcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHBy
ZXNlcnZlZExvYWRlcklkID0gU3RyaW5nKCkpOwogCiAgICAgdm9pZCBzZXRSZXNvdXJjZXNEYXRh
U2l6ZUxpbWl0cyhzaXplX3QgbWF4aW11bVJlc291cmNlc0NvbnRlbnRTaXplLCBzaXplX3QgbWF4
aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUpOworICAgIHZvaWQgc2V0WEhSUmVwbGF5RGF0
YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgWEhSUmVwbGF5RGF0YSopOworICAgIHZvaWQgcmV1
c2VYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIHJl
dXNlZFJlcXVlc3RJZCk7CisgICAgWEhSUmVwbGF5RGF0YSogeGhyUmVwbGF5RGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVOb0RhdGFGb3JS
ZXF1ZXN0SWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwpAQCAtMTM5LDYgKzE2Nyw4IEBAIHBy
aXZhdGU6CiAKICAgICBEZXF1ZTxTdHJpbmc+IG1fcmVxdWVzdElkc0RlcXVlOwogCisgICAgdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBSZXVzZWRSZXF1ZXN0SWRzOworICAgIFJldXNl
ZFJlcXVlc3RJZHMgbV9yZXVzZWRYSFJSZXBsYXlEYXRhUmVxdWVzdElkczsKICAgICB0eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBSZXNvdXJjZURhdGEqPiBSZXNvdXJjZURhdGFNYXA7CiAgICAgUmVz
b3VyY2VEYXRhTWFwIG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXA7CiAgICAgc2l6ZV90IG1f
Y29udGVudFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL05ldHdvcmtQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TmV0d29ya1BhbmVsLmpzCmluZGV4IDVjODBhYzE3ODIwOGU1YjIwOTM5N2Y2MDk3NWFjNzA0NzBi
NzA2NzYuLmM3YjkwMDYzMjE3YzBiYmI0OTAxODhhYzg2MmI4N2ZiODQzZWQ0NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzCkBA
IC05NjIsOCArOTYyLDIxIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrTG9nVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIGlmICh0aGlzLl9jYW5DbGVhckJyb3dzZXJDb29raWVzKQogICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoV2ViSW5zcGVj
dG9yLnVzZUxvd2VyQ2FzZU1lbnVUaXRsZXMoKSA/ICJDbGVhciBicm93c2VyIGNvb2tpZXMiIDog
IkNsZWFyIEJyb3dzZXIgQ29va2llcyIpLCB0aGlzLl9jbGVhckJyb3dzZXJDb29raWVzLmJpbmQo
dGhpcykpOwogCisKKyAgICAgICAgaWYgKHJlcXVlc3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLnJl
c291cmNlVHlwZXMuWEhSKSB7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0
b3IoKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSZXBsYXkgWEhSIiksIHRoaXMuX3JlcGxheVhIUi5iaW5kKHRoaXMsIHJlcXVlc3Qu
cmVxdWVzdElkKSk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsK
KyAgICAgICAgfQorCiAgICAgICAgIGNvbnRleHRNZW51LnNob3coZXZlbnQpOwogICAgIH0sCisg
ICAgCisgICAgX3JlcGxheVhIUjogZnVuY3Rpb24ocmVxdWVzdElkKQorICAgIHsKKyAgICAgICAg
TmV0d29ya0FnZW50LnJlcGxheVhIUihyZXF1ZXN0SWQpOworICAgIH0sCisgICAgCiAKICAgICBf
Y29weUFsbDogZnVuY3Rpb24oKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYTBjNjQ4OWNiMDYzOTA5MGFkOTUz
OWQ4NGI0ZTJlMDllZjQ1YzZiYi4uMzFkYjA4MzExNGVjM2ZlNzkyYzRlNDFkN2Y4OThkNjBjODVl
N2VhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCisjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3
dGYvVW51c2VkUGFyYW0uaD4KQEAgLTM4Niw4ICszODcsMTMgQEAgdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
U2VjdXIKICNlbmRpZgogICAgICAgICBBU1NFUlQoIW1fcmVzb3VyY2UpOwogICAgICAgICBtX3Jl
c291cmNlID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdFJhd1Jl
c291cmNlKG5ld1JlcXVlc3QsIG9wdGlvbnMpOwotICAgICAgICBpZiAobV9yZXNvdXJjZSkKKyAg
ICAgICAgaWYgKG1fcmVzb3VyY2UpIHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgICAgICAg
ICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyID0gbV9hY3R1YWxSZXF1ZXN0ID8gbV9wcmVmbGln
aHRSZXF1ZXN0SWRlbnRpZmllciA6IG1fcmVzb3VyY2UtPmlkZW50aWZpZXIoKTsKKyAgICAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3Rh
cnRlZExvYWRpbmdGb3JDbGllbnQobV9kb2N1bWVudCwgaWRlbnRpZmllciwgbV9jbGllbnQpOwor
I2VuZGlmCiAgICAgICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQodGhpcyk7CisgICAgICAg
IH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTM5OSw2ICs0MDUsOSBAQCB2b2lk
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBTZWN1cgogICAgIGlmIChtX2RvY3VtZW50LT5mcmFtZSgpKQogICAgICAg
ICBpZGVudGlmaWVyID0gbV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkocmVxdWVzdCwgbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMsIGVycm9y
LCByZXNwb25zZSwgZGF0YSk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdG
b3JDbGllbnQobV9kb2N1bWVudCwgaWRlbnRpZmllciwgbV9jbGllbnQpOworI2VuZGlmCiAgICAg
Ly8gTm8gZXhjZXB0aW9uIGZvciBmaWxlOi8vLyByZXNvdXJjZXMsIHNlZSA8cmRhcjovL3Byb2Js
ZW0vNDk2MjI5OD4uCiAgICAgLy8gQWxzbywgaWYgd2UgaGF2ZSBhbiBIVFRQIHJlc3BvbnNlLCB0
aGVuIGl0IHdhc24ndCBhIG5ldHdvcmsgZXJyb3IgaW4gZmFjdC4KICAgICBpZiAoIWVycm9yLmlz
TnVsbCgpICYmICFyZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkgJiYgcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSA8PSAwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcAppbmRleCA3Mjk4ODkzMjQ5NWM0NzcxNmM2Y2VjOTBkYjQ4Zjg2OWZl
ZmNmMWY5Li4zOGNmZmJkZTBlYWZmZDA5OTAyOTYwMjUxOWNhMmZmNDY0ZGMyMTA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAg
LTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDYWNoZWRSYXdSZXNvdXJjZTo6
Q2FjaGVkUmF3UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCiAgICAg
OiBDYWNoZWRSZXNvdXJjZShyZXNvdXJjZVJlcXVlc3QsIFJhd1Jlc291cmNlKQotICAgICwgbV9p
ZGVudGlmaWVyKDApCiB7CiB9CiAKQEAgLTEwNiw4ICsxMDUsNiBAQCB2b2lkIENhY2hlZFJhd1Jl
c291cmNlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBS
ZXNvdXJjZQogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpzZXRSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBpZiAoIW1faWRlbnRpZmllcikKLSAgICAg
ICAgbV9pZGVudGlmaWVyID0gbV9sb2FkZXItPmlkZW50aWZpZXIoKTsKICAgICBDYWNoZWRSZXNv
dXJjZTo6c2V0UmVzcG9uc2UocmVzcG9uc2UpOwogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUgKENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDc4YmU1YTU3YmRkZjk4YjBj
ZmEyMTExODVmYmM1N2ViMGYxZTUxYTEuLjBmMzQ0ZjNiMDE0NDVhODg1ODg2NTY2Y2MyZTBkODE3
NzY0MTBiZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5oCkBAIC0zOSw5ICszOSw2IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGNhbiBiZSBm
aXhlZCBieSBzcGxpdHRpbmcgQ09SUyBwcmVmbGlnaHRpbmcgb3V0IG9mIERvY3VtZW50VGhyZWFj
YWJsZUxvYWRlci4KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKICAg
ICAKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBleHBvc2VkIGZvciB0aGUgSW5wc2VjdG9ySW5zdHJ1
bWVudGF0aW9uIGZvciBwcmVmbGlnaHRzIGluIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci4gSXQn
cyBhbHNvIHJlYWxseSBsYW1lLgotICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotCiAgICAgYm9vbCBjYW5SZXVzZShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3QgT1ZFUlJJREU7CkBAIC01OSw4ICs1Niw2IEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgdmlydHVhbCB2b2lkIGRpZERvd25s
b2FkRGF0YShpbnQpOwogI2VuZGlmCi0KLSAgICB1bnNpZ25lZCBsb25nIG1faWRlbnRpZmllcjsK
IH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5j
cHAKaW5kZXggODNiYzhlZWQzMDk5NDdmMjhiZGU5NTY2ODc3NDU5NzZkN2UzNjFmZi4uZjRkZjQx
NDY3MWE0MWJkOTE0MmU2NjYwZGZlNDVlOWYxMTdkOGY0ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC03NzMsNyArNzczLDEyIEBAIHVu
c2lnbmVkIENhY2hlZFJlc291cmNlOjpvdmVyaGVhZFNpemUoKSBjb25zdAogICAgIHN0YXRpYyBj
b25zdCBpbnQga0F2ZXJhZ2VDbGllbnRzSGFzaE1hcFNpemUgPSAzODQ7CiAgICAgcmV0dXJuIHNp
emVvZihDYWNoZWRSZXNvdXJjZSkgKyBtX3Jlc3BvbnNlLm1lbW9yeVVzYWdlKCkgKyBrQXZlcmFn
ZUNsaWVudHNIYXNoTWFwU2l6ZSArIG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpLnN0cmluZygpLmxl
bmd0aCgpICogMjsKIH0KLSAgICAKKwordW5zaWduZWQgbG9uZyBDYWNoZWRSZXNvdXJjZTo6aWRl
bnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbG9hZGVyID8gbV9sb2FkZXItPmlkZW50
aWZpZXIoKSA6IDA7Cit9CisKIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnNldExvYWRQcmlvcml0eShS
ZXNvdXJjZUxvYWRQcmlvcml0eSBsb2FkUHJpb3JpdHkpIAogeyAKICAgICBpZiAobG9hZFByaW9y
aXR5ID09IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggOTBhYjRmMmVlYWI3MGNmOWU2OWI3
YTFhMDdlODk3YjNmZTdhNzgzZi4uNWNlZjMwOGQ1ZTQxMDE5NDgwNDQwNmM2NDMyZjQwNjRjZjE3
OWZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgK
QEAgLTE0NSw2ICsxNDUsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCB7
IHJldHVybiBtX2xvYWRpbmc7IH0KICAgICB2b2lkIHNldExvYWRpbmcoYm9vbCBiKSB7IG1fbG9h
ZGluZyA9IGI7IH0KIAorICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0OworCiAg
ICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgaWdub3JlRm9yUmVxdWVzdENvdW50KCkgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAppbmRleCA3M2E1ZGI2Y2VjMjU5MmIyNjc0Zjk4MDg0MzhjNjgyNDNi
ZWU4NDcyLi5kMTVkN2Q0NWNiZmFjYzAwYzI0YjU4N2M0MmRmNGIyNmZkZWY4MGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTY4Miw2ICs2ODIsMTMgQEAgdm9pZCBY
TUxIdHRwUmVxdWVzdDo6c2VuZEJ5dGVzRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBFeGNlcHRpb25Db2QKICAgICBjcmVhdGVSZXF1ZXN0KGVjKTsKIH0KIAordm9pZCBYTUxI
dHRwUmVxdWVzdDo6c2VuZEZyb21JbnNwZWN0b3IoRm9ybURhdGEqIGZvcm1EYXRhLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0gZm9ybURhdGEgPyBmb3Jt
RGF0YS0+ZGVlcENvcHkoKSA6IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAgICBjcmVhdGVSZXF1ZXN0
KGVjKTsKKyAgICBtX2V4Y2VwdGlvbkNvZGUgPSBlYzsKK30KKwogdm9pZCBYTUxIdHRwUmVxdWVz
dDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykKIHsKICNpZiBFTkFCTEUoQkxPQikK
QEAgLTcxNiw2ICs3MjMsOCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJlcXVlc3Quc2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVl
c3Q6OlRhcmdldElzWEhSKTsKICNlbmRpZgogCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsTG9hZFhIUihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIG1fbWV0aG9kLCBt
X3VybCwgbV9hc3luYywgbV9yZXF1ZXN0RW50aXR5Qm9keSA/IG1fcmVxdWVzdEVudGl0eUJvZHkt
PmRlZXBDb3B5KCkgOiAwLCBtX3JlcXVlc3RIZWFkZXJzLCBtX2luY2x1ZGVDcmVkZW50aWFscyk7
CisKICAgICBpZiAobV9yZXF1ZXN0RW50aXR5Qm9keSkgewogICAgICAgICBBU1NFUlQobV9tZXRo
b2QgIT0gIkdFVCIpOwogICAgICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkhFQUQiKTsKQEAgLTc1
MSwxMSArNzYwLDggQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRp
b25Db2RlJiBlYykKICAgICAgICAgICAgIC8vIGFuZCB0aGV5IGFyZSByZWZlcmVuY2VkIGJ5IHRo
ZSBKYXZhU2NyaXB0IHdyYXBwZXIuCiAgICAgICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhp
cyk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxMb2FkWEhSU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OworICAgIH0gZWxzZQogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVxdWVzdCwgKnRoaXMsIG9wdGlv
bnMpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRYSFJTeW5jaHJv
bm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgfQogCiAgICAgaWYgKCFtX2V4
Y2VwdGlvbkNvZGUgJiYgbV9lcnJvcikKICAgICAgICAgbV9leGNlcHRpb25Db2RlID0gWE1MSHR0
cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOwpAQCAtODA4LDYgKzgxNCw4IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmludGVybmFsQWJvcnQoKQogCiAgICAgbV9kZWNvZGVyID0gMDsKIAor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbFhIUkxvYWRpbmcoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCB0aGlzKTsKKwogICAgIGlmIChoYWRMb2FkZXIpCiAgICAgICAgIGRy
b3BQcm90ZWN0aW9uKCk7CiB9CkBAIC0xMDczLDcgKzEwODEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlKQog
CiAgICAgbV9yZXNwb25zZUJ1aWxkZXIuc2hyaW5rVG9GaXQoKTsKIAotICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgaWRlbnRpZmllciwgbV9yZXNwb25zZUJ1aWxkZXIudG9TdHJpbmdQ
cmVzZXJ2ZUNhcGFjaXR5KCksIG1fdXJsLCBtX2xhc3RTZW5kVVJMLCBtX2xhc3RTZW5kTGluZU51
bWJlcik7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hYSFJMb2FkaW5n
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgaWRlbnRpZmllciwgbV9yZXNwb25zZUJ1
aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCksIG1fdXJsLCBtX2xhc3RTZW5kVVJMLCBt
X2xhc3RTZW5kTGluZU51bWJlcik7CiAKICAgICBib29sIGhhZExvYWRlciA9IG1fbG9hZGVyOwog
ICAgIG1fbG9hZGVyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNjA2
NDI4Yjc2YzcxNjQwY2QwYzgxN2MzMThlOTg1Y2FiMmZmNDgyYy4uODliZDdmYWM1YTNiMWNiODli
N2EyNTA1OGQ2YmNlOTJiYzM5NmU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
QEAgLTEwNSw2ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgQmxvYiogcmVzcG9uc2VCbG9iKEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICBCbG9iKiBvcHRpb25hbFJlc3BvbnNlQmxvYigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzcG9uc2VCbG9iLmdldCgpOyB9CiAKKyAgICB2b2lkIHNlbmRGcm9tSW5zcGVjdG9y
KEZvcm1EYXRhKiwgRXhjZXB0aW9uQ29kZSYpOworCiAgICAgLy8gRXhwb3NlIEhUVFAgdmFsaWRh
dGlvbiBtZXRob2RzIGZvciBvdGhlciB1bnRydXN0ZWQgcmVxdWVzdHMuCiAgICAgc3RhdGljIGJv
b2wgaXNBbGxvd2VkSFRUUE1ldGhvZChjb25zdCBTdHJpbmcmKTsKICAgICBzdGF0aWMgU3RyaW5n
IHVwcGVyY2FzZUtub3duSFRUUE1ldGhvZChjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjYWQ1NzU4
MTgxNDYzM2FhNmI5MTVjYjYyOWQ3NTI5N2YyMjU1MTAxLi4wYzVkNzBiYjAxMTJjNTI4OWJhODg5
ZjczYzk2M2ZhOTkwODZkY2EyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTItMDktMTMgIFZz
ZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQWRkIGFiaWxpdHkgdG8gcmVwbGF5IFhIUiBpbiBuZXR3b3JrIHBhbmVsLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUxODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBYSFIgcmVwbGF5
IHRlc3QuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmst
eGhyLXJlcGxheS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItcmVwbGF5Lmh0bWw6IEFkZGVkLgorCisyMDEyLTA5
LTEzICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFtUZXN0c10gRXh0cmFjdCBhIGNvbW1vbiBtZXRob2QgZm9yIHNlbmRpbmcg
eGhycyBmcm9tIHRlc3RzLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTY2NjIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1yZXBsYXkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItcmVwbGF5Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDkzNjk3MWIzMzRmZjk2YzYyMGIyNjk5MGY4NDMxMjNkNDhiY2YzYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14
aHItcmVwbGF5Lmh0bWwKQEAgLTAsMCArMSwxMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL25l
dHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
K3NldFRpbWVvdXQoSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QuYmluZChJbnNwZWN0b3JUZXN0
KSwgMzAwMCk7CisgICAgdmFyIG5ldHdvcmtQYW5lbCA9IFdlYkluc3BlY3Rvci5zaG93UGFuZWwo
Im5ldHdvcmsiKTsKKworICAgIGZ1bmN0aW9uIGxhc3RSZXF1ZXN0KCkKKyAgICB7CisgICAgICAg
IHJldHVybiBuZXR3b3JrUGFuZWwucmVxdWVzdHNbbmV0d29ya1BhbmVsLnJlcXVlc3RzLmxlbmd0
aCAtIDFdOworICAgIH0KKworICAgIGZ1bmN0aW9uIGR1bXBSZXF1ZXN0KHJlcXVlc3QpCisgICAg
eworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtcGluZyByZXF1ZXN0OiAiKTsK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICB1cmw6ICIgKyByZXF1ZXN0LnVy
bCk7CisgICAgICAgIGlmIChyZXF1ZXN0LnJlcXVlc3RGb3JtRGF0YSkKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgICAgcmVxdWVzdEZvcm1EYXRhOiAiICsgcmVxdWVzdC5y
ZXF1ZXN0Rm9ybURhdGEpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICAgIHJl
cXVlc3RNZXRob2Q6ICIgKyByZXF1ZXN0LnJlcXVlc3RNZXRob2QpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiICAgIHRlc3QgcmVxdWVzdCBoZWFkZXIgdmFsdWU6ICIgKyByZXF1
ZXN0LnJlcXVlc3RIZWFkZXJWYWx1ZSgiaGVhZGVyTmFtZSIpKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBhc3NlcnRSZXF1ZXN0RXF1YWwocmVxdWVzdDEsIHJlcXVlc3QyKQorICAgIHsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocmVxdWVzdDEudXJsLCByZXF1ZXN0Mi51cmws
ICJSZXF1ZXN0cyBoYXZlIGRpZmZlcmVudCB1cmwiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMocmVxdWVzdDEucmVxdWVzdEZvcm1EYXRhLCByZXF1ZXN0Mi5yZXF1ZXN0Rm9y
bURhdGEsICJSZXF1ZXN0cyBoYXZlIGRpZmZlcmVudCByZXF1ZXN0Rm9ybURhdGEiKTsKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocmVxdWVzdDEucmVxdWVzdE1ldGhvZCwgcmVx
dWVzdDIucmVxdWVzdE1ldGhvZCwgIlJlcXVlc3RzIGhhdmUgZGlmZmVyZW50IHJlcXVlc3RNZXRo
b2QiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocmVxdWVzdDEucmVxdWVz
dEhlYWRlcnNUZXh0LCByZXF1ZXN0Mi5yZXF1ZXN0SGVhZGVyc1RleHQsICJSZXF1ZXN0cyBoYXZl
IGRpZmZlcmVudCByZXF1ZXN0SGVhZGVyc1RleHQiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0
ZXN0WEhSUmVwbGF5KG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgcGFzc3dvcmQsIGhlYWRlcnMs
IHdpdGhDcmVkZW50aWFscywgcGF5bG9hZCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBJbnNw
ZWN0b3JUZXN0LnJlc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YShzdGVwMSk7CisKKyAgICAgICAg
ZnVuY3Rpb24gc3RlcDEoKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm1h
a2VYSFIobWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd29yZCwgaGVhZGVycywgd2l0aENy
ZWRlbnRpYWxzLCBwYXlsb2FkLCBzdGVwMik7CisgICAgICAgIH0KKworICAgICAgICB2YXIgb3Jp
Z2luYWxSZXF1ZXN0OworICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG9yaWdpbmFsUmVxdWVzdCA9IGxhc3RSZXF1ZXN0KCk7CisgICAgICAgICAgICBkdW1w
UmVxdWVzdChvcmlnaW5hbFJlcXVlc3QpOworICAgICAgICAgICAgTmV0d29ya0FnZW50LnJlcGxh
eVhIUihvcmlnaW5hbFJlcXVlc3QucmVxdWVzdElkKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLCAiX2Fw
cGVuZFJlcXVlc3QiLCBzdGVwMyk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVw
MygpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciByZXBsYXllZFJlcXVlc3QgPSBsYXN0UmVx
dWVzdCgpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEVxdWFsKG9yaWdpbmFsUmVxdWVzdCwg
cmVwbGF5ZWRSZXF1ZXN0KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKworICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rp
b24gdGVzdEdldFN0YXRpY0FzeW5jKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RY
SFJSZXBsYXkoIkdFVCIsICJyZXNvdXJjZXMvZW1wdHkuaHRtbCIsIHRydWUsICJ1c2VyIiwgInBh
c3N3b3JkIiwgW1siaGVhZGVyTmFtZSIsICJoZWFkZXJWYWx1ZSJdXSwgZmFsc2UsIHVuZGVmaW5l
ZCwgbmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEdldFN0YXRpY1N5
bmMobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFhIUlJlcGxheSgiR0VUIiwgInJl
c291cmNlcy9lbXB0eS5odG1sIiwgZmFsc2UsICJ1c2VyIiwgInBhc3N3b3JkIiwgW1siaGVhZGVy
TmFtZSIsICJoZWFkZXJWYWx1ZSJdXSwgZmFsc2UsIHVuZGVmaW5lZCwgbmV4dCk7CisgICAgICAg
IH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEdldENhY2hlZEFzeW5jKG5leHQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHRlc3RYSFJSZXBsYXkoIkdFVCIsICJyZXNvdXJjZXMvcmFuZG9tLWNh
Y2hlZC5waHAiLCB0cnVlLCAidXNlciIsICJwYXNzd29yZCIsIFtbImhlYWRlck5hbWUiLCAiaGVh
ZGVyVmFsdWUiXV0sIGZhbHNlLCB1bmRlZmluZWQsIG5leHQpOworICAgICAgICB9LAorCisgICAg
ICAgIGZ1bmN0aW9uIHRlc3RHZXRDYWNoZWRTeW5jKG5leHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHRlc3RYSFJSZXBsYXkoIkdFVCIsICJyZXNvdXJjZXMvcmFuZG9tLWNhY2hlZC5waHAiLCBm
YWxzZSwgInVzZXIiLCAicGFzc3dvcmQiLCBbWyJoZWFkZXJOYW1lIiwgImhlYWRlclZhbHVlIl1d
LCBmYWxzZSwgdW5kZWZpbmVkLCBuZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlv
biB0ZXN0R2V0UmFuZG9tQXN5bmMobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFhI
UlJlcGxheSgiR0VUIiwgInJlc291cmNlcy9yYW5kb20ucGhwIiwgdHJ1ZSwgInVzZXIiLCAicGFz
c3dvcmQiLCBbWyJoZWFkZXJOYW1lIiwgImhlYWRlclZhbHVlIl1dLCBmYWxzZSwgdW5kZWZpbmVk
LCBuZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0UmFuZG9tU3lu
YyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0WEhSUmVwbGF5KCJHRVQiLCAicmVz
b3VyY2VzL3JhbmRvbS5waHAiLCBmYWxzZSwgInVzZXIiLCAicGFzc3dvcmQiLCBbWyJoZWFkZXJO
YW1lIiwgImhlYWRlclZhbHVlIl1dLCBmYWxzZSwgdW5kZWZpbmVkLCBuZXh0KTsKKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0UG9zdEFzeW5jKG5leHQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHRlc3RYSFJSZXBsYXkoIlBPU1QiLCAicmVzb3VyY2VzL3JhbmRvbS5waHAiLCB0
cnVlLCAidXNlciIsICJwYXNzd29yZCIsIFtbImhlYWRlck5hbWUiLCAiaGVhZGVyVmFsdWUiXV0s
IGZhbHNlLCAicGF5bG9hZCIsIG5leHQpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RQb3N0U3luYyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0WEhSUmVwbGF5
KCJQT1NUIiwgInJlc291cmNlcy9yYW5kb20ucGhwIiwgZmFsc2UsICJ1c2VyIiwgInBhc3N3b3Jk
IiwgW1siaGVhZGVyTmFtZSIsICJoZWFkZXJWYWx1ZSJdXSwgZmFsc2UsICJwYXlsb2FkIiwgbmV4
dCk7CisgICAgICAgIH0KKyAgICBdKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorVGVzdHMgWEhSIHJlcGxheWluZy4KKzxhIGhyZWY9Imh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE4NyI+QnVnIDk1MTg3PC9hPgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164061</attachid>
            <date>2012-09-13 23:59:39 -0700</date>
            <delta_ts>2012-09-14 01:47:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120914105909.patch</filename>
            <type>text/plain</type>
            <size>94627</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY5NmMzM2RhMjMyNDJh
ODU2NTQ3OWE0ZmEwNDc5ZTUzOTBkYmJmOC4uZjRlY2UyZGU0YjcwMDgzNjIxYTQxZTAwNzZhY2Y5
NjdlZjVlYjZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTA5LTEzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCBhYmlsaXR5IHRvIHJlcGxheSBYSFIgaW4gbmV0d29yayBwYW5lbC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYmFzZWQgb24gUGF2
ZWwgQ2hhZG5vdidzIHBhdGNoLgorICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgUmVwbGF5
IFhIUiBmZWF0dXJlIGluIHdlYiBpbnNwZWN0b3IuCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0J3Mg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCBpcyBub3cgdXNlZCB0byBtYXAgWE1MSHR0cFJlcXVlc3Qg
b2JqZWN0IHRvIFJlc291cmNlTG9hZGVyIHJlcXVlc3QgaWRlbnRpZmllcnMuCisgICAgICAgIFJl
c291cmNlIGxvYWRlciBpZGVudGlmaWVyIGlzIG5vdyBleHBvc2VkIG9uIENhY2hlZFJlc291cmNl
IHRvIGJlIGFjY2Vzc2VkIGJ5IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci4KKyAgICAgICAgQmVm
b3JlIGluaXRpYXRpbmcgbG9hZCBhbGwgWEhSIHBhcmFtZXRlcnMgYXJlIG5vdyBzZW50IHRvIGlu
c3BlY3Rvci4KKyAgICAgICAgWE1MSHR0cFJlcXVlc3QgcGFyYW1ldGVycyBhcmUgc3RvcmVkIGlu
IGluc3BlY3RvcidzIG5ldHdvcmsgcmVxdWVzdCBjYWNoZSBpbiBYSFJSZXBsYXlEYXRhIGNsYXNz
LgorICAgICAgICBXaGVuIFhIUiByZXBsYXkgaXMgcmVxdWVzdGVkLCBhIG5ldyBYTUxIdHRwUmVx
dWVzdCBpcyBjcmVhdGVkIGJhc2VkIG9uIHN0b3JlZCBkYXRhLgorCisgICAgICAgIFRlc3Q6IGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItcmVwbGF5Lmh0bWwKKworICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnNv
bGVBZ2VudDo6ZGlkRmluaXNoWEhSTG9hZGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnNvbGVBZ2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yQ29uc29sZUFnZW50KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
b2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsWEhS
TG9hZGluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGaW5pc2hYSFJMb2FkaW5nSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVYSFJSZXNwb25zZUltcGwpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExv
YWRpbmdGb3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsTG9hZFhIUik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZhaWxYSFJMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoWEhSTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVYSFJSZXNwb25zZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxMb2FkWEhSKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxYSFJMb2FkaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZpbmlzaFhIUkxvYWRpbmcpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRSZWNlaXZlWEhSUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6cmVwbGF5WEhSKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JSZXNv
dXJjZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6YWRkSGVhZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnhoclJlcGxheURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnNldFhIUlJlcGxheURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJldXNlWEhSUmVwbGF5RGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6Y2xlYXIpOgorICAgICAgICAq
IGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oOgorICAgICAgICAoWEhSUmVwbGF5RGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpYSFJSZXBsYXlEYXRhOjptZXRob2QpOgorICAgICAgICAo
V2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6dXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlhIUlJlcGxh
eURhdGE6OmFzeW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OmZvcm1EYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OmhlYWRlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6aW5jbHVkZUNyZWRlbnRpYWxzKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNl
RGF0YTo6eGhyUmVwbGF5RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRYSFJSZXBsYXlEYXRhKToKKyAgICAgICAgKFJlc291cmNl
RGF0YSk6CisgICAgICAgIChOZXR3b3JrUmVzb3VyY2VzRGF0YSk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0
d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9jb250ZXh0TWVudSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLl9yZXBsYXlYSFIpOgorICAgICAgICAqIGxvYWRl
ci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdCk6IGFkZGVkIGRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50IGluc3RydW1lbnRhdGlvbgorICAgICAgICBz
byB0aGF0IGluc3BlY3RvciBjb3VsZCBtYXAgWE1MSHR0cFJlcXVlc3QgdG8gUmVzb3VyY2VMb2Fk
ZXIncyBpZGVudGlmaWVycy4KKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jl
c291cmNlKTogUmVtb3ZlZCBtX2lkZW50aWZpZXIgZmllbGQgYXMgaXQgaXMgbm93IGV4cG9zZWQg
b24gQ2FjaGVkUmVzb3VyY2UuCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSYXdSZXNvdXJjZTo6
c2V0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmlkZW50
aWZpZXIpOiBsb2FkZXIgaWRlbnRpZmllciBuZWVkZWQgYnkgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyIGlzIG5vdyBleHBvc2VkIHRocm91Z2ggbV9sb2FkZXIuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaDoKKyAgICAgICAgKENh
Y2hlZFJhd1Jlc291cmNlKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNlbmRGcm9tSW5zcGVjdG9yKTogQWRkZWQg
YSBtZXRob2QgZm9yIHNlbmRpbmcgWE1MSHR0cFJlcXVlc3RzIGJhc2VkIG9uIHJlcXVlc3QgYm9k
eSBzdG9yZWQgaW4gaW5zcGVjdG9yLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdCk6IFJlcGxhY2VkIHdpbGwvZGlkTG9h
ZFhIUlN5bmNob25vdXNseSBpbnN0cnVtZW50YXRpb25zIHdpdGggd2lsbExvYWRYSFIgaW5zdHJ1
bWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OmludGVybmFsQWJv
cnQpOiBBZGRlZCBkaWRGYWlsWEhSTG9hZGluZ0luc3RydW1lbnRhdGlvbgorICAgICAgICAoV2Vi
Q29yZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlzaExvYWRpbmcpOiBBZGRlZCBkaWRGaW5pc2hY
SFJMb2FkaW5nIGluc3RydW1lbnRhdGlvbgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5o
OgorICAgICAgICAoWE1MSHR0cFJlcXVlc3QpOgorCiAyMDEyLTA5LTEzICBMYXVybyBOZXRvICA8
bGF1cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBmYXN0L2Zvcm1z
L2FjY2Vzcy1rZXktZm9yLWFsbC1lbGVtZW50cy5odG1sIGZhaWxzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggZjk4ZWEzM2JiYjM3YmE3ZWUyYTM2MjAxZjY3ZmQ0
NTllNWFiNzY5Zi4uOGI1MDFjOWZmMWUzNDlkZjFjNjE4ZjNhZWVhNjUxMTI0MWM1ZWRlOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtODc1LDYgKzg3NSwxNCBA
QAogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgIm5hbWUiOiAicmVwbGF5WEhSIiwKKyAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiVGhpcyBtZXRob2Qgc2VuZHMgYSBuZXcgWE1MSHR0cFJlcXVlc3Qgd2hpY2ggaXMg
aWRlbnRpY2FsIHRvIHRoZSBvcmlnaW5hbCBvbmUuIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBz
aG91bGQgYmUgaWRlbnRpY2FsOiBtZXRob2QsIHVybCwgYXN5bmMsIHJlcXVlc3QgYm9keSwgZXh0
cmEgaGVhZGVycywgd2l0aENyZWRlbnRpYWxzIGF0dHJpYnV0ZSwgdXNlciwgcGFzc3dvcmQuIiwK
KyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAi
SWRlbnRpZmllciBvZiBYSFIgdG8gcmVwbGF5LiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAg
ICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2FuQ2xlYXJCcm93c2VyQ2FjaGUiLAogICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUZWxscyB3aGV0aGVyIGNsZWFyaW5nIGJyb3dzZXIg
Y2FjaGUgaXMgc3VwcG9ydGVkLiIsCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmlu
ZGV4IDJmM2UyMjQ2ZDA0MzQzNjhlNTJiMjU3N2MzNDc3MjhiZmQxNDJkNzAuLmFjZWIyZGE0YWY2
Zjg1MzUxZjg4ZDk4YzgzZjY5NTgwNTU4MTYyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAg
dm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdpbmRv
dyogd2luZG93KQogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjYXJkSW5qZWN0ZWRT
Y3JpcHRzRm9yKHdpbmRvdyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpyZXNv
dXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGlu
ZU51bWJlcikKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRGaW5pc2hYSFJMb2FkaW5n
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpCiB7CiAgICAgaWYgKCFkZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCA3YmQ2ODk5OTcyYTY2NTg2
MTgyYjZmMDFjMGVlZTU1ODE4MDkzNjE5Li41MmJlMTE4MTgyNTAyZmNjMjAwNjVkNjQ4OWNlNjZi
NjJkMzY0MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnNvbGVBZ2VudC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZnJhbWVX
aW5kb3dEaXNjYXJkZWQoRE9NV2luZG93Kik7CiAKLSAgICB2b2lkIHJlc291cmNlUmV0cmlldmVk
QnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKKyAg
ICB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51
bWJlcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYmZhM2YzMGNjNGMyMTM5ODZh
MmQzZGY5Mjk0NjY2YWQ5YzM2M2UxNy4uOWMyYWNjMzAxMTY0ZTI2YzcxNzA1YWY1MzgwZmExODk2
MWE2MjE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTc2MywzMCArNzYzLDM2IEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVuCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmll
ciwgZXJyb3IpOyAvLyBUaGlzIHNob3VsZCBjb21lIEFGVEVSIHJlc291cmNlIG5vdGlmaWNhdGlv
biwgZnJvbnQtZW5kIHJlbGllcyBvbiB0aGlzLgogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNs
aWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQpCiB7Ci0g
ICAgaWYgKEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCi0gICAgICAgIGNvbnNvbGVBZ2VudC0+
cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIHVybCwgc2VuZFVS
TCwgc2VuZExpbmVOdW1iZXIpOwogICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNv
dXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgp
KQotICAgICAgICByZXNvdXJjZUFnZW50LT5zZXRJbml0aWFsWEhSQ29udGVudChpZGVudGlmaWVy
LCBzb3VyY2VTdHJpbmcpOworICAgICAgICByZXNvdXJjZUFnZW50LT5kb2N1bWVudFRocmVhZGFi
bGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudChpZGVudGlmaWVyLCBjbGllbnQpOwogfQog
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFJJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVy
bCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQogewogICAgIGlmIChJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRS
ZWNlaXZlWEhSUmVzcG9uc2UoaWRlbnRpZmllcik7CisgICAgICAgIHJlc291cmNlQWdlbnQtPndp
bGxMb2FkWEhSKGNsaWVudCwgbWV0aG9kLCB1cmwsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywg
aW5jbHVkZUNyZWRlbnRpYWxzKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZhaWxYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKEluc3Bl
Y3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCisgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZEZhaWxY
SFJMb2FkaW5nKGNsaWVudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsTG9hZFhIUlN5bmNocm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoWEhS
TG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgVGhy
ZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikKIHsKKyAgICBpZiAoSW5zcGVjdG9y
Q29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0
b3JDb25zb2xlQWdlbnQoKSkKKyAgICAgICAgY29uc29sZUFnZW50LT5kaWRGaW5pc2hYSFJMb2Fk
aW5nKGlkZW50aWZpZXIsIHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIpOwogICAgIGlmIChJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT53aWxs
TG9hZFhIUlN5bmNocm9ub3VzbHkoKTsKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmluaXNo
WEhSTG9hZGluZyhjbGllbnQsIGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKICAg
ICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKLSAgICAgICAgcmVzb3VyY2VBZ2Vu
dC0+ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoKTsKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlk
UmVjZWl2ZVhIUlJlc3BvbnNlKGlkZW50aWZpZXIpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6c2NyaXB0SW1wb3J0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMmRlYzIyMDZkNTRmMjE4N2IwNDdkNTE2NTBhODgzZjEw
Y2JmNDI2NS4uMDY0MGIyMDZjYmMxYzhlNzhhOThkMjFlNmE5NzRhNzNkNGIwMjcwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aApAQCAtNzcsNiArNzcsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYWRvd1Jv
b3Q7CiBjbGFzcyBTdG9yYWdlQXJlYTsKIGNsYXNzIFN0eWxlUnVsZTsKK2NsYXNzIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQ7CiBjbGFzcyBXb3JrZXJDb250ZXh0OwogY2xhc3MgV29ya2VyQ29udGV4
dFByb3h5OwogY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CkBAIC0xODMsMTAgKzE4NCwxMSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2Rl
ZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRp
bWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAg
ICBzdGF0aWMgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
b3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVu
c2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKKyAgICBzdGF0aWMgdm9pZCBkb2N1bWVudFRocmVhZGFi
bGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7CisgICAg
c3RhdGljIHZvaWQgd2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgYm9vbCwgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRGYWlsWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCopOworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmcoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxMb2Fk
WEhSU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgc3RhdGljIHZv
aWQgZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAg
IHN0YXRpYyB2b2lkIHNjcmlwdEltcG9ydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgZG9tQ29udGVu
dExvYWRlZEV2ZW50RmlyZWQoRnJhbWUqKTsKQEAgLTM2MiwxMCArMzY0LDExIEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVu
Z3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExv
YWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZEZhaWxMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICBzdGF0
aWMgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25l
ZCBzZW5kTGluZU51bWJlcik7CisgICAgc3RhdGljIHZvaWQgZG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsKKyAgICBzdGF0
aWMgdm9pZCB3aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgYm9vbCwgUGFzc1JlZlB0
cjxGb3JtRGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRGYWlsWEhSTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxMb2Fk
WEhSU3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwotICAgIHN0YXRpYyB2
b2lkIGRpZExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAg
ICAgc3RhdGljIHZvaWQgc2NyaXB0SW1wb3J0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHN0YXRpYyB2b2lkIGRvbUNv
bnRlbnRMb2FkZWRFdmVudEZpcmVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJhbWUqKTsK
QEAgLTExNjgsMzUgKzExNzEsNDQgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGYWlsTG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGUKICNlbmRpZgog
fQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmll
dmVkQnlYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJl
cikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
KiBjbGllbnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250
ZXh0KGNvbnRleHQpKQotICAgICAgICByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RJ
bXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgdXJsLCBz
ZW5kVVJMLCBzZW5kTGluZU51bWJlcik7CisgICAgICAgIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRl
clN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlm
aWVyLCBjbGllbnQpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwg
Y29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0
YSwgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRl
eHQpKQotICAgICAgICBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGlkZW50aWZpZXIpOworICAgICAgICB3aWxsTG9hZFhIUkltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgY2xpZW50LCBtZXRob2QsIHVybCwgYXN5bmMsIGZvcm1EYXRhLCBoZWFkZXJzLCBpbmNs
dWRlQ3JlZGVudGlhbHMpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZh
aWxYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVM
b2FkZXJDbGllbnQqIGNsaWVudCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIHdpbGxMb2FkWEhSU3luY2hyb25vdXNs
eUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgICAgIGRpZEZhaWxYSFJMb2FkaW5nSW1w
bChpbnN0cnVtZW50aW5nQWdlbnRzLCBjbGllbnQpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRGaW5pc2hYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgdW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAg
ICBkaWRMb2FkWEhSU3luY2hyb25vdXNseUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAg
ICAgIGRpZEZpbmlzaFhIUkxvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGNsaWVudCwg
aWRlbnRpZmllciwgc291cmNlU3RyaW5nLCB1cmwsIHNlbmRVUkwsIHNlbmRMaW5lTnVtYmVyKTsK
KyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJl
Y2VpdmVYSFJSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRl
eCA5ZDkyOWM5YTEwYmVkMzRjMjljMjg5NDgxYWIwYTRhNWE2Mjg2OTE0Li5lYTljMzg0NGI4OWJm
ZTcxMThhZmI5ZWFkODI5MWMxODhlZjljNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAK
ICNpbmNsdWRlICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgiCiAKKyNpbmNsdWRlICJDYWNoZWRS
YXdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNjQsNiArNjUs
NyBAQAogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgi
CisjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KQEAgLTMzMyw2ICszMzUsMTIgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUo
RG9jdW1lbnRMb2FkZXIqIGxvYWQKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNG
YWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5yZXNv
dXJjZUNyZWF0ZWQocmVxdWVzdElkLCBsb2FkZXJJZCk7CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5h
ZGRDYWNoZWRSZXNvdXJjZShyZXF1ZXN0SWQsIHJlc291cmNlKTsKKyAgICBpZiAocmVzb3VyY2Ut
PnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UpIHsKKyAgICAgICAgQ2FjaGVk
UmF3UmVzb3VyY2UqIHJhd1Jlc291cmNlID0gc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3VyY2Uq
PihyZXNvdXJjZSk7CisgICAgICAgIFN0cmluZyByYXdSZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0Zh
Y3Rvcnk6OnJlcXVlc3RJZChyYXdSZXNvdXJjZS0+aWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9y
ZXNvdXJjZXNEYXRhLT5yZXVzZVhIUlJlcGxheURhdGEocmVxdWVzdElkLCByYXdSZXF1ZXN0SWQp
OworICAgIH0KKwogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBp
bml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBs
b2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKIAogICAgIG1fZnJvbnRlbmQtPnJlcXVl
c3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9h
ZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWls
ZE9iamVjdEZvckNhY2hlZFJlc291cmNlKCpyZXNvdXJjZSwgbG9hZGVyKSk7CkBAIC0zNDgsMjcg
KzM1Niw1MCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVTY3JpcHRS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5z
ZXRSZXNvdXJjZVR5cGUoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciks
IEluc3BlY3RvclBhZ2VBZ2VudDo6U2NyaXB0UmVzb3VyY2UpOwogfQogCi12b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OnNldEluaXRpYWxYSFJDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCit2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50KQog
ewotICAgIC8vIEZvciBBc3luY2hyb25vdXMgWEhScywgdGhlIGluc3BlY3RvciBjYW4gZ3JhYiB0
aGUgZGF0YSBkaXJlY3RseSBvZmYgb2YgdGhlIENhY2hlZFJlc291cmNlLiBGb3Igc3luYyBYSFJz
LCB3ZSBuZWVkIHRvCi0gICAgLy8gcHJvdmlkZSB0aGUgZGF0YSBoZXJlLCBzaW5jZSBubyBDYWNo
ZWRSZXNvdXJjZSB3YXMgaW52b2x2ZWQuCi0gICAgaWYgKG1fbG9hZGluZ1hIUlN5bmNocm9ub3Vz
bHkpCi0gICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KElkZW50aWZp
ZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBzb3VyY2VTdHJpbmcpOworICAgIGlm
ICghY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBQZW5kaW5nWEhSUmVwbGF5RGF0YU1h
cDo6aXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdYSFJSZXBsYXlEYXRhLmZpbmQoY2xpZW50KTsKKyAg
ICBpZiAoaXQgPT0gbV9wZW5kaW5nWEhSUmVwbGF5RGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgWEhSUmVwbGF5RGF0YSogeGhyUmVwbGF5RGF0YSA9IGl0LT5zZWNvbmQuZ2V0KCk7
CisgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlk
ZW50aWZpZXIpOworICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0WEhSUmVwbGF5RGF0YShyZXF1ZXN0
SWQsIHhoclJlcGxheURhdGEpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRp
ZFJlY2VpdmVYSFJSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OndpbGxMb2FkWEhSKFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNs
aWVudCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywg
UGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRl
cnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQogewotICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0
UmVzb3VyY2VUeXBlKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OlhIUlJlc291cmNlKTsKKyAgICBtX2xvYWRpbmdYSFJTeW5jaHJv
bm91c2x5ID0gIWFzeW5jOworCisgICAgUmVmUHRyPFhIUlJlcGxheURhdGE+IHhoclJlcGxheURh
dGEgPSBYSFJSZXBsYXlEYXRhOjpjcmVhdGUobWV0aG9kLCB1cmwsIGFzeW5jLCBmb3JtRGF0YSwg
aW5jbHVkZUNyZWRlbnRpYWxzKTsKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBoZWFkZXJzLmVuZCgpOworICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCk7IGl0IT0gZW5kOyArK2l0KQorICAgICAgICB4aHJSZXBs
YXlEYXRhLT5hZGRIZWFkZXIoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKKyAgICBtX3BlbmRpbmdY
SFJSZXBsYXlEYXRhLnNldChjbGllbnQsIHhoclJlcGxheURhdGEpOwogfQogCi12b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OndpbGxMb2FkWEhSU3luY2hyb25vdXNseSgpCit2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxYSFJMb2FkaW5nKFRocmVhZGFibGVMb2FkZXJDbGll
bnQqIGNsaWVudCkKIHsKLSAgICBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5ID0gdHJ1ZTsKKyAg
ICBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5ID0gZmFsc2U7CisgICAgbV9wZW5kaW5nWEhSUmVw
bGF5RGF0YS5yZW1vdmUoY2xpZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRMb2FkWEhSU3luY2hyb25vdXNseSgpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZEZpbmlzaFhIUkxvYWRpbmcoVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQogeworICAg
IC8vIEZvciBBc3luY2hyb25vdXMgWEhScywgdGhlIGluc3BlY3RvciBjYW4gZ3JhYiB0aGUgZGF0
YSBkaXJlY3RseSBvZmYgb2YgdGhlIENhY2hlZFJlc291cmNlLiBGb3Igc3luYyBYSFJzLCB3ZSBu
ZWVkIHRvCisgICAgLy8gcHJvdmlkZSB0aGUgZGF0YSBoZXJlLCBzaW5jZSBubyBDYWNoZWRSZXNv
dXJjZSB3YXMgaW52b2x2ZWQuCisgICAgaWYgKG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkpCisg
ICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBzb3VyY2VTdHJpbmcpOwogICAgIG1fbG9hZGlu
Z1hIUlN5bmNocm9ub3VzbHkgPSBmYWxzZTsKKyAgICBtX3BlbmRpbmdYSFJSZXBsYXlEYXRhLnJl
bW92ZShjbGllbnQpOworfQorCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2Vp
dmVYSFJSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7CisgICAgbV9yZXNvdXJj
ZXNEYXRhLT5zZXRSZXNvdXJjZVR5cGUoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRl
bnRpZmllciksIEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2UpOwogfQogCiB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVz
b3VyY2UqIGNhY2hlZFJlc291cmNlKQpAQCAtNTcwLDYgKzYwMSwyMyBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cgogICAgICplcnJvclN0cmluZyA9ICJObyBkYXRhIGZvdW5kIGZvciByZXNvdXJj
ZSB3aXRoIGdpdmVuIGlkZW50aWZpZXIiOwogfQogCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdl
bnQ6OnJlcGxheVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQorewor
ICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4geGhyID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZSht
X3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOworICAgIEV4Y2VwdGlvbkNvZGUg
Y29kZTsKKyAgICBTdHJpbmcgYWN0dWFsUmVxdWVzdElkID0gcmVxdWVzdElkOworCisgICAgWEhS
UmVwbGF5RGF0YSogeGhyUmVwbGF5RGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+eGhyUmVwbGF5RGF0
YShyZXF1ZXN0SWQpOworICAgIGlmICgheGhyUmVwbGF5RGF0YSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgeGhyLT5vcGVuKHhoclJlcGxheURhdGEtPm1ldGhvZCgpLCB4aHJSZXBsYXlEYXRhLT51
cmwoKSwgeGhyUmVwbGF5RGF0YS0+YXN5bmMoKSwgY29kZSk7CisgICAgSFRUUEhlYWRlck1hcDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0geGhyUmVwbGF5RGF0YS0+aGVhZGVycygpLmVuZCgpOworICAg
IGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB4aHJSZXBsYXlEYXRhLT5o
ZWFkZXJzKCkuYmVnaW4oKTsgaXQhPSBlbmQ7ICsraXQpCisgICAgICAgIHhoci0+c2V0UmVxdWVz
dEhlYWRlcihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQsIGNvZGUpOworICAgIHhoci0+c2VuZEZyb21J
bnNwZWN0b3IoeGhyUmVwbGF5RGF0YS0+Zm9ybURhdGEoKSwgY29kZSk7Cit9CisKIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6Y2FuQ2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqLCBi
b29sKiByZXN1bHQpCiB7CiAgICAgKnJlc3VsdCA9IG1fY2xpZW50LT5jYW5DbGVhckJyb3dzZXJD
YWNoZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmgKaW5kZXggZjhmYzhiZDMwNGE2Zjg0YzJhYTk2ZGRlNDBmYmIwZDlmZmY4OTZjYi4u
MTMxMTkzN2I3MzNkOWU2ZDg2ZDdiNzUxNzA1ZTU5NWNmOTM1YTc1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC01MCw3ICs1
MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJlc291cmNlOwogY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKK2NsYXNzIEZvcm1EYXRhOwogY2xhc3Mg
RnJhbWU7CitjbGFzcyBIVFRQSGVhZGVyTWFwOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7CiBjbGFz
cyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKQEAgLTY2LDYgKzY4
LDkgQEAgY2xhc3MgUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudDsKK2NsYXNzIFhIUlJlcGxheURhdGE7CitjbGFzcyBYTUxIdHRwUmVxdWVz
dDsKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKIHN0cnVjdCBXZWJTb2NrZXRGcmFtZTsKQEAg
LTEwMCwxMCArMTA1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIG1haW5GcmFtZU5hdmlnYXRlZChE
b2N1bWVudExvYWRlciopOwogICAgIHZvaWQgc2V0SW5pdGlhbFNjcmlwdENvbnRlbnQodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAg
ICB2b2lkIHNldEluaXRpYWxYSFJDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOworCisgICAgdm9pZCBkb2N1bWVudFRocmVhZGFibGVM
b2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQqKTsKKyAgICB2b2lkIHdpbGxMb2FkWEhSKFRocmVhZGFibGVM
b2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgS1VSTCYsIGJvb2wgYXN5
bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGJvZHksIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRl
cnMsIGJvb2wgaW5jbHVkZUNyZW5kZW50aWFscyk7CisgICAgdm9pZCBkaWRGYWlsWEhSTG9hZGlu
ZyhUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7CisgICAgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5n
KFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91
c2x5KCk7Ci0gICAgdm9pZCBkaWRMb2FkWEhSU3luY2hyb25vdXNseSgpOworCiAgICAgdm9pZCB3
aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAKICAgICB2b2lkIGFw
cGx5VXNlckFnZW50T3ZlcnJpZGUoU3RyaW5nKiB1c2VyQWdlbnQpOwpAQCAtMTM1LDYgKzE0Myw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0
cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+Jik7CiAgICAgdmlydHVhbCB2b2lk
IGdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBT
dHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpOwogCisgICAgdmlydHVhbCB2b2lk
IHJlcGxheVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKKwogICAg
IHZpcnR1YWwgdm9pZCBjYW5DbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyosIGJvb2wqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqKTsKICAgICB2
aXJ0dWFsIHZvaWQgY2FuQ2xlYXJCcm93c2VyQ29va2llcyhFcnJvclN0cmluZyosIGJvb2wqKTsK
QEAgLTE1Myw2ICsxNjMsOCBAQCBwcml2YXRlOgogICAgIE93blB0cjxOZXR3b3JrUmVzb3VyY2Vz
RGF0YT4gbV9yZXNvdXJjZXNEYXRhOwogICAgIGJvb2wgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNs
eTsKIAorICAgIHR5cGVkZWYgSGFzaE1hcDxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgUmVmUHRy
PFhIUlJlcGxheURhdGE+ID4gUGVuZGluZ1hIUlJlcGxheURhdGFNYXA7CisgICAgUGVuZGluZ1hI
UlJlcGxheURhdGFNYXAgbV9wZW5kaW5nWEhSUmVwbGF5RGF0YTsKICAgICAvLyBGSVhNRTogSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3Vs
YXRpb24uCiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IG1fc3R5
bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yOwogICAgIGJvb2wgbV9pc1JlY2FsY3VsYXRpbmdTdHls
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwCmluZGV4IDQ0MTZhZGY3NjdmM2U4ZGUyZGI1NTIyMjRkN2YyNmNlNjVmODhjYzIuLjQxOThm
YjUxZDY5YWJkMDZkMWQwMjNiNDcyNTcxMjkyNjE1YTEwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApAQCAtNDcsNiArNDcsMjUg
QEAgc3RhdGljIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSA9IDEwICog
MTAwMCAqIDEwMDA7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIAorUGFzc1JlZlB0cjxYSFJSZXBs
YXlEYXRhPiBYSFJSZXBsYXlEYXRhOjpjcmVhdGUoY29uc3QgU3RyaW5nICZtZXRob2QsIGNvbnN0
IEtVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGJv
b2wgaW5jbHVkZUNyZWRlbnRpYWxzKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgWEhSUmVw
bGF5RGF0YShtZXRob2QsIHVybCwgYXN5bmMsIGZvcm1EYXRhLCBpbmNsdWRlQ3JlZGVudGlhbHMp
KTsKK30KKwordm9pZCBYSFJSZXBsYXlEYXRhOjphZGRIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9oZWFkZXJzLnNldChrZXksIHZh
bHVlKTsKK30KKworWEhSUmVwbGF5RGF0YTo6WEhSUmVwbGF5RGF0YShjb25zdCBTdHJpbmcgJm1l
dGhvZCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBm
b3JtRGF0YSwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCisgICAgOiBtX21ldGhvZChtZXRob2Qp
CisgICAgLCBtX3VybCh1cmwpCisgICAgLCBtX2FzeW5jKGFzeW5jKQorICAgICwgbV9mb3JtRGF0
YShmb3JtRGF0YSkKKyAgICAsIG1faW5jbHVkZUNyZWRlbnRpYWxzKGluY2x1ZGVDcmVkZW50aWFs
cykKK3sKK30KKwogLy8gUmVzb3VyY2VEYXRhCiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3Vy
Y2VEYXRhOjpSZXNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgbG9hZGVySWQpCiAgICAgOiBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpCkBAIC0yNTMsNiArMjcy
LDQ2IEBAIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpkYXRhKGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIG1fcmVxdWVzdElkVG9S
ZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCk7CiB9CiAKK1hIUlJlcGxheURhdGEqIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjp4aHJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQor
eworICAgIGlmIChtX3JldXNlZFhIUlJlcGxheURhdGFSZXF1ZXN0SWRzLmNvbnRhaW5zKHJlcXVl
c3RJZCkpCisgICAgICAgIHJldHVybiB4aHJSZXBsYXlEYXRhKG1fcmV1c2VkWEhSUmVwbGF5RGF0
YVJlcXVlc3RJZHMuZ2V0KHJlcXVlc3RJZCkpOworCisgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJj
ZURhdGEgPSBtX3JlcXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOworICAg
IGlmICghcmVzb3VyY2VEYXRhKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gcmVzb3Vy
Y2VEYXRhLT54aHJSZXBsYXlEYXRhKCk7Cit9CisKK3ZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6
OnNldFhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFhIUlJlcGxheURhdGEq
IHhoclJlcGxheURhdGEpCit7CisgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX3Jl
cXVlc3RJZFRvUmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOworICAgIGlmICghcmVzb3Vy
Y2VEYXRhKSB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKKyAgICAgICAgUmV1c2Vk
UmVxdWVzdElkczo6aXRlcmF0b3IgaXQ7CisgICAgICAgIFJldXNlZFJlcXVlc3RJZHM6Oml0ZXJh
dG9yIGVuZCA9IG1fcmV1c2VkWEhSUmVwbGF5RGF0YVJlcXVlc3RJZHMuZW5kKCk7CisgICAgICAg
IGZvciAoaXQgPSBtX3JldXNlZFhIUlJlcGxheURhdGFSZXF1ZXN0SWRzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaWYgKGl0LT5zZWNvbmQgPT0gcmVxdWVzdElkKQor
ICAgICAgICAgICAgICAgIHNldFhIUlJlcGxheURhdGEoaXQtPmZpcnN0LCB4aHJSZXBsYXlEYXRh
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVzb3VyY2VEYXRh
LT5zZXRYSFJSZXBsYXlEYXRhKHhoclJlcGxheURhdGEpOworfQorCit2b2lkIE5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpyZXVzZVhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgcmV1c2VkUmVxdWVzdElkKQoreworICAgIFJlc291cmNlRGF0YSogcmV1c2Vk
UmVzb3VyY2VEYXRhID0gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmV1c2VkUmVx
dWVzdElkKTsKKyAgICBSZXNvdXJjZURhdGEqIHJlc291cmNlRGF0YSA9IG1fcmVxdWVzdElkVG9S
ZXNvdXJjZURhdGFNYXAuZ2V0KHJlcXVlc3RJZCk7CisgICAgaWYgKCFyZXVzZWRSZXNvdXJjZURh
dGEgfHwgIXJlc291cmNlRGF0YSkgeworICAgICAgICBtX3JldXNlZFhIUlJlcGxheURhdGFSZXF1
ZXN0SWRzLnNldChyZXF1ZXN0SWQsIHJldXNlZFJlcXVlc3RJZCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICByZXNvdXJjZURhdGEtPnNldFhIUlJlcGxheURhdGEocmV1c2VkUmVzb3Vy
Y2VEYXRhLT54aHJSZXBsYXlEYXRhKCkpOworfQorCiBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJl
c291cmNlKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKQEAgLTI4Niw2ICszNDUsOCBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpjbGVhcihjb25zdCBTdHJpbmcmIHByZXNlcnZl
ZExvYWRlcklkKQogICAgICAgICAgICAgZGVsZXRlIHJlc291cmNlRGF0YTsKICAgICB9CiAgICAg
bV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5zd2FwKHByZXNlcnZlZE1hcCk7CisKKyAgICBt
X3JldXNlZFhIUlJlcGxheURhdGFSZXF1ZXN0SWRzLmNsZWFyKCk7CiB9CiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlc0RhdGE6OnNldFJlc291cmNlc0RhdGFTaXplTGltaXRzKHNpemVfdCBtYXhpbXVt
UmVzb3VyY2VzQ29udGVudFNpemUsIHNpemVfdCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50
U2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmgKaW5kZXggOGRmZDVkZDBkYmIyMTFhMGM0OTJlYTZmMWZkM2E0OGU5MDc3MWVjOC4uMjI1OTUy
MWE5OTQ2YWZkN2M3YWQwNjc4ZTA0ZGFhYWIwYjVjNmVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmgKQEAgLTQ2LDYgKzQ2LDI4IEBAIGNs
YXNzIENhY2hlZFJlc291cmNlOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVGV4dFJlc291
cmNlRGVjb2RlcjsKIAorY2xhc3MgWEhSUmVwbGF5RGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFhI
UlJlcGxheURhdGE+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxYSFJSZXBsYXlE
YXRhPiBjcmVhdGUoY29uc3QgU3RyaW5nICZtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5j
LCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpOworCisgICAg
dm9pZCBhZGRIZWFkZXIoY29uc3QgQXRvbWljU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFs
dWUpOworICAgIGNvbnN0IFN0cmluZyYgbWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9tZXRob2Q7
IH0KKyAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGJv
b2wgYXN5bmMoKSBjb25zdCB7IHJldHVybiBtX2FzeW5jOyB9CisgICAgRm9ybURhdGEqIGZvcm1E
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9mb3JtRGF0YS5nZXQoKTsgfQorICAgIGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlcnM7IH0KKyAgICBib29s
IGluY2x1ZGVDcmVkZW50aWFscygpIGNvbnN0IHsgcmV0dXJuIG1faW5jbHVkZUNyZWRlbnRpYWxz
OyB9Citwcml2YXRlOgorICAgIFhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5nICZtZXRob2QsIGNv
bnN0IEtVUkwmLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgYm9vbCBpbmNsdWRl
Q3JlZGVudGlhbHMpOworCisgICAgU3RyaW5nIG1fbWV0aG9kOworICAgIEtVUkwgbV91cmw7Cisg
ICAgYm9vbCBtX2FzeW5jOworICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9mb3JtRGF0YTsKKyAgICBI
VFRQSGVhZGVyTWFwIG1faGVhZGVyczsKKyAgICBib29sIG1faW5jbHVkZUNyZWRlbnRpYWxzOwor
fTsKKwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogcHVibGljOgogICAgIGNsYXNzIFJl
c291cmNlRGF0YSB7CkBAIC05MCw2ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIENhY2hlZFJl
c291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2U7
IH0KICAgICAgICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVk
UmVzb3VyY2UpIHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlOyB9CiAKKyAgICAg
ICAgWEhSUmVwbGF5RGF0YSogeGhyUmVwbGF5RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1feGhyUmVw
bGF5RGF0YS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldFhIUlJlcGxheURhdGEoWEhSUmVwbGF5
RGF0YSogeGhyUmVwbGF5RGF0YSkgeyBtX3hoclJlcGxheURhdGEgPSB4aHJSZXBsYXlEYXRhOyB9
CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CkBAIC0xMDEs
NiArMTI1LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV9mcmFtZUlkOwogICAgICAgICBT
dHJpbmcgbV91cmw7CiAgICAgICAgIFN0cmluZyBtX2NvbnRlbnQ7CisgICAgICAgIFJlZlB0cjxY
SFJSZXBsYXlEYXRhPiBtX3hoclJlcGxheURhdGE7CiAgICAgICAgIGJvb2wgbV9iYXNlNjRFbmNv
ZGVkOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAg
IGJvb2wgbV9pc0NvbnRlbnRQdXJnZWQ7CkBAIC0xMzIsNiArMTU3LDkgQEAgcHVibGljOgogICAg
IHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiBwcmVzZXJ2ZWRMb2FkZXJJZCA9IFN0cmluZygpKTsK
IAogICAgIHZvaWQgc2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoc2l6ZV90IG1heGltdW1SZXNv
dXJjZXNDb250ZW50U2l6ZSwgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRlbnRTaXpl
KTsKKyAgICB2b2lkIHNldFhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFhI
UlJlcGxheURhdGEqKTsKKyAgICB2b2lkIHJldXNlWEhSUmVwbGF5RGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiByZXVzZWRSZXF1ZXN0SWQpOworICAgIFhIUlJlcGxh
eURhdGEqIHhoclJlcGxheURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogCiBwcml2YXRl
OgogICAgIHZvaWQgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkKTsKQEAgLTEzOSw2ICsxNjcsOCBAQCBwcml2YXRlOgogCiAgICAgRGVxdWU8U3RyaW5nPiBt
X3JlcXVlc3RJZHNEZXF1ZTsKIAorICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
UmV1c2VkUmVxdWVzdElkczsKKyAgICBSZXVzZWRSZXF1ZXN0SWRzIG1fcmV1c2VkWEhSUmVwbGF5
RGF0YVJlcXVlc3RJZHM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VEYXRh
Kj4gUmVzb3VyY2VEYXRhTWFwOwogICAgIFJlc291cmNlRGF0YU1hcCBtX3JlcXVlc3RJZFRvUmVz
b3VyY2VEYXRhTWFwOwogICAgIHNpemVfdCBtX2NvbnRlbnRTaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCA1YzgwYWMx
NzgyMDhlNWIyMDkzOTdmNjA5NzVhYzcwNDcwYjcwNjc2Li5jN2I5MDA2MzIxN2MwYmJiNDkwMTg4
YWM4NjJiODdmYjg0M2VkNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpAQCAtOTYyLDggKzk2MiwyMSBAQCBXZWJJbnNwZWN0
b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fY2FuQ2xl
YXJCcm93c2VyQ29va2llcykKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkg
PyAiQ2xlYXIgYnJvd3NlciBjb29raWVzIiA6ICJDbGVhciBCcm93c2VyIENvb2tpZXMiKSwgdGhp
cy5fY2xlYXJCcm93c2VyQ29va2llcy5iaW5kKHRoaXMpKTsKIAorCisgICAgICAgIGlmIChyZXF1
ZXN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlhIUikgeworICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVwbGF5IFhIUiIpLCB0aGlzLl9y
ZXBsYXlYSFIuYmluZCh0aGlzLCByZXF1ZXN0LnJlcXVlc3RJZCkpOworICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIH0KKwogICAgICAgICBjb250ZXh0
TWVudS5zaG93KGV2ZW50KTsKICAgICB9LAorICAgIAorICAgIF9yZXBsYXlYSFI6IGZ1bmN0aW9u
KHJlcXVlc3RJZCkKKyAgICB7CisgICAgICAgIE5ldHdvcmtBZ2VudC5yZXBsYXlYSFIocmVxdWVz
dElkKTsKKyAgICB9LAorICAgIAogCiAgICAgX2NvcHlBbGw6IGZ1bmN0aW9uKCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3Bw
CmluZGV4IGEwYzY0ODljYjA2MzkwOTBhZDk1MzlkODRiNGUyZTA5ZWY0NWM2YmIuLmYzYzQ5YmYw
ZWIyNGFmMGE1YjFiNDA3ZGUwNjA5MDRiNTk3N2I3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0zODYsOCArMzg2LDEz
IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAjZW5kaWYKICAgICAgICAgQVNTRVJUKCFtX3Jl
c291cmNlKTsKICAgICAgICAgbV9yZXNvdXJjZSA9IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNl
TG9hZGVyKCktPnJlcXVlc3RSYXdSZXNvdXJjZShuZXdSZXF1ZXN0LCBvcHRpb25zKTsKLSAgICAg
ICAgaWYgKG1fcmVzb3VyY2UpCisgICAgICAgIGlmIChtX3Jlc291cmNlKSB7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IG1fYWN0
dWFsUmVxdWVzdCA/IG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgOiBtX3Jlc291cmNlLT5p
ZGVudGlmaWVyKCk7CisgICAgICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KG1fZG9jdW1lbnQsIGlk
ZW50aWZpZXIsIG1fY2xpZW50KTsKKyNlbmRpZgogICAgICAgICAgICAgbV9yZXNvdXJjZS0+YWRk
Q2xpZW50KHRoaXMpOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBA
IC0zOTksNiArNDA0LDkgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXF1
ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICAgICBpZiAobV9kb2N1
bWVudC0+ZnJhbWUoKSkKICAgICAgICAgaWRlbnRpZmllciA9IG1fZG9jdW1lbnQtPmZyYW1lKCkt
PmxvYWRlcigpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QsIG1fb3B0aW9ucy5h
bGxvd0NyZWRlbnRpYWxzLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogCisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KG1fZG9jdW1lbnQsIGlkZW50aWZpZXIsIG1f
Y2xpZW50KTsKKyNlbmRpZgogICAgIC8vIE5vIGV4Y2VwdGlvbiBmb3IgZmlsZTovLy8gcmVzb3Vy
Y2VzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5NjIyOTg+LgogICAgIC8vIEFsc28sIGlmIHdlIGhh
dmUgYW4gSFRUUCByZXNwb25zZSwgdGhlbiBpdCB3YXNuJ3QgYSBuZXR3b3JrIGVycm9yIGluIGZh
Y3QuCiAgICAgaWYgKCFlcnJvci5pc051bGwoKSAmJiAhcmVxdWVzdFVSTC5pc0xvY2FsRmlsZSgp
ICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPD0gMCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggNzI5ODg5MzI0OTVj
NDc3MTZjNmNlYzkwZGI0OGY4NjlmZWZjZjFmOS4uMzkxMWNhNDM5ZGU5NjMwY2JkZDM3Yjc1M2Vm
ZWFiNWVmY2Q3YTM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0zOCw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogQ2FjaGVkUmF3UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKFJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0KQogICAgIDogQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2VSZXF1ZXN0LCBS
YXdSZXNvdXJjZSkKLSAgICAsIG1faWRlbnRpZmllcigwKQogewogfQogCkBAIC0xMDYsOCArMTA1
LDYgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2UKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6
c2V0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYg
KCFtX2lkZW50aWZpZXIpCi0gICAgICAgIG1faWRlbnRpZmllciA9IG1fbG9hZGVyLT5pZGVudGlm
aWVyKCk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnNldFJlc3BvbnNlKHJlc3BvbnNlKTsKICAgICBD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2Ns
aWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgp
KQpAQCAtMTI3LDYgKzEyNCwxMSBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpzZXREZWZlcnNM
b2FkaW5nKGJvb2wgZGVmZXJzKQogICAgICAgICBtX2xvYWRlci0+c2V0RGVmZXJzTG9hZGluZyhk
ZWZlcnMpOwogfQogCit1bnNpZ25lZCBsb25nIENhY2hlZFJhd1Jlc291cmNlOjppZGVudGlmaWVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sb2FkZXIgPyBtX2xvYWRlci0+aWRlbnRpZmllcigp
IDogMDsKK30KKwogYm9vbCBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FuUmV1c2UoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KSBjb25zdAogewogICAgIGlmIChtX29wdGlvbnMuc2hvdWxk
QnVmZmVyRGF0YSA9PSBEb05vdEJ1ZmZlckRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCmluZGV4IDc4YmU1YTU3YmRkZjk4YjBjZmEyMTEx
ODVmYmM1N2ViMGYxZTUxYTEuLjRiNjg0MjczMmM2ZDA4NjUwNTIxY2EwNTVmYjY5N2RhZWZjMTE3
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJj
ZS5oCkBAIC0zOSw4ICszOSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGNhbiBiZSBmaXhlZCBi
eSBzcGxpdHRpbmcgQ09SUyBwcmVmbGlnaHRpbmcgb3V0IG9mIERvY3VtZW50VGhyZWFjYWJsZUxv
YWRlci4KICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKICAgICAKLSAg
ICAvLyBGSVhNRTogVGhpcyBpcyBleHBvc2VkIGZvciB0aGUgSW5wc2VjdG9ySW5zdHJ1bWVudGF0
aW9uIGZvciBwcmVmbGlnaHRzIGluIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlci4gSXQncyBhbHNv
IHJlYWxseSBsYW1lLgotICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcigpIGNvbnN0
OwogCiAgICAgYm9vbCBjYW5SZXVzZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKIApA
QCAtNTksOCArNTgsNiBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgIHZp
cnR1YWwgdm9pZCBkaWREb3dubG9hZERhdGEoaW50KTsKICNlbmRpZgotCi0gICAgdW5zaWduZWQg
bG9uZyBtX2lkZW50aWZpZXI7CiB9OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCmluZGV4IDczYTVkYjZjZWMyNTkyYjI2NzRmOTgwODQzOGM2ODI0M2JlZTg0NzIuLmQxNWQ3
ZDQ1Y2JmYWNjMDBjMjRiNTg3YzQyZGY0YjI2ZmRlZjgwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcApAQCAtNjgyLDYgKzY4MiwxMyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpzZW5kQnl0ZXNEYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBsZW5ndGgsIEV4Y2VwdGlv
bkNvZAogICAgIGNyZWF0ZVJlcXVlc3QoZWMpOwogfQogCit2b2lkIFhNTEh0dHBSZXF1ZXN0Ojpz
ZW5kRnJvbUluc3BlY3RvcihGb3JtRGF0YSogZm9ybURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIG1fcmVxdWVzdEVudGl0eUJvZHkgPSBmb3JtRGF0YSA/IGZvcm1EYXRhLT5kZWVwQ29w
eSgpIDogRm9ybURhdGE6OmNyZWF0ZSgpOworICAgIGNyZWF0ZVJlcXVlc3QoZWMpOworICAgIG1f
ZXhjZXB0aW9uQ29kZSA9IGVjOworfQorCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1
ZXN0KEV4Y2VwdGlvbkNvZGUmIGVjKQogewogI2lmIEVOQUJMRShCTE9CKQpAQCAtNzE2LDYgKzcy
Myw4IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgcmVxdWVzdC5zZXRUYXJnZXRUeXBlKFJlc291cmNlUmVxdWVzdDo6VGFyZ2V0SXNY
SFIpOwogI2VuZGlmCiAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhS
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgbV9tZXRob2QsIG1fdXJsLCBtX2FzeW5j
LCBtX3JlcXVlc3RFbnRpdHlCb2R5ID8gbV9yZXF1ZXN0RW50aXR5Qm9keS0+ZGVlcENvcHkoKSA6
IDAsIG1fcmVxdWVzdEhlYWRlcnMsIG1faW5jbHVkZUNyZWRlbnRpYWxzKTsKKwogICAgIGlmICht
X3JlcXVlc3RFbnRpdHlCb2R5KSB7CiAgICAgICAgIEFTU0VSVChtX21ldGhvZCAhPSAiR0VUIik7
CiAgICAgICAgIEFTU0VSVChtX21ldGhvZCAhPSAiSEVBRCIpOwpAQCAtNzUxLDExICs3NjAsOCBA
QCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgICAgICAgICAgLy8gYW5kIHRoZXkgYXJlIHJlZmVyZW5jZWQgYnkgdGhlIEphdmFTY3JpcHQg
d3JhcHBlci4KICAgICAgICAgICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICAgICAg
fQotICAgIH0gZWxzZSB7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExv
YWRYSFJTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgfSBlbHNl
CiAgICAgICAgIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXF1ZXN0LCAqdGhpcywgb3B0aW9ucyk7Ci0gICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICB9CiAKICAgICBpZiAoIW1fZXhjZXB0aW9uQ29kZSAm
JiBtX2Vycm9yKQogICAgICAgICBtX2V4Y2VwdGlvbkNvZGUgPSBYTUxIdHRwUmVxdWVzdEV4Y2Vw
dGlvbjo6TkVUV09SS19FUlI7CkBAIC04MDgsNiArODE0LDggQEAgdm9pZCBYTUxIdHRwUmVxdWVz
dDo6aW50ZXJuYWxBYm9ydCgpCiAKICAgICBtX2RlY29kZXIgPSAwOwogCisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsWEhSTG9hZGluZyhzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIHRoaXMpOworCiAgICAgaWYgKGhhZExvYWRlcikKICAgICAgICAgZHJvcFByb3RlY3Rpb24o
KTsKIH0KQEAgLTEwNzMsNyArMTA4MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmRpZEZpbmlz
aExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUpCiAKICAgICBtX3Jlc3Bv
bnNlQnVpbGRlci5zaHJpbmtUb0ZpdCgpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLCBpZGVudGlmaWVyLCBtX3Jlc3BvbnNlQnVpbGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNp
dHkoKSwgbV91cmwsIG1fbGFzdFNlbmRVUkwsIG1fbGFzdFNlbmRMaW5lTnVtYmVyKTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmcoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCB0aGlzLCBpZGVudGlmaWVyLCBtX3Jlc3BvbnNlQnVpbGRlci50b1N0cmlu
Z1ByZXNlcnZlQ2FwYWNpdHkoKSwgbV91cmwsIG1fbGFzdFNlbmRVUkwsIG1fbGFzdFNlbmRMaW5l
TnVtYmVyKTsKIAogICAgIGJvb2wgaGFkTG9hZGVyID0gbV9sb2FkZXI7CiAgICAgbV9sb2FkZXIg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCA2MDY0MjhiNzZjNzE2NDBj
ZDBjODE3YzMxOGU5ODVjYWIyZmY0ODJjLi44OWJkN2ZhYzVhM2IxY2I4OWI3YTI1MDU4ZDZiY2U5
MmJjMzk2ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaApAQCAtMTA1LDYgKzEw
NSw4IEBAIHB1YmxpYzoKICAgICBCbG9iKiByZXNwb25zZUJsb2IoRXhjZXB0aW9uQ29kZSYpOwog
ICAgIEJsb2IqIG9wdGlvbmFsUmVzcG9uc2VCbG9iKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25z
ZUJsb2IuZ2V0KCk7IH0KIAorICAgIHZvaWQgc2VuZEZyb21JbnNwZWN0b3IoRm9ybURhdGEqLCBF
eGNlcHRpb25Db2RlJik7CisKICAgICAvLyBFeHBvc2UgSFRUUCB2YWxpZGF0aW9uIG1ldGhvZHMg
Zm9yIG90aGVyIHVudHJ1c3RlZCByZXF1ZXN0cy4KICAgICBzdGF0aWMgYm9vbCBpc0FsbG93ZWRI
VFRQTWV0aG9kKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBTdHJpbmcgdXBwZXJjYXNlS25v
d25IVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDVhNzg5MmUxMzllODQ2MWMzZDIz
NjEzZmY3MTI2ZjA4MGEzOWY4YjAuLjBjNWQ3MGJiMDExMmM1Mjg5YmE4ODlmNzNjOTYzZmE5OTA4
NmRjYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBAQAorMjAxMi0wOS0xMyAgVnNldm9sb2QgVmxhc292
ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgYWJp
bGl0eSB0byByZXBsYXkgWEhSIGluIG5ldHdvcmsgcGFuZWwuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE4NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIFhIUiByZXBsYXkgdGVzdC4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItcmVwbGF5LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLXhoci1yZXBsYXkuaHRtbDogQWRkZWQuCisKKzIwMTItMDktMTMgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
W1Rlc3RzXSBFeHRyYWN0IGEgY29tbW9uIG1ldGhvZCBmb3Igc2VuZGluZyB4aHJzIGZyb20gdGVz
dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjY2
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4dHJh
Y3RlZCBJbnNwZWN0b3JUZXN0Lm1ha2VYSFIoKSBtZXRob2RzIHRvIHNpbXBsaWZ5IHRlc3RzLgor
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvYXBwY2FjaGUvYXBwY2FjaGUtc3dhcC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvYXBwY2FjaGUvYXBw
Y2FjaGUtc3dhcC5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUt
eGhyLWxvZ2dpbmctYXN5bmMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUteGhyLWxvZ2dpbmctYXN5bmMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6CisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10ZXN0LmpzOgorICAgICAgICAoeGhyTG9hZGVkQ2FsbGJh
Y2spOgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3b3JrVGVzdC5JbnNwZWN0b3JUZXN0Lm1ha2VT
aW1wbGVYSFIpOgorICAgICAgICAoaW5pdGlhbGl6ZV9OZXR3b3JrVGVzdC5JbnNwZWN0b3JUZXN0
Lm1ha2VTaW1wbGVYSFJXaXRoUGF5bG9hZCk6CisgICAgICAgIChpbml0aWFsaXplX05ldHdvcmtU
ZXN0Lkluc3BlY3RvclRlc3QubWFrZVhIUi5pbm5lckNhbGxiYWNrKToKKyAgICAgICAgKGluaXRp
YWxpemVfTmV0d29ya1Rlc3QuSW5zcGVjdG9yVGVzdC5tYWtlWEhSKToKKyAgICAgICAgKGRvU2lt
cGxlWEhSKToKKyAgICAgICAgKGRvU2ltcGxlWEhSV2l0aFBheWxvYWQpOgorICAgICAgICAoZG9Y
SFIpOgorICAgICAgICAobWFrZVhIUik6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9hc3luYy14aHItanNvbi1taW1lLXR5cGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvYXN5bmMteGhyLWpzb24tbWltZS10eXBlLmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNsZWFy
LWNhY2hlLmh0bWwtZGlzYWJsZWQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLWNsZWFyLWNvb2tpZXMuaHRtbC1kaXNhYmxlZDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC14aHIt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1jb250ZW50LXJlcGxhY2VtZW50LXhoci5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jeXJpbGxpYy14aHItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jeXJpbGxpYy14aHIu
aHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlz
YWJsZS1jYWNoZS14aHJzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS14aHJzLmh0bWw6CisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGluZy1jaGVjay1uby1t
ZW1vcnktbGVhay1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLWRpc2FibGluZy1jaGVjay1uby1tZW1vcnktbGVhay5odG1sOgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbXB0eS14aHItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay1lbXB0eS14aHIuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstc2lkZWJhci13aWR0aC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpZGViYXItd2lkdGguaHRtbDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2l6ZS1zeW5jLmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1hc3luYy1k
b3VibGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay14aHItYXN5bmMtZG91YmxlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1hc3luYy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1hc3luYy5odG1sOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc2FtZS11
cmwtYXMtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1zYW1lLXVybC1hcy1tYWluLXJlc291cmNlLmh0
bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1z
eW5jLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmsteGhyLXN5bmMuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtbm8teGhycy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLW5vLXho
cnMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9jb25zb2xlLXhoci1sb2dnaW5nLWFzeW5jLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWV4
cGVjdGVkLnR4dDoKKwogMjAxMi0wOS0xMyAgTGF1cm8gTmV0byAgPGxhdXJvLm5ldG9Ab3BlbmJv
c3NhLm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gZmFzdC9mb3Jtcy9hY2Nlc3Mta2V5LWZvci1h
bGwtZWxlbWVudHMuaHRtbCBmYWlscwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvYXBwY2FjaGUvYXBwY2FjaGUtc3dhcC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9hcHBjYWNoZS9hcHBjYWNoZS1zd2FwLWV4cGVjdGVk
LnR4dAppbmRleCA1MmI3MGY5ZDRmZTJkYjQyNzk4NzA0YTliZDNjNTc4ZjhhZjEyYjgyLi43NmRl
NmQ2ZDNmODI5NGEzZWE1OWI4N2E5YWNjZWZmYWZmZmUyZWQzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9hcHBjYWNoZS9hcHBjYWNoZS1zd2FwLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9hcHBjYWNoZS9hcHBj
YWNoZS1zd2FwLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTog
bGluZSAxNDogRG9uZS4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBYSFIgbG9hZGVkOiAxCiBU
ZXN0cyB0aGF0IGFwcGxpY2F0aW9uIGNhY2hlIG1vZGVsIGtlZXBzIHRyYWNrIG9mIG1hbmlmZXN0
IHVybHMgYW5kIHN0YXR1c2VzIGNvcnJlY3RseSBhZnRlciBVUERBVEVSRUFEWSBldmVudCBhbmQg
c3dhcENhY2hlKCkgY2FsbC4KIAogQnVnIDcyMTIzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9hcHBjYWNoZS9hcHBjYWNoZS1zd2FwLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9hcHBjYWNoZS9hcHBjYWNoZS1zd2FwLmh0bWwKaW5k
ZXggYzgyZjlmMDBiNTI2NGJlN2IwYWMyZDRmNDFjMWZjNjcxYzI2ZjBjMi4uMzdiMmJhOTA2YjU1
YjVjOTZlZDUyM2E1NzkyYWUyMzVkYmE3NjIyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvYXBwY2FjaGUvYXBwY2FjaGUtc3dhcC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2FwcGNhY2hlL2FwcGNhY2hlLXN3YXAuaHRtbApA
QCAtNCwxNiArNCw2IEBACiA8c2NyaXB0IHNyYz0iYXBwY2FjaGUtdGVzdC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1m
dW5jdGlvbiBzdGVwTWFuaWZlc3RWZXJzaW9uKCkKLXsKLSAgICBkb1hIUigiR0VUIiwgInJlc291
cmNlcy92ZXJzaW9uZWQtbWFuaWZlc3QucGhwP2NvbW1hbmQ9c3RlcCIsIHRydWUsIHhockxvYWRl
ZCk7Ci19Ci0KLWZ1bmN0aW9uIHhockxvYWRlZCgpCi17Ci0gICAgY29uc29sZS5sb2coIkRvbmUu
Iik7Ci19Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIHZhciBmcmFtZUlkMTsKQEAgLTMzLDgg
KzIzLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgZnVuY3Rpb24gc3RlcDIoKQogICAgIHsKICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wQXBwbGljYXRpb25DYWNoZSgpOwotICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZENvbnNvbGVTbmlmZmVyKHN0ZXAzKTsKLSAgICAgICAgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZSgic3RlcE1hbmlmZXN0VmVyc2lvbigpIik7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QubWFrZVNpbXBsZVhIUigiR0VUIiwgInJlc291cmNlcy92ZXJzaW9uZWQtbWFuaWZl
c3QucGhwP2NvbW1hbmQ9c3RlcCIsIHRydWUsIHN0ZXAzKTsKICAgICB9CiAKICAgICBmdW5jdGlv
biBzdGVwMygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9j
b25zb2xlLXhoci1sb2dnaW5nLWFzeW5jLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUteGhyLWxvZ2dpbmctYXN5bmMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGZiNTk5ZmYyMmNiMmE3ODNjYTc1MjkyMTJlNDExYjA1YWNlYjdhNzEuLjYyMTYxYjNlYjM4
MGNmNTFhZjEyZGQxMjU2YzMxZDkwZDE4ZjUxZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUteGhyLWxvZ2dpbmctYXN5bmMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUteGhyLWxvZ2dp
bmctYXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsOSBAQAotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDE0OiBEb25lLgotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE0OiBEb25lLgorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDY6IFhIUiBsb2FkZWQ6IDEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBY
SFIgbG9hZGVkOiAyCiBUZXN0cyB0aGF0IFhNTEh0dHBSZXF1ZXN0IExvZ2dpbmcgd29ya3Mgd2hl
biBFbmFibGVkIGFuZCBkb2Vzbid0IHNob3cgbG9ncyB3aGVuIERpc2FibGVkIGZvciBhc3luY2hy
b25vdXMgWEhScy4KIAogQnVnIDc5MjI5CiBYSFIgZmluaXNoZWQgbG9hZGluZzogImh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1leGlzdHMuaHRtbCIuIFtuYXRp
dmUgY29kZV06MQotRG9uZS4gY29uc29sZS14aHItbG9nZ2luZy1hc3luYy5odG1sOjE0CitYSFIg
bG9hZGVkOiAxIG5ldHdvcmstdGVzdC5qczo2CitYSFIgbG9hZGVkOiAyIG5ldHdvcmstdGVzdC5q
czo2CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbnNv
bGUteGhyLWxvZ2dpbmctYXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2NvbnNvbGUteGhyLWxvZ2dpbmctYXN5bmMuaHRtbAppbmRleCBmNzRiYzU0MzI2Y2NiZDVh
ZWRkM2QxYmRkOTcwNmU5ZDQ1YTg4OTUyLi5hNTRkY2YyYzYwMjE4ZjJiNzZiZGJhNTc3YTEzNTE0
YzZhZTFjNmMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9j
b25zb2xlLXhoci1sb2dnaW5nLWFzeW5jLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvY29uc29sZS14aHItbG9nZ2luZy1hc3luYy5odG1sCkBAIC00LDI4ICs0LDIy
IEBACiA8c2NyaXB0IHNyYz0iY29uc29sZS10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSJuZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWZ1bmN0aW9uIG1ha2VSZXF1
ZXN0KCkKLXsKLSAgICBkb1hIUigiR0VUIiwgInJlc291cmNlcy94aHItZXhpc3RzLmh0bWwiLCB0
cnVlLCBhbGxYSFJzTG9hZGVkKTsKLX0KLQotZnVuY3Rpb24gYWxsWEhSc0xvYWRlZCgpCi17Ci0g
ICAgY29uc29sZS5sb2coIkRvbmUuIik7Ci19Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIHN0
ZXAxKCk7CiAKKyAgICBmdW5jdGlvbiBtYWtlUmVxdWVzdChjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QubWFrZVNpbXBsZVhIUigiR0VUIiwgInJlc291cmNlcy94aHItZXhp
c3RzLmh0bWwiLCB0cnVlLCBjYWxsYmFjayk7CisgICAgfQorCiAgICAgZnVuY3Rpb24gc3RlcDEo
KQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJtYWtlUmVxdWVzdCgpIik7CisgICAg
ICAgICAgICBtYWtlUmVxdWVzdChzdGVwMik7CiAgICAgICAgIH0KIAotICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZENvbnNvbGVTbmlmZmVyKHN0ZXAyKTsKICAgICAgICAgQ29uc29sZUFnZW50LnNl
dE1vbml0b3JpbmdYSFJFbmFibGVkKHRydWUsIGNhbGxiYWNrKTsKICAgICB9CiAKQEAgLTMzLDEw
ICsyNyw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gY2FsbGJh
Y2soKQogICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KCJtYWtlUmVxdWVzdCgpIik7CisgICAgICAgICAgICBtYWtlUmVxdWVzdChzdGVwMyk7CiAgICAg
ICAgIH0KIAotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZENvbnNvbGVTbmlmZmVyKHN0ZXAzKTsK
ICAgICAgICAgQ29uc29sZUFnZW50LnNldE1vbml0b3JpbmdYSFJFbmFibGVkKGZhbHNlLCBjYWxs
YmFjayk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLmh0bWwKaW5kZXggNzljYWI2ODQ3MDMyMGJkN2Q3
OGIwYzNjNmQ2MWQzOTE3Yjk4ZTYxNS4uNjQ3MGI2OGNhOGQ4NmVmMjEwNmMwOWY0MjlhZGZlYWE3
MGYyZjNhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29u
c29sZS14aHItbG9nZ2luZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2NvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbApAQCAtOCw3ICs4LDcgQEAgZnVuY3Rpb24gcmVx
dWVzdEhlbHBlcihtZXRob2QsIHVybCkKIHsKICAgICAvLyBNYWtlIHN5bmNocm9ub3VzIHJlcXVl
c3RzIGZvciBzaW1wbGljaXR5LgogICAgIGNvbnNvbGUubG9nKCJzZW5kaW5nIGEgJXMgcmVxdWVz
dCB0byAlcyIsIG1ldGhvZCwgdXJsKTsKLSAgICBkb1hIUihtZXRob2QsIHVybCwgZmFsc2UpOwor
ICAgIGRvU2ltcGxlWEhSKG1ldGhvZCwgdXJsLCBmYWxzZSk7CiB9CiAKIGZ1bmN0aW9uIG1ha2VS
ZXF1ZXN0cygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
LXRlc3QuanMKaW5kZXggYWFhNDFmODA1NGFlMzEyYjVmNGVkMmE1ZmUwZjAyZGY2YTkzZmI3Ny4u
OTVkY2IyN2RhZGMyY2EwYTE4OWQ2MjdiNmU0MDUzYTU4MGI3ODYxYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay10ZXN0LmpzCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmstdGVzdC5qcwpAQCAtMSwzICsxLDEx
IEBACisvLyBUaGlzIGdvZXMgYmVmb3JlIGV2ZXJ5dGhpbmcgZWxzZSB0byBrZWVwIGNvbnNvbGUg
bWVzc2FnZSBsaW5lIG51bWJlciBpbnZhcmlhbnQuCit2YXIgbGFzdFhIUkluZGV4ID0gMDsKK2Z1
bmN0aW9uIHhockxvYWRlZENhbGxiYWNrKCkKK3sKKyAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3Vy
ZSB0aGUgY29uc29sZSBtZXNzYWdlIHRleHQgaXMgdW5pcXVlIHNvIHRoYXQgd2UgZG9uJ3QgZW5k
IHVwIHdpdGggcmVwZWF0IGNvdW50IHVwZGF0ZSBvbmx5LgorICAgIGNvbnNvbGUubG9nKCJYSFIg
bG9hZGVkOiAiICsgKCsrbGFzdFhIUkluZGV4KSk7Cit9CisKIHZhciBpbml0aWFsaXplX05ldHdv
cmtUZXN0ID0gZnVuY3Rpb24oKSB7CiAKIEluc3BlY3RvclRlc3QuZHVtcE5ldHdvcmtSZXF1ZXN0
cyA9IGZ1bmN0aW9uKCkKQEAgLTIzLDE0ICszMSw1NCBAQCBJbnNwZWN0b3JUZXN0LnJlc2V0SW5z
cGVjdG9yUmVzb3VyY2VzRGF0YSA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIH0KIH0KIAorSW5z
cGVjdG9yVGVzdC5tYWtlU2ltcGxlWEhSID0gZnVuY3Rpb24obWV0aG9kLCB1cmwsIGFzeW5jLCBj
YWxsYmFjaykKK3sKKyAgICBJbnNwZWN0b3JUZXN0Lm1ha2VYSFIobWV0aG9kLCB1cmwsIGFzeW5j
LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgW10sIGZhbHNlLCB1bmRlZmluZWQsIGNhbGxiYWNrKTsK
K30KKworSW5zcGVjdG9yVGVzdC5tYWtlU2ltcGxlWEhSV2l0aFBheWxvYWQgPSBmdW5jdGlvbiht
ZXRob2QsIHVybCwgYXN5bmMsIHBheWxvYWQsIGNhbGxiYWNrKQoreworICAgIEluc3BlY3RvclRl
c3QubWFrZVhIUihtZXRob2QsIHVybCwgYXN5bmMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBbXSwg
ZmFsc2UsIHBheWxvYWQsIGNhbGxiYWNrKTsKK30KKworSW5zcGVjdG9yVGVzdC5tYWtlWEhSID0g
ZnVuY3Rpb24obWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd29yZCwgaGVhZGVycywgd2l0
aENyZWRlbnRpYWxzLCBwYXlsb2FkLCBjYWxsYmFjaykKK3sKKyAgICB2YXIgYXJncyA9IHt9Owor
ICAgIGFyZ3MubWV0aG9kID0gbWV0aG9kOworICAgIGFyZ3MudXJsID0gdXJsOworICAgIGFyZ3Mu
YXN5bmMgPSBhc3luYzsKKyAgICBhcmdzLnVzZXIgPSB1c2VyOworICAgIGFyZ3MucGFzc3dvcmQg
PSBwYXNzd29yZDsKKyAgICBhcmdzLmhlYWRlcnMgPSBoZWFkZXJzOworICAgIGFyZ3Mud2l0aENy
ZWRlbnRpYWxzID0gd2l0aENyZWRlbnRpYWxzOworICAgIGFyZ3MucGF5bG9hZCA9IHBheWxvYWQ7
CisgICAgdmFyIGpzb25BcmdzID0gSlNPTi5zdHJpbmdpZnkoYXJncykucmVwbGFjZSgvXCIvZywg
IlxcXCIiKTsKKworICAgIGZ1bmN0aW9uIGlubmVyQ2FsbGJhY2sobXNnKQorICAgIHsKKyAgICAg
ICAgaWYgKG1zZy5fbWVzc2FnZVRleHQuaW5kZXhPZigiWEhSIGxvYWRlZCIpICE9PSAtMSkKKyAg
ICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkQ29uc29sZVNuaWZmZXIoaW5uZXJDYWxsYmFjayk7CisgICAgfQorCisgICAgSW5z
cGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihpbm5lckNhbGxiYWNrKTsKKyAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJtYWtlWEhSKFwiIiArIGpzb25BcmdzICsgIlwiKSIpOwor
fQorCiB9OwogCi1mdW5jdGlvbiBkb1hIUihtZXRob2QsIHVybCwgYXN5bmMsIGNhbGxiYWNrKQor
ZnVuY3Rpb24gZG9TaW1wbGVYSFIobWV0aG9kLCB1cmwsIGFzeW5jLCBjYWxsYmFjaykKK3sKKyAg
ICBkb1NpbXBsZVhIUldpdGhQYXlsb2FkKG1ldGhvZCwgdXJsLCBhc3luYywgbnVsbCwgY2FsbGJh
Y2spOworfQorCitmdW5jdGlvbiBkb1NpbXBsZVhIUldpdGhQYXlsb2FkKG1ldGhvZCwgdXJsLCBh
c3luYywgcGF5bG9hZCwgY2FsbGJhY2spCiB7Ci0gICAgZG9YSFJXaXRoUGF5bG9hZChtZXRob2Qs
IHVybCwgYXN5bmMsIG51bGwsIGNhbGxiYWNrKTsKKyAgICBkb1hIUihtZXRob2QsIHVybCwgYXN5
bmMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBbXSwgZmFsc2UsIHBheWxvYWQsIGNhbGxiYWNrKQog
fQogCi1mdW5jdGlvbiBkb1hIUldpdGhQYXlsb2FkKG1ldGhvZCwgdXJsLCBhc3luYywgcGF5bG9h
ZCwgY2FsbGJhY2spCitmdW5jdGlvbiBkb1hIUihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIHBh
c3N3b3JkLCBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHMsIHBheWxvYWQsIGNhbGxiYWNrKQogewog
ICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICB4aHIub25yZWFkeXN0YXRl
Y2hhbmdlID0gZnVuY3Rpb24oKQpAQCAtNDAsMTAgKzg4LDIwIEBAIGZ1bmN0aW9uIGRvWEhSV2l0
aFBheWxvYWQobWV0aG9kLCB1cmwsIGFzeW5jLCBwYXlsb2FkLCBjYWxsYmFjaykKICAgICAgICAg
ICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICB9CiAgICAgfQotICAgIHhoci5vcGVuKG1ldGhv
ZCwgdXJsLCBhc3luYyk7CisgICAgeGhyLm9wZW4obWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBw
YXNzd29yZCk7CisgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHdpdGhDcmVkZW50aWFsczsKKyAg
ICBmb3IgKHZhciAgaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgKytpKQorICAgICAgICB4aHIu
c2V0UmVxdWVzdEhlYWRlcihoZWFkZXJzW2ldWzBdLCBoZWFkZXJzW2ldWzFdKTsKICAgICB4aHIu
c2VuZChwYXlsb2FkKTsKIH0KIAorZnVuY3Rpb24gbWFrZVhIUihqc29uQXJncykKK3sKKyAgICB2
YXIgYXJncyA9IEpTT04ucGFyc2UoanNvbkFyZ3MpOworICAgIGRvWEhSKGFyZ3MubWV0aG9kLCBh
cmdzLnVybCwgYXJncy5hc3luYywgYXJncy51c2VyLCBhcmdzLnBhc3N3b3JkLCBhcmdzLmhlYWRl
cnMsIGFyZ3Mud2l0aENyZWRlbnRpYWxzLCBhcmdzLnBheWxvYWQsIHhockxvYWRlZENhbGxiYWNr
KTsKK30KKworCiBmdW5jdGlvbiByZXNldEluc3BlY3RvclJlc291cmNlc0RhdGEoKQogewogICAg
IGlmICghd2luZG93LmludGVybmFscykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvYXN5bmMteGhyLWpzb24tbWltZS10eXBlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvYXN5bmMteGhyLWpz
b24tbWltZS10eXBlLWV4cGVjdGVkLnR4dAppbmRleCA1ZGRkMGI4ZWZkMGYzNzAzZjJlYjRkZDQ0
NWM3MzU0MDkzODc4Y2RjLi42ZGYwOThmYzk1YzVhNjU3NmQ0ZmJiYWEyMmVlMDdiOTRmYzE0Nzc5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2Fz
eW5jLXhoci1qc29uLW1pbWUtdHlwZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9hc3luYy14aHItanNvbi1taW1lLXR5cGUtZXhwZWN0
ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBEb25lLgor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFhIUiBsb2FkZWQ6IDEKIFRlc3RzIFhIUiBuZXR3b3Jr
IHJlc291cmNlIGNvbnRlbnQgZm9yIGFzeW5jaHJvbm91cyByZXF1ZXN0cyB3aXRoIGFwcGxpY2F0
aW9uL2pzb24gbWltZSB0eXBlLiBCdWcgODA2ODQKIAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9qc29uLnBocApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9hc3luYy14aHItanNvbi1taW1lLXR5cGUu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvYXN5bmMteGhy
LWpzb24tbWltZS10eXBlLmh0bWwKaW5kZXggNzFmYjYwYjY0OGIwYjgzMDFhM2ZjODdmNWYxNzU3
MDJlOTJjZjM5My4uMGI4MjE1YzIzOTU2MGQ1OTQ0NDhiNTg0MTMxYjBhNGIyZjE3NzkxMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9hc3luYy14
aHItanNvbi1taW1lLXR5cGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2FzeW5jLXhoci1qc29uLW1pbWUtdHlwZS5odG1sCkBAIC0zLDIwICszLDkg
QEAKIDxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlvbiBs
b2FkRGF0YSgpCi17Ci0gICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvanNvbi5waHAiLCB0cnVl
LCByZXNvdXJjZUxvYWRlZCk7Ci19Ci0KLWZ1bmN0aW9uIHJlc291cmNlTG9hZGVkKCkKLXsKLSAg
ICBjb25zb2xlLmxvZygiRG9uZS4iKTsKLX0KLQogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgSW5z
cGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihzdGVwMik7Ci0gICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZSgibG9hZERhdGEoKSIpOworICAgIEluc3BlY3RvclRlc3QubWFrZVNpbXBs
ZVhIUigiR0VUIiwgInJlc291cmNlcy9qc29uLnBocCIsIHRydWUsIHN0ZXAyKTsKIAogICAgIGZ1
bmN0aW9uIHN0ZXAyKCkKICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItY2FjaGUuaHRtbC1kaXNhYmxlZCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1jYWNo
ZS5odG1sLWRpc2FibGVkCmluZGV4IGVmMjBhNjE0M2I2ZjQ5MDZmZDMzNDBkYjJlNjhhZDUyZDA0
NDYyNDkuLmNlN2IwYTAwZDIyZGUxMjIwNGU1ZjVlZjU5ZjZkZjFhYThlOGU3ODMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbGVh
ci1jYWNoZS5odG1sLWRpc2FibGVkCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1jYWNoZS5odG1sLWRpc2FibGVkCkBAIC0zLDMxICsz
LDYgQEAKIDxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlv
biBsb2FkRGF0YSgpCi17Ci0gICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmFuZG9tLWNhY2hl
ZC5waHAiLCB0cnVlLCB4aHJMb2FkZWQxKTsKLX0KLQotZnVuY3Rpb24geGhyTG9hZGVkMSgpCi17
Ci0gICAgY29uc29sZS5sb2coIkZpcnN0IFhIUiBsb2FkZWQuIik7Ci19Ci0KLWZ1bmN0aW9uIGNh
Y2hlQ2xlYXJlZCgpCi17Ci0gICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmFuZG9tLWNhY2hl
ZC5waHAiLCB0cnVlLCB4aHJMb2FkZWQyKTsKLX0KLQotZnVuY3Rpb24geGhyTG9hZGVkMigpCi17
Ci0gICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmFuZG9tLWNhY2hlZC5waHAiLCB0cnVlLCBh
bGxYSFJzTG9hZGVkKTsKLX0KLQotZnVuY3Rpb24gYWxsWEhSc0xvYWRlZCgpCi17Ci0gICAgY29u
c29sZS5sb2coIkRvbmUuIik7Ci19Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIC8vIFNpbmNl
IHRoaXMgdGVzdCBjb3VsZCBiZSBydW4gdG9nZXRoZXIgd2l0aCBvdGhlciBpbnNwZWN0b3IgYmFj
a2VuZCBjYWNoZQpAQCAtMzYsOCArMTEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0
aW9uIHN0ZXAxKCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZm
ZXIoc3RlcDIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkRGF0
YSgpIik7CisgICAgICAgIEluc3BlY3RvclRlc3QubWFrZVNpbXBsZVhIUldpdGhQYXlsb2FkKCJH
RVQiLCAicmVzb3VyY2VzL3JhbmRvbS1jYWNoZWQucGhwIiwgdHJ1ZSwgc3RlcDIpOwogICAgIH0K
IAogICAgIGZ1bmN0aW9uIHN0ZXAyKG1zZykKQEAgLTUwLDggKzI0LDEyIEBAIGZ1bmN0aW9uIHRl
c3QoKQogCiAgICAgZnVuY3Rpb24gc3RlcDMobXNnKQogICAgIHsKLSAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRDb25zb2xlU25pZmZlcihzdGVwNCk7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoImNhY2hlQ2xlYXJlZCgpIik7CisgICAgICAgIEluc3BlY3RvclRlc3QubWFr
ZVNpbXBsZVhIUldpdGhQYXlsb2FkKCJHRVQiLCAicmVzb3VyY2VzL3JhbmRvbS1jYWNoZWQucGhw
IiwgdHJ1ZSwgc3RlcDQpOworCisgICAgICAgIGZ1bmN0aW9uIGZpcnN0WEhSTG9hZGVkKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5tYWtlU2ltcGxlWEhSV2l0aFBheWxv
YWQoIkdFVCIsICJyZXNvdXJjZXMvcmFuZG9tLWNhY2hlZC5waHAiLCB0cnVlLCBzdGVwNCk7Cisg
ICAgICAgIH0KICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwNChtc2cpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItY29v
a2llcy5odG1sLWRpc2FibGVkIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLWNsZWFyLWNvb2tpZXMuaHRtbC1kaXNhYmxlZAppbmRleCBmNTNlNGZkMThh
ZWFlNWFiYTg3Njc1MzM4ZWQ5YjJhYjAxMzJiYTc3Li5iZjY0ZjA0Y2Y5MjA2ODY5NzExYjNmNjli
ZTQ1ZGExZjdlMThlYzQzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL25ldHdvcmstY2xlYXItY29va2llcy5odG1sLWRpc2FibGVkCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jbGVhci1jb29r
aWVzLmh0bWwtZGlzYWJsZWQKQEAgLTMsMzEgKzMsNiBAQAogPHNjcmlwdCBzcmM9Ii4uL2luc3Bl
Y3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdD4KLWZ1bmN0aW9uIGxvYWREYXRhKCkKLXsKLSAgICBkb1hIUigi
R0VUIiwgInJlc291cmNlcy9zZXQtY29va2llLnBocCIsIHRydWUsIHhockxvYWRlZDEpOwotfQot
Ci1mdW5jdGlvbiB4aHJMb2FkZWQxKCkKLXsKLSAgICBjb25zb2xlLmxvZygiRmlyc3QgWEhSIGxv
YWRlZC4iKTsKLX0KLQotZnVuY3Rpb24gY29va2llc0NsZWFyZWQoKQotewotICAgIGRvWEhSKCJH
RVQiLCAicmVzb3VyY2VzL3NldC1jb29raWUucGhwIiwgdHJ1ZSwgeGhyTG9hZGVkMik7Ci19Ci0K
LWZ1bmN0aW9uIHhockxvYWRlZDIoKQotewotICAgIGRvWEhSKCJHRVQiLCAicmVzb3VyY2VzL3Nl
dC1jb29raWUucGhwIiwgdHJ1ZSwgYWxsWEhSc0xvYWRlZCk7Ci19Ci0KLWZ1bmN0aW9uIGFsbFhI
UnNMb2FkZWQoKQotewotICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOwotfQotCiBmdW5jdGlvbiB0
ZXN0KCkKIHsKICAgICAvLyBTaW5jZSB0aGlzIHRlc3QgY291bGQgYmUgcnVuIHRvZ2V0aGVyIHdp
dGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2FjaGUKQEAgLTM2LDggKzExLDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZENvbnNvbGVTbmlmZmVyKHN0ZXAyKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZSgibG9hZERhdGEoKSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0Lm1ha2VT
aW1wbGVYSFJXaXRoUGF5bG9hZCgiR0VUIiwgInJlc291cmNlcy9zZXQtY29va2llLnBocCIsIHRy
dWUsIHN0ZXAyKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwMihtc2cpCkBAIC01MCw4ICsy
NCwxMiBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXAzKG1zZykKICAgICB7
Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIoc3RlcDQpOwotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJjb29raWVzQ2xlYXJlZCgpIik7CisgICAg
ICAgIEluc3BlY3RvclRlc3QubWFrZVNpbXBsZVhIUldpdGhQYXlsb2FkKCJHRVQiLCAicmVzb3Vy
Y2VzL3NldC1jb29raWUucGhwIiwgdHJ1ZSwgZmlyc3RYSFJMb2FkZWQpOworCisgICAgICAgIGZ1
bmN0aW9uIGZpcnN0WEhSTG9hZGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5tYWtlU2ltcGxlWEhSV2l0aFBheWxvYWQoIkdFVCIsICJyZXNvdXJjZXMvc2V0LWNvb2tp
ZS5waHAiLCB0cnVlLCBzdGVwNCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBmdW5jdGlvbiBz
dGVwNChtc2cpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC14aHItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWNvbnRlbnQtcmVw
bGFjZW1lbnQteGhyLWV4cGVjdGVkLnR4dAppbmRleCA4NTg4MzRiYmM4OTVhZTQ3YzZkYWU3OWYz
MjE3YjBkM2ViZWUwOGMzLi41Y2RlZGI4MDMyMjFjMjhkM2YwZmE0YzY0OTllMGIyOTE5OWUyNGM5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25l
dHdvcmstY29udGVudC1yZXBsYWNlbWVudC14aHItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jb250ZW50LXJlcGxhY2Vt
ZW50LXhoci1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw4IEBACi1DT05TT0xFIE1FU1NBR0U6IGxp
bmUgMzg6IERvbmUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTM6IERvbmUuCitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgNjogWEhSIGxvYWRlZDogMQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFhI
UiBsb2FkZWQ6IDIKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBYSFIgbG9hZGVkOiAzCitDT05T
T0xFIE1FU1NBR0U6IGxpbmUgNjogWEhSIGxvYWRlZDogNAogVGVzdHMgTmV0d29ya1Jlc291cmNl
c0RhdGEgbG9naWMgZm9yIFhIUiBjb250ZW50IHJlcGxhY2VtZW50LgogCiBodHRwOi8vMTI3LjAu
MC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXplPTIw
MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9u
ZXR3b3JrLWNvbnRlbnQtcmVwbGFjZW1lbnQteGhyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC14aHIuaHRt
bAppbmRleCA3Mzc4NjNhNTM4ODA4Y2JjNWVlZDIxMjc5MmM0Y2VkMjg4N2M3MzNhLi44Y2YxZWU0
ZmQ4YmNjYThkNzkzZDM2OWQ2NWFiN2JmNzAwMTFmYTA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY29udGVudC1yZXBsYWNlbWVu
dC14aHIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L25ldHdvcmstY29udGVudC1yZXBsYWNlbWVudC14aHIuaHRtbApAQCAtMyw0NSArMyw0NCBAQAog
PHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWZ1bmN0aW9uIGxvYWRE
YXRhKCkKK2Z1bmN0aW9uIHNldEluc3BlY3RvclJlc291cmNlc0RhdGFTaXplTGltaXRzKCkKIHsK
ICAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKICAgICAgICAgY29uc29sZS5sb2coIlRoaXMg
dGVzdCBjYW4gbm90IGJlIHJ1biBhcyB3aW5kb3cuaW50ZXJuYWxzIGlzIG5vdCBhdmFpbGFibGUu
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldElu
c3BlY3RvclJlc291cmNlc0RhdGFTaXplTGltaXRzKDMwMCwgMjAwKTsKLQotICAgIC8vIEhlcmUg
d2UgdGVzdCByZXBsYWNlbWVudCBsb2dpYy4gV2Ugc2F2ZSBmaXJzdCB0d28gcmVzb3VyY2VzIGNv
bnRlbnQsCi0gICAgLy8gZGlzY2FyZCB0aGlyZCByZXNvdXJjZSBjb250ZW50IG9uY2Ugd2Ugc2Vl
IGl0cyBzaXplIGV4Y2VlZHMgbGltaXQsCi0gICAgLy8gYW5kIGZpbmFsbHkgcmVwbGFjZSBmaXJz
dCByZXNvdXJjZSBjb250ZW50IHdpdGggdGhlIGxhc3QgcmVzb3VyY2UgY29udGVudC4KLQotICAg
IGRvWEhSKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXplPTIwMCIsIGZhbHNlLCB4
aHJMb2FkZWQxKTsKKyAgICBjb25zb2xlLmxvZygiRG9uZS4iKTsKIH0KIAotZnVuY3Rpb24geGhy
TG9hZGVkMSgpCitmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBkb1hIUigiR0VUIiwgInJlc291cmNl
cy9yZXNvdXJjZS5waHA/c2l6ZT0xMDAiLCBmYWxzZSwgeGhyTG9hZGVkMik7Ci19CisgICAgSW5z
cGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihkYXRhU2l6ZUxpbWl0c1NldCk7CisgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgic2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YVNpemVM
aW1pdHMoKSIpOwogCi1mdW5jdGlvbiB4aHJMb2FkZWQyKCkKLXsKLSAgICBkb1hIUigiR0VUIiwg
InJlc291cmNlcy9yZXNvdXJjZS5waHA/c2l6ZT0yMDEiLCBmYWxzZSwgeGhyTG9hZGVkMyk7Ci19
CisgICAgZnVuY3Rpb24gZGF0YVNpemVMaW1pdHNTZXQoKQorICAgIHsKKyAgICAgICAgLy8gSGVy
ZSB3ZSB0ZXN0IHJlcGxhY2VtZW50IGxvZ2ljLiBXZSBzYXZlIGZpcnN0IHR3byByZXNvdXJjZXMg
Y29udGVudCwKKyAgICAgICAgLy8gZGlzY2FyZCB0aGlyZCByZXNvdXJjZSBjb250ZW50IG9uY2Ug
d2Ugc2VlIGl0cyBzaXplIGV4Y2VlZHMgbGltaXQsCisgICAgICAgIC8vIGFuZCBmaW5hbGx5IHJl
cGxhY2UgZmlyc3QgcmVzb3VyY2UgY29udGVudCB3aXRoIHRoZSBsYXN0IHJlc291cmNlIGNvbnRl
bnQuCiAKLWZ1bmN0aW9uIHhockxvYWRlZDMoKQotewotICAgIGRvWEhSKCJHRVQiLCAicmVzb3Vy
Y2VzL3Jlc291cmNlLnBocD9zaXplPTEwMCIsIGZhbHNlLCBhbGxYSFJzTG9hZGVkKTsKLX0KKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5tYWtlU2ltcGxlWEhSKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291
cmNlLnBocD9zaXplPTIwMCIsIGZhbHNlLCB4aHJMb2FkZWQxKTsKKyAgICB9CiAKLWZ1bmN0aW9u
IGFsbFhIUnNMb2FkZWQoKQotewotICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOwotfQorICAgIGZ1
bmN0aW9uIHhockxvYWRlZDEoKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5tYWtlU2lt
cGxlWEhSKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocD9zaXplPTEwMCIsIGZhbHNlLCB4
aHJMb2FkZWQyKTsKKyAgICB9CiAKLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIEluc3BlY3RvclRl
c3QuYWRkQ29uc29sZVNuaWZmZXIoc3RlcDEpOwotICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoImxvYWREYXRhKCkiKTsKKyAgICBmdW5jdGlvbiB4aHJMb2FkZWQyKCkKKyAgICB7Cisg
ICAgICAgIEluc3BlY3RvclRlc3QubWFrZVNpbXBsZVhIUigiR0VUIiwgInJlc291cmNlcy9yZXNv
dXJjZS5waHA/c2l6ZT0yMDEiLCBmYWxzZSwgeGhyTG9hZGVkMyk7CisgICAgfQorCisgICAgZnVu
Y3Rpb24geGhyTG9hZGVkMygpCisgICAgeworICAgICAgICBJbnNwZWN0b3JUZXN0Lm1ha2VTaW1w
bGVYSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3NpemU9MTAwIiwgZmFsc2UsIHN0
ZXAxKTsKKyAgICB9CiAKICAgICBmdW5jdGlvbiBkdW1wUmVxdWVzdChyZXF1ZXN0LCBjYWxsYmFj
aykKICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstY3lyaWxsaWMteGhyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jeXJpbGxpYy14aHItZXhwZWN0ZWQu
dHh0CmluZGV4IDI4NjY2MTMzMjNmMzU3ZTJkZmY3ZjYzMDhlOWQ3MDYyYjEzODFhNGIuLjY1MjA3
N2Q1Yjc2ZjFkNjgxYTM0ODY3ZWE2ZDM4ODEyMThkNTQ0NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jeXJpbGxpYy14aHItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1jeXJpbGxpYy14aHItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNSBAQAotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDE4OiBEb25lLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFhIUiBs
b2FkZWQ6IDEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBYSFIgbG9hZGVkOiAyCiBUZXN0cyBj
eXJpbGxpYyB4aHIgY29udGVudCBpcyBjb3JyZWN0bHkgbG9hZGVkIGluIGluc3BlY3Rvci4KIAog
QnVnIDc5MDI2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL25ldHdvcmstY3lyaWxsaWMteGhyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstY3lyaWxsaWMteGhyLmh0bWwKaW5kZXggNzNkYjJh
NjhiYTBmZTM1ZTg0MTRlMTk5NDJlNmI2YzcyNWZiNzlkMi4uOTk2NzQ2NDg4ODhkMGQxM2MzN2U5
MjJhNGQ5ZGRiY2ZhY2ViN2MxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWN5cmlsbGljLXhoci5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1jeXJpbGxpYy14aHIuaHRt
bApAQCAtMywyMSArMyw2IEBACiA8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0PgotZnVuY3Rpb24gbG9hZERhdGEoKQotewotICAgIGRvWEhSKCJHRVQiLCAicmVzb3VyY2Vz
L2N5cmlsbGljLmh0bWwiLCBmYWxzZSwgeGhyTG9hZGVkMSk7Ci19Ci0KLWZ1bmN0aW9uIHhockxv
YWRlZDEoKQotewotICAgIGRvWEhSKCJHRVQiLCAicmVzb3VyY2VzL2N5cmlsbGljLmh0bWwiLCB0
cnVlLCBhbGxYSFJzTG9hZGVkKTsKLX0KLQotZnVuY3Rpb24gYWxsWEhSc0xvYWRlZCgpCi17Ci0g
ICAgY29uc29sZS5sb2coIkRvbmUuIik7Ci19Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIC8v
IFNpbmNlIHRoaXMgdGVzdCBjb3VsZCBiZSBydW4gdG9nZXRoZXIgd2l0aCBvdGhlciBpbnNwZWN0
b3IgYmFja2VuZCBjYWNoZQpAQCAtNDEsOCArMjYsMTIgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAg
ICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZENvbnNv
bGVTbmlmZmVyKHN0ZXAyKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgi
bG9hZERhdGEoKSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0Lm1ha2VTaW1wbGVYSFIoIkdFVCIs
ICJyZXNvdXJjZXMvY3lyaWxsaWMuaHRtbCIsIGZhbHNlLCBmaXJzdFhIUkxvYWRlZCk7CisKKyAg
ICAgICAgZnVuY3Rpb24gZmlyc3RYSFJMb2FkZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lm1ha2VTaW1wbGVYSFIoIkdFVCIsICJyZXNvdXJjZXMvY3lyaWxsaWMuaHRt
bCIsIHRydWUsIHN0ZXAyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAy
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
bmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUteGhycy1leHBl
Y3RlZC50eHQKaW5kZXggYmVmYTFmYjZhOTNjYTUwYjFlNTdiOWQyZTg4N2UwYjBmMGE0YjI4Yy4u
Mjk3NWVlMTljOGRmNTUwMzE0MjRlNDMzODVkYTQ2NWJjYjkwNDBjMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2Fj
aGUteGhycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUteGhycy1leHBlY3RlZC50eHQKQEAgLTEs
NSArMSw2IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMjM6IEZpcnN0IFhIUiBsb2FkZWQuCi1D
T05TT0xFIE1FU1NBR0U6IGxpbmUgMzM6IERvbmUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjog
WEhSIGxvYWRlZDogMQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFhIUiBsb2FkZWQ6IDIKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSA2OiBYSFIgbG9hZGVkOiAzCiBUZXN0cyBkaXNhYmxpbmcgY2Fj
aGUgZnJvbSBpbnNwZWN0b3IuCiAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwP3JhbmRvbT0xJmNhY2hlZD0xCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJs
ZS1jYWNoZS14aHJzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL25ldHdvcmstZGlzYWJsZS1jYWNoZS14aHJzLmh0bWwKaW5kZXggOTkwNWM3ZDExMzM0NDVh
NTlkZTkyM2YwNmExNTc1N2I4M2FlMTRhZC4uYzcxMmFjZTY3ZWViNTQyMjY5YzljYTk5YjI0ZGFm
OWE3NzBjMDdhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLWRpc2FibGUtY2FjaGUteGhycy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxlLWNhY2hlLXhocnMu
aHRtbApAQCAtMywzNiArMyw2IEBACiA8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgotZnVuY3Rpb24gbG9hZFhIUihjYWxsYmFjaykKLXsKLSAgICBkb1hIUigiR0VUIiwg
InJlc291cmNlcy9yZXNvdXJjZS5waHA/cmFuZG9tPTEmY2FjaGVkPTEiLCB0cnVlLCBjYWxsYmFj
ayk7Ci19Ci0KLWZ1bmN0aW9uIGxvYWREYXRhKCkKLXsKLSAgICBsb2FkWEhSKHhockxvYWRlZDEp
OwotfQotCi1mdW5jdGlvbiB4aHJMb2FkZWQxKCkKLXsKLSAgICBsb2FkWEhSKHhockxvYWRlZDIp
OwotfQotCi1mdW5jdGlvbiB4aHJMb2FkZWQyKCkKLXsKLSAgICBjb25zb2xlLmxvZygiRmlyc3Qg
WEhSIGxvYWRlZC4iKTsKLX0KLQotZnVuY3Rpb24gY2FjaGVEaXNhYmxlZCgpCi17Ci0gICAgbG9h
ZFhIUihhbGxYSFJzTG9hZGVkKTsKLX0KLQotZnVuY3Rpb24gYWxsWEhSc0xvYWRlZCgpCi17Ci0g
ICAgY29uc29sZS5sb2coIkRvbmUuIik7Ci19Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIC8v
IFNpbmNlIHRoaXMgdGVzdCBjb3VsZCBiZSBydW4gdG9nZXRoZXIgd2l0aCBvdGhlciBpbnNwZWN0
b3IgYmFja2VuZCBjYWNoZQpAQCAtNDEsOCArMTEsMTIgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAg
ICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZENvbnNv
bGVTbmlmZmVyKHN0ZXAyKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgi
bG9hZERhdGEoKSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0Lm1ha2VTaW1wbGVYSFIoIkdFVCIs
ICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwP3JhbmRvbT0xJmNhY2hlZD0xIiwgdHJ1ZSwgZmlyc3RY
SFJMb2FkZWQpOworCisgICAgICAgIGZ1bmN0aW9uIGZpcnN0WEhSTG9hZGVkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5tYWtlU2ltcGxlWEhSKCJHRVQiLCAicmVzb3Vy
Y2VzL3Jlc291cmNlLnBocD9yYW5kb209MSZjYWNoZWQ9MSIsIHRydWUsIHN0ZXAyKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAyKG1zZykKQEAgLTUyLDggKzI2LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiBzdGVwMyhtc2cpCiAgICAgewotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZENvbnNvbGVTbmlmZmVyKHN0ZXA0KTsKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiY2FjaGVEaXNhYmxlZCgpIik7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QubWFrZVNpbXBsZVhIUigiR0VUIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/cmFu
ZG9tPTEmY2FjaGVkPTEiLCB0cnVlLCBzdGVwNCk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3Rl
cDQobXNnKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLWRpc2FibGluZy1jaGVjay1uby1tZW1vcnktbGVhay1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJs
aW5nLWNoZWNrLW5vLW1lbW9yeS1sZWFrLWV4cGVjdGVkLnR4dAppbmRleCAyMWIwNjNlMDI3YTdh
YTRlMmE1Yjk5NGFmOWM4NDA5NWMzZmM4MzVlLi4xOGVjNjQ2NDY3MTAxNzI3ZjViZTc2MGVhODY1
ZDliZDlkYzY1NjUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmstZGlzYWJsaW5nLWNoZWNrLW5vLW1lbW9yeS1sZWFrLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmstZGlzYWJsaW5nLWNoZWNrLW5vLW1lbW9yeS1sZWFrLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMzogRG9uZS4KK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA2OiBYSFIgbG9hZGVkOiAxCiBUZXN0cyB0aGF0IGFmdGVyIGRpc2FibGluZyBuZXR3b3Jr
IGRvbWFpbiwgY29udGVudCBzYXZlZCBvbiBiYWNrZW5kIGlzIHJlbW92ZWQuIEJ1ZyA2Nzk5NQog
CiByZXNvdXJjZS5jb250ZW50IGFmdGVyIGRpc2FibGluZyBuZXR3b3JrIGRvbWFpbjogbnVsbApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3
b3JrLWRpc2FibGluZy1jaGVjay1uby1tZW1vcnktbGVhay5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWRpc2FibGluZy1jaGVjay1uby1tZW1v
cnktbGVhay5odG1sCmluZGV4IDkwNGE0MzBjNTRlOTc2NDAzOTBlMTkwY2M2Mzg1NGMyNDRjOGI1
MWIuLmUyMDYwYjgwNThiY2UwY2FmZDVlZTIwZGQ0Y2I3NWY3Y2U5Yzc2N2QgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1kaXNhYmxp
bmctY2hlY2stbm8tbWVtb3J5LWxlYWsuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZGlzYWJsaW5nLWNoZWNrLW5vLW1lbW9yeS1sZWFr
Lmh0bWwKQEAgLTMsMTYgKzMsNiBAQAogPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0Lmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0Pgog
PHNjcmlwdD4KLWZ1bmN0aW9uIGxvYWREYXRhKCkKLXsKLSAgICBkb1hIUigiR0VUIiwgInJlc291
cmNlcy9yZXNvdXJjZS5waHAiLCB0cnVlLCByZXNvdXJjZUxvYWRlZCk7Ci19Ci0KLWZ1bmN0aW9u
IHJlc291cmNlTG9hZGVkKCkKLXsKLSAgICBjb25zb2xlLmxvZygiRG9uZS4iKTsKLX0KLQogZnVu
Y3Rpb24gdGVzdCgpCiB7CiAgICAgLy8gU2luY2UgdGhpcyB0ZXN0IGNvdWxkIGJlIHJ1biB0b2dl
dGhlciB3aXRoIG90aGVyIGluc3BlY3RvciBiYWNrZW5kIGNhY2hlCkBAIC0yMSw4ICsxMSw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKLSAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihzdGVwMik7Ci0gICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWREYXRhKCkiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5tYWtlU2ltcGxlWEhSKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocCIsIHRydWUsIHN0
ZXAyKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwMigpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1wdHkteGhyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay1lbXB0eS14aHItZXhwZWN0ZWQudHh0CmluZGV4IGRhODM3YjM2ODRkM2QzMmViZmY0ODI2OTY2
MjFjZGRiYmY4YzE2OGIuLmM4ZDYzOTA4MGYxZTUzNDYxMzg4MTU2OTRkYTdiNzA3ZmY2YWFhYWUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay1lbXB0eS14aHItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbXB0eS14aHItZXhwZWN0ZWQudHh0CkBAIC0xLDQg
KzEsNSBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE4OiBEb25lLgorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDY6IFhIUiBsb2FkZWQ6IDEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBYSFIgbG9h
ZGVkOiAyCiBUZXN0cyBlbXB0eSB4aHIgY29udGVudCBpcyBjb3JyZWN0bHkgbG9hZGVkIGluIGlu
c3BlY3Rvci4KIAogQnVnIDc5MDI2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1wdHkteGhyLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstZW1wdHkteGhyLmh0bWwKaW5kZXgg
MDk3Y2MxZDllOGU4ZDI0N2UzMTQxNzNhYTU4NWRmNzc0NjRiZjNkNC4uZDBiNWMyMmY4ODM3Mjky
OWVhY2UwZTQzYTgyMGM3MTAwNDM4MjhkNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLWVtcHR5LXhoci5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1lbXB0eS14aHIuaHRt
bApAQCAtMywyMSArMyw2IEBACiA8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0PgotZnVuY3Rpb24gbG9hZERhdGEoKQotewotICAgIGRvWEhSKCJHRVQiLCAicmVzb3VyY2Vz
L2VtcHR5Lmh0bWwiLCBmYWxzZSwgeGhyTG9hZGVkMSk7Ci19Ci0KLWZ1bmN0aW9uIHhockxvYWRl
ZDEoKQotewotICAgIGRvWEhSKCJHRVQiLCAicmVzb3VyY2VzL2VtcHR5Lmh0bWwiLCB0cnVlLCBh
bGxYSFJzTG9hZGVkKTsKLX0KLQotZnVuY3Rpb24gYWxsWEhSc0xvYWRlZCgpCi17Ci0gICAgY29u
c29sZS5sb2coIkRvbmUuIik7Ci19Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIC8vIFNpbmNl
IHRoaXMgdGVzdCBjb3VsZCBiZSBydW4gdG9nZXRoZXIgd2l0aCBvdGhlciBpbnNwZWN0b3IgYmFj
a2VuZCBjYWNoZQpAQCAtNDEsOCArMjYsMTIgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5j
dGlvbiBzdGVwMSgpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZENvbnNvbGVTbmlm
ZmVyKHN0ZXAyKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZERh
dGEoKSIpOworICAgICAgICBJbnNwZWN0b3JUZXN0Lm1ha2VTaW1wbGVYSFIoIkdFVCIsICJyZXNv
dXJjZXMvZW1wdHkuaHRtbCIsIGZhbHNlLCBmaXJzdFhIUkxvYWRlZCk7CisKKyAgICAgICAgZnVu
Y3Rpb24gZmlyc3RYSFJMb2FkZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0Lm1ha2VTaW1wbGVYSFIoIkdFVCIsICJyZXNvdXJjZXMvZW1wdHkuaHRtbCIsIHRydWUsIHN0
ZXAyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaWRl
YmFyLXdpZHRoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbmV0d29yay1zaWRlYmFyLXdpZHRoLWV4cGVjdGVkLnR4dAppbmRleCBmNGZiYjJl
YThkNmM5ZWM2MzY4NzZiYjhjYmQ5YzljZGExNjMzN2NiLi41MmNhZWRmODkwZjA2NGUxNTNjYWQy
MmNlY2FiYzFiYTc0ZjNjMmViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2lkZWJhci13aWR0aC1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpZGViYXIt
d2lkdGgtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDEzOiBEb25lLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFhIUiBsb2FkZWQ6IDEKIFRlc3Rz
IG5ldHdvcmsgcGFuZWwgc2lkZWJhciB3aWR0aCB3aXRoIGFuZCB3aXRob3V0IHByZWZlcmVuY2Ug
c2V0LgogCiBCdWcgNjUyNTYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay1zaWRlYmFyLXdpZHRoLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2lkZWJhci13aWR0aC5odG1sCmlu
ZGV4IGRlNzQ0Y2NjYjJmODcwMTY4N2E3NDNhYmZhY2JmZTQ5Y2YyMjE5OGUuLjBiMGZjMDM0MTZm
ODhkYTE0YzVhZjBhZTUyYTczOGM3NTQ4YjZlOGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaWRlYmFyLXdpZHRoLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpZGVi
YXItd2lkdGguaHRtbApAQCAtMywyMCArMyw5IEBACiA8c2NyaXB0IHNyYz0iLi4vaW5zcGVjdG9y
LXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL25ldHdvcmstdGVzdC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0PgotZnVuY3Rpb24gbG9hZERhdGEoKQotewotICAgIGRvWEhSKCJHRVQi
LCAicmVzb3VyY2VzL3Jlc291cmNlLnBocCIsIHRydWUsIHJlc291cmNlTG9hZGVkKTsKLX0KLQot
ZnVuY3Rpb24gcmVzb3VyY2VMb2FkZWQoKQotewotICAgIGNvbnNvbGUubG9nKCJEb25lLiIpOwot
fQotCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LmFkZENvbnNvbGVTbmlm
ZmVyKHN0ZXAyKTsKLSAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkRGF0YSgp
Iik7CisgICAgSW5zcGVjdG9yVGVzdC5tYWtlU2ltcGxlWEhSKCJHRVQiLCAicmVzb3VyY2VzL3Jl
c291cmNlLnBocCIsIHRydWUsIHN0ZXAyKTsKIAogICAgIHZhciBvbGRTZXR0aW5nOwogICAgIGZ1
bmN0aW9uIHN0ZXAyKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvbmV0d29yay1zaXplLXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaXplLXN5bmMuaHRtbAppbmRleCAyY2FmMzQx
NWU0NWIwMDVlMTFmYjk3ZGIyMzQ1MmY3NzMxZGRjMDllLi44MjU5OTlhY2MwMjlmMjcwMDI5ZWI3
ZGE2YWU2ODlhYmU4MjlmZjE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL25ldHdvcmstc2l6ZS1zeW5jLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNpemUtc3luYy5odG1sCkBAIC0z
LDIwICszLDkgQEAKIDxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1m
dW5jdGlvbiBsb2FkRGF0YSgpCi17Ci0gICAgZG9YSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3Vy
Y2UucGhwP3R5cGU9aW1hZ2Umc2l6ZT01MDAmZ3ppcD10cnVlJmNodW5rZWQ9dHJ1ZSIsIGZhbHNl
LCByZXNvdXJjZUxvYWRlZCk7Ci19Ci0KLWZ1bmN0aW9uIHJlc291cmNlTG9hZGVkKCkKLXsKLSAg
ICBjb25zb2xlLmxvZygiRG9uZS4iKTsKLX0KLQogZnVuY3Rpb24gdGVzdCgpCiB7Ci0gICAgSW5z
cGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihzdGVwMik7Ci0gICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZSgibG9hZERhdGEoKSIpOworICAgIEluc3BlY3RvclRlc3QubWFrZVNpbXBs
ZVhIUigiR0VUIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHA/dHlwZT1pbWFnZSZzaXplPTUwMCZn
emlwPXRydWUmY2h1bmtlZD10cnVlIiwgZmFsc2UsIHN0ZXAyKTsKIAogICAgIGZ1bmN0aW9uIHN0
ZXAyKCkKICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL25ldHdvcmsteGhyLWFzeW5jLWRvdWJsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLWFzeW5jLWRvdWJs
ZS1leHBlY3RlZC50eHQKaW5kZXggY2QxMWY2M2ZkMThiOWQwNzViOTMzODcyMGJjNDlhZGQ1NWY3
NjBhMy4uOTBhNmVkYTg4OWM5YWNjZWE3Nzc4ZmUwMzNkYWRjZDM0MmRlNDE1ZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1h
c3luYy1kb3VibGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5bmMtZG91YmxlLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDUgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxODogRG9uZS4KK0NPTlNPTEUgTUVT
U0FHRTogbGluZSA2OiBYSFIgbG9hZGVkOiAxCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjogWEhS
IGxvYWRlZDogMgogVGVzdHMgcmVzcG9uc2VzIGluIG5ldHdvcmsgdGFiIGZvciB0d28gWEhScyBz
ZW50IHdpdGhvdXQgYW55IGRlbGF5IGJldHdlZW4gdGhlbS4gQnVnIDkxNjMwCiByZXNvdXJjZTEu
Y29udGVudDogcmVxdWVzdDEKIHJlc291cmNlMi5jb250ZW50OiByZXF1ZXN0MgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1h
c3luYy1kb3VibGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvbmV0d29yay14aHItYXN5bmMtZG91YmxlLmh0bWwKaW5kZXggZTA3YTY1OGQxZmRiNGFhODEz
NTQyNDhmN2ZmNjliNDEzZGE1NGJjOC4uMGJjZTg0YWE3OWE1YzhlM2VlOTM4MWMxNzkzNTdmMTAy
MDA3MWE0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLXhoci1hc3luYy1kb3VibGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLWFzeW5jLWRvdWJsZS5odG1sCkBA
IC0zLDMzICszLDYgQEAKIDxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+
Ci12YXIgZmlyc3RYSFJMb2FkZWQgPSBmYWxzZTsKLXZhciBzZWNvbmRYSFJMb2FkZWQgPSBmYWxz
ZTsKLQotZnVuY3Rpb24gbG9hZERhdGEoKQotewotICAgIGRvWEhSV2l0aFBheWxvYWQoIlBPU1Qi
LCAicmVzb3VyY2VzL2VjaG8tcGF5bG9hZC5waHAiLCB0cnVlLCAncmVxdWVzdDEnLCBmaXJzdFJl
c291cmNlTG9hZGVkKTsKLSAgICBkb1hIUldpdGhQYXlsb2FkKCJQT1NUIiwgInJlc291cmNlcy9l
Y2hvLXBheWxvYWQucGhwIiwgdHJ1ZSwgJ3JlcXVlc3QyJywgc2Vjb25kUmVzb3VyY2VMb2FkZWQp
OwotfQotCi1mdW5jdGlvbiByZXNvdXJjZXNMb2FkZWQoKQotewotICAgIGlmIChmaXJzdFhIUkxv
YWRlZCAmJiBzZWNvbmRYSFJMb2FkZWQpCi0gICAgICAgIGNvbnNvbGUubG9nKCdEb25lLicpOwot
fQotCi1mdW5jdGlvbiBmaXJzdFJlc291cmNlTG9hZGVkKCkKLXsKLSAgICBmaXJzdFhIUkxvYWRl
ZCA9IHRydWU7Ci0gICAgcmVzb3VyY2VzTG9hZGVkKCk7Ci19Ci0KLWZ1bmN0aW9uIHNlY29uZFJl
c291cmNlTG9hZGVkKCkKLXsKLSAgICBzZWNvbmRYSFJMb2FkZWQgPSB0cnVlOwotICAgIHJlc291
cmNlc0xvYWRlZCgpOwotfQotCiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICAvLyBTaW5jZSB0aGlz
IHRlc3QgY291bGQgYmUgcnVuIHRvZ2V0aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQg
Y2FjaGUKQEAgLTM4LDI5ICsxMSwzMyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9u
IHN0ZXAxKCkKICAgICB7Ci0gICAgICAgIEluc3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIo
c3RlcDIpOwotICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkRGF0YSgp
Iik7CisgICAgICAgIEluc3BlY3RvclRlc3QubWFrZVNpbXBsZVhIUldpdGhQYXlsb2FkKCJQT1NU
IiwgInJlc291cmNlcy9lY2hvLXBheWxvYWQucGhwIiwgdHJ1ZSwgJ3JlcXVlc3QxJywgc3RlcDIp
OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICB7CisgICAgICAgIEluc3BlY3Rv
clRlc3QubWFrZVNpbXBsZVhIUldpdGhQYXlsb2FkKCJQT1NUIiwgInJlc291cmNlcy9lY2hvLXBh
eWxvYWQucGhwIiwgdHJ1ZSwgJ3JlcXVlc3QyJywgc3RlcDMpOworICAgIH0KKworICAgIGZ1bmN0
aW9uIHN0ZXAzKCkKKyAgICB7CiAgICAgICAgIHZhciByZXF1ZXN0MSA9IFdlYkluc3BlY3Rvci5w
YW5lbCgibmV0d29yayIpLnJlcXVlc3RzW1dlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJl
cXVlc3RzLmxlbmd0aCAtIDJdOwogICAgICAgICB2YXIgcmVxdWVzdDIgPSBXZWJJbnNwZWN0b3Iu
cGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5y
ZXF1ZXN0cy5sZW5ndGggLSAxXTsKLSAgICAgICAgcmVxdWVzdDEucmVxdWVzdENvbnRlbnQoc3Rl
cDMpOwotICAgICAgICByZXF1ZXN0Mi5yZXF1ZXN0Q29udGVudChzdGVwMyk7CisgICAgICAgIHJl
cXVlc3QxLnJlcXVlc3RDb250ZW50KHN0ZXA0KTsKKyAgICAgICAgcmVxdWVzdDIucmVxdWVzdENv
bnRlbnQoc3RlcDQpOwogICAgIH0KIAogICAgIHZhciB0b0xvYWQgPSAyOwotICAgIGZ1bmN0aW9u
IHN0ZXAzKCkKKyAgICBmdW5jdGlvbiBzdGVwNCgpCiAgICAgewotICAgICAgICBpZiAoLS10b0xv
YWQpIAorICAgICAgICBpZiAoLS10b0xvYWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IHZhciByZXF1ZXN0MSA9IFdlYkluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzW1dl
Ykluc3BlY3Rvci5wYW5lbCgibmV0d29yayIpLnJlcXVlc3RzLmxlbmd0aCAtIDJdOwogICAgICAg
ICB2YXIgcmVxdWVzdDIgPSBXZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0c1tX
ZWJJbnNwZWN0b3IucGFuZWwoIm5ldHdvcmsiKS5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoInJlc291cmNlMS5jb250ZW50OiAiICsgcmVxdWVz
dDEuY29udGVudCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJyZXNvdXJjZTIu
Y29udGVudDogIiArIHJlcXVlc3QyLmNvbnRlbnQpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydFRydWUocmVxdWVzdDEuY29udGVudCA9PT0gJ3JlcXVlc3QxJyAmJiByZXF1ZXN0Mi5jb250
ZW50ID09PSAncmVxdWVzdDInKTsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3Qo
KTsgICAgICAKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICB9CiB9
CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvbmV0d29yay14aHItYXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1hc3luYy1leHBlY3RlZC50eHQK
aW5kZXggNzkxZWU3MTliNGI5NThiMDI3ZDQ4MzRhZGJhZDNiYjZjZmIzM2UyNC4uMmQxNTdjMTQw
M2M1Mzc0MGVhNWM2YzYxZjQ2YTY1MTdjOGMyYTVhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1hc3luYy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3Jr
LXhoci1hc3luYy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6
IGxpbmUgMTM6IERvbmUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjogWEhSIGxvYWRlZDogMQog
VGVzdHMgWEhSIG5ldHdvcmsgcmVzb3VyY2UgdHlwZSBhbmQgY29udGVudCBmb3IgYXN5bmNocm9u
b3VzIHJlcXVlc3RzLiBCdWcgNjEyMDUKIAogaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9yZXNvdXJjZS5waHAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5bmMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItYXN5bmMu
aHRtbAppbmRleCBmNmZiZTA1YjdiZjFiMTY2ODIxOWRkODkyMGQ5ZjM0NDFkNDY0ZmI1Li5hYWY5
M2UwODIxNzBiYjY1MjI3MmU0ODY0OWM2ZWViYjA5ZjkwZWNjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLWFzeW5jLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXho
ci1hc3luYy5odG1sCkBAIC0zLDE2ICszLDYgQEAKIDxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0b3It
dGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlvbiBsb2FkRGF0YSgpCi17Ci0gICAgZG9YSFIoIkdFVCIs
ICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwIiwgdHJ1ZSwgcmVzb3VyY2VMb2FkZWQpOwotfQotCi1m
dW5jdGlvbiByZXNvdXJjZUxvYWRlZCgpCi17Ci0gICAgY29uc29sZS5sb2coIkRvbmUuIik7Ci19
Ci0KIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIC8vIFNpbmNlIHRoaXMgdGVzdCBjb3VsZCBiZSBy
dW4gdG9nZXRoZXIgd2l0aCBvdGhlciBpbnNwZWN0b3IgYmFja2VuZCBjYWNoZQpAQCAtMjEsOCAr
MTEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHN0ZXAxKCkKICAgICB7Ci0g
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkQ29uc29sZVNuaWZmZXIoc3RlcDIpOwotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2FkRGF0YSgpIik7CisgICAgICAgIEluc3Bl
Y3RvclRlc3QubWFrZVNpbXBsZVhIUigiR0VUIiwgInJlc291cmNlcy9yZXNvdXJjZS5waHAiLCB0
cnVlLCBzdGVwMik7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDIoKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1yZXBs
YXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9uZXR3b3JrLXhoci1yZXBsYXktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyOTcxYWU2OGZj
NGUxYjM2NjYzZTkzNjdhZmU3YzE4YjA5YzUxMDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXJlcGxheS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw2MCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFhIUiBs
b2FkZWQ6IDEKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBYSFIgbG9hZGVkOiAyCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgNjogWEhSIGxvYWRlZDogMworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6
IFhIUiBsb2FkZWQ6IDQKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBYSFIgbG9hZGVkOiA1CitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgNjogWEhSIGxvYWRlZDogNgorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDY6IFhIUiBsb2FkZWQ6IDcKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBYSFIgbG9hZGVk
OiA4CitUZXN0cyBYSFIgcmVwbGF5aW5nLiBCdWcgOTUxODcKKworUnVubmluZzogdGVzdEdldFN0
YXRpY0FzeW5jCitEdW1waW5nIHJlcXVlc3Q6IAorICAgIHVybDogaHR0cDovL3VzZXI6cGFzc3dv
cmRAMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2VtcHR5Lmh0bWwK
KyAgICByZXF1ZXN0TWV0aG9kOiBHRVQKKyAgICB0ZXN0IHJlcXVlc3QgaGVhZGVyIHZhbHVlOiBo
ZWFkZXJWYWx1ZQorCitSdW5uaW5nOiB0ZXN0R2V0U3RhdGljU3luYworRHVtcGluZyByZXF1ZXN0
OiAKKyAgICB1cmw6IGh0dHA6Ly91c2VyOnBhc3N3b3JkQDEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9lbXB0eS5odG1sCisgICAgcmVxdWVzdE1ldGhvZDogR0VUCisg
ICAgdGVzdCByZXF1ZXN0IGhlYWRlciB2YWx1ZTogaGVhZGVyVmFsdWUKKworUnVubmluZzogdGVz
dEdldENhY2hlZEFzeW5jCitEdW1waW5nIHJlcXVlc3Q6IAorICAgIHVybDogaHR0cDovL3VzZXI6
cGFzc3dvcmRAMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3JhbmRv
bS1jYWNoZWQucGhwCisgICAgcmVxdWVzdE1ldGhvZDogR0VUCisgICAgdGVzdCByZXF1ZXN0IGhl
YWRlciB2YWx1ZTogaGVhZGVyVmFsdWUKKworUnVubmluZzogdGVzdEdldENhY2hlZFN5bmMKK0R1
bXBpbmcgcmVxdWVzdDogCisgICAgdXJsOiBodHRwOi8vdXNlcjpwYXNzd29yZEAxMjcuMC4wLjE6
ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmFuZG9tLWNhY2hlZC5waHAKKyAgICBy
ZXF1ZXN0TWV0aG9kOiBHRVQKKyAgICB0ZXN0IHJlcXVlc3QgaGVhZGVyIHZhbHVlOiBoZWFkZXJW
YWx1ZQorCitSdW5uaW5nOiB0ZXN0R2V0UmFuZG9tQXN5bmMKK0R1bXBpbmcgcmVxdWVzdDogCisg
ICAgdXJsOiBodHRwOi8vdXNlcjpwYXNzd29yZEAxMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvcmFuZG9tLnBocAorICAgIHJlcXVlc3RNZXRob2Q6IEdFVAorICAgIHRl
c3QgcmVxdWVzdCBoZWFkZXIgdmFsdWU6IGhlYWRlclZhbHVlCisKK1J1bm5pbmc6IHRlc3RHZXRS
YW5kb21TeW5jCitEdW1waW5nIHJlcXVlc3Q6IAorICAgIHVybDogaHR0cDovL3VzZXI6cGFzc3dv
cmRAMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL3JhbmRvbS5waHAK
KyAgICByZXF1ZXN0TWV0aG9kOiBHRVQKKyAgICB0ZXN0IHJlcXVlc3QgaGVhZGVyIHZhbHVlOiBo
ZWFkZXJWYWx1ZQorCitSdW5uaW5nOiB0ZXN0UG9zdEFzeW5jCitEdW1waW5nIHJlcXVlc3Q6IAor
ICAgIHVybDogaHR0cDovL3VzZXI6cGFzc3dvcmRAMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL3JhbmRvbS5waHAKKyAgICByZXF1ZXN0Rm9ybURhdGE6IHBheWxvYWQK
KyAgICByZXF1ZXN0TWV0aG9kOiBQT1NUCisgICAgdGVzdCByZXF1ZXN0IGhlYWRlciB2YWx1ZTog
aGVhZGVyVmFsdWUKKworUnVubmluZzogdGVzdFBvc3RTeW5jCitEdW1waW5nIHJlcXVlc3Q6IAor
ICAgIHVybDogaHR0cDovL3VzZXI6cGFzc3dvcmRAMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL3JhbmRvbS5waHAKKyAgICByZXF1ZXN0Rm9ybURhdGE6IHBheWxvYWQK
KyAgICByZXF1ZXN0TWV0aG9kOiBQT1NUCisgICAgdGVzdCByZXF1ZXN0IGhlYWRlciB2YWx1ZTog
aGVhZGVyVmFsdWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLXhoci1yZXBsYXkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItcmVwbGF5Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDkzNjk3MWIzMzRmZjk2YzYyMGIyNjk5MGY4NDMxMjNkNDhiY2YzYgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHIt
cmVwbGF5Lmh0bWwKQEAgLTAsMCArMSwxMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL25ldHdv
cmstdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKK3Nl
dFRpbWVvdXQoSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QuYmluZChJbnNwZWN0b3JUZXN0KSwg
MzAwMCk7CisgICAgdmFyIG5ldHdvcmtQYW5lbCA9IFdlYkluc3BlY3Rvci5zaG93UGFuZWwoIm5l
dHdvcmsiKTsKKworICAgIGZ1bmN0aW9uIGxhc3RSZXF1ZXN0KCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBuZXR3b3JrUGFuZWwucmVxdWVzdHNbbmV0d29ya1BhbmVsLnJlcXVlc3RzLmxlbmd0aCAt
IDFdOworICAgIH0KKworICAgIGZ1bmN0aW9uIGR1bXBSZXF1ZXN0KHJlcXVlc3QpCisgICAgewor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRHVtcGluZyByZXF1ZXN0OiAiKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICB1cmw6ICIgKyByZXF1ZXN0LnVybCk7
CisgICAgICAgIGlmIChyZXF1ZXN0LnJlcXVlc3RGb3JtRGF0YSkKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCIgICAgcmVxdWVzdEZvcm1EYXRhOiAiICsgcmVxdWVzdC5yZXF1
ZXN0Rm9ybURhdGEpOworICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICAgIHJlcXVl
c3RNZXRob2Q6ICIgKyByZXF1ZXN0LnJlcXVlc3RNZXRob2QpOworICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiICAgIHRlc3QgcmVxdWVzdCBoZWFkZXIgdmFsdWU6ICIgKyByZXF1ZXN0
LnJlcXVlc3RIZWFkZXJWYWx1ZSgiaGVhZGVyTmFtZSIpKTsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBhc3NlcnRSZXF1ZXN0RXF1YWwocmVxdWVzdDEsIHJlcXVlc3QyKQorICAgIHsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocmVxdWVzdDEudXJsLCByZXF1ZXN0Mi51cmwsICJS
ZXF1ZXN0cyBoYXZlIGRpZmZlcmVudCB1cmwiKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRFcXVhbHMocmVxdWVzdDEucmVxdWVzdEZvcm1EYXRhLCByZXF1ZXN0Mi5yZXF1ZXN0Rm9ybURh
dGEsICJSZXF1ZXN0cyBoYXZlIGRpZmZlcmVudCByZXF1ZXN0Rm9ybURhdGEiKTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocmVxdWVzdDEucmVxdWVzdE1ldGhvZCwgcmVxdWVz
dDIucmVxdWVzdE1ldGhvZCwgIlJlcXVlc3RzIGhhdmUgZGlmZmVyZW50IHJlcXVlc3RNZXRob2Qi
KTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMocmVxdWVzdDEucmVxdWVzdEhl
YWRlcnNUZXh0LCByZXF1ZXN0Mi5yZXF1ZXN0SGVhZGVyc1RleHQsICJSZXF1ZXN0cyBoYXZlIGRp
ZmZlcmVudCByZXF1ZXN0SGVhZGVyc1RleHQiKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiB0ZXN0
WEhSUmVwbGF5KG1ldGhvZCwgdXJsLCBhc3luYywgdXNlciwgcGFzc3dvcmQsIGhlYWRlcnMsIHdp
dGhDcmVkZW50aWFscywgcGF5bG9hZCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBJbnNwZWN0
b3JUZXN0LnJlc2V0SW5zcGVjdG9yUmVzb3VyY2VzRGF0YShzdGVwMSk7CisKKyAgICAgICAgZnVu
Y3Rpb24gc3RlcDEoKQorICAgICAgICB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm1ha2VY
SFIobWV0aG9kLCB1cmwsIGFzeW5jLCB1c2VyLCBwYXNzd29yZCwgaGVhZGVycywgd2l0aENyZWRl
bnRpYWxzLCBwYXlsb2FkLCBzdGVwMik7CisgICAgICAgIH0KKworICAgICAgICB2YXIgb3JpZ2lu
YWxSZXF1ZXN0OworICAgICAgICBmdW5jdGlvbiBzdGVwMigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG9yaWdpbmFsUmVxdWVzdCA9IGxhc3RSZXF1ZXN0KCk7CisgICAgICAgICAgICBkdW1wUmVx
dWVzdChvcmlnaW5hbFJlcXVlc3QpOworICAgICAgICAgICAgTmV0d29ya0FnZW50LnJlcGxheVhI
UihvcmlnaW5hbFJlcXVlc3QucmVxdWVzdElkKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkU25pZmZlcihXZWJJbnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlLCAiX2FwcGVu
ZFJlcXVlc3QiLCBzdGVwMyk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzdGVwMygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciByZXBsYXllZFJlcXVlc3QgPSBsYXN0UmVxdWVz
dCgpOworICAgICAgICAgICAgYXNzZXJ0UmVxdWVzdEVxdWFsKG9yaWdpbmFsUmVxdWVzdCwgcmVw
bGF5ZWRSZXF1ZXN0KTsKKyAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9
CisKKworICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24g
dGVzdEdldFN0YXRpY0FzeW5jKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RYSFJS
ZXBsYXkoIkdFVCIsICJyZXNvdXJjZXMvZW1wdHkuaHRtbCIsIHRydWUsICJ1c2VyIiwgInBhc3N3
b3JkIiwgW1siaGVhZGVyTmFtZSIsICJoZWFkZXJWYWx1ZSJdXSwgZmFsc2UsIHVuZGVmaW5lZCwg
bmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEdldFN0YXRpY1N5bmMo
bmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFhIUlJlcGxheSgiR0VUIiwgInJlc291
cmNlcy9lbXB0eS5odG1sIiwgZmFsc2UsICJ1c2VyIiwgInBhc3N3b3JkIiwgW1siaGVhZGVyTmFt
ZSIsICJoZWFkZXJWYWx1ZSJdXSwgZmFsc2UsIHVuZGVmaW5lZCwgbmV4dCk7CisgICAgICAgIH0s
CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEdldENhY2hlZEFzeW5jKG5leHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHRlc3RYSFJSZXBsYXkoIkdFVCIsICJyZXNvdXJjZXMvcmFuZG9tLWNhY2hl
ZC5waHAiLCB0cnVlLCAidXNlciIsICJwYXNzd29yZCIsIFtbImhlYWRlck5hbWUiLCAiaGVhZGVy
VmFsdWUiXV0sIGZhbHNlLCB1bmRlZmluZWQsIG5leHQpOworICAgICAgICB9LAorCisgICAgICAg
IGZ1bmN0aW9uIHRlc3RHZXRDYWNoZWRTeW5jKG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHRlc3RYSFJSZXBsYXkoIkdFVCIsICJyZXNvdXJjZXMvcmFuZG9tLWNhY2hlZC5waHAiLCBmYWxz
ZSwgInVzZXIiLCAicGFzc3dvcmQiLCBbWyJoZWFkZXJOYW1lIiwgImhlYWRlclZhbHVlIl1dLCBm
YWxzZSwgdW5kZWZpbmVkLCBuZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0
ZXN0R2V0UmFuZG9tQXN5bmMobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFhIUlJl
cGxheSgiR0VUIiwgInJlc291cmNlcy9yYW5kb20ucGhwIiwgdHJ1ZSwgInVzZXIiLCAicGFzc3dv
cmQiLCBbWyJoZWFkZXJOYW1lIiwgImhlYWRlclZhbHVlIl1dLCBmYWxzZSwgdW5kZWZpbmVkLCBu
ZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0UmFuZG9tU3luYyhu
ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0WEhSUmVwbGF5KCJHRVQiLCAicmVzb3Vy
Y2VzL3JhbmRvbS5waHAiLCBmYWxzZSwgInVzZXIiLCAicGFzc3dvcmQiLCBbWyJoZWFkZXJOYW1l
IiwgImhlYWRlclZhbHVlIl1dLCBmYWxzZSwgdW5kZWZpbmVkLCBuZXh0KTsKKyAgICAgICAgfSwK
KworICAgICAgICBmdW5jdGlvbiB0ZXN0UG9zdEFzeW5jKG5leHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHRlc3RYSFJSZXBsYXkoIlBPU1QiLCAicmVzb3VyY2VzL3JhbmRvbS5waHAiLCB0cnVl
LCAidXNlciIsICJwYXNzd29yZCIsIFtbImhlYWRlck5hbWUiLCAiaGVhZGVyVmFsdWUiXV0sIGZh
bHNlLCAicGF5bG9hZCIsIG5leHQpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRl
c3RQb3N0U3luYyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0WEhSUmVwbGF5KCJQ
T1NUIiwgInJlc291cmNlcy9yYW5kb20ucGhwIiwgZmFsc2UsICJ1c2VyIiwgInBhc3N3b3JkIiwg
W1siaGVhZGVyTmFtZSIsICJoZWFkZXJWYWx1ZSJdXSwgZmFsc2UsICJwYXlsb2FkIiwgbmV4dCk7
CisgICAgICAgIH0KKyAgICBdKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorVGVzdHMgWEhSIHJlcGxheWluZy4KKzxhIGhyZWY9Imh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTE4NyI+QnVnIDk1MTg3PC9hPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLXhoci1zYW1lLXVybC1hcy1tYWluLXJlc291cmNlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHIt
c2FtZS11cmwtYXMtbWFpbi1yZXNvdXJjZS1leHBlY3RlZC50eHQKaW5kZXggN2FiYjhhODg3MGQ0
MGVhZTQxYjU5N2YzYTY5M2M1NWNmODRhMDQ5Zi4uOTk4ZTMwOWFiZDFiMmVjOThmYTJjZDNjZTli
Njk1ODYyMTU2YTE4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9uZXR3b3JrLXhoci1zYW1lLXVybC1hcy1tYWluLXJlc291cmNlLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdv
cmsteGhyLXNhbWUtdXJsLWFzLW1haW4tcmVzb3VyY2UtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEs
NCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBEb25lLgorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDY6IFhIUiBsb2FkZWQ6IDEKIFRlc3RzIHRoYXQgWEhScyB3aXRoIHRoZSBzYW1lIHVybCBh
cyBhIG1haW4gcmVzb3VyY2UgaGF2ZSBjb3JyZWN0IGNhdGVnb3J5LgogCiBCdWcgNjg2NDgKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29y
ay14aHItc2FtZS11cmwtYXMtbWFpbi1yZXNvdXJjZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1zYW1lLXVybC1hcy1tYWluLXJlc291
cmNlLmh0bWwKaW5kZXggMDFiZWZkNzc1OWE2ZmMwZDdkZTVlYjM1MmUxMTgyNTYyMmQ1MGZhYS4u
M2JkZmNhYzA3YzhjZmQxMzMyYWY2N2ZmNzBiYTBmNWQzYmIzYmUwZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1zYW1lLXVy
bC1hcy1tYWluLXJlc291cmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1zYW1lLXVybC1hcy1tYWluLXJlc291cmNlLmh0bWwK
QEAgLTMsMjAgKzMsOSBAQAogPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlw
dD4KLWZ1bmN0aW9uIGxvYWREYXRhKCkKLXsKLSAgICBkb1hIUigiR0VUIiwgIm5ldHdvcmsteGhy
LXNhbWUtdXJsLWFzLW1haW4tcmVzb3VyY2UuaHRtbCIsIHRydWUsIHJlc291cmNlTG9hZGVkKTsK
LX0KLQotZnVuY3Rpb24gcmVzb3VyY2VMb2FkZWQoKQotewotICAgIGNvbnNvbGUubG9nKCJEb25l
LiIpOwotfQotCiBmdW5jdGlvbiB0ZXN0KCkKIHsKLSAgICBJbnNwZWN0b3JUZXN0LmFkZENvbnNv
bGVTbmlmZmVyKHN0ZXAyKTsKLSAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJsb2Fk
RGF0YSgpIik7CisgICAgSW5zcGVjdG9yVGVzdC5tYWtlU2ltcGxlWEhSKCJHRVQiLCAibmV0d29y
ay14aHItc2FtZS11cmwtYXMtbWFpbi1yZXNvdXJjZS5odG1sIiwgdHJ1ZSwgc3RlcDIpOwogCiAg
ICAgZnVuY3Rpb24gc3RlcDIoKQogICAgIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3luYy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMt
ZXhwZWN0ZWQudHh0CmluZGV4IDU3Mzc3YjliZmIyZjBhMTA4MDgzMmM0NWViN2YxNmFkZWFmMDYw
ZmUuLmRhNjVmN2I5ZGNiNjJiNDY1OGJmZDE5Yzg0Yzc0ZDgxN2U1OWY3MDMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3lu
Yy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9uZXR3b3JrLXhoci1zeW5jLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNP
TEUgTUVTU0FHRTogbGluZSAxMzogRG9uZS4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2OiBYSFIg
bG9hZGVkOiAxCiBUZXN0cyBYSFIgbmV0d29yayByZXNvdXJjZSB0eXBlIGFuZCBjb250ZW50IGZv
ciBzeW5jaHJvbm91cyByZXF1ZXN0cy4gQnVnIDYxMjA1CiAKIGh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmVzb3VyY2UucGhwCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXN5bmMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14
aHItc3luYy5odG1sCmluZGV4IGYxZjdjZjgwYmJlNWQ0MGFmNWNlZGE1NzJiOWIwOGRkNDM3ODk4
ZTYuLmVmMWYwOTFlMTk0NmUzNjhiZjZiNzFkZjEyZTdhZTFlMjdhMmQ3YTAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItc3lu
Yy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0
d29yay14aHItc3luYy5odG1sCkBAIC0zLDE2ICszLDYgQEAKIDxzY3JpcHQgc3JjPSIuLi9pbnNw
ZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0Lmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQ+Ci1mdW5jdGlvbiBsb2FkRGF0YSgpCi17Ci0gICAgZG9YSFIo
IkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2UucGhwIiwgZmFsc2UsIHJlc291cmNlTG9hZGVkKTsK
LX0KLQotZnVuY3Rpb24gcmVzb3VyY2VMb2FkZWQoKQotewotICAgIGNvbnNvbGUubG9nKCJEb25l
LiIpOwotfQotCiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICAvLyBTaW5jZSB0aGlzIHRlc3QgY291
bGQgYmUgcnVuIHRvZ2V0aGVyIHdpdGggb3RoZXIgaW5zcGVjdG9yIGJhY2tlbmQgY2FjaGUKQEAg
LTIxLDggKzExLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiBzdGVwMSgpCiAg
ICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZENvbnNvbGVTbmlmZmVyKHN0ZXAyKTsKLSAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgibG9hZERhdGEoKSIpOworICAgICAg
ICBJbnNwZWN0b3JUZXN0Lm1ha2VTaW1wbGVYSFIoIkdFVCIsICJyZXNvdXJjZXMvcmVzb3VyY2Uu
cGhwIiwgZmFsc2UsIHN0ZXAyKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBzdGVwMigpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jl
c291cmNlLXRyZWUtbm8teGhycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtbm8teGhycy1leHBlY3RlZC50
eHQKaW5kZXggOGUyN2UxMjExNzYyYzEyOTFjYmM4MGE4YWZhYzAyM2U4Nzg3ZWI2OC4uNWJjNThl
NmE5NzgwNGQ4YjJiMDM1YzM4ZDI0ZjNiNDYzZWU5ZWVmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNvdXJjZS10cmVlLW5vLXho
cnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1uby14aHJzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMzogRG9uZS4KK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA2OiBYSFIgbG9hZGVkOiAxCiBUZXN0cyB0aGF0IFhIUnMgYXJlIG5vdCBhZGRlZCB0byBy
ZXNvdXJjZVRyZWVNb2RlbC4KIAogQnVnIDYwMzIxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVlL3Jlc291cmNlLXRyZWUtbm8teGhycy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtdHJlZS9yZXNv
dXJjZS10cmVlLW5vLXhocnMuaHRtbAppbmRleCA2M2VkMzQ1NDVmMDA2NzdjOGNmODU0OWE1N2Mw
NmM0NWQzMzc1OGFmLi5mNTM0NWUyYjExY2MyNmQ4YjUyNDMxMzkwMTE2ZGFmOGI4N2IyNjI5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS10cmVl
L3Jlc291cmNlLXRyZWUtbm8teGhycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL3Jlc291cmNlLXRyZWUvcmVzb3VyY2UtdHJlZS1uby14aHJzLmh0bWwKQEAgLTMs
MjAgKzMsOSBAQAogPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi9uZXR3b3JrLXRlc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLWZ1
bmN0aW9uIHNlbmRYSFIoKQotewotICAgIGRvWEhSKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNl
LnBocCIsIGZhbHNlLCByZXNvdXJjZUxvYWRlZCk7Ci19Ci0KLWZ1bmN0aW9uIHJlc291cmNlTG9h
ZGVkKCkKLXsKLSAgICBjb25zb2xlLmxvZygiRG9uZS4iKTsKLX0KLQogZnVuY3Rpb24gdGVzdCgp
CiB7Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRDb25zb2xlU25pZmZlcihzdGVwMik7Ci0gICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgic2VuZFhIUigpIik7CisgICAgSW5zcGVjdG9yVGVz
dC5tYWtlU2ltcGxlWEhSKCJHRVQiLCAicmVzb3VyY2VzL3Jlc291cmNlLnBocCIsIGZhbHNlLCBz
dGVwMik7CiAKICAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS14aHIt
bG9nZ2luZy1hc3luYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWFzeW5jLWV4cGVjdGVk
LnR4dAppbmRleCA5M2Q1NjQ5ZGQxMjQ0ODVmM2U3ZWVmZjhlMDFiNmNmYTc2YmUzOWU2Li5mZGRm
NjFjZDg4MjU0MWE0MjdjYWRjMDU1Y2EyZTZhZjA5ZWNkNGQzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1s
b2dnaW5nLWFzeW5jLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWFzeW5jLWV4cGVj
dGVkLnR4dApAQCAtMSw4ICsxLDkgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxNDogRG9uZS4K
LUNPTlNPTEUgTUVTU0FHRTogbGluZSAxNDogRG9uZS4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA2
OiBYSFIgbG9hZGVkOiAxCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjogWEhSIGxvYWRlZDogMgog
VGVzdHMgdGhhdCBYTUxIdHRwUmVxdWVzdCBMb2dnaW5nIHdvcmtzIHdoZW4gRW5hYmxlZCBhbmQg
ZG9lc24ndCBzaG93IGxvZ3Mgd2hlbiBEaXNhYmxlZCBmb3IgYXN5bmNocm9ub3VzIFhIUnMuCiAK
IEJ1ZyA3OTIyOQotWEhSIGZpbmlzaGVkIGxvYWRpbmc6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAv
aW5zcGVjdG9yL3Jlc291cmNlcy94aHItZXhpc3RzLmh0bWwiLiBuZXR3b3JrLXRlc3QuanM6NDQK
LURvbmUuIGNvbnNvbGUteGhyLWxvZ2dpbmctYXN5bmMuaHRtbDoxNAorWEhSIGZpbmlzaGVkIGxv
YWRpbmc6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZXhp
c3RzLmh0bWwiLiBuZXR3b3JrLXRlc3QuanM6OTUKK1hIUiBsb2FkZWQ6IDEgbmV0d29yay10ZXN0
LmpzOjYKK1hIUiBsb2FkZWQ6IDIgbmV0d29yay10ZXN0LmpzOjYKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29uc29sZS14
aHItbG9nZ2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4dAppbmRl
eCA4MGZiMzZkNjU0NmFhNzgzNzlmOWM5YTc4MjAwOGU2MDYyMmVmMWU3Li45NzRlOTQ0Zjk3ZDMy
YmFjNjkyNDhmYWMzY2NiNGQzYTVkMmUzYjYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9jb25zb2xlLXhoci1sb2dnaW5nLWV4cGVjdGVkLnR4dApAQCAtMTEsMTcgKzEx
LDE3IEBAIENPTlNPTEUgTUVTU0FHRTogWE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgaHR0cDov
L2xvY2FsaG9zdDo4MDAwL2luc3BlY3Rvci9yZXNvCiBUZXN0cyB0aGF0IFhNTEh0dHBSZXF1ZXN0
IExvZ2dpbmcgd29ya3Mgd2hlbiBFbmFibGVkIGFuZCBkb2Vzbid0IHNob3cgbG9ncyB3aGVuIERp
c2FibGVkLgogCiBzZW5kaW5nIGEgR0VUIHJlcXVlc3QgdG8gcmVzb3VyY2VzL3hoci1leGlzdHMu
aHRtbCBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6MTAKLVhIUiBmaW5pc2hlZCBsb2FkaW5nOiAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMveGhyLWV4aXN0cy5odG1s
Ii4gbmV0d29yay10ZXN0LmpzOjQ0CitYSFIgZmluaXNoZWQgbG9hZGluZzogImh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1leGlzdHMuaHRtbCIuIG5ldHdvcmst
dGVzdC5qczo5NQogc2VuZGluZyBhIEdFVCByZXF1ZXN0IHRvIHJlc291cmNlcy94aHItZG9lcy1u
b3QtZXhpc3QuaHRtbCBjb25zb2xlLXhoci1sb2dnaW5nLmh0bWw6MTAKLUdFVCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbCA0
MDQgKE5vdCBGb3VuZCkgbmV0d29yay10ZXN0LmpzOjQ0Ci1YSFIgZmluaXNoZWQgbG9hZGluZzog
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1kb2VzLW5vdC1l
eGlzdC5odG1sIi4gbmV0d29yay10ZXN0LmpzOjQ0CitHRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAw
L2luc3BlY3Rvci9yZXNvdXJjZXMveGhyLWRvZXMtbm90LWV4aXN0Lmh0bWwgNDA0IChOb3QgRm91
bmQpIG5ldHdvcmstdGVzdC5qczo5NQorWEhSIGZpbmlzaGVkIGxvYWRpbmc6ICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbCIu
IG5ldHdvcmstdGVzdC5qczo5NQogc2VuZGluZyBhIFBPU1QgcmVxdWVzdCB0byByZXNvdXJjZXMv
cG9zdC10YXJnZXQuY2dpIGNvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDoxMAotWEhSIGZpbmlzaGVk
IGxvYWRpbmc6ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9wb3N0
LXRhcmdldC5jZ2kiLiBuZXR3b3JrLXRlc3QuanM6NDQKK1hIUiBmaW5pc2hlZCBsb2FkaW5nOiAi
aHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMvcG9zdC10YXJnZXQuY2dp
Ii4gbmV0d29yay10ZXN0LmpzOjk1CiBzZW5kaW5nIGEgR0VUIHJlcXVlc3QgdG8gaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMveGhyLWV4aXN0cy5odG1sIGNvbnNvbGUt
eGhyLWxvZ2dpbmcuaHRtbDoxMAogWE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMveGhyLWV4aXN0cy5odG1sLiBPcmlnaW4g
aHR0cDovLzEyNy4wLjAuMTo4MDAwIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9sLUFs
bG93LU9yaWdpbi4KIHNlbmRpbmcgYSBHRVQgcmVxdWVzdCB0byByZXNvdXJjZXMveGhyLWV4aXN0
cy5odG1sIGNvbnNvbGUteGhyLWxvZ2dpbmcuaHRtbDoxMAogc2VuZGluZyBhIEdFVCByZXF1ZXN0
IHRvIHJlc291cmNlcy94aHItZG9lcy1ub3QtZXhpc3QuaHRtbCBjb25zb2xlLXhoci1sb2dnaW5n
Lmh0bWw6MTAKLUdFVCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy94
aHItZG9lcy1ub3QtZXhpc3QuaHRtbCA0MDQgKE5vdCBGb3VuZCkgbmV0d29yay10ZXN0LmpzOjQ0
CitHRVQgaHR0cDovLzEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9yZXNvdXJjZXMveGhyLWRvZXMt
bm90LWV4aXN0Lmh0bWwgNDA0IChOb3QgRm91bmQpIG5ldHdvcmstdGVzdC5qczo5NQogc2VuZGlu
ZyBhIFBPU1QgcmVxdWVzdCB0byByZXNvdXJjZXMvcG9zdC10YXJnZXQuY2dpIGNvbnNvbGUteGhy
LWxvZ2dpbmcuaHRtbDoxMAogc2VuZGluZyBhIEdFVCByZXF1ZXN0IHRvIGh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1leGlzdHMuaHRtbCBjb25zb2xlLXhoci1s
b2dnaW5nLmh0bWw6MTAKIFhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBsb2FkIGh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMC9pbnNwZWN0b3IvcmVzb3VyY2VzL3hoci1leGlzdHMuaHRtbC4gT3JpZ2luIGh0dHA6
Ly8xMjcuMC4wLjE6ODAwMCBpcyBub3QgYWxsb3dlZCBieSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1P
cmlnaW4uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164070</attachid>
            <date>2012-09-14 01:47:48 -0700</date>
            <delta_ts>2012-09-14 02:44:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95187-20120914124719.patch</filename>
            <type>text/plain</type>
            <size>48210</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk5MjU3Y2YzYjkyODdi
ODQ1NjYwOTY0Zjg2ZGIxYmVhZDFiYTkxYS4uZmI5ZmU1OGM5MzZjOTdjYjEzMDUxNWJhOTliZWYy
NTlmZDhkYjQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDEyLTA5LTEzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEFkZCBhYmlsaXR5IHRvIHJlcGxheSBYSFIgaW4gbmV0d29yayBwYW5lbC4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MTg3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggYmFzZWQgb24gUGF2
ZWwgQ2hhZG5vdidzIHBhdGNoLgorICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgUmVwbGF5
IFhIUiBmZWF0dXJlIGluIHdlYiBpbnNwZWN0b3IuCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0J3Mg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCBpcyBub3cgdXNlZCB0byBtYXAgWE1MSHR0cFJlcXVlc3Qg
b2JqZWN0IHRvIFJlc291cmNlTG9hZGVyIHJlcXVlc3QgaWRlbnRpZmllcnMuCisgICAgICAgIEJl
Zm9yZSBpbml0aWF0aW5nIGxvYWQgYWxsIFhIUiBwYXJhbWV0ZXJzIGFyZSBub3cgc2VudCB0byBp
bnNwZWN0b3IuCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0IHBhcmFtZXRlcnMgYXJlIHN0b3JlZCBp
biBpbnNwZWN0b3IncyBuZXR3b3JrIHJlcXVlc3QgY2FjaGUgaW4gWEhSUmVwbGF5RGF0YSBjbGFz
cy4KKyAgICAgICAgV2hlbiBYSFIgcmVwbGF5IGlzIHJlcXVlc3RlZCwgYSBuZXcgWE1MSHR0cFJl
cXVlc3QgaXMgY3JlYXRlZCBiYXNlZCBvbiBzdG9yZWQgZGF0YS4KKworICAgICAgICBUZXN0OiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXJlcGxheS5odG1sCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb25z
b2xlQWdlbnQ6OmRpZEZpbmlzaFhIUkxvYWRpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNvbnNvbGVBZ2VudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnRJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFJJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbFhI
UkxvYWRpbmdJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRmluaXNoWEhSTG9hZGluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRM
b2FkaW5nRm9yQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbExvYWRYSFIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGYWlsWEhSTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFhIUkxvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9uc2UpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNo
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpkb2N1bWVudFRo
cmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsTG9hZFhIUik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsWEhSTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hYSFJMb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnJlcGxheVhIUik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJl
c291cmNlQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OmFkZEhlYWRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpYSFJSZXBsYXlEYXRhOjpYSFJSZXBsYXlEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjp4aHJSZXBsYXlEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpzZXRYSFJSZXBsYXlEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXVzZVhIUlJlcGxheURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmNsZWFyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFhIUlJlcGxheURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6WEhSUmVwbGF5RGF0YTo6bWV0aG9kKToKKyAgICAgICAg
KFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpYSFJSZXBs
YXlEYXRhOjphc3luYyk6CisgICAgICAgIChXZWJDb3JlOjpYSFJSZXBsYXlEYXRhOjpmb3JtRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpYSFJSZXBsYXlEYXRhOjpoZWFkZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlhIUlJlcGxheURhdGE6OmluY2x1ZGVDcmVkZW50aWFscyk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6OnhoclJlcGxheURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YTo6c2V0WEhSUmVwbGF5RGF0YSk6CisgICAgICAgIChSZXNvdXJj
ZURhdGEpOgorICAgICAgICAoTmV0d29ya1Jlc291cmNlc0RhdGEpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvTmV0d29ya1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5l
dHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fY29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZS5fcmVwbGF5WEhSKToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QpOiBhZGRlZCBkb2N1bWVudFRocmVhZGFi
bGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudCBpbnN0cnVtZW50YXRpb24KKyAgICAgICAg
c28gdGhhdCBpbnNwZWN0b3IgY291bGQgbWFwIFhNTEh0dHBSZXF1ZXN0IHRvIFJlc291cmNlTG9h
ZGVyJ3MgaWRlbnRpZmllcnMuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZGVyKTogRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyIHVzZXMgQ2FjaGVkUmVzb3VyY2U6OmxvYWRlcigpIHRvIGdldCBSZXNv
dXJjZUxvYWRlciBpZGVudGlmaWVyLgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2UpOgorICAgICAg
ICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVx
dWVzdDo6c2VuZEZyb21JbnNwZWN0b3IpOiBBZGRlZCBhIG1ldGhvZCBmb3Igc2VuZGluZyBYTUxI
dHRwUmVxdWVzdHMgYmFzZWQgb24gcmVxdWVzdCBib2R5IHN0b3JlZCBpbiBpbnNwZWN0b3IuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVh
dGVSZXF1ZXN0KTogUmVwbGFjZWQgd2lsbC9kaWRMb2FkWEhSU3luY2hvbm91c2x5IGluc3RydW1l
bnRhdGlvbnMgd2l0aCB3aWxsTG9hZFhIUiBpbnN0cnVtZW50YXRpb24uCisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdDo6aW50ZXJuYWxBYm9ydCk6IEFkZGVkIGRpZEZhaWxYSFJMb2Fk
aW5nSW5zdHJ1bWVudGF0aW9uCisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6ZGlk
RmluaXNoTG9hZGluZyk6IEFkZGVkIGRpZEZpbmlzaFhIUkxvYWRpbmcgaW5zdHJ1bWVudGF0aW9u
CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisgICAgICAgIChYTUxIdHRwUmVxdWVz
dCk6CisKIDIwMTItMDktMTQgIENoYXJsZXMgV2VpICA8Y2hhcmxlcy53ZWlAdG9yY2htb2JpbGUu
Y29tLmNuPgogCiAgICAgICAgIE5lZWQgdG8gY2xlYXIgZXhjZXB0aW9uIGluIEpTRGljdGlvbmFy
eSBmb3Igb3BlcmF0aW9ucyB0aGF0IG1pZ2h0IGhhdmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KaW5kZXggZjk4ZWEzM2JiYjM3YmE3ZWUyYTM2MjAxZjY3ZmQ0NTllNWFi
NzY5Zi4uOGI1MDFjOWZmMWUzNDlkZjFjNjE4ZjNhZWVhNjUxMTI0MWM1ZWRlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtODc1LDYgKzg3NSwxNCBAQAogICAg
ICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgIm5hbWUiOiAicmVwbGF5WEhSIiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiVGhpcyBtZXRob2Qgc2VuZHMgYSBuZXcgWE1MSHR0cFJlcXVlc3Qgd2hpY2ggaXMgaWRlbnRp
Y2FsIHRvIHRoZSBvcmlnaW5hbCBvbmUuIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBzaG91bGQg
YmUgaWRlbnRpY2FsOiBtZXRob2QsIHVybCwgYXN5bmMsIHJlcXVlc3QgYm9keSwgZXh0cmEgaGVh
ZGVycywgd2l0aENyZWRlbnRpYWxzIGF0dHJpYnV0ZSwgdXNlciwgcGFzc3dvcmQuIiwKKyAgICAg
ICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJyZXF1ZXN0SWQiLCAiJHJlZiI6ICJSZXF1ZXN0SWQiLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRp
ZmllciBvZiBYSFIgdG8gcmVwbGF5LiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAiY2FuQ2xlYXJCcm93c2VyQ2FjaGUiLAogICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJUZWxscyB3aGV0aGVyIGNsZWFyaW5nIGJyb3dzZXIgY2FjaGUg
aXMgc3VwcG9ydGVkLiIsCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IDJm
M2UyMjQ2ZDA0MzQzNjhlNTJiMjU3N2MzNDc3MjhiZmQxNDJkNzAuLmFjZWIyZGE0YWY2Zjg1MzUx
Zjg4ZDk4YzgzZjY5NTgwNTU4MTYyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmZyYW1lV2luZG93RGlzY2FyZGVkKERPTVdpbmRvdyogd2lu
ZG93KQogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5kaXNjYXJkSW5qZWN0ZWRTY3JpcHRz
Rm9yKHdpbmRvdyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpyZXNvdXJjZVJl
dHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJl
cikKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjpkaWRGaW5pc2hYSFJMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2Vu
ZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpCiB7CiAgICAgaWYgKCFkZXZlbG9wZXJFeHRy
YXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCA3YmQ2ODk5OTcyYTY2NTg2MTgyYjZm
MDFjMGVlZTU1ODE4MDkzNjE5Li41MmJlMTE4MTgyNTAyZmNjMjAwNjVkNjQ4OWNlNjZiNjJkMzY0
MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29s
ZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZnJhbWVXaW5kb3dE
aXNjYXJkZWQoRE9NV2luZG93Kik7CiAKLSAgICB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxI
dHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKKyAgICB2b2lk
IGRpZEZpbmlzaFhIUkxvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZGluZyh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYmZhM2YzMGNjNGMyMTM5ODZhMmQzZGY5
Mjk0NjY2YWQ5YzM2M2UxNy4uOWMyYWNjMzAxMTY0ZTI2YzcxNzA1YWY1MzgwZmExODk2MWE2MjE2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKQEAgLTc2MywzMCArNzYzLDM2IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVuCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+ZGlkRmFpbExvYWRpbmcoaWRlbnRpZmllciwgZXJy
b3IpOyAvLyBUaGlzIHNob3VsZCBjb21lIEFGVEVSIHJlc291cmNlIG5vdGlmaWNhdGlvbiwgZnJv
bnQtZW5kIHJlbGllcyBvbiB0aGlzLgogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBz
ZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkb2N1bWVudFRocmVhZGFibGVMb2FkZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgaWYg
KEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCi0gICAgICAgIGNvbnNvbGVBZ2VudC0+cmVzb3Vy
Y2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KGlkZW50aWZpZXIsIHVybCwgc2VuZFVSTCwgc2Vu
ZExpbmVOdW1iZXIpOwogICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQotICAg
ICAgICByZXNvdXJjZUFnZW50LT5zZXRJbml0aWFsWEhSQ29udGVudChpZGVudGlmaWVyLCBzb3Vy
Y2VTdHJpbmcpOworICAgICAgICByZXNvdXJjZUFnZW50LT5kb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudChpZGVudGlmaWVyLCBjbGllbnQpOwogfQogCi12b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFJJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIFRocmVhZGFibGVMb2FkZXJD
bGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9v
bCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJN
YXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQogewogICAgIGlmIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZl
WEhSUmVzcG9uc2UoaWRlbnRpZmllcik7CisgICAgICAgIHJlc291cmNlQWdlbnQtPndpbGxMb2Fk
WEhSKGNsaWVudCwgbWV0aG9kLCB1cmwsIGFzeW5jLCBmb3JtRGF0YSwgaGVhZGVycywgaW5jbHVk
ZUNyZWRlbnRpYWxzKTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZh
aWxYSFJMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKEluc3BlY3RvclJl
c291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0
b3JSZXNvdXJjZUFnZW50KCkpCisgICAgICAgIHJlc291cmNlQWdlbnQtPmRpZEZhaWxYSFJMb2Fk
aW5nKGNsaWVudCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9h
ZFhIUlN5bmNocm9ub3VzbHlJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoWEhSTG9hZGlu
Z0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCogY2xpZW50LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5k
VVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikKIHsKKyAgICBpZiAoSW5zcGVjdG9yQ29uc29s
ZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDb25z
b2xlQWdlbnQoKSkKKyAgICAgICAgY29uc29sZUFnZW50LT5kaWRGaW5pc2hYSFJMb2FkaW5nKGlk
ZW50aWZpZXIsIHVybCwgc2VuZFVSTCwgc2VuZExpbmVOdW1iZXIpOwogICAgIGlmIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT53aWxsTG9hZFhI
UlN5bmNocm9ub3VzbHkoKTsKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkRmluaXNoWEhSTG9h
ZGluZyhjbGllbnQsIGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZyk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSU3luY2hyb25vdXNseUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIHsKICAgICBpZiAo
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKLSAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlk
TG9hZFhIUlN5bmNocm9ub3VzbHkoKTsKKyAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2
ZVhIUlJlc3BvbnNlKGlkZW50aWZpZXIpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6c2NyaXB0SW1wb3J0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VT
dHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKaW5kZXggMmRlYzIyMDZkNTRmMjE4N2IwNDdkNTE2NTBhODgzZjEwY2JmNDI2
NS4uMDY0MGIyMDZjYmMxYzhlNzhhOThkMjFlNmE5NzRhNzNkNGIwMjcwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAt
NzcsNiArNzcsNyBAQCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiBj
bGFzcyBTdG9yYWdlQXJlYTsKIGNsYXNzIFN0eWxlUnVsZTsKK2NsYXNzIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQ7CiBjbGFzcyBXb3JrZXJDb250ZXh0OwogY2xhc3MgV29ya2VyQ29udGV4dFByb3h5
OwogY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CkBAIC0xODMsMTAgKzE4NCwxMSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFM
ZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmcoRnJhbWUqLCBEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpOwog
ICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxMb2FkaW5nKEZyYW1lKiwgRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICBzdGF0
aWMgdm9pZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVk
IHNlbmRMaW5lTnVtYmVyKTsKKyAgICBzdGF0aWMgdm9pZCBkb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXJTdGFydGVkTG9hZGluZ0ZvckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7CisgICAgc3RhdGlj
IHZvaWQgd2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgYm9vbCwgUGFzc1JlZlB0cjxG
b3JtRGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRGYWlsWEhSTG9hZGluZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCopOworICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFhIUkxvYWRpbmcoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcik7CiAgICAgc3Rh
dGljIHZvaWQgZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3lu
Y2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlk
TG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHN0YXRp
YyB2b2lkIHNjcmlwdEltcG9ydGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CiAgICAgc3RhdGljIHZvaWQgZG9tQ29udGVudExvYWRl
ZEV2ZW50RmlyZWQoRnJhbWUqKTsKQEAgLTM2MiwxMCArMzY0LDExIEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIHZvaWQgZGlkUmVjZWl2ZURhdGFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBp
bnQgZW5jb2RlZERhdGFMZW5ndGgpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRpbmdJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZW50TG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxM
b2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBEb2N1bWVudExvYWRlciosIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICBzdGF0aWMgdm9p
ZCByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5k
TGluZU51bWJlcik7CisgICAgc3RhdGljIHZvaWQgZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3Rh
cnRlZExvYWRpbmdGb3JDbGllbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqKTsKKyAgICBzdGF0aWMgdm9p
ZCB3aWxsTG9hZFhIUkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVhZGFibGVMb2FkZXJD
bGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBLVVJMJiwgYm9vbCwgUGFzc1JlZlB0cjxGb3Jt
RGF0YT4sIGNvbnN0IEhUVFBIZWFkZXJNYXAmLCBib29sKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRG
YWlsWEhSTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIFRocmVhZGFibGVMb2FkZXJD
bGllbnQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hYSFJMb2FkaW5nSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHNlbmRVUkwsIHVuc2lnbmVkIHNlbmRMaW5lTnVtYmVyKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkWEhSU3lu
Y2hyb25vdXNseUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwotICAgIHN0YXRpYyB2b2lkIGRp
ZExvYWRYSFJTeW5jaHJvbm91c2x5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3Rh
dGljIHZvaWQgc2NyaXB0SW1wb3J0ZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRSZWNlaXZlU2NyaXB0UmVzcG9uc2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwogICAgIHN0YXRpYyB2b2lkIGRvbUNvbnRlbnRM
b2FkZWRFdmVudEZpcmVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRnJhbWUqKTsKQEAgLTEx
NjgsMzUgKzExNzEsNDQgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGYWlsTG9hZGluZyhGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGUKICNlbmRpZgogfQogCi1p
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlY
TUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiBzZW5kVVJMLCB1bnNpZ25lZCBzZW5kTGluZU51bWJlcikKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGll
bnQpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNv
bnRleHQpKQotICAgICAgICByZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3RJbXBsKGlu
c3RydW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIsIHNvdXJjZVN0cmluZywgdXJsLCBzZW5kVVJM
LCBzZW5kTGluZU51bWJlcik7CisgICAgICAgIGRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0
ZWRMb2FkaW5nRm9yQ2xpZW50SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBpZGVudGlmaWVyLCBj
bGllbnQpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjZWl2ZVhIUlJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGhy
ZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3Qg
S1VSTCYgdXJsLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBmb3JtRGF0YSwgY29u
c3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycywgYm9vbCBpbmNsdWRlQ3JlZGVudGlhbHMpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQot
ICAgICAgICBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGlk
ZW50aWZpZXIpOworICAgICAgICB3aWxsTG9hZFhIUkltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywg
Y2xpZW50LCBtZXRob2QsIHVybCwgYXN5bmMsIGZvcm1EYXRhLCBoZWFkZXJzLCBpbmNsdWRlQ3Jl
ZGVudGlhbHMpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbExvYWRYSFJTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZhaWxYSFJM
b2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJD
bGllbnQqIGNsaWVudCkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIHdpbGxMb2FkWEhSU3luY2hyb25vdXNseUltcGwo
aW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgICAgIGRpZEZhaWxYSFJMb2FkaW5nSW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzLCBjbGllbnQpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaW5pc2hYSFJMb2FkaW5nKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgc2VuZFVSTCwgdW5zaWduZWQgc2VuZExpbmVOdW1iZXIpCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICBkaWRM
b2FkWEhSU3luY2hyb25vdXNseUltcGwoaW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgICAgIGRp
ZEZpbmlzaFhIUkxvYWRpbmdJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGNsaWVudCwgaWRlbnRp
Zmllciwgc291cmNlU3RyaW5nLCB1cmwsIHNlbmRVUkwsIHNlbmRMaW5lTnVtYmVyKTsKKyNlbmRp
ZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVY
SFJSZXNwb25zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JD
b250ZXh0KGNvbnRleHQpKQorICAgICAgICBkaWRSZWNlaXZlWEhSUmVzcG9uc2VJbXBsKGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGlkZW50aWZpZXIpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA5ZDky
OWM5YTEwYmVkMzRjMjljMjg5NDgxYWIwYTRhNWE2Mjg2OTE0Li42M2I4MTMwNTIxMWRjZGIxOTU1
MmZkYjEyNjUxZjliMmIwOGQwYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAKICNpbmNs
dWRlICJJbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgiCiAKKyNpbmNsdWRlICJDYWNoZWRSYXdSZXNv
dXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtNjQsNiArNjUsNyBAQAog
I2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCisjaW5j
bHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKIAogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9IZXhOdW1iZXIuaD4KQEAgLTMzMyw2ICszMzUsMTIgQEAgdm9pZCBJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGUoRG9jdW1l
bnRMb2FkZXIqIGxvYWQKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0b3J5
OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZUNy
ZWF0ZWQocmVxdWVzdElkLCBsb2FkZXJJZCk7CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRDYWNo
ZWRSZXNvdXJjZShyZXF1ZXN0SWQsIHJlc291cmNlKTsKKyAgICBpZiAocmVzb3VyY2UtPnR5cGUo
KSA9PSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UpIHsKKyAgICAgICAgQ2FjaGVkUmF3UmVz
b3VyY2UqIHJhd1Jlc291cmNlID0gc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3VyY2UqPihyZXNv
dXJjZSk7CisgICAgICAgIFN0cmluZyByYXdSZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6
OnJlcXVlc3RJZChyYXdSZXNvdXJjZS0+aWRlbnRpZmllcigpKTsKKyAgICAgICAgbV9yZXNvdXJj
ZXNEYXRhLT5yZXVzZVhIUlJlcGxheURhdGEocmVxdWVzdElkLCByYXdSZXF1ZXN0SWQpOworICAg
IH0KKwogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0
b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXIt
PmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKIAogICAgIG1fZnJvbnRlbmQtPnJlcXVlc3RTZXJ2
ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgbG9hZGVyLT51
cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVj
dEZvckNhY2hlZFJlc291cmNlKCpyZXNvdXJjZSwgbG9hZGVyKSk7CkBAIC0zNDgsMjcgKzM1Niw1
MCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVTY3JpcHRSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNv
dXJjZVR5cGUoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllciksIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6U2NyaXB0UmVzb3VyY2UpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OnNldEluaXRpYWxYSFJDb250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5nRm9yQ2xpZW50KHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50KQogewotICAg
IC8vIEZvciBBc3luY2hyb25vdXMgWEhScywgdGhlIGluc3BlY3RvciBjYW4gZ3JhYiB0aGUgZGF0
YSBkaXJlY3RseSBvZmYgb2YgdGhlIENhY2hlZFJlc291cmNlLiBGb3Igc3luYyBYSFJzLCB3ZSBu
ZWVkIHRvCi0gICAgLy8gcHJvdmlkZSB0aGUgZGF0YSBoZXJlLCBzaW5jZSBubyBDYWNoZWRSZXNv
dXJjZSB3YXMgaW52b2x2ZWQuCi0gICAgaWYgKG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkpCi0g
ICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBzb3VyY2VTdHJpbmcpOworICAgIGlmICghY2xp
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBQZW5kaW5nWEhSUmVwbGF5RGF0YU1hcDo6aXRl
cmF0b3IgaXQgPSBtX3BlbmRpbmdYSFJSZXBsYXlEYXRhLmZpbmQoY2xpZW50KTsKKyAgICBpZiAo
aXQgPT0gbV9wZW5kaW5nWEhSUmVwbGF5RGF0YS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgWEhSUmVwbGF5RGF0YSogeGhyUmVwbGF5RGF0YSA9IGl0LT5zZWNvbmQuZ2V0KCk7CisgICAg
U3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZp
ZXIpOworICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0WEhSUmVwbGF5RGF0YShyZXF1ZXN0SWQsIHho
clJlcGxheURhdGEpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2Vp
dmVYSFJSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OndpbGxMb2FkWEhSKFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwg
Y29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1Jl
ZlB0cjxGb3JtRGF0YT4gZm9ybURhdGEsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMsIGJv
b2wgaW5jbHVkZUNyZWRlbnRpYWxzKQogewotICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3Vy
Y2VUeXBlKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OlhIUlJlc291cmNlKTsKKyAgICBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5
ID0gIWFzeW5jOworCisgICAgUmVmUHRyPFhIUlJlcGxheURhdGE+IHhoclJlcGxheURhdGEgPSBY
SFJSZXBsYXlEYXRhOjpjcmVhdGUobWV0aG9kLCB1cmwsIGFzeW5jLCBmb3JtRGF0YSwgaW5jbHVk
ZUNyZWRlbnRpYWxzKTsKKyAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBo
ZWFkZXJzLmVuZCgpOworICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBoZWFkZXJzLmJlZ2luKCk7IGl0IT0gZW5kOyArK2l0KQorICAgICAgICB4aHJSZXBsYXlEYXRh
LT5hZGRIZWFkZXIoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKKyAgICBtX3BlbmRpbmdYSFJSZXBs
YXlEYXRhLnNldChjbGllbnQsIHhoclJlcGxheURhdGEpOwogfQogCi12b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OndpbGxMb2FkWEhSU3luY2hyb25vdXNseSgpCit2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OmRpZEZhaWxYSFJMb2FkaW5nKFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNs
aWVudCkKIHsKLSAgICBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5ID0gdHJ1ZTsKKyAgICBtX2xv
YWRpbmdYSFJTeW5jaHJvbm91c2x5ID0gZmFsc2U7CisgICAgbV9wZW5kaW5nWEhSUmVwbGF5RGF0
YS5yZW1vdmUoY2xpZW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRM
b2FkWEhSU3luY2hyb25vdXNseSgpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZp
bmlzaFhIUkxvYWRpbmcoVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKQogeworICAgIC8vIEZv
ciBBc3luY2hyb25vdXMgWEhScywgdGhlIGluc3BlY3RvciBjYW4gZ3JhYiB0aGUgZGF0YSBkaXJl
Y3RseSBvZmYgb2YgdGhlIENhY2hlZFJlc291cmNlLiBGb3Igc3luYyBYSFJzLCB3ZSBuZWVkIHRv
CisgICAgLy8gcHJvdmlkZSB0aGUgZGF0YSBoZXJlLCBzaW5jZSBubyBDYWNoZWRSZXNvdXJjZSB3
YXMgaW52b2x2ZWQuCisgICAgaWYgKG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkpCisgICAgICAg
IG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KElkZW50aWZpZXJzRmFjdG9yeTo6
cmVxdWVzdElkKGlkZW50aWZpZXIpLCBzb3VyY2VTdHJpbmcpOwogICAgIG1fbG9hZGluZ1hIUlN5
bmNocm9ub3VzbHkgPSBmYWxzZTsKKyAgICBtX3BlbmRpbmdYSFJSZXBsYXlEYXRhLnJlbW92ZShj
bGllbnQpOworfQorCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVYSFJS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7CisgICAgbV9yZXNvdXJjZXNEYXRh
LT5zZXRSZXNvdXJjZVR5cGUoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmll
ciksIEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2UpOwogfQogCiB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2Uq
IGNhY2hlZFJlc291cmNlKQpAQCAtNTcwLDYgKzYwMSwyMyBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cgogICAgICplcnJvclN0cmluZyA9ICJObyBkYXRhIGZvdW5kIGZvciByZXNvdXJjZSB3aXRo
IGdpdmVuIGlkZW50aWZpZXIiOwogfQogCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJl
cGxheVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKQoreworICAgIFJl
ZlB0cjxYTUxIdHRwUmVxdWVzdD4geGhyID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShtX3BhZ2VB
Z2VudC0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOworICAgIEV4Y2VwdGlvbkNvZGUgY29kZTsK
KyAgICBTdHJpbmcgYWN0dWFsUmVxdWVzdElkID0gcmVxdWVzdElkOworCisgICAgWEhSUmVwbGF5
RGF0YSogeGhyUmVwbGF5RGF0YSA9IG1fcmVzb3VyY2VzRGF0YS0+eGhyUmVwbGF5RGF0YShyZXF1
ZXN0SWQpOworICAgIGlmICgheGhyUmVwbGF5RGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
eGhyLT5vcGVuKHhoclJlcGxheURhdGEtPm1ldGhvZCgpLCB4aHJSZXBsYXlEYXRhLT51cmwoKSwg
eGhyUmVwbGF5RGF0YS0+YXN5bmMoKSwgY29kZSk7CisgICAgSFRUUEhlYWRlck1hcDo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0geGhyUmVwbGF5RGF0YS0+aGVhZGVycygpLmVuZCgpOworICAgIGZvciAo
SFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSB4aHJSZXBsYXlEYXRhLT5oZWFkZXJz
KCkuYmVnaW4oKTsgaXQhPSBlbmQ7ICsraXQpCisgICAgICAgIHhoci0+c2V0UmVxdWVzdEhlYWRl
cihpdC0+Zmlyc3QsIGl0LT5zZWNvbmQsIGNvZGUpOworICAgIHhoci0+c2VuZEZyb21JbnNwZWN0
b3IoeGhyUmVwbGF5RGF0YS0+Zm9ybURhdGEoKSwgY29kZSk7cmV0dXJuOworfQorCiB2b2lkIElu
c3BlY3RvclJlc291cmNlQWdlbnQ6OmNhbkNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKiwg
Ym9vbCogcmVzdWx0KQogewogICAgICpyZXN1bHQgPSBtX2NsaWVudC0+Y2FuQ2xlYXJCcm93c2Vy
Q2FjaGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5oCmluZGV4IGY4ZmM4YmQzMDRhNmY4NGMyYWE5NmRkZTQwZmJiMGQ5ZmZmODk2Y2Iu
LjEzMTE5MzdiNzMzZDllNmQ4NmQ3Yjc1MTcwNWU1OTVjZjkzNWE3NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtNTAsNyAr
NTAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgRG9jdW1lbnRMb2FkZXI7CitjbGFzcyBGb3JtRGF0YTsKIGNsYXNz
IEZyYW1lOworY2xhc3MgSFRUUEhlYWRlck1hcDsKIGNsYXNzIEluc3BlY3RvckFycmF5OwogY2xh
c3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CkBAIC02Niw2ICs2
OCw5IEBAIGNsYXNzIFJlc291cmNlTG9hZGVyOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xh
c3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKK2NsYXNzIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQ7CitjbGFzcyBYSFJSZXBsYXlEYXRhOworY2xhc3MgWE1MSHR0cFJlcXVl
c3Q7CiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiBzdHJ1Y3QgV2ViU29ja2V0RnJhbWU7CkBA
IC0xMDAsMTAgKzEwNSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWluRnJhbWVOYXZpZ2F0ZWQo
RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIHNldEluaXRpYWxTY3JpcHRDb250ZW50KHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcpOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBzZXRJbml0aWFsWEhSQ29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKKworICAgIHZvaWQgZG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7CisgICAgdm9pZCB3aWxsTG9hZFhIUihUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBib29sIGFz
eW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiBib2R5LCBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFk
ZXJzLCBib29sIGluY2x1ZGVDcmVuZGVudGlhbHMpOworICAgIHZvaWQgZGlkRmFpbFhIUkxvYWRp
bmcoVGhyZWFkYWJsZUxvYWRlckNsaWVudCopOworICAgIHZvaWQgZGlkRmluaXNoWEhSTG9hZGlu
ZyhUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlWEhSUmVzcG9uc2Uo
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICB2b2lkIHdpbGxMb2FkWEhSU3luY2hyb25v
dXNseSgpOwotICAgIHZvaWQgZGlkTG9hZFhIUlN5bmNocm9ub3VzbHkoKTsKKwogICAgIHZvaWQg
d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwogCiAgICAgdm9pZCBh
cHBseVVzZXJBZ2VudE92ZXJyaWRlKFN0cmluZyogdXNlckFnZW50KTsKQEAgLTEzNSw2ICsxNDMs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JT
dHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYpOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwg
U3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKIAorICAgIHZpcnR1YWwgdm9p
ZCByZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CisKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuQ2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqLCBib29sKik7
CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKik7CiAgICAg
dmlydHVhbCB2b2lkIGNhbkNsZWFyQnJvd3NlckNvb2tpZXMoRXJyb3JTdHJpbmcqLCBib29sKik7
CkBAIC0xNTMsNiArMTYzLDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8TmV0d29ya1Jlc291cmNl
c0RhdGE+IG1fcmVzb3VyY2VzRGF0YTsKICAgICBib29sIG1fbG9hZGluZ1hIUlN5bmNocm9ub3Vz
bHk7CiAKKyAgICB0eXBlZGVmIEhhc2hNYXA8VGhyZWFkYWJsZUxvYWRlckNsaWVudCosIFJlZlB0
cjxYSFJSZXBsYXlEYXRhPiA+IFBlbmRpbmdYSFJSZXBsYXlEYXRhTWFwOworICAgIFBlbmRpbmdY
SFJSZXBsYXlEYXRhTWFwIG1fcGVuZGluZ1hIUlJlcGxheURhdGE7CiAgICAgLy8gRklYTUU6IElu
c3BlY3RvclJlc291cmNlQWdlbnQgc2hvdWxkIG5vdyBiZSBhd2FyZSBvZiBzdHlsZSByZWNhbGN1
bGF0aW9uLgogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBtX3N0
eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvcjsKICAgICBib29sIG1faXNSZWNhbGN1bGF0aW5nU3R5
bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcAppbmRleCA0NDE2YWRmNzY3ZjNlOGRlMmRiNTUyMjI0ZDdmMjZjZTY1Zjg4Y2MyLi40MTk4
ZmI1MWQ2OWFiZDA2ZDFkMDIzYjQ3MjU3MTI5MjYxNWExMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTQ3LDYgKzQ3LDI1
IEBAIHN0YXRpYyBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVudFNpemUgPSAxMCAq
IDEwMDAgKiAxMDAwOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAKK1Bhc3NSZWZQdHI8WEhSUmVw
bGF5RGF0YT4gWEhSUmVwbGF5RGF0YTo6Y3JlYXRlKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBjb25z
dCBLVVJMJiB1cmwsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBi
b29sIGluY2x1ZGVDcmVkZW50aWFscykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFhIUlJl
cGxheURhdGEobWV0aG9kLCB1cmwsIGFzeW5jLCBmb3JtRGF0YSwgaW5jbHVkZUNyZWRlbnRpYWxz
KSk7Cit9CisKK3ZvaWQgWEhSUmVwbGF5RGF0YTo6YWRkSGVhZGVyKGNvbnN0IEF0b21pY1N0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1faGVhZGVycy5zZXQoa2V5LCB2
YWx1ZSk7Cit9CisKK1hIUlJlcGxheURhdGE6OlhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5nICZt
ZXRob2QsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBhc3luYywgUGFzc1JlZlB0cjxGb3JtRGF0YT4g
Zm9ybURhdGEsIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKQorICAgIDogbV9tZXRob2QobWV0aG9k
KQorICAgICwgbV91cmwodXJsKQorICAgICwgbV9hc3luYyhhc3luYykKKyAgICAsIG1fZm9ybURh
dGEoZm9ybURhdGEpCisgICAgLCBtX2luY2x1ZGVDcmVkZW50aWFscyhpbmNsdWRlQ3JlZGVudGlh
bHMpCit7Cit9CisKIC8vIFJlc291cmNlRGF0YQogTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291
cmNlRGF0YTo6UmVzb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBjb25zdCBTdHJp
bmcmIGxvYWRlcklkKQogICAgIDogbV9yZXF1ZXN0SWQocmVxdWVzdElkKQpAQCAtMjUzLDYgKzI3
Miw0NiBAQCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6ZGF0YShjb25zdCBTdHJpbgogICAgIHJldHVybiBtX3JlcXVlc3RJZFRv
UmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOwogfQogCitYSFJSZXBsYXlEYXRhKiBOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6eGhyUmVwbGF5RGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkK
K3sKKyAgICBpZiAobV9yZXVzZWRYSFJSZXBsYXlEYXRhUmVxdWVzdElkcy5jb250YWlucyhyZXF1
ZXN0SWQpKQorICAgICAgICByZXR1cm4geGhyUmVwbGF5RGF0YShtX3JldXNlZFhIUlJlcGxheURh
dGFSZXF1ZXN0SWRzLmdldChyZXF1ZXN0SWQpKTsKKworICAgIFJlc291cmNlRGF0YSogcmVzb3Vy
Y2VEYXRhID0gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVxdWVzdElkKTsKKyAg
ICBpZiAoIXJlc291cmNlRGF0YSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJlc291
cmNlRGF0YS0+eGhyUmVwbGF5RGF0YSgpOworfQorCit2b2lkIE5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpzZXRYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBYSFJSZXBsYXlEYXRh
KiB4aHJSZXBsYXlEYXRhKQoreworICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhID0gbV9y
ZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1hcC5nZXQocmVxdWVzdElkKTsKKyAgICBpZiAoIXJlc291
cmNlRGF0YSkgeworICAgICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CisgICAgICAgIFJldXNl
ZFJlcXVlc3RJZHM6Oml0ZXJhdG9yIGl0OworICAgICAgICBSZXVzZWRSZXF1ZXN0SWRzOjppdGVy
YXRvciBlbmQgPSBtX3JldXNlZFhIUlJlcGxheURhdGFSZXF1ZXN0SWRzLmVuZCgpOworICAgICAg
ICBmb3IgKGl0ID0gbV9yZXVzZWRYSFJSZXBsYXlEYXRhUmVxdWVzdElkcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChpdC0+c2Vjb25kID09IHJlcXVlc3RJZCkK
KyAgICAgICAgICAgICAgICBzZXRYSFJSZXBsYXlEYXRhKGl0LT5maXJzdCwgeGhyUmVwbGF5RGF0
YSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlc291cmNlRGF0
YS0+c2V0WEhSUmVwbGF5RGF0YSh4aHJSZXBsYXlEYXRhKTsKK30KKwordm9pZCBOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6cmV1c2VYSFJSZXBsYXlEYXRhKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBj
b25zdCBTdHJpbmcmIHJldXNlZFJlcXVlc3RJZCkKK3sKKyAgICBSZXNvdXJjZURhdGEqIHJldXNl
ZFJlc291cmNlRGF0YSA9IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuZ2V0KHJldXNlZFJl
cXVlc3RJZCk7CisgICAgUmVzb3VyY2VEYXRhKiByZXNvdXJjZURhdGEgPSBtX3JlcXVlc3RJZFRv
UmVzb3VyY2VEYXRhTWFwLmdldChyZXF1ZXN0SWQpOworICAgIGlmICghcmV1c2VkUmVzb3VyY2VE
YXRhIHx8ICFyZXNvdXJjZURhdGEpIHsKKyAgICAgICAgbV9yZXVzZWRYSFJSZXBsYXlEYXRhUmVx
dWVzdElkcy5zZXQocmVxdWVzdElkLCByZXVzZWRSZXF1ZXN0SWQpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgcmVzb3VyY2VEYXRhLT5zZXRYSFJSZXBsYXlEYXRhKHJldXNlZFJlc291
cmNlRGF0YS0+eGhyUmVwbGF5RGF0YSgpKTsKK30KKwogVmVjdG9yPFN0cmluZz4gTmV0d29ya1Jl
c291cmNlc0RhdGE6OnJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRS
ZXNvdXJjZSkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CkBAIC0yODYsNiArMzQ1LDgg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6Y2xlYXIoY29uc3QgU3RyaW5nJiBwcmVzZXJ2
ZWRMb2FkZXJJZCkKICAgICAgICAgICAgIGRlbGV0ZSByZXNvdXJjZURhdGE7CiAgICAgfQogICAg
IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAuc3dhcChwcmVzZXJ2ZWRNYXApOworCisgICAg
bV9yZXVzZWRYSFJSZXBsYXlEYXRhUmVxdWVzdElkcy5jbGVhcigpOwogfQogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpzZXRSZXNvdXJjZXNEYXRhU2l6ZUxpbWl0cyhzaXplX3QgbWF4aW11
bVJlc291cmNlc0NvbnRlbnRTaXplLCBzaXplX3QgbWF4aW11bVNpbmdsZVJlc291cmNlQ29udGVu
dFNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291
cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0
YS5oCmluZGV4IDhkZmQ1ZGQwZGJiMjExYTBjNDkyZWE2ZjFmZDNhNDhlOTA3NzFlYzguLmFiYjYw
ZTQzZTI2MmM4OGI4YjBiZjUyZTEwMTU3ZjhkZGQzYTFmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC00Niw2ICs0NiwyOCBAQCBj
bGFzcyBDYWNoZWRSZXNvdXJjZTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFRleHRSZXNv
dXJjZURlY29kZXI7CiAKK2NsYXNzIFhIUlJlcGxheURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxY
SFJSZXBsYXlEYXRhPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8WEhSUmVwbGF5
RGF0YT4gY3JlYXRlKGNvbnN0IFN0cmluZyAmbWV0aG9kLCBjb25zdCBLVVJMJiwgYm9vbCBhc3lu
YywgUGFzc1JlZlB0cjxGb3JtRGF0YT4sIGJvb2wgaW5jbHVkZUNyZWRlbnRpYWxzKTsKKworICAg
IHZvaWQgYWRkSGVhZGVyKGNvbnN0IEF0b21pY1N0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZh
bHVlKTsKKyAgICBjb25zdCBTdHJpbmcmIG1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0aG9k
OyB9CisgICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBi
b29sIGFzeW5jKCkgY29uc3QgeyByZXR1cm4gbV9hc3luYzsgfQorICAgIFBhc3NSZWZQdHI8Rm9y
bURhdGE+IGZvcm1EYXRhKCkgY29uc3QgeyByZXR1cm4gbV9mb3JtRGF0YTsgfQorICAgIGNvbnN0
IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlcnM7IH0KKyAg
ICBib29sIGluY2x1ZGVDcmVkZW50aWFscygpIGNvbnN0IHsgcmV0dXJuIG1faW5jbHVkZUNyZWRl
bnRpYWxzOyB9Citwcml2YXRlOgorICAgIFhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5nICZtZXRo
b2QsIGNvbnN0IEtVUkwmLCBib29sIGFzeW5jLCBQYXNzUmVmUHRyPEZvcm1EYXRhPiwgYm9vbCBp
bmNsdWRlQ3JlZGVudGlhbHMpOworCisgICAgU3RyaW5nIG1fbWV0aG9kOworICAgIEtVUkwgbV91
cmw7CisgICAgYm9vbCBtX2FzeW5jOworICAgIFJlZlB0cjxGb3JtRGF0YT4gbV9mb3JtRGF0YTsK
KyAgICBIVFRQSGVhZGVyTWFwIG1faGVhZGVyczsKKyAgICBib29sIG1faW5jbHVkZUNyZWRlbnRp
YWxzOworfTsKKwogY2xhc3MgTmV0d29ya1Jlc291cmNlc0RhdGEgewogcHVibGljOgogICAgIGNs
YXNzIFJlc291cmNlRGF0YSB7CkBAIC05MCw2ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAgICAgIENh
Y2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVz
b3VyY2U7IH0KICAgICAgICAgdm9pZCBzZXRDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UpIHsgbV9jYWNoZWRSZXNvdXJjZSA9IGNhY2hlZFJlc291cmNlOyB9CiAK
KyAgICAgICAgWEhSUmVwbGF5RGF0YSogeGhyUmVwbGF5RGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
eGhyUmVwbGF5RGF0YS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldFhIUlJlcGxheURhdGEoWEhS
UmVwbGF5RGF0YSogeGhyUmVwbGF5RGF0YSkgeyBtX3hoclJlcGxheURhdGEgPSB4aHJSZXBsYXlE
YXRhOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhQnVmZmVyOyB9CiAgICAgICAgIHNpemVfdCBkYXRhTGVuZ3RoKCkgY29uc3Q7CkBA
IC0xMDEsNiArMTI1LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV9mcmFtZUlkOwogICAg
ICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIFN0cmluZyBtX2NvbnRlbnQ7CisgICAgICAgIFJl
ZlB0cjxYSFJSZXBsYXlEYXRhPiBtX3hoclJlcGxheURhdGE7CiAgICAgICAgIGJvb2wgbV9iYXNl
NjRFbmNvZGVkOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CiAg
ICAgICAgIGJvb2wgbV9pc0NvbnRlbnRQdXJnZWQ7CkBAIC0xMzIsNiArMTU3LDkgQEAgcHVibGlj
OgogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiBwcmVzZXJ2ZWRMb2FkZXJJZCA9IFN0cmlu
ZygpKTsKIAogICAgIHZvaWQgc2V0UmVzb3VyY2VzRGF0YVNpemVMaW1pdHMoc2l6ZV90IG1heGlt
dW1SZXNvdXJjZXNDb250ZW50U2l6ZSwgc2l6ZV90IG1heGltdW1TaW5nbGVSZXNvdXJjZUNvbnRl
bnRTaXplKTsKKyAgICB2b2lkIHNldFhIUlJlcGxheURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0
SWQsIFhIUlJlcGxheURhdGEqKTsKKyAgICB2b2lkIHJldXNlWEhSUmVwbGF5RGF0YShjb25zdCBT
dHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiByZXVzZWRSZXF1ZXN0SWQpOworICAgIFhI
UlJlcGxheURhdGEqIHhoclJlcGxheURhdGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOwogCiBw
cml2YXRlOgogICAgIHZvaWQgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYg
cmVxdWVzdElkKTsKQEAgLTEzOSw2ICsxNjcsOCBAQCBwcml2YXRlOgogCiAgICAgRGVxdWU8U3Ry
aW5nPiBtX3JlcXVlc3RJZHNEZXF1ZTsKIAorICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4gUmV1c2VkUmVxdWVzdElkczsKKyAgICBSZXVzZWRSZXF1ZXN0SWRzIG1fcmV1c2VkWEhS
UmVwbGF5RGF0YVJlcXVlc3RJZHM7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVzb3Vy
Y2VEYXRhKj4gUmVzb3VyY2VEYXRhTWFwOwogICAgIFJlc291cmNlRGF0YU1hcCBtX3JlcXVlc3RJ
ZFRvUmVzb3VyY2VEYXRhTWFwOwogICAgIHNpemVfdCBtX2NvbnRlbnRTaXplOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUGFuZWwuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwppbmRleCA1
YzgwYWMxNzgyMDhlNWIyMDkzOTdmNjA5NzVhYzcwNDcwYjcwNjc2Li5jN2I5MDA2MzIxN2MwYmJi
NDkwMTg4YWM4NjJiODdmYjg0M2VkNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtQYW5lbC5qcwpAQCAtOTYyLDggKzk2MiwyMSBAQCBXZWJJ
bnNwZWN0b3IuTmV0d29ya0xvZ1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5f
Y2FuQ2xlYXJCcm93c2VyQ29va2llcykKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0
bGVzKCkgPyAiQ2xlYXIgYnJvd3NlciBjb29raWVzIiA6ICJDbGVhciBCcm93c2VyIENvb2tpZXMi
KSwgdGhpcy5fY2xlYXJCcm93c2VyQ29va2llcy5iaW5kKHRoaXMpKTsKIAorCisgICAgICAgIGlm
IChyZXF1ZXN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlhIUikgeworICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVwbGF5IFhIUiIpLCB0
aGlzLl9yZXBsYXlYSFIuYmluZCh0aGlzLCByZXF1ZXN0LnJlcXVlc3RJZCkpOworICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIH0KKwogICAgICAgICBj
b250ZXh0TWVudS5zaG93KGV2ZW50KTsKICAgICB9LAorICAgIAorICAgIF9yZXBsYXlYSFI6IGZ1
bmN0aW9uKHJlcXVlc3RJZCkKKyAgICB7CisgICAgICAgIE5ldHdvcmtBZ2VudC5yZXBsYXlYSFIo
cmVxdWVzdElkKTsKKyAgICB9LAorICAgIAogCiAgICAgX2NvcHlBbGw6IGZ1bmN0aW9uKCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IGEwYzY0ODljYjA2MzkwOTBhZDk1MzlkODRiNGUyZTA5ZWY0NWM2YmIuLjBk
MWFhYTVlOTA5OGEyMzUyOGQ3NGM3MDM2MDVjZDUzMzIzNDgzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00Myw2ICs0
Myw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlN1YnJlc291
cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0z
ODYsOCArMzg3LDE1IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyCiAjZW5kaWYKICAgICAgICAg
QVNTRVJUKCFtX3Jlc291cmNlKTsKICAgICAgICAgbV9yZXNvdXJjZSA9IG1fZG9jdW1lbnQtPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RSYXdSZXNvdXJjZShuZXdSZXF1ZXN0LCBvcHRp
b25zKTsKLSAgICAgICAgaWYgKG1fcmVzb3VyY2UpCisgICAgICAgIGlmIChtX3Jlc291cmNlKSB7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICAgICAgICAgIGlmIChtX3Jlc291cmNlLT5sb2Fk
ZXIoKSkgeworICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IG1fYWN0
dWFsUmVxdWVzdCA/IG1fcHJlZmxpZ2h0UmVxdWVzdElkZW50aWZpZXIgOiBtX3Jlc291cmNlLT5s
b2FkZXIoKS0+aWRlbnRpZmllcigpOworICAgICAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQo
bV9kb2N1bWVudCwgaWRlbnRpZmllciwgbV9jbGllbnQpOworICAgICAgICAgICAgfQorI2VuZGlm
CiAgICAgICAgICAgICBtX3Jlc291cmNlLT5hZGRDbGllbnQodGhpcyk7CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKQEAgLTM5OSw2ICs0MDcsOSBAQCB2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBTZWN1cgogICAgIGlmIChtX2RvY3VtZW50LT5mcmFtZSgpKQogICAgICAgICBpZGVu
dGlmaWVyID0gbV9kb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkocmVxdWVzdCwgbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMsIGVycm9yLCByZXNw
b25zZSwgZGF0YSk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGll
bnQobV9kb2N1bWVudCwgaWRlbnRpZmllciwgbV9jbGllbnQpOworI2VuZGlmCiAgICAgLy8gTm8g
ZXhjZXB0aW9uIGZvciBmaWxlOi8vLyByZXNvdXJjZXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDk2
MjI5OD4uCiAgICAgLy8gQWxzbywgaWYgd2UgaGF2ZSBhbiBIVFRQIHJlc3BvbnNlLCB0aGVuIGl0
IHdhc24ndCBhIG5ldHdvcmsgZXJyb3IgaW4gZmFjdC4KICAgICBpZiAoIWVycm9yLmlzTnVsbCgp
ICYmICFyZXF1ZXN0VVJMLmlzTG9jYWxGaWxlKCkgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSA8PSAwKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CmluZGV4IDkwYWI0ZjJlZWFiNzBjZjllNjliN2ExYTA3ZTg5N2IzZmU3YTc4M2YuLjBjYWQzZWU3
Y2E0MjgxMmVhYTNlZmU2MDAzMTE2NDQ5ZjdhNjk2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCkBAIC0xNDUsNiArMTQ1LDggQEAgcHVibGljOgog
ICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkaW5nOyB9CiAgICAgdm9p
ZCBzZXRMb2FkaW5nKGJvb2wgYikgeyBtX2xvYWRpbmcgPSBiOyB9CiAKKyAgICBTdWJyZXNvdXJj
ZUxvYWRlciogbG9hZGVyKCkgeyByZXR1cm4gbV9sb2FkZXIuZ2V0KCk7IH0KKwogICAgIHZpcnR1
YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlnbm9y
ZUZvclJlcXVlc3RDb3VudCgpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKaW5kZXggNzNhNWRiNmNlYzI1OTJiMjY3NGY5ODA4NDM4YzY4MjQzYmVlODQ3Mi4u
NTNkZGY2NmFhMmYxYTcwMmJhNjMwYTA2N2Y3NzM3OWQxMzllNzkxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC02ODIsNiArNjgyLDEzIEBAIHZvaWQgWE1MSHR0cFJl
cXVlc3Q6OnNlbmRCeXRlc0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCwgRXhj
ZXB0aW9uQ29kCiAgICAgY3JlYXRlUmVxdWVzdChlYyk7CiB9CiAKK3ZvaWQgWE1MSHR0cFJlcXVl
c3Q6OnNlbmRGcm9tSW5zcGVjdG9yKFBhc3NSZWZQdHI8Rm9ybURhdGE+IGZvcm1EYXRhLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0gZm9ybURhdGEgPyBm
b3JtRGF0YS0+ZGVlcENvcHkoKSA6IEZvcm1EYXRhOjpjcmVhdGUoKTsKKyAgICBjcmVhdGVSZXF1
ZXN0KGVjKTsKKyAgICBtX2V4Y2VwdGlvbkNvZGUgPSBlYzsKK30KKwogdm9pZCBYTUxIdHRwUmVx
dWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykKIHsKICNpZiBFTkFCTEUoQkxP
QikKQEAgLTcxNiw2ICs3MjMsOCBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0
KEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIHJlcXVlc3Quc2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJl
cXVlc3Q6OlRhcmdldElzWEhSKTsKICNlbmRpZgogCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsTG9hZFhIUihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIG1fbWV0aG9k
LCBtX3VybCwgbV9hc3luYywgbV9yZXF1ZXN0RW50aXR5Qm9keSA/IG1fcmVxdWVzdEVudGl0eUJv
ZHktPmRlZXBDb3B5KCkgOiAwLCBtX3JlcXVlc3RIZWFkZXJzLCBtX2luY2x1ZGVDcmVkZW50aWFs
cyk7CisKICAgICBpZiAobV9yZXF1ZXN0RW50aXR5Qm9keSkgewogICAgICAgICBBU1NFUlQobV9t
ZXRob2QgIT0gIkdFVCIpOwogICAgICAgICBBU1NFUlQobV9tZXRob2QgIT0gIkhFQUQiKTsKQEAg
LTc1MSwxMSArNzYwLDggQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNl
cHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIC8vIGFuZCB0aGV5IGFyZSByZWZlcmVuY2VkIGJ5
IHRoZSBKYXZhU2NyaXB0IHdyYXBwZXIuCiAgICAgICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHko
dGhpcyk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxMb2FkWEhSU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOworICAgIH0gZWxzZQogICAgICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVxdWVzdCwgKnRoaXMsIG9w
dGlvbnMpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRYSFJTeW5j
aHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgfQogCiAgICAgaWYgKCFt
X2V4Y2VwdGlvbkNvZGUgJiYgbV9lcnJvcikKICAgICAgICAgbV9leGNlcHRpb25Db2RlID0gWE1M
SHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOwpAQCAtODA4LDYgKzgxNCw4IEBAIHZv
aWQgWE1MSHR0cFJlcXVlc3Q6OmludGVybmFsQWJvcnQoKQogCiAgICAgbV9kZWNvZGVyID0gMDsK
IAorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmFpbFhIUkxvYWRpbmcoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzKTsKKwogICAgIGlmIChoYWRMb2FkZXIpCiAgICAgICAg
IGRyb3BQcm90ZWN0aW9uKCk7CiB9CkBAIC0xMDczLDcgKzEwODEsNyBAQCB2b2lkIFhNTEh0dHBS
ZXF1ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91Ymxl
KQogCiAgICAgbV9yZXNwb25zZUJ1aWxkZXIuc2hyaW5rVG9GaXQoKTsKIAotICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgaWRlbnRpZmllciwgbV9yZXNwb25zZUJ1aWxkZXIudG9TdHJp
bmdQcmVzZXJ2ZUNhcGFjaXR5KCksIG1fdXJsLCBtX2xhc3RTZW5kVVJMLCBtX2xhc3RTZW5kTGlu
ZU51bWJlcik7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hYSFJMb2Fk
aW5nKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgaWRlbnRpZmllciwgbV9yZXNwb25z
ZUJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCksIG1fdXJsLCBtX2xhc3RTZW5kVVJM
LCBtX2xhc3RTZW5kTGluZU51bWJlcik7CiAKICAgICBib29sIGhhZExvYWRlciA9IG1fbG9hZGVy
OwogICAgIG1fbG9hZGVyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXgg
NjA2NDI4Yjc2YzcxNjQwY2QwYzgxN2MzMThlOTg1Y2FiMmZmNDgyYy4uY2M2Y2JjNTBjMzYwMTY1
MDg5ZTI2NTk5NzVjZDEwZDMxMTIyZWY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmgKQEAgLTEwNSw2ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgQmxvYiogcmVzcG9uc2VCbG9iKEV4
Y2VwdGlvbkNvZGUmKTsKICAgICBCbG9iKiBvcHRpb25hbFJlc3BvbnNlQmxvYigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzcG9uc2VCbG9iLmdldCgpOyB9CiAKKyAgICB2b2lkIHNlbmRGcm9tSW5zcGVj
dG9yKFBhc3NSZWZQdHI8Rm9ybURhdGE+LCBFeGNlcHRpb25Db2RlJik7CisKICAgICAvLyBFeHBv
c2UgSFRUUCB2YWxpZGF0aW9uIG1ldGhvZHMgZm9yIG90aGVyIHVudHJ1c3RlZCByZXF1ZXN0cy4K
ICAgICBzdGF0aWMgYm9vbCBpc0FsbG93ZWRIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYpOwogICAg
IHN0YXRpYyBTdHJpbmcgdXBwZXJjYXNlS25vd25IVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGNjNGQ0MWVkMTJhZGI1MTM5M2RkNDYwODE1NWYxZjYyOTc1MzA2MzkuLjJiYWY4MjNl
NDVlMGM0NzUwN2NlODZlNDgyNjlhNjFjZGVlYjZmOWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNyBAQAog
MjAxMi0wOS0xMyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAorICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgYWJpbGl0eSB0byByZXBsYXkgWEhSIGluIG5ldHdvcmsg
cGFuZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTE4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIFhIUiByZXBsYXkgdGVzdC4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvbmV0d29yay14aHItcmVwbGF5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1yZXBsYXkuaHRtbDogQWRk
ZWQuCisKKzIwMTItMDktMTMgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+
CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogW1Rlc3RzXSBFeHRyYWN0IGEgY29tbW9uIG1ldGhv
ZCBmb3Igc2VuZGluZyBYSFJzIGZyb20gdGVzdHMuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjY2MgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhyLXJlcGxheS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25ldHdvcmsteGhy
LXJlcGxheS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI5NzFhZTY4ZmM0ZTFiMzY2NjNlOTM2
N2FmZTdjMThiMDljNTEwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay14aHItcmVwbGF5LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDYwIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjogWEhSIGxvYWRlZDogMQorQ09O
U09MRSBNRVNTQUdFOiBsaW5lIDY6IFhIUiBsb2FkZWQ6IDIKK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSA2OiBYSFIgbG9hZGVkOiAzCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjogWEhSIGxvYWRlZDog
NAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFhIUiBsb2FkZWQ6IDUKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSA2OiBYSFIgbG9hZGVkOiA2CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNjogWEhSIGxv
YWRlZDogNworQ09OU09MRSBNRVNTQUdFOiBsaW5lIDY6IFhIUiBsb2FkZWQ6IDgKK1Rlc3RzIFhI
UiByZXBsYXlpbmcuIEJ1ZyA5NTE4NworCitSdW5uaW5nOiB0ZXN0R2V0U3RhdGljQXN5bmMKK0R1
bXBpbmcgcmVxdWVzdDogCisgICAgdXJsOiBodHRwOi8vdXNlcjpwYXNzd29yZEAxMjcuMC4wLjE6
ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZW1wdHkuaHRtbAorICAgIHJlcXVlc3RN
ZXRob2Q6IEdFVAorICAgIHRlc3QgcmVxdWVzdCBoZWFkZXIgdmFsdWU6IGhlYWRlclZhbHVlCisK
K1J1bm5pbmc6IHRlc3RHZXRTdGF0aWNTeW5jCitEdW1waW5nIHJlcXVlc3Q6IAorICAgIHVybDog
aHR0cDovL3VzZXI6cGFzc3dvcmRAMTI3LjAuMC4xOjgwMDAvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzL2VtcHR5Lmh0bWwKKyAgICByZXF1ZXN0TWV0aG9kOiBHRVQKKyAgICB0ZXN0IHJlcXVl
c3QgaGVhZGVyIHZhbHVlOiBoZWFkZXJWYWx1ZQorCitSdW5uaW5nOiB0ZXN0R2V0Q2FjaGVkQXN5
bmMKK0R1bXBpbmcgcmVxdWVzdDogCisgICAgdXJsOiBodHRwOi8vdXNlcjpwYXNzd29yZEAxMjcu
MC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmFuZG9tLWNhY2hlZC5waHAK
KyAgICByZXF1ZXN0TWV0aG9kOiBHRVQKKyAgICB0ZXN0IHJlcXVlc3QgaGVhZGVyIHZhbHVlOiBo
ZWFkZXJWYWx1ZQorCitSdW5uaW5nOiB0ZXN0R2V0Q2FjaGVkU3luYworRHVtcGluZyByZXF1ZXN0
OiAKKyAgICB1cmw6IGh0dHA6Ly91c2VyOnBhc3N3b3JkQDEyNy4wLjAuMTo4MDAwL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy9yYW5kb20tY2FjaGVkLnBocAorICAgIHJlcXVlc3RNZXRob2Q6
IEdFVAorICAgIHRlc3QgcmVxdWVzdCBoZWFkZXIgdmFsdWU6IGhlYWRlclZhbHVlCisKK1J1bm5p
bmc6IHRlc3RHZXRSYW5kb21Bc3luYworRHVtcGluZyByZXF1ZXN0OiAKKyAgICB1cmw6IGh0dHA6
Ly91c2VyOnBhc3N3b3JkQDEyNy4wLjAuMTo4MDAwL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9yYW5kb20ucGhwCisgICAgcmVxdWVzdE1ldGhvZDogR0VUCisgICAgdGVzdCByZXF1ZXN0IGhl
YWRlciB2YWx1ZTogaGVhZGVyVmFsdWUKKworUnVubmluZzogdGVzdEdldFJhbmRvbVN5bmMKK0R1
bXBpbmcgcmVxdWVzdDogCisgICAgdXJsOiBodHRwOi8vdXNlcjpwYXNzd29yZEAxMjcuMC4wLjE6
ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvcmFuZG9tLnBocAorICAgIHJlcXVlc3RN
ZXRob2Q6IEdFVAorICAgIHRlc3QgcmVxdWVzdCBoZWFkZXIgdmFsdWU6IGhlYWRlclZhbHVlCisK
K1J1bm5pbmc6IHRlc3RQb3N0QXN5bmMKK0R1bXBpbmcgcmVxdWVzdDogCisgICAgdXJsOiBodHRw
Oi8vdXNlcjpwYXNzd29yZEAxMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvcmFuZG9tLnBocAorICAgIHJlcXVlc3RGb3JtRGF0YTogcGF5bG9hZAorICAgIHJlcXVlc3RN
ZXRob2Q6IFBPU1QKKyAgICB0ZXN0IHJlcXVlc3QgaGVhZGVyIHZhbHVlOiBoZWFkZXJWYWx1ZQor
CitSdW5uaW5nOiB0ZXN0UG9zdFN5bmMKK0R1bXBpbmcgcmVxdWVzdDogCisgICAgdXJsOiBodHRw
Oi8vdXNlcjpwYXNzd29yZEAxMjcuMC4wLjE6ODAwMC9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvcmFuZG9tLnBocAorICAgIHJlcXVlc3RGb3JtRGF0YTogcGF5bG9hZAorICAgIHJlcXVlc3RN
ZXRob2Q6IFBPU1QKKyAgICB0ZXN0IHJlcXVlc3QgaGVhZGVyIHZhbHVlOiBoZWFkZXJWYWx1ZQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL25l
dHdvcmsteGhyLXJlcGxheS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9uZXR3b3JrLXhoci1yZXBsYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZmY1OGQ3NTg2OWRj
MDFiODM1NjQ3NzRjYjM0OWNjMjQ2OGE0YTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXhoci1yZXBsYXkuaHRtbApA
QCAtMCwwICsxLDEwOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9pbnNwZWN0
b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vbmV0d29yay10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBuZXR3b3Jr
UGFuZWwgPSBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJuZXR3b3JrIik7CisKKyAgICBmdW5jdGlv
biBsYXN0UmVxdWVzdCgpCisgICAgeworICAgICAgICByZXR1cm4gbmV0d29ya1BhbmVsLnJlcXVl
c3RzW25ldHdvcmtQYW5lbC5yZXF1ZXN0cy5sZW5ndGggLSAxXTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBkdW1wUmVxdWVzdChyZXF1ZXN0KQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIkR1bXBpbmcgcmVxdWVzdDogIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCIgICAgdXJsOiAiICsgcmVxdWVzdC51cmwpOworICAgICAgICBpZiAocmVxdWVzdC5y
ZXF1ZXN0Rm9ybURhdGEpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICAg
IHJlcXVlc3RGb3JtRGF0YTogIiArIHJlcXVlc3QucmVxdWVzdEZvcm1EYXRhKTsKKyAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICByZXF1ZXN0TWV0aG9kOiAiICsgcmVxdWVzdC5y
ZXF1ZXN0TWV0aG9kKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICB0ZXN0
IHJlcXVlc3QgaGVhZGVyIHZhbHVlOiAiICsgcmVxdWVzdC5yZXF1ZXN0SGVhZGVyVmFsdWUoImhl
YWRlck5hbWUiKSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYXNzZXJ0UmVxdWVzdEVxdWFsKHJl
cXVlc3QxLCByZXF1ZXN0MikKKyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKHJlcXVlc3QxLnVybCwgcmVxdWVzdDIudXJsLCAiUmVxdWVzdHMgaGF2ZSBkaWZmZXJlbnQg
dXJsIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHJlcXVlc3QxLnJlcXVl
c3RGb3JtRGF0YSwgcmVxdWVzdDIucmVxdWVzdEZvcm1EYXRhLCAiUmVxdWVzdHMgaGF2ZSBkaWZm
ZXJlbnQgcmVxdWVzdEZvcm1EYXRhIik7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1
YWxzKHJlcXVlc3QxLnJlcXVlc3RNZXRob2QsIHJlcXVlc3QyLnJlcXVlc3RNZXRob2QsICJSZXF1
ZXN0cyBoYXZlIGRpZmZlcmVudCByZXF1ZXN0TWV0aG9kIik7CisgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0RXF1YWxzKHJlcXVlc3QxLnJlcXVlc3RIZWFkZXJzVGV4dCwgcmVxdWVzdDIucmVx
dWVzdEhlYWRlcnNUZXh0LCAiUmVxdWVzdHMgaGF2ZSBkaWZmZXJlbnQgcmVxdWVzdEhlYWRlcnNU
ZXh0Iik7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFhIUlJlcGxheShtZXRob2QsIHVybCwg
YXN5bmMsIHVzZXIsIHBhc3N3b3JkLCBoZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHMsIHBheWxvYWQs
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXNldEluc3BlY3RvclJl
c291cmNlc0RhdGEoc3RlcDEpOworCisgICAgICAgIGZ1bmN0aW9uIHN0ZXAxKCkKKyAgICAgICAg
eworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5tYWtlWEhSKG1ldGhvZCwgdXJsLCBhc3luYywg
dXNlciwgcGFzc3dvcmQsIGhlYWRlcnMsIHdpdGhDcmVkZW50aWFscywgcGF5bG9hZCwgc3RlcDIp
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIG9yaWdpbmFsUmVxdWVzdDsKKyAgICAgICAgZnVu
Y3Rpb24gc3RlcDIoKQorICAgICAgICB7CisgICAgICAgICAgICBvcmlnaW5hbFJlcXVlc3QgPSBs
YXN0UmVxdWVzdCgpOworICAgICAgICAgICAgZHVtcFJlcXVlc3Qob3JpZ2luYWxSZXF1ZXN0KTsK
KyAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5yZXBsYXlYSFIob3JpZ2luYWxSZXF1ZXN0LnJlcXVl
c3RJZCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZmZXIoV2ViSW5zcGVjdG9y
Lk5ldHdvcmtMb2dWaWV3LnByb3RvdHlwZSwgIl9hcHBlbmRSZXF1ZXN0Iiwgc3RlcDMpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RlcDMoKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcmVwbGF5ZWRSZXF1ZXN0ID0gbGFzdFJlcXVlc3QoKTsKKyAgICAgICAgICAgIGFzc2Vy
dFJlcXVlc3RFcXVhbChvcmlnaW5hbFJlcXVlc3QsIHJlcGxheWVkUmVxdWVzdCk7CisgICAgICAg
ICAgICBjYWxsYmFjaygpOworICAgICAgICB9CisgICAgfQorCisKKyAgICBJbnNwZWN0b3JUZXN0
LnJ1blRlc3RTdWl0ZShbCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRTdGF0aWNBc3luYyhuZXh0
KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0WEhSUmVwbGF5KCJHRVQiLCAicmVzb3VyY2Vz
L2VtcHR5Lmh0bWwiLCB0cnVlLCAidXNlciIsICJwYXNzd29yZCIsIFtbImhlYWRlck5hbWUiLCAi
aGVhZGVyVmFsdWUiXV0sIGZhbHNlLCB1bmRlZmluZWQsIG5leHQpOworICAgICAgICB9LAorCisg
ICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRTdGF0aWNTeW5jKG5leHQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHRlc3RYSFJSZXBsYXkoIkdFVCIsICJyZXNvdXJjZXMvZW1wdHkuaHRtbCIsIGZhbHNl
LCAidXNlciIsICJwYXNzd29yZCIsIFtbImhlYWRlck5hbWUiLCAiaGVhZGVyVmFsdWUiXV0sIGZh
bHNlLCB1bmRlZmluZWQsIG5leHQpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRl
c3RHZXRDYWNoZWRBc3luYyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0WEhSUmVw
bGF5KCJHRVQiLCAicmVzb3VyY2VzL3JhbmRvbS1jYWNoZWQucGhwIiwgdHJ1ZSwgInVzZXIiLCAi
cGFzc3dvcmQiLCBbWyJoZWFkZXJOYW1lIiwgImhlYWRlclZhbHVlIl1dLCBmYWxzZSwgdW5kZWZp
bmVkLCBuZXh0KTsKKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Q2FjaGVk
U3luYyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0WEhSUmVwbGF5KCJHRVQiLCAi
cmVzb3VyY2VzL3JhbmRvbS1jYWNoZWQucGhwIiwgZmFsc2UsICJ1c2VyIiwgInBhc3N3b3JkIiwg
W1siaGVhZGVyTmFtZSIsICJoZWFkZXJWYWx1ZSJdXSwgZmFsc2UsIHVuZGVmaW5lZCwgbmV4dCk7
CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdEdldFJhbmRvbUFzeW5jKG5leHQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3RYSFJSZXBsYXkoIkdFVCIsICJyZXNvdXJjZXMv
cmFuZG9tLnBocCIsIHRydWUsICJ1c2VyIiwgInBhc3N3b3JkIiwgW1siaGVhZGVyTmFtZSIsICJo
ZWFkZXJWYWx1ZSJdXSwgZmFsc2UsIHVuZGVmaW5lZCwgbmV4dCk7CisgICAgICAgIH0sCisKKyAg
ICAgICAgZnVuY3Rpb24gdGVzdEdldFJhbmRvbVN5bmMobmV4dCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdGVzdFhIUlJlcGxheSgiR0VUIiwgInJlc291cmNlcy9yYW5kb20ucGhwIiwgZmFsc2Us
ICJ1c2VyIiwgInBhc3N3b3JkIiwgW1siaGVhZGVyTmFtZSIsICJoZWFkZXJWYWx1ZSJdXSwgZmFs
c2UsIHVuZGVmaW5lZCwgbmV4dCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVz
dFBvc3RBc3luYyhuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0WEhSUmVwbGF5KCJQ
T1NUIiwgInJlc291cmNlcy9yYW5kb20ucGhwIiwgdHJ1ZSwgInVzZXIiLCAicGFzc3dvcmQiLCBb
WyJoZWFkZXJOYW1lIiwgImhlYWRlclZhbHVlIl1dLCBmYWxzZSwgInBheWxvYWQiLCBuZXh0KTsK
KyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0UG9zdFN5bmMobmV4dCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdGVzdFhIUlJlcGxheSgiUE9TVCIsICJyZXNvdXJjZXMvcmFuZG9t
LnBocCIsIGZhbHNlLCAidXNlciIsICJwYXNzd29yZCIsIFtbImhlYWRlck5hbWUiLCAiaGVhZGVy
VmFsdWUiXV0sIGZhbHNlLCAicGF5bG9hZCIsIG5leHQpOworICAgICAgICB9CisgICAgXSk7Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KK1Rlc3RzIFhI
UiByZXBsYXlpbmcuCis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTUxODciPkJ1ZyA5NTE4NzwvYT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="175738"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>