<?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>106782</bug_id>
          
          <creation_ts>2013-01-14 05:06:39 -0800</creation_ts>
          <short_desc>MediaStream API: Implement DTMF support in RTCPeerConnection</short_desc>
          <delta_ts>2013-02-06 04:12:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jamesr</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>806266</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-14 05:06:39 -0800</bug_when>
    <thetext>According to the latest spec (not yet published).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806313</commentid>
    <comment_count>1</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-14 06:14:03 -0800</bug_when>
    <thetext>Spec: http://dev.w3.org/2011/webrtc/editor/getusermedia.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806315</commentid>
    <comment_count>2</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-14 06:15:02 -0800</bug_when>
    <thetext>Ignore previous comment, wrong link.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818731</commentid>
    <comment_count>3</comment_count>
      <attachid>185202</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-29 01:52:47 -0800</bug_when>
    <thetext>Created attachment 185202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818737</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-29 02:05:01 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818879</commentid>
    <comment_count>5</comment_count>
      <attachid>185202</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-29 06:03:04 -0800</bug_when>
    <thetext>Comment on attachment 185202
Patch

Attachment 185202 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16151190

New failing tests:
fast/workers/worker-document-leak.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818885</commentid>
    <comment_count>6</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-29 06:11:17 -0800</bug_when>
    <thetext>I really can&apos;t see how this patch could have broken fast/workers/worker-document-leak.html...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819220</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-29 12:42:01 -0800</bug_when>
    <thetext>&gt; fast/workers/worker-document-leak.html

It&apos;s a flaky test on apple-mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819224</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-29 12:44:19 -0800</bug_when>
    <thetext>What is DTMF?  I guess I should read the spec to find out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819892</commentid>
    <comment_count>9</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-30 00:46:04 -0800</bug_when>
    <thetext>http://en.wikipedia.org/wiki/DTMF
Dual-tone multi-frequency signaling

Bleepy tones when you press the phone keys. Really.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821248</commentid>
    <comment_count>10</comment_count>
      <attachid>185202</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-31 01:34:27 -0800</bug_when>
    <thetext>Comment on attachment 185202
Patch

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

&gt; Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp:44
&gt; +static const long minToneDuration = 70;
&gt; +static const long defaultToneDuration = 100;
&gt; +static const long maxToneDuration = 6000;
&gt; +static const long minInterToneGap = 50;
&gt; +static const long defaultInterToneGap = 50;

Isn&apos;t &quot;static&quot; is redundant with &quot;const&quot;?

&gt; Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp:121
&gt; +    if (duration != m_duration)
&gt; +        m_duration = duration;
&gt; +    if (interToneGap != m_interToneGap)
&gt; +        m_interToneGap = interToneGap;

Why not just assign unconditionally?

&gt; Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp:178
&gt; +    events.clear();

There&apos;s no need to call clear() explicitly.  The Vector destructor will do it for you.

&gt; Source/WebCore/Modules/mediastream/RTCDTMFToneChangeEvent.idl:27
&gt; +] interface RTCDTMFToneChangeEvent : Event {

These API names are just terrible.  Why not DTMFToneChangeEvent or ToneChangeEvent?

Also, this event should have a DOM4-style constructor.  If you take a look at some of the other events, you can see the IDL attributes you&apos;ll need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821249</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-31 01:37:35 -0800</bug_when>
    <thetext>The code itself looks fine.  My concerns are whether we really need to support DTMF.  You mentioned that this is something that&apos;s been a long discussion in the working group.  I haven&apos;t been participating in the working group, so I don&apos;t have much understanding of that discussion.  Are there some email threads I could read to learn about the working group&apos;s decision?

Also, would it be possible to use API names that weren&apos;t so ugly?  &quot;RTCDTMF&quot; is just such a mouthful to have in front of every name.  I realize that&apos;s probably bike shedding, but RTCDTMFToneChangeEvent is a really ugly color for the bikeshed.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821258</commentid>
    <comment_count>12</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-31 01:51:21 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; The code itself looks fine.  My concerns are whether we really need to support DTMF.  You mentioned that this is something that&apos;s been a long discussion in the working group.  I haven&apos;t been participating in the working group, so I don&apos;t have much understanding of that discussion.  Are there some email threads I could read to learn about the working group&apos;s decision?
&gt; 
&gt; Also, would it be possible to use API names that weren&apos;t so ugly?  &quot;RTCDTMF&quot; is just such a mouthful to have in front of every name.  I realize that&apos;s probably bike shedding, but RTCDTMFToneChangeEvent is a really ugly color for the bikeshed.  :(

First for the standards part: The working group has discussed this back and forth but this time everyone has agreed that a) it should be done and b) it should be done this way. Most of the discussions have taken place during phone conferences and meetings but I can probably get hta@ to get you some meeting notes if you want.

And regarding the name: yes it is a mouthful but I have used the exact same name in WebCore as in the spec. And to be frank I don&apos;t particularly want to bring up a name change to the WG since most(everyone?) just want to put this behind them...

And there are actual use cases where this is useful (apart from interop with legacy systems) and that is remote camera control with sometimes uses DTMF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821262</commentid>
    <comment_count>13</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-31 01:58:40 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Also, would it be possible to use API names that weren&apos;t so ugly?  &quot;RTCDTMF&quot; is just such a mouthful to have in front of every name.  I realize that&apos;s probably bike shedding, but RTCDTMFToneChangeEvent is a really ugly color for the bikeshed.  :(
&gt; And regarding the name: yes it is a mouthful but I have used the exact same name in WebCore as in the spec. And to be frank I don&apos;t particularly want to bring up a name change to the WG since most(everyone?) just want to put this behind them...

Also I forgot to mention that the webRTC WG have decided to use RTC as a prefix for all classes to minimize eventual clashes with other standards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821267</commentid>
    <comment_count>14</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-31 02:05:22 -0800</bug_when>
    <thetext>Yet another reflection is that the JS developer will never have to see or type these names so it&apos;s mostly an implementation detail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821284</commentid>
    <comment_count>15</comment_count>
      <attachid>185726</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-31 02:27:22 -0800</bug_when>
    <thetext>Created attachment 185726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821285</commentid>
    <comment_count>16</comment_count>
      <attachid>185202</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-31 02:29:03 -0800</bug_when>
    <thetext>Comment on attachment 185202
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp:44
&gt;&gt; +static const long defaultInterToneGap = 50;
&gt; 
&gt; Isn&apos;t &quot;static&quot; is redundant with &quot;const&quot;?

No, static is for limiting the visible scope. A const variable is still visible in the global WebCore namespace.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp:121
&gt;&gt; +        m_interToneGap = interToneGap;
&gt; 
&gt; Why not just assign unconditionally?

Fixed.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp:178
&gt;&gt; +    events.clear();
&gt; 
&gt; There&apos;s no need to call clear() explicitly.  The Vector destructor will do it for you.

Removed.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDTMFToneChangeEvent.idl:27
&gt;&gt; +] interface RTCDTMFToneChangeEvent : Event {
&gt; 
&gt; These API names are just terrible.  Why not DTMFToneChangeEvent or ToneChangeEvent?
&gt; 
&gt; Also, this event should have a DOM4-style constructor.  If you take a look at some of the other events, you can see the IDL attributes you&apos;ll need.

Added DOM4-style constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821340</commentid>
    <comment_count>17</comment_count>
      <attachid>185726</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 03:46:04 -0800</bug_when>
    <thetext>Comment on attachment 185726
Patch

Attachment 185726 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16269138</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821379</commentid>
    <comment_count>18</comment_count>
      <attachid>185726</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-31 04:33:36 -0800</bug_when>
    <thetext>Comment on attachment 185726
Patch

Attachment 185726 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16251329</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821385</commentid>
    <comment_count>19</comment_count>
      <attachid>185749</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-31 04:39:53 -0800</bug_when>
    <thetext>Created attachment 185749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821593</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-01-31 09:38:57 -0800</bug_when>
    <thetext>Aren&apos;t DTMF tones something an author could easily set up with web audio and pipe in to RTC as an input?  Why hardcode support for generating fairly simple tone sequences for a somewhat obscure format into the browser?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821614</commentid>
    <comment_count>21</comment_count>
    <who name="Harald Alvestrand">hta</who>
    <bug_when>2013-01-31 10:08:04 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Aren&apos;t DTMF tones something an author could easily set up with web audio and pipe in to RTC as an input?  Why hardcode support for generating fairly simple tone sequences for a somewhat obscure format into the browser?

This particular variant of DTMF tones is carried as a special codec across the wire. There are many reasons why existing SIP phones and devices that emulate phones want to send these digital signals rather than the analog version of &quot;beeps&quot;.

RFC 4733 is the specification that people want to have support for.
If you want to take out the requirement, please go to the IETF RTCWEB WG and try to generate consensus for taking it out. It&apos;s going to be hard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821694</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-31 11:02:52 -0800</bug_when>
    <thetext>@hta: I&apos;m sure the working group has good reasons for wanting to include this feature.  I&apos;d just be interested in understanding them before reviewing the patch.  It sounds like this was a contentious decision in the working group.  Is there really no written record explaining the decision?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821979</commentid>
    <comment_count>23</comment_count>
    <who name="Harald Alvestrand">hta</who>
    <bug_when>2013-01-31 14:44:31 -0800</bug_when>
    <thetext>@abarth I&apos;ve been quite unhappy with the IETF WG&apos;s documentation of its decisions.

The use case that requires it is the &quot;1-800-Fedex&quot; use case described in draft-ietf-rtcweb-use-cases-and-requirements, section 4.3.2:

   Alice uses her web browser with a service something like Skype to be
   able to phone PSTN numbers.  Alice calls 1-800-gofedex.  Alice should
   be able to hear the initial prompts from the fedex IVR and when the
   IVR says press 1, there should be a way for Alice to navigate the
   IVR.

The experience of the people with experience in SIP gateways clearly indicated that sending &quot;I want this tone&quot; rather than sending the actual DTMF audio was a much preferred mechanism.

The topic wasn&apos;t really controversial - the discussion there was basically done in November 2011, according to my archives; at that time the requirement for supporting RFC 4733 (DTMF) had entered what became draft-ietf-rtcweb-audio, and nobody&apos;s tried to remove it after that thread.

In the W3C, the discussion about how the API should look like went by fits and starts from July 2011, each fit and start causing the proposal to be changed more or less drastically, with the last proposal (the one that was edited into the spec) being proposed on December 14 of 2012, and the final decision to insert it was recorded in the minutes of our Dec 13 teleconference: DTMF section of http://www.w3.org/2012/12/13-webrtc-minutes.html

Hope that clarifies....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822410</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-01 00:06:26 -0800</bug_when>
    <thetext>Thanks, that context is very helpful.

&gt; The experience of the people with experience in SIP gateways clearly indicated that sending &quot;I want this tone&quot; rather than sending the actual DTMF audio was a much preferred mechanism.

From Comment #20, it sounds like this is the core of the issue that jamesr and I are seeking to understand: why is it important to have built-in DTMF support rather than using a more general mechanism to generate the tone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824170</commentid>
    <comment_count>25</comment_count>
      <attachid>186330</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-02-04 02:37:11 -0800</bug_when>
    <thetext>Created attachment 186330
Patch (just rebased)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824220</commentid>
    <comment_count>26</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-02-04 03:56:40 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Aren&apos;t DTMF tones something an author could easily set up with web audio and pipe in to RTC as an input?  Why hardcode support for generating fairly simple tone sequences for a somewhat obscure format into the browser?

Here&apos;s what I have learned about it (but I am not an expert; just bugged some)

It&apos;s not really possible to use WebAudio to mix in the tones of the outgoing audio for several reasons:

* Codec issues: The audio goes through several filters and most of them are optimized for the human voice and can distort the DTMF tones.

* Echo cancellation: same as above

* Packet loss: we can still understand audio even if several packets are lost and silence or the last received packet is replayed but it can distort DTMF if several packes is missing and silence is played instead in the middle of a tone.

To solve all these issues the spec that Harald referenced to states that the DTMF tones are sent as a separate payload (audio, video, data and DTMF are all different payloads) which avoids most of the issues above.

The fact that the spec should have DTMF has been uncontroversial from the start; deciding how the API should look like has taken extremely long time.

If it would be possible for everyone to rewrite their backends/legacy systems with WebRTC support it would have been much, much better to use data channels for communication like this. This is MY not-so-humble opinion (and I have been vocal about it more than once) but I also realize that there is a reality out there and since everyone have signed off on the current spec we have decided to implement it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826150</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-06 00:10:35 -0800</bug_when>
    <thetext>From your comment, it seems clear that you want to send this information digitally.

&gt; If it would be possible for everyone to rewrite their backends/legacy systems with WebRTC support it would have been much, much better to use data channels for communication like this. This is MY not-so-humble opinion (and I have been vocal about it more than once) but I also realize that there is a reality out there and since everyone have signed off on the current spec we have decided to implement it now.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826159</commentid>
    <comment_count>28</comment_count>
      <attachid>186330</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-06 00:20:25 -0800</bug_when>
    <thetext>Comment on attachment 186330
Patch (just rebased)

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

I think the main thing that I would like to change about this patch is the names used in the API.  RTCDTMF is just a mouthful.  IMHO, the WebRTC working group has gone a bit overboard in trying to structure these names.  However, I realize that a code review isn&apos;t the right place to raise those sorts of issues and that I&apos;m just arguing about what color to paint the bike shed.

Thanks for your patience and your explanations above.

&gt; Source/WebCore/CMakeLists.txt:227
&gt; +    Modules/mediastream/RTCDTMFSender.idl
&gt; +    Modules/mediastream/RTCDTMFToneChangeEvent.idl

Can we drop the &quot;RTC&quot; prefix from all these names?  We already have the DTMF prefix....

&gt; Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp:13
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos; AND ANY

APPLE -&gt; GOOGLE

&gt; Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp:40
&gt; +static const long minToneDuration = 70;

minToneDuration &lt;-- Can you add a unit?  minToneDurationMS for example

&gt; Source/WebCore/Modules/mediastream/RTCDTMFToneChangeEvent.h:54
&gt; +    RTCDTMFToneChangeEvent(const String&amp; tone);
&gt; +    RTCDTMFToneChangeEvent(const RTCDTMFToneChangeEventInit&amp;);

I would have marked these explicit.

&gt; Source/WebCore/Modules/mediastream/RTCDTMFToneChangeEvent.idl:28
&gt; +] interface RTCDTMFToneChangeEvent : Event {

I probably would have called this event just ToneChangeEvent (or at least DTMFToneChangeEvent)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826203</commentid>
    <comment_count>29</comment_count>
      <attachid>186330</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-02-06 01:22:33 -0800</bug_when>
    <thetext>Comment on attachment 186330
Patch (just rebased)

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

I rather keep the names used in the specification

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp:13
&gt;&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS&apos;&apos; AND ANY
&gt; 
&gt; APPLE -&gt; GOOGLE

Done. I wish all these licences could be removed. There are lots of variants in the tree...

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp:40
&gt;&gt; +static const long minToneDuration = 70;
&gt; 
&gt; minToneDuration &lt;-- Can you add a unit?  minToneDurationMS for example

Good idea. Done.

&gt;&gt; Source/WebCore/Modules/mediastream/RTCDTMFToneChangeEvent.h:54
&gt;&gt; +    RTCDTMFToneChangeEvent(const RTCDTMFToneChangeEventInit&amp;);
&gt; 
&gt; I would have marked these explicit.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826206</commentid>
    <comment_count>30</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-02-06 01:23:53 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 186330 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186330&amp;action=review
&gt; 
&gt; I rather keep the names used in the specification
&gt; 

But I&apos;ll check if there is a possibility of an official name change though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826217</commentid>
    <comment_count>31</comment_count>
      <attachid>186787</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-02-06 01:34:33 -0800</bug_when>
    <thetext>Created attachment 186787
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826307</commentid>
    <comment_count>32</comment_count>
      <attachid>186787</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 03:58:38 -0800</bug_when>
    <thetext>Comment on attachment 186787
Patch for landing

Clearing flags on attachment: 186787

Committed r141984: &lt;http://trac.webkit.org/changeset/141984&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185202</attachid>
            <date>2013-01-29 01:52:47 -0800</date>
            <delta_ts>2013-01-31 02:29:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106782-20130129104933.patch</filename>
            <type>text/plain</type>
            <size>75788</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAzZmY2MGIxYTdhZDEx
OGU1NTAxZDUzMmQxYzJkNGM0ODU3MGJlMGEwLi5mM2RlOGY4YzUwZWU1ZmQ0ZmY5NDAzMjkwYjE3
NDk3NTViZmVjMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMy0wMS0yOSAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IEltcGxlbWVudCBEVE1GIHN1cHBvcnQgaW4gUlRDUGVlckNvbm5lY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjc4MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBXZWJSVEMg
c3BlY2lmaWNhdGlvbiBoYXZlIGFkZGVkIHN1cHBvcnQgZm9yIERUTUY6CisgICAgICAgIGh0dHA6
Ly9kZXYudzMub3JnLzIwMTEvd2VicnRjL2VkaXRvci93ZWJydGMuaHRtbCNwZWVyLXRvLXBlZXIt
ZHRtZgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIHdpc2UgdGhpcyBpcyBpbXBsZW1lbnRlZCB1
c2luZyB0aGUgc2FtZSBwYXR0ZXJuIGFzIFJUQ0RhdGFDaGFubmVsOworICAgICAgICB3aGVyZSBh
IFJUQ0RUTUZTZW5kZXJIYW5kbGVyIGlzIGNyZWF0ZWQgYnkgdGhlIFVBIHRocm91Z2ggYSBuZXcg
bWV0aG9kIG9uCisgICAgICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFt
Q29tcG9uZW50Lmg6CisgICAgICAgIChXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCk6CisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6On5XZWJSVENEVE1GU2VuZGVySGFu
ZGxlcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlJUQ0RUTUZT
ZW5kZXJIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhh
bmRsZXJDbGllbnQ6On5XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCk6CisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpj
cmVhdGVEVE1GU2VuZGVyKToKKwogMjAxMy0wMS0yOCAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFz
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBNYWtlIHBhZ2Ugc2NhbGUgc2hyaW5rIEZyYW1lVmll
dyBpbiBhcHBseVBhZ2VTY2FsZUluQ29tcG9zaXRvciBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjI3NTVj
NGYzM2UzZmUwNzQzZmM1ZjkzNjUxZTVkNTcxMjFiMzVlMS4uYTQ4ODkzNTYzOWUxNzA0M2RmMWI2
YWYwNGMwMDY4NzI3OWU0Y2MzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAxMy0w
MS0yOSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBN
ZWRpYVN0cmVhbSBBUEk6IEltcGxlbWVudCBEVE1GIHN1cHBvcnQgaW4gUlRDUGVlckNvbm5lY3Rp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjc4
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBX
ZWJSVEMgc3BlY2lmaWNhdGlvbiBoYXZlIGFkZGVkIHN1cHBvcnQgZm9yIERUTUY6CisgICAgICAg
IGh0dHA6Ly9kZXYudzMub3JnLzIwMTEvd2VicnRjL2VkaXRvci93ZWJydGMuaHRtbCNwZWVyLXRv
LXBlZXItZHRtZgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIHdpc2UgdGhpcyBpcyBpbXBsZW1l
bnRlZCB1c2luZyB0aGUgc2FtZSBwYXR0ZXJuIGFzIFJUQ0RhdGFDaGFubmVsOworICAgICAgICB3
aGVyZSBhIFJUQ0RUTUZTZW5kZXJIYW5kbGVyIGlzIGNyZWF0ZWQgYnkgdGhlIFVBIHRocm91Z2gg
YSBuZXcgbWV0aG9kIG9uCisgICAgICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci4KKworICAg
ICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYuaHRtbAor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OlJUQ0RUTUZTZW5kZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6flJUQ0RUTUZTZW5kZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6Y2FuSW5zZXJ0RFRNRik6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEVE1GU2VuZGVyOjp0cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1G
U2VuZGVyOjp0b25lQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6Omlu
c2VydERUTUYpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6ZGlkUGxheVRvbmUp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6aW50ZXJmYWNlTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRFRNRlNlbmRlcjo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RU
TUZTZW5kZXI6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENE
VE1GU2VuZGVyOjpzY2hlZHVsZURpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RFRNRlNlbmRlcjo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFJUQ0RUTUZTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRl
cjo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6aW50ZXJUb25l
R2FwKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZl
bnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RFRNRlRvbmVDaGFuZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZU
b25lQ2hhbmdlRXZlbnQ6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6flJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6dG9uZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50OjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURhdGFDaGFubmVs
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rp
b246OmdldFN0cmVhbUJ5VHJhY2tJZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVj
dGlvbjo6Y3JlYXRlRFRNRlNlbmRlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENQZWVy
Q29ubmVjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGRvbS9FdmVudE5h
bWVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjoK
KyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
VE1GU2VuZGVySGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
UlRDRFRNRlNlbmRlckhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlckhh
bmRsZXI6On5SVENEVE1GU2VuZGVySGFuZGxlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50Ojp+UlRDRFRNRlNlbmRlckhhbmRsZXJD
bGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OlJUQ0RUTUZT
ZW5kZXJIYW5kbGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlckhh
bmRsZXJDaHJvbWl1bTo6flJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6c2V0Q2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OmN1cnJlbnRUb25lQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OmNh
bkluc2VydERUTUYpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJv
bWl1bTo6aW5zZXJ0RFRNRik6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxl
ckNocm9taXVtOjpkaWRQbGF5VG9uZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y2hyb21pdW0vUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2hyb21pdW06OmNyZWF0ZURUTUZTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
KToKKwogMjAxMy0wMS0yOSAgRWxsaW90dCBTcHJlaG4gIDxlc3ByZWhuQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBTdG9yZSBTaGFkb3dSb290VHlwZSBpbnNpZGUgdGhlIGJpdGZpZWxkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9Q
bGF0Zm9ybS5neXBpCmluZGV4IDk3NDlhNWMwNDJiMTM0NDUzYmQ2ZjM2OTQ0OGY1NGI3OTVjMDNk
MmQuLjAwMDIzNzVjZWI0MzU5NjgzNmFlMGZhN2E0MmFmZjVjMjg4Mzk1NmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0
Zm9ybS5neXBpCkBAIC0xMDAsNiArMTAwLDggQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViUHJpdmF0ZU93blB0ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
UHJpdmF0ZVB0ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDQ29uZmln
dXJhdGlvbi5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRFRNRlNlbmRl
ckhhbmRsZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViUlRDSUNFQ2FuZGlkYXRlLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oCmluZGV4IGIxMjM2YzE2
ZTQyYWE5YTQ1ZGY3ZjgyNmFlNTZmYTc1ZDRiYzc4MDIuLjZlY2ViYWZiMTk4ZWM0OWUzODM1MTJi
YjE4NjZhOWUyZmRmYmEyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50LmgKQEAgLTY3LDYgKzY3LDcgQEAg
cHVibGljOgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViTWVkaWFTdHJlYW1D
b21wb25lbnQoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQqKTsKKyAgICBXZWJNZWRpYVN0
cmVhbUNvbXBvbmVudChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25l
bnQ+KTsKICAgICBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYgb3BlcmF0b3I9KFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtQ29tcG9uZW50Kik7CiAgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ29tcG9uZW50PigpIGNvbnN0OwogICAgIG9wZXJhdG9yIFdlYkNvcmU6
Ok1lZGlhU3RyZWFtQ29tcG9uZW50KigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMzZjA3MDM4M2IxNzJkN2M2ZTQ0OTlkN2M5YjEzNzEzYmJjYTA4MDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJSVENE
VE1GU2VuZGVySGFuZGxlcl9oCisjZGVmaW5lIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKKwor
I2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK2NsYXNzIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50OworCitjbGFz
cyBXZWJSVENEVE1GU2VuZGVySGFuZGxlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViUlRD
RFRNRlNlbmRlckhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2Vi
UlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYlN0cmlu
ZyBjdXJyZW50VG9uZUJ1ZmZlcigpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5JbnNlcnRE
VE1GKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpbnNlcnREVE1GKGNvbnN0IFdlYlN0cmluZyYg
dG9uZXMsIGxvbmcgZHVyYXRpb24sIGxvbmcgaW50ZXJUb25lR2FwKSA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
UlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjdkM2E1Y2ZiYmFkMTRj
MzRhNjg0Y2MyNGJlM2ZhOTY3NTM4NWI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5oCkBAIC0w
LDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUlRDRFRNRlNlbmRlckhhbmRs
ZXJDbGllbnRfaAorI2RlZmluZSBXZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudF9oCisKKyNp
bmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJSVENE
VE1GU2VuZGVySGFuZGxlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFBsYXlU
b25lKGNvbnN0IFdlYlN0cmluZyYgdG9uZSkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCAyN2QwZWU2NzAxODNhZTAyZWNhYjVmNDhlMzFj
YTI2ZmU3ODdiMWU4Li5iOTVjZjNlNTJjZWRiYjM0NTAxOGFlODhkMWFmM2YxOWZiOTI1N2VmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTMzLDggKzMzLDEwIEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViTWVkaWFDb25zdHJhaW50czsKK2NsYXNzIFdlYk1lZGlhU3Ry
ZWFtQ29tcG9uZW50OwogY2xhc3MgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwogY2xhc3MgV2Vi
UlRDQ29uZmlndXJhdGlvbjsKK2NsYXNzIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOwogY2xhc3Mg
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOwogY2xhc3MgV2ViUlRDSUNFQ2FuZGlkYXRlOwogY2xh
c3MgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OwpAQCAtNjMsNiArNjUsNyBAQCBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IFJlbW92ZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHdoZW4g
Y2xpZW50cyBoYXZlIGNoYW5nZWQuCiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKGNvbnN0IFdl
YlJUQ1N0YXRzUmVxdWVzdCYpIHsgfQogICAgIHZpcnR1YWwgV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyKiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlh
YmxlKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJSVENEVE1GU2VuZGVySGFuZGxlciog
Y3JlYXRlRFRNRlNlbmRlcihjb25zdCBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYgdHJhY2spIHsg
cmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggY2VjYTRmYzJiZjg2MGMwNzI1MjY5ZGFiMGQyM2NiY2EyMWY2Mjk5Ny4u
OTNhZWM3YzNiMTVjNjdmMDQ1OWY5YWU2ZDIzODEzNzU4M2U1ZjdlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMSw2ICsyMjEsOCBAQCBzZXQoV2ViQ29yZV9JRExfRklMRVMKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwKKyAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaWRsCisgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEV2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5p
ZGwKQEAgLTg2NCw2ICs4NjYsOCBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yTWVkaWFTdHJlYW0uY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVy
LmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IGM4NTYxMTQwMWE4YWM2ZmE4MTkwYjFiZDMzZDlhM2MxYmQxMTVjODEuLjEzYWFmZTI2ZDA2MTY5
OGNmYTQ0OWRjYzg1MjI4NTA1ODFlMDNjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtNjM1LDYgKzYzNSwxMCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUkdCQ29sb3IuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUkdCQ29sb3IuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0RUTUZT
ZW5kZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRFRNRlNlbmRlci5oIFwK
KwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEVE1GVG9uZUNoYW5nZUV2ZW50LmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEYXRhQ2hhbm5lbC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNSVENEYXRhQ2hhbm5lbC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAgXApAQCAtMTI0OCw2ICsxMjUyLDggQEAgZG9tX2Jp
bmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
clVzZXJNZWRpYUVycm9yLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCBcCisJJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaWRsIFwKKwkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGwgXAogCSQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwgXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbCBcCiAJJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vycm9yQ2FsbGJhY2suaWRsIFwKQEAgLTE5
NDYsNiArMTk1MiwxMCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9y
Q2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwIFwKQEAgLTU3
NTEsNiArNTc2MSw4IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGll
bnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDQ29uZmlndXJh
dGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEVE1GU2Vu
ZGVySGFuZGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
VE1GU2VuZGVySGFuZGxlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRN
RlNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZT
ZW5kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkNjMwY2ZjNjhiNTJjNjkwMjZkYTE0NDgwODJkNmY2OTFl
MWE2MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiUlRDRFRNRlNlbmRlci5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlci5o
IgorI2luY2x1ZGUgIlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaCIKKyNpbmNsdWRlICJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGxvbmcgbWluVG9uZUR1cmF0
aW9uID0gNzA7CitzdGF0aWMgY29uc3QgbG9uZyBkZWZhdWx0VG9uZUR1cmF0aW9uID0gMTAwOwor
c3RhdGljIGNvbnN0IGxvbmcgbWF4VG9uZUR1cmF0aW9uID0gNjAwMDsKK3N0YXRpYyBjb25zdCBs
b25nIG1pbkludGVyVG9uZUdhcCA9IDUwOworc3RhdGljIGNvbnN0IGxvbmcgZGVmYXVsdEludGVy
VG9uZUdhcCA9IDUwOworCitQYXNzUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IFJUQ0RUTUZTZW5kZXI6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIqIHBlZXJDb25uZWN0aW9uSGFuZGxlciwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisgICAgT3duUHRyPFJUQ0RUTUZTZW5kZXJIYW5k
bGVyPiBoYW5kbGVyID0gcGVlckNvbm5lY3Rpb25IYW5kbGVyLT5jcmVhdGVEVE1GU2VuZGVyKHRy
YWNrLT5jb21wb25lbnQoKSk7CisgICAgaWYgKCFoYW5kbGVyKSB7CisgICAgICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxS
VENEVE1GU2VuZGVyPiBkdG1mU2VuZGVyID0gYWRvcHRSZWYobmV3IFJUQ0RUTUZTZW5kZXIoY29u
dGV4dCwgdHJhY2ssIGhhbmRsZXIucmVsZWFzZSgpKSk7CisgICAgZHRtZlNlbmRlci0+c3VzcGVu
ZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGR0bWZTZW5kZXIucmVsZWFzZSgpOworfQorCitSVENE
VE1GU2VuZGVyOjpSVENEVE1GU2VuZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2ssIFBhc3NPd25QdHI8UlRDRFRNRlNl
bmRlckhhbmRsZXI+IGhhbmRsZXIpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhp
cykKKyAgICAsIG1fdHJhY2sodHJhY2spCisgICAgLCBtX2R1cmF0aW9uKGRlZmF1bHRUb25lRHVy
YXRpb24pCisgICAgLCBtX2ludGVyVG9uZUdhcChkZWZhdWx0SW50ZXJUb25lR2FwKQorICAgICwg
bV9oYW5kbGVyKGhhbmRsZXIpCisgICAgLCBtX3N0b3BwZWQoZmFsc2UpCisgICAgLCBtX3NjaGVk
dWxlZEV2ZW50VGltZXIodGhpcywgJlJUQ0RUTUZTZW5kZXI6OnNjaGVkdWxlZEV2ZW50VGltZXJG
aXJlZCkKK3sKKyAgICBtX2hhbmRsZXItPnNldENsaWVudCh0aGlzKTsKK30KKworUlRDRFRNRlNl
bmRlcjo6flJUQ0RUTUZTZW5kZXIoKQoreworfQorCitib29sIFJUQ0RUTUZTZW5kZXI6OmNhbklu
c2VydERUTUYoKSBjb25zdAoreworICAgIHJldHVybiBtX2hhbmRsZXItPmNhbkluc2VydERUTUYo
KTsKK30KKworTWVkaWFTdHJlYW1UcmFjayogUlRDRFRNRlNlbmRlcjo6dHJhY2soKSBjb25zdAor
eworICAgIHJldHVybiBtX3RyYWNrLmdldCgpOworfQorCitTdHJpbmcgUlRDRFRNRlNlbmRlcjo6
dG9uZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGFuZGxlci0+Y3VycmVudFRvbmVC
dWZmZXIoKTsKK30KKwordm9pZCBSVENEVE1GU2VuZGVyOjppbnNlcnREVE1GKGNvbnN0IFN0cmlu
ZyYgdG9uZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGluc2VydERUTUYodG9uZXMsIGRl
ZmF1bHRUb25lRHVyYXRpb24sIGRlZmF1bHRJbnRlclRvbmVHYXAsIGVjKTsKK30KKwordm9pZCBS
VENEVE1GU2VuZGVyOjppbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxvbmcgZHVyYXRp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGluc2VydERUTUYodG9uZXMsIGR1cmF0aW9u
LCBkZWZhdWx0SW50ZXJUb25lR2FwLCBlYyk7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlcjo6aW5z
ZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9u
ZUdhcCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFjYW5JbnNlcnREVE1GKCkpIHsK
KyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChkdXJhdGlvbiA+IG1heFRvbmVEdXJhdGlvbiB8fCBkdXJhdGlvbiA8IG1pblRv
bmVEdXJhdGlvbikgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoaW50ZXJUb25lR2FwIDwgbWluSW50ZXJUb25lR2FwKSB7CisgICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChk
dXJhdGlvbiAhPSBtX2R1cmF0aW9uKQorICAgICAgICBtX2R1cmF0aW9uID0gZHVyYXRpb247Cisg
ICAgaWYgKGludGVyVG9uZUdhcCAhPSBtX2ludGVyVG9uZUdhcCkKKyAgICAgICAgbV9pbnRlclRv
bmVHYXAgPSBpbnRlclRvbmVHYXA7CisKKyAgICBpZiAoIW1faGFuZGxlci0+aW5zZXJ0RFRNRih0
b25lcywgbV9kdXJhdGlvbiwgbV9pbnRlclRvbmVHYXApKQorICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlcjo6ZGlkUGxheVRvbmUoY29uc3QgU3RyaW5nJiB0
b25lKQoreworICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChSVENEVE1GVG9uZUNoYW5nZUV2ZW50
OjpjcmVhdGUodG9uZSkpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFJUQ0RUTUZTZW5kZXI6
OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJm
YWNlRm9yUlRDRFRNRlNlbmRlcjsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogUlRDRFRN
RlNlbmRlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEFj
dGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworfQorCit2b2lkIFJUQ0RU
TUZTZW5kZXI6OnN0b3AoKQoreworICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgbV9oYW5kbGVy
LT5zZXRDbGllbnQoMCk7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUlRDRFRNRlNlbmRlcjo6ZXZl
bnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCitF
dmVudFRhcmdldERhdGEqIFJUQ0RUTUZTZW5kZXI6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7
CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKwordm9pZCBSVENEVE1GU2VuZGVy
OjpzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQpCit7CisgICAg
bV9zY2hlZHVsZWRFdmVudHMuYXBwZW5kKGV2ZW50KTsKKworICAgIGlmICghbV9zY2hlZHVsZWRF
dmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2NoZWR1bGVkRXZlbnRUaW1lci5zdGFy
dE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlcjo6c2NoZWR1bGVkRXZlbnRUaW1l
ckZpcmVkKFRpbWVyPFJUQ0RUTUZTZW5kZXI+KikKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IGV2ZW50czsKKyAgICBl
dmVudHMuc3dhcChtX3NjaGVkdWxlZEV2ZW50cyk7CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50
PiA+OjppdGVyYXRvciBpdCA9IGV2ZW50cy5iZWdpbigpOworICAgIGZvciAoOyBpdCAhPSBldmVu
dHMuZW5kKCk7ICsraXQpCisgICAgICAgIGRpc3BhdGNoRXZlbnQoKCppdCkucmVsZWFzZSgpKTsK
KworICAgIGV2ZW50cy5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjc1MTlhODAzNWU3
NjUyYTkzM2ZmNDk1OGIyZDc0ZThjODZlNWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmgKQEAgLTAsMCArMSwxMDEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDRFRNRlNlbmRlcl9oCisjZGVmaW5lIFJUQ0RU
TUZTZW5kZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiUlRDRFRN
RlNlbmRlckhhbmRsZXJDbGllbnQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJl
YW1UcmFjazsKK2NsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKK2NsYXNzIFJUQ0RUTUZT
ZW5kZXJIYW5kbGVyOworCitjbGFzcyBSVENEVE1GU2VuZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8
UlRDRFRNRlNlbmRlcj4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIFJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxSVENEVE1GU2VuZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB+UlRDRFRNRlNlbmRlcigpOworCisgICAgYm9vbCBj
YW5JbnNlcnREVE1GKCkgY29uc3Q7CisgICAgTWVkaWFTdHJlYW1UcmFjayogdHJhY2soKSBjb25z
dDsKKyAgICBTdHJpbmcgdG9uZUJ1ZmZlcigpIGNvbnN0OworICAgIGxvbmcgZHVyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CisgICAgbG9uZyBpbnRlclRvbmVHYXAoKSBjb25z
dCB7IHJldHVybiBtX2ludGVyVG9uZUdhcDsgfQorCisgICAgdm9pZCBpbnNlcnREVE1GKGNvbnN0
IFN0cmluZyYgdG9uZXMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGluc2VydERUTUYoY29u
c3QgU3RyaW5nJiB0b25lcywgbG9uZyBkdXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgaW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGlu
dGVyVG9uZUdhcCwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUih0b25lY2hhbmdlKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSBjb25zdCBPVkVSUklERTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwg
dm9pZCBzdG9wKCkgT1ZFUlJJREU7CisKKyAgICB1c2luZyBSZWZDb3VudGVkPFJUQ0RUTUZTZW5k
ZXI+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxSVENEVE1GU2VuZGVyPjo6ZGVyZWY7CisK
K3ByaXZhdGU6CisgICAgUlRDRFRNRlNlbmRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiwgUGFzc093blB0cjxSVENEVE1GU2VuZGVySGFuZGxl
cj4pOworCisgICAgdm9pZCBzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4p
OworICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKFRpbWVyPFJUQ0RUTUZTZW5kZXI+
Kik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBl
dmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSog
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1f
ZXZlbnRUYXJnZXREYXRhOworCisgICAgLy8gUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUGxheVRvbmUoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisKKyAg
ICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gbV90cmFjazsKKyAgICBsb25nIG1fZHVyYXRpb247
CisgICAgbG9uZyBtX2ludGVyVG9uZUdhcDsKKworICAgIE93blB0cjxSVENEVE1GU2VuZGVySGFu
ZGxlcj4gbV9oYW5kbGVyOworCisgICAgYm9vbCBtX3N0b3BwZWQ7CisKKyAgICBUaW1lcjxSVENE
VE1GU2VuZGVyPiBtX3NjaGVkdWxlZEV2ZW50VGltZXI7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVu
dD4gPiBtX3NjaGVkdWxlZEV2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENEVE1GU2VuZGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRN
RlNlbmRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZT
ZW5kZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMDQyOTIyZTNkODY4Mzc5MDI3Mzg4YTlmMWQ4ZjM2ZTg0
NWQxNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZTZW5kZXIuaWRsCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sK
KyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAg
IEV2ZW50VGFyZ2V0CitdIGludGVyZmFjZSBSVENEVE1GU2VuZGVyIHsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBjYW5JbnNlcnREVE1GOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBN
ZWRpYVN0cmVhbVRyYWNrIHRyYWNrOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
dG9uZUJ1ZmZlcjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBkdXJhdGlvbjsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBpbnRlclRvbmVHYXA7CisKKyAgICB2b2lkIGluc2VydERU
TUYoaW4gRE9NU3RyaW5nIHRvbmVzLCBpbiBbT3B0aW9uYWxdIGxvbmcgZHVyYXRpb24sIGluIFtP
cHRpb25hbF0gbG9uZyBpbnRlclRvbmVHYXApCisgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OworCisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb250b25lY2hhbmdlOworCisgICAgLy8g
RXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0
cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxp
c3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4g
dXNlQ2FwdHVyZSk7CisgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3Rl
bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4g
dXNlQ2FwdHVyZSk7CisgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQor
ICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjY0MTI1MjBlZGVmODQ3OGY1MDc4ZTgwZWFkMDUxNzZhNWZjOGI3YzYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENEVE1GVG9uZUNoYW5nZUV2ZW50Lmgi
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8UlRDRFRNRlRvbmVDaGFuZ2VFdmVu
dD4gUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQpOworfQorCitQYXNzUmVmUHRyPFJUQ0RUTUZU
b25lQ2hhbmdlRXZlbnQ+IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIHRvbmUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENEVE1GVG9uZUNoYW5nZUV2
ZW50KHRvbmUpKTsKK30KKworUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6UlRDRFRNRlRvbmVDaGFu
Z2VFdmVudCgpCit7Cit9CisKK1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OlJUQ0RUTUZUb25lQ2hh
bmdlRXZlbnQoY29uc3QgU3RyaW5nJiB0b25lKQorICAgIDogRXZlbnQoZXZlbnROYW1lcygpLnRv
bmVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKQorICAgICwgbV90b25lKHRvbmUpCit7Cit9CisK
K1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6On5SVENEVE1GVG9uZUNoYW5nZUV2ZW50KCkKK3sKK30K
KworY29uc3QgU3RyaW5nJiBSVENEVE1GVG9uZUNoYW5nZUV2ZW50Ojp0b25lKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV90b25lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFJUQ0RUTUZUb25l
Q2hhbmdlRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5h
bWVzKCkuaW50ZXJmYWNlRm9yUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5n
ZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25l
Q2hhbmdlRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjEzZmEzZDUxMTM0MzgwYWI2NWMzZGNiZGYwNGM5
Y2Y5MGY4NGZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBSVENEVE1GVG9uZUNoYW5nZUV2ZW50X2gKKyNkZWZpbmUgUlRDRFRN
RlRvbmVDaGFuZ2VFdmVudF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiRXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENEVE1GVG9uZUNoYW5nZUV2ZW50IDogcHVibGljIEV2
ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENEVE1GVG9uZUNoYW5nZUV2ZW50KCk7CisK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEVE1GVG9uZUNoYW5nZUV2ZW50PiBjcmVhdGUoKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEVE1GVG9uZUNoYW5nZUV2ZW50PiBjcmVhdGUoY29u
c3QgU3RyaW5nJiB0b25lKTsKKworICAgIGNvbnN0IFN0cmluZyYgdG9uZSgpIGNvbnN0OworCisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdDsKKwor
cHJpdmF0ZToKKyAgICBSVENEVE1GVG9uZUNoYW5nZUV2ZW50KCk7CisgICAgUlRDRFRNRlRvbmVD
aGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIHRvbmUpOworCisgICAgU3RyaW5nIG1fdG9uZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCisKKyNlbmRpZiAvLyBSVENEVE1GVG9uZUNoYW5nZUV2ZW50X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhYTMwOWI5ZGVmZDFlMThhYzAzNjE2ZTNhMjRhNGYwNTE0
YWNhNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaWRsCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCitdIGludGVyZmFjZSBSVENE
VE1GVG9uZUNoYW5nZUV2ZW50IDogRXZlbnQgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgdG9uZTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IDlmMDA3OTE4NTU5MWY2YzczMDg0
ZDA3YmFjODRlNmY2Mjc3YjgzYjAuLjY1MzI3YzQxNTgzZjc4OGVmNzEwZmMzMzZmYjg4NmFiNDI1
MTA2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTWVk
aWFDb25zdHJhaW50c0ltcGwuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUV2ZW50LmgiCiAjaW5j
bHVkZSAiUlRDQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXIuaCIKICNp
bmNsdWRlICJSVENEYXRhQ2hhbm5lbC5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRXZlbnQu
aCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKQEAgLTQ1MCw2ICs0NTEsNDEg
QEAgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURh
dGFDaGFubmVsKFN0cmluZyBsYWJlbCwgY28KICAgICByZXR1cm4gY2hhbm5lbC5yZWxlYXNlKCk7
CiB9CiAKK01lZGlhU3RyZWFtKiBSVENQZWVyQ29ubmVjdGlvbjo6Z2V0U3RyZWFtQnlUcmFja0lk
KGNvbnN0IFN0cmluZyYgdHJhY2tJZCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8
IG1fbG9jYWxTdHJlYW1zLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIE1lZGlhU3RyZWFtKiBz
dHJlYW0gPSAgbV9sb2NhbFN0cmVhbXMtPml0ZW0oaSk7CisgICAgICAgIGlmIChzdHJlYW0tPmdl
dFRyYWNrQnlJZCh0cmFja0lkKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJlYW07CisgICAgfQor
ICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IFJUQ1BlZXJDb25u
ZWN0aW9uOjpjcmVhdGVEVE1GU2VuZGVyKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJw
VHJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX3NpZ25hbGluZ1N0YXRlID09
IFNpZ25hbGluZ1N0YXRlQ2xvc2VkKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICghcHJwVHJhY2spIHsKKyAgICAg
ICAgZWMgPSBUeXBlRXJyb3I7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9IHBycFRyYWNrOworCisgICAgaWYgKCFnZXRTdHJl
YW1CeVRyYWNrSWQodHJhY2stPmlkKCkpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IGR0bWZT
ZW5kZXIgPSBSVENEVE1GU2VuZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBt
X3BlZXJIYW5kbGVyLmdldCgpLCB0cmFjay5yZWxlYXNlKCksIGVjKTsKKyAgICBpZiAoZWMpCisg
ICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBkdG1mU2VuZGVyLnJlbGVhc2UoKTsKK30KKwog
dm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
aWYgKG1fc2lnbmFsaW5nU3RhdGUgPT0gU2lnbmFsaW5nU3RhdGVDbG9zZWQpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
aAppbmRleCAyNGUxZDczMTdmYTc3ZDdhZDM2YTE5NGFiNzdiZmE4OWE1NWFlMjAzLi4xYjQ1NWIx
MDhjYjQwMTFhMzc0YTI1ZmQwMjRiM2YxZDQ5MGMxNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC01MCw2
ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiBj
bGFzcyBNZWRpYVN0cmVhbVRyYWNrOwogY2xhc3MgUlRDQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJU
Q0RUTUZTZW5kZXI7CiBjbGFzcyBSVENEYXRhQ2hhbm5lbDsKIGNsYXNzIFJUQ0Vycm9yQ2FsbGJh
Y2s7CiBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb247CkBAIC04NiwxNyArODcsMTcgQEAgcHVi
bGljOgogICAgIFN0cmluZyBpY2VDb25uZWN0aW9uU3RhdGUoKSBjb25zdDsKIAogICAgIE1lZGlh
U3RyZWFtTGlzdCogbG9jYWxTdHJlYW1zKCkgY29uc3Q7Ci0KICAgICBNZWRpYVN0cmVhbUxpc3Qq
IHJlbW90ZVN0cmVhbXMoKSBjb25zdDsKIAogICAgIHZvaWQgYWRkU3RyZWFtKGNvbnN0IFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW0+LCBjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYUNvbnN0cmFpbnRzLCBF
eGNlcHRpb25Db2RlJik7Ci0KICAgICB2b2lkIHJlbW92ZVN0cmVhbShNZWRpYVN0cmVhbSosIEV4
Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgZ2V0U3RhdHMoUGFzc1JlZlB0cjxSVENTdGF0c0Nh
bGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gc2Vs
ZWN0b3IpOwogCiAgICAgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlRGF0YUNoYW5u
ZWwoU3RyaW5nIGxhYmVsLCBjb25zdCBEaWN0aW9uYXJ5JiBkYXRhQ2hhbm5lbERpY3QsIEV4Y2Vw
dGlvbkNvZGUmKTsKIAorICAgIFBhc3NSZWZQdHI8UlRDRFRNRlNlbmRlcj4gY3JlYXRlRFRNRlNl
bmRlcihQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+LCBFeGNlcHRpb25Db2RlJik7CisKICAg
ICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIobmVnb3RpYXRpb25uZWVkZWQpOwpAQCAtMTM0LDYgKzEzNSw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4gcGFyc2VDb25maWd1
cmF0aW9uKGNvbnN0IERpY3Rpb25hcnkmIGNvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAg
dm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoVGltZXI8UlRDUGVlckNvbm5lY3Rpb24+Kik7
CisgICAgTWVkaWFTdHJlYW0qIGdldFN0cmVhbUJ5VHJhY2tJZChjb25zdCBTdHJpbmcmIHRyYWNr
SWQpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCBF
dmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAppbmRleCA5
Y2YwYjY0NjFjYTYwNTllOWY1NmU4NzQ4ODliOTBmNjQ4ZjBhNjhiLi5lZDUxNGZhOTUyNGU5MTBk
OGI1ODE5M2Q2YjQyODExNGFlNTJiNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbApAQCAtNzksNiArNzks
OSBAQAogICAgIFJUQ0RhdGFDaGFubmVsIGNyZWF0ZURhdGFDaGFubmVsKGluIFtUcmVhdE51bGxB
cz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBsYWJl
bCwgaW4gW09wdGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMpCiAgICAgICAgICByYWlzZXMoRE9N
RXhjZXB0aW9uKTsKIAorICAgIFJUQ0RUTUZTZW5kZXIgY3JlYXRlRFRNRlNlbmRlcihpbiBNZWRp
YVN0cmVhbVRyYWNrIHRyYWNrKQorICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKICAg
ICB2b2lkIGNsb3NlKCkKICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCA3NGE4MzNkNzZjY2U2Mjk4N2UyNWIxZTQ4MmI3ZGRjZWZjZWM5Njk4Li42YjZj
ZDM2NDVkMjZkNjUxNjExOTY0NWU4NzY4ZmNkNzE0ZjUxNDJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC03Miw2ICs3Miw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvci5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmlkbCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmlkbCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwn
LAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5pZGwn
LApAQCAtODE5LDEwICs4MjEsMTQgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFt
L05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFz
dHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oJywKICAgICAgICAgICAgICdN
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oJywK
LSAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAnLAorICAgICAg
ICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oJywKKyAgICAgICAgICAg
ICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwJywKKyAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAnLAotICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5oJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgnLAogICAgICAg
ICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAnLAorICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5oJywKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vycm9yQ2FsbGJhY2suaCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwJywKICAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oJywKQEAgLTQzNjEs
NiArNDM2Nyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Tb3VyY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVNvdXJjZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25m
aWd1cmF0aW9uLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZT
ZW5kZXJIYW5kbGVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAnLApAQCAtNDM3
NCw2ICs0MzgyLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENWb2lk
UmVxdWVzdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9N
ZWRpYVN0cmVhbUNlbnRlckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5oJywKKyAgICAgICAg
ICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxlckNo
cm9taXVtLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0v
UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RhdGFDaGFubmVs
SGFuZGxlckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL2No
cm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAppbmRleCAzZjBlN2EyN2I0Zjg5MmQyNWQ0ZDU3MTJlZjk1NDhhMmFiMzE4MTg2
Li4yMmE3YjMyYmFiNzliYzUyNjAwNzY0MWEzYjkxY2M0MGM1MWI0YzZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudE5hbWVzLmgKQEAgLTIzNCw2ICsyMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
bWFjcm8obmVnb3RpYXRpb25uZWVkZWQpIFwKICAgICBtYWNybyhkYXRhY2hhbm5lbCkgXAogICAg
IG1hY3JvKGdhdGhlcmluZ2NoYW5nZSkgXAorICAgIG1hY3JvKHRvbmVjaGFuZ2UpIFwKICAgICBc
CiAgICAgbWFjcm8oc2hvdykgXAogICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KaW5kZXgg
NTExYmRmNDFjZTY5NGQyNTRhNGI2ZjQ3ZDZiYmQ1ZWViMWJiNDQ5Mi4uMjhlYzg0NGFmZDE3ZDBm
ZmMyM2RjMTY1ZWRhYzVmMDNmZGRjODRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KQEAg
LTM0LDYgKzM0LDcgQEAgTWVkaWFTdHJlYW1FdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0K
IE1lZGlhU3RyZWFtVHJhY2tFdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFJUQ0ljZUNh
bmRpZGF0ZUV2ZW50IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogUlRDRGF0YUNoYW5uZWxFdmVu
dCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQgY29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNCiBTcGVlY2hJbnB1dEV2ZW50IGNvbmRpdGlvbmFsPUlOUFVUX1NQ
RUVDSAogU3BlZWNoUmVjb2duaXRpb25FcnJvciBjb25kaXRpb25hbD1TQ1JJUFRFRF9TUEVFQ0gK
IFNwZWVjaFJlY29nbml0aW9uRXZlbnQgY29uZGl0aW9uYWw9U0NSSVBURURfU1BFRUNICmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCAyNDM2ODVhNzg5MTJkYjQ3
ODY5NDE1NDgxYzc4ODVhOGIyNjA3YmY2Li44MjU2NjdiM2NhZDdhMzUxMWEwZGE0ZTA5ZWQ2OWU5
MjJlNzExOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAg
LTI0LDYgKzI0LDcgQEAgTm9kZQogTm90aWZpY2F0aW9uIGNvbmRpdGlvbmFsPU5PVElGSUNBVElP
TlN8TEVHQUNZX05PVElGSUNBVElPTlMKIFBlcmZvcm1hbmNlIGNvbmRpdGlvbmFsPVdFQl9USU1J
TkcKIFJUQ0RhdGFDaGFubmVsIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorUlRDRFRNRlNlbmRl
ciBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFJUQ1BlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFs
PU1FRElBX1NUUkVBTQogU2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBT
aGFyZWRXb3JrZXJDb250ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFt
Q29tcG9uZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQuY3BwCmluZGV4IDY4OGM4MzI0NTY5YmE1ZDEyMjM5NTk3
ZTdmYjk4ZGVjM2IyYWNjNjMuLmYzNGFmNDA1MmIyNjFmM2YxNzFmMzA2OWZlMTAzN2M0NmU0YzM5
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuY3BwCkBAIC00OCw2ICs0
OCwxMSBAQCBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQo
V2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQqCiB7CiB9CiAKK1dlYk1lZGlhU3RyZWFtQ29t
cG9uZW50OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
TWVkaWFTdHJlYW1Db21wb25lbnQ+IG1lZGlhU3RyZWFtQ29tcG9uZW50KQorICAgIDogbV9wcml2
YXRlKG1lZGlhU3RyZWFtQ29tcG9uZW50KQoreworfQorCiBXZWJNZWRpYVN0cmVhbUNvbXBvbmVu
dCYgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQ6Om9wZXJhdG9yPShXZWJDb3JlOjpNZWRpYVN0cmVh
bUNvbXBvbmVudCogbWVkaWFTdHJlYW1Db21wb25lbnQpCiB7CiAgICAgbV9wcml2YXRlID0gbWVk
aWFTdHJlYW1Db21wb25lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVySGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGFlZTNl
Mjc3YWU5MTU1ODUwYWI5NTFiOTJmMjMyZDQ0ZWZiZTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXIuaApA
QCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RUTUZTZW5kZXJIYW5k
bGVyX2gKKyNkZWZpbmUgUlRDRFRNRlNlbmRlckhhbmRsZXJfaAorCisjaWYgRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50OworCitjbGFzcyBS
VENEVE1GU2VuZGVySGFuZGxlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UlRDRFRNRlNlbmRl
ckhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoUlRDRFRNRlNlbmRl
ckhhbmRsZXJDbGllbnQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VG9uZUJ1
ZmZlcigpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5JbnNlcnREVE1GKCkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxvbmcgZHVyYXRp
b24sIGxvbmcgaW50ZXJUb25lR2FwKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDRFRNRlNl
bmRlckhhbmRsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ODZiZDlkYjMyMzZkZDExNWRmNmYwMGIzNTcyOTc0NTNiOTdlMzcwOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5k
bGVyQ2xpZW50LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENE
VE1GU2VuZGVySGFuZGxlckNsaWVudF9oCisjZGVmaW5lIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xp
ZW50X2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgflJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUGxheVRvbmUoY29uc3QgU3RyaW5nJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKaW5kZXgg
ZDhmOTZkMzBmMzFlNmQxOTU5N2UzOGY1MWZiOWI5ODQ3MDU3MjdlYi4uZTE5ZTRiMjM5ZTcxMjgw
MjY2MjI3N2IzZWM5Yzk3NzI4MTI4MzUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgK
QEAgLTQwLDcgKzQwLDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFDb25z
dHJhaW50czsKK2NsYXNzIE1lZGlhU3RyZWFtQ29tcG9uZW50OwogY2xhc3MgUlRDQ29uZmlndXJh
dGlvbjsKK2NsYXNzIFJUQ0RUTUZTZW5kZXJIYW5kbGVyOwogY2xhc3MgUlRDRGF0YUNoYW5uZWxI
YW5kbGVyOwogY2xhc3MgUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjsKIGNsYXNzIFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNsaWVudDsKQEAgLTY3LDEwICs2OSw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgYWRkU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiwg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGdldFN0YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwotCi0gICAgLy8gUlRDRGF0YUNoYW5uZWwKICAgICB2
aXJ0dWFsIFBhc3NPd25QdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGVEYXRhQ2hhbm5l
bChjb25zdCBTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlhYmxlKSA9IDA7CisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPFJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBjcmVhdGVEVE1GU2VuZGVyKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9
IDA7CiAKIHByb3RlY3RlZDoKICAgICBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoKSB7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JU
Q0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOTNkODBkYjdiNTAwYTBkMTZlOTYzZjU4NzNhMDAyYWEwYzM4OWJjZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVt
L1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
CisKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtLmgiCisKKyNpbmNsdWRl
ICJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENE
VE1GU2VuZGVySGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxS
VENEVE1GU2VuZGVySGFuZGxlcj4gUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6Y3JlYXRl
KFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKiB3ZWJIYW5kbGVyKQoreworICAgIHJldHVybiBhZG9w
dFB0cihuZXcgUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bSh3ZWJIYW5kbGVyKSk7Cit9CisK
K1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21p
dW0oV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIHdlYkhhbmRsZXIpCisgICAgOiBtX3dlYkhhbmRs
ZXIoYWRvcHRQdHIod2ViSGFuZGxlcikpCisgICAgLCBtX2NsaWVudCgwKQoreworfQorCitSVENE
VE1GU2VuZGVySGFuZGxlckNocm9taXVtOjp+UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bSgp
Cit7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6c2V0Q2xpZW50KFJU
Q0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBjbGll
bnQ7CisgICAgbV93ZWJIYW5kbGVyLT5zZXRDbGllbnQobV9jbGllbnQgPyB0aGlzIDogMCk7Cit9
CisKK1N0cmluZyBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpjdXJyZW50VG9uZUJ1ZmZl
cigpCit7CisgICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+Y3VycmVudFRvbmVCdWZmZXIoKTsKK30K
KworYm9vbCBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpjYW5JbnNlcnREVE1GKCkKK3sK
KyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5jYW5JbnNlcnREVE1GKCk7Cit9CisKK2Jvb2wgUlRD
RFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6aW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVz
LCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkKK3sKKyAgICByZXR1cm4gbV93ZWJI
YW5kbGVyLT5pbnNlcnREVE1GKHRvbmVzLCBkdXJhdGlvbiwgaW50ZXJUb25lR2FwKTsKK30KKwor
dm9pZCBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpkaWRQbGF5VG9uZShjb25zdCBXZWJT
dHJpbmcmIHRvbmUpIGNvbnN0Cit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVu
dC0+ZGlkUGxheVRvbmUodG9uZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVt
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEVE1G
U2VuZGVySGFuZGxlckNocm9taXVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI0NzM3NzNlNzlhMGMzZDRmY2Uy
OTk3M2RmMjk1ODY4NTRmMjMzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0u
aApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2hyb21pdW1faAorI2RlZmluZSBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtX2gK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFu
ZGxlci5oIgorI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVk
ZSA8cHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQ7CisKK2NsYXNzIFJUQ0RUTUZTZW5kZXJIYW5k
bGVyQ2hyb21pdW0gOiBwdWJsaWMgUlRDRFRNRlNlbmRlckhhbmRsZXIsIHB1YmxpYyBXZWJLaXQ6
OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c093blB0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4gY3JlYXRlKFdlYktpdDo6V2ViUlRDRFRNRlNl
bmRlckhhbmRsZXIqKTsKKyAgICB2aXJ0dWFsIH5SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVt
KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xp
ZW50KikgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VG9uZUJ1ZmZlcigp
IE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIGNhbkluc2VydERUTUYoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgaW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1
cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkgT1ZFUlJJREU7CisKKyAgICAvLyBXZWJLaXQ6Oldl
YlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwg
dm9pZCBkaWRQbGF5VG9uZShjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgdG9uZSkgY29uc3QgT1ZF
UlJJREU7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJv
bWl1bShXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKik7CisKKyAgICBPd25QdHI8V2Vi
S2l0OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlcj4gbV93ZWJIYW5kbGVyOworICAgIFJUQ0RUTUZT
ZW5kZXJIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENEVE1G
U2VuZGVySGFuZGxlckNocm9taXVtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcAppbmRleCBiODljZDQ2MGM3NDViZGViYTE5
ZWUyNDg5NDJhNGZhZmYwZDk1Y2U2Li4yMDQ3MTY2MzU1NzIzZTcyN2JhYTY2Y2NmNzI2MmFmNmNl
ZWFlNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
aHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2hyb21pdW0uY3BwCkBAIC0zNSw3ICszNSwxMCBAQAogI2luY2x1ZGUgIlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgiCiAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRz
LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Db21wb25lbnQuaCIKICNpbmNsdWRlICJSVENDb25m
aWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUlRDRFRNRlNlbmRlckhhbmRsZXIuaCIKKyNpbmNsdWRl
ICJSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGll
bnQuaCIKICNpbmNsdWRlICJSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgiCkBAIC00Niw4ICs0
OSwxMCBAQAogI2luY2x1ZGUgIlJUQ1ZvaWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8cHVibGljL1Bs
YXRmb3JtLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaD4KKyNpbmNs
dWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0NvbmZp
Z3VyYXRpb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlJUQ0lDRUNhbmRpZGF0ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTZXNz
aW9uRGVzY3JpcHRpb24uaD4KQEAgLTE1OCw2ICsxNjMsMTUgQEAgUGFzc093blB0cjxSVENEYXRh
Q2hhbm5lbEhhbmRsZXI+IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpjcmVhdGVE
YXRhQ2gKICAgICByZXR1cm4gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmNyZWF0ZSh3
ZWJIYW5kbGVyKTsKIH0KIAorUGFzc093blB0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4gUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmNyZWF0ZURUTUZTZW5kZXIoUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbUNvbXBvbmVudD4gdHJhY2spCit7CisgICAgV2ViS2l0OjpXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlciogd2ViSGFuZGxlciA9IG1fd2ViSGFuZGxlci0+Y3JlYXRlRFRNRlNlbmRlcih0
cmFjayk7CisgICAgaWYgKCF3ZWJIYW5kbGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpjcmVhdGUod2ViSGFuZGxl
cik7Cit9CisKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OnN0b3AoKQog
ewogICAgIG1fd2ViSGFuZGxlci0+c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgKaW5kZXggZjc0N2E3YTk3MjJmZWE4YWY4
ZWQzZGU2OTZiOGY5ZmJlMzFlOGM3Yi4uOTFhZGFhZTBkZGQ4YjJlOTQwYzc3MjMzM2YzZjA1MDNl
NGZhMmYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDaHJvbWl1bS5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0
PikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxl
cj4gY3JlYXRlRGF0YUNoYW5uZWwoY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBj
cmVhdGVEVE1GU2VuZGVyKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+KSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViS2l0OjpX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjZkNGMwNjMzNjU0
MzJjNzc1YzNkNDM2YzliY2YxOTU3ZTY0OGE0MS4uNDFlOTNiOGZjZmEwYWZjNmI3ZTQ0YzhmOGUw
ZDUwOGU2ZDFhMTgyYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAxLTI5ICBUb21teSBXaWRlbmZseWNodCAg
PHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogSW1wbGVtZW50
IERUTUYgc3VwcG9ydCBpbiBSVENQZWVyQ29ubmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIE1vY2sgZnVuY3Rpb25hbGl0eSBmb3Ig
dGhlIERUTUZTZW5kZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1G
U2VuZGVySGFuZGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoRFRNRlNlbmRlclRvbmVUYXNrKToK
KyAgICAgICAgKERUTUZTZW5kZXJUb25lVGFzazo6RFRNRlNlbmRlclRvbmVUYXNrKToKKyAgICAg
ICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyKToKKyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6c2V0Q2xpZW50KToK
KyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6Y3VycmVudFRvbmVCdWZmZXIp
OgorICAgICAgICAoTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpjYW5JbnNlcnREVE1GKToK
KyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6aW5zZXJ0RFRNRik6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
Lmg6IEFkZGVkLgorICAgICAgICAoTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKToKKyAgICAg
ICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6dGFza0xpc3QpOgorICAgICAgICAoTW9j
a1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpjbGVhclRvbmVCdWZmZXIpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3Bw
OgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlRFRNRlNl
bmRlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlcik6CisKIDIwMTMtMDEtMjggIFRpbW90aHkgTG9oICA8dGltbG9oQGNocm9taXVtLmNvbT4K
IAogICAgICAgICBSZWZhY3RvciBDaGFuZ2VMb2cgYW5kIFByZXBhcmVDaGFuZ2VMb2cgdG8gdXNl
IEZpbGVTeXN0ZW0gb2JqZWN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5
cGkKaW5kZXggNmVjMjIyZjBiYWQ0ZTY5ODQ5ODM5MjUyZDVhYjYwMDVjYjI3ZTA3NC4uOGZmZmVk
OGU5YzVkZTk1OGQ3MWU1ZDU4NmNmYWE2MGNlZjIyZDJiYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC0yMCw2ICsyMCw4IEBACiAgICAgICAgICAgICAnY2hy
b21pdW0vTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAnLAogICAgICAgICAgICAgJ2No
cm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCcsCisgICAgICAgICAgICAn
Y2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmNwcCcsCisgICAgICAgICAgICAn
Y2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwJywKICAgICAgICAgICAgICdj
aHJvbWl1bS9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgnLAogICAgICAgICAgICAgJ2No
cm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuY3BwJywKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5j
cHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNlbmRlckhh
bmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5NmQ2NjVmMzkwZmI1YTM1MGQ2M2NmN2IxYmFjNTBkYWVh
MGEyNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9N
b2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgiCisKKyNpbmNsdWRlICJUYXNr
LmgiCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFt
U291cmNlLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50
Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBuYW1lc3BhY2UgV2ViVGVzdFJ1
bm5lcjsKKworY2xhc3MgRFRNRlNlbmRlclRvbmVUYXNrIDogcHVibGljIFdlYk1ldGhvZFRhc2s8
TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyPiB7CitwdWJsaWM6CisgICAgRFRNRlNlbmRlclRv
bmVUYXNrKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlciogb2JqZWN0LCBXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlckNsaWVudCogY2xpZW50KQorICAgICAgICA6IFdlYk1ldGhvZFRhc2s8TW9ja1dl
YlJUQ0RUTUZTZW5kZXJIYW5kbGVyPihvYmplY3QpCisgICAgICAgICwgbV9jbGllbnQoY2xpZW50
KQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcnVuSWZWYWxpZCgpIE9WRVJSSURF
CisgICAgeworICAgICAgICBXZWJTdHJpbmcgdG9uZXMgPSBtX29iamVjdC0+Y3VycmVudFRvbmVC
dWZmZXIoKTsKKyAgICAgICAgbV9vYmplY3QtPmNsZWFyVG9uZUJ1ZmZlcigpOworICAgICAgICBt
X2NsaWVudC0+ZGlkUGxheVRvbmUodG9uZXMpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBXZWJS
VENEVE1GU2VuZGVySGFuZGxlckNsaWVudCogbV9jbGllbnQ7Cit9OworCisvLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KKworTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpNb2NrV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXIoY29uc3QgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQmIHRyYWNrKQorICAgIDog
bV9jbGllbnQoMCkKKyAgICAsIG1fdHJhY2sodHJhY2spCit7Cit9CisKK3ZvaWQgTW9ja1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyOjpzZXRDbGllbnQoV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGll
bnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKK30KKworV2ViU3RyaW5nIE1v
Y2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6Y3VycmVudFRvbmVCdWZmZXIoKQoreworICAgIHJl
dHVybiBtX3RvbmVCdWZmZXI7Cit9CisKK2Jvb2wgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
OjpjYW5JbnNlcnREVE1GKCkKK3sKKyAgICBhc3NlcnQobV9jbGllbnQgJiYgIW1fdHJhY2suaXNO
dWxsKCkpOworICAgIHJldHVybiBtX3RyYWNrLnNvdXJjZSgpLnR5cGUoKSA9PSBXZWJNZWRpYVN0
cmVhbVNvdXJjZTo6VHlwZUF1ZGlvICYmIG1fdHJhY2suaXNFbmFibGVkKCkgJiYgbV90cmFjay5z
b3VyY2UoKS5yZWFkeVN0YXRlKCkgPT0gV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVM
aXZlOworfQorCitib29sIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6aW5zZXJ0RFRNRihj
b25zdCBXZWJTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkK
K3sKKyAgICBhc3NlcnQobV9jbGllbnQpOworICAgIGlmICghY2FuSW5zZXJ0RFRNRigpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3RvbmVCdWZmZXIgPSB0b25lczsKKyAgICBwb3N0
VGFzayhuZXcgRFRNRlNlbmRlclRvbmVUYXNrKHRoaXMsIG1fY2xpZW50KSk7CisgICAgcG9zdFRh
c2sobmV3IERUTUZTZW5kZXJUb25lVGFzayh0aGlzLCBtX2NsaWVudCkpOworICAgIHJldHVybiB0
cnVlOworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjFiYWRiMDljMDM5NWM1NDhkNTQ0YmZhZTk0ZjlmYzM2OTM2ODQy
OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tX
ZWJSVENEVE1GU2VuZGVySGFuZGxlci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKKyNkZWZpbmUgTW9ja1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyX2gKKworI2luY2x1ZGUgIldlYlRhc2suaCIKKyNpbmNsdWRlIDxw
dWJsaWMvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRD
RFRNRlNlbmRlckhhbmRsZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisKK2Ns
YXNzIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlciA6IHB1YmxpYyBXZWJLaXQ6OldlYlJUQ0RU
TUZTZW5kZXJIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRs
ZXIoY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYpOworCisgICAgdmlydHVh
bCB2b2lkIHNldENsaWVudChXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50Kikg
T1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5nIGN1cnJlbnRUb25lQnVm
ZmVyKCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSW5zZXJ0RFRNRigpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBpbnNlcnREVE1GKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5n
JiB0b25lcywgbG9uZyBkdXJhdGlvbiwgbG9uZyBpbnRlclRvbmVHYXApIE9WRVJSSURFOworCisg
ICAgLy8gV2ViVGFzayByZWxhdGVkIG1ldGhvZHMKKyAgICBXZWJUZXN0UnVubmVyOjpXZWJUYXNr
TGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQorICAgIHZvaWQgY2xlYXJU
b25lQnVmZmVyKCkgeyBtX3RvbmVCdWZmZXIucmVzZXQoKTsgfQorCitwcml2YXRlOgorICAgIE1v
Y2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcigpOworCisgICAgV2ViS2l0OjpXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlckNsaWVudCogbV9jbGllbnQ7CisgICAgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNv
bXBvbmVudCBtX3RyYWNrOworICAgIFdlYktpdDo6V2ViU3RyaW5nIG1fdG9uZUJ1ZmZlcjsKKyAg
ICBXZWJUZXN0UnVubmVyOjpXZWJUYXNrTGlzdCBtX3Rhc2tMaXN0OworfTsKKworI2VuZGlmIC8v
IE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuY3BwCmluZGV4IGFiYjg2OTA4NjlkNDVjZjkyOGQ4YmI4ZmQ3NzU5ZTVhYWM2NGFkMWIuLjAy
NTlmZmVhYzVmZDk5N2U0YmUxNDM5NTBlNjE4NWM0NDEwOTgwMTggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIgogCiAjaW5jbHVkZSAiTW9ja0NvbnN0cmFpbnRzLmgi
CisjaW5jbHVkZSAiTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgiCiAjaW5jbHVkZSAiTW9j
a1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oIgogI2luY2x1ZGUgIlRhc2suaCIKICNpbmNsdWRl
IDxwdWJsaWMvV2ViTWVkaWFDb25zdHJhaW50cy5oPgpAQCAtMjk0LDYgKzI5NSwxMSBAQCBXZWJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIqIE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNy
ZWF0ZURhdGFDaGFubmVsKGNvbgogICAgIHJldHVybiBuZXcgTW9ja1dlYlJUQ0RhdGFDaGFubmVs
SGFuZGxlcihsYWJlbCwgcmVsaWFibGUpOwogfQogCitXZWJSVENEVE1GU2VuZGVySGFuZGxlciog
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlRFRNRlNlbmRlcihjb25zdCBX
ZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYgdHJhY2spCit7CisgICAgcmV0dXJuIG5ldyBNb2NrV2Vi
UlRDRFRNRlNlbmRlckhhbmRsZXIodHJhY2spOworfQorCiB2b2lkIE1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXI6OnN0b3AoKQogewogICAgIG1fc3RvcHBlZCA9IHRydWU7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyLmgKaW5kZXggOWQwZWQ3OTZkMWUzOTNiNjUxNmFlNGIzNDA4NDZj
YTA4MTE2MjQ5MC4uYmI5NjQxODc2MjA2MDcyOWVjODg1NjFiNGM5MDMwNDlkNTYxMTkxMyAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tX
ZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVN0cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvciYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhjb25zdCBX
ZWJLaXQ6OldlYlJUQ1N0YXRzUmVxdWVzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViS2l0
OjpXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIqIGNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKiBjcmVhdGVEVE1GU2VuZGVyKGNvbnN0
IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQmIHRyYWNrKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViVGFzayByZWxhdGVkIG1l
dGhvZHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBjOGUzYzkzOGZmODBjY2FhYTE2NThhN2NlZDdiMDliMjNhYTEwZDc1Li4z
MjJmYTA1MGIwMjdiMTc2NWQwMGFkMGRjNWI3NDk2NDQ0NWZmY2RmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTMtMDEtMjkgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+
CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBJbXBsZW1lbnQgRFRNRiBzdXBwb3J0IGluIFJU
Q1BlZXJDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDY3ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24tZHRtZi5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0yOSAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlz
aGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIE1hcmtpbmcgaWNvbi0wY29sb3Jz
Lmh0bWwgYXMgY3Jhc2hpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xM2M1MGNlMzA5NzZiZGY4YjBiZTMzN2Q0ZGM4MTdlZTRlNmY5NmUyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1k
dG1mLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACitUZXN0cyBSVENEVE1GU2VuZGVyLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0
VXNlck1lZGlhKHthdWRpbzp0cnVlfSwgZ290U3RyZWFtLCBlcnJvcik7IGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgorUEFTUyBzdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgg
aXMgMAorUEFTUyBwYyBpcyBjb25uZWN0ZWQKK1BBU1MgZHRtZnNlbmRlciA9IHBjLmNyZWF0ZURU
TUZTZW5kZXIodHJhY2spOyB0aHJldyBleGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00g
RXhjZXB0aW9uIDEyLgorUEFTUyBkdG1mc2VuZGVyID0gcGMuY3JlYXRlRFRNRlNlbmRlcih0cmFj
ayk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBkdG1mc2VuZGVyLmNhbkluc2VydERU
TUYgaXMgdHJ1ZQorUEFTUyBkdG1mc2VuZGVyLnRvbmVCdWZmZXIgaXMgIjEiCitQQVNTIG9udG9u
ZWNoYW5nZSB3YXMgY2FsbGVkLgorUEFTUyBldmVudC50b25lIGlzICIxIgorUEFTUyBvbnRvbmVj
aGFuZ2Ugd2FzIGNhbGxlZC4KK1BBU1MgZXZlbnQudG9uZSBpcyAiIgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTdmODk0YTNiNGU5Zjg3ZGU5ZTVkNjZmYjU0MGRhOTAyNWM3ZDAzNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
ZHRtZi5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBSVENEVE1GU2VuZGVyLiIpOworCit2YXIgcGMgPSBudWxs
OwordmFyIHN0cmVhbSA9IG51bGw7Cit2YXIgZHRtZnNlbmRlciA9IG51bGw7CisKK2Z1bmN0aW9u
IGVycm9yKCkgeworICAgIHRlc3RGYWlsZWQoJ0Vycm9yIGNhbGxiYWNrIGNhbGxlZC4nKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30KKwordmFyIGZpcnN0Q2FsbCA9IHRydWU7CisKK2Z1bmN0aW9u
IG9udG9uZWNoYW5nZShlKSB7CisgICAgdGVzdFBhc3NlZCgib250b25lY2hhbmdlIHdhcyBjYWxs
ZWQuIik7CisgICAgZXZlbnQgPSBlOworICAgIGlmIChmaXJzdENhbGwpIHsKKyAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC50b25lJywgIjEiKTsKKyAgICAgICAgZmlyc3RDYWxs
ID0gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdl
dmVudC50b25lJywgIiIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK2Z1
bmN0aW9uIHBjX29uaWNlY2hhbmdlKCkgeworICAgIGlmIChwYy5pY2VDb25uZWN0aW9uU3RhdGUg
PT09ICJjb21wbGV0ZWQiKSB7CisgICAgICAgIHRlc3RQYXNzZWQoInBjIGlzIGNvbm5lY3RlZCIp
OworICAgICAgICB0cmFjayA9IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdOworCisgICAgICAg
IHNob3VsZFRocm93KCdkdG1mc2VuZGVyID0gcGMuY3JlYXRlRFRNRlNlbmRlcih0cmFjayk7Jyk7
CisgICAgICAgIHBjLmFkZFN0cmVhbShzdHJlYW0pOworICAgICAgICBzaG91bGROb3RUaHJvdygn
ZHRtZnNlbmRlciA9IHBjLmNyZWF0ZURUTUZTZW5kZXIodHJhY2spOycpOworICAgICAgICBzaG91
bGRCZVRydWUoJ2R0bWZzZW5kZXIuY2FuSW5zZXJ0RFRNRicpOworCisgICAgICAgIGR0bWZzZW5k
ZXIub250b25lY2hhbmdlID0gb250b25lY2hhbmdlOworICAgICAgICBkdG1mc2VuZGVyLmluc2Vy
dERUTUYoIjEiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdkdG1mc2VuZGVyLnRv
bmVCdWZmZXInLCAiMSIpOworICAgIH0KK30KKworZnVuY3Rpb24gZ290U3RyZWFtKHMpIHsKKyAg
ICBzdHJlYW0gPSBzOworICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBnZW5lcmF0ZWQuJyk7CisgICAg
c2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgc2hv
dWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcwJyk7CisKKyAgICBwYyA9
IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihudWxsLCBudWxsKTsKKyAgICBwYy5vbmljZWNo
YW5nZSA9IHBjX29uaWNlY2hhbmdlOworfQorCitzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndl
YmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0sIGdvdFN0cmVhbSwgZXJyb3IpOyIpOworCit3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0g
dHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185726</attachid>
            <date>2013-01-31 02:27:22 -0800</date>
            <delta_ts>2013-01-31 04:39:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106782-20130131112406.patch</filename>
            <type>text/plain</type>
            <size>76546</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3YWNiM2ExNDRlOWI5
YWQ2MTdjZmQ2N2Y1YmQ1OWVjZWUzMTkwNjZkLi5kNzQ5NmE4NGUxOGIwZWE0ZDkyMWFjNmZiNjA4
MmVkYWFmZTQ4MDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMy0wMS0yOSAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IEltcGxlbWVudCBEVE1GIHN1cHBvcnQgaW4gUlRDUGVlckNvbm5lY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjc4MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBXZWJSVEMg
c3BlY2lmaWNhdGlvbiBoYXZlIGFkZGVkIHN1cHBvcnQgZm9yIERUTUY6CisgICAgICAgIGh0dHA6
Ly9kZXYudzMub3JnLzIwMTEvd2VicnRjL2VkaXRvci93ZWJydGMuaHRtbCNwZWVyLXRvLXBlZXIt
ZHRtZgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIHdpc2UgdGhpcyBpcyBpbXBsZW1lbnRlZCB1
c2luZyB0aGUgc2FtZSBwYXR0ZXJuIGFzIFJUQ0RhdGFDaGFubmVsOworICAgICAgICB3aGVyZSBh
IFJUQ0RUTUZTZW5kZXJIYW5kbGVyIGlzIGNyZWF0ZWQgYnkgdGhlIFVBIHRocm91Z2ggYSBuZXcg
bWV0aG9kIG9uCisgICAgICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFt
Q29tcG9uZW50Lmg6CisgICAgICAgIChXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCk6CisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6On5XZWJSVENEVE1GU2VuZGVySGFu
ZGxlcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlJUQ0RUTUZT
ZW5kZXJIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhh
bmRsZXJDbGllbnQ6On5XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCk6CisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpj
cmVhdGVEVE1GU2VuZGVyKToKKwogMjAxMy0wMS0zMCAgWXVzdWYgT3p1eXNhbCAgPHl1c3Vmb0Bn
b29nbGUuY29tPgogCiAgICAgICAgIFN0YXJ0IHNlbmRpbmcgc2Nyb2xsVHlwZSBhcyBOb25CdWJi
bGluZ0dlc3R1cmUgZm9yIGZsaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU2NDA4YTgwOWZkZWJjZWU3ZTg4
N2UzYTEyZGM3OTEyNzMzY2QxNjIuLjI1YjM3MWIxN2M1YmU3N2I1NmZhMWU0MzE0ZjQxN2JmYjBi
YTk5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDIgQEAKKzIwMTMtMDEtMjkgIFRvbW15IFdp
ZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJ
OiBJbXBsZW1lbnQgRFRNRiBzdXBwb3J0IGluIFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3ODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViUlRDIHNwZWNpZmlj
YXRpb24gaGF2ZSBhZGRlZCBzdXBwb3J0IGZvciBEVE1GOgorICAgICAgICBodHRwOi8vZGV2Lncz
Lm9yZy8yMDExL3dlYnJ0Yy9lZGl0b3Ivd2VicnRjLmh0bWwjcGVlci10by1wZWVyLWR0bWYKKwor
ICAgICAgICBJbXBsZW1lbnRhdGlvbiB3aXNlIHRoaXMgaXMgaW1wbGVtZW50ZWQgdXNpbmcgdGhl
IHNhbWUgcGF0dGVybiBhcyBSVENEYXRhQ2hhbm5lbDsKKyAgICAgICAgd2hlcmUgYSBSVENEVE1G
U2VuZGVySGFuZGxlciBpcyBjcmVhdGVkIGJ5IHRoZSBVQSB0aHJvdWdoIGEgbmV3IG1ldGhvZCBv
bgorICAgICAgICBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuCisKKyAgICAgICAgVGVzdDogZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwKKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpSVENEVE1GU2VuZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RUTUZTZW5kZXI6On5SVENEVE1GU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RUTUZTZW5kZXI6OmNhbkluc2VydERUTUYpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRN
RlNlbmRlcjo6dHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6dG9uZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjppbnNlcnREVE1GKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmRpZFBsYXlUb25lKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRFRNRlNlbmRlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpSVENEVE1GU2VuZGVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6
OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjplbnN1
cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6c2No
ZWR1bGVEaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OnNj
aGVkdWxlZEV2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEVE1GU2VuZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENE
VE1GU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmR1cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmludGVyVG9uZUdhcCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmlkbDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50
OjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZUb25l
Q2hhbmdlRXZlbnQ6On5SVENEVE1GVG9uZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OnRvbmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRN
RlRvbmVDaGFuZ2VFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChSVENEVE1GVG9uZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRhQ2hhbm5lbCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpnZXRTdHJlYW1C
eVRyYWNrSWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURU
TUZTZW5kZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaW46CisgICAgICAgICogZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFTdHJlYW1Db21wb25lbnQ6OldlYk1lZGlhU3RyZWFtQ29tcG9uZW50KToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRs
ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ0RUTUZTZW5kZXJI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjp+UlRDRFRN
RlNlbmRlckhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZT
ZW5kZXJIYW5kbGVyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1G
U2VuZGVySGFuZGxlckNsaWVudDo6flJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxl
ckNocm9taXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpSVENEVE1GU2VuZGVySGFuZGxlckNo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06
On5SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpS
VENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpjdXJyZW50VG9uZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpjYW5JbnNlcnREVE1GKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06Omluc2VydERU
TUYpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6ZGlk
UGxheVRvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpj
cmVhdGVEVE1GU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmg6
CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bSk6CisKIDIwMTMtMDEt
MzEgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0g
VHJhY2Ugbm90IG9ubHkgbWFqb3IgRE9NIEdDcyBidXQgYWxzbyBtaW5vciBET00gR0NzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaSBiL1NvdXJjZS9QbGF0Zm9ybS9Q
bGF0Zm9ybS5neXBpCmluZGV4IDk3NDlhNWMwNDJiMTM0NDUzYmQ2ZjM2OTQ0OGY1NGI3OTVjMDNk
MmQuLjAwMDIzNzVjZWI0MzU5NjgzNmFlMGZhN2E0MmFmZjVjMjg4Mzk1NmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9QbGF0
Zm9ybS5neXBpCkBAIC0xMDAsNiArMTAwLDggQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViUHJpdmF0ZU93blB0ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2Vi
UHJpdmF0ZVB0ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDQ29uZmln
dXJhdGlvbi5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRFRNRlNlbmRl
ckhhbmRsZXIuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENE
YXRhQ2hhbm5lbEhhbmRsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJs
aWMvV2ViUlRDSUNFQ2FuZGlkYXRlLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oCmluZGV4IDdmMzc5MDlm
N2RhZWQ3NmRjZjhlOTA5NzVlYzUxYTVmZWU4N2ZjYTcuLmJhOGY0MjNlZDU5NWJlY2NmZjAyNjQx
NzM3MWE3ZmU3ZjhiMmZkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50LmgKQEAgLTY4LDYgKzY4LDcgQEAg
cHVibGljOgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiAgICAgV2ViTWVkaWFTdHJlYW1D
b21wb25lbnQoV2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQqKTsKKyAgICBXZWJNZWRpYVN0
cmVhbUNvbXBvbmVudChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25l
bnQ+KTsKICAgICBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYgb3BlcmF0b3I9KFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtQ29tcG9uZW50Kik7CiAgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ29tcG9uZW50PigpIGNvbnN0OwogICAgIG9wZXJhdG9yIFdlYkNvcmU6
Ok1lZGlhU3RyZWFtQ29tcG9uZW50KigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmMzZjA3MDM4M2IxNzJkN2M2ZTQ0OTlkN2M5YjEzNzEzYmJjYTA4MDYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJSVENE
VE1GU2VuZGVySGFuZGxlcl9oCisjZGVmaW5lIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKKwor
I2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKK2NsYXNzIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50OworCitjbGFz
cyBXZWJSVENEVE1GU2VuZGVySGFuZGxlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViUlRD
RFRNRlNlbmRlckhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2Vi
UlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYlN0cmlu
ZyBjdXJyZW50VG9uZUJ1ZmZlcigpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5JbnNlcnRE
VE1GKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpbnNlcnREVE1GKGNvbnN0IFdlYlN0cmluZyYg
dG9uZXMsIGxvbmcgZHVyYXRpb24sIGxvbmcgaW50ZXJUb25lR2FwKSA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
UlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjdkM2E1Y2ZiYmFkMTRj
MzRhNjg0Y2MyNGJlM2ZhOTY3NTM4NWI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5oCkBAIC0w
LDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUlRDRFRNRlNlbmRlckhhbmRs
ZXJDbGllbnRfaAorI2RlZmluZSBXZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudF9oCisKKyNp
bmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJSVENE
VE1GU2VuZGVySGFuZGxlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFBsYXlU
b25lKGNvbnN0IFdlYlN0cmluZyYgdG9uZSkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCAyN2QwZWU2NzAxODNhZTAyZWNhYjVmNDhlMzFj
YTI2ZmU3ODdiMWU4Li5iOTVjZjNlNTJjZWRiYjM0NTAxOGFlODhkMWFmM2YxOWZiOTI1N2VmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTMzLDggKzMzLDEwIEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgV2ViTWVkaWFDb25zdHJhaW50czsKK2NsYXNzIFdlYk1lZGlhU3Ry
ZWFtQ29tcG9uZW50OwogY2xhc3MgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwogY2xhc3MgV2Vi
UlRDQ29uZmlndXJhdGlvbjsKK2NsYXNzIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOwogY2xhc3Mg
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOwogY2xhc3MgV2ViUlRDSUNFQ2FuZGlkYXRlOwogY2xh
c3MgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OwpAQCAtNjMsNiArNjUsNyBAQCBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IFJlbW92ZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHdoZW4g
Y2xpZW50cyBoYXZlIGNoYW5nZWQuCiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKGNvbnN0IFdl
YlJUQ1N0YXRzUmVxdWVzdCYpIHsgfQogICAgIHZpcnR1YWwgV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyKiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBib29sIHJlbGlh
YmxlKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJSVENEVE1GU2VuZGVySGFuZGxlciog
Y3JlYXRlRFRNRlNlbmRlcihjb25zdCBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYgdHJhY2spIHsg
cmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggODAzNjQ0YjdhZTliMTQ2OWY0ZjA4NWE5YTM3YTdmMjExODZmMzllNi4u
NjNiNWU3ZGFkNTE5NTZhMTQxZDMwYmMxODVlYzNlOTMwN2VkYWNhYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTIyMSw2ICsyMjEsOCBAQCBzZXQoV2ViQ29yZV9JRExfRklMRVMKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwKKyAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaWRsCisgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hh
bm5lbEV2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5p
ZGwKQEAgLTg2Myw2ICs4NjUsOCBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yTWVkaWFTdHJlYW0uY3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVy
LmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IGVlOWVmYTkyMDYzYzg1ZGYwMjNlNGI5N2YyYzc0ZDc4ZmU3NWZmNjYuLmVkM2Q1ZDY5ZWI0NTE0
OGQwNjNkMTlhZWI4ZjhjYzg4YTUyMzJhNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtNjMzLDYgKzYzMywxMCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUkdCQ29sb3IuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUkdCQ29sb3IuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0RUTUZT
ZW5kZXIuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRFRNRlNlbmRlci5oIFwK
KwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEVE1GVG9uZUNoYW5nZUV2ZW50LmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEYXRhQ2hhbm5lbC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNSVENEYXRhQ2hhbm5lbC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAgXApAQCAtMTI0Niw2ICsxMjUwLDggQEAgZG9tX2Jp
bmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
clVzZXJNZWRpYUVycm9yLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCBcCisJJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaWRsIFwKKwkkKFdlYkNv
cmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGwgXAogCSQo
V2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwgXAogCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbCBcCiAJJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vycm9yQ2FsbGJhY2suaWRsIFwKQEAgLTE5
NDMsNiArMTk0OSwxMCBAQCB3ZWJjb3JlX21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9y
Q2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwIFwKQEAgLTU3
NTMsNiArNTc2Myw4IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGll
bnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDQ29uZmlndXJh
dGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEVE1GU2Vu
ZGVySGFuZGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
VE1GU2VuZGVySGFuZGxlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRN
RlNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZT
ZW5kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4NGE0MzBmNzJmNzUxMjVjM2Y5ZjU3NmQ0YTdjMmUxODk0
YzlmZjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiUlRDRFRNRlNlbmRlci5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlci5o
IgorI2luY2x1ZGUgIlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaCIKKyNpbmNsdWRlICJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IGxvbmcgbWluVG9uZUR1cmF0
aW9uID0gNzA7CitzdGF0aWMgY29uc3QgbG9uZyBkZWZhdWx0VG9uZUR1cmF0aW9uID0gMTAwOwor
c3RhdGljIGNvbnN0IGxvbmcgbWF4VG9uZUR1cmF0aW9uID0gNjAwMDsKK3N0YXRpYyBjb25zdCBs
b25nIG1pbkludGVyVG9uZUdhcCA9IDUwOworc3RhdGljIGNvbnN0IGxvbmcgZGVmYXVsdEludGVy
VG9uZUdhcCA9IDUwOworCitQYXNzUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IFJUQ0RUTUZTZW5kZXI6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXIqIHBlZXJDb25uZWN0aW9uSGFuZGxlciwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisgICAgT3duUHRyPFJUQ0RUTUZTZW5kZXJIYW5k
bGVyPiBoYW5kbGVyID0gcGVlckNvbm5lY3Rpb25IYW5kbGVyLT5jcmVhdGVEVE1GU2VuZGVyKHRy
YWNrLT5jb21wb25lbnQoKSk7CisgICAgaWYgKCFoYW5kbGVyKSB7CisgICAgICAgIGVjID0gTk9U
X1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxS
VENEVE1GU2VuZGVyPiBkdG1mU2VuZGVyID0gYWRvcHRSZWYobmV3IFJUQ0RUTUZTZW5kZXIoY29u
dGV4dCwgdHJhY2ssIGhhbmRsZXIucmVsZWFzZSgpKSk7CisgICAgZHRtZlNlbmRlci0+c3VzcGVu
ZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIGR0bWZTZW5kZXIucmVsZWFzZSgpOworfQorCitSVENE
VE1GU2VuZGVyOjpSVENEVE1GU2VuZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2ssIFBhc3NPd25QdHI8UlRDRFRNRlNl
bmRlckhhbmRsZXI+IGhhbmRsZXIpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhp
cykKKyAgICAsIG1fdHJhY2sodHJhY2spCisgICAgLCBtX2R1cmF0aW9uKGRlZmF1bHRUb25lRHVy
YXRpb24pCisgICAgLCBtX2ludGVyVG9uZUdhcChkZWZhdWx0SW50ZXJUb25lR2FwKQorICAgICwg
bV9oYW5kbGVyKGhhbmRsZXIpCisgICAgLCBtX3N0b3BwZWQoZmFsc2UpCisgICAgLCBtX3NjaGVk
dWxlZEV2ZW50VGltZXIodGhpcywgJlJUQ0RUTUZTZW5kZXI6OnNjaGVkdWxlZEV2ZW50VGltZXJG
aXJlZCkKK3sKKyAgICBtX2hhbmRsZXItPnNldENsaWVudCh0aGlzKTsKK30KKworUlRDRFRNRlNl
bmRlcjo6flJUQ0RUTUZTZW5kZXIoKQoreworfQorCitib29sIFJUQ0RUTUZTZW5kZXI6OmNhbklu
c2VydERUTUYoKSBjb25zdAoreworICAgIHJldHVybiBtX2hhbmRsZXItPmNhbkluc2VydERUTUYo
KTsKK30KKworTWVkaWFTdHJlYW1UcmFjayogUlRDRFRNRlNlbmRlcjo6dHJhY2soKSBjb25zdAor
eworICAgIHJldHVybiBtX3RyYWNrLmdldCgpOworfQorCitTdHJpbmcgUlRDRFRNRlNlbmRlcjo6
dG9uZUJ1ZmZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGFuZGxlci0+Y3VycmVudFRvbmVC
dWZmZXIoKTsKK30KKwordm9pZCBSVENEVE1GU2VuZGVyOjppbnNlcnREVE1GKGNvbnN0IFN0cmlu
ZyYgdG9uZXMsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGluc2VydERUTUYodG9uZXMsIGRl
ZmF1bHRUb25lRHVyYXRpb24sIGRlZmF1bHRJbnRlclRvbmVHYXAsIGVjKTsKK30KKwordm9pZCBS
VENEVE1GU2VuZGVyOjppbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxvbmcgZHVyYXRp
b24sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGluc2VydERUTUYodG9uZXMsIGR1cmF0aW9u
LCBkZWZhdWx0SW50ZXJUb25lR2FwLCBlYyk7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlcjo6aW5z
ZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9u
ZUdhcCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFjYW5JbnNlcnREVE1GKCkpIHsK
KyAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChkdXJhdGlvbiA+IG1heFRvbmVEdXJhdGlvbiB8fCBkdXJhdGlvbiA8IG1pblRv
bmVEdXJhdGlvbikgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoaW50ZXJUb25lR2FwIDwgbWluSW50ZXJUb25lR2FwKSB7CisgICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZHVy
YXRpb24gPSBkdXJhdGlvbjsKKyAgICBtX2ludGVyVG9uZUdhcCA9IGludGVyVG9uZUdhcDsKKwor
ICAgIGlmICghbV9oYW5kbGVyLT5pbnNlcnREVE1GKHRvbmVzLCBtX2R1cmF0aW9uLCBtX2ludGVy
VG9uZUdhcCkpCisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKK30KKwordm9pZCBSVENEVE1GU2Vu
ZGVyOjpkaWRQbGF5VG9uZShjb25zdCBTdHJpbmcmIHRvbmUpCit7CisgICAgc2NoZWR1bGVEaXNw
YXRjaEV2ZW50KFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OmNyZWF0ZSh0b25lKSk7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgUlRDRFRNRlNlbmRlcjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JSVENEVE1GU2VuZGVyOworfQor
CitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBSVENEVE1GU2VuZGVyOjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlcjo6c3RvcCgpCit7CisgICAg
bV9zdG9wcGVkID0gdHJ1ZTsKKyAgICBtX2hhbmRsZXItPnNldENsaWVudCgwKTsKK30KKworRXZl
bnRUYXJnZXREYXRhKiBSVENEVE1GU2VuZGVyOjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJl
dHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUlRDRFRNRlNl
bmRlcjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJn
ZXREYXRhOworfQorCit2b2lkIFJUQ0RUTUZTZW5kZXI6OnNjaGVkdWxlRGlzcGF0Y2hFdmVudChQ
YXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK3sKKyAgICBtX3NjaGVkdWxlZEV2ZW50cy5hcHBlbmQo
ZXZlbnQpOworCisgICAgaWYgKCFtX3NjaGVkdWxlZEV2ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAg
ICAgICAgbV9zY2hlZHVsZWRFdmVudFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBS
VENEVE1GU2VuZGVyOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoVGltZXI8UlRDRFRNRlNlbmRl
cj4qKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3Rv
cjxSZWZQdHI8RXZlbnQ+ID4gZXZlbnRzOworICAgIGV2ZW50cy5zd2FwKG1fc2NoZWR1bGVkRXZl
bnRzKTsKKworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID46Oml0ZXJhdG9yIGl0ID0gZXZlbnRz
LmJlZ2luKCk7CisgICAgZm9yICg7IGl0ICE9IGV2ZW50cy5lbmQoKTsgKytpdCkKKyAgICAgICAg
ZGlzcGF0Y2hFdmVudCgoKml0KS5yZWxlYXNlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjc1
MTlhODAzNWU3NjUyYTkzM2ZmNDk1OGIyZDc0ZThjODZlNWVhCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmgKQEAgLTAs
MCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDRFRNRlNlbmRlcl9oCisjZGVm
aW5lIFJUQ0RUTUZTZW5kZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVk
ZSAiUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TWVkaWFTdHJlYW1UcmFjazsKK2NsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKK2NsYXNz
IFJUQ0RUTUZTZW5kZXJIYW5kbGVyOworCitjbGFzcyBSVENEVE1GU2VuZGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8UlRDRFRNRlNlbmRlcj4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIFJUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2xpZW50LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEVE1GU2VuZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlciosIFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB+UlRDRFRNRlNlbmRlcigpOworCisg
ICAgYm9vbCBjYW5JbnNlcnREVE1GKCkgY29uc3Q7CisgICAgTWVkaWFTdHJlYW1UcmFjayogdHJh
Y2soKSBjb25zdDsKKyAgICBTdHJpbmcgdG9uZUJ1ZmZlcigpIGNvbnN0OworICAgIGxvbmcgZHVy
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CisgICAgbG9uZyBpbnRlclRvbmVH
YXAoKSBjb25zdCB7IHJldHVybiBtX2ludGVyVG9uZUdhcDsgfQorCisgICAgdm9pZCBpbnNlcnRE
VE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGluc2Vy
dERUTUYoY29uc3QgU3RyaW5nJiB0b25lcywgbG9uZyBkdXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgaW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9u
LCBsb25nIGludGVyVG9uZUdhcCwgRXhjZXB0aW9uQ29kZSYpOworCisgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUih0b25lY2hhbmdlKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0Cisg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CisKKyAgICB1c2luZyBSZWZDb3VudGVkPFJU
Q0RUTUZTZW5kZXI+OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxSVENEVE1GU2VuZGVyPjo6
ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgUlRDRFRNRlNlbmRlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiwgUGFzc093blB0cjxSVENEVE1GU2Vu
ZGVySGFuZGxlcj4pOworCisgICAgdm9pZCBzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4pOworICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKFRpbWVyPFJUQ0RU
TUZTZW5kZXI+Kik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJn
ZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOworCisgICAgLy8gUlRDRFRNRlNlbmRlckhhbmRsZXJD
bGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGxheVRvbmUoY29uc3QgU3RyaW5nJikgT1ZFUlJJ
REU7CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gbV90cmFjazsKKyAgICBsb25nIG1f
ZHVyYXRpb247CisgICAgbG9uZyBtX2ludGVyVG9uZUdhcDsKKworICAgIE93blB0cjxSVENEVE1G
U2VuZGVySGFuZGxlcj4gbV9oYW5kbGVyOworCisgICAgYm9vbCBtX3N0b3BwZWQ7CisKKyAgICBU
aW1lcjxSVENEVE1GU2VuZGVyPiBtX3NjaGVkdWxlZEV2ZW50VGltZXI7CisgICAgVmVjdG9yPFJl
ZlB0cjxFdmVudD4gPiBtX3NjaGVkdWxlZEV2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENE
VE1GU2VuZGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRFRNRlNlbmRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMDQyOTIyZTNkODY4Mzc5MDI3Mzg4YTlm
MWQ4ZjM2ZTg0NWQxNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaWRsCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgQWN0aXZlRE9NT2Jq
ZWN0LAorICAgIEV2ZW50VGFyZ2V0CitdIGludGVyZmFjZSBSVENEVE1GU2VuZGVyIHsKKyAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBjYW5JbnNlcnREVE1GOworICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBNZWRpYVN0cmVhbVRyYWNrIHRyYWNrOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgdG9uZUJ1ZmZlcjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBkdXJhdGlv
bjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBpbnRlclRvbmVHYXA7CisKKyAgICB2b2lk
IGluc2VydERUTUYoaW4gRE9NU3RyaW5nIHRvbmVzLCBpbiBbT3B0aW9uYWxdIGxvbmcgZHVyYXRp
b24sIGluIFtPcHRpb25hbF0gbG9uZyBpbnRlclRvbmVHYXApCisgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOworCisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb250b25lY2hhbmdlOwor
CisgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgdm9pZCBhZGRFdmVudExpc3RlbmVy
KGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExp
c3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxd
IGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERP
TVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3Rl
bmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxd
IGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50
IGV2ZW50KQorICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hh
bmdlRXZlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyYjlmZDk0Njg1NjFiMWY5NDg5NjA1N2NmNjk1Yzg5
OTM3NGUzYjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSVENEVE1GVG9uZUNoYW5n
ZUV2ZW50LmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8UlRDRFRNRlRvbmVD
aGFuZ2VFdmVudD4gUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQpOworfQorCitQYXNzUmVmUHRy
PFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ+IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIHRvbmUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENEVE1GVG9u
ZUNoYW5nZUV2ZW50KHRvbmUpKTsKK30KKworUGFzc1JlZlB0cjxSVENEVE1GVG9uZUNoYW5nZUV2
ZW50PiBSVENEVE1GVG9uZUNoYW5nZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCBjb25zdCBSVENEVE1GVG9uZUNoYW5nZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCit7Cisg
ICAgQVNTRVJUKHR5cGUgPT0gZXZlbnROYW1lcygpLnRvbmVjaGFuZ2VFdmVudCk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBSVENEVE1GVG9uZUNoYW5nZUV2ZW50KGluaXRpYWxpemVyKSk7Cit9
CisKK1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoKQorewor
fQorCitSVENEVE1GVG9uZUNoYW5nZUV2ZW50OjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50KGNvbnN0
IFN0cmluZyYgdG9uZSkKKyAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS50b25lY2hhbmdlRXZlbnQs
IGZhbHNlLCBmYWxzZSkKKyAgICAsIG1fdG9uZSh0b25lKQoreworfQorCitSVENEVE1GVG9uZUNo
YW5nZUV2ZW50OjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50KGNvbnN0IFJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnRJbml0JiBpbml0aWFsaXplcikKKyAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS50b25lY2hh
bmdlRXZlbnQsIGluaXRpYWxpemVyKQorICAgICwgbV90b25lKGluaXRpYWxpemVyLnRvbmUpCit7
Cit9CisKK1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6On5SVENEVE1GVG9uZUNoYW5nZUV2ZW50KCkK
K3sKK30KKworY29uc3QgU3RyaW5nJiBSVENEVE1GVG9uZUNoYW5nZUV2ZW50Ojp0b25lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV90b25lOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFJUQ0RU
TUZUb25lQ2hhbmdlRXZlbnQ6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBl
dmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9u
ZUNoYW5nZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZUb25lQ2hhbmdlRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzcwZmE5YmM1MzdhMWE1NDMwYTg3MmI5
OTEwNGMwY2YxZDc0ZWZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmgKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENEVE1GVG9uZUNoYW5nZUV2ZW50X2gKKyNkZWZpbmUg
UlRDRFRNRlRvbmVDaGFuZ2VFdmVudF9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudEluaXQg
OiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBSVENEVE1GVG9uZUNoYW5nZUV2ZW50SW5pdCgpOwor
CisgICAgU3RyaW5nIHRvbmU7Cit9OworCitjbGFzcyBSVENEVE1GVG9uZUNoYW5nZUV2ZW50IDog
cHVibGljIEV2ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENEVE1GVG9uZUNoYW5nZUV2
ZW50KCk7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEVE1GVG9uZUNoYW5nZUV2ZW50PiBj
cmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEVE1GVG9uZUNoYW5nZUV2ZW50PiBj
cmVhdGUoY29uc3QgU3RyaW5nJiB0b25lKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEVE1G
VG9uZUNoYW5nZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBS
VENEVE1GVG9uZUNoYW5nZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpOworCisgICAgY29uc3QgU3Ry
aW5nJiB0b25lKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJUQ0RUTUZUb25lQ2hhbmdlRXZl
bnQoKTsKKyAgICBSVENEVE1GVG9uZUNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgdG9uZSk7Cisg
ICAgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudChjb25zdCBSVENEVE1GVG9uZUNoYW5nZUV2ZW50SW5p
dCYpOworCisgICAgU3RyaW5nIG1fdG9uZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENEVE1GVG9u
ZUNoYW5nZUV2ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwOTlh
MjU2ZjJiNjc4ZDg4MzI2YTcyYTE4ZGIxZWNhZDk4ODk5NDIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQu
aWRsCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1N
RURJQV9TVFJFQU0sCisgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudAorXSBpbnRlcmZhY2Ug
UlRDRFRNRlRvbmVDaGFuZ2VFdmVudCA6IEV2ZW50IHsKKyAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50
Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdG9uZTsKK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uY3BwCmluZGV4IDlmMDA3OTE4NTU5MWY2YzczMDg0ZDA3YmFjODRlNmY2Mjc3YjgzYjAu
LjY1MzI3YzQxNTgzZjc4OGVmNzEwZmMzMzZmYjg4NmFiNDI1MTA2YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIK
ICNpbmNsdWRlICJNZWRpYVN0cmVhbUV2ZW50LmgiCiAjaW5jbHVkZSAiUlRDQ29uZmlndXJhdGlv
bi5oIgorI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXIuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5l
bC5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRXZlbnQuaCIKICNpbmNsdWRlICJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuaCIKQEAgLTQ1MCw2ICs0NTEsNDEgQEAgUGFzc1JlZlB0cjxSVENEYXRh
Q2hhbm5lbD4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURhdGFDaGFubmVsKFN0cmluZyBsYWJl
bCwgY28KICAgICByZXR1cm4gY2hhbm5lbC5yZWxlYXNlKCk7CiB9CiAKK01lZGlhU3RyZWFtKiBS
VENQZWVyQ29ubmVjdGlvbjo6Z2V0U3RyZWFtQnlUcmFja0lkKGNvbnN0IFN0cmluZyYgdHJhY2tJ
ZCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8IG1fbG9jYWxTdHJlYW1zLT5sZW5n
dGgoKTsgKytpKSB7CisgICAgICAgIE1lZGlhU3RyZWFtKiBzdHJlYW0gPSAgbV9sb2NhbFN0cmVh
bXMtPml0ZW0oaSk7CisgICAgICAgIGlmIChzdHJlYW0tPmdldFRyYWNrQnlJZCh0cmFja0lkKSkK
KyAgICAgICAgICAgIHJldHVybiBzdHJlYW07CisgICAgfQorICAgIHJldHVybiAwOworfQorCitQ
YXNzUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IFJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVEVE1GU2Vu
ZGVyKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ssIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGlmIChtX3NpZ25hbGluZ1N0YXRlID09IFNpZ25hbGluZ1N0YXRlQ2xvc2Vk
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIGlmICghcHJwVHJhY2spIHsKKyAgICAgICAgZWMgPSBUeXBlRXJyb3I7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0
cmFjayA9IHBycFRyYWNrOworCisgICAgaWYgKCFnZXRTdHJlYW1CeVRyYWNrSWQodHJhY2stPmlk
KCkpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCisgICAgUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IGR0bWZTZW5kZXIgPSBSVENEVE1GU2VuZGVy
OjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3BlZXJIYW5kbGVyLmdldCgpLCB0
cmFjay5yZWxlYXNlKCksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBkdG1mU2VuZGVyLnJlbGVhc2UoKTsKK30KKwogdm9pZCBSVENQZWVyQ29ubmVjdGlv
bjo6Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fc2lnbmFsaW5nU3RhdGUg
PT0gU2lnbmFsaW5nU3RhdGVDbG9zZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAppbmRleCAyNGUxZDczMTdmYTc3
ZDdhZDM2YTE5NGFiNzdiZmE4OWE1NWFlMjAzLi4xYjQ1NWIxMDhjYjQwMTFhMzc0YTI1ZmQwMjRi
M2YxZDQ5MGMxNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNr
OwogY2xhc3MgUlRDQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJUQ0RUTUZTZW5kZXI7CiBjbGFzcyBS
VENEYXRhQ2hhbm5lbDsKIGNsYXNzIFJUQ0Vycm9yQ2FsbGJhY2s7CiBjbGFzcyBSVENTZXNzaW9u
RGVzY3JpcHRpb247CkBAIC04NiwxNyArODcsMTcgQEAgcHVibGljOgogICAgIFN0cmluZyBpY2VD
b25uZWN0aW9uU3RhdGUoKSBjb25zdDsKIAogICAgIE1lZGlhU3RyZWFtTGlzdCogbG9jYWxTdHJl
YW1zKCkgY29uc3Q7Ci0KICAgICBNZWRpYVN0cmVhbUxpc3QqIHJlbW90ZVN0cmVhbXMoKSBjb25z
dDsKIAogICAgIHZvaWQgYWRkU3RyZWFtKGNvbnN0IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+LCBj
b25zdCBEaWN0aW9uYXJ5JiBtZWRpYUNvbnN0cmFpbnRzLCBFeGNlcHRpb25Db2RlJik7Ci0KICAg
ICB2b2lkIHJlbW92ZVN0cmVhbShNZWRpYVN0cmVhbSosIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAg
IHZvaWQgZ2V0U3RhdHMoUGFzc1JlZlB0cjxSVENTdGF0c0NhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gc2VsZWN0b3IpOwogCiAgICAgUGFzc1Jl
ZlB0cjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlRGF0YUNoYW5uZWwoU3RyaW5nIGxhYmVsLCBjb25z
dCBEaWN0aW9uYXJ5JiBkYXRhQ2hhbm5lbERpY3QsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIFBh
c3NSZWZQdHI8UlRDRFRNRlNlbmRlcj4gY3JlYXRlRFRNRlNlbmRlcihQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+LCBFeGNlcHRpb25Db2RlJik7CisKICAgICB2b2lkIGNsb3NlKEV4Y2VwdGlv
bkNvZGUmKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobmVnb3RpYXRp
b25uZWVkZWQpOwpAQCAtMTM0LDYgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4gcGFyc2VDb25maWd1cmF0aW9uKGNvbnN0IERpY3Rpb25h
cnkmIGNvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNjaGVkdWxlRGlz
cGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRp
bWVyRmlyZWQoVGltZXI8UlRDUGVlckNvbm5lY3Rpb24+Kik7CisgICAgTWVkaWFTdHJlYW0qIGdl
dFN0cmVhbUJ5VHJhY2tJZChjb25zdCBTdHJpbmcmIHRyYWNrSWQpOwogCiAgICAgLy8gRXZlbnRU
YXJnZXQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50
VGFyZ2V0RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAppbmRleCA5Y2YwYjY0NjFjYTYwNTllOWY1NmU4
NzQ4ODliOTBmNjQ4ZjBhNjhiLi5lZDUxNGZhOTUyNGU5MTBkOGI1ODE5M2Q2YjQyODExNGFlNTJi
NmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmlkbApAQCAtNzksNiArNzksOSBAQAogICAgIFJUQ0RhdGFDaGFu
bmVsIGNyZWF0ZURhdGFDaGFubmVsKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVu
ZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBsYWJlbCwgaW4gW09wdGlvbmFsXSBEaWN0
aW9uYXJ5IG9wdGlvbnMpCiAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAorICAgIFJU
Q0RUTUZTZW5kZXIgY3JlYXRlRFRNRlNlbmRlcihpbiBNZWRpYVN0cmVhbVRyYWNrIHRyYWNrKQor
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKICAgICB2b2lkIGNsb3NlKCkKICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1NWIyOWI0Y2U3
MzM1M2MxY2MwY2U0ZDcxZTM0ZDhkNTBhYjRkYWJkLi5kODY5ZDU1YzMyNmY3YzY0MzIyOTg5NTEw
ZjRkZTEyY2E1YWMyZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC03Miw2ICs3Miw4IEBACiAgICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwn
LAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5pZGwnLApAQCAtODE5LDEwICs4MjEsMTQg
QEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVy
cm9yLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oJywKLSAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRFRNRlNlbmRlci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAnLAotICAgICAgICAgICAgJ01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0Vycm9yQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oJywKQEAgLTQzNjAsNiArNDM2Niw4IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyLmgnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bEhhbmRsZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
SWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAnLApAQCAtNDM3Myw2ICs0MzgxLDggQEAKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENWb2lkUmVxdWVzdC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRlckNocm9t
aXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vTWVk
aWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0
cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtLmNwcCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRFRNRlNlbmRlckhhbmRsZXJD
aHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9S
VENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVtLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlckNocm9taXVtLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCAzZjBl
N2EyN2I0Zjg5MmQyNWQ0ZDU3MTJlZjk1NDhhMmFiMzE4MTg2Li4yMmE3YjMyYmFiNzliYzUyNjAw
NzY0MWEzYjkxY2M0MGM1MWI0YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTIzNCw2
ICsyMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8obmVnb3RpYXRpb25uZWVk
ZWQpIFwKICAgICBtYWNybyhkYXRhY2hhbm5lbCkgXAogICAgIG1hY3JvKGdhdGhlcmluZ2NoYW5n
ZSkgXAorICAgIG1hY3JvKHRvbmVjaGFuZ2UpIFwKICAgICBcCiAgICAgbWFjcm8oc2hvdykgXAog
ICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KaW5kZXggNTExYmRmNDFjZTY5NGQyNTRhNGI2
ZjQ3ZDZiYmQ1ZWViMWJiNDQ5Mi4uMjhlYzg0NGFmZDE3ZDBmZmMyM2RjMTY1ZWRhYzVmMDNmZGRj
ODRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KQEAgLTM0LDYgKzM0LDcgQEAgTWVkaWFT
dHJlYW1FdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lZGlhU3RyZWFtVHJhY2tFdmVu
dCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFJUQ0ljZUNhbmRpZGF0ZUV2ZW50IGNvbmRpdGlv
bmFsPU1FRElBX1NUUkVBTQogUlRDRGF0YUNoYW5uZWxFdmVudCBjb25kaXRpb25hbD1NRURJQV9T
VFJFQU0KK1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBT
cGVlY2hJbnB1dEV2ZW50IGNvbmRpdGlvbmFsPUlOUFVUX1NQRUVDSAogU3BlZWNoUmVjb2duaXRp
b25FcnJvciBjb25kaXRpb25hbD1TQ1JJUFRFRF9TUEVFQ0gKIFNwZWVjaFJlY29nbml0aW9uRXZl
bnQgY29uZGl0aW9uYWw9U0NSSVBURURfU1BFRUNICmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0RmFjdG9yeS5pbgppbmRleCAyNDM2ODVhNzg5MTJkYjQ3ODY5NDE1NDgxYzc4ODVhOGIyNjA3
YmY2Li44MjU2NjdiM2NhZDdhMzUxMWEwZGE0ZTA5ZWQ2OWU5MjJlNzExOTVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTI0LDYgKzI0LDcgQEAgTm9kZQog
Tm90aWZpY2F0aW9uIGNvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElP
TlMKIFBlcmZvcm1hbmNlIGNvbmRpdGlvbmFsPVdFQl9USU1JTkcKIFJUQ0RhdGFDaGFubmVsIGNv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTQorUlRDRFRNRlNlbmRlciBjb25kaXRpb25hbD1NRURJQV9T
VFJFQU0KIFJUQ1BlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogU2hhcmVk
V29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTaGFyZWRXb3JrZXJDb250ZXh0IGNv
bmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Db21wb25l
bnQuY3BwCmluZGV4IDJjOTU3ZGI5ZGM4ZWZmNWMzNjUxYjNkNTQwYmJhZDA4ZjFmOWIyNzcuLmE2
MDg5NzE0ZjBmZTdkZGZiNDFiYmI3NWYyYTg3NTRmNmYzNmFiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Db21wb25l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
TWVkaWFTdHJlYW1Db21wb25lbnQuY3BwCkBAIC00OSw2ICs0OSwxMSBAQCBXZWJNZWRpYVN0cmVh
bUNvbXBvbmVudDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQoV2ViQ29yZTo6TWVkaWFTdHJlYW1D
b21wb25lbnQqCiB7CiB9CiAKK1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50OjpXZWJNZWRpYVN0cmVh
bUNvbXBvbmVudChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQ+
IG1lZGlhU3RyZWFtQ29tcG9uZW50KQorICAgIDogbV9wcml2YXRlKG1lZGlhU3RyZWFtQ29tcG9u
ZW50KQoreworfQorCiBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYgV2ViTWVkaWFTdHJlYW1Db21w
b25lbnQ6Om9wZXJhdG9yPShXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbXBvbmVudCogbWVkaWFTdHJl
YW1Db21wb25lbnQpCiB7CiAgICAgbV9wcml2YXRlID0gbWVkaWFTdHJlYW1Db21wb25lbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEVE1GU2Vu
ZGVySGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRN
RlNlbmRlckhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGFlZTNlMjc3YWU5MTU1ODUwYWI5NTFiOTJm
MjMyZDQ0ZWZiZTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXIuaApAQCAtMCwwICsxLDUyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKKyNkZWZpbmUgUlRDRFRN
RlNlbmRlckhhbmRsZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJU
Q0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50OworCitjbGFzcyBSVENEVE1GU2VuZGVySGFuZGxlciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+UlRDRFRNRlNlbmRlckhhbmRsZXIoKSB7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqKSA9IDA7
CisKKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VG9uZUJ1ZmZlcigpID0gMDsKKworICAgIHZp
cnR1YWwgYm9vbCBjYW5JbnNlcnREVE1GKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpbnNlcnRE
VE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxvbmcgZHVyYXRpb24sIGxvbmcgaW50ZXJUb25lR2Fw
KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDRFRNRlNlbmRlckhhbmRsZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhh
bmRsZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZiZDlkYjMyMzZkZDExNWRmNmYw
MGIzNTcyOTc0NTNiOTdlMzcwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LmgKQEAgLTAsMCAr
MSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENEVE1GU2VuZGVySGFuZGxlckNsaWVu
dF9oCisjZGVmaW5lIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50X2gKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDRFRNRlNlbmRl
ckhhbmRsZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflJUQ0RUTUZTZW5kZXJIYW5k
bGVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGxheVRvbmUoY29uc3QgU3Ry
aW5nJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKaW5kZXggZDhmOTZkMzBmMzFlNmQxOTU5N2Uz
OGY1MWZiOWI5ODQ3MDU3MjdlYi4uZTE5ZTRiMjM5ZTcxMjgwMjY2MjI3N2IzZWM5Yzk3NzI4MTI4
MzUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTQwLDcgKzQwLDkgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFDb25zdHJhaW50czsKK2NsYXNzIE1lZGlh
U3RyZWFtQ29tcG9uZW50OwogY2xhc3MgUlRDQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJUQ0RUTUZT
ZW5kZXJIYW5kbGVyOwogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyOwogY2xhc3MgUlRDSWNl
Q2FuZGlkYXRlRGVzY3JpcHRvcjsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dDsKQEAgLTY3LDEwICs2OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWRkU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0
cmFpbnRzPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbURlc2NyaXB0b3I+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFBh
c3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkg
PSAwOwotCi0gICAgLy8gUlRDRGF0YUNoYW5uZWwKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8UlRD
RGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBTdHJpbmcmIGxhYmVs
LCBib29sIHJlbGlhYmxlKSA9IDA7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFJUQ0RUTUZTZW5k
ZXJIYW5kbGVyPiBjcmVhdGVEVE1GU2VuZGVyKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25l
bnQ+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CiAKIHByb3RlY3RlZDoKICAg
ICBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0v
UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNkODBkYjdiNTAw
YTBkMTZlOTYzZjU4NzNhMDAyYWEwYzM4OWJjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RUTUZTZW5kZXJIYW5kbGVy
Q2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENEVE1G
U2VuZGVySGFuZGxlckNocm9taXVtLmgiCisKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxl
ckNsaWVudC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4g
UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6Y3JlYXRlKFdlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyKiB3ZWJIYW5kbGVyKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUlRDRFRNRlNlbmRl
ckhhbmRsZXJDaHJvbWl1bSh3ZWJIYW5kbGVyKSk7Cit9CisKK1JUQ0RUTUZTZW5kZXJIYW5kbGVy
Q2hyb21pdW06OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0oV2ViUlRDRFRNRlNlbmRlckhh
bmRsZXIqIHdlYkhhbmRsZXIpCisgICAgOiBtX3dlYkhhbmRsZXIoYWRvcHRQdHIod2ViSGFuZGxl
cikpCisgICAgLCBtX2NsaWVudCgwKQoreworfQorCitSVENEVE1GU2VuZGVySGFuZGxlckNocm9t
aXVtOjp+UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bSgpCit7Cit9CisKK3ZvaWQgUlRDRFRN
RlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6c2V0Q2xpZW50KFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xp
ZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgbV93ZWJIYW5kbGVy
LT5zZXRDbGllbnQobV9jbGllbnQgPyB0aGlzIDogMCk7Cit9CisKK1N0cmluZyBSVENEVE1GU2Vu
ZGVySGFuZGxlckNocm9taXVtOjpjdXJyZW50VG9uZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1f
d2ViSGFuZGxlci0+Y3VycmVudFRvbmVCdWZmZXIoKTsKK30KKworYm9vbCBSVENEVE1GU2VuZGVy
SGFuZGxlckNocm9taXVtOjpjYW5JbnNlcnREVE1GKCkKK3sKKyAgICByZXR1cm4gbV93ZWJIYW5k
bGVyLT5jYW5JbnNlcnREVE1GKCk7Cit9CisKK2Jvb2wgUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJv
bWl1bTo6aW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25n
IGludGVyVG9uZUdhcCkKK3sKKyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5pbnNlcnREVE1GKHRv
bmVzLCBkdXJhdGlvbiwgaW50ZXJUb25lR2FwKTsKK30KKwordm9pZCBSVENEVE1GU2VuZGVySGFu
ZGxlckNocm9taXVtOjpkaWRQbGF5VG9uZShjb25zdCBXZWJTdHJpbmcmIHRvbmUpIGNvbnN0Cit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkUGxheVRvbmUodG9uZSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
aHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVt
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTI0NzM3NzNlNzlhMGMzZDRmY2UyOTk3M2RmMjk1ODY4NTRmMjMzYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2No
cm9taXVtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uaApAQCAtMCwwICsxLDY3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW1faAorI2Rl
ZmluZSBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtX2gKKworI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlci5oIgorI2luY2x1ZGUgIlJU
Q0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RUTUZT
ZW5kZXJIYW5kbGVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
Q2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDRFRNRlNlbmRlckhhbmRs
ZXJDbGllbnQ7CisKK2NsYXNzIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0gOiBwdWJsaWMg
UlRDRFRNRlNlbmRlckhhbmRsZXIsIHB1YmxpYyBXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxSVENEVE1GU2VuZGVy
SGFuZGxlcj4gY3JlYXRlKFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqKTsKKyAgICB2
aXJ0dWFsIH5SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtKCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q2xpZW50KFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KikgT1ZFUlJJREU7CisKKyAg
ICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VG9uZUJ1ZmZlcigpIE9WRVJSSURFOworCisgICAgdmly
dHVhbCBib29sIGNhbkluc2VydERUTUYoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaW5z
ZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9u
ZUdhcCkgT1ZFUlJJREU7CisKKyAgICAvLyBXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
Q2xpZW50IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBkaWRQbGF5VG9uZShjb25z
dCBXZWJLaXQ6OldlYlN0cmluZyYgdG9uZSkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bShXZWJLaXQ6OldlYlJUQ0RU
TUZTZW5kZXJIYW5kbGVyKik7CisKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJSVENEVE1GU2VuZGVy
SGFuZGxlcj4gbV93ZWJIYW5kbGVyOworICAgIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KiBt
X2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVt
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9t
aXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNo
cm9taXVtLmNwcAppbmRleCBiODljZDQ2MGM3NDViZGViYTE5ZWUyNDg5NDJhNGZhZmYwZDk1Y2U2
Li4yMDQ3MTY2MzU1NzIzZTcyN2JhYTY2Y2NmNzI2MmFmNmNlZWFlNjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCkBA
IC0zNSw3ICszNSwxMCBAQAogI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9t
aXVtLmgiCiAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAiTWVkaWFT
dHJlYW1Db21wb25lbnQuaCIKICNpbmNsdWRlICJSVENDb25maWd1cmF0aW9uLmgiCisjaW5jbHVk
ZSAiUlRDRFRNRlNlbmRlckhhbmRsZXIuaCIKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxl
ckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCIKICNpbmNsdWRlICJSVENJ
Y2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgiCkBAIC00Niw4ICs0OSwxMCBAQAogI2luY2x1ZGUgIlJU
Q1ZvaWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFT
dHJlYW1Db21wb25lbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0NvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
UlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0lDRUNhbmRp
ZGF0ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb24uaD4KQEAg
LTE1OCw2ICsxNjMsMTUgQEAgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IFJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpjcmVhdGVEYXRhQ2gKICAgICByZXR1cm4gUlRD
RGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmNyZWF0ZSh3ZWJIYW5kbGVyKTsKIH0KIAorUGFz
c093blB0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hy
b21pdW06OmNyZWF0ZURUTUZTZW5kZXIoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4g
dHJhY2spCit7CisgICAgV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlciogd2ViSGFuZGxl
ciA9IG1fd2ViSGFuZGxlci0+Y3JlYXRlRFRNRlNlbmRlcih0cmFjayk7CisgICAgaWYgKCF3ZWJI
YW5kbGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBSVENEVE1GU2Vu
ZGVySGFuZGxlckNocm9taXVtOjpjcmVhdGUod2ViSGFuZGxlcik7Cit9CisKIHZvaWQgUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OnN0b3AoKQogewogICAgIG1fd2ViSGFuZGxlci0+
c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNocm9taXVtLmgKaW5kZXggZjc0N2E3YTk3MjJmZWE4YWY4ZWQzZGU2OTZiOGY5ZmJlMzFlOGM3
Yi4uOTFhZGFhZTBkZGQ4YjJlOTQwYzc3MjMzM2YzZjA1MDNlNGZhMmYzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oCkBAIC03
MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3RyZWFtKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IGdldFN0YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBQYXNzT3duUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNoYW5uZWwo
Y29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBQYXNzT3duUHRyPFJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBjcmVhdGVEVE1GU2VuZGVyKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmIwNjcyYjlkZGEwNTgzYmIzNzE4YjBiMTQ0YjIzOGFm
MDEwY2Q4OC4uYWJjMjRmM2YyYjAwY2U4MDMxZTdmNzE2ZjI1MGRmMDE3YTNhY2VmMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDEzLTAxLTI5ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgor
CisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogSW1wbGVtZW50IERUTUYgc3VwcG9ydCBpbiBSVENQ
ZWVyQ29ubmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA2NzgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkaW5nIE1vY2sgZnVuY3Rpb25hbGl0eSBmb3IgdGhlIERUTUZTZW5kZXIuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoRFRNRlNlbmRlclRvbmVUYXNrKToKKyAgICAgICAgKERUTUZTZW5kZXJU
b25lVGFzazo6RFRNRlNlbmRlclRvbmVUYXNrKToKKyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlcjo6TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKToKKyAgICAgICAgKE1vY2tX
ZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKE1vY2tXZWJSVENE
VE1GU2VuZGVySGFuZGxlcjo6Y3VycmVudFRvbmVCdWZmZXIpOgorICAgICAgICAoTW9ja1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyOjpjYW5JbnNlcnREVE1GKToKKyAgICAgICAgKE1vY2tXZWJSVENE
VE1GU2VuZGVySGFuZGxlcjo6aW5zZXJ0RFRNRik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmg6IEFkZGVkLgorICAgICAgICAo
TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKToKKyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlcjo6dGFza0xpc3QpOgorICAgICAgICAoTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyOjpjbGVhclRvbmVCdWZmZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwOgorICAgICAgICAoTW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlRFRNRlNlbmRlcik6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgor
ICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisKIDIwMTMtMDEtMzEg
IEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBtb3ZlIHBvc3RNZXNzYWdlIHJlbGF0ZWQgbWV0aG9kcyB0byBUZXN0UnVubmVyIGxpYnJh
cnkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IGU3ZTdhMjcy
YzAxNGQzZmY2OTExZmRmZGM0NjJhMTU0MTBjMDNiZDEuLmUxZDJhOWM4ODc5MDRjZTI4NjgxZGU2
YjVlYzFiYWRiZmI5MjAwMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUu
Z3lwaQpAQCAtMTgsNiArMTgsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJQcmVy
ZW5kZXJpbmdTdXBwb3J0LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJS
VENEVE1GU2VuZGVySGFuZGxlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJS
VENEVE1GU2VuZGVySGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlJU
Q0RhdGFDaGFubmVsSGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43OTZkNjY1ZjM5MGZiNWEzNTBkNjNjZjdiMWJhYzUwZGFlYTBhMjU5Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyLmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1vY2tXZWJS
VENEVE1GU2VuZGVySGFuZGxlci5oIgorCisjaW5jbHVkZSAiVGFzay5oIgorI2luY2x1ZGUgPGFz
c2VydC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CisKK2NsYXNzIERU
TUZTZW5kZXJUb25lVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlcj4geworcHVibGljOgorICAgIERUTUZTZW5kZXJUb25lVGFzayhNb2NrV2ViUlRD
RFRNRlNlbmRlckhhbmRsZXIqIG9iamVjdCwgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQq
IGNsaWVudCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENEVE1GU2VuZGVySGFu
ZGxlcj4ob2JqZWN0KQorICAgICAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAg
V2ViU3RyaW5nIHRvbmVzID0gbV9vYmplY3QtPmN1cnJlbnRUb25lQnVmZmVyKCk7CisgICAgICAg
IG1fb2JqZWN0LT5jbGVhclRvbmVCdWZmZXIoKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFBsYXlU
b25lKHRvbmVzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViUlRDRFRNRlNlbmRlckhhbmRs
ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK01vY2tX
ZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKGNvbnN0
IFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50JiB0cmFjaykKKyAgICA6IG1fY2xpZW50KDApCisgICAg
LCBtX3RyYWNrKHRyYWNrKQoreworfQorCit2b2lkIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxl
cjo6c2V0Q2xpZW50KFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KiBjbGllbnQpCit7Cisg
ICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisKK1dlYlN0cmluZyBNb2NrV2ViUlRDRFRNRlNlbmRl
ckhhbmRsZXI6OmN1cnJlbnRUb25lQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV90b25lQnVmZmVy
OworfQorCitib29sIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6Y2FuSW5zZXJ0RFRNRigp
Cit7CisgICAgYXNzZXJ0KG1fY2xpZW50ICYmICFtX3RyYWNrLmlzTnVsbCgpKTsKKyAgICByZXR1
cm4gbV90cmFjay5zb3VyY2UoKS50eXBlKCkgPT0gV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVB
dWRpbyAmJiBtX3RyYWNrLmlzRW5hYmxlZCgpICYmIG1fdHJhY2suc291cmNlKCkucmVhZHlTdGF0
ZSgpID09IFdlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlTGl2ZTsKK30KKworYm9vbCBN
b2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6Omluc2VydERUTUYoY29uc3QgV2ViU3RyaW5nJiB0
b25lcywgbG9uZyBkdXJhdGlvbiwgbG9uZyBpbnRlclRvbmVHYXApCit7CisgICAgYXNzZXJ0KG1f
Y2xpZW50KTsKKyAgICBpZiAoIWNhbkluc2VydERUTUYoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgbV90b25lQnVmZmVyID0gdG9uZXM7CisgICAgcG9zdFRhc2sobmV3IERUTUZTZW5k
ZXJUb25lVGFzayh0aGlzLCBtX2NsaWVudCkpOworICAgIHBvc3RUYXNrKG5ldyBEVE1GU2VuZGVy
VG9uZVRhc2sodGhpcywgbV9jbGllbnQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworI2VuZGlm
IC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjYxYmFkYjA5YzAzOTVjNTQ4ZDU0NGJmYWU5NGY5ZmMzNjkzNjg0MjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNlbmRlckhh
bmRsZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vY2tXZWJS
VENEVE1GU2VuZGVySGFuZGxlcl9oCisjZGVmaW5lIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxl
cl9oCisKKyNpbmNsdWRlICJXZWJUYXNrLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3Ry
ZWFtQ29tcG9uZW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgorCitjbGFzcyBNb2NrV2ViUlRDRFRN
RlNlbmRlckhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlciB7
CitwdWJsaWM6CisgICAgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKGNvbnN0IFdlYktpdDo6
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQo
V2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCopIE9WRVJSSURFOworCisgICAg
dmlydHVhbCBXZWJLaXQ6OldlYlN0cmluZyBjdXJyZW50VG9uZUJ1ZmZlcigpIE9WRVJSSURFOwor
CisgICAgdmlydHVhbCBib29sIGNhbkluc2VydERUTUYoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgaW5zZXJ0RFRNRihjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgdG9uZXMsIGxvbmcgZHVy
YXRpb24sIGxvbmcgaW50ZXJUb25lR2FwKSBPVkVSUklERTsKKworICAgIC8vIFdlYlRhc2sgcmVs
YXRlZCBtZXRob2RzCisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tMaXN0KCkg
eyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICB2b2lkIGNsZWFyVG9uZUJ1ZmZlcigpIHsgbV90
b25lQnVmZmVyLnJlc2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBNb2NrV2ViUlRDRFRNRlNlbmRl
ckhhbmRsZXIoKTsKKworICAgIFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQq
IG1fY2xpZW50OworICAgIFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQgbV90cmFjazsK
KyAgICBXZWJLaXQ6OldlYlN0cmluZyBtX3RvbmVCdWZmZXI7CisgICAgV2ViVGVzdFJ1bm5lcjo6
V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKK307CisKKyNlbmRpZiAvLyBNb2NrV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcAppbmRleCBhYmI4
NjkwODY5ZDQ1Y2Y5MjhkOGJiOGZkNzc1OWU1YWFjNjRhZDFiLi4wMjU5ZmZlYWM1ZmQ5OTdlNGJl
MTQzOTUwZTYxODVjNDQxMDk4MDE4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXIuaCIKIAogI2luY2x1ZGUgIk1vY2tDb25zdHJhaW50cy5oIgorI2luY2x1ZGUgIk1vY2tX
ZWJSVENEVE1GU2VuZGVySGFuZGxlci5oIgogI2luY2x1ZGUgIk1vY2tXZWJSVENEYXRhQ2hhbm5l
bEhhbmRsZXIuaCIKICNpbmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlh
Q29uc3RyYWludHMuaD4KQEAgLTI5NCw2ICsyOTUsMTEgQEAgV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyKiBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVEYXRhQ2hhbm5lbChj
b24KICAgICByZXR1cm4gbmV3IE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIobGFiZWwsIHJl
bGlhYmxlKTsKIH0KIAorV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIE1vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXI6OmNyZWF0ZURUTUZTZW5kZXIoY29uc3QgV2ViTWVkaWFTdHJlYW1Db21w
b25lbnQmIHRyYWNrKQoreworICAgIHJldHVybiBuZXcgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyKHRyYWNrKTsKK30KKwogdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpz
dG9wKCkKIHsKICAgICBtX3N0b3BwZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ci5oCmluZGV4IDlkMGVkNzk2ZDFlMzkzYjY1MTZhZTRiMzQwODQ2Y2EwODExNjI0OTAuLmJiOTY0
MTg3NjIwNjA3MjllYzg4NTYxYjRjOTAzMDQ5ZDU2MTE5MTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoY29uc3QgV2ViS2l0OjpXZWJSVENTdGF0
c1JlcXVlc3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyKiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgbGFi
ZWwsIGJvb2wgcmVsaWFibGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJSVENE
VE1GU2VuZGVySGFuZGxlciogY3JlYXRlRFRNRlNlbmRlcihjb25zdCBXZWJLaXQ6OldlYk1lZGlh
U3RyZWFtQ29tcG9uZW50JiB0cmFjaykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3Ao
KSBPVkVSUklERTsKIAogICAgIC8vIFdlYlRhc2sgcmVsYXRlZCBtZXRob2RzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTk1
YWIxYzc5YzFkYmFmNzIwMTY5YjFmZTc0MjNlZTk5YjljYWFhNC4uNDJhYTcwMzA4ZTVjMjUwMWVi
NDFkNzY3ZDY4OTNjZmNjYjdlYzY0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAxLTI5
ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlh
U3RyZWFtIEFQSTogSW1wbGVtZW50IERUTUYgc3VwcG9ydCBpbiBSVENQZWVyQ29ubmVjdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzgyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYuaHRtbDogQWRk
ZWQuCisKIDIwMTMtMDEtMzEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgTGF5b3V0IFRlc3QgaW5zcGVjdG9yLXByb3RvY29sL3Rha2UtaGVhcC1zbmFw
c2hvdC5odG1sIGNyYXNoZXMgaW4gdGhlIERlYnVnIG1vZGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzYzUwY2UzMDk3NmJkZjhiMGJlMzM3ZDRkYzgxN2VlNGU2
Zjk2ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLWR0bWYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK1Rlc3Rz
IFJUQ0RUTUZTZW5kZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9LCBnb3RTdHJlYW0sIGVycm9y
KTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCitQQVNT
IHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpLmxlbmd0aCBpcyAwCitQQVNTIHBjIGlzIGNvbm5lY3RlZAorUEFTUyBkdG1mc2Vu
ZGVyID0gcGMuY3JlYXRlRFRNRlNlbmRlcih0cmFjayk7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
U3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIGR0bWZzZW5kZXIgPSBwYy5jcmVh
dGVEVE1GU2VuZGVyKHRyYWNrKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIGR0bWZz
ZW5kZXIuY2FuSW5zZXJ0RFRNRiBpcyB0cnVlCitQQVNTIGR0bWZzZW5kZXIudG9uZUJ1ZmZlciBp
cyAiMSIKK1BBU1Mgb250b25lY2hhbmdlIHdhcyBjYWxsZWQuCitQQVNTIGV2ZW50LnRvbmUgaXMg
IjEiCitQQVNTIG9udG9uZWNoYW5nZSB3YXMgY2FsbGVkLgorUEFTUyBldmVudC50b25lIGlzICIi
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1k
dG1mLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LWR0bWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2Y4OTRhM2I0ZTlmODdkZTllNWQ2NmZiNTQwZGE5MDI1
YzdkMDM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIFJUQ0RUTUZTZW5kZXIuIik7
CisKK3ZhciBwYyA9IG51bGw7Cit2YXIgc3RyZWFtID0gbnVsbDsKK3ZhciBkdG1mc2VuZGVyID0g
bnVsbDsKKworZnVuY3Rpb24gZXJyb3IoKSB7CisgICAgdGVzdEZhaWxlZCgnRXJyb3IgY2FsbGJh
Y2sgY2FsbGVkLicpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit2YXIgZmlyc3RDYWxsID0g
dHJ1ZTsKKworZnVuY3Rpb24gb250b25lY2hhbmdlKGUpIHsKKyAgICB0ZXN0UGFzc2VkKCJvbnRv
bmVjaGFuZ2Ugd2FzIGNhbGxlZC4iKTsKKyAgICBldmVudCA9IGU7CisgICAgaWYgKGZpcnN0Q2Fs
bCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvbmUnLCAiMSIpOwor
ICAgICAgICBmaXJzdENhbGwgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvbmUnLCAiIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0KK30KKworZnVuY3Rpb24gcGNfb25pY2VjaGFuZ2UoKSB7CisgICAgaWYgKHBjLmlj
ZUNvbm5lY3Rpb25TdGF0ZSA9PT0gImNvbXBsZXRlZCIpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgi
cGMgaXMgY29ubmVjdGVkIik7CisgICAgICAgIHRyYWNrID0gc3RyZWFtLmdldEF1ZGlvVHJhY2tz
KClbMF07CisKKyAgICAgICAgc2hvdWxkVGhyb3coJ2R0bWZzZW5kZXIgPSBwYy5jcmVhdGVEVE1G
U2VuZGVyKHRyYWNrKTsnKTsKKyAgICAgICAgcGMuYWRkU3RyZWFtKHN0cmVhbSk7CisgICAgICAg
IHNob3VsZE5vdFRocm93KCdkdG1mc2VuZGVyID0gcGMuY3JlYXRlRFRNRlNlbmRlcih0cmFjayk7
Jyk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnZHRtZnNlbmRlci5jYW5JbnNlcnREVE1GJyk7CisK
KyAgICAgICAgZHRtZnNlbmRlci5vbnRvbmVjaGFuZ2UgPSBvbnRvbmVjaGFuZ2U7CisgICAgICAg
IGR0bWZzZW5kZXIuaW5zZXJ0RFRNRigiMSIpOworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJp
bmcoJ2R0bWZzZW5kZXIudG9uZUJ1ZmZlcicsICIxIik7CisgICAgfQorfQorCitmdW5jdGlvbiBn
b3RTdHJlYW0ocykgeworICAgIHN0cmVhbSA9IHM7CisgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGdl
bmVyYXRlZC4nKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
JywgJzEnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywg
JzAnKTsKKworICAgIHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwsIG51bGwp
OworICAgIHBjLm9uaWNlY2hhbmdlID0gcGNfb25pY2VjaGFuZ2U7Cit9CisKK3Nob3VsZE5vdFRo
cm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSwgZ290U3RyZWFt
LCBlcnJvcik7Iik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185749</attachid>
            <date>2013-01-31 04:39:53 -0800</date>
            <delta_ts>2013-02-04 02:37:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106782-20130131133636.patch</filename>
            <type>text/plain</type>
            <size>80542</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3YWNiM2ExNDRlOWI5
YWQ2MTdjZmQ2N2Y1YmQ1OWVjZWUzMTkwNjZkLi45ZTcxMjM0NDZkNDZiYmUyYTY1OTFhYjE3ZGM5
YzkwNmM0ZjdjYzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMy0wMS0zMSAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IEltcGxlbWVudCBEVE1GIHN1cHBvcnQgaW4gUlRDUGVlckNvbm5lY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjc4MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBXZWJSVEMg
c3BlY2lmaWNhdGlvbiBoYXZlIGFkZGVkIHN1cHBvcnQgZm9yIERUTUY6CisgICAgICAgIGh0dHA6
Ly9kZXYudzMub3JnLzIwMTEvd2VicnRjL2VkaXRvci93ZWJydGMuaHRtbCNwZWVyLXRvLXBlZXIt
ZHRtZgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIHdpc2UgdGhpcyBpcyBpbXBsZW1lbnRlZCB1
c2luZyB0aGUgc2FtZSBwYXR0ZXJuIGFzIFJUQ0RhdGFDaGFubmVsOworICAgICAgICB3aGVyZSBh
IFJUQ0RUTUZTZW5kZXJIYW5kbGVyIGlzIGNyZWF0ZWQgYnkgdGhlIFVBIHRocm91Z2ggYSBuZXcg
bWV0aG9kIG9uCisgICAgICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFt
Q29tcG9uZW50Lmg6CisgICAgICAgIChXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCk6CisgICAgICAg
ICogY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6On5XZWJSVENEVE1GU2VuZGVySGFu
ZGxlcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
Q2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlJUQ0RUTUZT
ZW5kZXJIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhh
bmRsZXJDbGllbnQ6On5XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCk6CisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpj
cmVhdGVEVE1GU2VuZGVyKToKKwogMjAxMy0wMS0zMCAgWXVzdWYgT3p1eXNhbCAgPHl1c3Vmb0Bn
b29nbGUuY29tPgogCiAgICAgICAgIFN0YXJ0IHNlbmRpbmcgc2Nyb2xsVHlwZSBhcyBOb25CdWJi
bGluZ0dlc3R1cmUgZm9yIGZsaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU2NDA4YTgwOWZkZWJjZWU3ZTg4
N2UzYTEyZGM3OTEyNzMzY2QxNjIuLmYwMWY4MDBlMjJmMjRkODM5OGZjNjYxMjdhNWNmMDRjYmU3
MTcyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxODYgQEAKKzIwMTMtMDEtMzEgIFRvbW15IFdp
ZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJ
OiBJbXBsZW1lbnQgRFRNRiBzdXBwb3J0IGluIFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3ODIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViUlRDIHNwZWNpZmlj
YXRpb24gaGF2ZSBhZGRlZCBzdXBwb3J0IGZvciBEVE1GOgorICAgICAgICBodHRwOi8vZGV2Lncz
Lm9yZy8yMDExL3dlYnJ0Yy9lZGl0b3Ivd2VicnRjLmh0bWwjcGVlci10by1wZWVyLWR0bWYKKwor
ICAgICAgICBJbXBsZW1lbnRhdGlvbiB3aXNlIHRoaXMgaXMgaW1wbGVtZW50ZWQgdXNpbmcgdGhl
IHNhbWUgcGF0dGVybiBhcyBSVENEYXRhQ2hhbm5lbDsKKyAgICAgICAgd2hlcmUgYSBSVENEVE1G
U2VuZGVySGFuZGxlciBpcyBjcmVhdGVkIGJ5IHRoZSBVQSB0aHJvdWdoIGEgbmV3IG1ldGhvZCBv
bgorICAgICAgICBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuCisKKyAgICAgICAgVGVzdDogZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwKKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpSVENEVE1GU2VuZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RUTUZTZW5kZXI6On5SVENEVE1GU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RUTUZTZW5kZXI6OmNhbkluc2VydERUTUYpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRN
RlNlbmRlcjo6dHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6dG9uZUJ1
ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjppbnNlcnREVE1GKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmRpZFBsYXlUb25lKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRFRNRlNlbmRlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpSVENEVE1GU2VuZGVyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6
OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjplbnN1
cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6c2No
ZWR1bGVEaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OnNj
aGVkdWxlZEV2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEVE1GU2VuZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENE
VE1GU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmR1cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmludGVyVG9uZUdhcCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmlkbDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50
OjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZUb25l
Q2hhbmdlRXZlbnQ6On5SVENEVE1GVG9uZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OnRvbmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRN
RlRvbmVDaGFuZ2VFdmVudDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChSVENEVE1GVG9uZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVEYXRhQ2hhbm5lbCk6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpnZXRTdHJlYW1C
eVRyYWNrSWQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURU
TUZTZW5kZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb24pOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaW46CisgICAgICAgICogZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFTdHJlYW1Db21wb25lbnQ6OldlYk1lZGlhU3RyZWFtQ29tcG9uZW50KToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRs
ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ0RUTUZTZW5kZXJI
YW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjp+UlRDRFRN
RlNlbmRlckhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZT
ZW5kZXJIYW5kbGVyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1G
U2VuZGVySGFuZGxlckNsaWVudDo6flJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxl
ckNocm9taXVtLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpSVENEVE1GU2VuZGVySGFuZGxlckNo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06
On5SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OnNldENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpS
VENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpjdXJyZW50VG9uZUJ1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpjYW5JbnNlcnREVE1GKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06Omluc2VydERU
TUYpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6ZGlk
UGxheVRvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpj
cmVhdGVEVE1GU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmg6
CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bSk6CisKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6UlRDRFRNRlNlbmRlcik6CisgICAgICAg
IChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjp+UlRDRFRNRlNlbmRlcik6CisgICAgICAgIChXZWJD
b3JlOjpSVENEVE1GU2VuZGVyOjpjYW5JbnNlcnREVE1GKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q0RUTUZTZW5kZXI6OnRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OnRv
bmVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRNRik6
CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpkaWRQbGF5VG9uZSk6CisgICAgICAg
IChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlJUQ0RUTUZTZW5kZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRFRNRlNlbmRlcjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2Vu
ZGVyOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6
ZW5zdXJlRXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6
OnNjaGVkdWxlRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVy
OjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRFRNRlNlbmRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
UlRDRFRNRlNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpkdXJhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjppbnRlclRvbmVHYXApOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGw6IEFkZGVkLgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GVG9uZUNo
YW5nZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlRvbmVDaGFuZ2VF
dmVudDo6UlRDRFRNRlRvbmVDaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1G
VG9uZUNoYW5nZUV2ZW50Ojp+UlRDRFRNRlRvbmVDaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50Ojp0b25lKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q0RUTUZUb25lQ2hhbmdlRXZlbnQ6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoUlRDRFRNRlRvbmVDaGFuZ2VFdmVudEluaXQpOgorICAgICAgICAo
UlRDRFRNRlRvbmVDaGFuZ2VFdmVudCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEVE1GVG9uZUNoYW5nZUV2ZW50LmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVy
Q29ubmVjdGlvbjo6Y3JlYXRlRGF0YUNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbjo6Z2V0U3RyZWFtQnlUcmFja0lkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVEVE1GU2VuZGVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbDoKKyAgICAgICAgKiBXZWJDb3Jl
Lmd5cGk6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmluOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW46CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYVN0
cmVhbUNvbXBvbmVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ29tcG9u
ZW50OjpXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENEVE1GU2VuZGVySGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxlcjo6flJUQ0RUTUZTZW5kZXJIYW5kbGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVySGFuZGxlckNs
aWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDRFRNRlNlbmRl
ckhhbmRsZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlckhhbmRsZXJD
bGllbnQ6On5SVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2Vu
ZGVySGFuZGxlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNl
bmRlckhhbmRsZXJDaHJvbWl1bTo6UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjp+UlRDRFRNRlNlbmRl
ckhhbmRsZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxl
ckNocm9taXVtOjpzZXRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlckhh
bmRsZXJDaHJvbWl1bTo6Y3VycmVudFRvbmVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6Y2FuSW5zZXJ0RFRNRik6CisgICAgICAgIChXZWJD
b3JlOjpSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjppbnNlcnREVE1GKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OmRpZFBsYXlUb25lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxl
ckNocm9taXVtLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENEVE1G
U2VuZGVySGFuZGxlckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
aHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6Y3JlYXRlRFRNRlNlbmRl
cik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
aHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oOgorICAgICAgICAoUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0pOgorCiAyMDEzLTAxLTMxICBLZW50YXJvIEhh
cmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVjhdIFRyYWNlIG5vdCBvbmx5
IG1ham9yIERPTSBHQ3MgYnV0IGFsc28gbWlub3IgRE9NIEdDcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpp
bmRleCA5NzQ5YTVjMDQyYjEzNDQ1M2JkNmYzNjk0NDhmNTRiNzk1YzAzZDJkLi4wMDAyMzc1Y2Vi
NDM1OTY4MzZhZTBmYTdhNDJhZmY1YzI4ODM5NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZv
cm0vUGxhdGZvcm0uZ3lwaQorKysgYi9Tb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQpAQCAt
MTAwLDYgKzEwMCw4IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVP
d25QdHIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlByaXZhdGVQdHIuaCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0NvbmZpZ3VyYXRpb24uaCcsCisg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgnLAor
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVu
dC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhh
bmRsZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0lDRUNh
bmRpZGF0ZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaAppbmRleCA3ZjM3OTA5ZjdkYWVkNzZkY2Y4ZTkw
OTc1ZWM1MWE1ZmVlODdmY2E3Li5iYThmNDIzZWQ1OTViZWNjZmYwMjY0MTczNzFhN2ZlN2Y4YjJm
ZDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlh
U3RyZWFtQ29tcG9uZW50LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKIAogI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50KFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ29tcG9uZW50Kik7CisgICAgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQo
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29tcG9uZW50Pik7CiAgICAgV2Vi
TWVkaWFTdHJlYW1Db21wb25lbnQmIG9wZXJhdG9yPShXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbXBv
bmVudCopOwogICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVh
bUNvbXBvbmVudD4oKSBjb25zdDsKICAgICBvcGVyYXRvciBXZWJDb3JlOjpNZWRpYVN0cmVhbUNv
bXBvbmVudCooKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jM2YwNzAzODNi
MTcyZDdjNmU0NDk5ZDdjOWIxMzcxM2JiY2EwODA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUlRDRFRNRlNlbmRlckhhbmRs
ZXJfaAorI2RlZmluZSBXZWJSVENEVE1GU2VuZGVySGFuZGxlcl9oCisKKyNpbmNsdWRlICJXZWJD
b21tb24uaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudDsKKworY2xhc3MgV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2xpZW50KikgPSAwOworCisgICAgdmlydHVhbCBXZWJTdHJpbmcgY3VycmVudFRvbmVC
dWZmZXIoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSW5zZXJ0RFRNRigpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaW5zZXJ0RFRNRihjb25zdCBXZWJTdHJpbmcmIHRvbmVzLCBsb25nIGR1
cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJSVENEVE1GU2VuZGVySGFuZGxlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xp
ZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY3ZDNhNWNmYmJhZDE0YzM0YTY4NGNjMjRiZTNm
YTk2NzUzODViNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaApAQCAtMCwwICsxLDQxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50X2gKKyNk
ZWZpbmUgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViQ29t
bW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJSVENEVE1GU2VuZGVySGFu
ZGxlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViUlRDRFRNRlNlbmRlckhhbmRs
ZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRQbGF5VG9uZShjb25zdCBXZWJT
dHJpbmcmIHRvbmUpIGNvbnN0ID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmgKaW5kZXggMjdkMGVlNjcwMTgzYWUwMmVjYWI1ZjQ4ZTMxY2EyNmZlNzg3YjFlOC4u
Yjk1Y2YzZTUyY2VkYmIzNDUwMThhZTg4ZDFhZjNmMTlmYjkyNTdlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlci5oCkBAIC0zMyw4ICszMywxMCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIFdlYk1lZGlhQ29uc3RyYWludHM7CitjbGFzcyBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudDsK
IGNsYXNzIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKIGNsYXNzIFdlYlJUQ0NvbmZpZ3VyYXRp
b247CitjbGFzcyBXZWJSVENEVE1GU2VuZGVySGFuZGxlcjsKIGNsYXNzIFdlYlJUQ0RhdGFDaGFu
bmVsSGFuZGxlcjsKIGNsYXNzIFdlYlJUQ0lDRUNhbmRpZGF0ZTsKIGNsYXNzIFdlYlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNsaWVudDsKQEAgLTYzLDYgKzY1LDcgQEAgcHVibGljOgogICAgIC8v
IEZJWE1FOiBSZW1vdmUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB3aGVuIGNsaWVudHMgaGF2ZSBj
aGFuZ2VkLgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhjb25zdCBXZWJSVENTdGF0c1JlcXVl
c3QmKSB7IH0KICAgICB2aXJ0dWFsIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogY3JlYXRlRGF0
YUNoYW5uZWwoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkgeyByZXR1cm4g
MDsgfQorICAgIHZpcnR1YWwgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIGNyZWF0ZURUTUZTZW5k
ZXIoY29uc3QgV2ViTWVkaWFTdHJlYW1Db21wb25lbnQmIHRyYWNrKSB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IDgwMzY0NGI3YWU5YjE0NjlmNGYwODVhOWEzN2E3ZjIxMTg2ZjM5ZTYuLjYzYjVlN2RhZDUxOTU2
YTE0MWQzMGJjMTg1ZWMzZTkzMDdlZGFjYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjEs
NiArMjIxLDggQEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsCisgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GU2VuZGVyLmlkbAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRN
RlRvbmVDaGFuZ2VFdmVudC5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwK
ICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vycm9yQ2FsbGJhY2suaWRsCkBAIC04NjMsNiAr
ODY1LDggQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tFdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFt
LmNwcAorICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKKyAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5k
aWRhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlZTllZmE5MjA2M2M4
NWRmMDIzZTRiOTdmMmM3NGQ3OGZlNzVmZjY2Li5lZDNkNWQ2OWViNDUxNDhkMDYzZDE5YWViOGY4
Y2M4OGE1MjMyYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYzMyw2ICs2
MzMsMTAgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2suaCBcCiAJRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1JHQkNvbG9yLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JHQkNv
bG9yLmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEVE1GU2VuZGVyLmNwcCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0RUTUZTZW5kZXIuaCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwIFwKKwlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUlRDRGF0YUNoYW5uZWwuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
UlRDRGF0YUNoYW5uZWwuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0RhdGFDaGFu
bmVsRXZlbnQuY3BwIFwKQEAgLTEyNDYsNiArMTI1MCw4IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0g
XAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ci5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENFcnJvckNhbGxiYWNrLmlkbCBcCkBAIC0xOTQzLDYgKzE5NDksMTAg
QEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCBcCiAJU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggXAog
CVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3Vj
Y2Vzc0NhbGxiYWNrLmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZUb25lQ2hhbmdlRXZlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcCBcCkBAIC01NzUzLDYgKzU3NjMsOCBA
QCB3ZWJjb3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCBcCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXIuaCBc
CisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRs
ZXJDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0
YUNoYW5uZWxIYW5kbGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zODRhNDMwZjcyZjc1MTI1YzNmOWY1NzZkNGE3YzJlMTg5NGM5ZmYzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2Vu
ZGVyLmNwcApAQCAtMCwwICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlJUQ0RUTUZTZW5k
ZXIuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVh
bVRyYWNrLmgiCisjaW5jbHVkZSAiUlRDRFRNRlNlbmRlckhhbmRsZXIuaCIKKyNpbmNsdWRlICJS
VENEVE1GVG9uZUNoYW5nZUV2ZW50LmgiCisjaW5jbHVkZSAiUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0YXRpYyBjb25zdCBsb25nIG1pblRvbmVEdXJhdGlvbiA9IDcwOworc3Rh
dGljIGNvbnN0IGxvbmcgZGVmYXVsdFRvbmVEdXJhdGlvbiA9IDEwMDsKK3N0YXRpYyBjb25zdCBs
b25nIG1heFRvbmVEdXJhdGlvbiA9IDYwMDA7CitzdGF0aWMgY29uc3QgbG9uZyBtaW5JbnRlclRv
bmVHYXAgPSA1MDsKK3N0YXRpYyBjb25zdCBsb25nIGRlZmF1bHRJbnRlclRvbmVHYXAgPSA1MDsK
KworUGFzc1JlZlB0cjxSVENEVE1GU2VuZGVyPiBSVENEVE1GU2VuZGVyOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBwZWVy
Q29ubmVjdGlvbkhhbmRsZXIsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFj
ayA9IHBycFRyYWNrOworICAgIE93blB0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4gaGFuZGxlciA9
IHBlZXJDb25uZWN0aW9uSGFuZGxlci0+Y3JlYXRlRFRNRlNlbmRlcih0cmFjay0+Y29tcG9uZW50
KCkpOworICAgIGlmICghaGFuZGxlcikgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQdHI8UlRDRFRNRlNlbmRlcj4g
ZHRtZlNlbmRlciA9IGFkb3B0UmVmKG5ldyBSVENEVE1GU2VuZGVyKGNvbnRleHQsIHRyYWNrLCBo
YW5kbGVyLnJlbGVhc2UoKSkpOworICAgIGR0bWZTZW5kZXItPnN1c3BlbmRJZk5lZWRlZCgpOwor
ICAgIHJldHVybiBkdG1mU2VuZGVyLnJlbGVhc2UoKTsKK30KKworUlRDRFRNRlNlbmRlcjo6UlRD
RFRNRlNlbmRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+IHRyYWNrLCBQYXNzT3duUHRyPFJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBo
YW5kbGVyKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX3Ry
YWNrKHRyYWNrKQorICAgICwgbV9kdXJhdGlvbihkZWZhdWx0VG9uZUR1cmF0aW9uKQorICAgICwg
bV9pbnRlclRvbmVHYXAoZGVmYXVsdEludGVyVG9uZUdhcCkKKyAgICAsIG1faGFuZGxlcihoYW5k
bGVyKQorICAgICwgbV9zdG9wcGVkKGZhbHNlKQorICAgICwgbV9zY2hlZHVsZWRFdmVudFRpbWVy
KHRoaXMsICZSVENEVE1GU2VuZGVyOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQpCit7CisgICAg
bV9oYW5kbGVyLT5zZXRDbGllbnQodGhpcyk7Cit9CisKK1JUQ0RUTUZTZW5kZXI6On5SVENEVE1G
U2VuZGVyKCkKK3sKK30KKworYm9vbCBSVENEVE1GU2VuZGVyOjpjYW5JbnNlcnREVE1GKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9oYW5kbGVyLT5jYW5JbnNlcnREVE1GKCk7Cit9CisKK01lZGlh
U3RyZWFtVHJhY2sqIFJUQ0RUTUZTZW5kZXI6OnRyYWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV90cmFjay5nZXQoKTsKK30KKworU3RyaW5nIFJUQ0RUTUZTZW5kZXI6OnRvbmVCdWZmZXIoKSBj
b25zdAoreworICAgIHJldHVybiBtX2hhbmRsZXItPmN1cnJlbnRUb25lQnVmZmVyKCk7Cit9CisK
K3ZvaWQgUlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBFeGNl
cHRpb25Db2RlJiBlYykKK3sKKyAgICBpbnNlcnREVE1GKHRvbmVzLCBkZWZhdWx0VG9uZUR1cmF0
aW9uLCBkZWZhdWx0SW50ZXJUb25lR2FwLCBlYyk7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlcjo6
aW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBpbnNlcnREVE1GKHRvbmVzLCBkdXJhdGlvbiwgZGVmYXVsdEludGVy
VG9uZUdhcCwgZWMpOworfQorCit2b2lkIFJUQ0RUTUZTZW5kZXI6Omluc2VydERUTUYoY29uc3Qg
U3RyaW5nJiB0b25lcywgbG9uZyBkdXJhdGlvbiwgbG9uZyBpbnRlclRvbmVHYXAsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmICghY2FuSW5zZXJ0RFRNRigpKSB7CisgICAgICAgIGVjID0g
Tk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZHVy
YXRpb24gPiBtYXhUb25lRHVyYXRpb24gfHwgZHVyYXRpb24gPCBtaW5Ub25lRHVyYXRpb24pIHsK
KyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKGludGVyVG9uZUdhcCA8IG1pbkludGVyVG9uZUdhcCkgeworICAgICAgICBlYyA9IFNZTlRB
WF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2R1cmF0aW9uID0gZHVyYXRp
b247CisgICAgbV9pbnRlclRvbmVHYXAgPSBpbnRlclRvbmVHYXA7CisKKyAgICBpZiAoIW1faGFu
ZGxlci0+aW5zZXJ0RFRNRih0b25lcywgbV9kdXJhdGlvbiwgbV9pbnRlclRvbmVHYXApKQorICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlcjo6ZGlkUGxheVRv
bmUoY29uc3QgU3RyaW5nJiB0b25lKQoreworICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChSVENE
VE1GVG9uZUNoYW5nZUV2ZW50OjpjcmVhdGUodG9uZSkpOworfQorCitjb25zdCBBdG9taWNTdHJp
bmcmIFJUQ0RUTUZTZW5kZXI6OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBl
dmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yUlRDRFRNRlNlbmRlcjsKK30KKworU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogUlRDRFRNRlNlbmRlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OworfQorCit2b2lkIFJUQ0RUTUZTZW5kZXI6OnN0b3AoKQoreworICAgIG1fc3RvcHBlZCA9IHRy
dWU7CisgICAgbV9oYW5kbGVyLT5zZXRDbGllbnQoMCk7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSog
UlRDRFRNRlNlbmRlcjo6ZXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRU
YXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIFJUQ0RUTUZTZW5kZXI6OmVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKwor
dm9pZCBSVENEVE1GU2VuZGVyOjpzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4gZXZlbnQpCit7CisgICAgbV9zY2hlZHVsZWRFdmVudHMuYXBwZW5kKGV2ZW50KTsKKworICAg
IGlmICghbV9zY2hlZHVsZWRFdmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2NoZWR1
bGVkRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlcjo6
c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKFRpbWVyPFJUQ0RUTUZTZW5kZXI+KikKK3sKKyAgICBp
ZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50
PiA+IGV2ZW50czsKKyAgICBldmVudHMuc3dhcChtX3NjaGVkdWxlZEV2ZW50cyk7CisKKyAgICBW
ZWN0b3I8UmVmUHRyPEV2ZW50PiA+OjppdGVyYXRvciBpdCA9IGV2ZW50cy5iZWdpbigpOworICAg
IGZvciAoOyBpdCAhPSBldmVudHMuZW5kKCk7ICsraXQpCisgICAgICAgIGRpc3BhdGNoRXZlbnQo
KCppdCkucmVsZWFzZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y3NTE5YTgwMzVlNzY1MmE5
MzNmZjQ5NThiMmQ3NGU4Yzg2ZTVlYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCkBAIC0wLDAgKzEsMTAxIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RUTUZTZW5kZXJfaAorI2RlZmluZSBSVENEVE1GU2Vu
ZGVyX2gKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJBY3RpdmVET01P
YmplY3QuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1lZGlhU3RyZWFtVHJh
Y2s7CitjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CitjbGFzcyBSVENEVE1GU2VuZGVy
SGFuZGxlcjsKKworY2xhc3MgUlRDRFRNRlNlbmRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ0RU
TUZTZW5kZXI+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBSVENEVE1GU2VuZGVySGFuZGxl
ckNsaWVudCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8UlRDRFRNRlNlbmRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+LCBF
eGNlcHRpb25Db2RlJik7CisgICAgflJUQ0RUTUZTZW5kZXIoKTsKKworICAgIGJvb2wgY2FuSW5z
ZXJ0RFRNRigpIGNvbnN0OworICAgIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKCkgY29uc3Q7Cisg
ICAgU3RyaW5nIHRvbmVCdWZmZXIoKSBjb25zdDsKKyAgICBsb25nIGR1cmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kdXJhdGlvbjsgfQorICAgIGxvbmcgaW50ZXJUb25lR2FwKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbnRlclRvbmVHYXA7IH0KKworICAgIHZvaWQgaW5zZXJ0RFRNRihjb25zdCBTdHJp
bmcmIHRvbmVzLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBpbnNlcnREVE1GKGNvbnN0IFN0
cmluZyYgdG9uZXMsIGxvbmcgZHVyYXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGlu
c2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25lcywgbG9uZyBkdXJhdGlvbiwgbG9uZyBpbnRlclRv
bmVHYXAsIEV4Y2VwdGlvbkNvZGUmKTsKKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIodG9uZWNoYW5nZSk7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgT1ZFUlJJREU7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0dWFsIHZvaWQg
c3RvcCgpIE9WRVJSSURFOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxSVENEVE1GU2VuZGVyPjo6
cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRDRFRNRlNlbmRlcj46OmRlcmVmOworCitwcml2
YXRlOgorICAgIFJUQ0RUTUZTZW5kZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFjaz4sIFBhc3NPd25QdHI8UlRDRFRNRlNlbmRlckhhbmRsZXI+KTsK
KworICAgIHZvaWQgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKKyAg
ICB2b2lkIHNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZChUaW1lcjxSVENEVE1GU2VuZGVyPiopOwor
CisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRU
YXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3Vy
ZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQorICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50
VGFyZ2V0RGF0YTsKKworICAgIC8vIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50CisgICAgdmly
dHVhbCB2b2lkIGRpZFBsYXlUb25lKGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworCisgICAgUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+IG1fdHJhY2s7CisgICAgbG9uZyBtX2R1cmF0aW9uOworICAg
IGxvbmcgbV9pbnRlclRvbmVHYXA7CisKKyAgICBPd25QdHI8UlRDRFRNRlNlbmRlckhhbmRsZXI+
IG1faGFuZGxlcjsKKworICAgIGJvb2wgbV9zdG9wcGVkOworCisgICAgVGltZXI8UlRDRFRNRlNl
bmRlcj4gbV9zY2hlZHVsZWRFdmVudFRpbWVyOworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4g
bV9zY2hlZHVsZWRFdmVudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDRFRNRlNlbmRlcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5k
ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVy
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jYjA0MjkyMmUzZDg2ODM3OTAyNzM4OGE5ZjFkOGYzNmU4NDVkMTQy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEVE1GU2VuZGVyLmlkbApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitbCisgICAg
Q29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgIEFjdGl2ZURPTU9iamVjdCwKKyAgICBFdmVu
dFRhcmdldAorXSBpbnRlcmZhY2UgUlRDRFRNRlNlbmRlciB7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gY2FuSW5zZXJ0RFRNRjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFT
dHJlYW1UcmFjayB0cmFjazsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRvbmVC
dWZmZXI7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgZHVyYXRpb247CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgaW50ZXJUb25lR2FwOworCisgICAgdm9pZCBpbnNlcnREVE1GKGlu
IERPTVN0cmluZyB0b25lcywgaW4gW09wdGlvbmFsXSBsb25nIGR1cmF0aW9uLCBpbiBbT3B0aW9u
YWxdIGxvbmcgaW50ZXJUb25lR2FwKQorICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKwor
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udG9uZWNoYW5nZTsKKworICAgIC8vIEV2ZW50
VGFyZ2V0IGludGVyZmFjZQorICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5l
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNh
cHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNh
cHR1cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldmVudCkKKyAgICAg
ICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMmI5ZmQ5NDY4NTYxYjFmOTQ4OTYwNTdjZjY5NWM4OTkzNzRlM2IyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
VG9uZUNoYW5nZUV2ZW50LmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oIgorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ+IFJU
Q0RUTUZUb25lQ2hhbmdlRXZlbnQ6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBSVENEVE1GVG9uZUNoYW5nZUV2ZW50KTsKK30KKworUGFzc1JlZlB0cjxSVENEVE1GVG9uZUNo
YW5nZUV2ZW50PiBSVENEVE1GVG9uZUNoYW5nZUV2ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0
b25lKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudCh0
b25lKSk7Cit9CisKK1Bhc3NSZWZQdHI8UlRDRFRNRlRvbmVDaGFuZ2VFdmVudD4gUlRDRFRNRlRv
bmVDaGFuZ2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgY29uc3QgUlRD
RFRNRlRvbmVDaGFuZ2VFdmVudEluaXQmIGluaXRpYWxpemVyKQoreworICAgIEFTU0VSVCh0eXBl
ID09IGV2ZW50TmFtZXMoKS50b25lY2hhbmdlRXZlbnQpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudChpbml0aWFsaXplcikpOworfQorCitSVENEVE1GVG9u
ZUNoYW5nZUV2ZW50OjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50KCkKK3sKK30KKworUlRDRFRNRlRv
bmVDaGFuZ2VFdmVudDo6UlRDRFRNRlRvbmVDaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIHRvbmUp
CisgICAgOiBFdmVudChldmVudE5hbWVzKCkudG9uZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2Up
CisgICAgLCBtX3RvbmUodG9uZSkKK3sKK30KKworUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6UlRD
RFRNRlRvbmVDaGFuZ2VFdmVudChjb25zdCBSVENEVE1GVG9uZUNoYW5nZUV2ZW50SW5pdCYgaW5p
dGlhbGl6ZXIpCisgICAgOiBFdmVudChldmVudE5hbWVzKCkudG9uZWNoYW5nZUV2ZW50LCBpbml0
aWFsaXplcikKKyAgICAsIG1fdG9uZShpbml0aWFsaXplci50b25lKQoreworfQorCitSVENEVE1G
VG9uZUNoYW5nZUV2ZW50Ojp+UlRDRFRNRlRvbmVDaGFuZ2VFdmVudCgpCit7Cit9CisKK2NvbnN0
IFN0cmluZyYgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6dG9uZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fdG9uZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBSVENEVE1GVG9uZUNoYW5nZUV2
ZW50OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmlu
dGVyZmFjZUZvclJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2U1NTkwOGQ2OTVmNjgwYmVlMDY1NzY2ZDY1NzE1Y2EzMzFkNDAw
ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudF9oCisjZGVmaW5lIFJUQ0RUTUZUb25lQ2hh
bmdlRXZlbnRfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkV2ZW50
LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RydWN0IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnRJbml0IDogcHVibGljIEV2ZW50
SW5pdCB7CisgICAgU3RyaW5nIHRvbmU7Cit9OworCitjbGFzcyBSVENEVE1GVG9uZUNoYW5nZUV2
ZW50IDogcHVibGljIEV2ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENEVE1GVG9uZUNo
YW5nZUV2ZW50KCk7CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEVE1GVG9uZUNoYW5nZUV2
ZW50PiBjcmVhdGUoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENEVE1GVG9uZUNoYW5nZUV2
ZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0b25lKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
VENEVE1GVG9uZUNoYW5nZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBj
b25zdCBSVENEVE1GVG9uZUNoYW5nZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpOworCisgICAgY29u
c3QgU3RyaW5nJiB0b25lKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFJUQ0RUTUZUb25lQ2hh
bmdlRXZlbnQoKTsKKyAgICBSVENEVE1GVG9uZUNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgdG9u
ZSk7CisgICAgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudChjb25zdCBSVENEVE1GVG9uZUNoYW5nZUV2
ZW50SW5pdCYpOworCisgICAgU3RyaW5nIG1fdG9uZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENE
VE1GVG9uZUNoYW5nZUV2ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaWRsCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQwOTlhMjU2ZjJiNjc4ZDg4MzI2YTcyYTE4ZGIxZWNhZDk4ODk5NDIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQuaWRsCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRp
b25hbD1NRURJQV9TVFJFQU0sCisgICAgQ29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudAorXSBpbnRl
cmZhY2UgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudCA6IEV2ZW50IHsKKyAgICBbSW5pdGlhbGl6ZWRC
eUV2ZW50Q29uc3RydWN0b3JdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdG9uZTsKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24uY3BwCmluZGV4IDlmMDA3OTE4NTU5MWY2YzczMDg0ZDA3YmFjODRlNmY2Mjc3
YjgzYjAuLjY1MzI3YzQxNTgzZjc4OGVmNzEwZmMzMzZmYjg4NmFiNDI1MTA2YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24uY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0lt
cGwuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUV2ZW50LmgiCiAjaW5jbHVkZSAiUlRDQ29uZmln
dXJhdGlvbi5oIgorI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXIuaCIKICNpbmNsdWRlICJSVENEYXRh
Q2hhbm5lbC5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsRXZlbnQuaCIKICNpbmNsdWRlICJS
VENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIKQEAgLTQ1MCw2ICs0NTEsNDEgQEAgUGFzc1JlZlB0cjxS
VENEYXRhQ2hhbm5lbD4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURhdGFDaGFubmVsKFN0cmlu
ZyBsYWJlbCwgY28KICAgICByZXR1cm4gY2hhbm5lbC5yZWxlYXNlKCk7CiB9CiAKK01lZGlhU3Ry
ZWFtKiBSVENQZWVyQ29ubmVjdGlvbjo6Z2V0U3RyZWFtQnlUcmFja0lkKGNvbnN0IFN0cmluZyYg
dHJhY2tJZCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwIDsgaSA8IG1fbG9jYWxTdHJlYW1z
LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIE1lZGlhU3RyZWFtKiBzdHJlYW0gPSAgbV9sb2Nh
bFN0cmVhbXMtPml0ZW0oaSk7CisgICAgICAgIGlmIChzdHJlYW0tPmdldFRyYWNrQnlJZCh0cmFj
a0lkKSkKKyAgICAgICAgICAgIHJldHVybiBzdHJlYW07CisgICAgfQorICAgIHJldHVybiAwOwor
fQorCitQYXNzUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IFJUQ1BlZXJDb25uZWN0aW9uOjpjcmVhdGVE
VE1GU2VuZGVyKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ssIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmIChtX3NpZ25hbGluZ1N0YXRlID09IFNpZ25hbGluZ1N0YXRl
Q2xvc2VkKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKworICAgIGlmICghcHJwVHJhY2spIHsKKyAgICAgICAgZWMgPSBUeXBlRXJy
b3I7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiB0cmFjayA9IHBycFRyYWNrOworCisgICAgaWYgKCFnZXRTdHJlYW1CeVRyYWNrSWQodHJh
Y2stPmlkKCkpKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IGR0bWZTZW5kZXIgPSBSVENEVE1G
U2VuZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3BlZXJIYW5kbGVyLmdl
dCgpLCB0cmFjay5yZWxlYXNlKCksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiBkdG1mU2VuZGVyLnJlbGVhc2UoKTsKK30KKwogdm9pZCBSVENQZWVyQ29u
bmVjdGlvbjo6Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fc2lnbmFsaW5n
U3RhdGUgPT0gU2lnbmFsaW5nU3RhdGVDbG9zZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaAppbmRleCAyNGUxZDcz
MTdmYTc3ZDdhZDM2YTE5NGFiNzdiZmE4OWE1NWFlMjAzLi4xYjQ1NWIxMDhjYjQwMTFhMzc0YTI1
ZmQwMjRiM2YxZDQ5MGMxNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhQ29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVh
bVRyYWNrOwogY2xhc3MgUlRDQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJUQ0RUTUZTZW5kZXI7CiBj
bGFzcyBSVENEYXRhQ2hhbm5lbDsKIGNsYXNzIFJUQ0Vycm9yQ2FsbGJhY2s7CiBjbGFzcyBSVENT
ZXNzaW9uRGVzY3JpcHRpb247CkBAIC04NiwxNyArODcsMTcgQEAgcHVibGljOgogICAgIFN0cmlu
ZyBpY2VDb25uZWN0aW9uU3RhdGUoKSBjb25zdDsKIAogICAgIE1lZGlhU3RyZWFtTGlzdCogbG9j
YWxTdHJlYW1zKCkgY29uc3Q7Ci0KICAgICBNZWRpYVN0cmVhbUxpc3QqIHJlbW90ZVN0cmVhbXMo
KSBjb25zdDsKIAogICAgIHZvaWQgYWRkU3RyZWFtKGNvbnN0IFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0+LCBjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYUNvbnN0cmFpbnRzLCBFeGNlcHRpb25Db2RlJik7
Ci0KICAgICB2b2lkIHJlbW92ZVN0cmVhbShNZWRpYVN0cmVhbSosIEV4Y2VwdGlvbkNvZGUmKTsK
IAogICAgIHZvaWQgZ2V0U3RhdHMoUGFzc1JlZlB0cjxSVENTdGF0c0NhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gc2VsZWN0b3IpOwogCiAgICAg
UGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gY3JlYXRlRGF0YUNoYW5uZWwoU3RyaW5nIGxhYmVs
LCBjb25zdCBEaWN0aW9uYXJ5JiBkYXRhQ2hhbm5lbERpY3QsIEV4Y2VwdGlvbkNvZGUmKTsKIAor
ICAgIFBhc3NSZWZQdHI8UlRDRFRNRlNlbmRlcj4gY3JlYXRlRFRNRlNlbmRlcihQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+LCBFeGNlcHRpb25Db2RlJik7CisKICAgICB2b2lkIGNsb3NlKEV4
Y2VwdGlvbkNvZGUmKTsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobmVn
b3RpYXRpb25uZWVkZWQpOwpAQCAtMTM0LDYgKzEzNSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UlRDQ29uZmlndXJhdGlvbj4gcGFyc2VDb25maWd1cmF0aW9uKGNvbnN0IERp
Y3Rpb25hcnkmIGNvbmZpZ3VyYXRpb24sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNjaGVk
dWxlRGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgdm9pZCBzY2hlZHVsZWRF
dmVudFRpbWVyRmlyZWQoVGltZXI8UlRDUGVlckNvbm5lY3Rpb24+Kik7CisgICAgTWVkaWFTdHJl
YW0qIGdldFN0cmVhbUJ5VHJhY2tJZChjb25zdCBTdHJpbmcmIHRyYWNrSWQpOwogCiAgICAgLy8g
RXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEq
IGV2ZW50VGFyZ2V0RGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAppbmRleCA5Y2YwYjY0NjFjYTYwNTll
OWY1NmU4NzQ4ODliOTBmNjQ4ZjBhNjhiLi5lZDUxNGZhOTUyNGU5MTBkOGI1ODE5M2Q2YjQyODEx
NGFlNTJiNmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbApAQCAtNzksNiArNzksOSBAQAogICAgIFJUQ0Rh
dGFDaGFubmVsIGNyZWF0ZURhdGFDaGFubmVsKGluIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBU
cmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBsYWJlbCwgaW4gW09wdGlvbmFs
XSBEaWN0aW9uYXJ5IG9wdGlvbnMpCiAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAor
ICAgIFJUQ0RUTUZTZW5kZXIgY3JlYXRlRFRNRlNlbmRlcihpbiBNZWRpYVN0cmVhbVRyYWNrIHRy
YWNrKQorICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKICAgICB2b2lkIGNsb3NlKCkK
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA1NWIy
OWI0Y2U3MzM1M2MxY2MwY2U0ZDcxZTM0ZDhkNTBhYjRkYWJkLi5kODY5ZDU1YzMyNmY3YzY0MzIy
OTg5NTEwZjRkZTEyY2E1YWMyZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC03Miw2ICs3Miw4IEBA
CiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ci5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCcsCisgICAgICAgICAgICAnTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmlkbCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5pZGwnLAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5pZGwnLApAQCAtODE5LDEwICs4
MjEsMTQgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJN
ZWRpYUVycm9yLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3Ry
ZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oJywKLSAgICAgICAgICAgICdN
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwJywKKyAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAnLAotICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5oJywKKyAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAnLAorICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5oJywKICAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0Vycm9yQ2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oJywKQEAgLTQzNjAsNiArNDM2Niw4IEBACiAg
ICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0aW9uLmgnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyLmgn
LAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVy
Q2xpZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbEhhbmRsZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAnLApAQCAtNDM3Myw2ICs0MzgxLDggQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENWb2lkUmVxdWVzdC5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRl
ckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21p
dW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtLmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRFRNRlNlbmRlckhh
bmRsZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJv
bWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RhdGFDaGFubmVsSGFuZGxlckNocm9taXVt
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRl
eCAzZjBlN2EyN2I0Zjg5MmQyNWQ0ZDU3MTJlZjk1NDhhMmFiMzE4MTg2Li4yMmE3YjMyYmFiNzli
YzUyNjAwNzY0MWEzYjkxY2M0MGM1MWI0YzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAg
LTIzNCw2ICsyMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8obmVnb3RpYXRp
b25uZWVkZWQpIFwKICAgICBtYWNybyhkYXRhY2hhbm5lbCkgXAogICAgIG1hY3JvKGdhdGhlcmlu
Z2NoYW5nZSkgXAorICAgIG1hY3JvKHRvbmVjaGFuZ2UpIFwKICAgICBcCiAgICAgbWFjcm8oc2hv
dykgXAogICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmlu
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KaW5kZXggNTExYmRmNDFjZTY5NGQy
NTRhNGI2ZjQ3ZDZiYmQ1ZWViMWJiNDQ5Mi4uMjhlYzg0NGFmZDE3ZDBmZmMyM2RjMTY1ZWRhYzVm
MDNmZGRjODRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KQEAgLTM0LDYgKzM0LDcgQEAg
TWVkaWFTdHJlYW1FdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lZGlhU3RyZWFtVHJh
Y2tFdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFJUQ0ljZUNhbmRpZGF0ZUV2ZW50IGNv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTQogUlRDRGF0YUNoYW5uZWxFdmVudCBjb25kaXRpb25hbD1N
RURJQV9TVFJFQU0KK1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQgY29uZGl0aW9uYWw9TUVESUFfU1RS
RUFNCiBTcGVlY2hJbnB1dEV2ZW50IGNvbmRpdGlvbmFsPUlOUFVUX1NQRUVDSAogU3BlZWNoUmVj
b2duaXRpb25FcnJvciBjb25kaXRpb25hbD1TQ1JJUFRFRF9TUEVFQ0gKIFNwZWVjaFJlY29nbml0
aW9uRXZlbnQgY29uZGl0aW9uYWw9U0NSSVBURURfU1BFRUNICmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCAyNDM2ODVhNzg5MTJkYjQ3ODY5NDE1NDgxYzc4ODVh
OGIyNjA3YmY2Li44MjU2NjdiM2NhZDdhMzUxMWEwZGE0ZTA5ZWQ2OWU5MjJlNzExOTVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTI0LDYgKzI0LDcgQEAg
Tm9kZQogTm90aWZpY2F0aW9uIGNvbmRpdGlvbmFsPU5PVElGSUNBVElPTlN8TEVHQUNZX05PVElG
SUNBVElPTlMKIFBlcmZvcm1hbmNlIGNvbmRpdGlvbmFsPVdFQl9USU1JTkcKIFJUQ0RhdGFDaGFu
bmVsIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorUlRDRFRNRlNlbmRlciBjb25kaXRpb25hbD1N
RURJQV9TVFJFQU0KIFJUQ1BlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQog
U2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTaGFyZWRXb3JrZXJDb250
ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1D
b21wb25lbnQuY3BwCmluZGV4IDJjOTU3ZGI5ZGM4ZWZmNWMzNjUxYjNkNTQwYmJhZDA4ZjFmOWIy
NzcuLmE2MDg5NzE0ZjBmZTdkZGZiNDFiYmI3NWYyYTg3NTRmNmYzNmFiNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1D
b21wb25lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBv
cnQvV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuY3BwCkBAIC00OSw2ICs0OSwxMSBAQCBXZWJNZWRp
YVN0cmVhbUNvbXBvbmVudDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQoV2ViQ29yZTo6TWVkaWFT
dHJlYW1Db21wb25lbnQqCiB7CiB9CiAKK1dlYk1lZGlhU3RyZWFtQ29tcG9uZW50OjpXZWJNZWRp
YVN0cmVhbUNvbXBvbmVudChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Db21w
b25lbnQ+IG1lZGlhU3RyZWFtQ29tcG9uZW50KQorICAgIDogbV9wcml2YXRlKG1lZGlhU3RyZWFt
Q29tcG9uZW50KQoreworfQorCiBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYgV2ViTWVkaWFTdHJl
YW1Db21wb25lbnQ6Om9wZXJhdG9yPShXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbXBvbmVudCogbWVk
aWFTdHJlYW1Db21wb25lbnQpCiB7CiAgICAgbV9wcml2YXRlID0gbWVkaWFTdHJlYW1Db21wb25l
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
VE1GU2VuZGVySGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UlRDRFRNRlNlbmRlckhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGFlZTNlMjc3YWU5MTU1ODUwYWI5
NTFiOTJmMjMyZDQ0ZWZiZTgyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXIuaApAQCAtMCwwICsxLDUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKKyNkZWZpbmUg
UlRDRFRNRlNlbmRlckhhbmRsZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50OworCitjbGFzcyBSVENEVE1GU2VuZGVySGFu
ZGxlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UlRDRFRNRlNlbmRlckhhbmRsZXIoKSB7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQq
KSA9IDA7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VG9uZUJ1ZmZlcigpID0gMDsKKwor
ICAgIHZpcnR1YWwgYm9vbCBjYW5JbnNlcnREVE1GKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
bnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxvbmcgZHVyYXRpb24sIGxvbmcgaW50ZXJU
b25lR2FwKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDRFRNRlNlbmRlckhhbmRsZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNl
bmRlckhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODZiZDlkYjMyMzZkZDEx
NWRmNmYwMGIzNTcyOTc0NTNiOTdlMzcwOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LmgKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENEVE1GU2VuZGVySGFuZGxl
ckNsaWVudF9oCisjZGVmaW5lIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50X2gKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDRFRN
RlNlbmRlckhhbmRsZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflJUQ0RUTUZTZW5k
ZXJIYW5kbGVyQ2xpZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGxheVRvbmUoY29u
c3QgU3RyaW5nJikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ0RUTUZTZW5kZXJIYW5kbGVy
Q2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKaW5kZXggZDhmOTZkMzBmMzFlNmQx
OTU5N2UzOGY1MWZiOWI5ODQ3MDU3MjdlYi4uZTE5ZTRiMjM5ZTcxMjgwMjY2MjI3N2IzZWM5Yzk3
NzI4MTI4MzUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTQwLDcgKzQwLDkg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFDb25zdHJhaW50czsKK2NsYXNz
IE1lZGlhU3RyZWFtQ29tcG9uZW50OwogY2xhc3MgUlRDQ29uZmlndXJhdGlvbjsKK2NsYXNzIFJU
Q0RUTUZTZW5kZXJIYW5kbGVyOwogY2xhc3MgUlRDRGF0YUNoYW5uZWxIYW5kbGVyOwogY2xhc3Mg
UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcjsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudDsKQEAgLTY3LDEwICs2OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWRk
U3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiwgUGFzc1JlZlB0cjxNZWRp
YUNvbnN0cmFpbnRzPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTdHJlYW0oUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0
YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBz
dG9wKCkgPSAwOwotCi0gICAgLy8gUlRDRGF0YUNoYW5uZWwKICAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBTdHJpbmcm
IGxhYmVsLCBib29sIHJlbGlhYmxlKSA9IDA7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFJUQ0RU
TUZTZW5kZXJIYW5kbGVyPiBjcmVhdGVEVE1GU2VuZGVyKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1D
b21wb25lbnQ+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7CiAKIHByb3RlY3Rl
ZDoKICAgICBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RUTUZTZW5kZXJIYW5k
bGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hy
b21pdW0vUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTNkODBk
YjdiNTAwYTBkMTZlOTYzZjU4NzNhMDAyYWEwYzM4OWJjZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2hyb21pdW0uY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJS
VENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtLmgiCisKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVy
SGFuZGxlckNsaWVudC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxl
ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxSVENEVE1GU2VuZGVySGFu
ZGxlcj4gUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6Y3JlYXRlKFdlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyKiB3ZWJIYW5kbGVyKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUlRDRFRN
RlNlbmRlckhhbmRsZXJDaHJvbWl1bSh3ZWJIYW5kbGVyKSk7Cit9CisKK1JUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2hyb21pdW06OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0oV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXIqIHdlYkhhbmRsZXIpCisgICAgOiBtX3dlYkhhbmRsZXIoYWRvcHRQdHIod2Vi
SGFuZGxlcikpCisgICAgLCBtX2NsaWVudCgwKQoreworfQorCitSVENEVE1GU2VuZGVySGFuZGxl
ckNocm9taXVtOjp+UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bSgpCit7Cit9CisKK3ZvaWQg
UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6c2V0Q2xpZW50KFJUQ0RUTUZTZW5kZXJIYW5k
bGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgbV93ZWJI
YW5kbGVyLT5zZXRDbGllbnQobV9jbGllbnQgPyB0aGlzIDogMCk7Cit9CisKK1N0cmluZyBSVENE
VE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpjdXJyZW50VG9uZUJ1ZmZlcigpCit7CisgICAgcmV0
dXJuIG1fd2ViSGFuZGxlci0+Y3VycmVudFRvbmVCdWZmZXIoKTsKK30KKworYm9vbCBSVENEVE1G
U2VuZGVySGFuZGxlckNocm9taXVtOjpjYW5JbnNlcnREVE1GKCkKK3sKKyAgICByZXR1cm4gbV93
ZWJIYW5kbGVyLT5jYW5JbnNlcnREVE1GKCk7Cit9CisKK2Jvb2wgUlRDRFRNRlNlbmRlckhhbmRs
ZXJDaHJvbWl1bTo6aW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9u
LCBsb25nIGludGVyVG9uZUdhcCkKK3sKKyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5pbnNlcnRE
VE1GKHRvbmVzLCBkdXJhdGlvbiwgaW50ZXJUb25lR2FwKTsKK30KKwordm9pZCBSVENEVE1GU2Vu
ZGVySGFuZGxlckNocm9taXVtOjpkaWRQbGF5VG9uZShjb25zdCBXZWJTdHJpbmcmIHRvbmUpIGNv
bnN0Cit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkUGxheVRvbmUo
dG9uZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0
cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxlckNo
cm9taXVtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTI0NzM3NzNlNzlhMGMzZDRmY2UyOTk3M2RmMjk1ODY4NTRm
MjMzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2Nocm9taXVtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uaApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW1f
aAorI2RlZmluZSBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtX2gKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlci5oIgorI2luY2x1
ZGUgIlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDRFRNRlNlbmRl
ckhhbmRsZXJDbGllbnQ7CisKK2NsYXNzIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0gOiBw
dWJsaWMgUlRDRFRNRlNlbmRlckhhbmRsZXIsIHB1YmxpYyBXZWJLaXQ6OldlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxSVENEVE1G
U2VuZGVySGFuZGxlcj4gY3JlYXRlKFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqKTsK
KyAgICB2aXJ0dWFsIH5SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtKCk7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KikgT1ZFUlJJREU7
CisKKyAgICB2aXJ0dWFsIFN0cmluZyBjdXJyZW50VG9uZUJ1ZmZlcigpIE9WRVJSSURFOworCisg
ICAgdmlydHVhbCBib29sIGNhbkluc2VydERUTUYoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgaW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGlu
dGVyVG9uZUdhcCkgT1ZFUlJJREU7CisKKyAgICAvLyBXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBkaWRQbGF5VG9u
ZShjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgdG9uZSkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bShXZWJLaXQ6Oldl
YlJUQ0RUTUZTZW5kZXJIYW5kbGVyKik7CisKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJSVENEVE1G
U2VuZGVySGFuZGxlcj4gbV93ZWJIYW5kbGVyOworICAgIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xp
ZW50KiBtX2NsaWVudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENEVE1GU2VuZGVySGFuZGxlckNo
cm9taXVtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlckNocm9taXVtLmNwcAppbmRleCBiODljZDQ2MGM3NDViZGViYTE5ZWUyNDg5NDJhNGZhZmYw
ZDk1Y2U2Li4yMDQ3MTY2MzU1NzIzZTcyN2JhYTY2Y2NmNzI2MmFmNmNlZWFlNjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0u
Y3BwCkBAIC0zNSw3ICszNSwxMCBAQAogI2luY2x1ZGUgIlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ckNocm9taXVtLmgiCiAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzLmgiCisjaW5jbHVkZSAi
TWVkaWFTdHJlYW1Db21wb25lbnQuaCIKICNpbmNsdWRlICJSVENDb25maWd1cmF0aW9uLmgiCisj
aW5jbHVkZSAiUlRDRFRNRlNlbmRlckhhbmRsZXIuaCIKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVy
SGFuZGxlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21p
dW0uaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmgiCkBAIC00Niw4ICs0OSwxMCBAQAogI2luY2x1
ZGUgIlJUQ1ZvaWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYk1lZGlhQ29uc3RyYWludHMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
TWVkaWFTdHJlYW1Db21wb25lbnQuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0NvbmZpZ3VyYXRpb24uaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0lD
RUNhbmRpZGF0ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb24u
aD4KQEAgLTE1OCw2ICsxNjMsMTUgQEAgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+
IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpjcmVhdGVEYXRhQ2gKICAgICByZXR1
cm4gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW06OmNyZWF0ZSh3ZWJIYW5kbGVyKTsKIH0K
IAorUGFzc093blB0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2hyb21pdW06OmNyZWF0ZURUTUZTZW5kZXIoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBv
bmVudD4gdHJhY2spCit7CisgICAgV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlciogd2Vi
SGFuZGxlciA9IG1fd2ViSGFuZGxlci0+Y3JlYXRlRFRNRlNlbmRlcih0cmFjayk7CisgICAgaWYg
KCF3ZWJIYW5kbGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBSVENE
VE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpjcmVhdGUod2ViSGFuZGxlcik7Cit9CisKIHZvaWQg
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OnN0b3AoKQogewogICAgIG1fd2ViSGFu
ZGxlci0+c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNocm9taXVtLmgKaW5kZXggZjc0N2E3YTk3MjJmZWE4YWY4ZWQzZGU2OTZiOGY5ZmJl
MzFlOGM3Yi4uOTFhZGFhZTBkZGQ4YjJlOTQwYzc3MjMzM2YzZjA1MDNlNGZhMmYzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5o
CkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIGdldFN0YXRzKFBhc3NSZWZQdHI8UlRDU3RhdHNSZXF1ZXN0PikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBQYXNzT3duUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNo
YW5uZWwoY29uc3QgU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBQYXNzT3duUHRyPFJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBjcmVhdGVEVE1GU2VuZGVy
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+KSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmIwNjcyYjlkZGEwNTgzYmIzNzE4YjBiMTQ0
YjIzOGFmMDEwY2Q4OC4uYmI5YzA0MDYzZWUzMzk1NGY2ODRkODU3MDE1YjlhY2ZjMzY2ZWY0NiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMwIEBACisyMDEzLTAxLTMxICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUu
Y29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogSW1wbGVtZW50IERUTUYgc3VwcG9ydCBp
biBSVENQZWVyQ29ubmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA2NzgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkaW5nIE1vY2sgZnVuY3Rpb25hbGl0eSBmb3IgdGhlIERUTUZTZW5kZXIu
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5j
cHA6IEFkZGVkLgorICAgICAgICAoRFRNRlNlbmRlclRvbmVUYXNrKToKKyAgICAgICAgKERUTUZT
ZW5kZXJUb25lVGFzazo6RFRNRlNlbmRlclRvbmVUYXNrKToKKyAgICAgICAgKE1vY2tXZWJSVENE
VE1GU2VuZGVySGFuZGxlcjo6TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKToKKyAgICAgICAg
KE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6c2V0Q2xpZW50KToKKyAgICAgICAgKE1vY2tX
ZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6Y3VycmVudFRvbmVCdWZmZXIpOgorICAgICAgICAoTW9j
a1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpjYW5JbnNlcnREVE1GKToKKyAgICAgICAgKE1vY2tX
ZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6aW5zZXJ0RFRNRik6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmg6IEFkZGVkLgorICAg
ICAgICAoTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKToKKyAgICAgICAgKE1vY2tXZWJSVENE
VE1GU2VuZGVySGFuZGxlcjo6dGFza0xpc3QpOgorICAgICAgICAoTW9ja1dlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyOjpjbGVhclRvbmVCdWZmZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2No
cm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwOgorICAgICAgICAoTW9j
a1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlRFRNRlNlbmRlcik6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ci5oOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisKIDIwMTMt
MDEtMzEgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBtb3ZlIHBvc3RNZXNzYWdlIHJlbGF0ZWQgbWV0aG9kcyB0byBUZXN0UnVubmVy
IGxpYnJhcnkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVl
Lmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IGU3
ZTdhMjcyYzAxNGQzZmY2OTExZmRmZGM0NjJhMTU0MTBjMDNiZDEuLmUxZDJhOWM4ODc5MDRjZTI4
NjgxZGU2YjVlYzFiYWRiZmI5MjAwMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwaQpAQCAtMTgsNiArMTgsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tX
ZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJS
VENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2Nr
V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL01v
Y2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL01v
Y2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2Nr
V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9j
a1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2Nr
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43OTZkNjY1ZjM5MGZiNWEzNTBkNjNjZjdiMWJhYzUwZGFlYTBhMjU5Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RU
TUZTZW5kZXJIYW5kbGVyLmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1v
Y2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oIgorCisjaW5jbHVkZSAiVGFzay5oIgorI2luY2x1
ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CisKK2Ns
YXNzIERUTUZTZW5kZXJUb25lVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENE
VE1GU2VuZGVySGFuZGxlcj4geworcHVibGljOgorICAgIERUTUZTZW5kZXJUb25lVGFzayhNb2Nr
V2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIG9iamVjdCwgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJD
bGllbnQqIGNsaWVudCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlcj4ob2JqZWN0KQorICAgICAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQorICAgIHsKKyAg
ICAgICAgV2ViU3RyaW5nIHRvbmVzID0gbV9vYmplY3QtPmN1cnJlbnRUb25lQnVmZmVyKCk7Cisg
ICAgICAgIG1fb2JqZWN0LT5jbGVhclRvbmVCdWZmZXIoKTsKKyAgICAgICAgbV9jbGllbnQtPmRp
ZFBsYXlUb25lKHRvbmVzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViUlRDRFRNRlNlbmRl
ckhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisK
K01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
KGNvbnN0IFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50JiB0cmFjaykKKyAgICA6IG1fY2xpZW50KDAp
CisgICAgLCBtX3RyYWNrKHRyYWNrKQoreworfQorCit2b2lkIE1vY2tXZWJSVENEVE1GU2VuZGVy
SGFuZGxlcjo6c2V0Q2xpZW50KFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KiBjbGllbnQp
Cit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisKK1dlYlN0cmluZyBNb2NrV2ViUlRDRFRN
RlNlbmRlckhhbmRsZXI6OmN1cnJlbnRUb25lQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV90b25l
QnVmZmVyOworfQorCitib29sIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6Y2FuSW5zZXJ0
RFRNRigpCit7CisgICAgYXNzZXJ0KG1fY2xpZW50ICYmICFtX3RyYWNrLmlzTnVsbCgpKTsKKyAg
ICByZXR1cm4gbV90cmFjay5zb3VyY2UoKS50eXBlKCkgPT0gV2ViTWVkaWFTdHJlYW1Tb3VyY2U6
OlR5cGVBdWRpbyAmJiBtX3RyYWNrLmlzRW5hYmxlZCgpICYmIG1fdHJhY2suc291cmNlKCkucmVh
ZHlTdGF0ZSgpID09IFdlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlTGl2ZTsKK30KKwor
Ym9vbCBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6Omluc2VydERUTUYoY29uc3QgV2ViU3Ry
aW5nJiB0b25lcywgbG9uZyBkdXJhdGlvbiwgbG9uZyBpbnRlclRvbmVHYXApCit7CisgICAgYXNz
ZXJ0KG1fY2xpZW50KTsKKyAgICBpZiAoIWNhbkluc2VydERUTUYoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgbV90b25lQnVmZmVyID0gdG9uZXM7CisgICAgcG9zdFRhc2sobmV3IERU
TUZTZW5kZXJUb25lVGFzayh0aGlzLCBtX2NsaWVudCkpOworICAgIHBvc3RUYXNrKG5ldyBEVE1G
U2VuZGVyVG9uZVRhc2sodGhpcywgbV9jbGllbnQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjYxYmFkYjA5YzAzOTVjNTQ4ZDU0NGJmYWU5NGY5ZmMzNjkzNjg0MjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1v
Y2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcl9oCisjZGVmaW5lIE1vY2tXZWJSVENEVE1GU2VuZGVy
SGFuZGxlcl9oCisKKyNpbmNsdWRlICJXZWJUYXNrLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYk1l
ZGlhU3RyZWFtQ29tcG9uZW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgorCitjbGFzcyBNb2NrV2Vi
UlRDRFRNRlNlbmRlckhhbmRsZXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFu
ZGxlciB7CitwdWJsaWM6CisgICAgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKGNvbnN0IFdl
YktpdDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQmKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRD
bGllbnQoV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCopIE9WRVJSSURFOwor
CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlN0cmluZyBjdXJyZW50VG9uZUJ1ZmZlcigpIE9WRVJS
SURFOworCisgICAgdmlydHVhbCBib29sIGNhbkluc2VydERUTUYoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgaW5zZXJ0RFRNRihjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgdG9uZXMsIGxv
bmcgZHVyYXRpb24sIGxvbmcgaW50ZXJUb25lR2FwKSBPVkVSUklERTsKKworICAgIC8vIFdlYlRh
c2sgcmVsYXRlZCBtZXRob2RzCisgICAgV2ViVGVzdFJ1bm5lcjo6V2ViVGFza0xpc3QqIHRhc2tM
aXN0KCkgeyByZXR1cm4gJm1fdGFza0xpc3Q7IH0KKyAgICB2b2lkIGNsZWFyVG9uZUJ1ZmZlcigp
IHsgbV90b25lQnVmZmVyLnJlc2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBNb2NrV2ViUlRDRFRN
RlNlbmRlckhhbmRsZXIoKTsKKworICAgIFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXJD
bGllbnQqIG1fY2xpZW50OworICAgIFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQgbV90
cmFjazsKKyAgICBXZWJLaXQ6OldlYlN0cmluZyBtX3RvbmVCdWZmZXI7CisgICAgV2ViVGVzdFJ1
bm5lcjo6V2ViVGFza0xpc3QgbV90YXNrTGlzdDsKK307CisKKyNlbmRpZiAvLyBNb2NrV2ViUlRD
RFRNRlNlbmRlckhhbmRsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcAppbmRl
eCBhYmI4NjkwODY5ZDQ1Y2Y5MjhkOGJiOGZkNzc1OWU1YWFjNjRhZDFiLi4wMjU5ZmZlYWM1ZmQ5
OTdlNGJlMTQzOTUwZTYxODVjNDQxMDk4MDE4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1vY2tXZWJSVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXIuaCIKIAogI2luY2x1ZGUgIk1vY2tDb25zdHJhaW50cy5oIgorI2luY2x1ZGUg
Ik1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oIgogI2luY2x1ZGUgIk1vY2tXZWJSVENEYXRh
Q2hhbm5lbEhhbmRsZXIuaCIKICNpbmNsdWRlICJUYXNrLmgiCiAjaW5jbHVkZSA8cHVibGljL1dl
Yk1lZGlhQ29uc3RyYWludHMuaD4KQEAgLTI5NCw2ICsyOTUsMTEgQEAgV2ViUlRDRGF0YUNoYW5u
ZWxIYW5kbGVyKiBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVEYXRhQ2hh
bm5lbChjb24KICAgICByZXR1cm4gbmV3IE1vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIobGFi
ZWwsIHJlbGlhYmxlKTsKIH0KIAorV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIE1vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZURUTUZTZW5kZXIoY29uc3QgV2ViTWVkaWFTdHJl
YW1Db21wb25lbnQmIHRyYWNrKQoreworICAgIHJldHVybiBuZXcgTW9ja1dlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyKHRyYWNrKTsKK30KKwogdm9pZCBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyOjpzdG9wKCkKIHsKICAgICBtX3N0b3BwZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlci5oCmluZGV4IDlkMGVkNzk2ZDFlMzkzYjY1MTZhZTRiMzQwODQ2Y2EwODExNjI0OTAu
LmJiOTY0MTg3NjIwNjA3MjllYzg4NTYxYjRjOTAzMDQ5ZDU2MTE5MTMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Im
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoY29uc3QgV2ViS2l0OjpXZWJS
VENTdGF0c1JlcXVlc3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyKiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViS2l0OjpX
ZWJSVENEVE1GU2VuZGVySGFuZGxlciogY3JlYXRlRFRNRlNlbmRlcihjb25zdCBXZWJLaXQ6Oldl
Yk1lZGlhU3RyZWFtQ29tcG9uZW50JiB0cmFjaykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHN0b3AoKSBPVkVSUklERTsKIAogICAgIC8vIFdlYlRhc2sgcmVsYXRlZCBtZXRob2RzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMTk1YWIxYzc5YzFkYmFmNzIwMTY5YjFmZTc0MjNlZTk5YjljYWFhNC4uNTZjYWY2NDFkZDhl
OTVjNjIxYWEyNTc0MWY1ODdlZjVkYjllMWQ4OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEz
LTAxLTMxICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAg
IE1lZGlhU3RyZWFtIEFQSTogSW1wbGVtZW50IERUTUYgc3VwcG9ydCBpbiBSVENQZWVyQ29ubmVj
dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2
NzgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYuaHRt
bDogQWRkZWQuCisKIDIwMTMtMDEtMzEgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IFRlc3QgaW5zcGVjdG9yLXByb3RvY29sL3Rha2UtaGVh
cC1zbmFwc2hvdC5odG1sIGNyYXNoZXMgaW4gdGhlIERlYnVnIG1vZGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0
bWYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzYzUwY2UzMDk3NmJkZjhiMGJlMzM3ZDRkYzgx
N2VlNGU2Zjk2ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAK
K1Rlc3RzIFJUQ0RUTUZTZW5kZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9LCBnb3RTdHJlYW0s
IGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBnZW5lcmF0ZWQu
CitQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS5n
ZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAwCitQQVNTIHBjIGlzIGNvbm5lY3RlZAorUEFTUyBk
dG1mc2VuZGVyID0gcGMuY3JlYXRlRFRNRlNlbmRlcih0cmFjayk7IHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIGR0bWZzZW5kZXIgPSBw
Yy5jcmVhdGVEVE1GU2VuZGVyKHRyYWNrKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IGR0bWZzZW5kZXIuY2FuSW5zZXJ0RFRNRiBpcyB0cnVlCitQQVNTIGR0bWZzZW5kZXIudG9uZUJ1
ZmZlciBpcyAiMSIKK1BBU1Mgb250b25lY2hhbmdlIHdhcyBjYWxsZWQuCitQQVNTIGV2ZW50LnRv
bmUgaXMgIjEiCitQQVNTIG9udG9uZWNoYW5nZSB3YXMgY2FsbGVkLgorUEFTUyBldmVudC50b25l
IGlzICIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi1kdG1mLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLWR0bWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2Y4OTRhM2I0ZTlmODdkZTllNWQ2NmZiNTQw
ZGE5MDI1YzdkMDM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwKQEAgLTAsMCArMSw2NiBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIFJUQ0RUTUZTZW5k
ZXIuIik7CisKK3ZhciBwYyA9IG51bGw7Cit2YXIgc3RyZWFtID0gbnVsbDsKK3ZhciBkdG1mc2Vu
ZGVyID0gbnVsbDsKKworZnVuY3Rpb24gZXJyb3IoKSB7CisgICAgdGVzdEZhaWxlZCgnRXJyb3Ig
Y2FsbGJhY2sgY2FsbGVkLicpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit2YXIgZmlyc3RD
YWxsID0gdHJ1ZTsKKworZnVuY3Rpb24gb250b25lY2hhbmdlKGUpIHsKKyAgICB0ZXN0UGFzc2Vk
KCJvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxlZC4iKTsKKyAgICBldmVudCA9IGU7CisgICAgaWYgKGZp
cnN0Q2FsbCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvbmUnLCAi
MSIpOworICAgICAgICBmaXJzdENhbGwgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAgICAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvbmUnLCAiIik7CisgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgIH0KK30KKworZnVuY3Rpb24gcGNfb25pY2VjaGFuZ2UoKSB7CisgICAgaWYg
KHBjLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gImNvbXBsZXRlZCIpIHsKKyAgICAgICAgdGVzdFBh
c3NlZCgicGMgaXMgY29ubmVjdGVkIik7CisgICAgICAgIHRyYWNrID0gc3RyZWFtLmdldEF1ZGlv
VHJhY2tzKClbMF07CisKKyAgICAgICAgc2hvdWxkVGhyb3coJ2R0bWZzZW5kZXIgPSBwYy5jcmVh
dGVEVE1GU2VuZGVyKHRyYWNrKTsnKTsKKyAgICAgICAgcGMuYWRkU3RyZWFtKHN0cmVhbSk7Cisg
ICAgICAgIHNob3VsZE5vdFRocm93KCdkdG1mc2VuZGVyID0gcGMuY3JlYXRlRFRNRlNlbmRlcih0
cmFjayk7Jyk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnZHRtZnNlbmRlci5jYW5JbnNlcnREVE1G
Jyk7CisKKyAgICAgICAgZHRtZnNlbmRlci5vbnRvbmVjaGFuZ2UgPSBvbnRvbmVjaGFuZ2U7Cisg
ICAgICAgIGR0bWZzZW5kZXIuaW5zZXJ0RFRNRigiMSIpOworICAgICAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ2R0bWZzZW5kZXIudG9uZUJ1ZmZlcicsICIxIik7CisgICAgfQorfQorCitmdW5j
dGlvbiBnb3RTdHJlYW0ocykgeworICAgIHN0cmVhbSA9IHM7CisgICAgdGVzdFBhc3NlZCgnU3Ry
ZWFtIGdlbmVyYXRlZC4nKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCku
bGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVu
Z3RoJywgJzAnKTsKKworICAgIHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGws
IG51bGwpOworICAgIHBjLm9uaWNlY2hhbmdlID0gcGNfb25pY2VjaGFuZ2U7Cit9CisKK3Nob3Vs
ZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSwgZ290
U3RyZWFtLCBlcnJvcik7Iik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRv
dy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186330</attachid>
            <date>2013-02-04 02:37:11 -0800</date>
            <delta_ts>2013-02-06 01:22:33 -0800</delta_ts>
            <desc>Patch (just rebased)</desc>
            <filename>bug-106782-20130204113348.patch</filename>
            <type>text/plain</type>
            <size>76903</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA0OGY4ODE0NTlhOTk4
MDkyODY1Nzg0MzM3YmExOTgyNmVkODQ2OGY1Li5mOTA4OGE1NzY0NzhiYTFlMDZhY2E1OGM1NzRk
MzY3YjU2NTU1MTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMy0wMi0wNCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IEltcGxlbWVudCBEVE1GIHN1cHBvcnQgaW4gUlRDUGVlckNvbm5lY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjc4MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBXZWJSVEMg
c3BlY2lmaWNhdGlvbiBoYXZlIGFkZGVkIHN1cHBvcnQgZm9yIERUTUY6CisgICAgICAgIGh0dHA6
Ly9kZXYudzMub3JnLzIwMTEvd2VicnRjL2VkaXRvci93ZWJydGMuaHRtbCNwZWVyLXRvLXBlZXIt
ZHRtZgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIHdpc2UgdGhpcyBpcyBpbXBsZW1lbnRlZCB1
c2luZyB0aGUgc2FtZSBwYXR0ZXJuIGFzIFJUQ0RhdGFDaGFubmVsOworICAgICAgICB3aGVyZSBh
IFJUQ0RUTUZTZW5kZXJIYW5kbGVyIGlzIGNyZWF0ZWQgYnkgdGhlIFVBIHRocm91Z2ggYSBuZXcg
bWV0aG9kIG9uCisgICAgICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtLmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFt
VHJhY2suaDoKKyAgICAgICAgKFdlYk1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAqIGNocm9t
aXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtVHJhY2suaC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJSVENEVE1GU2VuZGVySGFuZGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjp+V2ViUlRDRFRNRlNlbmRlckhhbmRsZXIp
OgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVu
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlh
U3RyZWFtVHJhY2suaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyQ2xpZW50Ojp+V2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQpOgorICAgICAgICAqIGNo
cm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3Jl
YXRlRFRNRlNlbmRlcik6CisKIDIwMTMtMDItMDIgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxu
QGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBGaWxlU3lzdGVtIG1vZHM6IENoYW5n
ZXMgdG8gc25hcHNob3QgZmlsZSBjcmVhdGlvbiB0byByZWR1Y2UgZGVwZW5kZW5jaWVzIG9uIGJs
b2JzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGQwMzY4Y2MyYTZkMTkyYjc1Y2E5MmRkMDBjZTNkMmFhOWJlMjU2
NzguLjhkZThmNzA1YTVjZTcwODYyNDBiMjkwZGQ2NWVmZTAzNDRjODQwNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMDMgQEAKKzIwMTMtMDItMDQgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3
QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBJbXBsZW1lbnQgRFRNRiBz
dXBwb3J0IGluIFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgV2ViUlRDIHNwZWNpZmljYXRpb24gaGF2ZSBhZGRlZCBz
dXBwb3J0IGZvciBEVE1GOgorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy8yMDExL3dlYnJ0Yy9l
ZGl0b3Ivd2VicnRjLmh0bWwjcGVlci10by1wZWVyLWR0bWYKKworICAgICAgICBJbXBsZW1lbnRh
dGlvbiB3aXNlIHRoaXMgaXMgaW1wbGVtZW50ZWQgdXNpbmcgdGhlIHNhbWUgcGF0dGVybiBhcyBS
VENEYXRhQ2hhbm5lbDsKKyAgICAgICAgd2hlcmUgYSBSVENEVE1GU2VuZGVySGFuZGxlciBpcyBj
cmVhdGVkIGJ5IHRoZSBVQSB0aHJvdWdoIGEgbmV3IG1ldGhvZCBvbgorICAgICAgICBSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuCisKKyAgICAgICAgVGVzdDogZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEVE1GU2VuZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENE
VE1GU2VuZGVyOjpSVENEVE1GU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5k
ZXI6On5SVENEVE1GU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmNh
bkluc2VydERUTUYpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6dHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6dG9uZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEVE1GU2VuZGVyOjppbnNlcnREVE1GKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q0RUTUZTZW5kZXI6OmRpZFBsYXlUb25lKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5k
ZXI6OmludGVyZmFjZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmV2ZW50VGFyZ2V0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6c2NoZWR1bGVEaXNwYXRjaEV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OnNjaGVkdWxlZEV2ZW50VGltZXJG
aXJlZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENEVE1GU2VuZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmR1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RUTUZTZW5kZXI6OmludGVyVG9uZUdhcCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEVE1GU2VuZGVyLmlkbDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcDogQ29waWVkIGZyb20gU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVRyYWNrLmguCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50OjpSVENEVE1GVG9uZUNo
YW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6On5S
VENEVE1GVG9uZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZUb25lQ2hh
bmdlRXZlbnQ6OnRvbmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlRvbmVDaGFuZ2VFdmVu
dDo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
VG9uZUNoYW5nZUV2ZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTWVkaWFTdHJlYW1UcmFjay5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChSVENEVE1GVG9uZUNoYW5nZUV2ZW50SW5pdCk6CisgICAgICAgIChSVENEVE1GVG9uZUNoYW5n
ZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJDb25uZWN0aW9uOjpjcmVh
dGVEYXRhQ2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1BlZXJDb25uZWN0aW9uOjpnZXRTdHJlYW1CeVRyYWNrSWQpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURUTUZTZW5kZXIpOgorICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoUlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2
ZW50TmFtZXMuaW46CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtVHJhY2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVRyYWNrOjpXZWJNZWRpYVN0cmVhbVRyYWNr
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlckhhbmRsZXIuaDogQ29waWVkIGZyb20gU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJNZWRpYVN0cmVhbVRyYWNrLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFJUQ0RUTUZTZW5kZXJIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyOjp+UlRDRFRNRlNlbmRlckhhbmRsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1UcmFjay5oLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudDo6flJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1
bS9SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtLmNwcDogQ29waWVkIGZyb20gU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVRyYWNrLmguCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVt
OjpSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06On5SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OnNldENsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpjdXJy
ZW50VG9uZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxlckNo
cm9taXVtOjpjYW5JbnNlcnREVE1GKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2hyb21pdW06Omluc2VydERUTUYpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNl
bmRlckhhbmRsZXJDaHJvbWl1bTo6ZGlkUGxheVRvbmUpOgorICAgICAgICAqIHBsYXRmb3JtL21l
ZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uaDogQ29waWVk
IGZyb20gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVRyYWNr
LmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hy
b21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtOjpjcmVhdGVEVE1GU2VuZGVyKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlckNocm9taXVtLmg6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDaHJvbWl1bSk6CisKIDIwMTMtMDItMDQgIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBDbGVhbnVwOiBOb3JtYWxpemUgdXNhZ2Ugb2YgRXhjZXB0aW9uQ29k
ZSBpbiBDb250YWluZXJOb2RlOjpjaGVja1h4eENoaWxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKaW5k
ZXggZTM0YTg5OWU1OGI1YTBjOGQwMzM3ZmE5ZGM2OWJhNGI0NzRkNDk2Zi4uNTg5MTBhZDA3ODZi
ZDgxZTU0ZDkzZTBiZjA5ZmM0YTYyZDkwMTRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3Jt
L1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKQEAgLTEw
Miw2ICsxMDIsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRlT3du
UHRyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQcml2YXRlUHRyLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENDb25maWd1cmF0aW9uLmgnLAorICAg
ICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQu
aCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxl
ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5k
bGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENJQ0VDYW5k
aWRhdGUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
Yk1lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
TWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IDA3MjhlMThmNmVmZjVkZWI5YjA0OGIyM2RmZDFkYTQ0
OGE3MDFiM2EuLjQ5MjNhMGNmZTAwMDU5OGFjMjdkMTk2MGFmYzg2YzJkYmU0MTBjMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1UcmFj
ay5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1U
cmFjay5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
aXNFbmFibGVkKCkgY29uc3Q7CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJN
ZWRpYVN0cmVhbVRyYWNrKFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQ+
KTsKICAgICBXZWJNZWRpYVN0cmVhbVRyYWNrKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29tcG9uZW50
Kik7CiAgICAgV2ViTWVkaWFTdHJlYW1UcmFjayYgb3BlcmF0b3I9KFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQ29tcG9uZW50Kik7CiAgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtQ29tcG9uZW50PigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMzZjA3MDM4M2IxNzJkN2M2ZTQ0OTlkN2M5YjEzNzEzYmJjYTA4MDYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJSVENEVE1G
U2VuZGVySGFuZGxlcl9oCisjZGVmaW5lIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKKworI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKK2NsYXNzIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50OworCitjbGFzcyBX
ZWJSVENEVE1GU2VuZGVySGFuZGxlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViUlRDRFRN
RlNlbmRlckhhbmRsZXIoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2ViUlRD
RFRNRlNlbmRlckhhbmRsZXJDbGllbnQqKSA9IDA7CisKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBj
dXJyZW50VG9uZUJ1ZmZlcigpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5JbnNlcnREVE1G
KCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpbnNlcnREVE1GKGNvbnN0IFdlYlN0cmluZyYgdG9u
ZXMsIGxvbmcgZHVyYXRpb24sIGxvbmcgaW50ZXJUb25lR2FwKSA9IDA7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRDRFRNRlNlbmRl
ckhhbmRsZXJDbGllbnQuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRD
RFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjdkM2E1Y2ZiYmFkMTRjMzRh
Njg0Y2MyNGJlM2ZhOTY3NTM4NWI1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5oCkBAIC0wLDAg
KzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJD
bGllbnRfaAorI2RlZmluZSBXZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudF9oCisKKyNpbmNs
dWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlJUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJSVENEVE1G
U2VuZGVySGFuZGxlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZFBsYXlUb25l
KGNvbnN0IFdlYlN0cmluZyYgdG9uZSkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBXZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCAzNDQ3M2MyNTRhNzk1MDkyY2YxNjZhMDAxMDNhMGFj
OWY1MmYwNTI1Li42NTk2NzczOTc2ZDkzYTFkM2VlN2UwNjAyMGUyNmY4ZTBiYzhhZDVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKQEAgLTM0LDcgKzM0LDkgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViTWVkaWFDb25zdHJhaW50czsKIGNsYXNzIFdlYk1lZGlhU3RyZWFtOwor
Y2xhc3MgV2ViTWVkaWFTdHJlYW1UcmFjazsKIGNsYXNzIFdlYlJUQ0NvbmZpZ3VyYXRpb247Citj
bGFzcyBXZWJSVENEVE1GU2VuZGVySGFuZGxlcjsKIGNsYXNzIFdlYlJUQ0RhdGFDaGFubmVsSGFu
ZGxlcjsKIGNsYXNzIFdlYlJUQ0lDRUNhbmRpZGF0ZTsKIGNsYXNzIFdlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlckNsaWVudDsKQEAgLTYzLDYgKzY1LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1F
OiBSZW1vdmUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB3aGVuIGNsaWVudHMgaGF2ZSBjaGFuZ2Vk
LgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhjb25zdCBXZWJSVENTdGF0c1JlcXVlc3QmKSB7
IH0KICAgICB2aXJ0dWFsIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogY3JlYXRlRGF0YUNoYW5u
ZWwoY29uc3QgV2ViU3RyaW5nJiBsYWJlbCwgYm9vbCByZWxpYWJsZSkgeyByZXR1cm4gMDsgfQor
ICAgIHZpcnR1YWwgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIGNyZWF0ZURUTUZTZW5kZXIoY29u
c3QgV2ViTWVkaWFTdHJlYW1UcmFjayYgdHJhY2spIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTAxYjE2NjUx
NWYyZWE4ODEwOWRkNmU0ZThmYTNhYjQxNTljY2VlMS4uNDYyNjAzYzcwZGZjZDM4NTY1NzM2MzNm
ZmQxZjE5YTg4MWNkNDRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIyMyw2ICsyMjMsOCBA
QCBzZXQoV2ViQ29yZV9JRExfRklMRVMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
clVzZXJNZWRpYUVycm9yLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3JDYWxsYmFjay5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
clVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RUTUZTZW5kZXIuaWRsCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5n
ZUV2ZW50LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaWRsCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5pZGwKQEAgLTg2NSw2ICs4NjcsOCBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNw
cAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwCisgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcAorICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5u
ZWxFdmVudC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGJkYjdiNzc2YTcyNmY5ZGFlYjcxZjQ0
YmVjMDJkNDMyODQyZDQzZjIuLjc1YzUwZWI4OGM2M2RiN2U1Zjc3NDg5MjMyMDU3MTU5ZDMyNzNl
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjMzLDYgKzYzMywxMCBAQCB3
ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFjay5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
UkdCQ29sb3IuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUkdCQ29sb3IuaCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0RUTUZTZW5kZXIuY3BwIFwKKwlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUlRDRFRNRlNlbmRlci5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNSVENEVE1GVG9uZUNoYW5nZUV2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNS
VENEYXRhQ2hhbm5lbC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEYXRhQ2hh
bm5lbC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRGF0YUNoYW5uZWxFdmVudC5j
cHAgXApAQCAtMTI0Niw2ICsxMjUwLDggQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbCBcCiAJ
JChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2Fs
bGJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNl
ck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbCBcCisJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZTZW5kZXIuaWRsIFwKKwkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbC5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0Vycm9yQ2FsbGJhY2suaWRsIFwKQEAgLTE5NDIsNiArMTk0OCwxMCBAQCB3ZWJjb3Jl
X21vZHVsZXNfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBcCiAJU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJh
Y2suaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVy
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVy
LmggXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFu
Z2VFdmVudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRN
RlRvbmVDaGFuZ2VFdmVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwIFwKQEAgLTU3NTUsNiArNTc2NSw4IEBAIHdlYmNvcmVf
cGxhdGZvcm1fc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDQ29uZmlndXJhdGlvbi5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVySGFuZGxlci5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhh
bmRsZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNo
YW5uZWxIYW5kbGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM4
NGE0MzBmNzJmNzUxMjVjM2Y5ZjU3NmQ0YTdjMmUxODk0YzlmZjMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCkBA
IC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiUlRDRFRNRlNlbmRlci5oIgorCisj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIK
KyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlci5oIgorI2luY2x1ZGUgIlJUQ0RUTUZUb25l
Q2hhbmdlRXZlbnQuaCIKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIGNvbnN0IGxvbmcgbWluVG9uZUR1cmF0aW9uID0gNzA7CitzdGF0aWMgY29uc3Qg
bG9uZyBkZWZhdWx0VG9uZUR1cmF0aW9uID0gMTAwOworc3RhdGljIGNvbnN0IGxvbmcgbWF4VG9u
ZUR1cmF0aW9uID0gNjAwMDsKK3N0YXRpYyBjb25zdCBsb25nIG1pbkludGVyVG9uZUdhcCA9IDUw
Oworc3RhdGljIGNvbnN0IGxvbmcgZGVmYXVsdEludGVyVG9uZUdhcCA9IDUwOworCitQYXNzUmVm
UHRyPFJUQ0RUTUZTZW5kZXI+IFJUQ0RUTUZTZW5kZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIqIHBlZXJDb25uZWN0aW9u
SGFuZGxlciwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJh
Y2s7CisgICAgT3duUHRyPFJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBoYW5kbGVyID0gcGVlckNvbm5l
Y3Rpb25IYW5kbGVyLT5jcmVhdGVEVE1GU2VuZGVyKHRyYWNrLT5jb21wb25lbnQoKSk7CisgICAg
aWYgKCFoYW5kbGVyKSB7CisgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKworICAgIFJlZlB0cjxSVENEVE1GU2VuZGVyPiBkdG1mU2VuZGVy
ID0gYWRvcHRSZWYobmV3IFJUQ0RUTUZTZW5kZXIoY29udGV4dCwgdHJhY2ssIGhhbmRsZXIucmVs
ZWFzZSgpKSk7CisgICAgZHRtZlNlbmRlci0+c3VzcGVuZElmTmVlZGVkKCk7CisgICAgcmV0dXJu
IGR0bWZTZW5kZXIucmVsZWFzZSgpOworfQorCitSVENEVE1GU2VuZGVyOjpSVENEVE1GU2VuZGVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4gdHJhY2ssIFBhc3NPd25QdHI8UlRDRFRNRlNlbmRlckhhbmRsZXI+IGhhbmRsZXIpCisg
ICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1fdHJhY2sodHJhY2sp
CisgICAgLCBtX2R1cmF0aW9uKGRlZmF1bHRUb25lRHVyYXRpb24pCisgICAgLCBtX2ludGVyVG9u
ZUdhcChkZWZhdWx0SW50ZXJUb25lR2FwKQorICAgICwgbV9oYW5kbGVyKGhhbmRsZXIpCisgICAg
LCBtX3N0b3BwZWQoZmFsc2UpCisgICAgLCBtX3NjaGVkdWxlZEV2ZW50VGltZXIodGhpcywgJlJU
Q0RUTUZTZW5kZXI6OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCkKK3sKKyAgICBtX2hhbmRsZXIt
PnNldENsaWVudCh0aGlzKTsKK30KKworUlRDRFRNRlNlbmRlcjo6flJUQ0RUTUZTZW5kZXIoKQor
eworfQorCitib29sIFJUQ0RUTUZTZW5kZXI6OmNhbkluc2VydERUTUYoKSBjb25zdAoreworICAg
IHJldHVybiBtX2hhbmRsZXItPmNhbkluc2VydERUTUYoKTsKK30KKworTWVkaWFTdHJlYW1UcmFj
ayogUlRDRFRNRlNlbmRlcjo6dHJhY2soKSBjb25zdAoreworICAgIHJldHVybiBtX3RyYWNrLmdl
dCgpOworfQorCitTdHJpbmcgUlRDRFRNRlNlbmRlcjo6dG9uZUJ1ZmZlcigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faGFuZGxlci0+Y3VycmVudFRvbmVCdWZmZXIoKTsKK30KKwordm9pZCBSVENE
VE1GU2VuZGVyOjppbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGluc2VydERUTUYodG9uZXMsIGRlZmF1bHRUb25lRHVyYXRpb24sIGRlZmF1
bHRJbnRlclRvbmVHYXAsIGVjKTsKK30KKwordm9pZCBSVENEVE1GU2VuZGVyOjppbnNlcnREVE1G
KGNvbnN0IFN0cmluZyYgdG9uZXMsIGxvbmcgZHVyYXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGluc2VydERUTUYodG9uZXMsIGR1cmF0aW9uLCBkZWZhdWx0SW50ZXJUb25lR2FwLCBl
Yyk7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlcjo6aW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRv
bmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKCFjYW5JbnNlcnREVE1GKCkpIHsKKyAgICAgICAgZWMgPSBOT1RfU1VQUE9S
VEVEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChkdXJhdGlvbiA+IG1h
eFRvbmVEdXJhdGlvbiB8fCBkdXJhdGlvbiA8IG1pblRvbmVEdXJhdGlvbikgeworICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoaW50ZXJU
b25lR2FwIDwgbWluSW50ZXJUb25lR2FwKSB7CisgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBt
X2ludGVyVG9uZUdhcCA9IGludGVyVG9uZUdhcDsKKworICAgIGlmICghbV9oYW5kbGVyLT5pbnNl
cnREVE1GKHRvbmVzLCBtX2R1cmF0aW9uLCBtX2ludGVyVG9uZUdhcCkpCisgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKK30KKwordm9pZCBSVENEVE1GU2VuZGVyOjpkaWRQbGF5VG9uZShjb25zdCBT
dHJpbmcmIHRvbmUpCit7CisgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KFJUQ0RUTUZUb25lQ2hh
bmdlRXZlbnQ6OmNyZWF0ZSh0b25lKSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgUlRDRFRN
RlNlbmRlcjo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JSVENEVE1GU2VuZGVyOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBSVENEVE1GU2VuZGVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cit9CisKK3Zv
aWQgUlRDRFRNRlNlbmRlcjo6c3RvcCgpCit7CisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKKyAgICBt
X2hhbmRsZXItPnNldENsaWVudCgwKTsKK30KKworRXZlbnRUYXJnZXREYXRhKiBSVENEVE1GU2Vu
ZGVyOjpldmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7
Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogUlRDRFRNRlNlbmRlcjo6ZW5zdXJlRXZlbnRUYXJnZXRE
YXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCit2b2lkIFJUQ0RU
TUZTZW5kZXI6OnNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkK
K3sKKyAgICBtX3NjaGVkdWxlZEV2ZW50cy5hcHBlbmQoZXZlbnQpOworCisgICAgaWYgKCFtX3Nj
aGVkdWxlZEV2ZW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9zY2hlZHVsZWRFdmVudFRp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBSVENEVE1GU2VuZGVyOjpzY2hlZHVsZWRF
dmVudFRpbWVyRmlyZWQoVGltZXI8UlRDRFRNRlNlbmRlcj4qKQoreworICAgIGlmIChtX3N0b3Bw
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gZXZlbnRz
OworICAgIGV2ZW50cy5zd2FwKG1fc2NoZWR1bGVkRXZlbnRzKTsKKworICAgIFZlY3RvcjxSZWZQ
dHI8RXZlbnQ+ID46Oml0ZXJhdG9yIGl0ID0gZXZlbnRzLmJlZ2luKCk7CisgICAgZm9yICg7IGl0
ICE9IGV2ZW50cy5lbmQoKTsgKytpdCkKKyAgICAgICAgZGlzcGF0Y2hFdmVudCgoKml0KS5yZWxl
YXNlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
TUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEVE1GU2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjc1MTlhODAzNWU3NjUyYTkzM2ZmNDk1OGIy
ZDc0ZThjODZlNWVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgUlRDRFRNRlNlbmRlcl9oCisjZGVmaW5lIFJUQ0RUTUZTZW5kZXJfaAorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgor
I2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiUlRDRFRNRlNlbmRlckhhbmRsZXJD
bGllbnQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKK2NsYXNz
IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKK2NsYXNzIFJUQ0RUTUZTZW5kZXJIYW5kbGVyOwor
CitjbGFzcyBSVENEVE1GU2VuZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDRFRNRlNlbmRlcj4s
IHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LCBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
VENEVE1GU2VuZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlciosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4sIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB+UlRDRFRNRlNlbmRlcigpOworCisgICAgYm9vbCBjYW5JbnNlcnREVE1GKCkg
Y29uc3Q7CisgICAgTWVkaWFTdHJlYW1UcmFjayogdHJhY2soKSBjb25zdDsKKyAgICBTdHJpbmcg
dG9uZUJ1ZmZlcigpIGNvbnN0OworICAgIGxvbmcgZHVyYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2R1cmF0aW9uOyB9CisgICAgbG9uZyBpbnRlclRvbmVHYXAoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVyVG9uZUdhcDsgfQorCisgICAgdm9pZCBpbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25l
cywgbG9uZyBkdXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgaW5zZXJ0RFRNRihj
b25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCwgRXhj
ZXB0aW9uQ29kZSYpOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b25l
Y2hhbmdlKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklE
RTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZF
UlJJREU7CisKKyAgICB1c2luZyBSZWZDb3VudGVkPFJUQ0RUTUZTZW5kZXI+OjpyZWY7CisgICAg
dXNpbmcgUmVmQ291bnRlZDxSVENEVE1GU2VuZGVyPjo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAg
UlRDRFRNRlNlbmRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiwgUGFzc093blB0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4pOworCisgICAgdm9p
ZCBzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAgIHZvaWQgc2No
ZWR1bGVkRXZlbnRUaW1lckZpcmVkKFRpbWVyPFJUQ0RUTUZTZW5kZXI+Kik7CisKKyAgICAvLyBF
dmVudFRhcmdldAorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEo
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJn
ZXREYXRhKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRh
OworCisgICAgLy8gUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUGxheVRvbmUoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisKKyAgICBSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4gbV90cmFjazsKKyAgICBsb25nIG1fZHVyYXRpb247CisgICAgbG9uZyBtX2lu
dGVyVG9uZUdhcDsKKworICAgIE93blB0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4gbV9oYW5kbGVy
OworCisgICAgYm9vbCBtX3N0b3BwZWQ7CisKKyAgICBUaW1lcjxSVENEVE1GU2VuZGVyPiBtX3Nj
aGVkdWxlZEV2ZW50VGltZXI7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3NjaGVkdWxl
ZEV2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENEVE1GU2VuZGVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmNiMDQyOTIyZTNkODY4Mzc5MDI3Mzg4YTlmMWQ4ZjM2ZTg0NWQxNDIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5k
ZXIuaWRsCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25h
bD1NRURJQV9TVFJFQU0sCisgICAgQWN0aXZlRE9NT2JqZWN0LAorICAgIEV2ZW50VGFyZ2V0Citd
IGludGVyZmFjZSBSVENEVE1GU2VuZGVyIHsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBjYW5JbnNlcnREVE1GOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbVRyYWNr
IHRyYWNrOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdG9uZUJ1ZmZlcjsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBkdXJhdGlvbjsKKyAgICByZWFkb25seSBhdHRyaWJ1
dGUgbG9uZyBpbnRlclRvbmVHYXA7CisKKyAgICB2b2lkIGluc2VydERUTUYoaW4gRE9NU3RyaW5n
IHRvbmVzLCBpbiBbT3B0aW9uYWxdIGxvbmcgZHVyYXRpb24sIGluIFtPcHRpb25hbF0gbG9uZyBp
bnRlclRvbmVHYXApCisgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb250b25lY2hhbmdlOworCisgICAgLy8gRXZlbnRUYXJnZXQgaW50
ZXJmYWNlCisgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Cisg
ICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Cisg
ICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQorICAgICAgICByYWlzZXMo
RXZlbnRFeGNlcHRpb24pOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmUyYjlmZDk0Njg1NjFiMWY5NDg5NjA1N2NmNjk1Yzg5OTM3NGUzYjIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSVENEVE1GVG9uZUNoYW5nZUV2ZW50LmgiCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1Bhc3NSZWZQdHI8UlRDRFRNRlRvbmVDaGFuZ2VFdmVudD4gUlRDRFRNRlRvbmVD
aGFuZ2VFdmVudDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RUTUZU
b25lQ2hhbmdlRXZlbnQpOworfQorCitQYXNzUmVmUHRyPFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ+
IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRvbmUpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENEVE1GVG9uZUNoYW5nZUV2ZW50KHRvbmUpKTsKK30K
KworUGFzc1JlZlB0cjxSVENEVE1GVG9uZUNoYW5nZUV2ZW50PiBSVENEVE1GVG9uZUNoYW5nZUV2
ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBSVENEVE1GVG9uZUNo
YW5nZUV2ZW50SW5pdCYgaW5pdGlhbGl6ZXIpCit7CisgICAgQVNTRVJUKHR5cGUgPT0gZXZlbnRO
YW1lcygpLnRvbmVjaGFuZ2VFdmVudCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSVENEVE1G
VG9uZUNoYW5nZUV2ZW50KGluaXRpYWxpemVyKSk7Cit9CisKK1JUQ0RUTUZUb25lQ2hhbmdlRXZl
bnQ6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoKQoreworfQorCitSVENEVE1GVG9uZUNoYW5nZUV2
ZW50OjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYgdG9uZSkKKyAgICA6IEV2
ZW50KGV2ZW50TmFtZXMoKS50b25lY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkKKyAgICAsIG1f
dG9uZSh0b25lKQoreworfQorCitSVENEVE1GVG9uZUNoYW5nZUV2ZW50OjpSVENEVE1GVG9uZUNo
YW5nZUV2ZW50KGNvbnN0IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnRJbml0JiBpbml0aWFsaXplcikK
KyAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS50b25lY2hhbmdlRXZlbnQsIGluaXRpYWxpemVyKQor
ICAgICwgbV90b25lKGluaXRpYWxpemVyLnRvbmUpCit7Cit9CisKK1JUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQ6On5SVENEVE1GVG9uZUNoYW5nZUV2ZW50KCkKK3sKK30KKworY29uc3QgU3RyaW5nJiBS
VENEVE1GVG9uZUNoYW5nZUV2ZW50Ojp0b25lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90b25l
OworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OmludGVy
ZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9y
UlRDRFRNRlRvbmVDaGFuZ2VFdmVudDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZTU1OTA4ZDY5NWY2ODBiZWUwNjU3NjZkNjU3MTVjYTMzMWQ0MDBkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9u
ZUNoYW5nZUV2ZW50LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBS
VENEVE1GVG9uZUNoYW5nZUV2ZW50X2gKKyNkZWZpbmUgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudF9o
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNs
dWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitz
dHJ1Y3QgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKKyAg
ICBTdHJpbmcgdG9uZTsKK307CisKK2NsYXNzIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQgOiBwdWJs
aWMgRXZlbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQo
KTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ+IGNyZWF0
ZSgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHRvbmUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RUTUZUb25l
Q2hhbmdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFJUQ0RU
TUZUb25lQ2hhbmdlRXZlbnRJbml0JiBpbml0aWFsaXplcik7CisKKyAgICBjb25zdCBTdHJpbmcm
IHRvbmUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZh
Y2VOYW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudCgp
OworICAgIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiB0b25lKTsKKyAgICBS
VENEVE1GVG9uZUNoYW5nZUV2ZW50KGNvbnN0IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnRJbml0Jik7
CisKKyAgICBTdHJpbmcgbV90b25lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ0RUTUZUb25lQ2hh
bmdlRXZlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA5OWEyNTZm
MmI2NzhkODgzMjZhNzJhMThkYjFlY2FkOTg4OTk0MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGwK
QEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPU1FRElB
X1NUUkVBTSwKKyAgICBDb25zdHJ1Y3RvclRlbXBsYXRlPUV2ZW50CitdIGludGVyZmFjZSBSVENE
VE1GVG9uZUNoYW5nZUV2ZW50IDogRXZlbnQgeworICAgIFtJbml0aWFsaXplZEJ5RXZlbnRDb25z
dHJ1Y3Rvcl0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0b25lOworfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAKaW5kZXggOWYwMDc5MTg1NTkxZjZjNzMwODRkMDdiYWM4NGU2ZjYyNzdiODNiMC4uNjUz
MjdjNDE1ODNmNzg4ZWY3MTBmYzMzNmZiODg2YWI0MjUxMDZjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAK
QEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJNZWRpYUNvbnN0cmFpbnRzSW1wbC5oIgogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtRXZlbnQuaCIKICNpbmNsdWRlICJSVENDb25maWd1cmF0aW9uLmgi
CisjaW5jbHVkZSAiUlRDRFRNRlNlbmRlci5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsLmgi
CiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxFdmVudC5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFu
bmVsSGFuZGxlci5oIgpAQCAtNDUwLDYgKzQ1MSw0MSBAQCBQYXNzUmVmUHRyPFJUQ0RhdGFDaGFu
bmVsPiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlRGF0YUNoYW5uZWwoU3RyaW5nIGxhYmVsLCBj
bwogICAgIHJldHVybiBjaGFubmVsLnJlbGVhc2UoKTsKIH0KIAorTWVkaWFTdHJlYW0qIFJUQ1Bl
ZXJDb25uZWN0aW9uOjpnZXRTdHJlYW1CeVRyYWNrSWQoY29uc3QgU3RyaW5nJiB0cmFja0lkKQor
eworICAgIGZvciAodW5zaWduZWQgaSA9IDAgOyBpIDwgbV9sb2NhbFN0cmVhbXMtPmxlbmd0aCgp
OyArK2kpIHsKKyAgICAgICAgTWVkaWFTdHJlYW0qIHN0cmVhbSA9ICBtX2xvY2FsU3RyZWFtcy0+
aXRlbShpKTsKKyAgICAgICAgaWYgKHN0cmVhbS0+Z2V0VHJhY2tCeUlkKHRyYWNrSWQpKQorICAg
ICAgICAgICAgcmV0dXJuIHN0cmVhbTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NS
ZWZQdHI8UlRDRFRNRlNlbmRlcj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURUTUZTZW5kZXIo
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKG1fc2lnbmFsaW5nU3RhdGUgPT0gU2lnbmFsaW5nU3RhdGVDbG9zZWQpIHsK
KyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCisgICAgaWYgKCFwcnBUcmFjaykgeworICAgICAgICBlYyA9IFR5cGVFcnJvcjsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNr
ID0gcHJwVHJhY2s7CisKKyAgICBpZiAoIWdldFN0cmVhbUJ5VHJhY2tJZCh0cmFjay0+aWQoKSkp
IHsKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisK
KyAgICBSZWZQdHI8UlRDRFRNRlNlbmRlcj4gZHRtZlNlbmRlciA9IFJUQ0RUTUZTZW5kZXI6OmNy
ZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fcGVlckhhbmRsZXIuZ2V0KCksIHRyYWNr
LnJlbGVhc2UoKSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIGR0bWZTZW5kZXIucmVsZWFzZSgpOworfQorCiB2b2lkIFJUQ1BlZXJDb25uZWN0aW9uOjpj
bG9zZShFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobV9zaWduYWxpbmdTdGF0ZSA9PSBT
aWduYWxpbmdTdGF0ZUNsb3NlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCmluZGV4IDI0ZTFkNzMxN2ZhNzdkN2Fk
MzZhMTk0YWI3N2JmYTg5YTU1YWUyMDMuLjFiNDU1YjEwOGNiNDAxMWEzNzRhMjVmZDAyNGIzZjFk
NDkwYzE3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgTWVkaWFDb25zdHJhaW50czsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBj
bGFzcyBSVENDb25maWd1cmF0aW9uOworY2xhc3MgUlRDRFRNRlNlbmRlcjsKIGNsYXNzIFJUQ0Rh
dGFDaGFubmVsOwogY2xhc3MgUlRDRXJyb3JDYWxsYmFjazsKIGNsYXNzIFJUQ1Nlc3Npb25EZXNj
cmlwdGlvbjsKQEAgLTg2LDE3ICs4NywxNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGljZUNvbm5l
Y3Rpb25TdGF0ZSgpIGNvbnN0OwogCiAgICAgTWVkaWFTdHJlYW1MaXN0KiBsb2NhbFN0cmVhbXMo
KSBjb25zdDsKLQogICAgIE1lZGlhU3RyZWFtTGlzdCogcmVtb3RlU3RyZWFtcygpIGNvbnN0Owog
CiAgICAgdm9pZCBhZGRTdHJlYW0oY29uc3QgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4sIGNvbnN0
IERpY3Rpb25hcnkmIG1lZGlhQ29uc3RyYWludHMsIEV4Y2VwdGlvbkNvZGUmKTsKLQogICAgIHZv
aWQgcmVtb3ZlU3RyZWFtKE1lZGlhU3RyZWFtKiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9p
ZCBnZXRTdGF0cyhQYXNzUmVmUHRyPFJUQ1N0YXRzQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBzZWxlY3Rvcik7CiAKICAgICBQYXNzUmVmUHRy
PFJUQ0RhdGFDaGFubmVsPiBjcmVhdGVEYXRhQ2hhbm5lbChTdHJpbmcgbGFiZWwsIGNvbnN0IERp
Y3Rpb25hcnkmIGRhdGFDaGFubmVsRGljdCwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgUGFzc1Jl
ZlB0cjxSVENEVE1GU2VuZGVyPiBjcmVhdGVEVE1GU2VuZGVyKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1UcmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKwogICAgIHZvaWQgY2xvc2UoRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihuZWdvdGlhdGlvbm5l
ZWRlZCk7CkBAIC0xMzQsNiArMTM1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxSVENDb25maWd1cmF0aW9uPiBwYXJzZUNvbmZpZ3VyYXRpb24oY29uc3QgRGljdGlvbmFyeSYg
Y29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2NoZWR1bGVEaXNwYXRj
aEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2b2lkIHNjaGVkdWxlZEV2ZW50VGltZXJG
aXJlZChUaW1lcjxSVENQZWVyQ29ubmVjdGlvbj4qKTsKKyAgICBNZWRpYVN0cmVhbSogZ2V0U3Ry
ZWFtQnlUcmFja0lkKGNvbnN0IFN0cmluZyYgdHJhY2tJZCk7CiAKICAgICAvLyBFdmVudFRhcmdl
dCBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJn
ZXREYXRhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCmluZGV4IDljZjBiNjQ2MWNhNjA1OWU5ZjU2ZTg3NDg4
OWI5MGY2NDhmMGE2OGIuLmVkNTE0ZmE5NTI0ZTkxMGQ4YjU4MTkzZDZiNDI4MTE0YWU1MmI2ZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaWRsCkBAIC03OSw2ICs3OSw5IEBACiAgICAgUlRDRGF0YUNoYW5uZWwg
Y3JlYXRlRGF0YUNoYW5uZWwoaW4gW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZp
bmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIGxhYmVsLCBpbiBbT3B0aW9uYWxdIERpY3Rpb25h
cnkgb3B0aW9ucykKICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogCisgICAgUlRDRFRN
RlNlbmRlciBjcmVhdGVEVE1GU2VuZGVyKGluIE1lZGlhU3RyZWFtVHJhY2sgdHJhY2spCisgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKwogICAgIHZvaWQgY2xvc2UoKQogICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGM0ZjcwYjQwZDBjMWFh
NmZlZDFmYjlhOWQ3OTc1ZGEyOTA3M2NmOGMuLjZmMjcxMjk4ZGJkNjA0NzgwYzc5NzQ2ZGI5Njhi
YWQxNDQ5ZTA3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTcyLDYgKzcyLDggQEAKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNh
bGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JV
c2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RUTUZTZW5kZXIuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENFcnJvckNhbGxiYWNrLmlkbCcsCkBAIC04MTgsMTAgKzgyMCwxNCBAQAog
ICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3Iu
aCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvckNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdh
dG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEVE1GU2VuZGVyLmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEVE1GU2VuZGVyLmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlRvbmVDaGFuZ2VFdmVudC5jcHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWwuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRXJyb3JDYWxsYmFjay5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0ljZUNhbmRpZGF0ZS5jcHAnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDSWNlQ2FuZGlkYXRlLmgnLApAQCAtNDM2Niw2ICs0MzcyLDggQEAKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0NvbmZpZ3VyYXRpb24uaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXIuaCcsCisgICAgICAg
ICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVy
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFu
ZGxlckNsaWVudC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENJY2VD
YW5kaWRhdGVEZXNjcmlwdG9yLmNwcCcsCkBAIC00Mzc5LDYgKzQzODcsOCBAQAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1ZvaWRSZXF1ZXN0LmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL01lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW0u
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9NZWRpYVN0
cmVhbUNlbnRlckNocm9taXVtLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFt
L2Nocm9taXVtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxlckNocm9t
aXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0Rh
dGFDaGFubmVsSGFuZGxlckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hyb21pdW0uaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2hyb21pdW0uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDNmMGU3YTI3
YjRmODkyZDI1ZDRkNTcxMmVmOTU0OGEyYWIzMTgxODYuLjIyYTdiMzJiYWI3OWJjNTI2MDA3NjQx
YTNiOTFjYzQwYzUxYjRjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMjM0LDYgKzIz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhuZWdvdGlhdGlvbm5lZWRlZCkg
XAogICAgIG1hY3JvKGRhdGFjaGFubmVsKSBcCiAgICAgbWFjcm8oZ2F0aGVyaW5nY2hhbmdlKSBc
CisgICAgbWFjcm8odG9uZWNoYW5nZSkgXAogICAgIFwKICAgICBtYWNybyhzaG93KSBcCiAgICAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgppbmRleCBjMjY5M2RhOTZmYWVkOTg3ZTQzNzczMWI1
ZmM3NjExMmZmNzQzZTRkLi5iNGI1YTNlNzc0YWQzNTRlNGJjMDkwYTQ1ODBjYjkzYjE0MjMyMTU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5pbgpAQCAtMzQsNiArMzQsNyBAQCBNZWRpYVN0cmVh
bUV2ZW50IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVkaWFTdHJlYW1UcmFja0V2ZW50IGNv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTQogUlRDSWNlQ2FuZGlkYXRlRXZlbnQgY29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNCiBSVENEYXRhQ2hhbm5lbEV2ZW50IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TQorUlRDRFRNRlRvbmVDaGFuZ2VFdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFNwZWVj
aElucHV0RXZlbnQgY29uZGl0aW9uYWw9SU5QVVRfU1BFRUNICiBTcGVlY2hSZWNvZ25pdGlvbkVy
cm9yIGNvbmRpdGlvbmFsPVNDUklQVEVEX1NQRUVDSAogU3BlZWNoUmVjb2duaXRpb25FdmVudCBj
b25kaXRpb25hbD1TQ1JJUFRFRF9TUEVFQ0gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluCmluZGV4IDI0MzY4NWE3ODkxMmRiNDc4Njk0MTU0ODFjNzg4NWE4YjI2MDdiZjYu
LjgyNTY2N2IzY2FkN2EzNTExYTBkYTRlMDllZDY5ZTkyMmU3MTE5NWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMjQsNiArMjQsNyBAQCBOb2RlCiBOb3Rp
ZmljYXRpb24gY29uZGl0aW9uYWw9Tk9USUZJQ0FUSU9OU3xMRUdBQ1lfTk9USUZJQ0FUSU9OUwog
UGVyZm9ybWFuY2UgY29uZGl0aW9uYWw9V0VCX1RJTUlORwogUlRDRGF0YUNoYW5uZWwgY29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNCitSVENEVE1GU2VuZGVyIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TQogUlRDUGVlckNvbm5lY3Rpb24gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTaGFyZWRXb3Jr
ZXIgY29uZGl0aW9uYWw9U0hBUkVEX1dPUktFUlMKIFNoYXJlZFdvcmtlckNvbnRleHQgY29uZGl0
aW9uYWw9U0hBUkVEX1dPUktFUlMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4
IDQzYmVmMzVkNzQ1YzAwZDkzODlmZjc4ZjgwZDU0YzRkY2RlNGQ2NmEuLjMxMzU1YmFkZjhjZGEz
YWVlNDZhNTgxZjkxNDZkYjY4MjU0ZjYzYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYVN0cmVhbVRyYWNr
LmNwcApAQCAtMzgsNiArMzgsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitXZWJNZWRpYVN0cmVhbVRyYWNrOjpXZWJNZWRpYVN0cmVhbVRyYWNr
KFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Db21wb25lbnQ+IG1lZGlhU3RyZWFtQ29t
cG9uZW50KQorICAgIDogbV9wcml2YXRlKG1lZGlhU3RyZWFtQ29tcG9uZW50KQoreworfQorCiBX
ZWJNZWRpYVN0cmVhbVRyYWNrOjpXZWJNZWRpYVN0cmVhbVRyYWNrKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQ29tcG9uZW50KiBtZWRpYVN0cmVhbUNvbXBvbmVudCkKICAgICA6IG1fcHJpdmF0ZShtZWRp
YVN0cmVhbUNvbXBvbmVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVySGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkYWVl
M2UyNzdhZTkxNTU4NTBhYjk1MWI5MmYyMzJkNDRlZmJlODIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVySGFuZGxlci5o
CkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDRFRNRlNlbmRlckhh
bmRsZXJfaAorI2RlZmluZSBSVENEVE1GU2VuZGVySGFuZGxlcl9oCisKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQ7CisKK2NsYXNz
IFJUQ0RUTUZTZW5kZXJIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5SVENEVE1GU2Vu
ZGVySGFuZGxlcigpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChSVENEVE1GU2Vu
ZGVySGFuZGxlckNsaWVudCopID0gMDsKKworICAgIHZpcnR1YWwgU3RyaW5nIGN1cnJlbnRUb25l
QnVmZmVyKCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGNhbkluc2VydERUTUYoKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25lcywgbG9uZyBkdXJh
dGlvbiwgbG9uZyBpbnRlclRvbmVHYXApID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENEVE1G
U2VuZGVySGFuZGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NmJkOWRiMzIzNmRkMTE1ZGY2ZjAwYjM1NzI5NzQ1M2I5N2UzNzA5Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhh
bmRsZXJDbGllbnQuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJU
Q0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50X2gKKyNkZWZpbmUgUlRDRFRNRlNlbmRlckhhbmRsZXJD
bGllbnRfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB+UlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBkaWRQbGF5VG9uZShjb25zdCBTdHJpbmcmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRD
RFRNRlNlbmRlckhhbmRsZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRl
eCBkOGY5NmQzMGYzMWU2ZDE5NTk3ZTM4ZjUxZmI5Yjk4NDcwNTcyN2ViLi5lMTllNGIyMzllNzEy
ODAyNjYyMjc3YjNlYzljOTc3MjgxMjgzNTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIu
aApAQCAtNDAsNyArNDAsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUNv
bnN0cmFpbnRzOworY2xhc3MgTWVkaWFTdHJlYW1Db21wb25lbnQ7CiBjbGFzcyBSVENDb25maWd1
cmF0aW9uOworY2xhc3MgUlRDRFRNRlNlbmRlckhhbmRsZXI7CiBjbGFzcyBSVENEYXRhQ2hhbm5l
bEhhbmRsZXI7CiBjbGFzcyBSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOwogY2xhc3MgUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OwpAQCAtNjcsMTAgKzY5LDkgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBhZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+
LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZVN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoUGFzc1JlZlB0cjxSVENTdGF0c1JlcXVlc3Q+KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7Ci0KLSAgICAvLyBSVENEYXRhQ2hhbm5lbAogICAg
IHZpcnR1YWwgUGFzc093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFDaGFu
bmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpID0gMDsKKyAgICB2aXJ0dWFs
IFBhc3NPd25QdHI8UlRDRFRNRlNlbmRlckhhbmRsZXI+IGNyZWF0ZURUTUZTZW5kZXIoUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgp
ID0gMDsKIAogcHJvdGVjdGVkOgogICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcigpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0v
UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi45M2Q4MGRiN2I1MDBhMGQxNmU5NjNmNTg3M2EwMDJhYTBjMzg5YmNkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21p
dW0vUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bS5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKKworI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uaCIKKworI2luY2x1
ZGUgIlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRy
PFJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpjcmVh
dGUoV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIHdlYkhhbmRsZXIpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtKHdlYkhhbmRsZXIpKTsKK30K
KworUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJv
bWl1bShXZWJSVENEVE1GU2VuZGVySGFuZGxlciogd2ViSGFuZGxlcikKKyAgICA6IG1fd2ViSGFu
ZGxlcihhZG9wdFB0cih3ZWJIYW5kbGVyKSkKKyAgICAsIG1fY2xpZW50KDApCit7Cit9CisKK1JU
Q0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06On5SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVt
KCkKK3sKK30KKwordm9pZCBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpzZXRDbGllbnQo
UlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNs
aWVudDsKKyAgICBtX3dlYkhhbmRsZXItPnNldENsaWVudChtX2NsaWVudCA/IHRoaXMgOiAwKTsK
K30KKworU3RyaW5nIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OmN1cnJlbnRUb25lQnVm
ZmVyKCkKK3sKKyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5jdXJyZW50VG9uZUJ1ZmZlcigpOwor
fQorCitib29sIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OmNhbkluc2VydERUTUYoKQor
eworICAgIHJldHVybiBtX3dlYkhhbmRsZXItPmNhbkluc2VydERUTUYoKTsKK30KKworYm9vbCBS
VENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjppbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9u
ZXMsIGxvbmcgZHVyYXRpb24sIGxvbmcgaW50ZXJUb25lR2FwKQoreworICAgIHJldHVybiBtX3dl
YkhhbmRsZXItPmluc2VydERUTUYodG9uZXMsIGR1cmF0aW9uLCBpbnRlclRvbmVHYXApOworfQor
Cit2b2lkIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OmRpZFBsYXlUb25lKGNvbnN0IFdl
YlN0cmluZyYgdG9uZSkgY29uc3QKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5kaWRQbGF5VG9uZSh0b25lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MjQ3Mzc3M2U3OWEwYzNkNGZj
ZTI5OTczZGYyOTU4Njg1NGYyMzNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1
bS5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUlRDRFRNRlNlbmRl
ckhhbmRsZXJDaHJvbWl1bV9oCisjZGVmaW5lIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW1f
aAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXJI
YW5kbGVyLmgiCisjaW5jbHVkZSAiUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaCIKKyNpbmNs
dWRlIDxwdWJsaWMvV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMv
V2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudDsKKworY2xhc3MgUlRDRFRNRlNlbmRlckhh
bmRsZXJDaHJvbWl1bSA6IHB1YmxpYyBSVENEVE1GU2VuZGVySGFuZGxlciwgcHVibGljIFdlYktp
dDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPFJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBjcmVhdGUoV2ViS2l0OjpXZWJSVENEVE1G
U2VuZGVySGFuZGxlciopOworICAgIHZpcnR1YWwgflJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21p
dW0oKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoUlRDRFRNRlNlbmRlckhhbmRsZXJD
bGllbnQqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgU3RyaW5nIGN1cnJlbnRUb25lQnVmZmVy
KCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSW5zZXJ0RFRNRigpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBpbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxvbmcg
ZHVyYXRpb24sIGxvbmcgaW50ZXJUb25lR2FwKSBPVkVSUklERTsKKworICAgIC8vIFdlYktpdDo6
V2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVh
bCB2b2lkIGRpZFBsYXlUb25lKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB0b25lKSBjb25zdCBP
VkVSUklERTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBSVENEVE1GU2VuZGVySGFuZGxlckNo
cm9taXVtKFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqKTsKKworICAgIE93blB0cjxX
ZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBtX3dlYkhhbmRsZXI7CisgICAgUlRDRFRN
RlNlbmRlckhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2hyb21pdW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRD
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCmluZGV4IDc4NmUyZDQ2ZjEzYmE4OGMx
MWIzMDkwM2VmNTFmYWQ0MWY2NThjZDkuLjgyODAyZDUyZDY1YjVjNDJjNWY5ZWQwOTYxMWI1MDY1
ZjcwMTUxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDaHJvbWl1bS5jcHAKQEAgLTM1LDcgKzM1LDEwIEBACiAjaW5jbHVkZSAiUlRDUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaCIKIAogI2luY2x1ZGUgIk1lZGlhQ29uc3RyYWlu
dHMuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIgogI2luY2x1ZGUgIlJUQ0Nv
bmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlci5oIgorI2luY2x1
ZGUgIlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJSVENEYXRhQ2hh
bm5lbEhhbmRsZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFubmVsSGFuZGxlckNs
aWVudC5oIgogI2luY2x1ZGUgIlJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3IuaCIKQEAgLTQ3LDcg
KzUwLDkgQEAKICNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViTWVkaWFDb25zdHJhaW50cy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbS5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbVRyYWNrLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlJUQ0NvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJUQ0lDRUNhbmRpZGF0ZS5oPgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJSVENTZXNzaW9uRGVzY3JpcHRpb24uaD4KQEAgLTE1OCw2ICsxNjMsMTUgQEAgUGFz
c093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNo
cm9taXVtOjpjcmVhdGVEYXRhQ2gKICAgICByZXR1cm4gUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2hy
b21pdW06OmNyZWF0ZSh3ZWJIYW5kbGVyKTsKIH0KIAorUGFzc093blB0cjxSVENEVE1GU2VuZGVy
SGFuZGxlcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW06OmNyZWF0ZURUTUZTZW5k
ZXIoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gdHJhY2spCit7CisgICAgV2ViS2l0
OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlciogd2ViSGFuZGxlciA9IG1fd2ViSGFuZGxlci0+Y3Jl
YXRlRFRNRlNlbmRlcih0cmFjayk7CisgICAgaWYgKCF3ZWJIYW5kbGVyKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjpj
cmVhdGUod2ViSGFuZGxlcik7Cit9CisKIHZvaWQgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hy
b21pdW06OnN0b3AoKQogewogICAgIG1fd2ViSGFuZGxlci0+c3RvcCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgKaW5kZXggYjI1
NWU2ZmFmZDY2MGJmODQzMWYxMDRiNWQ0ZDBjODRhNjJiYTJlMC4uYzdkNWY4ZTcwMzNlNDU3YzVi
YTdjMTEyZTJiNGY1YTliMTdjOGNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNj
cmlwdG9yPikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFBhc3NSZWZQdHI8
UlRDU3RhdHNSZXF1ZXN0PikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFJUQ0Rh
dGFDaGFubmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNoYW5uZWwoY29uc3QgU3RyaW5nJiBsYWJlbCwg
Ym9vbCByZWxpYWJsZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFJUQ0RUTUZT
ZW5kZXJIYW5kbGVyPiBjcmVhdGVEVE1GU2VuZGVyKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Db21w
b25lbnQ+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiAg
ICAgLy8gV2ViS2l0OjpXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQgaW1wbGVtZW50
YXRpb24uCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNzQxZDgzYWRkNDBkNzRhZGJlYWYwODMwMTI1Mzg0YjI4ZTkxMWJlYS4uZGJlYTJmNTUwYzQ2
NzhiM2Y0ZmI5YzFkZjZjNmNiZDMyYjIxN2E1OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAyLTA0ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogSW1wbGVtZW50IERUTUYgc3VwcG9ydCBpbiBSVENQZWVyQ29ubmVjdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NzgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIE1vY2sgZnVu
Y3Rpb25hbGl0eSBmb3IgdGhlIERUTUZTZW5kZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoRFRNRlNl
bmRlclRvbmVUYXNrKToKKyAgICAgICAgKERUTUZTZW5kZXJUb25lVGFzazo6RFRNRlNlbmRlclRv
bmVUYXNrKToKKyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6TW9ja1dlYlJU
Q0RUTUZTZW5kZXJIYW5kbGVyKToKKyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxl
cjo6c2V0Q2xpZW50KToKKyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6Y3Vy
cmVudFRvbmVCdWZmZXIpOgorICAgICAgICAoTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpj
YW5JbnNlcnREVE1GKToKKyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6aW5z
ZXJ0RFRNRik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RU
TUZTZW5kZXJIYW5kbGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTWVkaWFTdHJlYW1UcmFjay5oLgorICAgICAgICAoTW9ja1dlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyKToKKyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6dGFza0xp
c3QpOgorICAgICAgICAoTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpjbGVhclRvbmVCdWZm
ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIuY3BwOgorICAgICAgICAoTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlcjo6Y3JlYXRlRFRNRlNlbmRlcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAoTW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlcik6CisKIDIwMTMtMDItMDMgIEFsYW4gQ3V0dGVyICA8YWxh
bmN1dHRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUGF0Y2hMb2dzIGFyZSBub3QgZ2V0dGlu
ZyBjcmVhdGVkIG9uIFF1ZXVlU3RhdHVzU2VydmVyCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUuZ3lwaQppbmRleCAxMzliOGVhZmQ5MDY2YTFkMTI4MDFmN2E1OGYzMmMzZGQwM2Mx
ZmEwLi5jMDg5N2Q5MTkxNWUxYzk2ODM3YWFkMzc4ODJkNGYyZjcyYmFmZGQ3IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTE4LDYgKzE4LDggQEAKICAgICAg
ICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuY3BwJywKKyAg
ICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlJUQ0RhdGFDaGFubmVsSGFuZGxlci5jcHAnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlNwZWVjaElucHV0Q29udHJvbGxlci5jcHAnLApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENE
VE1GU2VuZGVySGFuZGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk2ZDY2NWYzOTBmYjVhMzUwZDYzY2Y3
YjFiYWM1MGRhZWEwYTI1OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5jcHAKQEAgLTAsMCArMSw5MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKKyNpbmNsdWRlICJNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaCIKKworI2lu
Y2x1ZGUgIlRhc2suaCIKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
TWVkaWFTdHJlYW1Tb3VyY2UuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDRFRNRlNlbmRlckhh
bmRsZXJDbGllbnQuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJUZXN0UnVubmVyOworCitjbGFzcyBEVE1GU2VuZGVyVG9uZVRhc2sgOiBwdWJsaWMgV2Vi
TWV0aG9kVGFzazxNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICBE
VE1GU2VuZGVyVG9uZVRhc2soTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKiBvYmplY3QsIFdl
YlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KiBjbGllbnQpCisgICAgICAgIDogV2ViTWV0aG9k
VGFzazxNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI+KG9iamVjdCkKKyAgICAgICAgLCBtX2Ns
aWVudChjbGllbnQpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBydW5JZlZhbGlk
KCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIFdlYlN0cmluZyB0b25lcyA9IG1fb2JqZWN0LT5j
dXJyZW50VG9uZUJ1ZmZlcigpOworICAgICAgICBtX29iamVjdC0+Y2xlYXJUb25lQnVmZmVyKCk7
CisgICAgICAgIG1fY2xpZW50LT5kaWRQbGF5VG9uZSh0b25lcyk7CisgICAgfQorCitwcml2YXRl
OgorICAgIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKK307CisKKy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLworCitNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6Ok1vY2tX
ZWJSVENEVE1GU2VuZGVySGFuZGxlcihjb25zdCBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYgdHJh
Y2spCisgICAgOiBtX2NsaWVudCgwKQorICAgICwgbV90cmFjayh0cmFjaykKK3sKK30KKwordm9p
ZCBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6OnNldENsaWVudChXZWJSVENEVE1GU2VuZGVy
SGFuZGxlckNsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gY2xpZW50OworfQorCitX
ZWJTdHJpbmcgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpjdXJyZW50VG9uZUJ1ZmZlcigp
Cit7CisgICAgcmV0dXJuIG1fdG9uZUJ1ZmZlcjsKK30KKworYm9vbCBNb2NrV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXI6OmNhbkluc2VydERUTUYoKQoreworICAgIGFzc2VydChtX2NsaWVudCAmJiAh
bV90cmFjay5pc051bGwoKSk7CisgICAgcmV0dXJuIG1fdHJhY2suc291cmNlKCkudHlwZSgpID09
IFdlYk1lZGlhU3RyZWFtU291cmNlOjpUeXBlQXVkaW8gJiYgbV90cmFjay5pc0VuYWJsZWQoKSAm
JiBtX3RyYWNrLnNvdXJjZSgpLnJlYWR5U3RhdGUoKSA9PSBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6
UmVhZHlTdGF0ZUxpdmU7Cit9CisKK2Jvb2wgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOjpp
bnNlcnREVE1GKGNvbnN0IFdlYlN0cmluZyYgdG9uZXMsIGxvbmcgZHVyYXRpb24sIGxvbmcgaW50
ZXJUb25lR2FwKQoreworICAgIGFzc2VydChtX2NsaWVudCk7CisgICAgaWYgKCFjYW5JbnNlcnRE
VE1GKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fdG9uZUJ1ZmZlciA9IHRvbmVz
OworICAgIHBvc3RUYXNrKG5ldyBEVE1GU2VuZGVyVG9uZVRhc2sodGhpcywgbV9jbGllbnQpKTsK
KyAgICBwb3N0VGFzayhuZXcgRFRNRlNlbmRlclRvbmVUYXNrKHRoaXMsIG1fY2xpZW50KSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRFRN
RlNlbmRlckhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWJhZGIwOWMwMzk1YzU0OGQ1NDRiZmFlOTRm
OWZjMzY5MzY4NDI4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgKQEAgLTAsMCArMSw1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJfaAorI2RlZmlu
ZSBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJfaAorCisjaW5jbHVkZSAiV2ViVGFzay5oIgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oPgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTdHJp
bmcuaD4KKworY2xhc3MgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyIDogcHVibGljIFdlYktp
dDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXIgeworcHVibGljOgorICAgIE1vY2tXZWJSVENEVE1G
U2VuZGVySGFuZGxlcihjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ29tcG9uZW50Jik7CisK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRs
ZXJDbGllbnQqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTdHJpbmcgY3Vy
cmVudFRvbmVCdWZmZXIoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5JbnNlcnRE
VE1GKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGluc2VydERUTUYoY29uc3QgV2ViS2l0
OjpXZWJTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkgT1ZF
UlJJREU7CisKKyAgICAvLyBXZWJUYXNrIHJlbGF0ZWQgbWV0aG9kcworICAgIFdlYlRlc3RSdW5u
ZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CisgICAg
dm9pZCBjbGVhclRvbmVCdWZmZXIoKSB7IG1fdG9uZUJ1ZmZlci5yZXNldCgpOyB9CisKK3ByaXZh
dGU6CisgICAgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKCk7CisKKyAgICBXZWJLaXQ6Oldl
YlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJLaXQ6OldlYk1l
ZGlhU3RyZWFtQ29tcG9uZW50IG1fdHJhY2s7CisgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV90b25l
QnVmZmVyOworICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0IG1fdGFza0xpc3Q7Cit9Owor
CisjZW5kaWYgLy8gTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5jcHAKaW5kZXggMWZjMGM3OWM3ZDcxMTQ0NTlkZGJmNjZjZmIzNDE1YWVk
ZjQzOTY1MC4uNjEwYWJjNDM5MjllZTQ1ZmQ5NTgxNjFlZjc0NThmZjY0YTJlNzRhZiAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRl
ICJNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCiAKICNpbmNsdWRlICJNb2NrQ29u
c3RyYWludHMuaCIKKyNpbmNsdWRlICJNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaCIKICNp
bmNsdWRlICJNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5jbHVkZSAiVGFzay5o
IgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmg+CkBAIC0yOTMsNiArMjk0
LDExIEBAIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlcjo6Y3JlYXRlRGF0YUNoYW5uZWwoY29uCiAgICAgcmV0dXJuIG5ldyBNb2NrV2ViUlRD
RGF0YUNoYW5uZWxIYW5kbGVyKGxhYmVsLCByZWxpYWJsZSk7CiB9CiAKK1dlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyKiBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVEVE1GU2Vu
ZGVyKGNvbnN0IFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50JiB0cmFjaykKK3sKKyAgICByZXR1cm4g
bmV3IE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcih0cmFjayk7Cit9CisKIHZvaWQgTW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6c3RvcCgpCiB7CiAgICAgbV9zdG9wcGVkID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCA4MzU1YjEyNDcwNTYxYjIwYmUz
YjllOWE4ZTAyODMzOTJhZjgxNGUyLi4zODQxYWFiY2U2ZTEwYWNiZDgyZjdlNjYxMjhlYjIzY2M2
ZjViZGEyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC02MSw2ICs2MSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2Vi
TWVkaWFTdHJlYW0mKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoY29uc3Qg
V2ViS2l0OjpXZWJSVENTdGF0c1JlcXVlc3QmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYktp
dDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBXZWJL
aXQ6OldlYlN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlciogY3JlYXRlRFRNRlNlbmRlcihjb25z
dCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtVHJhY2smKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViVGFzayByZWxhdGVkIG1ldGhvZHMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBmNGEyMWZlZTMxMGVlOTI0ZTlhNDY5ZjE0ZTYzMzVkZjgyMDkwNjQ4Li5lMWNiNmZiNDVh
ZWMwZGI2ZmNiNGViNDgwNzJlNGFjYTBlZmRjYTZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTMtMDItMDQgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAg
ICAgTWVkaWFTdHJlYW0gQVBJOiBJbXBsZW1lbnQgRFRNRiBzdXBwb3J0IGluIFJUQ1BlZXJDb25u
ZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDY3ODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi5o
dG1sOiBBZGRlZC4KKwogMjAxMy0wMi0wMyAgQ2hyaXN0b3BoZSBEdW1leiAgPGRjaHJpc0BnbWFp
bC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBNYXJrIGZhc3QvZG9tL0RPTUltcGxlbWVudGF0
aW9uL2NyZWF0ZURvY3VtZW50LXdpdGgtdXNlZC1kb2N0eXBlLmh0bWwgYXMgZmxha3kKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRt
Zi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLWR0bWYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzYzUwY2UzMDk3NmJkZjhiMGJl
MzM3ZDRkYzgxN2VlNGU2Zjk2ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0bWYtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjIgQEAKK1Rlc3RzIFJUQ0RUTUZTZW5kZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9LCBn
b3RTdHJlYW0sIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIFN0cmVhbSBn
ZW5lcmF0ZWQuCitQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNT
IHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAwCitQQVNTIHBjIGlzIGNvbm5lY3Rl
ZAorUEFTUyBkdG1mc2VuZGVyID0gcGMuY3JlYXRlRFRNRlNlbmRlcih0cmFjayk7IHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogU3ludGF4RXJyb3I6IERPTSBFeGNlcHRpb24gMTIuCitQQVNTIGR0bWZz
ZW5kZXIgPSBwYy5jcmVhdGVEVE1GU2VuZGVyKHRyYWNrKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIGR0bWZzZW5kZXIuY2FuSW5zZXJ0RFRNRiBpcyB0cnVlCitQQVNTIGR0bWZzZW5k
ZXIudG9uZUJ1ZmZlciBpcyAiMSIKK1BBU1Mgb250b25lY2hhbmdlIHdhcyBjYWxsZWQuCitQQVNT
IGV2ZW50LnRvbmUgaXMgIjEiCitQQVNTIG9udG9uZWNoYW5nZSB3YXMgY2FsbGVkLgorUEFTUyBl
dmVudC50b25lIGlzICIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLWR0bWYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45N2Y4OTRhM2I0ZTlmODdkZTll
NWQ2NmZiNTQwZGE5MDI1YzdkMDM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwKQEAgLTAsMCArMSw2NiBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIFJU
Q0RUTUZTZW5kZXIuIik7CisKK3ZhciBwYyA9IG51bGw7Cit2YXIgc3RyZWFtID0gbnVsbDsKK3Zh
ciBkdG1mc2VuZGVyID0gbnVsbDsKKworZnVuY3Rpb24gZXJyb3IoKSB7CisgICAgdGVzdEZhaWxl
ZCgnRXJyb3IgY2FsbGJhY2sgY2FsbGVkLicpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCit2
YXIgZmlyc3RDYWxsID0gdHJ1ZTsKKworZnVuY3Rpb24gb250b25lY2hhbmdlKGUpIHsKKyAgICB0
ZXN0UGFzc2VkKCJvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxlZC4iKTsKKyAgICBldmVudCA9IGU7Cisg
ICAgaWYgKGZpcnN0Q2FsbCkgeworICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50
LnRvbmUnLCAiMSIpOworICAgICAgICBmaXJzdENhbGwgPSBmYWxzZTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LnRvbmUnLCAiIik7CisgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKworZnVuY3Rpb24gcGNfb25pY2VjaGFuZ2UoKSB7
CisgICAgaWYgKHBjLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gImNvbXBsZXRlZCIpIHsKKyAgICAg
ICAgdGVzdFBhc3NlZCgicGMgaXMgY29ubmVjdGVkIik7CisgICAgICAgIHRyYWNrID0gc3RyZWFt
LmdldEF1ZGlvVHJhY2tzKClbMF07CisKKyAgICAgICAgc2hvdWxkVGhyb3coJ2R0bWZzZW5kZXIg
PSBwYy5jcmVhdGVEVE1GU2VuZGVyKHRyYWNrKTsnKTsKKyAgICAgICAgcGMuYWRkU3RyZWFtKHN0
cmVhbSk7CisgICAgICAgIHNob3VsZE5vdFRocm93KCdkdG1mc2VuZGVyID0gcGMuY3JlYXRlRFRN
RlNlbmRlcih0cmFjayk7Jyk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnZHRtZnNlbmRlci5jYW5J
bnNlcnREVE1GJyk7CisKKyAgICAgICAgZHRtZnNlbmRlci5vbnRvbmVjaGFuZ2UgPSBvbnRvbmVj
aGFuZ2U7CisgICAgICAgIGR0bWZzZW5kZXIuaW5zZXJ0RFRNRigiMSIpOworICAgICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2R0bWZzZW5kZXIudG9uZUJ1ZmZlcicsICIxIik7CisgICAgfQor
fQorCitmdW5jdGlvbiBnb3RTdHJlYW0ocykgeworICAgIHN0cmVhbSA9IHM7CisgICAgdGVzdFBh
c3NlZCgnU3RyZWFtIGdlbmVyYXRlZC4nKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1ZGlv
VHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJh
Y2tzKCkubGVuZ3RoJywgJzAnKTsKKworICAgIHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0
aW9uKG51bGwsIG51bGwpOworICAgIHBjLm9uaWNlY2hhbmdlID0gcGNfb25pY2VjaGFuZ2U7Cit9
CisKK3Nob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0
cnVlfSwgZ290U3RyZWFtLCBlcnJvcik7Iik7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="205734"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186787</attachid>
            <date>2013-02-06 01:34:33 -0800</date>
            <delta_ts>2013-02-06 03:58:38 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106782-20130206103107.patch</filename>
            <type>text/plain</type>
            <size>76106</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxOTdmZjdiYmYzYjM5
ZDUwNzRiNTIyYTIyMTFhMzE0ODI1MGE3M2JiLi40MWJkMmVlOTFmYWMzY2Q4MDNmNWJiOWE4ZDgy
NTM3ZjY5NGVkMmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMy0wMi0wNCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IEltcGxlbWVudCBEVE1GIHN1cHBvcnQgaW4gUlRDUGVlckNvbm5lY3Rpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjc4MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgVGhlIFdlYlJUQyBzcGVj
aWZpY2F0aW9uIGhhdmUgYWRkZWQgc3VwcG9ydCBmb3IgRFRNRjoKKyAgICAgICAgaHR0cDovL2Rl
di53My5vcmcvMjAxMS93ZWJydGMvZWRpdG9yL3dlYnJ0Yy5odG1sI3BlZXItdG8tcGVlci1kdG1m
CisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gd2lzZSB0aGlzIGlzIGltcGxlbWVudGVkIHVzaW5n
IHRoZSBzYW1lIHBhdHRlcm4gYXMgUlRDRGF0YUNoYW5uZWw7CisgICAgICAgIHdoZXJlIGEgUlRD
RFRNRlNlbmRlckhhbmRsZXIgaXMgY3JlYXRlZCBieSB0aGUgVUEgdGhyb3VnaCBhIG5ldyBtZXRo
b2Qgb24KKyAgICAgICAgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLgorCisgICAgICAgICogUGxh
dGZvcm0uZ3lwaToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1UcmFj
ay5oOgorICAgICAgICAoV2ViTWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgICogY2hyb21pdW0v
cHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1UcmFjay5oLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6On5XZWJSVENEVE1GU2VuZGVySGFuZGxlcik6Cisg
ICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50Lmg6
IENvcGllZCBmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJl
YW1UcmFjay5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXJD
bGllbnQ6On5XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCk6CisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGVE
VE1GU2VuZGVyKToKKwogMjAxMy0wMi0wNSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFByb3ZpZGUgY29tcG9zaXRvciBvZmZzY3JlZW4g
Y29udGV4dCB0aHJvdWdoIHRoZSBXZWJMYXllclRyZWVWaWV3Q2xpZW50IGludGVyZmFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDJkMGZiMGU0ZjFlYjdiNDk2YjY3MmNlZDIyMjczNTExMWM2MDA2OWYuLjM2NTJm
MTc1OGU2MzVhMjRjODk5YjkxM2IzNTQ4ODY5MWI1Y2Y1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMDMgQEAKKzIwMTMtMDItMDQgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5j
b20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBJbXBsZW1lbnQgRFRNRiBzdXBwb3J0IGlu
IFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDY3ODIKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisg
ICAgICAgIFRoZSBXZWJSVEMgc3BlY2lmaWNhdGlvbiBoYXZlIGFkZGVkIHN1cHBvcnQgZm9yIERU
TUY6CisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnLzIwMTEvd2VicnRjL2VkaXRvci93ZWJydGMu
aHRtbCNwZWVyLXRvLXBlZXItZHRtZgorCisgICAgICAgIEltcGxlbWVudGF0aW9uIHdpc2UgdGhp
cyBpcyBpbXBsZW1lbnRlZCB1c2luZyB0aGUgc2FtZSBwYXR0ZXJuIGFzIFJUQ0RhdGFDaGFubmVs
OworICAgICAgICB3aGVyZSBhIFJUQ0RUTUZTZW5kZXJIYW5kbGVyIGlzIGNyZWF0ZWQgYnkgdGhl
IFVBIHRocm91Z2ggYSBuZXcgbWV0aG9kIG9uCisgICAgICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFu
ZGxlci4KKworICAgICAgICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LWR0bWYuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5k
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRD
RFRNRlNlbmRlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OlJU
Q0RUTUZTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6flJUQ0RUTUZT
ZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6Y2FuSW5zZXJ0RFRNRik6
CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjp0cmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpSVENEVE1GU2VuZGVyOjp0b25lQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RU
TUZTZW5kZXI6Omluc2VydERUTUYpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6
ZGlkUGxheVRvbmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6aW50ZXJmYWNl
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXI6OnN0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RUTUZTZW5kZXI6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpzY2hlZHVsZURpc3BhdGNoRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UlRDRFRNRlNlbmRlcjo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFJUQ0RUTUZTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UlRDRFRNRlNlbmRlcjo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRl
cjo6aW50ZXJUb25lR2FwKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZT
ZW5kZXIuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZU
b25lQ2hhbmdlRXZlbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYk1lZGlhU3RyZWFtVHJhY2suaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6flJUQ0RUTUZUb25lQ2hh
bmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6dG9u
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GVG9uZUNoYW5nZUV2ZW50OjppbnRlcmZhY2VO
YW1lKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZl
bnQuaDogQ29waWVkIGZyb20gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRp
YVN0cmVhbVRyYWNrLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFJUQ0RUTUZUb25l
Q2hhbmdlRXZlbnRJbml0KToKKyAgICAgICAgKFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGw6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURhdGFDaGFubmVs
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rp
b246OmdldFN0cmVhbUJ5VHJhY2tJZCk6CisgICAgICAgIChXZWJDb3JlOjpSVENQZWVyQ29ubmVj
dGlvbjo6Y3JlYXRlRFRNRlNlbmRlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENQZWVy
Q29ubmVjdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGRvbS9FdmVudE5h
bWVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5pbjoK
KyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYk1lZGlhU3RyZWFtVHJhY2s6OldlYk1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVySGFu
ZGxlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1l
ZGlhU3RyZWFtVHJhY2suaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUlRDRFRNRlNl
bmRlckhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlckhhbmRsZXI6On5S
VENEVE1GU2VuZGVySGFuZGxlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaDogQ29waWVkIGZyb20gU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVRyYWNrLmguCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50Ojp+UlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQp
OgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxl
ci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChSVENQZWVyQ29ubmVjdGlvbkhhbmRs
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RUTUZTZW5k
ZXJIYW5kbGVyQ2hyb21pdW0uY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYk1lZGlhU3RyZWFtVHJhY2suaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlckhhbmRs
ZXJDaHJvbWl1bTo6flJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6c2V0Q2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OmN1cnJlbnRUb25lQnVmZmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OmNhbklu
c2VydERUTUYpOgorICAgICAgICAoV2ViQ29yZTo6UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1
bTo6aW5zZXJ0RFRNRik6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVySGFuZGxlckNo
cm9taXVtOjpkaWRQbGF5VG9uZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hy
b21pdW0vUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bS5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtVHJhY2suaC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2hyb21pdW06OmNyZWF0ZURUTUZTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVt
KToKKwogMjAxMy0wMi0wNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0MTk2MS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpIGIvU291cmNlL1BsYXRmb3JtL1BsYXRm
b3JtLmd5cGkKaW5kZXggZTM0YTg5OWU1OGI1YTBjOGQwMzM3ZmE5ZGM2OWJhNGI0NzRkNDk2Zi4u
NTg5MTBhZDA3ODZiZDgxZTU0ZDkzZTBiZjA5ZmM0YTYyZDkwMTRmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKKysrIGIvU291cmNlL1BsYXRmb3JtL1BsYXRmb3Jt
Lmd5cGkKQEAgLTEwMiw2ICsxMDIsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJQcml2YXRlT3duUHRyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQcml2
YXRlUHRyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENDb25maWd1cmF0
aW9uLmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFu
ZGxlci5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRFRNRlNlbmRlckhh
bmRsZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlJUQ0RhdGFD
aGFubmVsSGFuZGxlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUlRDRGF0
YUNoYW5uZWxIYW5kbGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9X
ZWJSVENJQ0VDYW5kaWRhdGUuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYk1lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IDA3MjhlMThmNmVmZjVkZWI5YjA0
OGIyM2RmZDFkYTQ0OGE3MDFiM2EuLjQ5MjNhMGNmZTAwMDU5OGFjMjdkMTk2MGFmYzg2YzJkYmU0
MTBjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVk
aWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
TWVkaWFTdHJlYW1UcmFjay5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICBXRUJLSVRf
RVhQT1JUIGJvb2wgaXNFbmFibGVkKCkgY29uc3Q7CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJ
T04KKyAgICBXZWJNZWRpYVN0cmVhbVRyYWNrKFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJl
YW1Db21wb25lbnQ+KTsKICAgICBXZWJNZWRpYVN0cmVhbVRyYWNrKFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtQ29tcG9uZW50Kik7CiAgICAgV2ViTWVkaWFTdHJlYW1UcmFjayYgb3BlcmF0b3I9KFdlYkNv
cmU6Ok1lZGlhU3RyZWFtQ29tcG9uZW50Kik7CiAgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ29tcG9uZW50PigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oIGIv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjUzYzg4YTQ2M2VkZGZlMDZlN2ZhMjlmZTc1NjZkN2Y3NWY5NDNlMmQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RU
TUZTZW5kZXJIYW5kbGVyLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUlRDRFRNRlNlbmRlckhhbmRs
ZXJfaAorI2RlZmluZSBXZWJSVENEVE1GU2VuZGVySGFuZGxlcl9oCisKKyNpbmNsdWRlICJXZWJD
b21tb24uaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudDsKKworY2xhc3MgV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYlJUQ0RUTUZTZW5kZXJIYW5k
bGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2xpZW50KikgPSAwOworCisgICAgdmlydHVhbCBXZWJTdHJpbmcgY3VycmVudFRvbmVC
dWZmZXIoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSW5zZXJ0RFRNRigpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaW5zZXJ0RFRNRihjb25zdCBXZWJTdHJpbmcmIHRvbmVzLCBsb25nIGR1
cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CisKKyNlbmRpZiAvLyBXZWJSVENEVE1GU2VuZGVySGFuZGxlcl9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xp
ZW50LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGJkODNjODZjODU0NjEyOTExN2UxZDM2MDg4NDkw
YjExYzhiYzRiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQuaApAQCAtMCwwICsxLDQyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudF9oCisjZGVmaW5lIFdlYlJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2xpZW50X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQgeworcHVibGljOgor
ICAgIHZpcnR1YWwgfldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUGxheVRvbmUoY29uc3QgV2ViU3RyaW5nJiB0b25lKSBjb25zdCA9IDA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlJUQ0RUTUZTZW5k
ZXJIYW5kbGVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCmluZGV4IDM0NDczYzI1
NGE3OTUwOTJjZjE2NmEwMDEwM2EwYWM5ZjUyZjA1MjUuLjY1OTY3NzM5NzZkOTNhMWQzZWU3ZTA2
MDIwZTI2ZjhlMGJjOGFkNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAtMzQsNyAr
MzQsOSBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJNZWRpYUNvbnN0cmFpbnRzOwog
Y2xhc3MgV2ViTWVkaWFTdHJlYW07CitjbGFzcyBXZWJNZWRpYVN0cmVhbVRyYWNrOwogY2xhc3Mg
V2ViUlRDQ29uZmlndXJhdGlvbjsKK2NsYXNzIFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyOwogY2xh
c3MgV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyOwogY2xhc3MgV2ViUlRDSUNFQ2FuZGlkYXRlOwog
Y2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50OwpAQCAtNjMsNiArNjUsNyBA
QCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFJlbW92ZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHdo
ZW4gY2xpZW50cyBoYXZlIGNoYW5nZWQuCiAgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKGNvbnN0
IFdlYlJUQ1N0YXRzUmVxdWVzdCYpIHsgfQogICAgIHZpcnR1YWwgV2ViUlRDRGF0YUNoYW5uZWxI
YW5kbGVyKiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBXZWJTdHJpbmcmIGxhYmVsLCBib29sIHJl
bGlhYmxlKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBXZWJSVENEVE1GU2VuZGVySGFuZGxl
ciogY3JlYXRlRFRNRlNlbmRlcihjb25zdCBXZWJNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaykgeyBy
ZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBlYzI4NmJiZGQyYTFhMmRlZTViOWFjZTQxNDk2NDgzNGFmZTBlMWY0Li5j
OTMzZDJkMWZmYjEyNTA0NDk3ZmM2Mzg2YTYxNWYyMTE4YTE0ZTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMjIyLDYgKzIyMiw4IEBAIHNldChXZWJDb3JlX0lETF9GSUxFUwogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaWRsCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbAogICAgIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmlkbAorICAg
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGwKKyAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENEYXRhQ2hhbm5lbC5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFu
bmVsRXZlbnQuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENFcnJvckNhbGxiYWNrLmlk
bApAQCAtODYzLDYgKzg2NSw4IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0
b3JNZWRpYVN0cmVhbS5jcHAKKyAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIu
Y3BwCisgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcAog
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCiAgICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2ZW50LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDSWNlQ2FuZGlkYXRlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
YWFlNWMzYjhlZWExZTg0NGQ5YWEzNDQ4YWMzYjlkNzM5MDk1MGRhMi4uNmU3ZDZmNzYyMTZlZjY1
NDVkNTFjNjc2Yzc5YzYwNTYwZTNlMTdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC02MzEsNiArNjMxLDEwIEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1JlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSR0JDb2xvci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNSR0JDb2xvci5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUlRDRFRNRlNl
bmRlci5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEVE1GU2VuZGVyLmggXAor
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JUQ0RhdGFDaGFubmVsLmNwcCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1JUQ0RhdGFDaGFubmVsLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNSVENEYXRhQ2hhbm5lbEV2ZW50LmNwcCBcCkBAIC0xMjQzLDYgKzEyNDcsOCBAQCBkb21fYmlu
ZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3IuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsIFwKKwkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGwgXAorCSQoV2ViQ29y
ZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmlkbCBcCiAJJChX
ZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmlkbCBcCiAJJChXZWJD
b3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuaWRsIFwKIAkkKFdl
YkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxsYmFjay5pZGwgXApAQCAtMTkz
Nyw2ICsxOTQzLDEwIEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JD
YWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
clVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmggXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmggXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5jcHAgXApAQCAtNTc2
Miw2ICs1NzcyLDggQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZXNRdWVyeUNsaWVu
dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENDb25maWd1cmF0
aW9uLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5k
ZXJIYW5kbGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
U2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNl
bmRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI3YWZkZjdhMTRhODFiNGY5YTU0MzYwZGZiOWNjYWUxNGQ1
MjBiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRFRNRlNlbmRlci5jcHAKQEAgLTAsMCArMSwxODAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiUlRDRFRNRlNlbmRlci5oIgorCisj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIK
KyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlci5oIgorI2luY2x1ZGUgIlJUQ0RUTUZUb25l
Q2hhbmdlRXZlbnQuaCIKKyNpbmNsdWRlICJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIGNvbnN0IGxvbmcgbWluVG9uZUR1cmF0aW9uTXMgPSA3MDsKK3N0YXRpYyBjb25z
dCBsb25nIGRlZmF1bHRUb25lRHVyYXRpb25NcyA9IDEwMDsKK3N0YXRpYyBjb25zdCBsb25nIG1h
eFRvbmVEdXJhdGlvbk1zID0gNjAwMDsKK3N0YXRpYyBjb25zdCBsb25nIG1pbkludGVyVG9uZUdh
cE1zID0gNTA7CitzdGF0aWMgY29uc3QgbG9uZyBkZWZhdWx0SW50ZXJUb25lR2FwTXMgPSA1MDsK
KworUGFzc1JlZlB0cjxSVENEVE1GU2VuZGVyPiBSVENEVE1GU2VuZGVyOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyKiBwZWVy
Q29ubmVjdGlvbkhhbmRsZXIsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ss
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFj
ayA9IHBycFRyYWNrOworICAgIE93blB0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4gaGFuZGxlciA9
IHBlZXJDb25uZWN0aW9uSGFuZGxlci0+Y3JlYXRlRFRNRlNlbmRlcih0cmFjay0+Y29tcG9uZW50
KCkpOworICAgIGlmICghaGFuZGxlcikgeworICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBSZWZQdHI8UlRDRFRNRlNlbmRlcj4g
ZHRtZlNlbmRlciA9IGFkb3B0UmVmKG5ldyBSVENEVE1GU2VuZGVyKGNvbnRleHQsIHRyYWNrLCBo
YW5kbGVyLnJlbGVhc2UoKSkpOworICAgIGR0bWZTZW5kZXItPnN1c3BlbmRJZk5lZWRlZCgpOwor
ICAgIHJldHVybiBkdG1mU2VuZGVyLnJlbGVhc2UoKTsKK30KKworUlRDRFRNRlNlbmRlcjo6UlRD
RFRNRlNlbmRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+IHRyYWNrLCBQYXNzT3duUHRyPFJUQ0RUTUZTZW5kZXJIYW5kbGVyPiBo
YW5kbGVyKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCisgICAgLCBtX3Ry
YWNrKHRyYWNrKQorICAgICwgbV9kdXJhdGlvbihkZWZhdWx0VG9uZUR1cmF0aW9uTXMpCisgICAg
LCBtX2ludGVyVG9uZUdhcChkZWZhdWx0SW50ZXJUb25lR2FwTXMpCisgICAgLCBtX2hhbmRsZXIo
aGFuZGxlcikKKyAgICAsIG1fc3RvcHBlZChmYWxzZSkKKyAgICAsIG1fc2NoZWR1bGVkRXZlbnRU
aW1lcih0aGlzLCAmUlRDRFRNRlNlbmRlcjo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKQorewor
ICAgIG1faGFuZGxlci0+c2V0Q2xpZW50KHRoaXMpOworfQorCitSVENEVE1GU2VuZGVyOjp+UlRD
RFRNRlNlbmRlcigpCit7Cit9CisKK2Jvb2wgUlRDRFRNRlNlbmRlcjo6Y2FuSW5zZXJ0RFRNRigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGFuZGxlci0+Y2FuSW5zZXJ0RFRNRigpOworfQorCitN
ZWRpYVN0cmVhbVRyYWNrKiBSVENEVE1GU2VuZGVyOjp0cmFjaygpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fdHJhY2suZ2V0KCk7Cit9CisKK1N0cmluZyBSVENEVE1GU2VuZGVyOjp0b25lQnVmZmVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYW5kbGVyLT5jdXJyZW50VG9uZUJ1ZmZlcigpOwor
fQorCit2b2lkIFJUQ0RUTUZTZW5kZXI6Omluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25lcywg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaW5zZXJ0RFRNRih0b25lcywgZGVmYXVsdFRvbmVE
dXJhdGlvbk1zLCBkZWZhdWx0SW50ZXJUb25lR2FwTXMsIGVjKTsKK30KKwordm9pZCBSVENEVE1G
U2VuZGVyOjppbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxvbmcgZHVyYXRpb24sIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGluc2VydERUTUYodG9uZXMsIGR1cmF0aW9uLCBkZWZh
dWx0SW50ZXJUb25lR2FwTXMsIGVjKTsKK30KKwordm9pZCBSVENEVE1GU2VuZGVyOjppbnNlcnRE
VE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxvbmcgZHVyYXRpb24sIGxvbmcgaW50ZXJUb25lR2Fw
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoIWNhbkluc2VydERUTUYoKSkgeworICAg
ICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgaWYgKGR1cmF0aW9uID4gbWF4VG9uZUR1cmF0aW9uTXMgfHwgZHVyYXRpb24gPCBtaW5Ub25l
RHVyYXRpb25NcykgeworICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoaW50ZXJUb25lR2FwIDwgbWluSW50ZXJUb25lR2FwTXMpIHsKKyAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9k
dXJhdGlvbiA9IGR1cmF0aW9uOworICAgIG1faW50ZXJUb25lR2FwID0gaW50ZXJUb25lR2FwOwor
CisgICAgaWYgKCFtX2hhbmRsZXItPmluc2VydERUTUYodG9uZXMsIG1fZHVyYXRpb24sIG1faW50
ZXJUb25lR2FwKSkKKyAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworfQorCit2b2lkIFJUQ0RUTUZT
ZW5kZXI6OmRpZFBsYXlUb25lKGNvbnN0IFN0cmluZyYgdG9uZSkKK3sKKyAgICBzY2hlZHVsZURp
c3BhdGNoRXZlbnQoUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6Y3JlYXRlKHRvbmUpKTsKK30KKwor
Y29uc3QgQXRvbWljU3RyaW5nJiBSVENEVE1GU2VuZGVyOjppbnRlcmZhY2VOYW1lKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvclJUQ0RUTUZTZW5kZXI7Cit9
CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIFJUQ0RUTUZTZW5kZXI6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKK30KKwordm9pZCBSVENEVE1GU2VuZGVyOjpzdG9wKCkKK3sKKyAg
ICBtX3N0b3BwZWQgPSB0cnVlOworICAgIG1faGFuZGxlci0+c2V0Q2xpZW50KDApOworfQorCitF
dmVudFRhcmdldERhdGEqIFJUQ0RUTUZTZW5kZXI6OmV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAg
cmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZlbnRUYXJnZXREYXRhKiBSVENEVE1G
U2VuZGVyOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRh
cmdldERhdGE7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlcjo6c2NoZWR1bGVEaXNwYXRjaEV2ZW50
KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQoreworICAgIG1fc2NoZWR1bGVkRXZlbnRzLmFwcGVu
ZChldmVudCk7CisKKyAgICBpZiAoIW1fc2NoZWR1bGVkRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQor
ICAgICAgICBtX3NjaGVkdWxlZEV2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lk
IFJUQ0RUTUZTZW5kZXI6OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZChUaW1lcjxSVENEVE1GU2Vu
ZGVyPiopCit7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVj
dG9yPFJlZlB0cjxFdmVudD4gPiBldmVudHM7CisgICAgZXZlbnRzLnN3YXAobV9zY2hlZHVsZWRF
dmVudHMpOworCisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPjo6aXRlcmF0b3IgaXQgPSBldmVu
dHMuYmVnaW4oKTsKKyAgICBmb3IgKDsgaXQgIT0gZXZlbnRzLmVuZCgpOyArK2l0KQorICAgICAg
ICBkaXNwYXRjaEV2ZW50KCgqaXQpLnJlbGVhc2UoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUx
ZmFlNGNkMDUyMzUzNzlmN2VjNDQzYzVmZTk2ZGZmMzQ1NDU1Y2YKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaApAQCAt
MCwwICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09H
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgUlRDRFRNRlNlbmRlcl9oCisjZGVmaW5lIFJUQ0RUTUZTZW5kZXJfaAor
CisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiUlRDRFRNRlNlbmRlckhhbmRs
ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsKK2Ns
YXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKK2NsYXNzIFJUQ0RUTUZTZW5kZXJIYW5kbGVy
OworCitjbGFzcyBSVENEVE1GU2VuZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UlRDRFRNRlNlbmRl
cj4sIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50
LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxSVENEVE1GU2VuZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJUQ1BlZXJD
b25uZWN0aW9uSGFuZGxlciosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4sIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICB+UlRDRFRNRlNlbmRlcigpOworCisgICAgYm9vbCBjYW5JbnNlcnREVE1G
KCkgY29uc3Q7CisgICAgTWVkaWFTdHJlYW1UcmFjayogdHJhY2soKSBjb25zdDsKKyAgICBTdHJp
bmcgdG9uZUJ1ZmZlcigpIGNvbnN0OworICAgIGxvbmcgZHVyYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2R1cmF0aW9uOyB9CisgICAgbG9uZyBpbnRlclRvbmVHYXAoKSBjb25zdCB7IHJldHVybiBt
X2ludGVyVG9uZUdhcDsgfQorCisgICAgdm9pZCBpbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9u
ZXMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0
b25lcywgbG9uZyBkdXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgaW5zZXJ0RFRN
Rihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCwg
RXhjZXB0aW9uQ29kZSYpOworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0
b25lY2hhbmdlKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVS
UklERTsKKworICAgIC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkg
T1ZFUlJJREU7CisKKyAgICB1c2luZyBSZWZDb3VudGVkPFJUQ0RUTUZTZW5kZXI+OjpyZWY7Cisg
ICAgdXNpbmcgUmVmQ291bnRlZDxSVENEVE1GU2VuZGVyPjo6ZGVyZWY7CisKK3ByaXZhdGU6Cisg
ICAgUlRDRFRNRlNlbmRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPiwgUGFzc093blB0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4pOworCisgICAg
dm9pZCBzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAgIHZvaWQg
c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKFRpbWVyPFJUQ0RUTUZTZW5kZXI+Kik7CisKKyAgICAv
LyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERh
dGEoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRU
YXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
T1ZFUlJJREUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
T1ZFUlJJREUgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZlbnRUYXJnZXRE
YXRhOworCisgICAgLy8gUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUGxheVRvbmUoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisKKyAgICBSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4gbV90cmFjazsKKyAgICBsb25nIG1fZHVyYXRpb247CisgICAgbG9uZyBt
X2ludGVyVG9uZUdhcDsKKworICAgIE93blB0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4gbV9oYW5k
bGVyOworCisgICAgYm9vbCBtX3N0b3BwZWQ7CisKKyAgICBUaW1lcjxSVENEVE1GU2VuZGVyPiBt
X3NjaGVkdWxlZEV2ZW50VGltZXI7CisgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4gPiBtX3NjaGVk
dWxlZEV2ZW50czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBSVENEVE1GU2VuZGVyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuaWRsCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjFmN2M5OTZiZWM5OWJhYjZkZTQwOGJkYTlkMTMyNjE0NGMwYWUxNzEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZT
ZW5kZXIuaWRsCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgR09PR0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAg
IEFjdGl2ZURPTU9iamVjdCwKKyAgICBFdmVudFRhcmdldAorXSBpbnRlcmZhY2UgUlRDRFRNRlNl
bmRlciB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gY2FuSW5zZXJ0RFRNRjsKKyAg
ICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1UcmFjayB0cmFjazsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRvbmVCdWZmZXI7CisgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGxvbmcgZHVyYXRpb247CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgaW50ZXJUb25lR2Fw
OworCisgICAgdm9pZCBpbnNlcnREVE1GKGluIERPTVN0cmluZyB0b25lcywgaW4gW09wdGlvbmFs
XSBsb25nIGR1cmF0aW9uLCBpbiBbT3B0aW9uYWxdIGxvbmcgaW50ZXJUb25lR2FwKQorICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
dG9uZWNoYW5nZTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgIHZvaWQgYWRk
RXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRM
aXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgIGJvb2xlYW4gZGlzcGF0Y2hF
dmVudChpbiBFdmVudCBldmVudCkKKyAgICAgICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZU
b25lQ2hhbmdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYzliNjcxODJiZGI5MTNkMmU1
OGZkZmUwZDM0OWZjYzBkMjU4MjdiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmNwcApAQCAtMCwwICsx
LDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBH
T09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaCIK
KworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxSVENEVE1GVG9uZUNoYW5nZUV2ZW50
PiBSVENEVE1GVG9uZUNoYW5nZUV2ZW50OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudCk7Cit9CisKK1Bhc3NSZWZQdHI8UlRDRFRNRlRv
bmVDaGFuZ2VFdmVudD4gUlRDRFRNRlRvbmVDaGFuZ2VFdmVudDo6Y3JlYXRlKGNvbnN0IFN0cmlu
ZyYgdG9uZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJUQ0RUTUZUb25lQ2hhbmdlRXZl
bnQodG9uZSkpOworfQorCitQYXNzUmVmUHRyPFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ+IFJUQ0RU
TUZUb25lQ2hhbmdlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0
IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnRJbml0JiBpbml0aWFsaXplcikKK3sKKyAgICBBU1NFUlQo
dHlwZSA9PSBldmVudE5hbWVzKCkudG9uZWNoYW5nZUV2ZW50KTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoaW5pdGlhbGl6ZXIpKTsKK30KKworUlRDRFRN
RlRvbmVDaGFuZ2VFdmVudDo6UlRDRFRNRlRvbmVDaGFuZ2VFdmVudCgpCit7Cit9CisKK1JUQ0RU
TUZUb25lQ2hhbmdlRXZlbnQ6OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiB0
b25lKQorICAgIDogRXZlbnQoZXZlbnROYW1lcygpLnRvbmVjaGFuZ2VFdmVudCwgZmFsc2UsIGZh
bHNlKQorICAgICwgbV90b25lKHRvbmUpCit7Cit9CisKK1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6
OlJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoY29uc3QgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudEluaXQm
IGluaXRpYWxpemVyKQorICAgIDogRXZlbnQoZXZlbnROYW1lcygpLnRvbmVjaGFuZ2VFdmVudCwg
aW5pdGlhbGl6ZXIpCisgICAgLCBtX3RvbmUoaW5pdGlhbGl6ZXIudG9uZSkKK3sKK30KKworUlRD
RFRNRlRvbmVDaGFuZ2VFdmVudDo6flJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoKQoreworfQorCitj
b25zdCBTdHJpbmcmIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ6OnRvbmUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3RvbmU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgUlRDRFRNRlRvbmVDaGFu
Z2VFdmVudDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMo
KS5pbnRlcmZhY2VGb3JSVENEVE1GVG9uZUNoYW5nZUV2ZW50OworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFu
Z2VFdmVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MjYzYjE4ODE3Yjg2ZGNlMDAwMmQ1MzAyNTdkODU2NTU5
YzUzOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENEVE1GVG9u
ZUNoYW5nZUV2ZW50X2gKKyNkZWZpbmUgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudF9oCisKKyNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgUlRD
RFRNRlRvbmVDaGFuZ2VFdmVudEluaXQgOiBwdWJsaWMgRXZlbnRJbml0IHsKKyAgICBTdHJpbmcg
dG9uZTsKK307CisKK2NsYXNzIFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQgOiBwdWJsaWMgRXZlbnQg
eworcHVibGljOgorICAgIHZpcnR1YWwgflJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoKTsKKworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ+IGNyZWF0ZSgpOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQ+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIHRvbmUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0RUTUZUb25lQ2hhbmdlRXZl
bnQ+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGNvbnN0IFJUQ0RUTUZUb25lQ2hh
bmdlRXZlbnRJbml0JiBpbml0aWFsaXplcik7CisKKyAgICBjb25zdCBTdHJpbmcmIHRvbmUoKSBj
b25zdDsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgUlRDRFRNRlRvbmVDaGFuZ2VFdmVudCgpOworICAgIGV4
cGxpY2l0IFJUQ0RUTUZUb25lQ2hhbmdlRXZlbnQoY29uc3QgU3RyaW5nJiB0b25lKTsKKyAgICBl
eHBsaWNpdCBSVENEVE1GVG9uZUNoYW5nZUV2ZW50KGNvbnN0IFJUQ0RUTUZUb25lQ2hhbmdlRXZl
bnRJbml0Jik7CisKKyAgICBTdHJpbmcgbV90b25lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIFJUQ0RU
TUZUb25lQ2hhbmdlRXZlbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VFdmVudC5pZGwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjgwNTdmNTE2MTBkOTE2NTk0MDgyM2ZhZTkyNzk1Y2MwZmEzZGFkMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlRvbmVDaGFuZ2VF
dmVudC5pZGwKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAg
Q29uc3RydWN0b3JUZW1wbGF0ZT1FdmVudAorXSBpbnRlcmZhY2UgUlRDRFRNRlRvbmVDaGFuZ2VF
dmVudCA6IEV2ZW50IHsKKyAgICBbSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3JdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdG9uZTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCmluZGV4IGFi
Yjc1ODZkZmEzY2JjOThkOWYyN2JkYjk3YjEwYTg1ZTM3MGM5ZmQuLjMxY2U2ZWE4NWY1ZDdlYTc3
NDQ2YjIwNWI1MjFhMTcwNjhiODM3ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBAIC00Myw2ICs0Myw3
IEBACiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50c0ltcGwuaCIKICNpbmNsdWRlICJNZWRpYVN0
cmVhbUV2ZW50LmgiCiAjaW5jbHVkZSAiUlRDQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJU
Q0RUTUZTZW5kZXIuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbC5oIgogI2luY2x1ZGUgIlJU
Q0RhdGFDaGFubmVsRXZlbnQuaCIKICNpbmNsdWRlICJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuaCIK
QEAgLTQ1MSw2ICs0NTIsNDAgQEAgUGFzc1JlZlB0cjxSVENEYXRhQ2hhbm5lbD4gUlRDUGVlckNv
bm5lY3Rpb246OmNyZWF0ZURhdGFDaGFubmVsKFN0cmluZyBsYWJlbCwgY28KICAgICByZXR1cm4g
Y2hhbm5lbC5yZWxlYXNlKCk7CiB9CiAKK2Jvb2wgUlRDUGVlckNvbm5lY3Rpb246Omhhc0xvY2Fs
U3RyZWFtV2l0aFRyYWNrSWQoY29uc3QgU3RyaW5nJiB0cmFja0lkKQoreworICAgIGZvciAoTWVk
aWFTdHJlYW1WZWN0b3I6Oml0ZXJhdG9yIGl0ZXIgPSBtX2xvY2FsU3RyZWFtcy5iZWdpbigpOyBp
dGVyICE9IG1fbG9jYWxTdHJlYW1zLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgaWYgKCgqaXRl
ciktPmdldFRyYWNrQnlJZCh0cmFja0lkKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NSZWZQdHI8UlRDRFRNRlNlbmRlcj4gUlRD
UGVlckNvbm5lY3Rpb246OmNyZWF0ZURUTUZTZW5kZXIoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiBwcnBUcmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fc2lnbmFsaW5n
U3RhdGUgPT0gU2lnbmFsaW5nU3RhdGVDbG9zZWQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKCFwcnBUcmFjaykg
eworICAgICAgICBlYyA9IFR5cGVFcnJvcjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisg
ICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7CisKKyAgICBpZiAo
IWhhc0xvY2FsU3RyZWFtV2l0aFRyYWNrSWQodHJhY2stPmlkKCkpKSB7CisgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgUmVmUHRyPFJUQ0RU
TUZTZW5kZXI+IGR0bWZTZW5kZXIgPSBSVENEVE1GU2VuZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBtX3BlZXJIYW5kbGVyLmdldCgpLCB0cmFjay5yZWxlYXNlKCksIGVjKTsK
KyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBkdG1mU2VuZGVyLnJl
bGVhc2UoKTsKK30KKwogdm9pZCBSVENQZWVyQ29ubmVjdGlvbjo6Y2xvc2UoRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgaWYgKG1fc2lnbmFsaW5nU3RhdGUgPT0gU2lnbmFsaW5nU3RhdGVDbG9z
ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaAppbmRleCA1NDg2NDk5YmI4ODFlYTJkMzkzNDcwNWQ3MmRmOGQ1OGE0
Zjg0YzliLi5jOTk3ZDM1NzNiYzIxMTYyNDNkNWI4MzkxYTRiZGY4NGZlZTdmZDJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlh
Q29uc3RyYWludHM7CiBjbGFzcyBNZWRpYVN0cmVhbVRyYWNrOwogY2xhc3MgUlRDQ29uZmlndXJh
dGlvbjsKK2NsYXNzIFJUQ0RUTUZTZW5kZXI7CiBjbGFzcyBSVENEYXRhQ2hhbm5lbDsKIGNsYXNz
IFJUQ0Vycm9yQ2FsbGJhY2s7CiBjbGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb247CkBAIC05Niw2
ICs5Nyw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8UlRDRGF0YUNoYW5uZWw+IGNyZWF0
ZURhdGFDaGFubmVsKFN0cmluZyBsYWJlbCwgY29uc3QgRGljdGlvbmFyeSYgZGF0YUNoYW5uZWxE
aWN0LCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICBQYXNzUmVmUHRyPFJUQ0RUTUZTZW5kZXI+IGNy
ZWF0ZURUTUZTZW5kZXIoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiwgRXhjZXB0aW9uQ29k
ZSYpOworCiAgICAgdm9pZCBjbG9zZShFeGNlcHRpb25Db2RlJik7CiAKICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKG5lZ290aWF0aW9ubmVlZGVkKTsKQEAgLTEzMyw2ICsxMzYs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IHBh
cnNlQ29uZmlndXJhdGlvbihjb25zdCBEaWN0aW9uYXJ5JiBjb25maWd1cmF0aW9uLCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVu
dD4pOwogICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKFRpbWVyPFJUQ1BlZXJDb25u
ZWN0aW9uPiopOworICAgIGJvb2wgaGFzTG9jYWxTdHJlYW1XaXRoVHJhY2tJZChjb25zdCBTdHJp
bmcmIHRyYWNrSWQpOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCiAgICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlk
bAppbmRleCBiY2FiZWY2ZGI2ZTVmOGJhYzgwYmQ1NWQyN2M5YzAxNGYxZDA4Y2Q3Li4wNTUzYjg5
MjBlMDRkN2ZkZjA4OWQ4YjNkMTY5ZDkwMWExZTgyNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmlkbApAQCAt
NzksNiArNzksOSBAQAogICAgIFJUQ0RhdGFDaGFubmVsIGNyZWF0ZURhdGFDaGFubmVsKGluIFtU
cmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0
cmluZyBsYWJlbCwgaW4gW09wdGlvbmFsXSBEaWN0aW9uYXJ5IG9wdGlvbnMpCiAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKIAorICAgIFJUQ0RUTUZTZW5kZXIgY3JlYXRlRFRNRlNlbmRl
cihpbiBNZWRpYVN0cmVhbVRyYWNrIHRyYWNrKQorICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisKICAgICB2b2lkIGNsb3NlKCkKICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBmYzExNTVjYTA2ZGU3MjE5NmJmNTNhNTdlYTlhZWUxMGE0NDk1
NDZjLi4xODA0MTU2ZmQ0MDRhMjA0NTE0MGQ5YzFjMDkzMzJjZDQyY2Y2MGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC03MSw2ICs3MSw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVk
aWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNr
LmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmlk
bCcsCisgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GVG9uZUNoYW5nZUV2
ZW50LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5l
bC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxF
dmVudC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRXJyb3JDYWxs
YmFjay5pZGwnLApAQCAtODE3LDEwICs4MTksMTQgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oJywKICAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxs
YmFjay5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVs
LmgnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAn
LAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZlbnQuY3Bw
JywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZUb25lQ2hhbmdlRXZl
bnQuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5j
cHAnLAotICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVu
dC5oJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmgn
LAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVudC5j
cHAnLAorICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWxFdmVu
dC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Vycm9yQ2FsbGJhY2su
aCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuY3Bw
JywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5oJywK
QEAgLTQzNzksNiArNDM4NSw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Tb3VyY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVNvdXJjZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENDb25maWd1cmF0aW9uLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JUQ0RUTUZTZW5kZXJIYW5kbGVyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsSGFuZGxlci5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAn
LApAQCAtNDM5Miw2ICs0NDAwLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SVENWb2lkUmVxdWVzdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9j
aHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRlckNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5oJywK
KyAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVy
SGFuZGxlckNocm9taXVtLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y2hyb21pdW0vUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJvbWl1
bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0Rh
dGFDaGFubmVsSGFuZGxlckNocm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlh
c3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCAzZjBlN2EyN2I0Zjg5MmQyNWQ0ZDU3MTJlZjk1NDhh
MmFiMzE4MTg2Li4yMmE3YjMyYmFiNzliYzUyNjAwNzY0MWEzYjkxY2M0MGM1MWI0YzZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTIzNCw2ICsyMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgbWFjcm8obmVnb3RpYXRpb25uZWVkZWQpIFwKICAgICBtYWNybyhkYXRhY2hhbm5l
bCkgXAogICAgIG1hY3JvKGdhdGhlcmluZ2NoYW5nZSkgXAorICAgIG1hY3JvKHRvbmVjaGFuZ2Up
IFwKICAgICBcCiAgICAgbWFjcm8oc2hvdykgXAogICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMu
aW4KaW5kZXggYzI2OTNkYTk2ZmFlZDk4N2U0Mzc3MzFiNWZjNzYxMTJmZjc0M2U0ZC4uYjRiNWEz
ZTc3NGFkMzU0ZTRiYzA5MGE0NTgwY2I5M2IxNDIzMjE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaW4KQEAgLTM0LDYgKzM0LDcgQEAgTWVkaWFTdHJlYW1FdmVudCBjb25kaXRpb25hbD1NRURJ
QV9TVFJFQU0KIE1lZGlhU3RyZWFtVHJhY2tFdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0K
IFJUQ0ljZUNhbmRpZGF0ZUV2ZW50IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogUlRDRGF0YUNo
YW5uZWxFdmVudCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK1JUQ0RUTUZUb25lQ2hhbmdlRXZl
bnQgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBTcGVlY2hJbnB1dEV2ZW50IGNvbmRpdGlvbmFs
PUlOUFVUX1NQRUVDSAogU3BlZWNoUmVjb2duaXRpb25FcnJvciBjb25kaXRpb25hbD1TQ1JJUFRF
RF9TUEVFQ0gKIFNwZWVjaFJlY29nbml0aW9uRXZlbnQgY29uZGl0aW9uYWw9U0NSSVBURURfU1BF
RUNICmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCAyNDM2ODVh
Nzg5MTJkYjQ3ODY5NDE1NDgxYzc4ODVhOGIyNjA3YmY2Li44MjU2NjdiM2NhZDdhMzUxMWEwZGE0
ZTA5ZWQ2OWU5MjJlNzExOTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KQEAgLTI0LDYgKzI0LDcgQEAgTm9kZQogTm90aWZpY2F0aW9uIGNvbmRpdGlvbmFsPU5P
VElGSUNBVElPTlN8TEVHQUNZX05PVElGSUNBVElPTlMKIFBlcmZvcm1hbmNlIGNvbmRpdGlvbmFs
PVdFQl9USU1JTkcKIFJUQ0RhdGFDaGFubmVsIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorUlRD
RFRNRlNlbmRlciBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIFJUQ1BlZXJDb25uZWN0aW9uIGNv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTQogU2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9X
T1JLRVJTCiBTaGFyZWRXb3JrZXJDb250ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1l
ZGlhU3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJNZWRpYVN0cmVhbVRyYWNrLmNwcAppbmRleCA0M2JlZjM1ZDc0NWMwMGQ5Mzg5ZmY3
OGY4MGQ1NGM0ZGNkZTRkNjZhLi4zMTM1NWJhZGY4Y2RhM2FlZTQ2YTU4MWY5MTQ2ZGI2ODI1NGY2
M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYk1lZGlhU3RyZWFtVHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1UcmFjay5jcHAKQEAgLTM4LDYgKzM4LDExIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorV2ViTWVk
aWFTdHJlYW1UcmFjazo6V2ViTWVkaWFTdHJlYW1UcmFjayhQYXNzUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtQ29tcG9uZW50PiBtZWRpYVN0cmVhbUNvbXBvbmVudCkKKyAgICA6IG1fcHJpdmF0
ZShtZWRpYVN0cmVhbUNvbXBvbmVudCkKK3sKK30KKwogV2ViTWVkaWFTdHJlYW1UcmFjazo6V2Vi
TWVkaWFTdHJlYW1UcmFjayhXZWJDb3JlOjpNZWRpYVN0cmVhbUNvbXBvbmVudCogbWVkaWFTdHJl
YW1Db21wb25lbnQpCiAgICAgOiBtX3ByaXZhdGUobWVkaWFTdHJlYW1Db21wb25lbnQpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEVE1GU2Vu
ZGVySGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUlRDRFRN
RlNlbmRlckhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTZhYThmM2M0YzUwOGYwYjM2YWFmYzNhOWEy
Yzk1ZWRjY2VhOGFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlckhhbmRsZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENE
VE1GU2VuZGVySGFuZGxlcl9oCisjZGVmaW5lIFJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSVENEVE1GU2VuZGVySGFuZGxlckNsaWVu
dDsKKworY2xhc3MgUlRDRFRNRlNlbmRlckhhbmRsZXIgeworcHVibGljOgorICAgIHZpcnR1YWwg
flJUQ0RUTUZTZW5kZXJIYW5kbGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50
KFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KikgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmcg
Y3VycmVudFRvbmVCdWZmZXIoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuSW5zZXJ0RFRN
RigpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaW5zZXJ0RFRNRihjb25zdCBTdHJpbmcmIHRvbmVz
LCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkgPSAwOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlm
IC8vIFJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE3YzQ3MTU0ZjM1ZTk3MjgwMjhlNzg4YTJlMGRhYzM5NzQ5YTczZmUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENE
VE1GU2VuZGVySGFuZGxlckNsaWVudC5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2xpZW50X2gKKyNkZWZpbmUgUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnRfaAorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBS
VENEVE1GU2VuZGVySGFuZGxlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UlRDRFRN
RlNlbmRlckhhbmRsZXJDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRQbGF5VG9u
ZShjb25zdCBTdHJpbmcmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDRFRNRlNlbmRlckhh
bmRsZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCBkOGY5NmQzMGYz
MWU2ZDE5NTk3ZTM4ZjUxZmI5Yjk4NDcwNTcyN2ViLi5lMTllNGIyMzllNzEyODAyNjYyMjc3YjNl
YzljOTc3MjgxMjgzNTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAtNDAsNyAr
NDAsOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYUNvbnN0cmFpbnRzOwor
Y2xhc3MgTWVkaWFTdHJlYW1Db21wb25lbnQ7CiBjbGFzcyBSVENDb25maWd1cmF0aW9uOworY2xh
c3MgUlRDRFRNRlNlbmRlckhhbmRsZXI7CiBjbGFzcyBSVENEYXRhQ2hhbm5lbEhhbmRsZXI7CiBj
bGFzcyBSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yOwogY2xhc3MgUlRDUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50OwpAQCAtNjcsMTAgKzY5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBhZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVN0cmVhbShQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0U3RhdHMoUGFzc1JlZlB0cjxSVENTdGF0c1JlcXVlc3Q+KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHN0b3AoKSA9IDA7Ci0KLSAgICAvLyBSVENEYXRhQ2hhbm5lbAogICAgIHZpcnR1YWwgUGFz
c093blB0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFN0
cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpID0gMDsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
UlRDRFRNRlNlbmRlckhhbmRsZXI+IGNyZWF0ZURUTUZTZW5kZXIoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUNvbXBvbmVudD4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKIAogcHJv
dGVjdGVkOgogICAgIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcigpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRFRNRlNlbmRl
ckhhbmRsZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
ZTQyYTk2ZTZjZWJjNzYzMGQ2NjliNDVlMzFiMDEwMmI5MmRkNDcwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vUlRDRFRNRlNl
bmRlckhhbmRsZXJDaHJvbWl1bS5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBHT09HTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxl
ckNocm9taXVtLmgiCisKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5oIgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUGFzc093blB0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4gUlRDRFRNRlNlbmRl
ckhhbmRsZXJDaHJvbWl1bTo6Y3JlYXRlKFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKiB3ZWJIYW5k
bGVyKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJv
bWl1bSh3ZWJIYW5kbGVyKSk7Cit9CisKK1JUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OlJU
Q0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0oV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIHdlYkhh
bmRsZXIpCisgICAgOiBtX3dlYkhhbmRsZXIoYWRvcHRQdHIod2ViSGFuZGxlcikpCisgICAgLCBt
X2NsaWVudCgwKQoreworfQorCitSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtOjp+UlRDRFRN
RlNlbmRlckhhbmRsZXJDaHJvbWl1bSgpCit7Cit9CisKK3ZvaWQgUlRDRFRNRlNlbmRlckhhbmRs
ZXJDaHJvbWl1bTo6c2V0Q2xpZW50KFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KiBjbGllbnQp
Cit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgbV93ZWJIYW5kbGVyLT5zZXRDbGllbnQo
bV9jbGllbnQgPyB0aGlzIDogMCk7Cit9CisKK1N0cmluZyBSVENEVE1GU2VuZGVySGFuZGxlckNo
cm9taXVtOjpjdXJyZW50VG9uZUJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1fd2ViSGFuZGxlci0+
Y3VycmVudFRvbmVCdWZmZXIoKTsKK30KKworYm9vbCBSVENEVE1GU2VuZGVySGFuZGxlckNocm9t
aXVtOjpjYW5JbnNlcnREVE1GKCkKK3sKKyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5jYW5JbnNl
cnREVE1GKCk7Cit9CisKK2Jvb2wgUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bTo6aW5zZXJ0
RFRNRihjb25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdh
cCkKK3sKKyAgICByZXR1cm4gbV93ZWJIYW5kbGVyLT5pbnNlcnREVE1GKHRvbmVzLCBkdXJhdGlv
biwgaW50ZXJUb25lR2FwKTsKK30KKwordm9pZCBSVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVt
OjpkaWRQbGF5VG9uZShjb25zdCBXZWJTdHJpbmcmIHRvbmUpIGNvbnN0Cit7CisgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkUGxheVRvbmUodG9uZSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENE
VE1GU2VuZGVySGFuZGxlckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jaHJvbWl1bS9SVENEVE1GU2VuZGVySGFuZGxlckNocm9taXVtLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZThiNGEwN2FkODYzZGE3MjNiYTAyOTg3YjQyZWRiNmY5OGMxM2IyOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ0RU
TUZTZW5kZXJIYW5kbGVyQ2hyb21pdW0uaApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBSVENEVE1GU2VuZGVy
SGFuZGxlckNocm9taXVtX2gKKyNkZWZpbmUgUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bV9o
CisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiUlRDRFRNRlNlbmRlckhh
bmRsZXIuaCIKKyNpbmNsdWRlICJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5oIgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50OworCitjbGFzcyBSVENEVE1GU2VuZGVySGFu
ZGxlckNocm9taXVtIDogcHVibGljIFJUQ0RUTUZTZW5kZXJIYW5kbGVyLCBwdWJsaWMgV2ViS2l0
OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NPd25QdHI8UlRDRFRNRlNlbmRlckhhbmRsZXI+IGNyZWF0ZShXZWJLaXQ6OldlYlJUQ0RUTUZT
ZW5kZXJIYW5kbGVyKik7CisgICAgdmlydHVhbCB+UlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1
bSgpOworCisgICAgdmlydHVhbCB2b2lkIHNldENsaWVudChSVENEVE1GU2VuZGVySGFuZGxlckNs
aWVudCopIE9WRVJSSURFOworCisgICAgdmlydHVhbCBTdHJpbmcgY3VycmVudFRvbmVCdWZmZXIo
KSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBjYW5JbnNlcnREVE1GKCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25lcywgbG9uZyBk
dXJhdGlvbiwgbG9uZyBpbnRlclRvbmVHYXApIE9WRVJSSURFOworCisgICAgLy8gV2ViS2l0OjpX
ZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUGxheVRvbmUoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHRvbmUpIGNvbnN0IE9W
RVJSSURFOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hy
b21pdW0oV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlciopOworCisgICAgT3duUHRyPFdl
YktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXI+IG1fd2ViSGFuZGxlcjsKKyAgICBSVENEVE1G
U2VuZGVySGFuZGxlckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gUlRDRFRN
RlNlbmRlckhhbmRsZXJDaHJvbWl1bV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5jcHAKaW5kZXggNzg2ZTJkNDZmMTNiYTg4YzEx
YjMwOTAzZWY1MWZhZDQxZjY1OGNkOS4uODI4MDJkNTJkNjViNWM0MmM1ZjllZDA5NjExYjUwNjVm
NzAxNTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1BlZXJDb25uZWN0aW9u
SGFuZGxlckNocm9taXVtLmNwcApAQCAtMzUsNyArMzUsMTAgQEAKICNpbmNsdWRlICJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5oIgogCiAjaW5jbHVkZSAiTWVkaWFDb25zdHJhaW50
cy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29tcG9uZW50LmgiCiAjaW5jbHVkZSAiUlRDQ29u
ZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgiCisjaW5jbHVk
ZSAiUlRDRFRNRlNlbmRlckhhbmRsZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlJUQ0RhdGFDaGFu
bmVsSGFuZGxlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUlRDRGF0YUNoYW5uZWxIYW5kbGVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5oIgpAQCAtNDcsNyAr
NTAsOSBAQAogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJNZWRpYUNvbnN0cmFpbnRzLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtLmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYk1lZGlhU3RyZWFtVHJhY2suaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViUlRDQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2Vu
ZGVySGFuZGxlci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIu
aD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViUlRDSUNFQ2FuZGlkYXRlLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlJUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oPgpAQCAtMTU4LDYgKzE2MywxNSBAQCBQYXNz
T3duUHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hy
b21pdW06OmNyZWF0ZURhdGFDaAogICAgIHJldHVybiBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDaHJv
bWl1bTo6Y3JlYXRlKHdlYkhhbmRsZXIpOwogfQogCitQYXNzT3duUHRyPFJUQ0RUTUZTZW5kZXJI
YW5kbGVyPiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bTo6Y3JlYXRlRFRNRlNlbmRl
cihQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9uZW50PiB0cmFjaykKK3sKKyAgICBXZWJLaXQ6
OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKiB3ZWJIYW5kbGVyID0gbV93ZWJIYW5kbGVyLT5jcmVh
dGVEVE1GU2VuZGVyKHRyYWNrKTsKKyAgICBpZiAoIXdlYkhhbmRsZXIpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgcmV0dXJuIFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2hyb21pdW06OmNy
ZWF0ZSh3ZWJIYW5kbGVyKTsKK30KKwogdm9pZCBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJv
bWl1bTo6c3RvcCgpCiB7CiAgICAgbV93ZWJIYW5kbGVyLT5zdG9wKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vY2hyb21pdW0vUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2hyb21pdW0uaAppbmRleCBiMjU1
ZTZmYWZkNjYwYmY4NDMxZjEwNGI1ZDRkMGM4NGE2MmJhMmUwLi5jN2Q1ZjhlNzAzM2U0NTdjNWJh
N2MxMTJlMmI0ZjVhOWIxN2M4Y2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9SVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDaHJvbWl1bS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL1JUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlckNocm9taXVtLmgKQEAgLTcwLDYgKzcwLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2Ny
aXB0b3I+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMoUGFzc1JlZlB0cjxS
VENTdGF0c1JlcXVlc3Q+KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8UlRDRGF0
YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBTdHJpbmcmIGxhYmVsLCBi
b29sIHJlbGlhYmxlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8UlRDRFRNRlNl
bmRlckhhbmRsZXI+IGNyZWF0ZURUTUZTZW5kZXIoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBv
bmVudD4pIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CiAKICAg
ICAvLyBXZWJLaXQ6OldlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCBpbXBsZW1lbnRh
dGlvbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBmNWVjZmIxNjYxMzUwYjYwZjhjZjJiYmU2YTNkMTAxZjcwNTM2YTRjLi4zOTVjNzAxZTUyMzQ1
YmFiZGFlM2NmODkwZmZiODdhMjJiYWVlN2M5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTMtMDItMDQgIFRvbW15
IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0g
QVBJOiBJbXBsZW1lbnQgRFRNRiBzdXBwb3J0IGluIFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3ODIKKworICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIEFkZGluZyBNb2NrIGZ1bmN0aW9u
YWxpdHkgZm9yIHRoZSBEVE1GU2VuZGVyLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwaToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2Nr
V2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKERUTUZTZW5kZXJU
b25lVGFzayk6CisgICAgICAgIChEVE1GU2VuZGVyVG9uZVRhc2s6OkRUTUZTZW5kZXJUb25lVGFz
ayk6CisgICAgICAgIChNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6Ok1vY2tXZWJSVENEVE1G
U2VuZGVySGFuZGxlcik6CisgICAgICAgIChNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6OnNl
dENsaWVudCk6CisgICAgICAgIChNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6OmN1cnJlbnRU
b25lQnVmZmVyKToKKyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6Y2FuSW5z
ZXJ0RFRNRik6CisgICAgICAgIChNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6Omluc2VydERU
TUYpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYk1lZGlhU3RyZWFtVHJhY2suaC4KKyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFu
ZGxlcik6CisgICAgICAgIChNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6OnRhc2tMaXN0KToK
KyAgICAgICAgKE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6Y2xlYXJUb25lQnVmZmVyKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rp
b25IYW5kbGVyLmNwcDoKKyAgICAgICAgKE1vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI6
OmNyZWF0ZURUTUZTZW5kZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01v
Y2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaDoKKyAgICAgICAgKE1vY2tXZWJSVENQZWVy
Q29ubmVjdGlvbkhhbmRsZXIpOgorCiAyMDEzLTAyLTA2ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2gu
ZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGUgbXkg
ZW1haWwgYWRkcmVzcyBpbiBjb21taXR0ZXJzLnB5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkKaW5kZXggNzc2YThhNTZhNmNmYzQ1NDEzOTIwODVjMTkzOTI1MDc5MGUy
MWE2Ni4uMDg4Yzk4NTc3NDRjN2ZjZDQ2NmYyY2YxZDg4MTEwYzdhM2IyMDhmZSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC0xOCw2ICsxOCw4IEBACiAgICAg
ICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCcsCisg
ICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmNwcCcsCisg
ICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJSVENEYXRhQ2hhbm5lbEhhbmRsZXIuY3BwJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuY3BwJywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRD
RFRNRlNlbmRlckhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjN2I2NTQ5Y2U4MzVkNzg0ZTY5MTM0
YzVlNzllMzY3ZDk5OWFlMGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuY3BwCkBAIC0wLDAgKzEsOTQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgR09PR0xFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1v
Y2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oIgorCisjaW5jbHVkZSAiVGFzay5oIgorI2luY2x1
ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudC5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXI7CisKK2Ns
YXNzIERUTUZTZW5kZXJUb25lVGFzayA6IHB1YmxpYyBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENE
VE1GU2VuZGVySGFuZGxlcj4geworcHVibGljOgorICAgIERUTUZTZW5kZXJUb25lVGFzayhNb2Nr
V2ViUlRDRFRNRlNlbmRlckhhbmRsZXIqIG9iamVjdCwgV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJD
bGllbnQqIGNsaWVudCkKKyAgICAgICAgOiBXZWJNZXRob2RUYXNrPE1vY2tXZWJSVENEVE1GU2Vu
ZGVySGFuZGxlcj4ob2JqZWN0KQorICAgICAgICAsIG1fY2xpZW50KGNsaWVudCkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJ1bklmVmFsaWQoKSBPVkVSUklERQorICAgIHsKKyAg
ICAgICAgV2ViU3RyaW5nIHRvbmVzID0gbV9vYmplY3QtPmN1cnJlbnRUb25lQnVmZmVyKCk7Cisg
ICAgICAgIG1fb2JqZWN0LT5jbGVhclRvbmVCdWZmZXIoKTsKKyAgICAgICAgbV9jbGllbnQtPmRp
ZFBsYXlUb25lKHRvbmVzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViUlRDRFRNRlNlbmRl
ckhhbmRsZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisK
K01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6TW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVy
KGNvbnN0IFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50JiB0cmFjaykKKyAgICA6IG1fY2xpZW50KDAp
CisgICAgLCBtX3RyYWNrKHRyYWNrKQoreworfQorCit2b2lkIE1vY2tXZWJSVENEVE1GU2VuZGVy
SGFuZGxlcjo6c2V0Q2xpZW50KFdlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KiBjbGllbnQp
Cit7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisKK1dlYlN0cmluZyBNb2NrV2ViUlRDRFRN
RlNlbmRlckhhbmRsZXI6OmN1cnJlbnRUb25lQnVmZmVyKCkKK3sKKyAgICByZXR1cm4gbV90b25l
QnVmZmVyOworfQorCitib29sIE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcjo6Y2FuSW5zZXJ0
RFRNRigpCit7CisgICAgYXNzZXJ0KG1fY2xpZW50ICYmICFtX3RyYWNrLmlzTnVsbCgpKTsKKyAg
ICByZXR1cm4gbV90cmFjay5zb3VyY2UoKS50eXBlKCkgPT0gV2ViTWVkaWFTdHJlYW1Tb3VyY2U6
OlR5cGVBdWRpbyAmJiBtX3RyYWNrLmlzRW5hYmxlZCgpICYmIG1fdHJhY2suc291cmNlKCkucmVh
ZHlTdGF0ZSgpID09IFdlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlTGl2ZTsKK30KKwor
Ym9vbCBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXI6Omluc2VydERUTUYoY29uc3QgV2ViU3Ry
aW5nJiB0b25lcywgbG9uZyBkdXJhdGlvbiwgbG9uZyBpbnRlclRvbmVHYXApCit7CisgICAgYXNz
ZXJ0KG1fY2xpZW50KTsKKyAgICBpZiAoIWNhbkluc2VydERUTUYoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgbV90b25lQnVmZmVyID0gdG9uZXM7CisgICAgcG9zdFRhc2sobmV3IERU
TUZTZW5kZXJUb25lVGFzayh0aGlzLCBtX2NsaWVudCkpOworICAgIHBvc3RUYXNrKG5ldyBEVE1G
U2VuZGVyVG9uZVRhc2sodGhpcywgbV9jbGllbnQpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXIuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIwZmQzMTgxYjA0MTMxZDc0MjNmZDk1NTllODg0ZjdjYTgwNzM5NzgKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViUlRDRFRNRlNl
bmRlckhhbmRsZXIuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEdPT0dMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRs
ZXJfaAorI2RlZmluZSBNb2NrV2ViUlRDRFRNRlNlbmRlckhhbmRsZXJfaAorCisjaW5jbHVkZSAi
V2ViVGFzay5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJSVENEVE1GU2VuZGVySGFuZGxlci5oPgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJTdHJpbmcuaD4KKworY2xhc3MgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyIDog
cHVibGljIFdlYktpdDo6V2ViUlRDRFRNRlNlbmRlckhhbmRsZXIgeworcHVibGljOgorICAgIE1v
Y2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcihjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ29t
cG9uZW50Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdlYktpdDo6V2ViUlRDRFRN
RlNlbmRlckhhbmRsZXJDbGllbnQqKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgV2ViS2l0OjpX
ZWJTdHJpbmcgY3VycmVudFRvbmVCdWZmZXIoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9v
bCBjYW5JbnNlcnREVE1GKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGluc2VydERUTUYo
Y29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVy
VG9uZUdhcCkgT1ZFUlJJREU7CisKKyAgICAvLyBXZWJUYXNrIHJlbGF0ZWQgbWV0aG9kcworICAg
IFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tM
aXN0OyB9CisgICAgdm9pZCBjbGVhclRvbmVCdWZmZXIoKSB7IG1fdG9uZUJ1ZmZlci5yZXNldCgp
OyB9CisKK3ByaXZhdGU6CisgICAgTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyKCk7CisKKyAg
ICBXZWJLaXQ6OldlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBX
ZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ29tcG9uZW50IG1fdHJhY2s7CisgICAgV2ViS2l0OjpXZWJT
dHJpbmcgbV90b25lQnVmZmVyOworICAgIFdlYlRlc3RSdW5uZXI6OldlYlRhc2tMaXN0IG1fdGFz
a0xpc3Q7Cit9OworCisjZW5kaWYgLy8gTW9ja1dlYlJUQ0RUTUZTZW5kZXJIYW5kbGVyX2gKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29u
bmVjdGlvbkhhbmRsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dl
YlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKaW5kZXggMWZjMGM3OWM3ZDcxMTQ0NTlkZGJm
NjZjZmIzNDE1YWVkZjQzOTY1MC4uNjEwYWJjNDM5MjllZTQ1ZmQ5NTgxNjFlZjc0NThmZjY0YTJl
NzRhZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCiAKICNpbmNs
dWRlICJNb2NrQ29uc3RyYWludHMuaCIKKyNpbmNsdWRlICJNb2NrV2ViUlRDRFRNRlNlbmRlckhh
bmRsZXIuaCIKICNpbmNsdWRlICJNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyLmgiCiAjaW5j
bHVkZSAiVGFzay5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJNZWRpYUNvbnN0cmFpbnRzLmg+CkBA
IC0yOTMsNiArMjk0LDExIEBAIFdlYlJUQ0RhdGFDaGFubmVsSGFuZGxlciogTW9ja1dlYlJUQ1Bl
ZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlRGF0YUNoYW5uZWwoY29uCiAgICAgcmV0dXJuIG5l
dyBNb2NrV2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKGxhYmVsLCByZWxpYWJsZSk7CiB9CiAKK1dl
YlJUQ0RUTUZTZW5kZXJIYW5kbGVyKiBNb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpj
cmVhdGVEVE1GU2VuZGVyKGNvbnN0IFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50JiB0cmFjaykKK3sK
KyAgICByZXR1cm4gbmV3IE1vY2tXZWJSVENEVE1GU2VuZGVySGFuZGxlcih0cmFjayk7Cit9CisK
IHZvaWQgTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjo6c3RvcCgpCiB7CiAgICAgbV9z
dG9wcGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL01vY2tXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAppbmRleCA4MzU1YjEy
NDcwNTYxYjIwYmUzYjllOWE4ZTAyODMzOTJhZjgxNGUyLi4zODQxYWFiY2U2ZTEwYWNiZDgyZjdl
NjYxMjhlYjIzY2M2ZjViZGEyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYlJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCkBAIC02
MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3RyZWFtKGNvbnN0
IFdlYktpdDo6V2ViTWVkaWFTdHJlYW0mKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
U3RhdHMoY29uc3QgV2ViS2l0OjpXZWJSVENTdGF0c1JlcXVlc3QmKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIFdlYktpdDo6V2ViUlRDRGF0YUNoYW5uZWxIYW5kbGVyKiBjcmVhdGVEYXRhQ2hhbm5l
bChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgbGFiZWwsIGJvb2wgcmVsaWFibGUpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJSVENEVE1GU2VuZGVySGFuZGxlciogY3JlYXRlRFRN
RlNlbmRlcihjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtVHJhY2smKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViVGFzayByZWxhdGVk
IG1ldGhvZHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA4NWUzZDVmZjQ1ODVlZDQ0ZDFhZGQ2OWMxYmMxNTNjMDlhNjE1MmFm
Li40ZGIwMTMzNTA0YTk3NDkwMzg1NGZiOTBiOTNkNzAxNzNmZGRhMTU5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTMtMDItMDQgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5j
b20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBJbXBsZW1lbnQgRFRNRiBzdXBwb3J0IGlu
IFJUQ1BlZXJDb25uZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDY3ODIKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisg
ICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi1kdG1mLmh0bWw6IEFkZGVkLgorCiAyMDEzLTAyLTA2ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJz
ZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEdUSyBnYXJkZW5pbmcuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLWR0
bWYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi1kdG1mLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xM2M1MGNlMzA5NzZiZGY4YjBi
ZTMzN2Q0ZGM4MTdlZTRlNmY5NmUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1kdG1mLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDIyIEBACitUZXN0cyBSVENEVE1GU2VuZGVyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSwg
Z290U3RyZWFtLCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBTdHJlYW0g
Z2VuZXJhdGVkLgorUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFT
UyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMAorUEFTUyBwYyBpcyBjb25uZWN0
ZWQKK1BBU1MgZHRtZnNlbmRlciA9IHBjLmNyZWF0ZURUTUZTZW5kZXIodHJhY2spOyB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IFN5bnRheEVycm9yOiBET00gRXhjZXB0aW9uIDEyLgorUEFTUyBkdG1m
c2VuZGVyID0gcGMuY3JlYXRlRFRNRlNlbmRlcih0cmFjayk7IGRpZCBub3QgdGhyb3cgZXhjZXB0
aW9uLgorUEFTUyBkdG1mc2VuZGVyLmNhbkluc2VydERUTUYgaXMgdHJ1ZQorUEFTUyBkdG1mc2Vu
ZGVyLnRvbmVCdWZmZXIgaXMgIjEiCitQQVNTIG9udG9uZWNoYW5nZSB3YXMgY2FsbGVkLgorUEFT
UyBldmVudC50b25lIGlzICIxIgorUEFTUyBvbnRvbmVjaGFuZ2Ugd2FzIGNhbGxlZC4KK1BBU1Mg
ZXZlbnQudG9uZSBpcyAiIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24tZHRtZi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1kdG1mLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTdmODk0YTNiNGU5Zjg3ZGU5
ZTVkNjZmYjU0MGRhOTAyNWM3ZDAzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tZHRtZi5odG1sCkBAIC0wLDAgKzEsNjYg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBS
VENEVE1GU2VuZGVyLiIpOworCit2YXIgcGMgPSBudWxsOwordmFyIHN0cmVhbSA9IG51bGw7Cit2
YXIgZHRtZnNlbmRlciA9IG51bGw7CisKK2Z1bmN0aW9uIGVycm9yKCkgeworICAgIHRlc3RGYWls
ZWQoJ0Vycm9yIGNhbGxiYWNrIGNhbGxlZC4nKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKwor
dmFyIGZpcnN0Q2FsbCA9IHRydWU7CisKK2Z1bmN0aW9uIG9udG9uZWNoYW5nZShlKSB7CisgICAg
dGVzdFBhc3NlZCgib250b25lY2hhbmdlIHdhcyBjYWxsZWQuIik7CisgICAgZXZlbnQgPSBlOwor
ICAgIGlmIChmaXJzdENhbGwpIHsKKyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVu
dC50b25lJywgIjEiKTsKKyAgICAgICAgZmlyc3RDYWxsID0gZmFsc2U7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC50b25lJywgIiIpOworICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHBjX29uaWNlY2hhbmdlKCkg
eworICAgIGlmIChwYy5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICJjb21wbGV0ZWQiKSB7CisgICAg
ICAgIHRlc3RQYXNzZWQoInBjIGlzIGNvbm5lY3RlZCIpOworICAgICAgICB0cmFjayA9IHN0cmVh
bS5nZXRBdWRpb1RyYWNrcygpWzBdOworCisgICAgICAgIHNob3VsZFRocm93KCdkdG1mc2VuZGVy
ID0gcGMuY3JlYXRlRFRNRlNlbmRlcih0cmFjayk7Jyk7CisgICAgICAgIHBjLmFkZFN0cmVhbShz
dHJlYW0pOworICAgICAgICBzaG91bGROb3RUaHJvdygnZHRtZnNlbmRlciA9IHBjLmNyZWF0ZURU
TUZTZW5kZXIodHJhY2spOycpOworICAgICAgICBzaG91bGRCZVRydWUoJ2R0bWZzZW5kZXIuY2Fu
SW5zZXJ0RFRNRicpOworCisgICAgICAgIGR0bWZzZW5kZXIub250b25lY2hhbmdlID0gb250b25l
Y2hhbmdlOworICAgICAgICBkdG1mc2VuZGVyLmluc2VydERUTUYoIjEiKTsKKyAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdkdG1mc2VuZGVyLnRvbmVCdWZmZXInLCAiMSIpOworICAgIH0K
K30KKworZnVuY3Rpb24gZ290U3RyZWFtKHMpIHsKKyAgICBzdHJlYW0gPSBzOworICAgIHRlc3RQ
YXNzZWQoJ1N0cmVhbSBnZW5lcmF0ZWQuJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRp
b1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1Ry
YWNrcygpLmxlbmd0aCcsICcwJyk7CisKKyAgICBwYyA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVj
dGlvbihudWxsLCBudWxsKTsKKyAgICBwYy5vbmljZWNoYW5nZSA9IHBjX29uaWNlY2hhbmdlOwor
fQorCitzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86
dHJ1ZX0sIGdvdFN0cmVhbSwgZXJyb3IpOyIpOworCit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>