<?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>80692</bug_id>
          
          <creation_ts>2012-03-09 02:52:45 -0800</creation_ts>
          <short_desc>MediaStream API (JSEP): Rename PeerConnection to DeprecatedPeerConnection</short_desc>
          <delta_ts>2012-03-13 11:52:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</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>80589</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>adam.bergkvist</cc>
    
    <cc>dglazkov</cc>
    
    <cc>harald</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>574767</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-09 02:52:45 -0800</bug_when>
    <thetext>First patch in a series of patches to change the PeerConnection from ROAP to JSEP, see bug 80589 for more information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574772</commentid>
    <comment_count>1</comment_count>
      <attachid>131019</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-09 02:57:52 -0800</bug_when>
    <thetext>Created attachment 131019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574773</commentid>
    <comment_count>2</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-09 03:00:23 -0800</bug_when>
    <thetext>Contains zero code changes apart from renames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574798</commentid>
    <comment_count>3</comment_count>
      <attachid>131019</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-09 04:00:59 -0800</bug_when>
    <thetext>Comment on attachment 131019
Patch

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

New failing tests:
fast/dom/call-a-constructor-as-a-function.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574810</commentid>
    <comment_count>4</comment_count>
      <attachid>131026</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-09 04:34:36 -0800</bug_when>
    <thetext>Created attachment 131026
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574952</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-09 09:31:29 -0800</bug_when>
    <thetext>(Continuing the discussion from Bug 80589:

&gt; &gt; The risk of using a name like JSEPPeerConnection is that we&apos;ll be stuck with that as the final name for the API.  If we us PeerConnection for JSEP and change the existing API to DeprecatedPeerConnection, there&apos;s no risk of getting stuck with the wrong name for the final API.
&gt; 
&gt; Isn&apos;t the final name pending until the prefixes are removed anyhow? But I agree that JSEPPeerConnection is bad. ExperimentalPeerConnection would be better IMO.

Right, we&apos;re talking about webkitPeerConnection, which means &quot;experimental PeerConnection&quot; already.  Writing &quot;experimental&quot; into the name twice is redundant.

&gt; &gt; Also, using this naming arrangement encourages folks to move over to the new API, making it easier for us to remove DeprecatedPeerConnection when that&apos;s appropriate.
&gt; 
&gt; The discussion is still ongoing in W3C on which changes JSEP will have on the API. It shouldn&apos;t prevent anyone from prototyping though.

I think this is where the biggest disconnect in this discussion lives.  Tommy tells me that the JSEP design has already been accepted by the standards community and you&apos;re telling me that it hasn&apos;t.  I haven&apos;t been following the standard discussion closely.  Can one or both of you clarify the status of the new API design w.r.t. the various working groups?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576017</commentid>
    <comment_count>6</comment_count>
    <who name="Harald Tveit Alvestrand">harald</who>
    <bug_when>2012-03-12 02:16:29 -0700</bug_when>
    <thetext>I could repeat my status message from #80589, but that seems superfluous - we all agree that JSEP is the thing that will happen, what we don&apos;t know (or agree on?) is how stable the current specification is.

The latest spec is draft-uberti-jsep-02, dated Feb 16. The biggest subsequent discussion has been about the &quot;single offer / multiple answer&quot; scenario; this has much to do with the semantics of the calls, but not so much with their API - that is, I would expect effects of any changes here to be at the Chrome level, not the Webkit level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576018</commentid>
    <comment_count>7</comment_count>
    <who name="Harald Tveit Alvestrand">harald</who>
    <bug_when>2012-03-12 02:18:52 -0700</bug_when>
    <thetext>Correction: Latest is draft-ietf-rtcweb-jsep-00 - March 3.
There are no API-impacting changes between these two drafts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576047</commentid>
    <comment_count>8</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-03-12 03:16:39 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; The discussion is still ongoing in W3C on which changes JSEP will have on the API. It shouldn&apos;t prevent anyone from prototyping though.
&gt; 
&gt; I think this is where the biggest disconnect in this discussion lives.  Tommy tells me that the JSEP design has already been accepted by the standards community and you&apos;re telling me that it hasn&apos;t.  I haven&apos;t been following the standard discussion closely.  Can one or both of you clarify the status of the new API design w.r.t. the various working groups?

I have followed the email lists and participated in the WebRtc hangouts and the discussion I have seen is not regarding the actual API, but related to how the SDP messages should work. Also Justins proposal have been upgraded to be an &quot;official&quot; proposal as Harald wrote. I have based my comments on this, and the confirmation from Justing and Harald.

If I have missed an active API discussion I am truly sorry and would appreciate a pointer to where that is happening so that I can monitor the state of JSEP better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576055</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-03-12 03:48:27 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; The discussion is still ongoing in W3C on which changes JSEP will have on the API. It shouldn&apos;t prevent anyone from prototyping though.
&gt; 
&gt; I think this is where the biggest disconnect in this discussion lives.  Tommy tells me that the JSEP design has already been accepted by the standards community and you&apos;re telling me that it hasn&apos;t.  I haven&apos;t been following the standard discussion closely.  Can one or both of you clarify the status of the new API design w.r.t. the various working groups?

You&apos;re probably right.

JSEP (JavaScript Session Establishment Protocol) has been adopted as a Working Group document by the RTCWeb working group in IETF. The vote at the IETF interim meeting in January made it pretty clear that people prefer JSEP over ROAP (RTCWeb Offer Answer Protocol) which was the previous signaling protocol.

The JSEP document comes with an API proposal, but the final say about the API lies within the WebRTC working group in W3C. There are currently two API proposals: the JSEP API, as proposed in the JSEP draft, and a proposal that adopts the existing API to use JSEP (as signaling protocol). Both proposals are currently being edited into the spec in separate experimental branches on github.

I would like to repeat that I think experimental prototyping is essential. I think we simply have different opinions on what&apos;s deprecated at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576072</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-03-12 05:20:07 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; If I have missed an active API discussion I am truly sorry and would appreciate a pointer to where that is happening so that I can monitor the state of JSEP better.

The API discussions have mainly been on public-webrtc@w3.org. Regarding the experimental JSEP branches in github, it&apos;s all publicly available, but I don&apos;t think it&apos;s been communicated outside the editor/chairs team.

Discussions about the JSEP API:
http://lists.w3.org/Archives/Public/public-webrtc/2012Feb/0044.html
http://lists.w3.org/Archives/Public/public-webrtc/2012Jan/0093.html

Experimental JSEP branches in github (work in progress):
https://github.com/fluffy/webrtc-w3c/tree/jsep1
https://github.com/fluffy/webrtc-w3c/tree/jsep_easy1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576314</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 11:27:43 -0700</bug_when>
    <thetext>I talked some more with Harald.  My understanding is that everyone agrees on the following points:

1) The existing API design is going to change substantially, likely in the direction of JSEP.
2) The current draft of JSEP is also unlikely to be the final version of the API.
3) There&apos;s some political sensitivity to us &quot;picking a winner&quot; while the working group continues to discuss the topic.

From that standpoint, the following plan seems to make sense:

1) Rename the existing webkitPeerConnection to webkitDeprecatedPeerConnection.  Folks will be able to keep their demos working with a simple renaming, but doing so will let them know that big changes to the API are coming and they&apos;ll need to update to the new design at some point.

2) Introduce the current JSEP as webkitPeerConnection00.  More forward with implementation will let us get implementation experience with the new design, which will improve the quality of the final API.  The 00 suffix serves to reassure folks that we&apos;re not trying to &quot;pick a winner&quot; in this discussion, merely that we&apos;re trying to gain implementation experience.

3) As soon as the W3C spec is updated to the JSEP design, we&apos;ll rename webkitPeerConnection00 to webkitPeerConnection and continue to track the spec as it evolves.  Having an off-by-default, prefixed implementation track a spec as it evolves is the standard operating procedure and should be something that folks understand.

4) After (3) and after the JSEP implementation is sufficiently functional to support existing demos that are using webkitDeprecatedPeerConnection, we&apos;ll delete webkitDeprecatedPeerConnection.  It&apos;s important to delete webkitDeprecatedPeerConnection relatively soon because we don&apos;t want to be stuck implementing it forever.  Also, deleting webkitDeprecatedPeerConnection will cause folks to switch to webkitPeerConnection and give us more feedback on the new design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577349</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2012-03-13 08:37:26 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I talked some more with Harald.  My understanding is that everyone agrees on the following points:
&gt; 
&gt; 1) The existing API design is going to change substantially, likely in the direction of JSEP.

The alternative API that is being drafted on github basically runs JSEP under the existing API so this depends on what we decide to do.

&gt; 2) The current draft of JSEP is also unlikely to be the final version of the API.
&gt; 3) There&apos;s some political sensitivity to us &quot;picking a winner&quot; while the working group continues to discuss the topic.

I agree to the two points above.

&gt; From that standpoint, the following plan seems to make sense:

Couldn&apos;t we just introduce the new PeerConnection as PeerConnection00 and as soon as the W3C working draft is updated, what ever the result is, it will become PeerConnection?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577373</commentid>
    <comment_count>13</comment_count>
    <who name="Harald Tveit Alvestrand">harald</who>
    <bug_when>2012-03-13 08:54:51 -0700</bug_when>
    <thetext>&gt;
&gt; --- Comment #12 from Adam Bergkvist&lt;adam.bergkvist@ericsson.com&gt;   2012-03-13 08:37:26 PST ---
&gt; (In reply to comment #11)
&gt;&gt; I talked some more with Harald.  My understanding is that everyone agrees on the following points:
&gt;&gt;
&gt;&gt; 1) The existing API design is going to change substantially, likely in the direction of JSEP.
&gt; The alternative API that is being drafted on github basically runs JSEP under the existing API so this depends on what we decide to do.

To be precise: The alternative API that you&apos;re drafting on github.

And even that API will not be interoperable with implementations of the old API; my suspicion is that applications written to the old API won&apos;t work with the new one either, without significant kludging at the API level.

So that proposal is likely to require code changes too.
&gt;&gt; 2) The current draft of JSEP is also unlikely to be the final version of the API.
&gt;&gt; 3) There&apos;s some political sensitivity to us &quot;picking a winner&quot; while the working group continues to discuss the topic.
&gt; I agree to the two points above.
&gt;
&gt;&gt;  From that standpoint, the following plan seems to make sense:
&gt; Couldn&apos;t we just introduce the new PeerConnection as PeerConnection00 and as soon as the W3C working draft is updated, what ever the result is, it will become PeerConnection?

I would prefer to get the old PeerConnection, and all code that depends on it continuing to work exactly the way it does now, clearly marked with &quot;yes, I know that I&apos;m using something that will go away&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577526</commentid>
    <comment_count>14</comment_count>
      <attachid>131026</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-13 10:43:10 -0700</bug_when>
    <thetext>Comment on attachment 131026
Patch

It seems like there&apos;s still some debate in the working group about what the future of the API is going to look like.  The working group is a much better place to have that debate than this bug tracker.  I think renaming this object is a reasonable step to letting folks know that the API in a state of flux.  The steps I&apos;ve outlined above should keep WebKit relatively neutral in this debate as none of the candidates will be named &quot;webkitPeerConnection&quot;.

IMHO, this naming discussion is a distraction from the work of creating the best API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577617</commentid>
    <comment_count>15</comment_count>
      <attachid>131026</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-13 11:52:27 -0700</bug_when>
    <thetext>Comment on attachment 131026
Patch

Clearing flags on attachment: 131026

Committed r110587: &lt;http://trac.webkit.org/changeset/110587&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>577618</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-13 11:52:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131019</attachid>
            <date>2012-03-09 02:57:52 -0800</date>
            <delta_ts>2012-03-09 04:34:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80692-20120309115750.patch</filename>
            <type>text/plain</type>
            <size>144076</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZmZDRlMmI3M2FmMGNl
MWYxYjQ3MWJlMzNhZmU0OTI1MzE3MzI4Zi4uODlmYjM4MjY3YTg0OTZmNDdhYzA3OThhZDNkMzNi
OTE3ODU2MWEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTAzLTA5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogUmVuYW1lIFBlZXJDb25uZWN0aW9uIHRvIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA2OTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXJzdCBwYXRj
aCBpbiBhIHNlcmllcyBvZiBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgUGVlckNvbm5lY3Rpb24gZnJv
bSBST0FQIHRvIEpTRVAsCisgICAgICAgIHNlZSBidWcgODA1ODkgZm9yIG1vcmUgaW5mb3JtYXRp
b24uCisKKyAgICAgICAgUGF0Y2ggY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9E
T01XaW5kb3dNZWRpYVN0cmVhbS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9E
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6RGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlv
bjo6fkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNh
dGVkUGVlckNvbm5lY3Rpb246OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6cmVhZHlTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnNlbmQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpyZW1vdmVTdHJlYW0pOgorICAgICAgICAoV2Vi
Q29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpsb2NhbFN0cmVhbXMpOgorICAgICAgICAo
V2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJlYW1zKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6Y2xvc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpkaWRDb21wbGV0ZUlDRVByb2Nlc3Np
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpkaWRHZW5l
cmF0ZVNEUCk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmRp
ZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVk
UGVlckNvbm5lY3Rpb246OmRpZEFkZFJlbW90ZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpE
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmRpZFJlbW92ZVJlbW90ZVN0cmVhbSk6CisgICAgICAg
IChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmludGVyZmFjZU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6c3Rv
cCk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmV2ZW50VGFy
Z2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmVu
c3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNv
bm5lY3Rpb246OnNjaGVkdWxlSW5pdGlhbE5lZ290aWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6aW5pdGlhbE5lZ290aWF0aW9uVGltZXJGaXJlZCk6
CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmVuc3VyZVN0cmVh
bUNoYW5nZVNjaGVkdWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5l
Y3Rpb246OnN0cmVhbUNoYW5nZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uOjpzY2hlZHVsZVJlYWR5U3RhdGVDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpyZWFkeVN0YXRlQ2hhbmdlVGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmNoYW5n
ZVJlYWR5U3RhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVl
ckNvbm5lY3Rpb246OmRpZENoYW5nZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5pZGw6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmlkbC4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNpZ25hbGluZ0NhbGxiYWNrKToKKyAgICAgICAgKiBN
b2R1bGVzL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmlkbDoKKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRE
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25D
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24pOgorICAgICAg
ICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9E
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRsZXIuaC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcik6
CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
SGFuZGxlckNsaWVudC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmguCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDo6fkRl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNw
cDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9QZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcjo6RGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVk
UGVlckNvbm5lY3Rpb25IYW5kbGVyOjp+RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpwcm9k
dWNlSW5pdGlhbE9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbkhhbmRsZXI6OmhhbmRsZUluaXRpYWxPZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpwcm9jZXNzU0RQKToKKyAgICAgICAgKFdlYkNv
cmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnByb2Nlc3NQZW5kaW5nU3RyZWFt
cyk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpz
ZW5kRGF0YVN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uSGFuZGxlcjo6c3RvcCk6CisKIDIwMTItMDMtMDkgIE1hcmphIEjDtmx0dMOkICA8
bWFyamFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBGaWxlSW5wdXRUeXBlIGRvZXNuJ3Qgc3VwcG9y
dCAoc2F2ZXxyZXN0b3JlKUZvcm1Db250cm9sU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggZWU2YTgyZTY4NmI2YmRiYjBmOWIzMTk2ZDJmMjkwNzhhZTU2ZjMxMy4uZTI3NWM0YTMw
MjRhMWRiMzAzNzk2YjM0ZWEzOWQwNmRjMWZmODc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMi0wMy0wOSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21t
eXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IFJlbmFtZSBQZWVyQ29u
bmVjdGlvbiB0byBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlyc3QgcGF0Y2ggaW4gYSBzZXJpZXMgb2YgcGF0
Y2hlcyB0byBjaGFuZ2UgdGhlIFBlZXJDb25uZWN0aW9uIGZyb20gUk9BUCB0byBKU0VQLAorICAg
ICAgICBzZWUgYnVnIDgwNTg5IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBicmlkZ2UvRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxl
ci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9QZWVyQ29u
bmVjdGlvbkhhbmRsZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcjo6RGVwcmVjYXRlZFBlZXJDb25u
ZWN0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rp
b25IYW5kbGVyOjp+RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpwcm9kdWNlSW5pdGlhbE9m
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6
OmhhbmRsZUluaXRpYWxPZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNv
bm5lY3Rpb25IYW5kbGVyOjpwcm9jZXNzU0RQKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnByb2Nlc3NQZW5kaW5nU3RyZWFtcyk6CisgICAgICAg
IChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzZW5kRGF0YVN0cmVh
bU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFu
ZGxlcjo6c3RvcCk6CisgICAgICAgICogYnJpZGdlL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhh
bmRsZXJJbnRlcm5hbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2Jy
aWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5jcHAuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRl
cm5hbDo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6fkRlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpE
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OnByb2R1Y2VJbml0aWFsT2Zm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcklu
dGVybmFsOjpoYW5kbGVJbml0aWFsT2ZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOjpwcm9jZXNzU0RQKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6cHJvY2Vzc1Bl
bmRpbmdTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlv
bkhhbmRsZXJJbnRlcm5hbDo6c2VuZERhdGFTdHJlYW1NZXNzYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6c3RvcCk6CisgICAg
ICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OmRp
ZENvbXBsZXRlSUNFUHJvY2Vzc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVl
ckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OmRpZEdlbmVyYXRlU0RQKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6ZGlkUmVjZWl2
ZURhdGFTdHJlYW1NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6ZGlkQWRkUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6ZGlkUmVtb3Zl
UmVtb3RlU3RyZWFtKToKKyAgICAgICAgKiBicmlkZ2UvRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
SGFuZGxlckludGVybmFsLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2Jy
aWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5oLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFu
ZGxlckludGVybmFsKToKKwogMjAxMi0wMy0wOCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEVuc3VyZSB0aGF0IHRoZSBjYyB0aHJlYWQg
YW5pbWF0aW9uIGZyYW1ld29yayBjb250aW51ZXMgdG8gdGljayB3aGVuIHRoZSB0YWIgaXMgYmFj
a2dyb3VuZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzNDc4MmJmODM3OWQ5
ZjcxNTlkN2U4YTc1ZjdmOWNhNTg5YTc5NGQxLi5jZmNmZGRhMDI2NmMwZGU2OGRjNGIxODE2MGVj
OGIzODA1ZDU0NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTEwOSw2ICsx
MDksOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNEYXRhVmlldy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGVkaWNhdGVkV29y
a2VyQ29udGV4dC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZWRpY2F0ZWRXb3Jr
ZXJDb250ZXh0LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXByZWNhdGVkUGVlckNv
bm5lY3Rpb24uY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXZpY2VNb3Rpb25FdmVu
dC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXZpY2VNb3Rpb25FdmVudC5oIFwK
IAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25FdmVudC5jcHAgXApA
QCAtNDMyLDggKzQzNCw2IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
UGFnZVRyYW5zaXRpb25FdmVudC5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVlckNv
bm5lY3Rpb24uY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVlckNvbm5lY3Rpb24u
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlLmNwcCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIFwKQEAgLTY1OCw2ICs2NTgsNyBAQCBkb21f
YmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRpb24vUG9zaXRp
b25DYWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlvbi9Qb3NpdGlv
bkVycm9yLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bvc2l0aW9uRXJy
b3JDYWxsYmFjay5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9EZXByZWNh
dGVkUGVlckNvbm5lY3Rpb24uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0v
RE9NV2luZG93TWVkaWFTdHJlYW0uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJl
YW0vTG9jYWxNZWRpYVN0cmVhbS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5pZGwgXApAQCAtNjY5LDcgKzY3MCw2IEBAIGRvbV9iaW5kaW5nX2lkbHMg
Kz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvci5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2Vy
TWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwgXAotCSQoV2ViQ29yZSkvTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxl
cy9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvY3NzL0NT
U0NoYXJzZXRSdWxlLmlkbCBcCiAJJChXZWJDb3JlKS9jc3MvQ1NTRm9udEZhY2VSdWxlLmlkbCBc
CkBAIC0xMDMxLDYgKzEwMzEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL1BhZ2VHcm91cEluZGV4ZWREYXRhYmFzZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJDb250ZXh0SW5kZXhlZERhdGFiYXNl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyQ29udGV4dElu
ZGV4ZWREYXRhYmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0Rl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBcCkBAIC0xMDUwLDggKzEwNTIs
NiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0Nh
bGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2lnbmFsaW5n
Q2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVk
aWFDb250cm9sbGVyLmggXApAQCAtMTI1OSw2ICsxMjU5LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uQ3VzdG9t
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25FdmVudEN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRp
b25FdmVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlyZWN0
b3J5RW50cnlDdXN0b20uY3BwIFwKQEAgLTEzMzYsNyArMTMzNyw2IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JDdXN0b20uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0aW9ucy5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRDdXN0b20uY3Bw
IFwKQEAgLTMzMjQsMTQgKzMzMjQsMTQgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVj
b2Rlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9Q
TkdJbWFnZURlY29kZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVy
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1D
ZW50ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Db21wb25lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1EZXNjcmlwdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtU291cmNlLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBcCi0JU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1BlZXJDb25uZWN0aW9uSGFuZGxl
ci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9E
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01XaW5kb3dNZWRp
YVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRv
d01lZGlhU3RyZWFtLmlkbAppbmRleCA4NTAxMWFlOTZiNmQ1MjU1N2I3M2ZkNDI0YzI3ZmRjODRk
NmRmOTllLi42MTIwZGEwYjMyMmU2YWU1OTFjZDU3ZmIxZDk4MTQ2N2FiZjgwYmU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRvd01lZGlhU3Ry
ZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRv
d01lZGlhU3RyZWFtLmlkbApAQCAtMzAsNyArMzAsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAg
ICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAogICAgICAgICBTdXBwbGVtZW50YWw9RE9NV2lu
ZG93CiAgICAgXSBET01XaW5kb3dNZWRpYVN0cmVhbSB7Ci0gICAgICAgIGF0dHJpYnV0ZSBbVjhF
bmFibGVkQXRSdW50aW1lXSBQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yIHdlYmtpdFBlZXJDb25u
ZWN0aW9uOworICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0gRGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uQ29uc3RydWN0b3Igd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
OwogICAgICAgICBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1FdmVudENvbnN0cnVjdG9yIE1lZGlhU3Ry
ZWFtRXZlbnQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjlkMDQ2OTA0NTc0NWMxOWM5NWY0M2NkZmE2ZDY3MDk2N2M1YTExMWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwzNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiTWVkaWFTdHJlYW1FdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8RGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uPiBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBh
c3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IHNpZ25hbGluZ0NhbGxiYWNrKQoreworICAgIFJl
ZlB0cjxEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9wdFJlZihuZXcg
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKGNvbnRleHQsIHNlcnZlckNvbmZpZ3VyYXRpb24sIHNp
Z25hbGluZ0NhbGxiYWNrKSk7CisgICAgY29ubmVjdGlvbi0+c2V0UGVuZGluZ0FjdGl2aXR5KGNv
bm5lY3Rpb24uZ2V0KCkpOworICAgIGNvbm5lY3Rpb24tPnNjaGVkdWxlSW5pdGlhbE5lZ290aWF0
aW9uKCk7CisgICAgY29ubmVjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CisKKyAgICByZXR1cm4g
Y29ubmVjdGlvbi5yZWxlYXNlKCk7Cit9CisKK0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6RGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxs
YmFjaz4gc2lnbmFsaW5nQ2FsbGJhY2spCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwg
dGhpcykKKyAgICAsIG1fc2lnbmFsaW5nQ2FsbGJhY2soc2lnbmFsaW5nQ2FsbGJhY2spCisgICAg
LCBtX3JlYWR5U3RhdGUoTkVXKQorICAgICwgbV9pY2VTdGFydGVkKGZhbHNlKQorICAgICwgbV9s
b2NhbFN0cmVhbXMoTWVkaWFTdHJlYW1MaXN0OjpjcmVhdGUoKSkKKyAgICAsIG1fcmVtb3RlU3Ry
ZWFtcyhNZWRpYVN0cmVhbUxpc3Q6OmNyZWF0ZSgpKQorICAgICwgbV9pbml0aWFsTmVnb3RpYXRp
b25UaW1lcih0aGlzLCAmRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjppbml0aWFsTmVnb3RpYXRp
b25UaW1lckZpcmVkKQorICAgICwgbV9zdHJlYW1DaGFuZ2VUaW1lcih0aGlzLCAmRGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uOjpzdHJlYW1DaGFuZ2VUaW1lckZpcmVkKQorICAgICwgbV9yZWFkeVN0
YXRlQ2hhbmdlVGltZXIodGhpcywgJkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6cmVhZHlTdGF0
ZUNoYW5nZVRpbWVyRmlyZWQpCisgICAgLCBtX3BlZXJIYW5kbGVyKERlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbkhhbmRsZXI6OmNyZWF0ZSh0aGlzLCBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb250ZXh0
LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSkKK3sKK30KKworRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uOjp+RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCkKK3sKK30KKwordm9pZCBEZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb246OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9
PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGlmICghbWVzc2FnZS5zdGFydHNXaXRoKCJTRFBcbiIpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgc2RwID0gbWVzc2FnZS5zdWJzdHJpbmcoNCk7CisK
KyAgICBpZiAobV9pY2VTdGFydGVkKSB7CisgICAgICAgIGlmIChtX3BlZXJIYW5kbGVyKQorICAg
ICAgICAgICAgbV9wZWVySGFuZGxlci0+cHJvY2Vzc1NEUChzZHApOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKG1fcGVlckhhbmRsZXIpCisgICAgICAgIG1fcGVlckhhbmRsZXIt
PmhhbmRsZUluaXRpYWxPZmZlcihzZHApOworCisgICAgZW5zdXJlU3RyZWFtQ2hhbmdlU2NoZWR1
bGVkKCk7CisgICAgbV9pY2VTdGFydGVkID0gdHJ1ZTsKKyAgICBzY2hlZHVsZVJlYWR5U3RhdGVD
aGFuZ2UoTkVHT1RJQVRJTkcpOworfQorCitEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OlJlYWR5
U3RhdGUgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9yZWFkeVN0YXRlOworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlv
bjo6c2VuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDU3RyaW5nIGRhdGEgPSB0ZXh0LnV0
ZjgoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBkYXRhLmxlbmd0aCgpOworCisgICAgaWYgKGxl
bmd0aCA+IDUwNCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3BlZXJIYW5kbGVyKQorICAgICAgICBtX3BlZXJI
YW5kbGVyLT5zZW5kRGF0YVN0cmVhbU1lc3NhZ2UoZGF0YS5kYXRhKCksIGxlbmd0aCk7Cit9CisK
K3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbT4gcHJwU3RyZWFtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBSZWZQdHI8TWVk
aWFTdHJlYW0+IHN0cmVhbSA9IHBycFN0cmVhbTsKKyAgICBpZiAoIXN0cmVhbSkgeworICAgICAg
ICBlYyA9ICBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9sb2NhbFN0cmVhbXMt
PmNvbnRhaW5zKHN0cmVhbS5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbG9jYWxT
dHJlYW1zLT5hcHBlbmQoc3RyZWFtKTsKKworICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3Ry
ZWFtRGVzY3JpcHRvciA9IHN0cmVhbS0+ZGVzY3JpcHRvcigpOworICAgIHNpemVfdCBpID0gbV9w
ZW5kaW5nUmVtb3ZlU3RyZWFtcy5maW5kKHN0cmVhbURlc2NyaXB0b3IpOworICAgIGlmIChpICE9
IG5vdEZvdW5kKSB7CisgICAgICAgIG1fcGVuZGluZ1JlbW92ZVN0cmVhbXMucmVtb3ZlKGkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wZW5kaW5nQWRkU3RyZWFtcy5hcHBlbmQo
c3RyZWFtRGVzY3JpcHRvcik7CisgICAgaWYgKG1faWNlU3RhcnRlZCkKKyAgICAgICAgZW5zdXJl
U3RyZWFtQ2hhbmdlU2NoZWR1bGVkKCk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25uZWN0
aW9uOjpyZW1vdmVTdHJlYW0oTWVkaWFTdHJlYW0qIHN0cmVhbSwgRXhjZXB0aW9uQ29kZSYgZWMp
Cit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghc3RyZWFt
KSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAoIW1fbG9jYWxTdHJlYW1zLT5jb250YWlucyhzdHJlYW0pKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2xvY2FsU3RyZWFtcy0+cmVtb3ZlKHN0cmVhbSk7CisKKyAgICBN
ZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbURlc2NyaXB0b3IgPSBzdHJlYW0tPmRlc2NyaXB0
b3IoKTsKKyAgICBzaXplX3QgaSA9IG1fcGVuZGluZ0FkZFN0cmVhbXMuZmluZChzdHJlYW1EZXNj
cmlwdG9yKTsKKyAgICBpZiAoaSAhPSBub3RGb3VuZCkgeworICAgICAgICBtX3BlbmRpbmdBZGRT
dHJlYW1zLnJlbW92ZShpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcGVuZGlu
Z1JlbW92ZVN0cmVhbXMuYXBwZW5kKHN0cmVhbURlc2NyaXB0b3IpOworICAgIGlmIChtX2ljZVN0
YXJ0ZWQpCisgICAgICAgIGVuc3VyZVN0cmVhbUNoYW5nZVNjaGVkdWxlZCgpOworfQorCitNZWRp
YVN0cmVhbUxpc3QqIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6bG9jYWxTdHJlYW1zKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9sb2NhbFN0cmVhbXMuZ2V0KCk7Cit9CisKK01lZGlhU3RyZWFt
TGlzdCogRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJlYW1zKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9yZW1vdGVTdHJlYW1zLmdldCgpOworfQorCit2b2lkIERlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbjo6Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVh
ZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0b3AoKTsKK30KKwordm9pZCBEZXByZWNhdGVk
UGVlckNvbm5lY3Rpb246OmRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpCit7CisgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworICAgIGNoYW5n
ZVJlYWR5U3RhdGUoQUNUSVZFKTsKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246
OmRpZEdlbmVyYXRlU0RQKGNvbnN0IFN0cmluZyYgc2RwKQoreworICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBtX3NpZ25hbGluZ0Nh
bGxiYWNrLT5oYW5kbGVFdmVudCgiU0RQXG4iICsgc2RwLCB0aGlzKTsKK30KKwordm9pZCBEZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb246OmRpZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2FnZShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2Ug
PSBTdHJpbmc6OmZyb21VVEY4KGRhdGEsIGxlbmd0aCk7CisgICAgZGlzcGF0Y2hFdmVudChNZXNz
YWdlRXZlbnQ6OmNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KCksIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG1lc3NhZ2UpKSk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uOjpkaWRBZGRSZW1vdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURl
c2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworCisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9
PSBDTE9TRUQpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gc3Ry
ZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0cmVh
bURlc2NyaXB0b3IpOworICAgIG1fcmVtb3RlU3RyZWFtcy0+YXBwZW5kKHN0cmVhbSk7CisKKyAg
ICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRk
c3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgc3RyZWFtLnJlbGVhc2UoKSkpOworfQorCit2b2lk
IERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciogc3RyZWFtRGVzY3JpcHRvcikKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJUKHN0cmVhbURl
c2NyaXB0b3ItPm93bmVyKCkpOworCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0gPSBz
dGF0aWNfY2FzdDxNZWRpYVN0cmVhbSo+KHN0cmVhbURlc2NyaXB0b3ItPm93bmVyKCkpOworICAg
IHN0cmVhbS0+c3RyZWFtRW5kZWQoKTsKKworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VE
KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9yZW1vdGVTdHJlYW1zLT5jb250YWlu
cyhzdHJlYW0uZ2V0KCkpKTsKKyAgICBtX3JlbW90ZVN0cmVhbXMtPnJlbW92ZShzdHJlYW0uZ2V0
KCkpOworCisgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbUV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLnJlbW92ZXN0cmVhbUV2ZW50LCBmYWxzZSwgZmFsc2UsIHN0cmVhbS5yZWxlYXNlKCkp
KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246Omlu
dGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNl
Rm9yRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dAoreworICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnN0b3AoKQoreworICAgIGlm
IChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2luaXRp
YWxOZWdvdGlhdGlvblRpbWVyLnN0b3AoKTsKKyAgICBtX3N0cmVhbUNoYW5nZVRpbWVyLnN0b3Ao
KTsKKyAgICBtX3JlYWR5U3RhdGVDaGFuZ2VUaW1lci5zdG9wKCk7CisKKyAgICBpZiAobV9wZWVy
SGFuZGxlcikKKyAgICAgICAgbV9wZWVySGFuZGxlci0+c3RvcCgpOworCisgICAgdW5zZXRQZW5k
aW5nQWN0aXZpdHkodGhpcyk7CisgICAgbV9wZWVySGFuZGxlci5jbGVhcigpOworCisgICAgY2hh
bmdlUmVhZHlTdGF0ZShDTE9TRUQpOworfQorCitFdmVudFRhcmdldERhdGEqIERlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRU
YXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlv
bjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXRE
YXRhOworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6c2NoZWR1bGVJbml0aWFs
TmVnb3RpYXRpb24oKQoreworICAgIEFTU0VSVCghbV9pbml0aWFsTmVnb3RpYXRpb25UaW1lci5p
c0FjdGl2ZSgpKTsKKworICAgIG1faW5pdGlhbE5lZ290aWF0aW9uVGltZXIuc3RhcnRPbmVTaG90
KDApOworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6aW5pdGlhbE5lZ290aWF0
aW9uVGltZXJGaXJlZChUaW1lcjxEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24+KiB0aW1lcikKK3sK
KyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9pbml0aWFsTmVnb3RpYXRpb25U
aW1lcik7CisKKyAgICBpZiAobV9pY2VTdGFydGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBN
ZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3IgcGVuZGluZ0FkZFN0cmVhbXM7CisgICAgbV9wZW5k
aW5nQWRkU3RyZWFtcy5zd2FwKHBlbmRpbmdBZGRTdHJlYW1zKTsKKyAgICBpZiAobV9wZWVySGFu
ZGxlcikKKyAgICAgICAgbV9wZWVySGFuZGxlci0+cHJvZHVjZUluaXRpYWxPZmZlcihwZW5kaW5n
QWRkU3RyZWFtcyk7CisKKyAgICBtX2ljZVN0YXJ0ZWQgPSB0cnVlOworCisgICAgY2hhbmdlUmVh
ZHlTdGF0ZShORUdPVElBVElORyk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
OjplbnN1cmVTdHJlYW1DaGFuZ2VTY2hlZHVsZWQoKQoreworICAgIGlmICghbV9zdHJlYW1DaGFu
Z2VUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3N0cmVhbUNoYW5nZVRpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnN0cmVhbUNoYW5n
ZVRpbWVyRmlyZWQoVGltZXI8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uPiogdGltZXIpCit7Cisg
ICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fc3RyZWFtQ2hhbmdlVGltZXIpOwor
CisgICAgaWYgKCFtX3BlbmRpbmdBZGRTdHJlYW1zLmlzRW1wdHkoKSAmJiAhbV9wZW5kaW5nUmVt
b3ZlU3RyZWFtcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIE1lZGlhU3RyZWFt
RGVzY3JpcHRvclZlY3RvciBwZW5kaW5nQWRkU3RyZWFtczsKKyAgICBNZWRpYVN0cmVhbURlc2Ny
aXB0b3JWZWN0b3IgcGVuZGluZ1JlbW92ZVN0cmVhbXM7CisKKyAgICBtX3BlbmRpbmdBZGRTdHJl
YW1zLnN3YXAocGVuZGluZ0FkZFN0cmVhbXMpOworICAgIG1fcGVuZGluZ1JlbW92ZVN0cmVhbXMu
c3dhcChwZW5kaW5nUmVtb3ZlU3RyZWFtcyk7CisKKyAgICBpZiAobV9wZWVySGFuZGxlcikKKyAg
ICAgICAgbV9wZWVySGFuZGxlci0+cHJvY2Vzc1BlbmRpbmdTdHJlYW1zKHBlbmRpbmdBZGRTdHJl
YW1zLCBwZW5kaW5nUmVtb3ZlU3RyZWFtcyk7CisKKyAgICBpZiAoIXBlbmRpbmdBZGRTdHJlYW1z
LmlzRW1wdHkoKSkKKyAgICAgICAgY2hhbmdlUmVhZHlTdGF0ZShORUdPVElBVElORyk7Cit9CisK
K3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpzY2hlZHVsZVJlYWR5U3RhdGVDaGFuZ2Uo
UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQoreworICAgIG1fcGVuZGluZ1JlYWR5U3RhdGVzLmFwcGVu
ZChyZWFkeVN0YXRlKTsKKyAgICBpZiAoIW1fcmVhZHlTdGF0ZUNoYW5nZVRpbWVyLmlzQWN0aXZl
KCkpCisgICAgICAgIG1fcmVhZHlTdGF0ZUNoYW5nZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKK30K
Kwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnJlYWR5U3RhdGVDaGFuZ2VUaW1lckZp
cmVkKFRpbWVyPERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbj4qIHRpbWVyKQoreworICAgIEFTU0VS
VF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3JlYWR5U3RhdGVDaGFuZ2VUaW1lcik7CisKKyAg
ICBWZWN0b3I8UmVhZHlTdGF0ZT4gcGVuZGluZ1JlYWR5U3RhdGVzOworICAgIG1fcGVuZGluZ1Jl
YWR5U3RhdGVzLnN3YXAocGVuZGluZ1JlYWR5U3RhdGVzKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcGVuZGluZ1JlYWR5U3RhdGVzLnNpemUoKTsgaSsrKQorICAgICAgICBjaGFuZ2VS
ZWFkeVN0YXRlKHBlbmRpbmdSZWFkeVN0YXRlc1tpXSk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uOjpjaGFuZ2VSZWFkeVN0YXRlKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKK3sK
KyAgICBpZiAocmVhZHlTdGF0ZSA9PSBtX3JlYWR5U3RhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5U3RhdGU7CisKKyAgICBzd2l0Y2ggKG1fcmVhZHlTdGF0
ZSkgeworICAgIGNhc2UgTkVXOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBORUdPVElBVElORzoKKyAgICAgICAgZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb25uZWN0aW5nRXZlbnQsIGZhbHNlLCBmYWxzZSkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFDVElWRToKKyAgICAgICAgZGlzcGF0Y2hFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENMT1NFRDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdGF0ZWNoYW5n
ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ0NTI4NDhiN2IyNzk0ZmFlMjBkZjU5ZTA2ODJkNzk0Y2ExM2M0YzUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbl9oCisjZGVmaW5lIERlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQWN0aXZl
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5o
IgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCIKKyNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtTGlzdC5oIgorI2luY2x1
ZGUgIlNpZ25hbGluZ0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCisvLyBOb3RlOgorLy8gU0RQIHN0YW5kcyBmb3IgU2Vzc2lvbiBEZXNjcmlwdGlv
biBQcm90b2NvbCwgd2hpY2ggaXMgaW50ZW5kZWQgZm9yIGRlc2NyaWJpbmcKKy8vIG11bHRpbWVk
aWEgc2Vzc2lvbnMgZm9yIHRoZSBwdXJwb3NlcyBvZiBzZXNzaW9uIGFubm91bmNlbWVudCwgc2Vz
c2lvbgorLy8gaW52aXRhdGlvbiwgYW5kIG90aGVyIGZvcm1zIG9mIG11bHRpbWVkaWEgc2Vzc2lv
biBpbml0aWF0aW9uLgorLy8KKy8vIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGhlcmU6
CisvLyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0NTY2CisvLyBodHRwOi8vZW4ud2lr
aXBlZGlhLm9yZy93aWtpL1Nlc3Npb25fRGVzY3JpcHRpb25fUHJvdG9jb2wKKworY2xhc3MgRGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uPiwgcHVibGljIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQs
IHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwg
UGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4pOworICAgIH5EZXByZWNhdGVkUGVlckNvbm5l
Y3Rpb24oKTsKKworICAgIHZvaWQgcHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdDsKKworICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICB2b2lkIGFkZFN0cmVhbShjb25zdCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtKE1lZGlhU3RyZWFtKiwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIE1lZGlhU3RyZWFtTGlzdCogbG9jYWxTdHJlYW1zKCkgY29uc3Q7
CisgICAgTWVkaWFTdHJlYW1MaXN0KiByZW1vdGVTdHJlYW1zKCkgY29uc3Q7CisgICAgdm9pZCBj
bG9zZShFeGNlcHRpb25Db2RlJik7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKGNvbm5lY3RpbmcpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIob3Bl
bik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihtZXNzYWdlKTsKKyAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHN0YXRlY2hhbmdlKTsKKyAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHN0cmVhbSk7CisgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUihyZW1vdmVzdHJlYW0pOworCisgICAgLy8gUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygp
OworICAgIHZpcnR1YWwgdm9pZCBkaWRHZW5lcmF0ZVNEUChjb25zdCBTdHJpbmcmIHNkcCk7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2FnZShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFt
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPik7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlU3RhdGUoUmVhZHlTdGF0ZSBzdGF0ZSkgeyBjaGFuZ2VSZWFkeVN0YXRl
KHN0YXRlKTsgfQorCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworCisgICAgLy8gQWN0
aXZlRE9NT2JqZWN0CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKworICAgIHVzaW5nIFJlZkNv
dW50ZWQ8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50
ZWQ8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uPjo6ZGVyZWY7CisKK3ByaXZhdGU6CisgICAgRGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJp
bmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+KTsK
KworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgeyBk
ZXJlZigpOyB9CisKKyAgICB2b2lkIHNjaGVkdWxlSW5pdGlhbE5lZ290aWF0aW9uKCk7CisgICAg
dm9pZCBpbml0aWFsTmVnb3RpYXRpb25UaW1lckZpcmVkKFRpbWVyPERlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbj4qKTsKKyAgICB2b2lkIGVuc3VyZVN0cmVhbUNoYW5nZVNjaGVkdWxlZCgpOworICAg
IHZvaWQgc3RyZWFtQ2hhbmdlVGltZXJGaXJlZChUaW1lcjxEZXByZWNhdGVkUGVlckNvbm5lY3Rp
b24+Kik7CisgICAgdm9pZCBzY2hlZHVsZVJlYWR5U3RhdGVDaGFuZ2UoUmVhZHlTdGF0ZSk7Cisg
ICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlVGltZXJGaXJlZChUaW1lcjxEZXByZWNhdGVkUGVlckNv
bm5lY3Rpb24+Kik7CisKKyAgICB2b2lkIGNoYW5nZVJlYWR5U3RhdGUoUmVhZHlTdGF0ZSk7CisK
KyAgICBSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IG1fc2lnbmFsaW5nQ2FsbGJhY2s7CisKKyAg
ICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKKyAgICBib29sIG1faWNlU3RhcnRlZDsKKworICAg
IFJlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IG1fbG9jYWxTdHJlYW1zOworICAgIFJlZlB0cjxNZWRp
YVN0cmVhbUxpc3Q+IG1fcmVtb3RlU3RyZWFtczsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxl
bWVudGF0aW9uLgorICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKworICAg
IFRpbWVyPERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbj4gbV9pbml0aWFsTmVnb3RpYXRpb25UaW1l
cjsKKyAgICBUaW1lcjxEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ2hhbmdlVGlt
ZXI7CisgICAgVGltZXI8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uPiBtX3JlYWR5U3RhdGVDaGFu
Z2VUaW1lcjsKKworICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciBtX3BlbmRpbmdBZGRT
dHJlYW1zOworICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciBtX3BlbmRpbmdSZW1vdmVT
dHJlYW1zOworICAgIFZlY3RvcjxSZWFkeVN0YXRlPiBtX3BlbmRpbmdSZWFkeVN0YXRlczsKKwor
ICAgIE93blB0cjxEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyPiBtX3BlZXJIYW5kbGVy
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKKworI2VuZGlmIC8vIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDFkOWQ1MWY1MTdlMmZmNzQ5N2I0ZGUx
NmFmMzc3MzFjYmZhOTYwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uLmlkbApAQCAtMCwwICsxLDc2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgcDJwIHsKKworICAgIGludGVyZmFjZSBbCisgICAg
ICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0LAor
ICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MiwKKyAgICAgICAgQ29uc3RydWN0b3IoaW4g
RE9NU3RyaW5nIHNlcnZlckNvbmZpZ3VyYXRpb24sIGluIFtDYWxsYmFja10gU2lnbmFsaW5nQ2Fs
bGJhY2sgc2lnbmFsaW5nQ2FsbGJhY2spLAorICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LAorICAgICAgICBKU0N1c3RvbUNvbnN0cnVjdG9yLAorICAgICAgICBFdmVudFRh
cmdldAorICAgIF0gRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uIHsKKyAgICAgICAgdm9pZCBwcm9j
ZXNzU2lnbmFsaW5nTWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSkKKyAgICAgICAgICAgIHJh
aXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FVyA9
IDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FR09USUFUSU5HID0gMTsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQUNUSVZFID0gMjsKKyAgICAgICAgY29uc3QgdW5zaWdu
ZWQgc2hvcnQgQ0xPU0VEID0gMzsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IHNob3J0IHJlYWR5U3RhdGU7CisKKyAgICAgICAgdm9pZCBzZW5kKGluIERPTVN0cmluZyB0ZXh0
KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtTdHJpY3RUeXBl
Q2hlY2tpbmddIHZvaWQgYWRkU3RyZWFtKGluIE1lZGlhU3RyZWFtIHN0cmVhbSkKKyAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbU3RyaWN0VHlwZUNoZWNraW5nXSB2
b2lkIHJlbW92ZVN0cmVhbShpbiBNZWRpYVN0cmVhbSBzdHJlYW0pCisgICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJl
YW1MaXN0IGxvY2FsU3RyZWFtczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3Ry
ZWFtTGlzdCByZW1vdGVTdHJlYW1zOworCisgICAgICAgIHZvaWQgY2xvc2UoKQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25jb25uZWN0aW5nOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm9wZW47
CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubWVzc2FnZTsKKyAgICAgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25zdGF0ZWNoYW5nZTsKKyAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25hZGRzdHJlYW07CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9ucmVtb3Zlc3RyZWFtOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAg
ICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwor
ICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVz
ZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZlbnQp
CisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworICAgIH07CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkZDNiZjBkYTI1Y2NiNDMxNzQzZWY3
OGY4ODBlZTE3OTdmZWFkZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uLmgiCi0KLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtRXZlbnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKLSNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBQZWVy
Q29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFj
az4gc2lnbmFsaW5nQ2FsbGJhY2spCi17Ci0gICAgUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBjb25u
ZWN0aW9uID0gYWRvcHRSZWYobmV3IFBlZXJDb25uZWN0aW9uKGNvbnRleHQsIHNlcnZlckNvbmZp
Z3VyYXRpb24sIHNpZ25hbGluZ0NhbGxiYWNrKSk7Ci0gICAgY29ubmVjdGlvbi0+c2V0UGVuZGlu
Z0FjdGl2aXR5KGNvbm5lY3Rpb24uZ2V0KCkpOwotICAgIGNvbm5lY3Rpb24tPnNjaGVkdWxlSW5p
dGlhbE5lZ290aWF0aW9uKCk7Ci0gICAgY29ubmVjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7Ci0K
LSAgICByZXR1cm4gY29ubmVjdGlvbi5yZWxlYXNlKCk7Ci19Ci0KLVBlZXJDb25uZWN0aW9uOjpQ
ZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IHNp
Z25hbGluZ0NhbGxiYWNrKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMpCi0g
ICAgLCBtX3NpZ25hbGluZ0NhbGxiYWNrKHNpZ25hbGluZ0NhbGxiYWNrKQotICAgICwgbV9yZWFk
eVN0YXRlKE5FVykKLSAgICAsIG1faWNlU3RhcnRlZChmYWxzZSkKLSAgICAsIG1fbG9jYWxTdHJl
YW1zKE1lZGlhU3RyZWFtTGlzdDo6Y3JlYXRlKCkpCi0gICAgLCBtX3JlbW90ZVN0cmVhbXMoTWVk
aWFTdHJlYW1MaXN0OjpjcmVhdGUoKSkKLSAgICAsIG1faW5pdGlhbE5lZ290aWF0aW9uVGltZXIo
dGhpcywgJlBlZXJDb25uZWN0aW9uOjppbml0aWFsTmVnb3RpYXRpb25UaW1lckZpcmVkKQotICAg
ICwgbV9zdHJlYW1DaGFuZ2VUaW1lcih0aGlzLCAmUGVlckNvbm5lY3Rpb246OnN0cmVhbUNoYW5n
ZVRpbWVyRmlyZWQpCi0gICAgLCBtX3JlYWR5U3RhdGVDaGFuZ2VUaW1lcih0aGlzLCAmUGVlckNv
bm5lY3Rpb246OnJlYWR5U3RhdGVDaGFuZ2VUaW1lckZpcmVkKQotICAgICwgbV9wZWVySGFuZGxl
cihQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZSh0aGlzLCBzZXJ2ZXJDb25maWd1cmF0aW9u
LCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSkKLXsKLX0KLQotUGVlckNv
bm5lY3Rpb246On5QZWVyQ29ubmVjdGlvbigpCi17Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb246
OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKLSAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
ICghbWVzc2FnZS5zdGFydHNXaXRoKCJTRFBcbiIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBT
dHJpbmcgc2RwID0gbWVzc2FnZS5zdWJzdHJpbmcoNCk7Ci0KLSAgICBpZiAobV9pY2VTdGFydGVk
KSB7Ci0gICAgICAgIGlmIChtX3BlZXJIYW5kbGVyKQotICAgICAgICAgICAgbV9wZWVySGFuZGxl
ci0+cHJvY2Vzc1NEUChzZHApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1f
cGVlckhhbmRsZXIpCi0gICAgICAgIG1fcGVlckhhbmRsZXItPmhhbmRsZUluaXRpYWxPZmZlcihz
ZHApOwotCi0gICAgZW5zdXJlU3RyZWFtQ2hhbmdlU2NoZWR1bGVkKCk7Ci0gICAgbV9pY2VTdGFy
dGVkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZVJlYWR5U3RhdGVDaGFuZ2UoTkVHT1RJQVRJTkcpOwot
fQotCi1QZWVyQ29ubmVjdGlvbjo6UmVhZHlTdGF0ZSBQZWVyQ29ubmVjdGlvbjo6cmVhZHlTdGF0
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVhZHlTdGF0ZTsKLX0KLQotdm9pZCBQZWVyQ29u
bmVjdGlvbjo6c2VuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDU3RyaW5nIGRhdGEgPSB0
ZXh0LnV0ZjgoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBkYXRhLmxlbmd0aCgpOwotCi0gICAg
aWYgKGxlbmd0aCA+IDUwNCkgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX3BlZXJIYW5kbGVyKQotICAgICAgICBt
X3BlZXJIYW5kbGVyLT5zZW5kRGF0YVN0cmVhbU1lc3NhZ2UoZGF0YS5kYXRhKCksIGxlbmd0aCk7
Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb246OmFkZFN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtPiBwcnBTdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIFJlZlB0cjxNZWRpYVN0
cmVhbT4gc3RyZWFtID0gcHJwU3RyZWFtOwotICAgIGlmICghc3RyZWFtKSB7Ci0gICAgICAgIGVj
ID0gIFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX2xvY2FsU3RyZWFtcy0+Y29u
dGFpbnMoc3RyZWFtLmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9sb2NhbFN0cmVh
bXMtPmFwcGVuZChzdHJlYW0pOwotCi0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW1E
ZXNjcmlwdG9yID0gc3RyZWFtLT5kZXNjcmlwdG9yKCk7Ci0gICAgc2l6ZV90IGkgPSBtX3BlbmRp
bmdSZW1vdmVTdHJlYW1zLmZpbmQoc3RyZWFtRGVzY3JpcHRvcik7Ci0gICAgaWYgKGkgIT0gbm90
Rm91bmQpIHsKLSAgICAgICAgbV9wZW5kaW5nUmVtb3ZlU3RyZWFtcy5yZW1vdmUoaSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3BlbmRpbmdBZGRTdHJlYW1zLmFwcGVuZChzdHJl
YW1EZXNjcmlwdG9yKTsKLSAgICBpZiAobV9pY2VTdGFydGVkKQotICAgICAgICBlbnN1cmVTdHJl
YW1DaGFuZ2VTY2hlZHVsZWQoKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlU3Ry
ZWFtKE1lZGlhU3RyZWFtKiBzdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlmICht
X3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXN0cmVhbSkgewotICAgICAgICBl
YyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCFtX2xvY2FsU3RyZWFtcy0+Y29udGFpbnMoc3RyZWFtKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgbV9sb2NhbFN0cmVhbXMtPnJlbW92ZShzdHJlYW0pOwotCi0gICAgTWVkaWFTdHJlYW1EZXNj
cmlwdG9yKiBzdHJlYW1EZXNjcmlwdG9yID0gc3RyZWFtLT5kZXNjcmlwdG9yKCk7Ci0gICAgc2l6
ZV90IGkgPSBtX3BlbmRpbmdBZGRTdHJlYW1zLmZpbmQoc3RyZWFtRGVzY3JpcHRvcik7Ci0gICAg
aWYgKGkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgbV9wZW5kaW5nQWRkU3RyZWFtcy5yZW1vdmUo
aSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3BlbmRpbmdSZW1vdmVTdHJlYW1z
LmFwcGVuZChzdHJlYW1EZXNjcmlwdG9yKTsKLSAgICBpZiAobV9pY2VTdGFydGVkKQotICAgICAg
ICBlbnN1cmVTdHJlYW1DaGFuZ2VTY2hlZHVsZWQoKTsKLX0KLQotTWVkaWFTdHJlYW1MaXN0KiBQ
ZWVyQ29ubmVjdGlvbjo6bG9jYWxTdHJlYW1zKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sb2Nh
bFN0cmVhbXMuZ2V0KCk7Ci19Ci0KLU1lZGlhU3RyZWFtTGlzdCogUGVlckNvbm5lY3Rpb246OnJl
bW90ZVN0cmVhbXMoKSBjb25zdAotewotICAgIHJldHVybiBtX3JlbW90ZVN0cmVhbXMuZ2V0KCk7
Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb246OmNsb3NlKEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdG9wKCk7Ci19Ci0KLXZv
aWQgUGVlckNvbm5lY3Rpb246OmRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpCi17Ci0gICAgQVNT
RVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIGNo
YW5nZVJlYWR5U3RhdGUoQUNUSVZFKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6ZGlkR2Vu
ZXJhdGVTRFAoY29uc3QgU3RyaW5nJiBzZHApCi17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIG1fc2lnbmFsaW5nQ2FsbGJhY2st
PmhhbmRsZUV2ZW50KCJTRFBcbiIgKyBzZHAsIHRoaXMpOwotfQotCi12b2lkIFBlZXJDb25uZWN0
aW9uOjpkaWRSZWNlaXZlRGF0YVN0cmVhbU1lc3NhZ2UoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCkKLXsKLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRl
eHRUaHJlYWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRG
OChkYXRhLCBsZW5ndGgpOwotICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUo
UGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PigpLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNy
ZWF0ZShtZXNzYWdlKSkpOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uOjpkaWRBZGRSZW1vdGVT
dHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3Ip
Ci17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFk
KCkpOwotCi0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0cmVhbURlc2NyaXB0b3IpOwotICAgIG1fcmVtb3Rl
U3RyZWFtcy0+YXBwZW5kKHN0cmVhbSk7Ci0KLSAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFt
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwg
c3RyZWFtLnJlbGVhc2UoKSkpOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uOjpkaWRSZW1vdmVS
ZW1vdGVTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW1EZXNjcmlwdG9yKQotewot
ICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsK
LSAgICBBU1NFUlQoc3RyZWFtRGVzY3JpcHRvci0+b3duZXIoKSk7Ci0KLSAgICBSZWZQdHI8TWVk
aWFTdHJlYW0+IHN0cmVhbSA9IHN0YXRpY19jYXN0PE1lZGlhU3RyZWFtKj4oc3RyZWFtRGVzY3Jp
cHRvci0+b3duZXIoKSk7Ci0gICAgc3RyZWFtLT5zdHJlYW1FbmRlZCgpOwotCi0gICAgaWYgKG1f
cmVhZHlTdGF0ZSA9PSBDTE9TRUQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX3Jl
bW90ZVN0cmVhbXMtPmNvbnRhaW5zKHN0cmVhbS5nZXQoKSkpOwotICAgIG1fcmVtb3RlU3RyZWFt
cy0+cmVtb3ZlKHN0cmVhbS5nZXQoKSk7Ci0KLSAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFt
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3Zlc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxz
ZSwgc3RyZWFtLnJlbGVhc2UoKSkpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIFBlZXJDb25u
ZWN0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZXZlbnROYW1lcygp
LmludGVyZmFjZUZvclBlZXJDb25uZWN0aW9uOwotfQotCi1TY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotfQotCi12
b2lkIFBlZXJDb25uZWN0aW9uOjpzdG9wKCkKLXsKLSAgICBpZiAobV9yZWFkeVN0YXRlID09IENM
T1NFRCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pbml0aWFsTmVnb3RpYXRpb25UaW1lci5z
dG9wKCk7Ci0gICAgbV9zdHJlYW1DaGFuZ2VUaW1lci5zdG9wKCk7Ci0gICAgbV9yZWFkeVN0YXRl
Q2hhbmdlVGltZXIuc3RvcCgpOwotCi0gICAgaWYgKG1fcGVlckhhbmRsZXIpCi0gICAgICAgIG1f
cGVlckhhbmRsZXItPnN0b3AoKTsKLQotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwot
ICAgIG1fcGVlckhhbmRsZXIuY2xlYXIoKTsKLQotICAgIGNoYW5nZVJlYWR5U3RhdGUoQ0xPU0VE
KTsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRh
KCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERh
dGEqIFBlZXJDb25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb246OnNjaGVkdWxl
SW5pdGlhbE5lZ290aWF0aW9uKCkKLXsKLSAgICBBU1NFUlQoIW1faW5pdGlhbE5lZ290aWF0aW9u
VGltZXIuaXNBY3RpdmUoKSk7Ci0KLSAgICBtX2luaXRpYWxOZWdvdGlhdGlvblRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6aW5pdGlhbE5lZ290aWF0aW9u
VGltZXJGaXJlZChUaW1lcjxQZWVyQ29ubmVjdGlvbj4qIHRpbWVyKQotewotICAgIEFTU0VSVF9V
TlVTRUQodGltZXIsIHRpbWVyID09ICZtX2luaXRpYWxOZWdvdGlhdGlvblRpbWVyKTsKLQotICAg
IGlmIChtX2ljZVN0YXJ0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIE1lZGlhU3RyZWFtRGVz
Y3JpcHRvclZlY3RvciBwZW5kaW5nQWRkU3RyZWFtczsKLSAgICBtX3BlbmRpbmdBZGRTdHJlYW1z
LnN3YXAocGVuZGluZ0FkZFN0cmVhbXMpOwotICAgIGlmIChtX3BlZXJIYW5kbGVyKQotICAgICAg
ICBtX3BlZXJIYW5kbGVyLT5wcm9kdWNlSW5pdGlhbE9mZmVyKHBlbmRpbmdBZGRTdHJlYW1zKTsK
LQotICAgIG1faWNlU3RhcnRlZCA9IHRydWU7Ci0KLSAgICBjaGFuZ2VSZWFkeVN0YXRlKE5FR09U
SUFUSU5HKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6ZW5zdXJlU3RyZWFtQ2hhbmdlU2No
ZWR1bGVkKCkKLXsKLSAgICBpZiAoIW1fc3RyZWFtQ2hhbmdlVGltZXIuaXNBY3RpdmUoKSkKLSAg
ICAgICAgbV9zdHJlYW1DaGFuZ2VUaW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0KLXZvaWQgUGVl
ckNvbm5lY3Rpb246OnN0cmVhbUNoYW5nZVRpbWVyRmlyZWQoVGltZXI8UGVlckNvbm5lY3Rpb24+
KiB0aW1lcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9zdHJlYW1D
aGFuZ2VUaW1lcik7Ci0KLSAgICBpZiAoIW1fcGVuZGluZ0FkZFN0cmVhbXMuaXNFbXB0eSgpICYm
ICFtX3BlbmRpbmdSZW1vdmVTdHJlYW1zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yIHBlbmRpbmdBZGRTdHJlYW1zOwotICAgIE1l
ZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciBwZW5kaW5nUmVtb3ZlU3RyZWFtczsKLQotICAgIG1f
cGVuZGluZ0FkZFN0cmVhbXMuc3dhcChwZW5kaW5nQWRkU3RyZWFtcyk7Ci0gICAgbV9wZW5kaW5n
UmVtb3ZlU3RyZWFtcy5zd2FwKHBlbmRpbmdSZW1vdmVTdHJlYW1zKTsKLQotICAgIGlmIChtX3Bl
ZXJIYW5kbGVyKQotICAgICAgICBtX3BlZXJIYW5kbGVyLT5wcm9jZXNzUGVuZGluZ1N0cmVhbXMo
cGVuZGluZ0FkZFN0cmVhbXMsIHBlbmRpbmdSZW1vdmVTdHJlYW1zKTsKLQotICAgIGlmICghcGVu
ZGluZ0FkZFN0cmVhbXMuaXNFbXB0eSgpKQotICAgICAgICBjaGFuZ2VSZWFkeVN0YXRlKE5FR09U
SUFUSU5HKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6c2NoZWR1bGVSZWFkeVN0YXRlQ2hh
bmdlKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKLXsKLSAgICBtX3BlbmRpbmdSZWFkeVN0YXRlcy5h
cHBlbmQocmVhZHlTdGF0ZSk7Ci0gICAgaWYgKCFtX3JlYWR5U3RhdGVDaGFuZ2VUaW1lci5pc0Fj
dGl2ZSgpKQotICAgICAgICBtX3JlYWR5U3RhdGVDaGFuZ2VUaW1lci5zdGFydE9uZVNob3QoMCk7
Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb246OnJlYWR5U3RhdGVDaGFuZ2VUaW1lckZpcmVkKFRp
bWVyPFBlZXJDb25uZWN0aW9uPiogdGltZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNFRCh0aW1lciwg
dGltZXIgPT0gJm1fcmVhZHlTdGF0ZUNoYW5nZVRpbWVyKTsKLQotICAgIFZlY3RvcjxSZWFkeVN0
YXRlPiBwZW5kaW5nUmVhZHlTdGF0ZXM7Ci0gICAgbV9wZW5kaW5nUmVhZHlTdGF0ZXMuc3dhcChw
ZW5kaW5nUmVhZHlTdGF0ZXMpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwZW5kaW5n
UmVhZHlTdGF0ZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIGNoYW5nZVJlYWR5U3RhdGUocGVuZGlu
Z1JlYWR5U3RhdGVzW2ldKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6Y2hhbmdlUmVhZHlT
dGF0ZShSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCi17Ci0gICAgaWYgKHJlYWR5U3RhdGUgPT0gbV9y
ZWFkeVN0YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3JlYWR5U3RhdGUgPSByZWFkeVN0
YXRlOwotCi0gICAgc3dpdGNoIChtX3JlYWR5U3RhdGUpIHsKLSAgICBjYXNlIE5FVzoKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTkVHT1RJ
QVRJTkc6Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
Y29ubmVjdGluZ0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBBQ1RJVkU6Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
TE9TRUQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZhbHNlKSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMmYyZmIyZDQyODI2YjYz
NjAwMTU1NmIzNmIzYWFlNzNiZjVjMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0g
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgUGVlckNvbm5lY3Rpb25faAotI2RlZmluZSBQZWVyQ29ubmVjdGlvbl9oCi0KLSNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0j
aW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCi0jaW5j
bHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbUxpc3QuaCIKLSNpbmNs
dWRlICJQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKLSNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQuaCIKLSNpbmNsdWRlICJTaWduYWxpbmdDYWxsYmFjay5oIgotI2luY2x1ZGUg
IlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gTm90ZToKLS8vIFNEUCBzdGFuZHMg
Zm9yIFNlc3Npb24gRGVzY3JpcHRpb24gUHJvdG9jb2wsIHdoaWNoIGlzIGludGVuZGVkIGZvciBk
ZXNjcmliaW5nCi0vLyBtdWx0aW1lZGlhIHNlc3Npb25zIGZvciB0aGUgcHVycG9zZXMgb2Ygc2Vz
c2lvbiBhbm5vdW5jZW1lbnQsIHNlc3Npb24KLS8vIGludml0YXRpb24sIGFuZCBvdGhlciBmb3Jt
cyBvZiBtdWx0aW1lZGlhIHNlc3Npb24gaW5pdGlhdGlvbi4KLS8vCi0vLyBNb3JlIGluZm9ybWF0
aW9uIGNhbiBiZSBmb3VuZCBoZXJlOgotLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZj
NDU2NgotLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZXNzaW9uX0Rlc2NyaXB0aW9u
X1Byb3RvY29sCi0KLWNsYXNzIFBlZXJDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UGVl
ckNvbm5lY3Rpb24+LCBwdWJsaWMgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LCBwdWJsaWMg
RXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxp
bmdDYWxsYmFjaz4pOwotICAgIH5QZWVyQ29ubmVjdGlvbigpOwotCi0gICAgdm9pZCBwcm9jZXNz
U2lnbmFsaW5nTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlvbkNvZGUmKTsK
LQotICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwotCi0gICAgdm9pZCBzZW5kKGNv
bnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYWRkU3RyZWFtKGNv
bnN0IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBy
ZW1vdmVTdHJlYW0oTWVkaWFTdHJlYW0qLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgTWVkaWFTdHJl
YW1MaXN0KiBsb2NhbFN0cmVhbXMoKSBjb25zdDsKLSAgICBNZWRpYVN0cmVhbUxpc3QqIHJlbW90
ZVN0cmVhbXMoKSBjb25zdDsKLSAgICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUmKTsKLQotICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ubmVjdGluZyk7Ci0gICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihvcGVuKTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKG1lc3NhZ2UpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIoc3RhdGVjaGFuZ2UpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRk
c3RyZWFtKTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJlbW92ZXN0cmVh
bSk7Ci0KLSAgICAvLyBQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29tcGxldGVJQ0VQcm9jZXNzaW5nKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEdlbmVy
YXRlU0RQKGNvbnN0IFN0cmluZyYgc2RwKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2Ny
aXB0b3I+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvciopOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTdGF0ZShSZWFkeVN0
YXRlIHN0YXRlKSB7IGNoYW5nZVJlYWR5U3RhdGUoc3RhdGUpOyB9Ci0KLSAgICAvLyBFdmVudFRh
cmdldAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29u
c3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3Q7Ci0KLSAgICAvLyBBY3RpdmVET01PYmplY3QKLSAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpOwotCi0gICAgdXNpbmcgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlvbj46OnJlZjsK
LSAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPjo6ZGVyZWY7Ci0KLXByaXZhdGU6
Ci0gICAgUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4pOwot
Ci0gICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCBFdmVudFRh
cmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRh
KiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRl
cmVmKCk7IH0KLQotICAgIHZvaWQgc2NoZWR1bGVJbml0aWFsTmVnb3RpYXRpb24oKTsKLSAgICB2
b2lkIGluaXRpYWxOZWdvdGlhdGlvblRpbWVyRmlyZWQoVGltZXI8UGVlckNvbm5lY3Rpb24+Kik7
Ci0gICAgdm9pZCBlbnN1cmVTdHJlYW1DaGFuZ2VTY2hlZHVsZWQoKTsKLSAgICB2b2lkIHN0cmVh
bUNoYW5nZVRpbWVyRmlyZWQoVGltZXI8UGVlckNvbm5lY3Rpb24+Kik7Ci0gICAgdm9pZCBzY2hl
ZHVsZVJlYWR5U3RhdGVDaGFuZ2UoUmVhZHlTdGF0ZSk7Ci0gICAgdm9pZCByZWFkeVN0YXRlQ2hh
bmdlVGltZXJGaXJlZChUaW1lcjxQZWVyQ29ubmVjdGlvbj4qKTsKLQotICAgIHZvaWQgY2hhbmdl
UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKLQotICAgIFJlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4g
bV9zaWduYWxpbmdDYWxsYmFjazsKLQotICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwotICAg
IGJvb2wgbV9pY2VTdGFydGVkOwotCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtTGlzdD4gbV9sb2Nh
bFN0cmVhbXM7Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtTGlzdD4gbV9yZW1vdGVTdHJlYW1zOwot
Ci0gICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAgRXZlbnRUYXJnZXREYXRh
IG1fZXZlbnRUYXJnZXREYXRhOwotCi0gICAgVGltZXI8UGVlckNvbm5lY3Rpb24+IG1faW5pdGlh
bE5lZ290aWF0aW9uVGltZXI7Ci0gICAgVGltZXI8UGVlckNvbm5lY3Rpb24+IG1fc3RyZWFtQ2hh
bmdlVGltZXI7Ci0gICAgVGltZXI8UGVlckNvbm5lY3Rpb24+IG1fcmVhZHlTdGF0ZUNoYW5nZVRp
bWVyOwotCi0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yIG1fcGVuZGluZ0FkZFN0cmVh
bXM7Ci0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yIG1fcGVuZGluZ1JlbW92ZVN0cmVh
bXM7Ci0gICAgVmVjdG9yPFJlYWR5U3RhdGU+IG1fcGVuZGluZ1JlYWR5U3RhdGVzOwotCi0gICAg
T3duUHRyPFBlZXJDb25uZWN0aW9uSGFuZGxlcj4gbV9wZWVySGFuZGxlcjsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNl
bmRpZiAvLyBQZWVyQ29ubmVjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3NTQzYTBkYmNlM2M3YjU1YWI0NTAwOTRiZmM2ODdlODMxZDcwODE2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaWRsCisrKyAvZGV2L251bGwKQEAgLTEs
NzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHAycCB7Ci0KLSAgICBpbnRlcmZhY2Ug
WwotICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi0gICAgICAgIEFjdGl2ZURPTU9i
amVjdCwKLSAgICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHNlcnZlckNvbmZpZ3VyYXRp
b24sIGluIFtDYWxsYmFja10gU2lnbmFsaW5nQ2FsbGJhY2sgc2lnbmFsaW5nQ2FsbGJhY2spLAot
ICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAotICAgICAgICBKU0N1c3Rv
bUNvbnN0cnVjdG9yLAotICAgICAgICBFdmVudFRhcmdldAotICAgIF0gUGVlckNvbm5lY3Rpb24g
ewotICAgICAgICB2b2lkIHByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGluIERPTVN0cmluZyBtZXNz
YWdlKQotICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0KLSAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgTkVXID0gMDsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVH
T1RJQVRJTkcgPSAxOwotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBBQ1RJVkUgPSAyOwot
ICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDTE9TRUQgPSAzOwotICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKLQotICAgICAgICB2b2lkIHNl
bmQoaW4gRE9NU3RyaW5nIHRleHQpCi0gICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
LSAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBhZGRTdHJlYW0oaW4gTWVkaWFTdHJl
YW0gc3RyZWFtKQotICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0gICAgICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgcmVtb3ZlU3RyZWFtKGluIE1lZGlhU3RyZWFtIHN0cmVh
bSkKLSAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotCi0gICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbUxpc3QgbG9jYWxTdHJlYW1zOwotICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1MaXN0IHJlbW90ZVN0cmVhbXM7Ci0KLSAgICAgICAgdm9p
ZCBjbG9zZSgpCi0gICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLQotICAgICAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNvbm5lY3Rpbmc7Ci0gICAgICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9ub3BlbjsKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25t
ZXNzYWdlOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnN0YXRlY2hhbmdlOwot
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHN0cmVhbTsKLSAgICAgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmVzdHJlYW07Ci0KLSAgICAgICAgLy8gRXZlbnRU
YXJnZXQgaW50ZXJmYWNlCi0gICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJp
bmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIg
bGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJv
b2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBE
T01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50
TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBb
T3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hF
dmVudChpbiBFdmVudCBldmVudCkKLSAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7
Ci0gICAgfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9TaWduYWxpbmdDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9TaWduYWxpbmdDYWxsYmFjay5oCmluZGV4IGE0YTMwZTcxMjY3NTRhNTFjMzI4YjI4NzQ3
NjI2MGFiZDhmYzRiODEuLjY1YWE2MmE2ZjVlZjI5MDBmZDk2NGZkOTNiODUxYjBlMmQzMGRiZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2lnbmFsaW5n
Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NpZ25h
bGluZ0NhbGxiYWNrLmgKQEAgLTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIFBlZXJDb25uZWN0aW9uOworY2xhc3MgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
OwogCiBjbGFzcyBTaWduYWxpbmdDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFNpZ25hbGlu
Z0NhbGxiYWNrPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2lnbmFsaW5nQ2FsbGJhY2soKSB7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoY29uc3QgU3RyaW5nJiwgUGVlckNvbm5l
Y3Rpb24qKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KGNvbnN0IFN0cmluZyYs
IERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbiopID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU2ln
bmFsaW5nQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9T
aWduYWxpbmdDYWxsYmFjay5pZGwKaW5kZXggZTJlMGNlYmQyNmM4MTIwYzIxZDM3ZWRjZDk4MTNh
MDZkZDkyMDQwZC4uNjllNGI5MmY0YTg4Nzc5MmM1ZjFlNTJjMTE2YTIxYzU1YTRmNmQ3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxs
YmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWduYWxp
bmdDYWxsYmFjay5pZGwKQEAgLTI4LDcgKzI4LDcgQEAgbW9kdWxlIHAycCB7CiAgICAgICAgIENv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKICAgICAgICAgQ2FsbGJhY2sKICAgICBdIFNpZ25hbGlu
Z0NhbGxiYWNrIHsKLSAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChpbiBET01TdHJpbmcgbWVz
c2FnZSwgaW4gUGVlckNvbm5lY3Rpb24gc291cmNlKTsKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVF
dmVudChpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uIHNv
dXJjZSk7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDA2YjlmNjEyNmIzZDkwZWFm
YzBmYzY3N2E2YWM5OTZiZjdhZDA3N2EuLjdjM2JjOWEzMjAzODBlOTJhYjdkZTAzYWVhOGEwZjU4
YTVmYjMwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQxNSwxMyArNDE1LDEzIEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vbWFjL1dlYkNvcmVWaWV3LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21h
Yy9XZWJGb250Q2FjaGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vRGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmNwcCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db21wb25lbnQuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNl
LmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbW9jay9EZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbW9jay9HZW9sb2Nh
dGlvbkNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9BdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCcsCkBAIC03NDksNiArNzQ5LDcgQEAKICAgICAgICAgICAg
ICdNb2R1bGVzL2ludGVudHMvSW50ZW50LmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbnRl
bnRzL0ludGVudFJlc3VsdENhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbnRl
bnRzL05hdmlnYXRvckludGVudHMuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3Ry
ZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0uaWRsJywKICAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uaWRsJywKICAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbCcsCkBAIC03NjAsNyArNzYxLDYgQEAKICAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlk
bCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvckNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsJywKLSAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMv
c3BlZWNoL0RPTVdpbmRvd1NwZWVjaC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvc3BlZWNo
L1NwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmUuaWRsJywKQEAgLTEzNzksNiArMTM3OSw4IEBA
CiAgICAgICAgICAgICAnTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlc3VsdENhbGxiYWNrLmgnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmNwcCcsCiAgICAg
ICAgICAgICAnTW9kdWxlcy9pbnRlbnRzL05hdmlnYXRvckludGVudHMuaCcsCisgICAgICAgICAg
ICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uY3BwJywKKyAg
ICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5o
JywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uY3Bw
JywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAnLApAQCAt
MTM5OCwxMiArMTQwMCwxMCBAQAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3IuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmgnLAotICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3BwJywKLSAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmgnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCcsCi0gICAgICAgICAgICAn
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgnLAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAnLAorICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZS5jcHAnLApAQCAt
MTY4Miw2ICsxNjgyLDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIu
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFWaWV3Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25D
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0Rlc2t0b3BOb3RpZmljYXRp
b25zQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rpb25F
dmVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50
YXRpb25FdmVudEN1c3RvbS5jcHAnLApAQCAtMTc2Miw3ICsxNzYzLDYgQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1Bl
ZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQbHVn
aW5FbGVtZW50RnVuY3Rpb25zLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQb3BT
dGF0ZUV2ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNQcm9jZXNz
aW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggNDUzYjEyMTQx
MmFlN2M1OGEwZmY1NWI4Njg0MDZkOTJjN2EyMDMyYS4uOTdlODY4NDgyNTBlYjhmZGY1ODA0ZWRl
NzAyNWY4N2MzMDBkMTFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE3Nyw3ICsxNzcsNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIGJvb2wgbWVkaWFTdHJlYW1FbmFibGVkKCkgeyByZXR1cm4gaXNN
ZWRpYVN0cmVhbUVuYWJsZWQ7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRNZWRpYVN0cmVhbUVuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNNZWRpYVN0cmVhbUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
ICAgICBzdGF0aWMgYm9vbCB3ZWJraXRHZXRVc2VyTWVkaWFFbmFibGVkKCkgeyByZXR1cm4gaXNN
ZWRpYVN0cmVhbUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRQZWVyQ29ubmVjdGlv
bkVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQorICAgIHN0YXRpYyBi
b29sIHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc01l
ZGlhU3RyZWFtRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVwcmVjYXRlZFBlZXJDb25uZWN0
aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDk4NmMzOWM4ZTQwOTA3YjMwMjdl
ODU5MjUyN2E4YWQ5MGNjMjVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCkBAIC0wLDAgKzEs
NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJKU0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5oIgor
CisjaW5jbHVkZSAiQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkpTU2lnbmFsaW5nQ2FsbGJhY2suaCIKKyNpbmNsdWRl
IDxydW50aW1lL0Vycm9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbkNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlv
bihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25Db25z
dHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTRGVwcmVjYXRlZFBlZXJDb25u
ZWN0aW9uQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbiBjb25z
dHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOworCisgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKTsKKwor
ICAgIFN0cmluZyBzZXJ2ZXJDb25maWd1cmF0aW9uID0gdXN0cmluZ1RvU3RyaW5nKGV4ZWMtPmFy
Z3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7
CisKKyAgICBSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IHNpZ25hbGluZ0NhbGxiYWNrID0gY3Jl
YXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNTaWduYWxpbmdDYWxsYmFjaz4oZXhlYywgc3RhdGlj
X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBl
eGVjLT5hcmd1bWVudCgxKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAgICBSZWZQdHI8RGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IERlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbjo6Y3JlYXRlKGNvbnRleHQsIHNlcnZlckNvbmZpZ3VyYXRpb24sIHNpZ25hbGluZ0NhbGxi
YWNrLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShDUkVBVEVfRE9NX1dS
QVBQRVIoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIERlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbiwgcGVlckNvbm5lY3Rpb24uZ2V0KCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMzdmOTE1OTVlODQ5Zjg0MjhlYzJhM2Y5YmI0YjE4
OGE3ZDhkNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJp
Y3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiSlNQZWVyQ29u
bmVjdGlvbi5oIgotCi0jaW5jbHVkZSAiQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpT
U2lnbmFsaW5nQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5oIgotI2luY2x1
ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUGVlckNvbm5lY3Rp
b25Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNQZWVyQ29ubmVjdGlvbihFeGVjU3RhdGUqIGV4ZWMp
Ci17Ci0gICAgSlNQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9yID0gc3Rh
dGljX2Nhc3Q8SlNQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwot
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVjdG9yLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJQZWVyQ29ubmVj
dGlvbiBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOwot
Ci0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3VtZW50
cyIpKTsKLQotICAgIFN0cmluZyBzZXJ2ZXJDb25maWd1cmF0aW9uID0gdXN0cmluZ1RvU3RyaW5n
KGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Ci0gICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7Ci0KLSAgICBSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IHNpZ25hbGluZ0NhbGxi
YWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNTaWduYWxpbmdDYWxsYmFjaz4oZXhl
Yywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLCBleGVjLT5hcmd1bWVudCgxKSk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0KLSAgICBSZWZQ
dHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gUGVlckNvbm5lY3Rpb246OmNyZWF0
ZShjb250ZXh0LCBzZXJ2ZXJDb25maWd1cmF0aW9uLCBzaWduYWxpbmdDYWxsYmFjay5yZWxlYXNl
KCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMs
IGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBQZWVyQ29ubmVjdGlvbiwgcGVlckNvbm5l
Y3Rpb24uZ2V0KCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
RU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5kZXggYmFkZTQ0
NGY1M2I5NjhiMzM2YjE5Y2Q1NDNhZDZjNTQ1ZDU2ODg4Zi4uZjM4N2U0MjczZWUyNmEyMDZiNmQ3
OTk5MWRlMzJkOWRiNTVlMmE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKQEAgLTYwLDcg
KzYwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE1lc3NhZ2VQb3J0OwogICAg
IGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uOwotICAgIGNsYXNzIFBlZXJDb25u
ZWN0aW9uOwogICAgIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKICAgICBjbGFzcyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNoYXJlZFdvcmtlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDc4Mzk2YmQzYzg0ODE2ZTFhNWZkM2ZkM2Rh
Y2Y1MjgzZWM5ZDY5ZDAuLjYxOTU4NzM5MzgyNzBkMzZiNzY2NWRjOWRjZWQxYjk4MTVkYWVhNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtNCw2ICs0LDcg
QEAgQXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdFQl9BVURJTwogRGVkaWNhdGVkV29ya2VyQ29u
dGV4dCBjb25kaXRpb25hbD1XT1JLRVJTCiBET01BcHBsaWNhdGlvbkNhY2hlCiBET01XaW5kb3cK
K0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbiBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIEV2ZW50
U291cmNlCiBGaWxlUmVhZGVyIGNvbmRpdGlvbmFsPUJMT0IKIEZpbGVXcml0ZXIgY29uZGl0aW9u
YWw9RklMRV9TWVNURU0KQEAgLTE4LDcgKzE5LDYgQEAgTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNCiBNZXNzYWdlUG9ydAogTm9kZQogTm90aWZpY2F0aW9uIGNvbmRpdGlvbmFs
PU5PVElGSUNBVElPTlMKLVBlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQog
U2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTaGFyZWRXb3JrZXJDb250
ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTVkdFbGVtZW50SW5zdGFuY2UgY29uZGl0
aW9uYWw9U1ZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmUzNGRlNTZkZGRiMGYyNmM3ZWZlMDgzMjUzOWY4ODA4NmQzZWJlNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmli
dXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMg
b2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcl9oCisjZGVmaW5lIERlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbkhhbmRsZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUg
Ik1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudDsKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorY2xhc3MgRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uSGFuZGxlckludGVybmFsOworI2VuZGlmCisKK2NsYXNzIERlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbkhhbmRsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRs
ZXI+IGNyZWF0ZShEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiwgY29uc3Qg
U3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lKTsKKyAg
ICB+RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcigpOworCisgICAgdm9pZCBwcm9kdWNl
SW5pdGlhbE9mZmVyKGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciYgcGVuZGluZ0Fk
ZFN0cmVhbXMpOworICAgIHZvaWQgaGFuZGxlSW5pdGlhbE9mZmVyKGNvbnN0IFN0cmluZyYgc2Rw
KTsKKyAgICB2b2lkIHByb2Nlc3NTRFAoY29uc3QgU3RyaW5nJiBzZHApOworICAgIHZvaWQgcHJv
Y2Vzc1BlbmRpbmdTdHJlYW1zKGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciYgcGVu
ZGluZ0FkZFN0cmVhbXMsIGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciYgcGVuZGlu
Z1JlbW92ZVN0cmVhbXMpOworICAgIHZvaWQgc2VuZERhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworCisgICAgdm9pZCBzdG9wKCk7CisKK3ByaXZhdGU6
CisgICAgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcihEZXByZWNhdGVkUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBj
b25zdCBTdHJpbmcmIHVzZXJuYW1lKTsKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgIE93
blB0cjxEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw+IG1fcHJpdmF0ZTsK
KyNlbGlmIFVTRShHU1RSRUFNRVIpCisgICAgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudCogbV9jbGllbnQ7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBEZXByZWNhdGVk
UGVlckNvbm5lY3Rpb25IYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmM3ZjA5ZWEwMmQyNzJkMzBiNTIyNTJh
NzI0MmE1ZjM4YmEzMzg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oCkBA
IC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEFCLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0
aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudF9oCisjZGVmaW5lIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRf
aAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOworCitjbGFzcyBEZXByZWNhdGVkUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBOYW1lIGFuZCB2YWx1
ZXMgb2YgdGhlIGVudW0gbXVzdCBtYXRjaCB0aGUgY29ycmVzc3BvbmRpbmcgY29uc3RhbnRzIGlu
IHRoZSBQZWVyQ29ubmVjdGlvbi5pZGwgZmlsZS4KKyAgICBlbnVtIFJlYWR5U3RhdGUgeworICAg
ICAgICBORVcgPSAwLAorICAgICAgICBORUdPVElBVElORyA9IDEsCisgICAgICAgIEFDVElWRSA9
IDIsCisgICAgICAgIENMT1NFRCA9IDMKKyAgICB9OworCisgICAgdmlydHVhbCB+RGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRp
ZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkR2VuZXJh
dGVTRFAoY29uc3QgU3RyaW5nJiBzZHApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1EZXNjcmlwdG9yPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVSZW1vdGVTdHJl
YW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VTdGF0ZShSZWFkeVN0YXRlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gRGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uSGFuZGxlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTIyY2Y0YzdjYTQyODA1NTI5OTNlNDIzZWFiZWNkODcz
ZGYxYWM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uSGFuZGxlci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogICAgZGlzdHJpYnV0aW9uLgot
ICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFBlZXJDb25uZWN0
aW9uSGFuZGxlcl9oCi0jZGVmaW5lIFBlZXJDb25uZWN0aW9uSGFuZGxlcl9oCi0KLSNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCi0j
aW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7Ci0KLSNpZiBQTEFURk9STShDSFJPTUlVTSkKLWNs
YXNzIFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOwotI2VuZGlmCi0KLWNsYXNzIFBlZXJD
b25uZWN0aW9uSGFuZGxlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVlckNvbm5lY3Rp
b25IYW5kbGVyKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc093blB0cjxQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IGNyZWF0ZShQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIGNv
bnN0IFN0cmluZyYgdXNlcm5hbWUpOwotICAgIH5QZWVyQ29ubmVjdGlvbkhhbmRsZXIoKTsKLQot
ICAgIHZvaWQgcHJvZHVjZUluaXRpYWxPZmZlcihjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0b3JW
ZWN0b3ImIHBlbmRpbmdBZGRTdHJlYW1zKTsKLSAgICB2b2lkIGhhbmRsZUluaXRpYWxPZmZlcihj
b25zdCBTdHJpbmcmIHNkcCk7Ci0gICAgdm9pZCBwcm9jZXNzU0RQKGNvbnN0IFN0cmluZyYgc2Rw
KTsKLSAgICB2b2lkIHByb2Nlc3NQZW5kaW5nU3RyZWFtcyhjb25zdCBNZWRpYVN0cmVhbURlc2Ny
aXB0b3JWZWN0b3ImIHBlbmRpbmdBZGRTdHJlYW1zLCBjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0
b3JWZWN0b3ImIHBlbmRpbmdSZW1vdmVTdHJlYW1zKTsKLSAgICB2b2lkIHNlbmREYXRhU3RyZWFt
TWVzc2FnZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKLQotICAgIHZvaWQgc3Rv
cCgpOwotCi1wcml2YXRlOgotICAgIFBlZXJDb25uZWN0aW9uSGFuZGxlcihQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIGNvbnN0
IFN0cmluZyYgdXNlcm5hbWUpOwotCi0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0gICAgT3duUHRy
PFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsPiBtX3ByaXZhdGU7Ci0jZWxpZiBVU0UoR1NU
UkVBTUVSKQotICAgIFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogbV9jbGllbnQ7Ci0jZW5k
aWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJ
QV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBQZWVyQ29ubmVjdGlvbkhhbmRsZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY3
ZWYzYTU1ODQwM2E5Yjg1ZDc0YWRlNzEyNDUzODNhNjJjNjg3ZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0x
LDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEFCLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlz
Ci0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50X2gKLSNk
ZWZpbmUgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50X2gKLQotI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1lZGlhU3RyZWFt
RGVzY3JpcHRvcjsKLQotY2xhc3MgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50IHsKLXB1Ymxp
YzoKLSAgICAvLyBOYW1lIGFuZCB2YWx1ZXMgb2YgdGhlIGVudW0gbXVzdCBtYXRjaCB0aGUgY29y
cmVzc3BvbmRpbmcgY29uc3RhbnRzIGluIHRoZSBQZWVyQ29ubmVjdGlvbi5pZGwgZmlsZS4KLSAg
ICBlbnVtIFJlYWR5U3RhdGUgewotICAgICAgICBORVcgPSAwLAotICAgICAgICBORUdPVElBVElO
RyA9IDEsCi0gICAgICAgIEFDVElWRSA9IDIsCi0gICAgICAgIENMT1NFRCA9IDMKLSAgICB9Owot
Ci0gICAgdmlydHVhbCB+UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KCkgeyB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVJQ0VQcm9jZXNzaW5nKCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRHZW5lcmF0ZVNEUChjb25zdCBTdHJpbmcmIHNkcCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlRGF0YVN0cmVhbU1lc3NhZ2UoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVTdHJlYW0oUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
bW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVN0YXRlKFJlYWR5U3RhdGUpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAv
LyBQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlv
bkhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2ZTNk
NTg2NjM3YzRkN2MzMGUxNTM2NzEyNTMwZTRjZjIwNjNiNTgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvRGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJp
YnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVz
IG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiRGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5oIgorCisjaW5jbHVkZSAiRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uSGFuZGxlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NP
d25QdHI8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcj4gRGVwcmVjYXRlZFBlZXJDb25u
ZWN0aW9uSGFuZGxlcjo6Y3JlYXRlKERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGll
bnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb25zdCBTdHJp
bmcmIHVzZXJuYW1lKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uSGFuZGxlcihjbGllbnQsIHNlcnZlckNvbmZpZ3VyYXRpb24sIHVzZXJuYW1lKSk7
Cit9CisKKy8vIEVtcHR5IGltcGxlbWVudGF0aW9ucyBmb3IgcG9ydHMgdGhhdCBidWlsZCB3aXRo
IE1FRElBX1NUUkVBTSBlbmFibGVkIGJ5IGRlZmF1bHQuCitEZXByZWNhdGVkUGVlckNvbm5lY3Rp
b25IYW5kbGVyOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyKERlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQor
eworfQorCitEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjp+RGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
SGFuZGxlcjo6cHJvZHVjZUluaXRpYWxPZmZlcihjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0b3JW
ZWN0b3ImKQoreworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6Omhh
bmRsZUluaXRpYWxPZmZlcihjb25zdCBTdHJpbmcmKQoreworfQorCit2b2lkIERlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnByb2Nlc3NTRFAoY29uc3QgU3RyaW5nJikKK3sKK30KKwor
dm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpwcm9jZXNzUGVuZGluZ1N0cmVh
bXMoY29uc3QgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yJiwgY29uc3QgTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yVmVjdG9yJikKK3sKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25I
YW5kbGVyOjpzZW5kRGF0YVN0cmVhbU1lc3NhZ2UoY29uc3QgY2hhciosIHNpemVfdCkKK3sKK30K
Kwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzdG9wKCkKK3sKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1l
ci9QZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDM3MTI5MzQxMmRlMjJiM2UzYzM4M2NjMzFhMWQ0YjA3YTU1MmYy
Y2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1BlZXJDb25uZWN0aW9uSGFu
ZGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmli
dXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMg
b2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJQZWVyQ29u
bmVjdGlvbkhhbmRsZXIuaCIKLQotI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8UGVlckNvbm5lY3Rpb25I
YW5kbGVyPiBQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZShQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb25z
dCBTdHJpbmcmIHVzZXJuYW1lKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgUGVlckNvbm5l
Y3Rpb25IYW5kbGVyKGNsaWVudCwgc2VydmVyQ29uZmlndXJhdGlvbiwgdXNlcm5hbWUpKTsKLX0K
LQotLy8gRW1wdHkgaW1wbGVtZW50YXRpb25zIGZvciBwb3J0cyB0aGF0IGJ1aWxkIHdpdGggTUVE
SUFfU1RSRUFNIGVuYWJsZWQgYnkgZGVmYXVsdC4KLVBlZXJDb25uZWN0aW9uSGFuZGxlcjo6UGVl
ckNvbm5lY3Rpb25IYW5kbGVyKFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCosIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpCi17Ci19Ci0KLVBlZXJDb25uZWN0aW9uSGFuZGxlcjo6flBl
ZXJDb25uZWN0aW9uSGFuZGxlcigpCi17Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVy
Ojpwcm9kdWNlSW5pdGlhbE9mZmVyKGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciYp
Ci17Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpoYW5kbGVJbml0aWFsT2ZmZXIo
Y29uc3QgU3RyaW5nJikKLXsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnByb2Nl
c3NTRFAoY29uc3QgU3RyaW5nJikKLXsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbkhhbmRsZXI6
OnByb2Nlc3NQZW5kaW5nU3RyZWFtcyhjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3Im
LCBjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3ImKQotewotfQotCi12b2lkIFBlZXJD
b25uZWN0aW9uSGFuZGxlcjo6c2VuZERhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIqLCBzaXpl
X3QpCi17Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzdG9wKCkKLXsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAxZTFhNDE2NjVlNzlkZDJjYTVkMzhhZGVk
Njk1ODUxOWUxNTc0MTQzLi4yYWZlN2JiNjJlMzEzMDVhNmI5ZDAxM2FjMGJmOTk3MDJjMGU3YjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC05MSwxMiArOTEsMTIgQEAKICAgICAg
ICAgICAgICAgICAnV0VCS0lUX0lNUExFTUVOVEFUSU9OPTEnLAogICAgICAgICAgICAgXSwKICAg
ICAgICAgICAgICdzb3VyY2VzJzogWworICAgICAgICAgICAgICAgICdicmlkZ2UvRGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAnLAorICAgICAgICAgICAgICAgICdicmlkZ2UvRGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmNwcCcsCisgICAgICAgICAgICAg
ICAgJ2JyaWRnZS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwuaCcsCiAg
ICAgICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAnLAogICAgICAgICAg
ICAgICAgICdicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5jcHAnLAogICAgICAgICAg
ICAgICAgICdicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oJywKLSAgICAgICAgICAg
ICAgICAnYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAnLAotICAgICAgICAgICAgICAg
ICdicmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwuY3BwJywKLSAgICAgICAgICAg
ICAgICAnYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbi5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vYnJpZGdlL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
SGFuZGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBkNWYxN2UzOTU3OWViYzY3MzBkYzU5YmE1Y2JjMmNi
OTBhOTc2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdl
L0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAi
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5oIgorCisjaW5jbHVkZSAiRGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oIgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
c3NPd25QdHI8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcj4gRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlKERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb25zdCBT
dHJpbmcmIHVzZXJuYW1lKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uSGFuZGxlcihjbGllbnQsIHNlcnZlckNvbmZpZ3VyYXRpb24sIHVzZXJuYW1l
KSk7Cit9CisKK0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OkRlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbkhhbmRsZXIoRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCog
Y2xpZW50LCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIGNvbnN0IFN0cmluZyYg
dXNlcm5hbWUpCisgICAgOiBtX3ByaXZhdGUoYWRvcHRQdHIobmV3IERlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbkhhbmRsZXJJbnRlcm5hbChjbGllbnQsIHNlcnZlckNvbmZpZ3VyYXRpb24sIHVzZXJu
YW1lKSkpCit7Cit9CisKK0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6On5EZXByZWNh
dGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyKCkKK3sKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNv
bm5lY3Rpb25IYW5kbGVyOjpwcm9kdWNlSW5pdGlhbE9mZmVyKGNvbnN0IE1lZGlhU3RyZWFtRGVz
Y3JpcHRvclZlY3RvciYgcGVuZGluZ0FkZFN0cmVhbXMpCit7CisgICAgbV9wcml2YXRlLT5wcm9k
dWNlSW5pdGlhbE9mZmVyKHBlbmRpbmdBZGRTdHJlYW1zKTsKK30KKwordm9pZCBEZXByZWNhdGVk
UGVlckNvbm5lY3Rpb25IYW5kbGVyOjpoYW5kbGVJbml0aWFsT2ZmZXIoY29uc3QgU3RyaW5nJiBz
ZHApCit7CisgICAgbV9wcml2YXRlLT5oYW5kbGVJbml0aWFsT2ZmZXIoc2RwKTsKK30KKwordm9p
ZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpwcm9jZXNzU0RQKGNvbnN0IFN0cmlu
ZyYgc2RwKQoreworICAgIG1fcHJpdmF0ZS0+cHJvY2Vzc1NEUChzZHApOworfQorCit2b2lkIERl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnByb2Nlc3NQZW5kaW5nU3RyZWFtcyhjb25z
dCBNZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3ImIHBlbmRpbmdBZGRTdHJlYW1zLCBjb25zdCBN
ZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3ImIHBlbmRpbmdSZW1vdmVTdHJlYW1zKQoreworICAg
IG1fcHJpdmF0ZS0+cHJvY2Vzc1BlbmRpbmdTdHJlYW1zKHBlbmRpbmdBZGRTdHJlYW1zLCBwZW5k
aW5nUmVtb3ZlU3RyZWFtcyk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFu
ZGxlcjo6c2VuZERhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpCit7CisgICAgbV9wcml2YXRlLT5zZW5kRGF0YVN0cmVhbU1lc3NhZ2UoZGF0YSwgbGVuZ3Ro
KTsKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzdG9wKCkKK3sK
KyAgICBtX3ByaXZhdGUtPnN0b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vYnJpZGdlL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9EZXByZWNhdGVkUGVlckNvbm5lY3Rp
b25IYW5kbGVySW50ZXJuYWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1OTUwNzNiNTZmNWRhNzk5YTNhMDlh
OWI5MTg2OWFhZGI4YmFmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL2JyaWRnZS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwuY3BwCkBA
IC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKKworI2luY2x1ZGUgIkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5h
bC5oIgorCisjaW5jbHVkZSAiRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5o
IgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV2ViS2l0LmgiCisjaW5j
bHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUGVl
ckNvbm5lY3Rpb25IYW5kbGVyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6
OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbChEZXByZWNhdGVkUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmln
dXJhdGlvbiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkK
K3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIG1fd2ViSGFuZGxlciA9IGFkb3B0UHRyKFdl
YktpdDo6d2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNyZWF0ZVBlZXJDb25uZWN0aW9uSGFuZGxl
cih0aGlzKSk7CisgICAgLy8gRklYTUU6IFdoZW4gdGhlcmUgaXMgc29tZSBlcnJvciByZXBvcnRp
bmcgYXZhbGlhYmxlIGluIHRoZSBQZWVyQ29ubmVjdGlvbiBvYmplY3QgcmVwb3J0CisgICAgLy8g
aWYgd2UgZGlkbid0IGdldCBhIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlciBpbnN0YW5jZS4KKwor
ICAgIGlmIChtX3dlYkhhbmRsZXIpIHsKKyAgICAgICAgLy8gRHVhbCBjYWxscyBkdWUgdG8gQVBJ
IGNoYW5nZQorICAgICAgICBtX3dlYkhhbmRsZXItPmluaXRpYWxpemUoc2VydmVyQ29uZmlndXJh
dGlvbiwgdXNlcm5hbWUpOworCisgICAgICAgIC8vIERFUFJFQ0FURUQKKyAgICAgICAgbV93ZWJI
YW5kbGVyLT5pbml0aWFsaXplKHNlcnZlckNvbmZpZ3VyYXRpb24sIFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHVzZXJuYW1lKSk7CisgICAgfQorfQorCitEZXByZWNhdGVkUGVlckNv
bm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6On5EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVy
SW50ZXJuYWwoKQoreworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJ
bnRlcm5hbDo6cHJvZHVjZUluaXRpYWxPZmZlcihjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0b3JW
ZWN0b3ImIHBlbmRpbmdBZGRTdHJlYW1zKQoreworICAgIGlmIChtX3dlYkhhbmRsZXIpCisgICAg
ICAgIG1fd2ViSGFuZGxlci0+cHJvZHVjZUluaXRpYWxPZmZlcihwZW5kaW5nQWRkU3RyZWFtcyk7
Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOjpoYW5k
bGVJbml0aWFsT2ZmZXIoY29uc3QgU3RyaW5nJiBzZHApCit7CisgICAgaWYgKG1fd2ViSGFuZGxl
cikKKyAgICAgICAgbV93ZWJIYW5kbGVyLT5oYW5kbGVJbml0aWFsT2ZmZXIoc2RwKTsKK30KKwor
dm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OnByb2Nlc3NTRFAo
Y29uc3QgU3RyaW5nJiBzZHApCit7CisgICAgaWYgKG1fd2ViSGFuZGxlcikKKyAgICAgICAgbV93
ZWJIYW5kbGVyLT5wcm9jZXNzU0RQKHNkcCk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25u
ZWN0aW9uSGFuZGxlckludGVybmFsOjpwcm9jZXNzUGVuZGluZ1N0cmVhbXMoY29uc3QgTWVkaWFT
dHJlYW1EZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5nQWRkU3RyZWFtcywgY29uc3QgTWVkaWFTdHJl
YW1EZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5nUmVtb3ZlU3RyZWFtcykKK3sKKyAgICBpZiAobV93
ZWJIYW5kbGVyKQorICAgICAgICBtX3dlYkhhbmRsZXItPnByb2Nlc3NQZW5kaW5nU3RyZWFtcyhw
ZW5kaW5nQWRkU3RyZWFtcywgcGVuZGluZ1JlbW92ZVN0cmVhbXMpOworfQorCit2b2lkIERlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6c2VuZERhdGFTdHJlYW1NZXNzYWdl
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKG1fd2ViSGFuZGxl
cikKKyAgICAgICAgbV93ZWJIYW5kbGVyLT5zZW5kRGF0YVN0cmVhbU1lc3NhZ2UoZGF0YSwgbGVu
Z3RoKTsKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6
OnN0b3AoKQoreworICAgIGlmIChtX3dlYkhhbmRsZXIpCisgICAgICAgIG1fd2ViSGFuZGxlci0+
c3RvcCgpOworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5h
bDo6ZGlkQ29tcGxldGVJQ0VQcm9jZXNzaW5nKCkKK3sKKyAgICBpZiAobV93ZWJIYW5kbGVyKQor
ICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVJQ0VQcm9jZXNzaW5nKCk7Cit9CisKK3ZvaWQg
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOjpkaWRHZW5lcmF0ZVNEUChj
b25zdCBXZWJLaXQ6OldlYlN0cmluZyYgc2RwKQoreworICAgIGlmIChtX3dlYkhhbmRsZXIpCisg
ICAgICAgIG1fY2xpZW50LT5kaWRHZW5lcmF0ZVNEUChzZHApOworfQorCit2b2lkIERlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6ZGlkUmVjZWl2ZURhdGFTdHJlYW1NZXNz
YWdlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKG1fd2ViSGFu
ZGxlcikKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2FnZShkYXRh
LCBsZW5ndGgpOworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRl
cm5hbDo6ZGlkQWRkUmVtb3RlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yJiB3ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpCit7CisgICAgaWYgKG1fd2ViSGFuZGxl
cikKKyAgICAgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZVN0cmVhbSh3ZWJNZWRpYVN0cmVhbURl
c2NyaXB0b3IpOworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRl
cm5hbDo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yJiB3ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpCit7CisgICAgaWYgKG1fd2ViSGFu
ZGxlcikKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlbW92ZVJlbW90ZVN0cmVhbSh3ZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9icmlkZ2UvRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVy
SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kN2ZhYjdmNzMwODEyZDBmZTI0Nzc5YmJmYmZlNGU2ZDQ1
NjU2MDliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2Uv
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmgKQEAgLTAsMCArMSw4MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsX2gKKyNkZWZp
bmUgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsX2gKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCIKKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI7CitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJNZWRpYVN0
cmVhbURlc2NyaXB0b3I7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDsKKworY2xhc3MgRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uSGFuZGxlckludGVybmFsIDogcHVibGljIFdlYktpdDo6V2ViUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25I
YW5kbGVySW50ZXJuYWwoRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCosIGNv
bnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSk7
CisgICAgfkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbCgpOworCisgICAg
dmlydHVhbCB2b2lkIHByb2R1Y2VJbml0aWFsT2ZmZXIoY29uc3QgTWVkaWFTdHJlYW1EZXNjcmlw
dG9yVmVjdG9yJiBwZW5kaW5nQWRkU3RyZWFtcyk7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUlu
aXRpYWxPZmZlcihjb25zdCBTdHJpbmcmIHNkcCk7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NT
RFAoY29uc3QgU3RyaW5nJiBzZHApOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzUGVuZGluZ1N0
cmVhbXMoY29uc3QgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5nQWRkU3RyZWFt
cywgY29uc3QgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5nUmVtb3ZlU3RyZWFt
cyk7CisgICAgdmlydHVhbCB2b2lkIHNlbmREYXRhU3RyZWFtTWVzc2FnZShjb25zdCBjaGFyKiBk
YXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworCisgICAgLy8g
V2ViS2l0OjpXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCisg
ICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRHZW5lcmF0ZVNEUChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgc2RwKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVTdHJlYW0oY29u
c3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yJik7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYktpdDo6V2ViUGVlckNvbm5lY3Rpb25I
YW5kbGVyPiBtX3dlYkhhbmRsZXI7CisgICAgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gRGVwcmVjYXRlZFBlZXJDb25u
ZWN0aW9uSGFuZGxlckludGVybmFsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL2JyaWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjNTliMmQ0NmNjMmM0NzA0N2RlN2ZiZDJiZGEyMzI2YjFkZGRmOTg1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKLQotI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uSGFuZGxlci5oIgotCi0jaW5jbHVkZSAi
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25I
YW5kbGVySW50ZXJuYWwuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3duUHRyPFBl
ZXJDb25uZWN0aW9uSGFuZGxlcj4gUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGUoUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmln
dXJhdGlvbiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFBlZXJDb25uZWN0aW9uSGFuZGxlcihjbGllbnQsIHNlcnZlckNvbmZpZ3VyYXRpb24sIHVz
ZXJuYW1lKSk7Ci19Ci0KLVBlZXJDb25uZWN0aW9uSGFuZGxlcjo6UGVlckNvbm5lY3Rpb25IYW5k
bGVyKFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHNl
cnZlckNvbmZpZ3VyYXRpb24sIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUpCi0gICAgOiBtX3ByaXZh
dGUoYWRvcHRQdHIobmV3IFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsKGNsaWVudCwgc2Vy
dmVyQ29uZmlndXJhdGlvbiwgdXNlcm5hbWUpKSkKLXsKLX0KLQotUGVlckNvbm5lY3Rpb25IYW5k
bGVyOjp+UGVlckNvbm5lY3Rpb25IYW5kbGVyKCkKLXsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlv
bkhhbmRsZXI6OnByb2R1Y2VJbml0aWFsT2ZmZXIoY29uc3QgTWVkaWFTdHJlYW1EZXNjcmlwdG9y
VmVjdG9yJiBwZW5kaW5nQWRkU3RyZWFtcykKLXsKLSAgICBtX3ByaXZhdGUtPnByb2R1Y2VJbml0
aWFsT2ZmZXIocGVuZGluZ0FkZFN0cmVhbXMpOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uSGFu
ZGxlcjo6aGFuZGxlSW5pdGlhbE9mZmVyKGNvbnN0IFN0cmluZyYgc2RwKQotewotICAgIG1fcHJp
dmF0ZS0+aGFuZGxlSW5pdGlhbE9mZmVyKHNkcCk7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25I
YW5kbGVyOjpwcm9jZXNzU0RQKGNvbnN0IFN0cmluZyYgc2RwKQotewotICAgIG1fcHJpdmF0ZS0+
cHJvY2Vzc1NEUChzZHApOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uSGFuZGxlcjo6cHJvY2Vz
c1BlbmRpbmdTdHJlYW1zKGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciYgcGVuZGlu
Z0FkZFN0cmVhbXMsIGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciYgcGVuZGluZ1Jl
bW92ZVN0cmVhbXMpCi17Ci0gICAgbV9wcml2YXRlLT5wcm9jZXNzUGVuZGluZ1N0cmVhbXMocGVu
ZGluZ0FkZFN0cmVhbXMsIHBlbmRpbmdSZW1vdmVTdHJlYW1zKTsKLX0KLQotdm9pZCBQZWVyQ29u
bmVjdGlvbkhhbmRsZXI6OnNlbmREYXRhU3RyZWFtTWVzc2FnZShjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoKQotewotICAgIG1fcHJpdmF0ZS0+c2VuZERhdGFTdHJlYW1NZXNzYWdlKGRh
dGEsIGxlbmd0aCk7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzdG9wKCkKLXsK
LSAgICBtX3ByaXZhdGUtPnN0b3AoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhmNjFmN2YwYmJjMDdhZTRmZDBjODlh
N2E1NDM4NzVjMWUyZjk2Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRs
ZXJJbnRlcm5hbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJQZWVyQ29u
bmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5oIgotCi0jaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJXZWJL
aXQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKLSNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFs
OjpQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbChQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGll
bnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb25zdCBTdHJp
bmcmIHVzZXJuYW1lKQotICAgIDogbV9jbGllbnQoY2xpZW50KQotewotICAgIEFTU0VSVChtX2Ns
aWVudCk7Ci0gICAgbV93ZWJIYW5kbGVyID0gYWRvcHRQdHIoV2ViS2l0Ojp3ZWJLaXRQbGF0Zm9y
bVN1cHBvcnQoKS0+Y3JlYXRlUGVlckNvbm5lY3Rpb25IYW5kbGVyKHRoaXMpKTsKLSAgICAvLyBG
SVhNRTogV2hlbiB0aGVyZSBpcyBzb21lIGVycm9yIHJlcG9ydGluZyBhdmFsaWFibGUgaW4gdGhl
IFBlZXJDb25uZWN0aW9uIG9iamVjdCByZXBvcnQKLSAgICAvLyBpZiB3ZSBkaWRuJ3QgZ2V0IGEg
V2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyIGluc3RhbmNlLgotCi0gICAgaWYgKG1fd2ViSGFuZGxl
cikgewotICAgICAgICAvLyBEdWFsIGNhbGxzIGR1ZSB0byBBUEkgY2hhbmdlCi0gICAgICAgIG1f
d2ViSGFuZGxlci0+aW5pdGlhbGl6ZShzZXJ2ZXJDb25maWd1cmF0aW9uLCB1c2VybmFtZSk7Ci0K
LSAgICAgICAgLy8gREVQUkVDQVRFRAotICAgICAgICBtX3dlYkhhbmRsZXItPmluaXRpYWxpemUo
c2VydmVyQ29uZmlndXJhdGlvbiwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodXNl
cm5hbWUpKTsKLSAgICB9Ci19Ci0KLVBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOjp+UGVl
ckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwoKQotewotfQotCi12b2lkIFBlZXJDb25uZWN0aW9u
SGFuZGxlckludGVybmFsOjpwcm9kdWNlSW5pdGlhbE9mZmVyKGNvbnN0IE1lZGlhU3RyZWFtRGVz
Y3JpcHRvclZlY3RvciYgcGVuZGluZ0FkZFN0cmVhbXMpCi17Ci0gICAgaWYgKG1fd2ViSGFuZGxl
cikKLSAgICAgICAgbV93ZWJIYW5kbGVyLT5wcm9kdWNlSW5pdGlhbE9mZmVyKHBlbmRpbmdBZGRT
dHJlYW1zKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6aGFuZGxl
SW5pdGlhbE9mZmVyKGNvbnN0IFN0cmluZyYgc2RwKQotewotICAgIGlmIChtX3dlYkhhbmRsZXIp
Ci0gICAgICAgIG1fd2ViSGFuZGxlci0+aGFuZGxlSW5pdGlhbE9mZmVyKHNkcCk7Ci19Ci0KLXZv
aWQgUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OnByb2Nlc3NTRFAoY29uc3QgU3RyaW5n
JiBzZHApCi17Ci0gICAgaWYgKG1fd2ViSGFuZGxlcikKLSAgICAgICAgbV93ZWJIYW5kbGVyLT5w
cm9jZXNzU0RQKHNkcCk7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6
OnByb2Nlc3NQZW5kaW5nU3RyZWFtcyhjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3Im
IHBlbmRpbmdBZGRTdHJlYW1zLCBjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3ImIHBl
bmRpbmdSZW1vdmVTdHJlYW1zKQotewotICAgIGlmIChtX3dlYkhhbmRsZXIpCi0gICAgICAgIG1f
d2ViSGFuZGxlci0+cHJvY2Vzc1BlbmRpbmdTdHJlYW1zKHBlbmRpbmdBZGRTdHJlYW1zLCBwZW5k
aW5nUmVtb3ZlU3RyZWFtcyk7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJu
YWw6OnNlbmREYXRhU3RyZWFtTWVzc2FnZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3Ro
KQotewotICAgIGlmIChtX3dlYkhhbmRsZXIpCi0gICAgICAgIG1fd2ViSGFuZGxlci0+c2VuZERh
dGFTdHJlYW1NZXNzYWdlKGRhdGEsIGxlbmd0aCk7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25I
YW5kbGVySW50ZXJuYWw6OnN0b3AoKQotewotICAgIGlmIChtX3dlYkhhbmRsZXIpCi0gICAgICAg
IG1fd2ViSGFuZGxlci0+c3RvcCgpOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uSGFuZGxlcklu
dGVybmFsOjpkaWRDb21wbGV0ZUlDRVByb2Nlc3NpbmcoKQotewotICAgIGlmIChtX3dlYkhhbmRs
ZXIpCi0gICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZUlDRVByb2Nlc3NpbmcoKTsKLX0KLQot
dm9pZCBQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6ZGlkR2VuZXJhdGVTRFAoY29uc3Qg
V2ViS2l0OjpXZWJTdHJpbmcmIHNkcCkKLXsKLSAgICBpZiAobV93ZWJIYW5kbGVyKQotICAgICAg
ICBtX2NsaWVudC0+ZGlkR2VuZXJhdGVTRFAoc2RwKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlv
bkhhbmRsZXJJbnRlcm5hbDo6ZGlkUmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIq
IGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKG1fd2ViSGFuZGxlcikKLSAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2FnZShkYXRhLCBsZW5ndGgpOwotfQot
Ci12b2lkIFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOjpkaWRBZGRSZW1vdGVTdHJlYW0o
Y29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImIHdlYk1lZGlhU3RyZWFtRGVz
Y3JpcHRvcikKLXsKLSAgICBpZiAobV93ZWJIYW5kbGVyKQotICAgICAgICBtX2NsaWVudC0+ZGlk
QWRkUmVtb3RlU3RyZWFtKHdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcik7Ci19Ci0KLXZvaWQgUGVl
ckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OmRpZFJlbW92ZVJlbW90ZVN0cmVhbShjb25zdCBX
ZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYgd2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
KQotewotICAgIGlmIChtX3dlYkhhbmRsZXIpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZW1vdmVS
ZW1vdGVTdHJlYW0od2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlckludGVy
bmFsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRs
ZXJJbnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTdmZDk2YjViNWM3
MWY5YWI5YzBhM2UxZWVjZmNiN2FmNTBjYWIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL1BlZXJDb25u
ZWN0aW9uSGFuZGxlckludGVybmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbF9oCi0jZGVmaW5lIFBlZXJDb25uZWN0
aW9uSGFuZGxlckludGVybmFsX2gKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNs
dWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXI7Ci1j
bGFzcyBXZWJTdHJpbmc7Ci1jbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7Ci19Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Owot
Ci1jbGFzcyBQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbCA6IHB1YmxpYyBXZWJLaXQ6Oldl
YlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgUGVlckNvbm5lY3Rp
b25IYW5kbGVySW50ZXJuYWwoUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiwgY29uc3QgU3Ry
aW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lKTsKLSAgICB+
UGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBwcm9k
dWNlSW5pdGlhbE9mZmVyKGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciYgcGVuZGlu
Z0FkZFN0cmVhbXMpOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJbml0aWFsT2ZmZXIoY29uc3Qg
U3RyaW5nJiBzZHApOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzU0RQKGNvbnN0IFN0cmluZyYg
c2RwKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1BlbmRpbmdTdHJlYW1zKGNvbnN0IE1lZGlh
U3RyZWFtRGVzY3JpcHRvclZlY3RvciYgcGVuZGluZ0FkZFN0cmVhbXMsIGNvbnN0IE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvclZlY3RvciYgcGVuZGluZ1JlbW92ZVN0cmVhbXMpOwotICAgIHZpcnR1YWwg
dm9pZCBzZW5kRGF0YVN0cmVhbU1lc3NhZ2UoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0
aCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKLQotICAgIC8vIFdlYktpdDo6V2ViUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBk
aWRDb21wbGV0ZUlDRVByb2Nlc3NpbmcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkR2VuZXJhdGVT
RFAoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHNkcCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhU3RyZWFtTWVzc2FnZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZVJlbW90ZVN0
cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpOwotCi1wcml2YXRl
OgotICAgIE93blB0cjxXZWJLaXQ6OldlYlBlZXJDb25uZWN0aW9uSGFuZGxlcj4gbV93ZWJIYW5k
bGVyOwotICAgIFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogbV9jbGllbnQ7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQot
Ci0jZW5kaWYgLy8gUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWxfaApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJiYTll
ZjNiOTMzMjhkZjdlOWFiMjM0ZGM2NDdlNTc5YzlkNTNiNzUuLjljODE2MDY4YmM4ZDlkZDYzNGQ0
NzZiZTBlZjJlYjAwMTM2MjQ3OGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wMy0wOSAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IFJlbmFtZSBQZWVyQ29ubmVjdGlvbiB0byBEZXByZWNhdGVkUGVlckNvbm5lY3Rp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjky
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlyc3Qg
cGF0Y2ggaW4gYSBzZXJpZXMgb2YgcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIFBlZXJDb25uZWN0aW9u
IGZyb20gUk9BUCB0byBKU0VQLAorICAgICAgICBzZWUgYnVnIDgwNTg5IGZvciBtb3JlIGluZm9y
bWF0aW9uLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9wZWVyY29ubmVjdGlvbi1BdHRy
aWJ1dGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL3BlZXJjb25u
ZWN0aW9uLWFkZHN0cmVhbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVh
bS9wZWVyY29ubmVjdGlvbi1hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9tZWRpYXN0cmVhbS9wZWVyY29ubmVjdGlvbi1ldmVudGxpc3RlbmVyLW9wdGlvbmFsLWFy
Z3VtZW50Lmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9wZWVyY29ubmVjdGlvbi1t
ZWRpYXN0cmVhbWxpc3QuaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL3BlZXJjb25u
ZWN0aW9uLXJlbW92ZXN0cmVhbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0
cmVhbS9zY3JpcHQtdGVzdHMvQXR0cmlidXRlcy5qczoKKyAgICAgICAgKiBmYXN0L21lZGlhc3Ry
ZWFtL3NjcmlwdC10ZXN0cy9hcmd1bWVudC10eXBlcy5qczoKKyAgICAgICAgKiBmYXN0L21lZGlh
c3RyZWFtL3NjcmlwdC10ZXN0cy9wZWVyY29ubmVjdGlvbi1hZGRzdHJlYW0uanM6CisgICAgICAg
ICogZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvcGVlcmNvbm5lY3Rpb24tcmVtb3Zlc3Ry
ZWFtLmpzOgorCiAyMDEyLTAzLTA5ICBNYXJqYSBIw7ZsdHTDpCAgPG1hcmphQGdvb2dsZS5jb20+
CiAKICAgICAgICAgRmlsZUlucHV0VHlwZSBkb2Vzbid0IHN1cHBvcnQgKHNhdmV8cmVzdG9yZSlG
b3JtQ29udHJvbFN0YXRlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L3BlZXJjb25uZWN0aW9uLUF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9wZWVyY29ubmVjdGlvbi1BdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRl
eCBiNjVjZjJiZjUyZjNhOTFkODk3NDc2YTI1MDI4MTNhNTQwYjRmYWYwLi5jNDIxM2NlMzU1NjRi
ZDVlMTRkZDUxMzU3ZGI5ZWJmNDY0NTllMzk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0aW9uLUF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vcGVlcmNvbm5lY3Rpb24tQXR0cmlidXRlcy1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1UZXN0cyBQZWVyVG9QZWVyQ29ubmVjdGlvbiBy
ZWxhdGVkIEF0dHJpYnV0ZXMgYWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cudzMub3JnL1RSL3dlYnJ0
Yy8KK1Rlc3RzIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbiByZWxhdGVkIEF0dHJpYnV0ZXMgYWNj
b3JkaW5nIHRvIGh0dHA6Ly93d3cudzMub3JnL1RSL3dlYnJ0Yy8KIAogT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3Bl
ZXJjb25uZWN0aW9uLWFkZHN0cmVhbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL3BlZXJjb25uZWN0aW9uLWFkZHN0cmVhbS1leHBlY3RlZC50eHQKaW5kZXggOTY1
NDNiYjIwMGZhYWUwZjAyNzhhZTliY2VhOTEyMWIxNTY1MGU3MC4uMTk2ZjJkNjJlYjY4NWVjZTA5
OWRlZjY3ZjQ1NjlhYTZiNWJhZThkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9wZWVyY29ubmVjdGlvbi1hZGRzdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vcGVlcmNvbm5lY3Rpb24tYWRkc3RyZWFtLWV4cGVjdGVk
LnR4dApAQCAtMSw0ICsxLDQgQEAKLVRlc3RzIFBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0oKS4K
K1Rlc3RzIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6YWRkU3RyZWFtKCkuCiAKIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9wZWVyY29ubmVjdGlvbi1hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0aW9uLWFyZ3VtZW50LXR5cGVzLWV4cGVj
dGVkLnR4dAppbmRleCBmNDFjYWU0MzAyM2I4N2YxN2M0NDY4MTdjYmIyNWMwYjIxNjNmZGJjLi5j
NTc2Y2JkNmUyYjU1NTU1ZjkxOWJiOGYyZmMwY2M2ODM0ZGQ2YjM2IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0aW9uLWFyZ3VtZW50LXR5cGVzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0
aW9uLWFyZ3VtZW50LXR5cGVzLWV4cGVjdGVkLnR4dApAQCAtMSw1NCArMSw1NCBAQAotVGVzdHMg
dGhlIGFjY2VwdGFibGUgdHlwZXMgZm9yIGFyZ3VtZW50cyB0byBtZXRob2QgZm9yIFBlZXJUb1Bl
ZXJDb25uZWN0aW9uIGRlZmluYXRpb24uCitUZXN0cyB0aGUgYWNjZXB0YWJsZSB0eXBlcyBmb3Ig
YXJndW1lbnRzIHRvIG1ldGhvZCBmb3IgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uIGRlZmluYXRp
b24uCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIHR5cGVvZiB3ZWJraXRQ
ZWVyQ29ubmVjdGlvbj09ICdmdW5jdGlvbicgaXMgdHJ1ZQotUEFTUyBuZXcgd2Via2l0UGVlckNv
bm5lY3Rpb24oKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50
cy4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOIDIwMy4wLjExMy4yOjI0Nzgi
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1Mg
bmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgbmV3
IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOIGV4YW1wbGUubmV0IikgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29u
bmVjdGlvbigiU1RVTlMgMjAzLjAuMTEzLjI6MjQ3OCIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJy
b3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24o
IlNUVU5TIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJT
VFVOUyBleGFtcGxlLm5ldCIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2gg
YXJndW1lbnRzLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gMjAzLjAuMTEz
LjI6MjQ3OCIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRz
LgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gcmVsYXkuZXhhbXBsZS5uZXQ6
MzQ3OCIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgot
UEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gZXhhbXBsZS5uZXQiKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgbmV3IHdlYmtp
dFBlZXJDb25uZWN0aW9uKCJUVVJOUyAyMDMuMC4xMTMuMjoyNDc4IikgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29u
bmVjdGlvbigiVFVSTlMgcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5l
Y3Rpb24oIlRVUk5TIGV4YW1wbGUubmV0IikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90
IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTiBO
T05FIikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1Q
QVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMgTk9ORSIpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBuZXcgd2Via2l0UGVlckNv
bm5lY3Rpb24oIlNUVU4gTk9ORSIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91
Z2ggYXJndW1lbnRzLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU5TIE5PTkUi
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1Mg
bmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJ1bmRlZmluZWQiKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0
aW9uKCJudWxsIikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVu
dHMuCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbih7fSkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVj
dGlvbig0MikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMu
Ci1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbihJbmZpbml0eSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29u
bmVjdGlvbigtSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2gg
YXJndW1lbnRzLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oZW1wdHlGdW5jdGlvbikg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG5l
dyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiAyMDMuMC4xMTMuMjoyNDc4IixlbXB0eUZ1bmN0
aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0
aW9uKCJTVFVOIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiLGVtcHR5RnVuY3Rpb24pIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU4gZXhh
bXBsZS5uZXQiLGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBu
ZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU5TIDIwMy4wLjExMy4yOjI0NzgiLGVtcHR5RnVu
Y3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5l
Y3Rpb24oIlNUVU5TIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiLGVtcHR5RnVuY3Rpb24pIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU5T
IGV4YW1wbGUubmV0IixlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBB
U1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJUVVJOIDIwMy4wLjExMy4yOjI0NzgiLGVtcHR5
RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBuZXcgd2Via2l0UGVlckNv
bm5lY3Rpb24oIlRVUk4gcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIsZW1wdHlGdW5jdGlvbikgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVS
TiBleGFtcGxlLm5ldCIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1Q
QVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMgMjAzLjAuMTEzLjI6MjQ3OCIsZW1w
dHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5ldyB3ZWJraXRQZWVy
Q29ubmVjdGlvbigiVFVSTlMgcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIsZW1wdHlGdW5jdGlvbikg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigi
VFVSTlMgZXhhbXBsZS5uZXQiLGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gTk9ORSIsZW1wdHlGdW5jdGlv
bikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlv
bigiVFVSTlMgTk9ORSIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1Q
QVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiBOT05FIixlbXB0eUZ1bmN0aW9uKSBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJT
VFVOUyBOT05FIixlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1Mg
bmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJUVVJOIE5PTkUiLHVuZGVmaW5lZCkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1Mg
bmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJUVVJOUyBOT05FIix7fSkgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiBOT05FIiw0Mikg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOUyBOT05FIixJbmZpbml0eSkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOUyBOT05FIiwtSW5maW5pdHkp
IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24g
MTcuCitQQVNTIHR5cGVvZiB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb249PSAnZnVuY3Rp
b24nIGlzIHRydWUKK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcg
d2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOIDIwMy4wLjExMy4yOjI0NzgiKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3
IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTiByZWxheS5leGFtcGxlLm5ldDoz
NDc4IikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQ
QVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU4gZXhhbXBsZS5uZXQi
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1Mg
bmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTlMgMjAzLjAuMTEzLjI6MjQ3
OCIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFT
UyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOUyByZWxheS5leGFtcGxl
Lm5ldDozNDc4IikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVu
dHMuCitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU5TIGV4YW1w
bGUubmV0IikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMu
CitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk4gMjAzLjAuMTEz
LjI6MjQ3OCIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRz
LgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJUVVJOIHJlbGF5LmV4
YW1wbGUubmV0OjM0NzgiKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFy
Z3VtZW50cy4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTiBl
eGFtcGxlLm5ldCIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJUVVJOUyAyMDMu
MC4xMTMuMjoyNDc4IikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1
bWVudHMuCitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk5TIHJl
bGF5LmV4YW1wbGUubmV0OjM0NzgiKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5v
dWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigi
VFVSTlMgZXhhbXBsZS5uZXQiKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cy4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVS
TiBOT05FIikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMu
CitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk5TIE5PTkUiKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3
IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTiBOT05FIikgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3ZWJraXREZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU5TIE5PTkUiKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbigidW5kZWZpbmVkIikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVu
b3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24o
Im51bGwiKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4K
K1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbih7fSkgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3ZWJraXREZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb24oNDIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBl
bm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
KEluZmluaXR5KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50
cy4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigtSW5maW5pdHkpIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcg
d2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgd2Via2l0RGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOIDIwMy4wLjExMy4yOjI0NzgiLGVtcHR5RnVuY3Rp
b24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uKCJTVFVOIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiLGVtcHR5RnVuY3Rpb24p
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uKCJTVFVOIGV4YW1wbGUubmV0IixlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RV
TlMgMjAzLjAuMTEzLjI6MjQ3OCIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU5TIHJlbGF5
LmV4YW1wbGUubmV0OjM0NzgiLGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOUyBleGFtcGxl
Lm5ldCIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3
ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk4gMjAzLjAuMTEzLjI6MjQ3OCIsZW1w
dHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXREZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk4gcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIsZW1wdHlG
dW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXREZXByZWNh
dGVkUGVlckNvbm5lY3Rpb24oIlRVUk4gZXhhbXBsZS5uZXQiLGVtcHR5RnVuY3Rpb24pIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0
aW9uKCJUVVJOUyAyMDMuMC4xMTMuMjoyNDc4IixlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVS
TlMgcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk5T
IGV4YW1wbGUubmV0IixlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BB
U1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTiBOT05FIixlbXB0eUZ1
bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbigiVFVSTlMgTk9ORSIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNU
VU4gTk9ORSIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5l
dyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU5TIE5PTkUiLGVtcHR5RnVuY3Rp
b24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uKCJUVVJOIE5PTkUiLHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEVycm9y
OiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdERl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTlMgTk9ORSIse30pIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOIE5P
TkUiLDQyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhj
ZXB0aW9uIDE3LgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVO
UyBOT05FIixJbmZpbml0eSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VS
UjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbigiU1RVTlMgTk9ORSIsLUluZmluaXR5KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL3BlZXJjb25uZWN0aW9uLWV2ZW50bGlzdGVuZXItb3B0aW9uYWwtYXJndW1lbnQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vcGVlcmNvbm5lY3Rpb24tZXZlbnRs
aXN0ZW5lci1vcHRpb25hbC1hcmd1bWVudC5odG1sCmluZGV4IDYxNzVlZTcyOTQ4MGFkNjRmYWY3
NzE0ZTRlZjdiYzNiY2NjNDYzYjcuLmNlYjI2MjUzNDNjZWEzOWI2NTcxNTk5NzQxN2MwMzEzZGMy
Y2ZhNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vcGVlcmNvbm5l
Y3Rpb24tZXZlbnRsaXN0ZW5lci1vcHRpb25hbC1hcmd1bWVudC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vcGVlcmNvbm5lY3Rpb24tZXZlbnRsaXN0ZW5lci1vcHRpb25h
bC1hcmd1bWVudC5odG1sCkBAIC0xMCw3ICsxMCw3IEBACiA8c2NyaXB0PgogZGVzY3JpcHRpb24o
IlRoaXMgdGVzdCBjb25maXJtcyBpZiB0aGUgdGhpcmQgYXJndW1lbnQgb2YgYWRkRXZlbnRMaXN0
ZW5lcigpIGFuZCByZW1vdmVFdmVudExpc3RlbmVyKCkgaXMgb3B0aW9uYWwuIik7CiAKLXZhciBw
YyA9IG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigic29tZS5zZXJ2ZXIuY29tIiwgZnVuY3Rpb24o
KSB7fSk7Cit2YXIgcGMgPSBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJzb21l
LnNlcnZlci5jb20iLCBmdW5jdGlvbigpIHt9KTsKIHNob3VsZEJlKCdwYy5hZGRFdmVudExpc3Rl
bmVyKCJmb28iLCBmdW5jdGlvbigpIHt9KScsICd1bmRlZmluZWQnKTsKIHNob3VsZEJlKCdwYy5h
ZGRFdmVudExpc3RlbmVyKCJmb28iLCBmdW5jdGlvbigpIHt9LCBmYWxzZSknLCAndW5kZWZpbmVk
Jyk7CiBzaG91bGRCZSgncGMuYWRkRXZlbnRMaXN0ZW5lcigiZm9vIiwgZnVuY3Rpb24oKSB7fSwg
dHJ1ZSknLCAndW5kZWZpbmVkJyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL3BlZXJjb25uZWN0aW9uLW1lZGlhc3RyZWFtbGlzdC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9wZWVyY29ubmVjdGlvbi1tZWRpYXN0cmVhbWxpc3QuaHRtbAppbmRl
eCBhOWQ4ZTI3ZGQwYWYzN2JlYzBlZjFiOWI4ZDkzNzlmMjIxOWQ3YjdlLi4xYmFkN2ZkODRkNWZl
ODIzZDBiMGU3Zjg3Y2QwZmY5NTlkYmRhYTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0aW9uLW1lZGlhc3RyZWFtbGlzdC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vcGVlcmNvbm5lY3Rpb24tbWVkaWFzdHJlYW1saXN0
Lmh0bWwKQEAgLTExLDcgKzExLDcgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
IGNvbmZpcm1zIHRoYXQgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgb2YgTWVkaWFTdHJlYW1MaXN0IHJl
dHVybnMgdW5kZWZpbmVkLiIpOwogCi12YXIgcGMgPSBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24o
IiIsIGZ1bmN0aW9uKCkge30pOwordmFyIHBjID0gbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbigiIiwgZnVuY3Rpb24oKSB7fSk7CiAKIHNob3VsZEJlVW5kZWZpbmVkKCdwYy5sb2Nh
bFN0cmVhbXNbMHhiYWRjMGRlZF0nKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9wZWVyY29ubmVjdGlvbi1yZW1vdmVzdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9wZWVyY29ubmVjdGlvbi1yZW1vdmVzdHJlYW0tZXhw
ZWN0ZWQudHh0CmluZGV4IDBiNmUyYWQ4NzBiNmFkNGE2YjVhNWRhZDM2NGZjNzQ4ZDMzNGFhNjcu
LmE2NDJhMDA3OWQ3NmYwNTg4NjA5MDZiNWQ1NGIzZDdlZjA0Y2FkMjkgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vcGVlcmNvbm5lY3Rpb24tcmVtb3Zlc3RyZWFtLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0
aW9uLXJlbW92ZXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1UZXN0cyBQZWVy
Q29ubmVjdGlvbjo6cmVtb3ZlU3RyZWFtKCkuCitUZXN0cyBEZXByZWNhdGVkUGVlckNvbm5lY3Rp
b246OnJlbW92ZVN0cmVhbSgpLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL0F0dHJpYnV0
ZXMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9BdHRyaWJ1
dGVzLmpzCmluZGV4IGQ4NDQyYWNhMjMwZjIyOTNiMDI5YTQwN2ZiYWI1YmJlNjg1OTBiYzYuLmE1
YWFjYTg3Y2ZiMGI3MDUyNTQ5YTQ2NGYwMmVjYmY1NDc4NDQ0N2MgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL0F0dHJpYnV0ZXMuanMKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvQXR0cmlidXRlcy5qcwpA
QCAtMSw0ICsxLDQgQEAKLWRlc2NyaXB0aW9uKCJUZXN0cyBQZWVyVG9QZWVyQ29ubmVjdGlvbiBy
ZWxhdGVkIEF0dHJpYnV0ZXMgYWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cudzMub3JnL1RSL3dlYnJ0
Yy8iKTsKK2Rlc2NyaXB0aW9uKCJUZXN0cyBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24gcmVsYXRl
ZCBBdHRyaWJ1dGVzIGFjY29yZGluZyB0byBodHRwOi8vd3d3LnczLm9yZy9UUi93ZWJydGMvIik7
CiB2YXIgc3RyZWFtOwogZnVuY3Rpb24gc2hvdWxkTm90VGhyb3coZXhwcmVzc2lvbikKIHsKQEAg
LTY5LDcgKzY5LDcgQEAgZnVuY3Rpb24gZ290U3RyZWFtRmFpbGVkKGVycm9yKSB7CiB9CiAKIAot
dmFyIHBjPW5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiBOT05FIiwgZW1wdHlGdW5jdGlv
bik7Cit2YXIgcGM9bmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTiBOT05F
IiwgZW1wdHlGdW5jdGlvbik7CiAvL21ldGhvZAogc2hvdWxkQmVUcnVlQSgidHlwZW9mIHBjLmFk
ZFN0cmVhbSA9PSAnZnVuY3Rpb24nIik7CiBzaG91bGRCZVRydWVBKCJ0eXBlb2YgcGMucmVtb3Zl
U3RyZWFtID09ICdmdW5jdGlvbiciKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vc2NyaXB0LXRlc3RzL2FyZ3VtZW50LXR5cGVzLmpzIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMKaW5kZXggYzMyODRj
ODU2Mzg2MmNlMGI5NWUyZjU1ZDk4NjUxNDU5ZTc0YjExYi4uZGQ2YjQ0NGJjOGRhMzU5ZGY1NzEx
N2MzMzYyZGU0MTMxNjk0MTI2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMKQEAgLTEsNCArMSw0
IEBACi1kZXNjcmlwdGlvbigiVGVzdHMgdGhlIGFjY2VwdGFibGUgdHlwZXMgZm9yIGFyZ3VtZW50
cyB0byBtZXRob2QgZm9yIFBlZXJUb1BlZXJDb25uZWN0aW9uIGRlZmluYXRpb24uIik7CitkZXNj
cmlwdGlvbigiVGVzdHMgdGhlIGFjY2VwdGFibGUgdHlwZXMgZm9yIGFyZ3VtZW50cyB0byBtZXRo
b2QgZm9yIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbiBkZWZpbmF0aW9uLiIpOwogCiBmdW5jdGlv
biBzaG91bGROb3RUaHJvdyhleHByZXNzaW9uKQogewpAQCAtMzEsNTggKzMxLDU4IEBAIE9iamVj
dFRocm93aW5nRXhjZXB0aW9uLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogfQog
dmFyIG9iamVjdFRocm93aW5nRXhjZXB0aW9uID0gbmV3IE9iamVjdFRocm93aW5nRXhjZXB0aW9u
KCk7CiAKLXNob3VsZEJlVHJ1ZSgidHlwZW9mIHdlYmtpdFBlZXJDb25uZWN0aW9uPT0gJ2Z1bmN0
aW9uJyIpOworc2hvdWxkQmVUcnVlKCJ0eXBlb2Ygd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0
aW9uPT0gJ2Z1bmN0aW9uJyIpOwogCiAvLyAwIEFyZ3VtZW50Ci10ZXN0KCduZXcgd2Via2l0UGVl
ckNvbm5lY3Rpb24oKScsIHRydWUsJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsK
K3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oKScsIHRydWUsJ1R5cGVF
cnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKIAotLy8gMSBBcmd1bWVudCAobmV3IHdlYmtp
dFBlZXJDb25uZWN0aW9uIHJlcXVpcmVzIGF0IGxlYXN0IDIgYXJndW1lbnRzKS4KLXRlc3QoJ25l
dyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiAyMDMuMC4xMTMuMjoyNDc4IiknLCB0cnVlLCAn
VHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwotdGVzdCgnbmV3IHdlYmtpdFBlZXJD
b25uZWN0aW9uKCJTVFVOIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiKScsIHRydWUsICdUeXBlRXJy
b3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rp
b24oIlNUVU4gZXhhbXBsZS5uZXQiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJn
dW1lbnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU5TIDIwMy4wLjEx
My4yOjI0NzgiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Ci10
ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU5TIHJlbGF5LmV4YW1wbGUubmV0OjM0
NzgiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Ci10ZXN0KCdu
ZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU5TIGV4YW1wbGUubmV0IiknLCB0cnVlLCAnVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwotdGVzdCgnbmV3IHdlYmtpdFBlZXJDb25u
ZWN0aW9uKCJUVVJOIDIwMy4wLjExMy4yOjI0NzgiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBl
bm91Z2ggYXJndW1lbnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4g
cmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBh
cmd1bWVudHMnKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTiBleGFtcGxl
Lm5ldCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKLXRlc3Qo
J25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMgMjAzLjAuMTEzLjI6MjQ3OCIpJywgdHJ1
ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKLXRlc3QoJ25ldyB3ZWJraXRQ
ZWVyQ29ubmVjdGlvbigiVFVSTlMgcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIpJywgdHJ1ZSwgJ1R5
cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29u
bmVjdGlvbigiVFVSTlMgZXhhbXBsZS5uZXQiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91
Z2ggYXJndW1lbnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gTk9O
RSIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKLXRlc3QoJ25l
dyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMgTk9ORSIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjog
Tm90IGVub3VnaCBhcmd1bWVudHMnKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigi
U1RVTiBOT05FIiknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwot
dGVzdCgnbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOUyBOT05FIiknLCB0cnVlLCAnVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwotdGVzdCgnbmV3IHdlYmtpdFBlZXJDb25u
ZWN0aW9uKCJ1bmRlZmluZWQiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIm51bGwiKScsIHRydWUsICdU
eXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNv
bm5lY3Rpb24oe30pJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsK
LXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbig0MiknLCB0cnVlLCAnVHlwZUVycm9yOiBO
b3QgZW5vdWdoIGFyZ3VtZW50cycpOwotdGVzdCgnbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKElu
ZmluaXR5KScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Ci10ZXN0
KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oLUluZmluaXR5KScsIHRydWUsICdUeXBlRXJyb3I6
IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24o
ZW1wdHlGdW5jdGlvbiknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycp
OworLy8gMSBBcmd1bWVudCAobmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbiByZXF1
aXJlcyBhdCBsZWFzdCAyIGFyZ3VtZW50cykuCit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uKCJTVFVOIDIwMy4wLjExMy4yOjI0NzgiKScsIHRydWUsICdUeXBlRXJyb3I6
IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uKCJTVFVOIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiKScsIHRydWUsICdUeXBlRXJy
b3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uKCJTVFVOIGV4YW1wbGUubmV0IiknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3Qg
ZW5vdWdoIGFyZ3VtZW50cycpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbigiU1RVTlMgMjAzLjAuMTEzLjI6MjQ3OCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVu
b3VnaCBhcmd1bWVudHMnKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rp
b24oIlNUVU5TIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiKScsIHRydWUsICdUeXBlRXJyb3I6IE5v
dCBlbm91Z2ggYXJndW1lbnRzJyk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25u
ZWN0aW9uKCJTVFVOUyBleGFtcGxlLm5ldCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMnKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24o
IlRVUk4gMjAzLjAuMTEzLjI6MjQ3OCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBh
cmd1bWVudHMnKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRV
Uk4gcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMnKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24o
IlRVUk4gZXhhbXBsZS5uZXQiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzJyk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJUVVJOUyAy
MDMuMC4xMTMuMjoyNDc4IiknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50
cycpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTlMgcmVs
YXkuZXhhbXBsZS5uZXQ6MzQ3OCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1
bWVudHMnKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk5T
IGV4YW1wbGUubmV0IiknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycp
OwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTiBOT05FIikn
LCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwordGVzdCgnbmV3IHdl
YmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTlMgTk9ORSIpJywgdHJ1ZSwgJ1R5cGVF
cnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVk
UGVlckNvbm5lY3Rpb24oIlNUVU4gTk9ORSIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMnKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24o
IlNUVU5TIE5PTkUiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7
Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJ1bmRlZmluZWQiKScs
IHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Cit0ZXN0KCduZXcgd2Vi
a2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJudWxsIiknLCB0cnVlLCAnVHlwZUVycm9yOiBO
b3QgZW5vdWdoIGFyZ3VtZW50cycpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbih7fSknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwor
dGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbig0MiknLCB0cnVlLCAnVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbihJbmZpbml0eSknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cycpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigt
SW5maW5pdHkpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKK3Rl
c3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oZW1wdHlGdW5jdGlvbiknLCB0
cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwogCiAvLzIgQXJndW1lbnQK
LXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiAyMDMuMC4xMTMuMjoyNDc4Iixl
bXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigi
U1RVTiByZWxheS5leGFtcGxlLm5ldDozNDc4IixlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKLXRl
c3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiBleGFtcGxlLm5ldCIsZW1wdHlGdW5j
dGlvbiknLGZhbHNlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTlMgMjAz
LjAuMTEzLjI6MjQ3OCIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Ci10ZXN0KCduZXcgd2Via2l0
UGVlckNvbm5lY3Rpb24oIlNUVU5TIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiLGVtcHR5RnVuY3Rp
b24pJywgZmFsc2UpOwotdGVzdCgnbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOUyBleGFt
cGxlLm5ldCIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNv
bm5lY3Rpb24oIlRVUk4gMjAzLjAuMTEzLjI6MjQ3OCIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7
Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gcmVsYXkuZXhhbXBsZS5uZXQ6
MzQ3OCIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5l
Y3Rpb24oIlRVUk4gZXhhbXBsZS5uZXQiLGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwotdGVzdCgn
bmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJUVVJOUyAyMDMuMC4xMTMuMjoyNDc4IixlbXB0eUZ1
bmN0aW9uKScsIGZhbHNlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMg
cmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Ci10ZXN0KCdu
ZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk5TIGV4YW1wbGUubmV0IixlbXB0eUZ1bmN0aW9u
KScsIGZhbHNlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTiBOT05FIixl
bXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigi
VFVSTlMgTk9ORSIsZW1wdHlGdW5jdGlvbiknLGZhbHNlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVy
Q29ubmVjdGlvbigiU1RVTiBOT05FIixlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKLXRlc3QoJ25l
dyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTlMgTk9ORSIsZW1wdHlGdW5jdGlvbiknLCBmYWxz
ZSk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gTk9ORSIsdW5kZWZpbmVk
KScsICB0cnVlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMgTk9ORSIs
e30pJywgZmFsc2UpOwotdGVzdCgnbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOIE5PTkUi
LDQyKScsICB0cnVlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTlMgTk9O
RSIsSW5maW5pdHkpJywgdHJ1ZSk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNU
VU5TIE5PTkUiLC1JbmZpbml0eSknLCB0cnVlKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVk
UGVlckNvbm5lY3Rpb24oIlNUVU4gMjAzLjAuMTEzLjI6MjQ3OCIsZW1wdHlGdW5jdGlvbiknLCBm
YWxzZSk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOIHJl
bGF5LmV4YW1wbGUubmV0OjM0NzgiLGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwordGVzdCgnbmV3
IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTiBleGFtcGxlLm5ldCIsZW1wdHlG
dW5jdGlvbiknLGZhbHNlKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rp
b24oIlNUVU5TIDIwMy4wLjExMy4yOjI0NzgiLGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwordGVz
dCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTlMgcmVsYXkuZXhhbXBs
ZS5uZXQ6MzQ3OCIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Cit0ZXN0KCduZXcgd2Via2l0RGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOUyBleGFtcGxlLm5ldCIsZW1wdHlGdW5jdGlvbikn
LCBmYWxzZSk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJUVVJO
IDIwMy4wLjExMy4yOjI0NzgiLGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwordGVzdCgnbmV3IHdl
YmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTiByZWxheS5leGFtcGxlLm5ldDozNDc4
IixlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVl
ckNvbm5lY3Rpb24oIlRVUk4gZXhhbXBsZS5uZXQiLGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwor
dGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTlMgMjAzLjAuMTEz
LjI6MjQ3OCIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uKCJUVVJOUyByZWxheS5leGFtcGxlLm5ldDozNDc4IixlbXB0eUZ1
bmN0aW9uKScsIGZhbHNlKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rp
b24oIlRVUk5TIGV4YW1wbGUubmV0IixlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKK3Rlc3QoJ25l
dyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk4gTk9ORSIsZW1wdHlGdW5jdGlv
biknLCBmYWxzZSk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJU
VVJOUyBOT05FIixlbXB0eUZ1bmN0aW9uKScsZmFsc2UpOwordGVzdCgnbmV3IHdlYmtpdERlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTiBOT05FIixlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsK
K3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU5TIE5PTkUiLGVt
cHR5RnVuY3Rpb24pJywgZmFsc2UpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbigiVFVSTiBOT05FIix1bmRlZmluZWQpJywgIHRydWUpOwordGVzdCgnbmV3IHdlYmtp
dERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTlMgTk9ORSIse30pJywgZmFsc2UpOwordGVz
dCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTiBOT05FIiw0MiknLCAg
dHJ1ZSk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOUyBO
T05FIixJbmZpbml0eSknLCB0cnVlKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNv
bm5lY3Rpb24oIlNUVU5TIE5PTkUiLC1JbmZpbml0eSknLCB0cnVlKTsKIAogCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL3BlZXJjb25uZWN0
aW9uLWFkZHN0cmVhbS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRl
c3RzL3BlZXJjb25uZWN0aW9uLWFkZHN0cmVhbS5qcwppbmRleCBhNTk0MWY5ZjkzNTRjOGYyMzY1
MzJkMTM0ZTY2ZTU1YmNhODMxMzg1Li42Y2U2ZWMxNzVmMDQ3MmE2OTkxZGUxMGI0N2M2NzA1ZTFh
NDEyYWE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10
ZXN0cy9wZWVyY29ubmVjdGlvbi1hZGRzdHJlYW0uanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvcGVlcmNvbm5lY3Rpb24tYWRkc3RyZWFtLmpzCkBAIC0x
LDYgKzEsNiBAQAotZGVzY3JpcHRpb24oIlRlc3RzIFBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0o
KS4iKTsKK2Rlc2NyaXB0aW9uKCJUZXN0cyBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmFkZFN0
cmVhbSgpLiIpOwogCi12YXIgcGMgPSBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU4gc29t
ZS5zZXJ2ZXIuY29tIiwgZnVuY3Rpb24oKSB7fSk7Cit2YXIgcGMgPSBuZXcgd2Via2l0RGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOIHNvbWUuc2VydmVyLmNvbSIsIGZ1bmN0aW9uKCkge30p
OwogCiB0cnkgewogICAgIHBjLmFkZFN0cmVhbSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvcGVlcmNvbm5lY3Rpb24tcmVtb3Zlc3RyZWFt
LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvcGVlcmNvbm5l
Y3Rpb24tcmVtb3Zlc3RyZWFtLmpzCmluZGV4IDc0MDllZWU2YWM1MDUzZTY2YjU3NzE1YmMwNmJm
MWI4MDU4NjA3OTguLjQ3NzdkODQzM2NiMDRiNmI5OGIxMzNjYTA5MTZkNjY0ZDNhOWUxZTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL3BlZXJj
b25uZWN0aW9uLXJlbW92ZXN0cmVhbS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL3NjcmlwdC10ZXN0cy9wZWVyY29ubmVjdGlvbi1yZW1vdmVzdHJlYW0uanMKQEAgLTEsNiAr
MSw2IEBACi1kZXNjcmlwdGlvbigiVGVzdHMgUGVlckNvbm5lY3Rpb246OnJlbW92ZVN0cmVhbSgp
LiIpOworZGVzY3JpcHRpb24oIlRlc3RzIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6cmVtb3Zl
U3RyZWFtKCkuIik7CiAKLXZhciBwYyA9IG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiBz
b21lLnNlcnZlci5jb20iLCBmdW5jdGlvbigpIHt9KTsKK3ZhciBwYyA9IG5ldyB3ZWJraXREZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU4gc29tZS5zZXJ2ZXIuY29tIiwgZnVuY3Rpb24oKSB7
fSk7CiAKIHRyeSB7CiAgICAgcGMucmVtb3ZlU3RyZWFtKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131026</attachid>
            <date>2012-03-09 04:34:36 -0800</date>
            <delta_ts>2012-03-13 11:52:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80692-20120309133433.patch</filename>
            <type>text/plain</type>
            <size>148690</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZmZDRlMmI3M2FmMGNl
MWYxYjQ3MWJlMzNhZmU0OTI1MzE3MzI4Zi4uM2QwODc0MTIzMDkwNzM2YzY4OWQwNDQyZmI1ODRm
MmMzYzZkZjgzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTAzLTA5ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogUmVuYW1lIFBlZXJDb25uZWN0aW9uIHRvIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODA2OTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXJzdCBwYXRj
aCBpbiBhIHNlcmllcyBvZiBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgUGVlckNvbm5lY3Rpb24gZnJv
bSBST0FQIHRvIEpTRVAsCisgICAgICAgIHNlZSBidWcgODA1ODkgZm9yIG1vcmUgaW5mb3JtYXRp
b24uCisKKyAgICAgICAgUGF0Y2ggY292ZXJlZCBieSBtb2RpZmllZCBleGlzdGluZyB0ZXN0cy4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9ET01XaW5kb3dNZWRpYVN0cmVhbS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uY3BwOiBSZW5hbWVkIGZyb20gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5jcHAuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6RGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbjo6fkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6cmVhZHlTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnNlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpyZW1vdmVTdHJlYW0pOgorICAg
ICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpsb2NhbFN0cmVhbXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJlYW1z
KToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6Y2xvc2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpkaWRDb21wbGV0ZUlD
RVByb2Nlc3NpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
OjpkaWRHZW5lcmF0ZVNEUCk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5l
Y3Rpb246OmRpZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpE
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmRpZEFkZFJlbW90ZVN0cmVhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmRpZFJlbW92ZVJlbW90ZVN0cmVhbSk6
CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmludGVyZmFjZU5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246
OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5l
Y3Rpb246OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNh
dGVkUGVlckNvbm5lY3Rpb246OnNjaGVkdWxlSW5pdGlhbE5lZ290aWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6aW5pdGlhbE5lZ290aWF0aW9uVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmVu
c3VyZVN0cmVhbUNoYW5nZVNjaGVkdWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVk
UGVlckNvbm5lY3Rpb246OnN0cmVhbUNoYW5nZVRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpzY2hlZHVsZVJlYWR5U3RhdGVDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpyZWFkeVN0YXRlQ2hh
bmdlVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rp
b246OmNoYW5nZVJlYWR5U3RhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vRGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmguCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb246OmRpZENoYW5nZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpkZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAg
ICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5pZGw6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0
aW9uLmlkbC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNr
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNpZ25hbGluZ0NhbGxiYWNrKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmlkbDoKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkN1c3RvbS5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNEZXByZWNhdGVkUGVlckNv
bm5lY3Rpb25Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24p
OgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRsZXIu
aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
SGFuZGxlcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uSGFuZGxlckNsaWVudC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmguCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudDo6fkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25I
YW5kbGVyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9QZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxl
cjo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpE
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjp+RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5k
bGVyOjpwcm9kdWNlSW5pdGlhbE9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmhhbmRsZUluaXRpYWxPZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpwcm9jZXNzU0RQKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnByb2Nlc3NQZW5k
aW5nU3RyZWFtcyk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25I
YW5kbGVyOjpzZW5kRGF0YVN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcjo6c3RvcCk6CisKIDIwMTItMDMtMDkgIE1hcmphIEjD
tmx0dMOkICA8bWFyamFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBGaWxlSW5wdXRUeXBlIGRvZXNu
J3Qgc3VwcG9ydCAoc2F2ZXxyZXN0b3JlKUZvcm1Db250cm9sU3RhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggZWU2YTgyZTY4NmI2YmRiYjBmOWIzMTk2ZDJmMjkwNzhhZTU2ZjMxMy4u
ZTI3NWM0YTMwMjRhMWRiMzAzNzk2YjM0ZWEzOWQwNmRjMWZmODc4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMi0wMy0wOSAgVG9tbXkgV2lkZW5mbHlj
aHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IFJlbmFt
ZSBQZWVyQ29ubmVjdGlvbiB0byBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgwNjkyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmlyc3QgcGF0Y2ggaW4gYSBzZXJp
ZXMgb2YgcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIFBlZXJDb25uZWN0aW9uIGZyb20gUk9BUCB0byBK
U0VQLAorICAgICAgICBzZWUgYnVnIDgwNTg5IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisgICAg
ICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBicmlkZ2UvRGVwcmVjYXRlZFBlZXJDb25uZWN0
aW9uSGFuZGxlci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRn
ZS9QZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcjo6RGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVl
ckNvbm5lY3Rpb25IYW5kbGVyOjp+RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpwcm9kdWNl
SW5pdGlhbE9mZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlv
bkhhbmRsZXI6OmhhbmRsZUluaXRpYWxPZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNh
dGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpwcm9jZXNzU0RQKToKKyAgICAgICAgKFdlYkNvcmU6
OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnByb2Nlc3NQZW5kaW5nU3RyZWFtcyk6
CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzZW5k
RGF0YVN0cmVhbU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25u
ZWN0aW9uSGFuZGxlcjo6c3RvcCk6CisgICAgICAgICogYnJpZGdlL0RlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL2JyaWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5jcHAuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhh
bmRsZXJJbnRlcm5hbDo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5h
bDo6fkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbCk6CisgICAgICAgIChX
ZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OnByb2R1Y2VJ
bml0aWFsT2ZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
SGFuZGxlckludGVybmFsOjpoYW5kbGVJbml0aWFsT2ZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOjpwcm9jZXNzU0RQKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6
cHJvY2Vzc1BlbmRpbmdTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6c2VuZERhdGFTdHJlYW1NZXNzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6c3Rv
cCk6CisgICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50
ZXJuYWw6OmRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpEZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OmRpZEdlbmVyYXRlU0RQKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6
ZGlkUmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6ZGlkQWRkUmVtb3RlU3RyZWFtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6
ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKiBicmlkZ2UvRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uSGFuZGxlckludGVybmFsLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL2JyaWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5oLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRGVwcmVjYXRlZFBlZXJDb25u
ZWN0aW9uSGFuZGxlckludGVybmFsKToKKwogMjAxMi0wMy0wOCAgSWFuIFZvbGxpY2sgIDx2b2xs
aWNrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEVuc3VyZSB0aGF0IHRoZSBj
YyB0aHJlYWQgYW5pbWF0aW9uIGZyYW1ld29yayBjb250aW51ZXMgdG8gdGljayB3aGVuIHRoZSB0
YWIgaXMgYmFja2dyb3VuZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAzNDc4
MmJmODM3OWQ5ZjcxNTlkN2U4YTc1ZjdmOWNhNTg5YTc5NGQxLi5jZmNmZGRhMDI2NmMwZGU2OGRj
NGIxODE2MGVjOGIzODA1ZDU0NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTEwOSw2ICsxMDksOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNEYXRhVmlldy5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGVk
aWNhdGVkV29ya2VyQ29udGV4dC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXByZWNh
dGVkUGVlckNvbm5lY3Rpb24uY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXZpY2VN
b3Rpb25FdmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNEZXZpY2VNb3Rpb25F
dmVudC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRGV2aWNlT3JpZW50YXRpb25FdmVu
dC5jcHAgXApAQCAtNDMyLDggKzQzNCw2IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQuaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU1BhZ2VUcmFuc2l0aW9uRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUGFnZVRyYW5zaXRpb25FdmVudC5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUGVlckNvbm5lY3Rpb24uY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGVlckNv
bm5lY3Rpb24uaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlLmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BlcmZvcm1hbmNlLmggXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNQZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIFwKQEAgLTY1OCw2ICs2NTgs
NyBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvZ2VvbG9jYXRp
b24vUG9zaXRpb25DYWxsYmFjay5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9nZW9sb2NhdGlv
bi9Qb3NpdGlvbkVycm9yLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL2dlb2xvY2F0aW9uL1Bv
c2l0aW9uRXJyb3JDYWxsYmFjay5pZGwgXAorCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVh
bS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVk
aWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMv
bWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgXApAQCAtNjY5LDcgKzY3MCw2IEBAIGRvbV9iaW5k
aW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvci5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5pZGwgXAotCSQoV2Vi
Q29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbi5pZGwgXAogCSQoV2ViQ29y
ZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5pZGwgXAogCSQoV2ViQ29y
ZSkvY3NzL0NTU0NoYXJzZXRSdWxlLmlkbCBcCiAJJChXZWJDb3JlKS9jc3MvQ1NTRm9udEZhY2VS
dWxlLmlkbCBcCkBAIC0xMDMxLDYgKzEwMzEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL1BhZ2VHcm91cEluZGV4ZWREYXRhYmFzZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJDb250ZXh0SW5kZXhl
ZERhdGFiYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvV29ya2Vy
Q29udGV4dEluZGV4ZWREYXRhYmFzZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uLmggXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTG9jYWxNZWRpYVN0cmVhbS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBcCkBAIC0xMDUw
LDggKzEwNTIsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgg
XAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlh
U3VjY2Vzc0NhbGxiYWNrLmggXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
U2lnbmFsaW5nQ2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9Vc2VyTWVkaWFDb250cm9sbGVyLmggXApAQCAtMTI1OSw2ICsxMjU5LDcgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhVmlld0N1c3RvbS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVwcmVjYXRlZFBlZXJDb25uZWN0
aW9uQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VNb3Rp
b25FdmVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNl
T3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGlyZWN0b3J5RW50cnlDdXN0b20uY3BwIFwKQEAgLTEzMzYsNyArMTMzNyw2IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVy
Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlSXRlcmF0b3JD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9t
LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3Rv
bS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1bmN0
aW9ucy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGx1Z2luRWxlbWVudEZ1
bmN0aW9ucy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BvcFN0YXRlRXZlbnRD
dXN0b20uY3BwIFwKQEAgLTMzMjQsMTQgKzMzMjQsMTQgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURl
Y29kZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BO
R0ltYWdlRGVjb2Rlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVy
Q2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2VudGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1DZW50ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Db21wb25lbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uSGFuZGxlci5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBcCi0J
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1BlZXJDb25uZWN0
aW9uSGFuZGxlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL0dlb2xvY2F0aW9uQ2xpZW50TW9jay5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9ET01X
aW5kb3dNZWRpYVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbAppbmRleCA4NTAxMWFlOTZiNmQ1MjU1N2I3M2ZkNDI0
YzI3ZmRjODRkNmRmOTllLi42MTIwZGEwYjMyMmU2YWU1OTFjZDU3ZmIxZDk4MTQ2N2FiZjgwYmU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RPTVdpbmRv
d01lZGlhU3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0RPTVdpbmRvd01lZGlhU3RyZWFtLmlkbApAQCAtMzAsNyArMzAsNyBAQCBtb2R1bGUgd2luZG93
IHsKICAgICAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAogICAgICAgICBTdXBwbGVtZW50
YWw9RE9NV2luZG93CiAgICAgXSBET01XaW5kb3dNZWRpYVN0cmVhbSB7Ci0gICAgICAgIGF0dHJp
YnV0ZSBbVjhFbmFibGVkQXRSdW50aW1lXSBQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yIHdlYmtp
dFBlZXJDb25uZWN0aW9uOworICAgICAgICBhdHRyaWJ1dGUgW1Y4RW5hYmxlZEF0UnVudGltZV0g
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uQ29uc3RydWN0b3Igd2Via2l0RGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1FdmVudENvbnN0cnVjdG9y
IE1lZGlhU3RyZWFtRXZlbnQ7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjlkMDQ2OTA0NTc0NWMxOWM5NWY0M2NkZmE2ZDY3MDk2N2M1YTExMWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSwzNzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24u
aCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1FdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVu
dC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8RGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uPiBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3Vy
YXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IHNpZ25hbGluZ0NhbGxiYWNrKQor
eworICAgIFJlZlB0cjxEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBhZG9w
dFJlZihuZXcgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKGNvbnRleHQsIHNlcnZlckNvbmZpZ3Vy
YXRpb24sIHNpZ25hbGluZ0NhbGxiYWNrKSk7CisgICAgY29ubmVjdGlvbi0+c2V0UGVuZGluZ0Fj
dGl2aXR5KGNvbm5lY3Rpb24uZ2V0KCkpOworICAgIGNvbm5lY3Rpb24tPnNjaGVkdWxlSW5pdGlh
bE5lZ290aWF0aW9uKCk7CisgICAgY29ubmVjdGlvbi0+c3VzcGVuZElmTmVlZGVkKCk7CisKKyAg
ICByZXR1cm4gY29ubmVjdGlvbi5yZWxlYXNlKCk7Cit9CisKK0RlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbjo6RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWdu
YWxpbmdDYWxsYmFjaz4gc2lnbmFsaW5nQ2FsbGJhY2spCisgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCwgdGhpcykKKyAgICAsIG1fc2lnbmFsaW5nQ2FsbGJhY2soc2lnbmFsaW5nQ2FsbGJh
Y2spCisgICAgLCBtX3JlYWR5U3RhdGUoTkVXKQorICAgICwgbV9pY2VTdGFydGVkKGZhbHNlKQor
ICAgICwgbV9sb2NhbFN0cmVhbXMoTWVkaWFTdHJlYW1MaXN0OjpjcmVhdGUoKSkKKyAgICAsIG1f
cmVtb3RlU3RyZWFtcyhNZWRpYVN0cmVhbUxpc3Q6OmNyZWF0ZSgpKQorICAgICwgbV9pbml0aWFs
TmVnb3RpYXRpb25UaW1lcih0aGlzLCAmRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjppbml0aWFs
TmVnb3RpYXRpb25UaW1lckZpcmVkKQorICAgICwgbV9zdHJlYW1DaGFuZ2VUaW1lcih0aGlzLCAm
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpzdHJlYW1DaGFuZ2VUaW1lckZpcmVkKQorICAgICwg
bV9yZWFkeVN0YXRlQ2hhbmdlVGltZXIodGhpcywgJkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6
cmVhZHlTdGF0ZUNoYW5nZVRpbWVyRmlyZWQpCisgICAgLCBtX3BlZXJIYW5kbGVyKERlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZSh0aGlzLCBzZXJ2ZXJDb25maWd1cmF0aW9u
LCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSkKK3sKK30KKworRGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uOjp+RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCkKK3sKK30KKwor
dm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVh
ZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbWVzc2FnZS5zdGFydHNXaXRoKCJTRFBc
biIpKQorICAgICAgICByZXR1cm47CisKKyAgICBTdHJpbmcgc2RwID0gbWVzc2FnZS5zdWJzdHJp
bmcoNCk7CisKKyAgICBpZiAobV9pY2VTdGFydGVkKSB7CisgICAgICAgIGlmIChtX3BlZXJIYW5k
bGVyKQorICAgICAgICAgICAgbV9wZWVySGFuZGxlci0+cHJvY2Vzc1NEUChzZHApOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fcGVlckhhbmRsZXIpCisgICAgICAgIG1fcGVl
ckhhbmRsZXItPmhhbmRsZUluaXRpYWxPZmZlcihzZHApOworCisgICAgZW5zdXJlU3RyZWFtQ2hh
bmdlU2NoZWR1bGVkKCk7CisgICAgbV9pY2VTdGFydGVkID0gdHJ1ZTsKKyAgICBzY2hlZHVsZVJl
YWR5U3RhdGVDaGFuZ2UoTkVHT1RJQVRJTkcpOworfQorCitEZXByZWNhdGVkUGVlckNvbm5lY3Rp
b246OlJlYWR5U3RhdGUgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpyZWFkeVN0YXRlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9yZWFkeVN0YXRlOworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbjo6c2VuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
eworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDU3RyaW5nIGRhdGEg
PSB0ZXh0LnV0ZjgoKTsKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBkYXRhLmxlbmd0aCgpOworCisg
ICAgaWYgKGxlbmd0aCA+IDUwNCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtX3BlZXJIYW5kbGVyKQorICAgICAg
ICBtX3BlZXJIYW5kbGVyLT5zZW5kRGF0YVN0cmVhbU1lc3NhZ2UoZGF0YS5kYXRhKCksIGxlbmd0
aCk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0oUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbT4gcHJwU3RyZWFtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBS
ZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IHBycFN0cmVhbTsKKyAgICBpZiAoIXN0cmVhbSkg
eworICAgICAgICBlYyA9ICBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9sb2Nh
bFN0cmVhbXMtPmNvbnRhaW5zKHN0cmVhbS5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fbG9jYWxTdHJlYW1zLT5hcHBlbmQoc3RyZWFtKTsKKworICAgIE1lZGlhU3RyZWFtRGVzY3Jp
cHRvciogc3RyZWFtRGVzY3JpcHRvciA9IHN0cmVhbS0+ZGVzY3JpcHRvcigpOworICAgIHNpemVf
dCBpID0gbV9wZW5kaW5nUmVtb3ZlU3RyZWFtcy5maW5kKHN0cmVhbURlc2NyaXB0b3IpOworICAg
IGlmIChpICE9IG5vdEZvdW5kKSB7CisgICAgICAgIG1fcGVuZGluZ1JlbW92ZVN0cmVhbXMucmVt
b3ZlKGkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9wZW5kaW5nQWRkU3RyZWFt
cy5hcHBlbmQoc3RyZWFtRGVzY3JpcHRvcik7CisgICAgaWYgKG1faWNlU3RhcnRlZCkKKyAgICAg
ICAgZW5zdXJlU3RyZWFtQ2hhbmdlU2NoZWR1bGVkKCk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uOjpyZW1vdmVTdHJlYW0oTWVkaWFTdHJlYW0qIHN0cmVhbSwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlm
ICghc3RyZWFtKSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fbG9jYWxTdHJlYW1zLT5jb250YWlucyhzdHJlYW0p
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xvY2FsU3RyZWFtcy0+cmVtb3ZlKHN0cmVhbSk7
CisKKyAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbURlc2NyaXB0b3IgPSBzdHJlYW0t
PmRlc2NyaXB0b3IoKTsKKyAgICBzaXplX3QgaSA9IG1fcGVuZGluZ0FkZFN0cmVhbXMuZmluZChz
dHJlYW1EZXNjcmlwdG9yKTsKKyAgICBpZiAoaSAhPSBub3RGb3VuZCkgeworICAgICAgICBtX3Bl
bmRpbmdBZGRTdHJlYW1zLnJlbW92ZShpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IG1fcGVuZGluZ1JlbW92ZVN0cmVhbXMuYXBwZW5kKHN0cmVhbURlc2NyaXB0b3IpOworICAgIGlm
IChtX2ljZVN0YXJ0ZWQpCisgICAgICAgIGVuc3VyZVN0cmVhbUNoYW5nZVNjaGVkdWxlZCgpOwor
fQorCitNZWRpYVN0cmVhbUxpc3QqIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6bG9jYWxTdHJl
YW1zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sb2NhbFN0cmVhbXMuZ2V0KCk7Cit9CisKK01l
ZGlhU3RyZWFtTGlzdCogRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpyZW1vdGVTdHJlYW1zKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9yZW1vdGVTdHJlYW1zLmdldCgpOworfQorCit2b2lkIERl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6Y2xvc2UoRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
aWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRF
X0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0b3AoKTsKK30KKwordm9pZCBE
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpCit7Cisg
ICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwor
ICAgIGNoYW5nZVJlYWR5U3RhdGUoQUNUSVZFKTsKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNv
bm5lY3Rpb246OmRpZEdlbmVyYXRlU0RQKGNvbnN0IFN0cmluZyYgc2RwKQoreworICAgIEFTU0VS
VChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBtX3Np
Z25hbGluZ0NhbGxiYWNrLT5oYW5kbGVFdmVudCgiU0RQXG4iICsgc2RwLCB0aGlzKTsKK30KKwor
dm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmRpZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2Fn
ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQoreworICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRocmVhZCgpKTsKKyAgICBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UgPSBTdHJpbmc6OmZyb21VVEY4KGRhdGEsIGxlbmd0aCk7CisgICAgZGlzcGF0Y2hF
dmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShQYXNzT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+KCks
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKG1lc3NhZ2UpKSk7Cit9CisKK3ZvaWQgRGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uOjpkaWRBZGRSZW1vdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IpCit7CisgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOworCisgICAgaWYgKG1fcmVh
ZHlTdGF0ZSA9PSBDTE9TRUQpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxNZWRpYVN0
cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksIHN0cmVhbURlc2NyaXB0b3IpOworICAgIG1fcmVtb3RlU3RyZWFtcy0+YXBwZW5kKHN0cmVh
bSk7CisKKyAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuYWRkc3RyZWFtRXZlbnQsIGZhbHNlLCBmYWxzZSwgc3RyZWFtLnJlbGVhc2UoKSkpOwor
fQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFt
KE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtRGVzY3JpcHRvcikKK3sKKyAgICBBU1NFUlQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CisgICAgQVNTRVJU
KHN0cmVhbURlc2NyaXB0b3ItPm93bmVyKCkpOworCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtPiBz
dHJlYW0gPSBzdGF0aWNfY2FzdDxNZWRpYVN0cmVhbSo+KHN0cmVhbURlc2NyaXB0b3ItPm93bmVy
KCkpOworICAgIHN0cmVhbS0+c3RyZWFtRW5kZWQoKTsKKworICAgIGlmIChtX3JlYWR5U3RhdGUg
PT0gQ0xPU0VEKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9yZW1vdGVTdHJlYW1z
LT5jb250YWlucyhzdHJlYW0uZ2V0KCkpKTsKKyAgICBtX3JlbW90ZVN0cmVhbXMtPnJlbW92ZShz
dHJlYW0uZ2V0KCkpOworCisgICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbUV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnJlbW92ZXN0cmVhbUV2ZW50LCBmYWxzZSwgZmFsc2UsIHN0cmVhbS5y
ZWxlYXNlKCkpKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBEZXByZWNhdGVkUGVlckNvbm5l
Y3Rpb246OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCku
aW50ZXJmYWNlRm9yRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOworfQorCitTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdAoreworICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnN0b3AoKQor
eworICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2luaXRpYWxOZWdvdGlhdGlvblRpbWVyLnN0b3AoKTsKKyAgICBtX3N0cmVhbUNoYW5nZVRp
bWVyLnN0b3AoKTsKKyAgICBtX3JlYWR5U3RhdGVDaGFuZ2VUaW1lci5zdG9wKCk7CisKKyAgICBp
ZiAobV9wZWVySGFuZGxlcikKKyAgICAgICAgbV9wZWVySGFuZGxlci0+c3RvcCgpOworCisgICAg
dW5zZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgbV9wZWVySGFuZGxlci5jbGVhcigpOwor
CisgICAgY2hhbmdlUmVhZHlTdGF0ZShDTE9TRUQpOworfQorCitFdmVudFRhcmdldERhdGEqIERl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6ZXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4g
Jm1fZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIERlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbjo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6c2NoZWR1
bGVJbml0aWFsTmVnb3RpYXRpb24oKQoreworICAgIEFTU0VSVCghbV9pbml0aWFsTmVnb3RpYXRp
b25UaW1lci5pc0FjdGl2ZSgpKTsKKworICAgIG1faW5pdGlhbE5lZ290aWF0aW9uVGltZXIuc3Rh
cnRPbmVTaG90KDApOworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6aW5pdGlh
bE5lZ290aWF0aW9uVGltZXJGaXJlZChUaW1lcjxEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24+KiB0
aW1lcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9pbml0aWFsTmVn
b3RpYXRpb25UaW1lcik7CisKKyAgICBpZiAobV9pY2VTdGFydGVkKQorICAgICAgICByZXR1cm47
CisKKyAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3IgcGVuZGluZ0FkZFN0cmVhbXM7Cisg
ICAgbV9wZW5kaW5nQWRkU3RyZWFtcy5zd2FwKHBlbmRpbmdBZGRTdHJlYW1zKTsKKyAgICBpZiAo
bV9wZWVySGFuZGxlcikKKyAgICAgICAgbV9wZWVySGFuZGxlci0+cHJvZHVjZUluaXRpYWxPZmZl
cihwZW5kaW5nQWRkU3RyZWFtcyk7CisKKyAgICBtX2ljZVN0YXJ0ZWQgPSB0cnVlOworCisgICAg
Y2hhbmdlUmVhZHlTdGF0ZShORUdPVElBVElORyk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uOjplbnN1cmVTdHJlYW1DaGFuZ2VTY2hlZHVsZWQoKQoreworICAgIGlmICghbV9z
dHJlYW1DaGFuZ2VUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3N0cmVhbUNoYW5nZVRpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnN0
cmVhbUNoYW5nZVRpbWVyRmlyZWQoVGltZXI8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uPiogdGlt
ZXIpCit7CisgICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fc3RyZWFtQ2hhbmdl
VGltZXIpOworCisgICAgaWYgKCFtX3BlbmRpbmdBZGRTdHJlYW1zLmlzRW1wdHkoKSAmJiAhbV9w
ZW5kaW5nUmVtb3ZlU3RyZWFtcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIE1l
ZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciBwZW5kaW5nQWRkU3RyZWFtczsKKyAgICBNZWRpYVN0
cmVhbURlc2NyaXB0b3JWZWN0b3IgcGVuZGluZ1JlbW92ZVN0cmVhbXM7CisKKyAgICBtX3BlbmRp
bmdBZGRTdHJlYW1zLnN3YXAocGVuZGluZ0FkZFN0cmVhbXMpOworICAgIG1fcGVuZGluZ1JlbW92
ZVN0cmVhbXMuc3dhcChwZW5kaW5nUmVtb3ZlU3RyZWFtcyk7CisKKyAgICBpZiAobV9wZWVySGFu
ZGxlcikKKyAgICAgICAgbV9wZWVySGFuZGxlci0+cHJvY2Vzc1BlbmRpbmdTdHJlYW1zKHBlbmRp
bmdBZGRTdHJlYW1zLCBwZW5kaW5nUmVtb3ZlU3RyZWFtcyk7CisKKyAgICBpZiAoIXBlbmRpbmdB
ZGRTdHJlYW1zLmlzRW1wdHkoKSkKKyAgICAgICAgY2hhbmdlUmVhZHlTdGF0ZShORUdPVElBVElO
Ryk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uOjpzY2hlZHVsZVJlYWR5U3Rh
dGVDaGFuZ2UoUmVhZHlTdGF0ZSByZWFkeVN0YXRlKQoreworICAgIG1fcGVuZGluZ1JlYWR5U3Rh
dGVzLmFwcGVuZChyZWFkeVN0YXRlKTsKKyAgICBpZiAoIW1fcmVhZHlTdGF0ZUNoYW5nZVRpbWVy
LmlzQWN0aXZlKCkpCisgICAgICAgIG1fcmVhZHlTdGF0ZUNoYW5nZVRpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnJlYWR5U3RhdGVDaGFu
Z2VUaW1lckZpcmVkKFRpbWVyPERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbj4qIHRpbWVyKQorewor
ICAgIEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX3JlYWR5U3RhdGVDaGFuZ2VUaW1l
cik7CisKKyAgICBWZWN0b3I8UmVhZHlTdGF0ZT4gcGVuZGluZ1JlYWR5U3RhdGVzOworICAgIG1f
cGVuZGluZ1JlYWR5U3RhdGVzLnN3YXAocGVuZGluZ1JlYWR5U3RhdGVzKTsKKworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcGVuZGluZ1JlYWR5U3RhdGVzLnNpemUoKTsgaSsrKQorICAgICAg
ICBjaGFuZ2VSZWFkeVN0YXRlKHBlbmRpbmdSZWFkeVN0YXRlc1tpXSk7Cit9CisKK3ZvaWQgRGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uOjpjaGFuZ2VSZWFkeVN0YXRlKFJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSkKK3sKKyAgICBpZiAocmVhZHlTdGF0ZSA9PSBtX3JlYWR5U3RhdGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5U3RhdGU7CisKKyAgICBzd2l0Y2ggKG1f
cmVhZHlTdGF0ZSkgeworICAgIGNhc2UgTkVXOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBORUdPVElBVElORzoKKyAgICAgICAgZGlzcGF0
Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jb25uZWN0aW5nRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFDVElWRToKKyAgICAgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5vcGVuRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENMT1NFRDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5z
dGF0ZWNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQ0NTI4NDhiN2IyNzk0ZmFlMjBkZjU5ZTA2ODJkNzk0Y2ExM2M0
YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbl9oCisjZGVmaW5lIERlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbl9oCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
SGFuZGxlci5oIgorI2luY2x1ZGUgIkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGll
bnQuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2Uu
aCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbS5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtTGlzdC5o
IgorI2luY2x1ZGUgIlNpZ25hbGluZ0NhbGxiYWNrLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCisvLyBOb3RlOgorLy8gU0RQIHN0YW5kcyBmb3IgU2Vzc2lvbiBE
ZXNjcmlwdGlvbiBQcm90b2NvbCwgd2hpY2ggaXMgaW50ZW5kZWQgZm9yIGRlc2NyaWJpbmcKKy8v
IG11bHRpbWVkaWEgc2Vzc2lvbnMgZm9yIHRoZSBwdXJwb3NlcyBvZiBzZXNzaW9uIGFubm91bmNl
bWVudCwgc2Vzc2lvbgorLy8gaW52aXRhdGlvbiwgYW5kIG90aGVyIGZvcm1zIG9mIG11bHRpbWVk
aWEgc2Vzc2lvbiBpbml0aWF0aW9uLgorLy8KKy8vIE1vcmUgaW5mb3JtYXRpb24gY2FuIGJlIGZv
dW5kIGhlcmU6CisvLyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM0NTY2CisvLyBodHRw
Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1Nlc3Npb25fRGVzY3JpcHRpb25fUHJvdG9jb2wKKwor
Y2xhc3MgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8RGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uPiwgcHVibGljIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnQsIHB1YmxpYyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmln
dXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxsYmFjaz4pOworICAgIH5EZXByZWNhdGVk
UGVlckNvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgcHJvY2Vzc1NpZ25hbGluZ01lc3NhZ2UoY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBFeGNlcHRpb25Db2RlJik7CisKKyAgICBSZWFkeVN0YXRlIHJl
YWR5U3RhdGUoKSBjb25zdDsKKworICAgIHZvaWQgc2VuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4
Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkZFN0cmVhbShjb25zdCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtKE1lZGlhU3Ry
ZWFtKiwgRXhjZXB0aW9uQ29kZSYpOworICAgIE1lZGlhU3RyZWFtTGlzdCogbG9jYWxTdHJlYW1z
KCkgY29uc3Q7CisgICAgTWVkaWFTdHJlYW1MaXN0KiByZW1vdGVTdHJlYW1zKCkgY29uc3Q7Cisg
ICAgdm9pZCBjbG9zZShFeGNlcHRpb25Db2RlJik7CisKKyAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGNvbm5lY3RpbmcpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIob3Blbik7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihtZXNzYWdl
KTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHN0YXRlY2hhbmdlKTsKKyAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFkZHN0cmVhbSk7CisgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihyZW1vdmVzdHJlYW0pOworCisgICAgLy8gUGVlckNv
bm5lY3Rpb25IYW5kbGVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlSUNFUHJv
Y2Vzc2luZygpOworICAgIHZpcnR1YWwgdm9pZCBkaWRHZW5lcmF0ZVNEUChjb25zdCBTdHJpbmcm
IHNkcCk7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2FnZShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVt
b3RlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPik7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU3RhdGUoUmVhZHlTdGF0ZSBzdGF0ZSkgeyBjaGFuZ2VS
ZWFkeVN0YXRlKHN0YXRlKTsgfQorCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgaW50ZXJmYWNlTmFtZSgpIGNvbnN0OworICAgIHZpcnR1YWwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworCisg
ICAgLy8gQWN0aXZlRE9NT2JqZWN0CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKworICAgIHVz
aW5nIFJlZkNvdW50ZWQ8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uPjo6cmVmOworICAgIHVzaW5n
IFJlZkNvdW50ZWQ8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uPjo6ZGVyZWY7CisKK3ByaXZhdGU6
CisgICAgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2Fs
bGJhY2s+KTsKKworICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1
YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisgICAgdmlydHVhbCB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgeyBkZXJlZigpOyB9CisKKyAgICB2b2lkIHNjaGVkdWxlSW5pdGlhbE5lZ290aWF0aW9u
KCk7CisgICAgdm9pZCBpbml0aWFsTmVnb3RpYXRpb25UaW1lckZpcmVkKFRpbWVyPERlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbj4qKTsKKyAgICB2b2lkIGVuc3VyZVN0cmVhbUNoYW5nZVNjaGVkdWxl
ZCgpOworICAgIHZvaWQgc3RyZWFtQ2hhbmdlVGltZXJGaXJlZChUaW1lcjxEZXByZWNhdGVkUGVl
ckNvbm5lY3Rpb24+Kik7CisgICAgdm9pZCBzY2hlZHVsZVJlYWR5U3RhdGVDaGFuZ2UoUmVhZHlT
dGF0ZSk7CisgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlVGltZXJGaXJlZChUaW1lcjxEZXByZWNh
dGVkUGVlckNvbm5lY3Rpb24+Kik7CisKKyAgICB2b2lkIGNoYW5nZVJlYWR5U3RhdGUoUmVhZHlT
dGF0ZSk7CisKKyAgICBSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IG1fc2lnbmFsaW5nQ2FsbGJh
Y2s7CisKKyAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKKyAgICBib29sIG1faWNlU3RhcnRl
ZDsKKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IG1fbG9jYWxTdHJlYW1zOworICAgIFJl
ZlB0cjxNZWRpYVN0cmVhbUxpc3Q+IG1fcmVtb3RlU3RyZWFtczsKKworICAgIC8vIEV2ZW50VGFy
Z2V0IGltcGxlbWVudGF0aW9uLgorICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0
YTsKKworICAgIFRpbWVyPERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbj4gbV9pbml0aWFsTmVnb3Rp
YXRpb25UaW1lcjsKKyAgICBUaW1lcjxEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24+IG1fc3RyZWFt
Q2hhbmdlVGltZXI7CisgICAgVGltZXI8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uPiBtX3JlYWR5
U3RhdGVDaGFuZ2VUaW1lcjsKKworICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciBtX3Bl
bmRpbmdBZGRTdHJlYW1zOworICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciBtX3BlbmRp
bmdSZW1vdmVTdHJlYW1zOworICAgIFZlY3RvcjxSZWFkeVN0YXRlPiBtX3BlbmRpbmdSZWFkeVN0
YXRlczsKKworICAgIE93blB0cjxEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyPiBtX3Bl
ZXJIYW5kbGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKKworI2VuZGlmIC8vIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbl9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDFkOWQ1MWY1MTdlMmZm
NzQ5N2I0ZGUxNmFmMzc3MzFjYmZhOTYwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uLmlkbApAQCAt
MCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgcDJwIHsKKworICAgIGludGVyZmFj
ZSBbCisgICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAgICAgQWN0aXZlRE9N
T2JqZWN0LAorICAgICAgICBDb25zdHJ1Y3RvclBhcmFtZXRlcnM9MiwKKyAgICAgICAgQ29uc3Ry
dWN0b3IoaW4gRE9NU3RyaW5nIHNlcnZlckNvbmZpZ3VyYXRpb24sIGluIFtDYWxsYmFja10gU2ln
bmFsaW5nQ2FsbGJhY2sgc2lnbmFsaW5nQ2FsbGJhY2spLAorICAgICAgICBDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LAorICAgICAgICBKU0N1c3RvbUNvbnN0cnVjdG9yLAorICAgICAg
ICBFdmVudFRhcmdldAorICAgIF0gRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uIHsKKyAgICAgICAg
dm9pZCBwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShpbiBET01TdHJpbmcgbWVzc2FnZSkKKyAgICAg
ICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IE5FVyA9IDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5FR09USUFUSU5HID0g
MTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQUNUSVZFID0gMjsKKyAgICAgICAgY29u
c3QgdW5zaWduZWQgc2hvcnQgQ0xPU0VEID0gMzsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7CisKKyAgICAgICAgdm9pZCBzZW5kKGluIERPTVN0
cmluZyB0ZXh0KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtT
dHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgYWRkU3RyZWFtKGluIE1lZGlhU3RyZWFtIHN0cmVhbSkK
KyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbU3RyaWN0VHlwZUNo
ZWNraW5nXSB2b2lkIHJlbW92ZVN0cmVhbShpbiBNZWRpYVN0cmVhbSBzdHJlYW0pCisgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
TWVkaWFTdHJlYW1MaXN0IGxvY2FsU3RyZWFtczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IE1lZGlhU3RyZWFtTGlzdCByZW1vdGVTdHJlYW1zOworCisgICAgICAgIHZvaWQgY2xvc2UoKQor
ICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKKyAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25jb25uZWN0aW5nOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbm9wZW47CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubWVzc2FnZTsKKyAg
ICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25zdGF0ZWNoYW5nZTsKKyAgICAgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGRzdHJlYW07CisgICAgICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9ucmVtb3Zlc3RyZWFtOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVy
ZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNh
cHR1cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxp
c3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBi
b29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZl
bnQgZXZlbnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworICAgIH07CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkZDNiZjBkYTI1Y2Ni
NDMxNzQzZWY3OGY4ODBlZTE3OTdmZWFkZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNzcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uLmgiCi0K
LSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgot
I2luY2x1ZGUgIk1lZGlhU3RyZWFtRXZlbnQuaCIKLSNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIK
LSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPFBlZXJDb25uZWN0
aW9uPiBQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxp
bmdDYWxsYmFjaz4gc2lnbmFsaW5nQ2FsbGJhY2spCi17Ci0gICAgUmVmUHRyPFBlZXJDb25uZWN0
aW9uPiBjb25uZWN0aW9uID0gYWRvcHRSZWYobmV3IFBlZXJDb25uZWN0aW9uKGNvbnRleHQsIHNl
cnZlckNvbmZpZ3VyYXRpb24sIHNpZ25hbGluZ0NhbGxiYWNrKSk7Ci0gICAgY29ubmVjdGlvbi0+
c2V0UGVuZGluZ0FjdGl2aXR5KGNvbm5lY3Rpb24uZ2V0KCkpOwotICAgIGNvbm5lY3Rpb24tPnNj
aGVkdWxlSW5pdGlhbE5lZ290aWF0aW9uKCk7Ci0gICAgY29ubmVjdGlvbi0+c3VzcGVuZElmTmVl
ZGVkKCk7Ci0KLSAgICByZXR1cm4gY29ubmVjdGlvbi5yZWxlYXNlKCk7Ci19Ci0KLVBlZXJDb25u
ZWN0aW9uOjpQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIFBhc3NSZWZQdHI8U2lnbmFsaW5nQ2Fs
bGJhY2s+IHNpZ25hbGluZ0NhbGxiYWNrKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQs
IHRoaXMpCi0gICAgLCBtX3NpZ25hbGluZ0NhbGxiYWNrKHNpZ25hbGluZ0NhbGxiYWNrKQotICAg
ICwgbV9yZWFkeVN0YXRlKE5FVykKLSAgICAsIG1faWNlU3RhcnRlZChmYWxzZSkKLSAgICAsIG1f
bG9jYWxTdHJlYW1zKE1lZGlhU3RyZWFtTGlzdDo6Y3JlYXRlKCkpCi0gICAgLCBtX3JlbW90ZVN0
cmVhbXMoTWVkaWFTdHJlYW1MaXN0OjpjcmVhdGUoKSkKLSAgICAsIG1faW5pdGlhbE5lZ290aWF0
aW9uVGltZXIodGhpcywgJlBlZXJDb25uZWN0aW9uOjppbml0aWFsTmVnb3RpYXRpb25UaW1lckZp
cmVkKQotICAgICwgbV9zdHJlYW1DaGFuZ2VUaW1lcih0aGlzLCAmUGVlckNvbm5lY3Rpb246OnN0
cmVhbUNoYW5nZVRpbWVyRmlyZWQpCi0gICAgLCBtX3JlYWR5U3RhdGVDaGFuZ2VUaW1lcih0aGlz
LCAmUGVlckNvbm5lY3Rpb246OnJlYWR5U3RhdGVDaGFuZ2VUaW1lckZpcmVkKQotICAgICwgbV9w
ZWVySGFuZGxlcihQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZSh0aGlzLCBzZXJ2ZXJDb25m
aWd1cmF0aW9uLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSkKLXsKLX0K
LQotUGVlckNvbm5lY3Rpb246On5QZWVyQ29ubmVjdGlvbigpCi17Ci19Ci0KLXZvaWQgUGVlckNv
bm5lY3Rpb246OnByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsK
LSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICghbWVzc2FnZS5zdGFydHNXaXRoKCJTRFBcbiIpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBTdHJpbmcgc2RwID0gbWVzc2FnZS5zdWJzdHJpbmcoNCk7Ci0KLSAgICBpZiAobV9p
Y2VTdGFydGVkKSB7Ci0gICAgICAgIGlmIChtX3BlZXJIYW5kbGVyKQotICAgICAgICAgICAgbV9w
ZWVySGFuZGxlci0+cHJvY2Vzc1NEUChzZHApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKG1fcGVlckhhbmRsZXIpCi0gICAgICAgIG1fcGVlckhhbmRsZXItPmhhbmRsZUluaXRp
YWxPZmZlcihzZHApOwotCi0gICAgZW5zdXJlU3RyZWFtQ2hhbmdlU2NoZWR1bGVkKCk7Ci0gICAg
bV9pY2VTdGFydGVkID0gdHJ1ZTsKLSAgICBzY2hlZHVsZVJlYWR5U3RhdGVDaGFuZ2UoTkVHT1RJ
QVRJTkcpOwotfQotCi1QZWVyQ29ubmVjdGlvbjo6UmVhZHlTdGF0ZSBQZWVyQ29ubmVjdGlvbjo6
cmVhZHlTdGF0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcmVhZHlTdGF0ZTsKLX0KLQotdm9p
ZCBQZWVyQ29ubmVjdGlvbjo6c2VuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7Ci0gICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDU3RyaW5n
IGRhdGEgPSB0ZXh0LnV0ZjgoKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBkYXRhLmxlbmd0aCgp
OwotCi0gICAgaWYgKGxlbmd0aCA+IDUwNCkgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNT
X0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX3BlZXJIYW5kbGVyKQot
ICAgICAgICBtX3BlZXJIYW5kbGVyLT5zZW5kRGF0YVN0cmVhbU1lc3NhZ2UoZGF0YS5kYXRhKCks
IGxlbmd0aCk7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb246OmFkZFN0cmVhbShQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtPiBwcnBTdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIFJlZlB0
cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gcHJwU3RyZWFtOwotICAgIGlmICghc3RyZWFtKSB7Ci0g
ICAgICAgIGVjID0gIFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpIHsKLSAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX2xvY2FsU3Ry
ZWFtcy0+Y29udGFpbnMoc3RyZWFtLmdldCgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9s
b2NhbFN0cmVhbXMtPmFwcGVuZChzdHJlYW0pOwotCi0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9y
KiBzdHJlYW1EZXNjcmlwdG9yID0gc3RyZWFtLT5kZXNjcmlwdG9yKCk7Ci0gICAgc2l6ZV90IGkg
PSBtX3BlbmRpbmdSZW1vdmVTdHJlYW1zLmZpbmQoc3RyZWFtRGVzY3JpcHRvcik7Ci0gICAgaWYg
KGkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgbV9wZW5kaW5nUmVtb3ZlU3RyZWFtcy5yZW1vdmUo
aSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3BlbmRpbmdBZGRTdHJlYW1zLmFw
cGVuZChzdHJlYW1EZXNjcmlwdG9yKTsKLSAgICBpZiAobV9pY2VTdGFydGVkKQotICAgICAgICBl
bnN1cmVTdHJlYW1DaGFuZ2VTY2hlZHVsZWQoKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6
cmVtb3ZlU3RyZWFtKE1lZGlhU3RyZWFtKiBzdHJlYW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIXN0cmVhbSkgewot
ICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKCFtX2xvY2FsU3RyZWFtcy0+Y29udGFpbnMoc3RyZWFtKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9sb2NhbFN0cmVhbXMtPnJlbW92ZShzdHJlYW0pOwotCi0gICAgTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKiBzdHJlYW1EZXNjcmlwdG9yID0gc3RyZWFtLT5kZXNjcmlwdG9yKCk7
Ci0gICAgc2l6ZV90IGkgPSBtX3BlbmRpbmdBZGRTdHJlYW1zLmZpbmQoc3RyZWFtRGVzY3JpcHRv
cik7Ci0gICAgaWYgKGkgIT0gbm90Rm91bmQpIHsKLSAgICAgICAgbV9wZW5kaW5nQWRkU3RyZWFt
cy5yZW1vdmUoaSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX3BlbmRpbmdSZW1v
dmVTdHJlYW1zLmFwcGVuZChzdHJlYW1EZXNjcmlwdG9yKTsKLSAgICBpZiAobV9pY2VTdGFydGVk
KQotICAgICAgICBlbnN1cmVTdHJlYW1DaGFuZ2VTY2hlZHVsZWQoKTsKLX0KLQotTWVkaWFTdHJl
YW1MaXN0KiBQZWVyQ29ubmVjdGlvbjo6bG9jYWxTdHJlYW1zKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9sb2NhbFN0cmVhbXMuZ2V0KCk7Ci19Ci0KLU1lZGlhU3RyZWFtTGlzdCogUGVlckNvbm5l
Y3Rpb246OnJlbW90ZVN0cmVhbXMoKSBjb25zdAotewotICAgIHJldHVybiBtX3JlbW90ZVN0cmVh
bXMuZ2V0KCk7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb246OmNsb3NlKEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ0xPU0VEKSB7Ci0gICAgICAgIGVjID0g
SU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdG9wKCk7
Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb246OmRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpCi17
Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkp
OwotICAgIGNoYW5nZVJlYWR5U3RhdGUoQUNUSVZFKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlv
bjo6ZGlkR2VuZXJhdGVTRFAoY29uc3QgU3RyaW5nJiBzZHApCi17Ci0gICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250ZXh0VGhyZWFkKCkpOwotICAgIG1fc2lnbmFsaW5n
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KCJTRFBcbiIgKyBzZHAsIHRoaXMpOwotfQotCi12b2lkIFBl
ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlRGF0YVN0cmVhbU1lc3NhZ2UoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0NvbnRleHRUaHJlYWQoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiBtZXNzYWdlID0gU3RyaW5n
Ojpmcm9tVVRGOChkYXRhLCBsZW5ndGgpOwotICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50
OjpjcmVhdGUoUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PigpLCBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShtZXNzYWdlKSkpOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uOjpkaWRB
ZGRSZW1vdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURl
c2NyaXB0b3IpCi17Ci0gICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNDb250
ZXh0VGhyZWFkKCkpOwotCi0gICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFJlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtID0gTWVkaWFTdHJlYW06
OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHN0cmVhbURlc2NyaXB0b3IpOwotICAg
IG1fcmVtb3RlU3RyZWFtcy0+YXBwZW5kKHN0cmVhbSk7Ci0KLSAgICBkaXNwYXRjaEV2ZW50KE1l
ZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkc3RyZWFtRXZlbnQsIGZhbHNl
LCBmYWxzZSwgc3RyZWFtLnJlbGVhc2UoKSkpOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uOjpk
aWRSZW1vdmVSZW1vdGVTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW1EZXNjcmlw
dG9yKQotewotICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzQ29udGV4dFRo
cmVhZCgpKTsKLSAgICBBU1NFUlQoc3RyZWFtRGVzY3JpcHRvci0+b3duZXIoKSk7Ci0KLSAgICBS
ZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IHN0YXRpY19jYXN0PE1lZGlhU3RyZWFtKj4oc3Ry
ZWFtRGVzY3JpcHRvci0+b3duZXIoKSk7Ci0gICAgc3RyZWFtLT5zdHJlYW1FbmRlZCgpOwotCi0g
ICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDTE9TRUQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFT
U0VSVChtX3JlbW90ZVN0cmVhbXMtPmNvbnRhaW5zKHN0cmVhbS5nZXQoKSkpOwotICAgIG1fcmVt
b3RlU3RyZWFtcy0+cmVtb3ZlKHN0cmVhbS5nZXQoKSk7Ci0KLSAgICBkaXNwYXRjaEV2ZW50KE1l
ZGlhU3RyZWFtRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3Zlc3RyZWFtRXZlbnQsIGZh
bHNlLCBmYWxzZSwgc3RyZWFtLnJlbGVhc2UoKSkpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcm
IFBlZXJDb25uZWN0aW9uOjppbnRlcmZhY2VOYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZXZl
bnROYW1lcygpLmludGVyZmFjZUZvclBlZXJDb25uZWN0aW9uOwotfQotCi1TY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBQZWVyQ29ubmVjdGlvbjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uOjpzdG9wKCkKLXsKLSAgICBpZiAobV9yZWFkeVN0
YXRlID09IENMT1NFRCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9pbml0aWFsTmVnb3RpYXRp
b25UaW1lci5zdG9wKCk7Ci0gICAgbV9zdHJlYW1DaGFuZ2VUaW1lci5zdG9wKCk7Ci0gICAgbV9y
ZWFkeVN0YXRlQ2hhbmdlVGltZXIuc3RvcCgpOwotCi0gICAgaWYgKG1fcGVlckhhbmRsZXIpCi0g
ICAgICAgIG1fcGVlckhhbmRsZXItPnN0b3AoKTsKLQotICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5
KHRoaXMpOwotICAgIG1fcGVlckhhbmRsZXIuY2xlYXIoKTsKLQotICAgIGNoYW5nZVJlYWR5U3Rh
dGUoQ0xPU0VEKTsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBQZWVyQ29ubmVjdGlvbjo6ZXZlbnRU
YXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVu
dFRhcmdldERhdGEqIFBlZXJDb25uZWN0aW9uOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewot
ICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb246
OnNjaGVkdWxlSW5pdGlhbE5lZ290aWF0aW9uKCkKLXsKLSAgICBBU1NFUlQoIW1faW5pdGlhbE5l
Z290aWF0aW9uVGltZXIuaXNBY3RpdmUoKSk7Ci0KLSAgICBtX2luaXRpYWxOZWdvdGlhdGlvblRp
bWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6aW5pdGlhbE5l
Z290aWF0aW9uVGltZXJGaXJlZChUaW1lcjxQZWVyQ29ubmVjdGlvbj4qIHRpbWVyKQotewotICAg
IEFTU0VSVF9VTlVTRUQodGltZXIsIHRpbWVyID09ICZtX2luaXRpYWxOZWdvdGlhdGlvblRpbWVy
KTsKLQotICAgIGlmIChtX2ljZVN0YXJ0ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIE1lZGlh
U3RyZWFtRGVzY3JpcHRvclZlY3RvciBwZW5kaW5nQWRkU3RyZWFtczsKLSAgICBtX3BlbmRpbmdB
ZGRTdHJlYW1zLnN3YXAocGVuZGluZ0FkZFN0cmVhbXMpOwotICAgIGlmIChtX3BlZXJIYW5kbGVy
KQotICAgICAgICBtX3BlZXJIYW5kbGVyLT5wcm9kdWNlSW5pdGlhbE9mZmVyKHBlbmRpbmdBZGRT
dHJlYW1zKTsKLQotICAgIG1faWNlU3RhcnRlZCA9IHRydWU7Ci0KLSAgICBjaGFuZ2VSZWFkeVN0
YXRlKE5FR09USUFUSU5HKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6ZW5zdXJlU3RyZWFt
Q2hhbmdlU2NoZWR1bGVkKCkKLXsKLSAgICBpZiAoIW1fc3RyZWFtQ2hhbmdlVGltZXIuaXNBY3Rp
dmUoKSkKLSAgICAgICAgbV9zdHJlYW1DaGFuZ2VUaW1lci5zdGFydE9uZVNob3QoMCk7Ci19Ci0K
LXZvaWQgUGVlckNvbm5lY3Rpb246OnN0cmVhbUNoYW5nZVRpbWVyRmlyZWQoVGltZXI8UGVlckNv
bm5lY3Rpb24+KiB0aW1lcikKLXsKLSAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAm
bV9zdHJlYW1DaGFuZ2VUaW1lcik7Ci0KLSAgICBpZiAoIW1fcGVuZGluZ0FkZFN0cmVhbXMuaXNF
bXB0eSgpICYmICFtX3BlbmRpbmdSZW1vdmVTdHJlYW1zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yIHBlbmRpbmdBZGRTdHJlYW1z
OwotICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciBwZW5kaW5nUmVtb3ZlU3RyZWFtczsK
LQotICAgIG1fcGVuZGluZ0FkZFN0cmVhbXMuc3dhcChwZW5kaW5nQWRkU3RyZWFtcyk7Ci0gICAg
bV9wZW5kaW5nUmVtb3ZlU3RyZWFtcy5zd2FwKHBlbmRpbmdSZW1vdmVTdHJlYW1zKTsKLQotICAg
IGlmIChtX3BlZXJIYW5kbGVyKQotICAgICAgICBtX3BlZXJIYW5kbGVyLT5wcm9jZXNzUGVuZGlu
Z1N0cmVhbXMocGVuZGluZ0FkZFN0cmVhbXMsIHBlbmRpbmdSZW1vdmVTdHJlYW1zKTsKLQotICAg
IGlmICghcGVuZGluZ0FkZFN0cmVhbXMuaXNFbXB0eSgpKQotICAgICAgICBjaGFuZ2VSZWFkeVN0
YXRlKE5FR09USUFUSU5HKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6c2NoZWR1bGVSZWFk
eVN0YXRlQ2hhbmdlKFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKLXsKLSAgICBtX3BlbmRpbmdSZWFk
eVN0YXRlcy5hcHBlbmQocmVhZHlTdGF0ZSk7Ci0gICAgaWYgKCFtX3JlYWR5U3RhdGVDaGFuZ2VU
aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICBtX3JlYWR5U3RhdGVDaGFuZ2VUaW1lci5zdGFydE9u
ZVNob3QoMCk7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb246OnJlYWR5U3RhdGVDaGFuZ2VUaW1l
ckZpcmVkKFRpbWVyPFBlZXJDb25uZWN0aW9uPiogdGltZXIpCi17Ci0gICAgQVNTRVJUX1VOVVNF
RCh0aW1lciwgdGltZXIgPT0gJm1fcmVhZHlTdGF0ZUNoYW5nZVRpbWVyKTsKLQotICAgIFZlY3Rv
cjxSZWFkeVN0YXRlPiBwZW5kaW5nUmVhZHlTdGF0ZXM7Ci0gICAgbV9wZW5kaW5nUmVhZHlTdGF0
ZXMuc3dhcChwZW5kaW5nUmVhZHlTdGF0ZXMpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwZW5kaW5nUmVhZHlTdGF0ZXMuc2l6ZSgpOyBpKyspCi0gICAgICAgIGNoYW5nZVJlYWR5U3Rh
dGUocGVuZGluZ1JlYWR5U3RhdGVzW2ldKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbjo6Y2hh
bmdlUmVhZHlTdGF0ZShSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCi17Ci0gICAgaWYgKHJlYWR5U3Rh
dGUgPT0gbV9yZWFkeVN0YXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3JlYWR5U3RhdGUg
PSByZWFkeVN0YXRlOwotCi0gICAgc3dpdGNoIChtX3JlYWR5U3RhdGUpIHsKLSAgICBjYXNlIE5F
VzoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTkVHT1RJQVRJTkc6Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuY29ubmVjdGluZ0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBBQ1RJVkU6Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkub3BlbkV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBDTE9TRUQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3RhdGVjaGFuZ2VFdmVudCwgZmFsc2UsIGZh
bHNlKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1BlZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMmYyZmIy
ZDQyODI2YjYzNjAwMTU1NmIzNmIzYWFlNzNiZjVjMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgUGVlckNvbm5lY3Rpb25faAotI2RlZmluZSBQZWVyQ29ubmVjdGlv
bl9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25CYXNl
LmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW0uaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbUxpc3Qu
aCIKLSNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKLSNpbmNsdWRlICJQZWVyQ29u
bmVjdGlvbkhhbmRsZXJDbGllbnQuaCIKLSNpbmNsdWRlICJTaWduYWxpbmdDYWxsYmFjay5oIgot
I2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gTm90ZToKLS8vIFNE
UCBzdGFuZHMgZm9yIFNlc3Npb24gRGVzY3JpcHRpb24gUHJvdG9jb2wsIHdoaWNoIGlzIGludGVu
ZGVkIGZvciBkZXNjcmliaW5nCi0vLyBtdWx0aW1lZGlhIHNlc3Npb25zIGZvciB0aGUgcHVycG9z
ZXMgb2Ygc2Vzc2lvbiBhbm5vdW5jZW1lbnQsIHNlc3Npb24KLS8vIGludml0YXRpb24sIGFuZCBv
dGhlciBmb3JtcyBvZiBtdWx0aW1lZGlhIHNlc3Npb24gaW5pdGlhdGlvbi4KLS8vCi0vLyBNb3Jl
IGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBoZXJlOgotLy8gaHR0cDovL3Rvb2xzLmlldGYub3Jn
L2h0bWwvcmZjNDU2NgotLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZXNzaW9uX0Rl
c2NyaXB0aW9uX1Byb3RvY29sCi0KLWNsYXNzIFBlZXJDb25uZWN0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8UGVlckNvbm5lY3Rpb24+LCBwdWJsaWMgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewotcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlZXJDb25uZWN0aW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0
cjxTaWduYWxpbmdDYWxsYmFjaz4pOwotICAgIH5QZWVyQ29ubmVjdGlvbigpOwotCi0gICAgdm9p
ZCBwcm9jZXNzU2lnbmFsaW5nTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEV4Y2VwdGlv
bkNvZGUmKTsKLQotICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwotCi0gICAgdm9p
ZCBzZW5kKGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYWRk
U3RyZWFtKGNvbnN0IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+LCBFeGNlcHRpb25Db2RlJik7Ci0g
ICAgdm9pZCByZW1vdmVTdHJlYW0oTWVkaWFTdHJlYW0qLCBFeGNlcHRpb25Db2RlJik7Ci0gICAg
TWVkaWFTdHJlYW1MaXN0KiBsb2NhbFN0cmVhbXMoKSBjb25zdDsKLSAgICBNZWRpYVN0cmVhbUxp
c3QqIHJlbW90ZVN0cmVhbXMoKSBjb25zdDsKLSAgICB2b2lkIGNsb3NlKEV4Y2VwdGlvbkNvZGUm
KTsKLQotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29ubmVjdGluZyk7Ci0g
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihvcGVuKTsKLSAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKG1lc3NhZ2UpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoc3RhdGVjaGFuZ2UpOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIoYWRkc3RyZWFtKTsKLSAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHJl
bW92ZXN0cmVhbSk7Ci0KLSAgICAvLyBQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVJQ0VQcm9jZXNzaW5nKCk7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEdlbmVyYXRlU0RQKGNvbnN0IFN0cmluZyYgc2RwKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgp
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbURlc2NyaXB0b3I+KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFt
KE1lZGlhU3RyZWFtRGVzY3JpcHRvciopOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTdGF0
ZShSZWFkeVN0YXRlIHN0YXRlKSB7IGNoYW5nZVJlYWR5U3RhdGUoc3RhdGUpOyB9Ci0KLSAgICAv
LyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VO
YW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3Q7Ci0KLSAgICAvLyBBY3RpdmVET01PYmplY3QKLSAgICB2
aXJ0dWFsIHZvaWQgc3RvcCgpOwotCi0gICAgdXNpbmcgUmVmQ291bnRlZDxQZWVyQ29ubmVjdGlv
bj46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkPFBlZXJDb25uZWN0aW9uPjo6ZGVyZWY7Ci0K
LXByaXZhdGU6Ci0gICAgUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgUGFzc1JlZlB0cjxTaWduYWxpbmdDYWxs
YmFjaz4pOwotCi0gICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwotICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSB7IGRlcmVmKCk7IH0KLQotICAgIHZvaWQgc2NoZWR1bGVJbml0aWFsTmVnb3RpYXRpb24o
KTsKLSAgICB2b2lkIGluaXRpYWxOZWdvdGlhdGlvblRpbWVyRmlyZWQoVGltZXI8UGVlckNvbm5l
Y3Rpb24+Kik7Ci0gICAgdm9pZCBlbnN1cmVTdHJlYW1DaGFuZ2VTY2hlZHVsZWQoKTsKLSAgICB2
b2lkIHN0cmVhbUNoYW5nZVRpbWVyRmlyZWQoVGltZXI8UGVlckNvbm5lY3Rpb24+Kik7Ci0gICAg
dm9pZCBzY2hlZHVsZVJlYWR5U3RhdGVDaGFuZ2UoUmVhZHlTdGF0ZSk7Ci0gICAgdm9pZCByZWFk
eVN0YXRlQ2hhbmdlVGltZXJGaXJlZChUaW1lcjxQZWVyQ29ubmVjdGlvbj4qKTsKLQotICAgIHZv
aWQgY2hhbmdlUmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKLQotICAgIFJlZlB0cjxTaWduYWxpbmdD
YWxsYmFjaz4gbV9zaWduYWxpbmdDYWxsYmFjazsKLQotICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0
YXRlOwotICAgIGJvb2wgbV9pY2VTdGFydGVkOwotCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtTGlz
dD4gbV9sb2NhbFN0cmVhbXM7Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtTGlzdD4gbV9yZW1vdGVT
dHJlYW1zOwotCi0gICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAgRXZlbnRU
YXJnZXREYXRhIG1fZXZlbnRUYXJnZXREYXRhOwotCi0gICAgVGltZXI8UGVlckNvbm5lY3Rpb24+
IG1faW5pdGlhbE5lZ290aWF0aW9uVGltZXI7Ci0gICAgVGltZXI8UGVlckNvbm5lY3Rpb24+IG1f
c3RyZWFtQ2hhbmdlVGltZXI7Ci0gICAgVGltZXI8UGVlckNvbm5lY3Rpb24+IG1fcmVhZHlTdGF0
ZUNoYW5nZVRpbWVyOwotCi0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yIG1fcGVuZGlu
Z0FkZFN0cmVhbXM7Ci0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yIG1fcGVuZGluZ1Jl
bW92ZVN0cmVhbXM7Ci0gICAgVmVjdG9yPFJlYWR5U3RhdGU+IG1fcGVuZGluZ1JlYWR5U3RhdGVz
OwotCi0gICAgT3duUHRyPFBlZXJDb25uZWN0aW9uSGFuZGxlcj4gbV9wZWVySGFuZGxlcjsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0KLSNlbmRpZiAvLyBQZWVyQ29ubmVjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaWRsCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3NTQzYTBkYmNlM2M3YjU1YWI0NTAwOTRiZmM2ODdlODMxZDcwODE2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotbW9kdWxlIHAycCB7Ci0KLSAgICBp
bnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCi0gICAgICAgIEFj
dGl2ZURPTU9iamVjdCwKLSAgICAgICAgQ29uc3RydWN0b3IoaW4gRE9NU3RyaW5nIHNlcnZlckNv
bmZpZ3VyYXRpb24sIGluIFtDYWxsYmFja10gU2lnbmFsaW5nQ2FsbGJhY2sgc2lnbmFsaW5nQ2Fs
bGJhY2spLAotICAgICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAotICAgICAg
ICBKU0N1c3RvbUNvbnN0cnVjdG9yLAotICAgICAgICBFdmVudFRhcmdldAotICAgIF0gUGVlckNv
bm5lY3Rpb24gewotICAgICAgICB2b2lkIHByb2Nlc3NTaWduYWxpbmdNZXNzYWdlKGluIERPTVN0
cmluZyBtZXNzYWdlKQotICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0KLSAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTkVXID0gMDsKLSAgICAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgTkVHT1RJQVRJTkcgPSAxOwotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBBQ1RJ
VkUgPSAyOwotICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDTE9TRUQgPSAzOwotICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKLQotICAgICAg
ICB2b2lkIHNlbmQoaW4gRE9NU3RyaW5nIHRleHQpCi0gICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKLSAgICAgICAgW1N0cmljdFR5cGVDaGVja2luZ10gdm9pZCBhZGRTdHJlYW0oaW4g
TWVkaWFTdHJlYW0gc3RyZWFtKQotICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7Ci0g
ICAgICAgIFtTdHJpY3RUeXBlQ2hlY2tpbmddIHZvaWQgcmVtb3ZlU3RyZWFtKGluIE1lZGlhU3Ry
ZWFtIHN0cmVhbSkKLSAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotCi0gICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbUxpc3QgbG9jYWxTdHJlYW1zOwotICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1MaXN0IHJlbW90ZVN0cmVhbXM7Ci0KLSAg
ICAgICAgdm9pZCBjbG9zZSgpCi0gICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLQot
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNvbm5lY3Rpbmc7Ci0gICAgICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ub3BlbjsKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25tZXNzYWdlOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnN0YXRl
Y2hhbmdlOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFkZHN0cmVhbTsKLSAg
ICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmVzdHJlYW07Ci0KLSAgICAgICAg
Ly8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihp
biBET01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50
TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0
aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0
ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgICAgIGJvb2xlYW4g
ZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldmVudCkKLSAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4
Y2VwdGlvbik7Ci0gICAgfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5oCmluZGV4IGE0YTMwZTcxMjY3NTRhNTFj
MzI4YjI4NzQ3NjI2MGFiZDhmYzRiODEuLjY1YWE2MmE2ZjVlZjI5MDBmZDk2NGZkOTNiODUxYjBl
MmQzMGRiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
U2lnbmFsaW5nQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1NpZ25hbGluZ0NhbGxiYWNrLmgKQEAgLTMxLDEyICszMSwxMiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWNsYXNzIFBlZXJDb25uZWN0aW9uOworY2xhc3MgRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uOwogCiBjbGFzcyBTaWduYWxpbmdDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVk
PFNpZ25hbGluZ0NhbGxiYWNrPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2lnbmFsaW5nQ2Fs
bGJhY2soKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoY29uc3QgU3RyaW5nJiwg
UGVlckNvbm5lY3Rpb24qKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KGNvbnN0
IFN0cmluZyYsIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbiopID0gMDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5pZGwKaW5kZXggZTJlMGNlYmQyNmM4MTIwYzIxZDM3
ZWRjZDk4MTNhMDZkZDkyMDQwZC4uNjllNGI5MmY0YTg4Nzc5MmM1ZjFlNTJjMTE2YTIxYzU1YTRm
NmQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TaWdu
YWxpbmdDYWxsYmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9TaWduYWxpbmdDYWxsYmFjay5pZGwKQEAgLTI4LDcgKzI4LDcgQEAgbW9kdWxlIHAycCB7CiAg
ICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKICAgICAgICAgQ2FsbGJhY2sKICAgICBd
IFNpZ25hbGluZ0NhbGxiYWNrIHsKLSAgICAgICAgYm9vbGVhbiBoYW5kbGVFdmVudChpbiBET01T
dHJpbmcgbWVzc2FnZSwgaW4gUGVlckNvbm5lY3Rpb24gc291cmNlKTsKKyAgICAgICAgYm9vbGVh
biBoYW5kbGVFdmVudChpbiBET01TdHJpbmcgbWVzc2FnZSwgaW4gRGVwcmVjYXRlZFBlZXJDb25u
ZWN0aW9uIHNvdXJjZSk7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDA2YjlmNjEy
NmIzZDkwZWFmYzBmYzY3N2E2YWM5OTZiZjdhZDA3N2EuLjdjM2JjOWEzMjAzODBlOTJhYjdkZTAz
YWVhOGEwZjU4YTVmYjMwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQxNSwxMyArNDE1LDEzIEBA
CiAgICAgICAgICAgICAncGxhdGZvcm0vbWFjL1dlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vbWFjL1dlYkNvcmVWaWV3LmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL21hYy9XZWJGb250Q2FjaGUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFz
dHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5oJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVy
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50
ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db21w
b25lbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtU291cmNlLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbW9jay9E
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbW9j
ay9HZW9sb2NhdGlvbkNsaWVudE1vY2suaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29y
ay9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuaCcsCkBAIC03NDksNiArNzQ5LDcgQEAKICAg
ICAgICAgICAgICdNb2R1bGVzL2ludGVudHMvSW50ZW50LmlkbCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9pbnRlbnRzL0ludGVudFJlc3VsdENhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9pbnRlbnRzL05hdmlnYXRvckludGVudHMuaWRsJywKKyAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbi5pZGwnLAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vRE9NV2luZG93TWVkaWFTdHJlYW0uaWRsJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFTdHJlYW0uaWRsJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbCcsCkBAIC03NjAsNyArNzYx
LDYgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRp
YUVycm9yLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JV
c2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaWRsJywKLSAgICAgICAgICAg
ICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy9tZWRpYXN0cmVhbS9TaWduYWxpbmdDYWxsYmFjay5pZGwnLAogICAgICAgICAgICAg
J01vZHVsZXMvc3BlZWNoL0RPTVdpbmRvd1NwZWVjaC5pZGwnLAogICAgICAgICAgICAgJ01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQWx0ZXJuYXRpdmUuaWRsJywKQEAgLTEzNzksNiAr
MTM3OSw4IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9pbnRlbnRzL0ludGVudFJlc3VsdENhbGxi
YWNrLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvaW50ZW50cy9OYXZpZ2F0b3JJbnRlbnRzLmNw
cCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9pbnRlbnRzL05hdmlnYXRvckludGVudHMuaCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb24u
Y3BwJywKKyAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbi5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFT
dHJlYW0uY3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL0xvY2FsTWVkaWFT
dHJlYW0uaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5j
cHAnLApAQCAtMTM5OCwxMiArMTQwMCwxMCBAQAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFz
dHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmgnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNr
LmgnLAotICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24uY3Bw
JywKLSAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uLmgnLAog
ICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vU2lnbmFsaW5nQ2FsbGJhY2suaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDbGllbnQuaCcsCi0gICAg
ICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFDb250cm9sbGVyLmgnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5jcHAnLAor
ICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhQ29udHJvbGxlci5oJywK
ICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwJywK
ICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuaCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25BbHRlcm5hdGl2ZS5j
cHAnLApAQCAtMTY4Miw2ICsxNjgyLDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RP
TVdyYXBwZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RhdGFWaWV3Q3VzdG9t
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEZWRpY2F0ZWRXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEZXByZWNhdGVkUGVlckNv
bm5lY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0Rlc2t0b3BO
b3RpZmljYXRpb25zQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEZXZp
Y2VNb3Rpb25FdmVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGV2
aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAnLApAQCAtMTc2Miw3ICsxNzYzLDYgQEAKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1BlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNQbHVnaW5FbGVtZW50RnVuY3Rpb25zLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNQb3BTdGF0ZUV2ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25DdXN0b20uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXgg
NDUzYjEyMTQxMmFlN2M1OGEwZmY1NWI4Njg0MDZkOTJjN2EyMDMyYS4uOTdlODY4NDgyNTBlYjhm
ZGY1ODA0ZWRlNzAyNWY4N2MzMDBkMTFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgbWVkaWFTdHJlYW1FbmFibGVkKCkgeyBy
ZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRNZWRpYVN0
cmVhbUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNNZWRpYVN0cmVhbUVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KICAgICBzdGF0aWMgYm9vbCB3ZWJraXRHZXRVc2VyTWVkaWFFbmFibGVkKCkgeyBy
ZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRQZWVy
Q29ubmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQorICAg
IHN0YXRpYyBib29sIHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSB7IHJl
dHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0FNRVBB
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNDk4NmMzOWM4ZTQw
OTA3YjMwMjdlODU5MjUyN2E4YWQ5MGNjMjVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25DdXN0b20uY3BwCkBA
IC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJKU0RlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbi5oIgorCisjaW5jbHVkZSAiQ2FsbGJhY2tGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkRlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIkpTU2lnbmFsaW5nQ2FsbGJhY2suaCIK
KyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0RlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0RlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNEZXByZWNhdGVkUGVlckNvbm5l
Y3Rpb25Db25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IHN0YXRpY19jYXN0PEpTRGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7CisgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgIkRlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbiBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlIikpOwor
CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3VtZW50
cyIpKTsKKworICAgIFN0cmluZyBzZXJ2ZXJDb25maWd1cmF0aW9uID0gdXN0cmluZ1RvU3RyaW5n
KGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CisKKyAgICBSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IHNpZ25hbGluZ0NhbGxi
YWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNTaWduYWxpbmdDYWxsYmFjaz4oZXhl
Yywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAgICBSZWZQ
dHI8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uPiBwZWVyQ29ubmVjdGlvbiA9IERlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHNlcnZlckNvbmZpZ3VyYXRpb24sIHNpZ25h
bGluZ0NhbGxiYWNrLnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShDUkVB
VEVfRE9NX1dSQVBQRVIoZXhlYywganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCksIERlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbiwgcGVlckNvbm5lY3Rpb24uZ2V0KCkpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVlckNvbm5lY3Rpb25DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3RvbS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMzdmOTE1OTVlODQ5Zjg0MjhlYzJh
M2Y5YmI0YjE4OGE3ZDhkNzcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZWVyQ29ubmVjdGlvbkN1c3Rv
bS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAi
SlNQZWVyQ29ubmVjdGlvbi5oIgotCi0jaW5jbHVkZSAiQ2FsbGJhY2tGdW5jdGlvbi5oIgotI2lu
Y2x1ZGUgIkpTU2lnbmFsaW5nQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbi5o
IgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTUGVl
ckNvbm5lY3Rpb25Db25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNQZWVyQ29ubmVjdGlvbihFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgSlNQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yKiBqc0NvbnN0cnVj
dG9yID0gc3RhdGljX2Nhc3Q8SlNQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yKj4oZXhlYy0+Y2Fs
bGVlKCkpOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0NvbnN0cnVj
dG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJQ
ZWVyQ29ubmVjdGlvbiBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxh
YmxlIikpOwotCi0gICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOb3QgZW5vdWdo
IGFyZ3VtZW50cyIpKTsKLQotICAgIFN0cmluZyBzZXJ2ZXJDb25maWd1cmF0aW9uID0gdXN0cmlu
Z1RvU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7
Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7Ci0KLSAgICBSZWZQdHI8U2lnbmFsaW5nQ2FsbGJhY2s+IHNpZ25h
bGluZ0NhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNTaWduYWxpbmdDYWxs
YmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgxKSk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0K
LSAgICBSZWZQdHI8UGVlckNvbm5lY3Rpb24+IHBlZXJDb25uZWN0aW9uID0gUGVlckNvbm5lY3Rp
b246OmNyZWF0ZShjb250ZXh0LCBzZXJ2ZXJDb25maWd1cmF0aW9uLCBzaWduYWxpbmdDYWxsYmFj
ay5yZWxlYXNlKCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9XUkFQ
UEVSKGV4ZWMsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9iamVjdCgpLCBQZWVyQ29ubmVjdGlvbiwg
cGVlckNvbm5lY3Rpb24uZ2V0KCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKaW5k
ZXggYmFkZTQ0NGY1M2I5NjhiMzM2YjE5Y2Q1NDNhZDZjNTQ1ZDU2ODg4Zi4uZjM4N2U0MjczZWUy
NmEyMDZiNmQ3OTk5MWRlMzJkOWRiNTVlMmE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgK
QEAgLTYwLDcgKzYwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE1lc3NhZ2VQ
b3J0OwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgTm90aWZpY2F0aW9uOwotICAgIGNsYXNz
IFBlZXJDb25uZWN0aW9uOwogICAgIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKICAgICBjbGFz
cyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIFNoYXJlZFdvcmtlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDc4Mzk2YmQzYzg0ODE2ZTFh
NWZkM2ZkM2RhY2Y1MjgzZWM5ZDY5ZDAuLjYxOTU4NzM5MzgyNzBkMzZiNzY2NWRjOWRjZWQxYjk4
MTVkYWVhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAt
NCw2ICs0LDcgQEAgQXVkaW9Db250ZXh0IGNvbmRpdGlvbmFsPVdFQl9BVURJTwogRGVkaWNhdGVk
V29ya2VyQ29udGV4dCBjb25kaXRpb25hbD1XT1JLRVJTCiBET01BcHBsaWNhdGlvbkNhY2hlCiBE
T01XaW5kb3cKK0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbiBjb25kaXRpb25hbD1NRURJQV9TVFJF
QU0KIEV2ZW50U291cmNlCiBGaWxlUmVhZGVyIGNvbmRpdGlvbmFsPUJMT0IKIEZpbGVXcml0ZXIg
Y29uZGl0aW9uYWw9RklMRV9TWVNURU0KQEAgLTE4LDcgKzE5LDYgQEAgTWVkaWFTdHJlYW0gY29u
ZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZXNzYWdlUG9ydAogTm9kZQogTm90aWZpY2F0aW9uIGNv
bmRpdGlvbmFsPU5PVElGSUNBVElPTlMKLVBlZXJDb25uZWN0aW9uIGNvbmRpdGlvbmFsPU1FRElB
X1NUUkVBTQogU2hhcmVkV29ya2VyIGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTaGFyZWRX
b3JrZXJDb250ZXh0IGNvbmRpdGlvbmFsPVNIQVJFRF9XT1JLRVJTCiBTVkdFbGVtZW50SW5zdGFu
Y2UgY29uZGl0aW9uYWw9U1ZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmUzNGRlNTZkZGRiMGYyNmM3ZWZlMDgzMjUzOWY4ODA4NmQzZWJlNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0Rl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaApAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAg
ICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0
aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcl9oCisjZGVmaW5lIERlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKwor
I2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRGVwcmVjYXRlZFBlZXJDb25uZWN0
aW9uSGFuZGxlckNsaWVudDsKKworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorY2xhc3MgRGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOworI2VuZGlmCisKK2NsYXNzIERlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXIpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPERlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbkhhbmRsZXI+IGNyZWF0ZShEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
KiwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb25zdCBTdHJpbmcmIHVzZXJu
YW1lKTsKKyAgICB+RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcigpOworCisgICAgdm9p
ZCBwcm9kdWNlSW5pdGlhbE9mZmVyKGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciYg
cGVuZGluZ0FkZFN0cmVhbXMpOworICAgIHZvaWQgaGFuZGxlSW5pdGlhbE9mZmVyKGNvbnN0IFN0
cmluZyYgc2RwKTsKKyAgICB2b2lkIHByb2Nlc3NTRFAoY29uc3QgU3RyaW5nJiBzZHApOworICAg
IHZvaWQgcHJvY2Vzc1BlbmRpbmdTdHJlYW1zKGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZl
Y3RvciYgcGVuZGluZ0FkZFN0cmVhbXMsIGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3Rv
ciYgcGVuZGluZ1JlbW92ZVN0cmVhbXMpOworICAgIHZvaWQgc2VuZERhdGFTdHJlYW1NZXNzYWdl
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworCisgICAgdm9pZCBzdG9wKCk7CisK
K3ByaXZhdGU6CisgICAgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcihEZXByZWNhdGVk
UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1
cmF0aW9uLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lKTsKKworI2lmIFBMQVRGT1JNKENIUk9NSVVN
KQorICAgIE93blB0cjxEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw+IG1f
cHJpdmF0ZTsKKyNlbGlmIFVTRShHU1RSRUFNRVIpCisgICAgRGVwcmVjYXRlZFBlZXJDb25uZWN0
aW9uSGFuZGxlckNsaWVudCogbV9jbGllbnQ7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNlbmRpZiAvLyBE
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL0RlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmM3ZjA5ZWEwMmQyNzJk
MzBiNTIyNTJhNzI0MmE1ZjM4YmEzMzg4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudC5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGVwcmVjYXRlZFBlZXJDb25uZWN0
aW9uSGFuZGxlckNsaWVudF9oCisjZGVmaW5lIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJDbGllbnRfaAorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOworCitjbGFzcyBEZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAvLyBOYW1l
IGFuZCB2YWx1ZXMgb2YgdGhlIGVudW0gbXVzdCBtYXRjaCB0aGUgY29ycmVzc3BvbmRpbmcgY29u
c3RhbnRzIGluIHRoZSBQZWVyQ29ubmVjdGlvbi5pZGwgZmlsZS4KKyAgICBlbnVtIFJlYWR5U3Rh
dGUgeworICAgICAgICBORVcgPSAwLAorICAgICAgICBORUdPVElBVElORyA9IDEsCisgICAgICAg
IEFDVElWRSA9IDIsCisgICAgICAgIENMT1NFRCA9IDMKKyAgICB9OworCisgICAgdmlydHVhbCB+
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCgpIHsgfQorCisgICAgdmlydHVh
bCB2b2lkIGRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkR2VuZXJhdGVTRFAoY29uc3QgU3RyaW5nJiBzZHApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5n
dGgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFtKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1EZXNjcmlwdG9yPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVS
ZW1vdGVTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VTdGF0ZShSZWFkeVN0YXRlKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gRGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uSGFuZGxlci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTIyY2Y0YzdjYTQyODA1NTI5OTNlNDIz
ZWFiZWNkODczZGYxYWM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
SGFuZGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogICAgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogICAgZGlzdHJp
YnV0aW9uLgotICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3IgdGhlIG5hbWVz
IG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICAgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFBl
ZXJDb25uZWN0aW9uSGFuZGxlcl9oCi0jZGVmaW5lIFBlZXJDb25uZWN0aW9uSGFuZGxlcl9oCi0K
LSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQ7Ci0KLSNpZiBQTEFURk9STShDSFJP
TUlVTSkKLWNsYXNzIFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOwotI2VuZGlmCi0KLWNs
YXNzIFBlZXJDb25uZWN0aW9uSGFuZGxlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGVl
ckNvbm5lY3Rpb25IYW5kbGVyKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxQZWVyQ29ubmVjdGlvbkhhbmRsZXI+IGNyZWF0ZShQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3Vy
YXRpb24sIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUpOwotICAgIH5QZWVyQ29ubmVjdGlvbkhhbmRs
ZXIoKTsKLQotICAgIHZvaWQgcHJvZHVjZUluaXRpYWxPZmZlcihjb25zdCBNZWRpYVN0cmVhbURl
c2NyaXB0b3JWZWN0b3ImIHBlbmRpbmdBZGRTdHJlYW1zKTsKLSAgICB2b2lkIGhhbmRsZUluaXRp
YWxPZmZlcihjb25zdCBTdHJpbmcmIHNkcCk7Ci0gICAgdm9pZCBwcm9jZXNzU0RQKGNvbnN0IFN0
cmluZyYgc2RwKTsKLSAgICB2b2lkIHByb2Nlc3NQZW5kaW5nU3RyZWFtcyhjb25zdCBNZWRpYVN0
cmVhbURlc2NyaXB0b3JWZWN0b3ImIHBlbmRpbmdBZGRTdHJlYW1zLCBjb25zdCBNZWRpYVN0cmVh
bURlc2NyaXB0b3JWZWN0b3ImIHBlbmRpbmdSZW1vdmVTdHJlYW1zKTsKLSAgICB2b2lkIHNlbmRE
YXRhU3RyZWFtTWVzc2FnZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKLQotICAg
IHZvaWQgc3RvcCgpOwotCi1wcml2YXRlOgotICAgIFBlZXJDb25uZWN0aW9uSGFuZGxlcihQZWVy
Q29ubmVjdGlvbkhhbmRsZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRp
b24sIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUpOwotCi0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0g
ICAgT3duUHRyPFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsPiBtX3ByaXZhdGU7Ci0jZWxp
ZiBVU0UoR1NUUkVBTUVSKQotICAgIFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogbV9jbGll
bnQ7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBQZWVyQ29ubmVjdGlvbkhhbmRsZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTY3ZWYzYTU1ODQwM2E5Yjg1ZDc0YWRlNzEyNDUzODNhNjJjNjg3ZS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEFC
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiAgICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwot
ICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xp
ZW50X2gKLSNkZWZpbmUgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50X2gKLQotI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcjsKLQotY2xhc3MgUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
IHsKLXB1YmxpYzoKLSAgICAvLyBOYW1lIGFuZCB2YWx1ZXMgb2YgdGhlIGVudW0gbXVzdCBtYXRj
aCB0aGUgY29ycmVzc3BvbmRpbmcgY29uc3RhbnRzIGluIHRoZSBQZWVyQ29ubmVjdGlvbi5pZGwg
ZmlsZS4KLSAgICBlbnVtIFJlYWR5U3RhdGUgewotICAgICAgICBORVcgPSAwLAotICAgICAgICBO
RUdPVElBVElORyA9IDEsCi0gICAgICAgIEFDVElWRSA9IDIsCi0gICAgICAgIENMT1NFRCA9IDMK
LSAgICB9OwotCi0gICAgdmlydHVhbCB+UGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KCkgeyB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVJQ0VQcm9jZXNzaW5nKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRHZW5lcmF0ZVNEUChjb25zdCBTdHJpbmcmIHNkcCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YVN0cmVhbU1lc3NhZ2UoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVTdHJl
YW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlbW92ZVJlbW90ZVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVN0YXRlKFJlYWR5U3RhdGUpID0gMDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0K
LSNlbmRpZiAvLyBQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0RlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbkhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ2ZTNkNTg2NjM3YzRkN2MzMGUxNTM2NzEyNTMwZTRjZjIwNjNiNTgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvRGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBFcmljc3NvbiBub3Ig
dGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5oIgorCisjaW5jbHVkZSAiRGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1Bhc3NPd25QdHI8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcj4gRGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlKERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBj
b25zdCBTdHJpbmcmIHVzZXJuYW1lKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcihjbGllbnQsIHNlcnZlckNvbmZpZ3VyYXRpb24sIHVz
ZXJuYW1lKSk7Cit9CisKKy8vIEVtcHR5IGltcGxlbWVudGF0aW9ucyBmb3IgcG9ydHMgdGhhdCBi
dWlsZCB3aXRoIE1FRElBX1NUUkVBTSBlbmFibGVkIGJ5IGRlZmF1bHQuCitEZXByZWNhdGVkUGVl
ckNvbm5lY3Rpb25IYW5kbGVyOjpEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyKERlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKQoreworfQorCitEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjp+RGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uSGFuZGxlcjo6cHJvZHVjZUluaXRpYWxPZmZlcihjb25zdCBNZWRpYVN0cmVhbURl
c2NyaXB0b3JWZWN0b3ImKQoreworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhh
bmRsZXI6OmhhbmRsZUluaXRpYWxPZmZlcihjb25zdCBTdHJpbmcmKQoreworfQorCit2b2lkIERl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnByb2Nlc3NTRFAoY29uc3QgU3RyaW5nJikK
K3sKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpwcm9jZXNzUGVu
ZGluZ1N0cmVhbXMoY29uc3QgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yJiwgY29uc3QgTWVk
aWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yJikKK3sKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNv
bm5lY3Rpb25IYW5kbGVyOjpzZW5kRGF0YVN0cmVhbU1lc3NhZ2UoY29uc3QgY2hhciosIHNpemVf
dCkKK3sKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzdG9wKCkK
K3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9QZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MTI5MzQxMmRlMjJiM2UzYzM4M2NjMzFhMWQ0
YjA3YTU1MmYyY2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL1BlZXJDb25u
ZWN0aW9uSGFuZGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiAgICBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiAg
ICBkaXN0cmlidXRpb24uCi0gKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0
aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgICBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRl
ICJQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKLQotI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uSGFu
ZGxlckNsaWVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NPd25QdHI8UGVlckNv
bm5lY3Rpb25IYW5kbGVyPiBQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OmNyZWF0ZShQZWVyQ29ubmVj
dGlvbkhhbmRsZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0
aW9uLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcg
UGVlckNvbm5lY3Rpb25IYW5kbGVyKGNsaWVudCwgc2VydmVyQ29uZmlndXJhdGlvbiwgdXNlcm5h
bWUpKTsKLX0KLQotLy8gRW1wdHkgaW1wbGVtZW50YXRpb25zIGZvciBwb3J0cyB0aGF0IGJ1aWxk
IHdpdGggTUVESUFfU1RSRUFNIGVuYWJsZWQgYnkgZGVmYXVsdC4KLVBlZXJDb25uZWN0aW9uSGFu
ZGxlcjo6UGVlckNvbm5lY3Rpb25IYW5kbGVyKFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCos
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCi17Ci19Ci0KLVBlZXJDb25uZWN0aW9uSGFu
ZGxlcjo6flBlZXJDb25uZWN0aW9uSGFuZGxlcigpCi17Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rp
b25IYW5kbGVyOjpwcm9kdWNlSW5pdGlhbE9mZmVyKGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRv
clZlY3RvciYpCi17Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpoYW5kbGVJbml0
aWFsT2ZmZXIoY29uc3QgU3RyaW5nJikKLXsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbkhhbmRs
ZXI6OnByb2Nlc3NTRFAoY29uc3QgU3RyaW5nJikKLXsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlv
bkhhbmRsZXI6OnByb2Nlc3NQZW5kaW5nU3RyZWFtcyhjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0
b3JWZWN0b3ImLCBjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3ImKQotewotfQotCi12
b2lkIFBlZXJDb25uZWN0aW9uSGFuZGxlcjo6c2VuZERhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNo
YXIqLCBzaXplX3QpCi17Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpzdG9wKCkK
LXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAxZTFhNDE2NjVlNzlkZDJj
YTVkMzhhZGVkNjk1ODUxOWUxNTc0MTQzLi4yYWZlN2JiNjJlMzEzMDVhNmI5ZDAxM2FjMGJmOTk3
MDJjMGU3YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC05MSwxMiArOTEsMTIg
QEAKICAgICAgICAgICAgICAgICAnV0VCS0lUX0lNUExFTUVOVEFUSU9OPTEnLAogICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICdzb3VyY2VzJzogWworICAgICAgICAgICAgICAgICdicmlkZ2Uv
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAnLAorICAgICAgICAgICAgICAgICdi
cmlkZ2UvRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmNwcCcsCisgICAg
ICAgICAgICAgICAgJ2JyaWRnZS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJu
YWwuaCcsCiAgICAgICAgICAgICAgICAgJ2JyaWRnZS9NZWRpYVN0cmVhbUNlbnRlci5jcHAnLAog
ICAgICAgICAgICAgICAgICdicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5jcHAnLAog
ICAgICAgICAgICAgICAgICdicmlkZ2UvTWVkaWFTdHJlYW1DZW50ZXJJbnRlcm5hbC5oJywKLSAg
ICAgICAgICAgICAgICAnYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAnLAotICAgICAg
ICAgICAgICAgICdicmlkZ2UvUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwuY3BwJywKLSAg
ICAgICAgICAgICAgICAnYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbi5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkFjY2Vzc2liaWxpdHlPYmplY3QuaCcsCiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Um9sZS5oJywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhh
bmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9icmlkZ2UvRGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uSGFuZGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBkNWYxN2UzOTU3OWViYzY3MzBkYzU5
YmE1Y2JjMmNiOTBhOTc2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vYnJpZGdlL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCkBAIC0wLDAgKzEs
ODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlci5oIgorCisjaW5jbHVkZSAi
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oIgorI2luY2x1ZGUgIkRlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1Bhc3NPd25QdHI8RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcj4gRGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcjo6Y3JlYXRlKERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlv
bkhhbmRsZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9u
LCBjb25zdCBTdHJpbmcmIHVzZXJuYW1lKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgRGVw
cmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlcihjbGllbnQsIHNlcnZlckNvbmZpZ3VyYXRpb24s
IHVzZXJuYW1lKSk7Cit9CisKK0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OkRlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXIoRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIGNvbnN0
IFN0cmluZyYgdXNlcm5hbWUpCisgICAgOiBtX3ByaXZhdGUoYWRvcHRQdHIobmV3IERlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbChjbGllbnQsIHNlcnZlckNvbmZpZ3VyYXRp
b24sIHVzZXJuYW1lKSkpCit7Cit9CisKK0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6
On5EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyKCkKK3sKK30KKwordm9pZCBEZXByZWNh
dGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpwcm9kdWNlSW5pdGlhbE9mZmVyKGNvbnN0IE1lZGlh
U3RyZWFtRGVzY3JpcHRvclZlY3RvciYgcGVuZGluZ0FkZFN0cmVhbXMpCit7CisgICAgbV9wcml2
YXRlLT5wcm9kdWNlSW5pdGlhbE9mZmVyKHBlbmRpbmdBZGRTdHJlYW1zKTsKK30KKwordm9pZCBE
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpoYW5kbGVJbml0aWFsT2ZmZXIoY29uc3Qg
U3RyaW5nJiBzZHApCit7CisgICAgbV9wcml2YXRlLT5oYW5kbGVJbml0aWFsT2ZmZXIoc2RwKTsK
K30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpwcm9jZXNzU0RQKGNv
bnN0IFN0cmluZyYgc2RwKQoreworICAgIG1fcHJpdmF0ZS0+cHJvY2Vzc1NEUChzZHApOworfQor
Cit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnByb2Nlc3NQZW5kaW5nU3Ry
ZWFtcyhjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3ImIHBlbmRpbmdBZGRTdHJlYW1z
LCBjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0b3JWZWN0b3ImIHBlbmRpbmdSZW1vdmVTdHJlYW1z
KQoreworICAgIG1fcHJpdmF0ZS0+cHJvY2Vzc1BlbmRpbmdTdHJlYW1zKHBlbmRpbmdBZGRTdHJl
YW1zLCBwZW5kaW5nUmVtb3ZlU3RyZWFtcyk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25u
ZWN0aW9uSGFuZGxlcjo6c2VuZERhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpCit7CisgICAgbV9wcml2YXRlLT5zZW5kRGF0YVN0cmVhbU1lc3NhZ2UoZGF0
YSwgbGVuZ3RoKTsKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpz
dG9wKCkKK3sKKyAgICBtX3ByaXZhdGUtPnN0b3AoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL0RlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJ
bnRlcm5hbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9EZXByZWNhdGVkUGVl
ckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1OTUwNzNiNTZmNWRh
Nzk5YTNhMDlhOWI5MTg2OWFhZGI4YmFmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL2JyaWRnZS9EZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJu
YWwuY3BwCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJJbnRlcm5hbC5oIgorCisjaW5jbHVkZSAiRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxl
ckNsaWVudC5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV2ViS2l0
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVy
SW50ZXJuYWw6OkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbChEZXByZWNh
dGVkUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgc2Vy
dmVyQ29uZmlndXJhdGlvbiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSkKKyAgICA6IG1fY2xpZW50
KGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIG1fd2ViSGFuZGxlciA9IGFk
b3B0UHRyKFdlYktpdDo6d2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNyZWF0ZVBlZXJDb25uZWN0
aW9uSGFuZGxlcih0aGlzKSk7CisgICAgLy8gRklYTUU6IFdoZW4gdGhlcmUgaXMgc29tZSBlcnJv
ciByZXBvcnRpbmcgYXZhbGlhYmxlIGluIHRoZSBQZWVyQ29ubmVjdGlvbiBvYmplY3QgcmVwb3J0
CisgICAgLy8gaWYgd2UgZGlkbid0IGdldCBhIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlciBpbnN0
YW5jZS4KKworICAgIGlmIChtX3dlYkhhbmRsZXIpIHsKKyAgICAgICAgLy8gRHVhbCBjYWxscyBk
dWUgdG8gQVBJIGNoYW5nZQorICAgICAgICBtX3dlYkhhbmRsZXItPmluaXRpYWxpemUoc2VydmVy
Q29uZmlndXJhdGlvbiwgdXNlcm5hbWUpOworCisgICAgICAgIC8vIERFUFJFQ0FURUQKKyAgICAg
ICAgbV93ZWJIYW5kbGVyLT5pbml0aWFsaXplKHNlcnZlckNvbmZpZ3VyYXRpb24sIFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHVzZXJuYW1lKSk7CisgICAgfQorfQorCitEZXByZWNh
dGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6On5EZXByZWNhdGVkUGVlckNvbm5lY3Rp
b25IYW5kbGVySW50ZXJuYWwoKQoreworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlv
bkhhbmRsZXJJbnRlcm5hbDo6cHJvZHVjZUluaXRpYWxPZmZlcihjb25zdCBNZWRpYVN0cmVhbURl
c2NyaXB0b3JWZWN0b3ImIHBlbmRpbmdBZGRTdHJlYW1zKQoreworICAgIGlmIChtX3dlYkhhbmRs
ZXIpCisgICAgICAgIG1fd2ViSGFuZGxlci0+cHJvZHVjZUluaXRpYWxPZmZlcihwZW5kaW5nQWRk
U3RyZWFtcyk7Cit9CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVy
bmFsOjpoYW5kbGVJbml0aWFsT2ZmZXIoY29uc3QgU3RyaW5nJiBzZHApCit7CisgICAgaWYgKG1f
d2ViSGFuZGxlcikKKyAgICAgICAgbV93ZWJIYW5kbGVyLT5oYW5kbGVJbml0aWFsT2ZmZXIoc2Rw
KTsKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OnBy
b2Nlc3NTRFAoY29uc3QgU3RyaW5nJiBzZHApCit7CisgICAgaWYgKG1fd2ViSGFuZGxlcikKKyAg
ICAgICAgbV93ZWJIYW5kbGVyLT5wcm9jZXNzU0RQKHNkcCk7Cit9CisKK3ZvaWQgRGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOjpwcm9jZXNzUGVuZGluZ1N0cmVhbXMoY29u
c3QgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5nQWRkU3RyZWFtcywgY29uc3Qg
TWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5nUmVtb3ZlU3RyZWFtcykKK3sKKyAg
ICBpZiAobV93ZWJIYW5kbGVyKQorICAgICAgICBtX3dlYkhhbmRsZXItPnByb2Nlc3NQZW5kaW5n
U3RyZWFtcyhwZW5kaW5nQWRkU3RyZWFtcywgcGVuZGluZ1JlbW92ZVN0cmVhbXMpOworfQorCit2
b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6c2VuZERhdGFTdHJl
YW1NZXNzYWdlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKG1f
d2ViSGFuZGxlcikKKyAgICAgICAgbV93ZWJIYW5kbGVyLT5zZW5kRGF0YVN0cmVhbU1lc3NhZ2Uo
ZGF0YSwgbGVuZ3RoKTsKK30KKwordm9pZCBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb25IYW5kbGVy
SW50ZXJuYWw6OnN0b3AoKQoreworICAgIGlmIChtX3dlYkhhbmRsZXIpCisgICAgICAgIG1fd2Vi
SGFuZGxlci0+c3RvcCgpOworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRs
ZXJJbnRlcm5hbDo6ZGlkQ29tcGxldGVJQ0VQcm9jZXNzaW5nKCkKK3sKKyAgICBpZiAobV93ZWJI
YW5kbGVyKQorICAgICAgICBtX2NsaWVudC0+ZGlkQ29tcGxldGVJQ0VQcm9jZXNzaW5nKCk7Cit9
CisKK3ZvaWQgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOjpkaWRHZW5l
cmF0ZVNEUChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgc2RwKQoreworICAgIGlmIChtX3dlYkhh
bmRsZXIpCisgICAgICAgIG1fY2xpZW50LT5kaWRHZW5lcmF0ZVNEUChzZHApOworfQorCit2b2lk
IERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6ZGlkUmVjZWl2ZURhdGFT
dHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYg
KG1fd2ViSGFuZGxlcikKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhU3RyZWFtTWVz
c2FnZShkYXRhLCBsZW5ndGgpOworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhh
bmRsZXJJbnRlcm5hbDo6ZGlkQWRkUmVtb3RlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yJiB3ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpCit7CisgICAgaWYgKG1f
d2ViSGFuZGxlcikKKyAgICAgICAgbV9jbGllbnQtPmRpZEFkZFJlbW90ZVN0cmVhbSh3ZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3IpOworfQorCit2b2lkIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhh
bmRsZXJJbnRlcm5hbDo6ZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yJiB3ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpCit7CisgICAgaWYg
KG1fd2ViSGFuZGxlcikKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlbW92ZVJlbW90ZVN0cmVhbSh3
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9icmlkZ2UvRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9EZXByZWNhdGVkUGVlckNvbm5lY3Rp
b25IYW5kbGVySW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kN2ZhYjdmNzMwODEyZDBmZTI0Nzc5YmJm
YmZlNGU2ZDQ1NjU2MDliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9icmlkZ2UvRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmgKQEAgLTAs
MCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFs
X2gKKyNkZWZpbmUgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsX2gKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0
b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQu
aCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudDsKKworY2xhc3MgRGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsIDogcHVibGljIFdlYktpdDo6V2ViUGVl
ckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBEZXByZWNhdGVkUGVlckNv
bm5lY3Rpb25IYW5kbGVySW50ZXJuYWwoRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudCosIGNvbnN0IFN0cmluZyYgc2VydmVyQ29uZmlndXJhdGlvbiwgY29uc3QgU3RyaW5nJiB1
c2VybmFtZSk7CisgICAgfkRlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbCgp
OworCisgICAgdmlydHVhbCB2b2lkIHByb2R1Y2VJbml0aWFsT2ZmZXIoY29uc3QgTWVkaWFTdHJl
YW1EZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5nQWRkU3RyZWFtcyk7CisgICAgdmlydHVhbCB2b2lk
IGhhbmRsZUluaXRpYWxPZmZlcihjb25zdCBTdHJpbmcmIHNkcCk7CisgICAgdmlydHVhbCB2b2lk
IHByb2Nlc3NTRFAoY29uc3QgU3RyaW5nJiBzZHApOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
UGVuZGluZ1N0cmVhbXMoY29uc3QgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5n
QWRkU3RyZWFtcywgY29uc3QgTWVkaWFTdHJlYW1EZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5nUmVt
b3ZlU3RyZWFtcyk7CisgICAgdmlydHVhbCB2b2lkIHNlbmREYXRhU3RyZWFtTWVzc2FnZShjb25z
dCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwor
CisgICAgLy8gV2ViS2l0OjpXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQgaW1wbGVtZW50
YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpOworICAg
IHZpcnR1YWwgdm9pZCBkaWRHZW5lcmF0ZVNEUChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgc2Rw
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRSZW1vdGVT
dHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVtb3ZlUmVtb3RlU3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJl
YW1EZXNjcmlwdG9yJik7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYktpdDo6V2ViUGVlckNv
bm5lY3Rpb25IYW5kbGVyPiBtX3dlYkhhbmRsZXI7CisgICAgRGVwcmVjYXRlZFBlZXJDb25uZWN0
aW9uSGFuZGxlckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjZW5kaWYgLy8gRGVwcmVjYXRl
ZFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL2JyaWRnZS9QZWVyQ29ubmVjdGlvbkhhbmRsZXIuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBjNTliMmQ0NmNjMmM0NzA0N2RlN2ZiZDJiZGEyMzI2YjFkZGRm
OTg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uSGFuZGxlci5oIgotCi0j
aW5jbHVkZSAiUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiUGVlckNv
bm5lY3Rpb25IYW5kbGVySW50ZXJuYWwuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNz
T3duUHRyPFBlZXJDb25uZWN0aW9uSGFuZGxlcj4gUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpjcmVh
dGUoUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgc2Vy
dmVyQ29uZmlndXJhdGlvbiwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSkKLXsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFBlZXJDb25uZWN0aW9uSGFuZGxlcihjbGllbnQsIHNlcnZlckNvbmZpZ3Vy
YXRpb24sIHVzZXJuYW1lKSk7Ci19Ci0KLVBlZXJDb25uZWN0aW9uSGFuZGxlcjo6UGVlckNvbm5l
Y3Rpb25IYW5kbGVyKFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogY2xpZW50LCBjb25zdCBT
dHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUpCi0gICAg
OiBtX3ByaXZhdGUoYWRvcHRQdHIobmV3IFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsKGNs
aWVudCwgc2VydmVyQ29uZmlndXJhdGlvbiwgdXNlcm5hbWUpKSkKLXsKLX0KLQotUGVlckNvbm5l
Y3Rpb25IYW5kbGVyOjp+UGVlckNvbm5lY3Rpb25IYW5kbGVyKCkKLXsKLX0KLQotdm9pZCBQZWVy
Q29ubmVjdGlvbkhhbmRsZXI6OnByb2R1Y2VJbml0aWFsT2ZmZXIoY29uc3QgTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yVmVjdG9yJiBwZW5kaW5nQWRkU3RyZWFtcykKLXsKLSAgICBtX3ByaXZhdGUtPnBy
b2R1Y2VJbml0aWFsT2ZmZXIocGVuZGluZ0FkZFN0cmVhbXMpOwotfQotCi12b2lkIFBlZXJDb25u
ZWN0aW9uSGFuZGxlcjo6aGFuZGxlSW5pdGlhbE9mZmVyKGNvbnN0IFN0cmluZyYgc2RwKQotewot
ICAgIG1fcHJpdmF0ZS0+aGFuZGxlSW5pdGlhbE9mZmVyKHNkcCk7Ci19Ci0KLXZvaWQgUGVlckNv
bm5lY3Rpb25IYW5kbGVyOjpwcm9jZXNzU0RQKGNvbnN0IFN0cmluZyYgc2RwKQotewotICAgIG1f
cHJpdmF0ZS0+cHJvY2Vzc1NEUChzZHApOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uSGFuZGxl
cjo6cHJvY2Vzc1BlbmRpbmdTdHJlYW1zKGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3Rv
ciYgcGVuZGluZ0FkZFN0cmVhbXMsIGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciYg
cGVuZGluZ1JlbW92ZVN0cmVhbXMpCi17Ci0gICAgbV9wcml2YXRlLT5wcm9jZXNzUGVuZGluZ1N0
cmVhbXMocGVuZGluZ0FkZFN0cmVhbXMsIHBlbmRpbmdSZW1vdmVTdHJlYW1zKTsKLX0KLQotdm9p
ZCBQZWVyQ29ubmVjdGlvbkhhbmRsZXI6OnNlbmREYXRhU3RyZWFtTWVzc2FnZShjb25zdCBjaGFy
KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQotewotICAgIG1fcHJpdmF0ZS0+c2VuZERhdGFTdHJlYW1N
ZXNzYWdlKGRhdGEsIGxlbmd0aCk7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVyOjpz
dG9wKCkKLXsKLSAgICBtX3ByaXZhdGUtPnN0b3AoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFuZGxlcklu
dGVybmFsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhmNjFmN2YwYmJjMDdh
ZTRmZDBjODlhN2E1NDM4NzVjMWUyZjk2Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9QZWVyQ29ubmVj
dGlvbkhhbmRsZXJJbnRlcm5hbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0g
KiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRl
ICJQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbC5oIgotCi0jaW5jbHVkZSAiUGVlckNvbm5l
Y3Rpb25IYW5kbGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNs
dWRlICJXZWJLaXQuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQu
aCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKLSNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBlZXJDb25uZWN0aW9uSGFuZGxl
ckludGVybmFsOjpQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbChQZWVyQ29ubmVjdGlvbkhh
bmRsZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBj
b25zdCBTdHJpbmcmIHVzZXJuYW1lKQotICAgIDogbV9jbGllbnQoY2xpZW50KQotewotICAgIEFT
U0VSVChtX2NsaWVudCk7Ci0gICAgbV93ZWJIYW5kbGVyID0gYWRvcHRQdHIoV2ViS2l0Ojp3ZWJL
aXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y3JlYXRlUGVlckNvbm5lY3Rpb25IYW5kbGVyKHRoaXMpKTsK
LSAgICAvLyBGSVhNRTogV2hlbiB0aGVyZSBpcyBzb21lIGVycm9yIHJlcG9ydGluZyBhdmFsaWFi
bGUgaW4gdGhlIFBlZXJDb25uZWN0aW9uIG9iamVjdCByZXBvcnQKLSAgICAvLyBpZiB3ZSBkaWRu
J3QgZ2V0IGEgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyIGluc3RhbmNlLgotCi0gICAgaWYgKG1f
d2ViSGFuZGxlcikgewotICAgICAgICAvLyBEdWFsIGNhbGxzIGR1ZSB0byBBUEkgY2hhbmdlCi0g
ICAgICAgIG1fd2ViSGFuZGxlci0+aW5pdGlhbGl6ZShzZXJ2ZXJDb25maWd1cmF0aW9uLCB1c2Vy
bmFtZSk7Ci0KLSAgICAgICAgLy8gREVQUkVDQVRFRAotICAgICAgICBtX3dlYkhhbmRsZXItPmlu
aXRpYWxpemUoc2VydmVyQ29uZmlndXJhdGlvbiwgU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21T
dHJpbmcodXNlcm5hbWUpKTsKLSAgICB9Ci19Ci0KLVBlZXJDb25uZWN0aW9uSGFuZGxlckludGVy
bmFsOjp+UGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwoKQotewotfQotCi12b2lkIFBlZXJD
b25uZWN0aW9uSGFuZGxlckludGVybmFsOjpwcm9kdWNlSW5pdGlhbE9mZmVyKGNvbnN0IE1lZGlh
U3RyZWFtRGVzY3JpcHRvclZlY3RvciYgcGVuZGluZ0FkZFN0cmVhbXMpCi17Ci0gICAgaWYgKG1f
d2ViSGFuZGxlcikKLSAgICAgICAgbV93ZWJIYW5kbGVyLT5wcm9kdWNlSW5pdGlhbE9mZmVyKHBl
bmRpbmdBZGRTdHJlYW1zKTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5h
bDo6aGFuZGxlSW5pdGlhbE9mZmVyKGNvbnN0IFN0cmluZyYgc2RwKQotewotICAgIGlmIChtX3dl
YkhhbmRsZXIpCi0gICAgICAgIG1fd2ViSGFuZGxlci0+aGFuZGxlSW5pdGlhbE9mZmVyKHNkcCk7
Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OnByb2Nlc3NTRFAoY29u
c3QgU3RyaW5nJiBzZHApCi17Ci0gICAgaWYgKG1fd2ViSGFuZGxlcikKLSAgICAgICAgbV93ZWJI
YW5kbGVyLT5wcm9jZXNzU0RQKHNkcCk7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVy
SW50ZXJuYWw6OnByb2Nlc3NQZW5kaW5nU3RyZWFtcyhjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0
b3JWZWN0b3ImIHBlbmRpbmdBZGRTdHJlYW1zLCBjb25zdCBNZWRpYVN0cmVhbURlc2NyaXB0b3JW
ZWN0b3ImIHBlbmRpbmdSZW1vdmVTdHJlYW1zKQotewotICAgIGlmIChtX3dlYkhhbmRsZXIpCi0g
ICAgICAgIG1fd2ViSGFuZGxlci0+cHJvY2Vzc1BlbmRpbmdTdHJlYW1zKHBlbmRpbmdBZGRTdHJl
YW1zLCBwZW5kaW5nUmVtb3ZlU3RyZWFtcyk7Ci19Ci0KLXZvaWQgUGVlckNvbm5lY3Rpb25IYW5k
bGVySW50ZXJuYWw6OnNlbmREYXRhU3RyZWFtTWVzc2FnZShjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoKQotewotICAgIGlmIChtX3dlYkhhbmRsZXIpCi0gICAgICAgIG1fd2ViSGFuZGxl
ci0+c2VuZERhdGFTdHJlYW1NZXNzYWdlKGRhdGEsIGxlbmd0aCk7Ci19Ci0KLXZvaWQgUGVlckNv
bm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OnN0b3AoKQotewotICAgIGlmIChtX3dlYkhhbmRsZXIp
Ci0gICAgICAgIG1fd2ViSGFuZGxlci0+c3RvcCgpOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9u
SGFuZGxlckludGVybmFsOjpkaWRDb21wbGV0ZUlDRVByb2Nlc3NpbmcoKQotewotICAgIGlmICht
X3dlYkhhbmRsZXIpCi0gICAgICAgIG1fY2xpZW50LT5kaWRDb21wbGV0ZUlDRVByb2Nlc3Npbmco
KTsKLX0KLQotdm9pZCBQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6ZGlkR2VuZXJhdGVT
RFAoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHNkcCkKLXsKLSAgICBpZiAobV93ZWJIYW5kbGVy
KQotICAgICAgICBtX2NsaWVudC0+ZGlkR2VuZXJhdGVTRFAoc2RwKTsKLX0KLQotdm9pZCBQZWVy
Q29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbDo6ZGlkUmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgaWYgKG1fd2ViSGFuZGxlcikK
LSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2FnZShkYXRhLCBsZW5n
dGgpOwotfQotCi12b2lkIFBlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsOjpkaWRBZGRSZW1v
dGVTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImIHdlYk1lZGlh
U3RyZWFtRGVzY3JpcHRvcikKLXsKLSAgICBpZiAobV93ZWJIYW5kbGVyKQotICAgICAgICBtX2Ns
aWVudC0+ZGlkQWRkUmVtb3RlU3RyZWFtKHdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcik7Ci19Ci0K
LXZvaWQgUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWw6OmRpZFJlbW92ZVJlbW90ZVN0cmVh
bShjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYgd2ViTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yKQotewotICAgIGlmIChtX3dlYkhhbmRsZXIpCi0gICAgICAgIG1fY2xpZW50LT5k
aWRSZW1vdmVSZW1vdGVTdHJlYW0od2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdlL1BlZXJDb25uZWN0aW9uSGFu
ZGxlckludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL2JyaWRnZS9QZWVyQ29ubmVj
dGlvbkhhbmRsZXJJbnRlcm5hbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTdm
ZDk2YjViNWM3MWY5YWI5YzBhM2UxZWVjZmNiN2FmNTBjYWIwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYnJpZGdl
L1BlZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0g
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmbmRlZiBQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbF9oCi0jZGVmaW5lIFBl
ZXJDb25uZWN0aW9uSGFuZGxlckludGVybmFsX2gKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0p
Ci0KLSNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQZWVyQ29ubmVjdGlvbkhh
bmRsZXI7Ci1jbGFzcyBXZWJTdHJpbmc7Ci1jbGFzcyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7
Ci19Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUGVlckNvbm5lY3Rpb25IYW5kbGVy
Q2xpZW50OwotCi1jbGFzcyBQZWVyQ29ubmVjdGlvbkhhbmRsZXJJbnRlcm5hbCA6IHB1YmxpYyBX
ZWJLaXQ6OldlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgUGVl
ckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwoUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50Kiwg
Y29uc3QgU3RyaW5nJiBzZXJ2ZXJDb25maWd1cmF0aW9uLCBjb25zdCBTdHJpbmcmIHVzZXJuYW1l
KTsKLSAgICB+UGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWwoKTsKLQotICAgIHZpcnR1YWwg
dm9pZCBwcm9kdWNlSW5pdGlhbE9mZmVyKGNvbnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3Rv
ciYgcGVuZGluZ0FkZFN0cmVhbXMpOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJbml0aWFsT2Zm
ZXIoY29uc3QgU3RyaW5nJiBzZHApOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzU0RQKGNvbnN0
IFN0cmluZyYgc2RwKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1BlbmRpbmdTdHJlYW1zKGNv
bnN0IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciYgcGVuZGluZ0FkZFN0cmVhbXMsIGNvbnN0
IE1lZGlhU3RyZWFtRGVzY3JpcHRvclZlY3RvciYgcGVuZGluZ1JlbW92ZVN0cmVhbXMpOwotICAg
IHZpcnR1YWwgdm9pZCBzZW5kRGF0YVN0cmVhbU1lc3NhZ2UoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKLQotICAgIC8vIFdlYktpdDo6
V2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1
YWwgdm9pZCBkaWRDb21wbGV0ZUlDRVByb2Nlc3NpbmcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
R2VuZXJhdGVTRFAoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHNkcCk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVEYXRhU3RyZWFtTWVzc2FnZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFtKGNvbnN0IFdlYktp
dDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlbW92
ZVJlbW90ZVN0cmVhbShjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpOwot
Ci1wcml2YXRlOgotICAgIE93blB0cjxXZWJLaXQ6OldlYlBlZXJDb25uZWN0aW9uSGFuZGxlcj4g
bV93ZWJIYW5kbGVyOwotICAgIFBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCogbV9jbGllbnQ7
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQotCi0jZW5kaWYgLy8gUGVlckNvbm5lY3Rpb25IYW5kbGVySW50ZXJuYWxfaApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDJiYTllZjNiOTMzMjhkZjdlOWFiMjM0ZGM2NDdlNTc5YzlkNTNiNzUuLmYwYTJlYzNiY2E0
YjJhZDUxOTBiNjZjYjhlZDQ5YTFkNDBkM2E0YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAx
Mi0wMy0wOSAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBNZWRpYVN0cmVhbSBBUEk6IFJlbmFtZSBQZWVyQ29ubmVjdGlvbiB0byBEZXByZWNhdGVkUGVl
ckNvbm5lY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTgwNjkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRmlyc3QgcGF0Y2ggaW4gYSBzZXJpZXMgb2YgcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIFBlZXJD
b25uZWN0aW9uIGZyb20gUk9BUCB0byBKU0VQLAorICAgICAgICBzZWUgYnVnIDgwNTg5IGZvciBt
b3JlIGluZm9ybWF0aW9uLgorCisgICAgICAgICogZmFzdC9kb20vY2FsbC1hLWNvbnN0cnVjdG9y
LWFzLWEtZnVuY3Rpb24uaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL3BlZXJjb25u
ZWN0aW9uLUF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJl
YW0vcGVlcmNvbm5lY3Rpb24tYWRkc3RyZWFtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0aW9uLWFyZ3VtZW50LXR5cGVzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0aW9uLWV2ZW50bGlzdGVuZXIt
b3B0aW9uYWwtYXJndW1lbnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL3BlZXJj
b25uZWN0aW9uLW1lZGlhc3RyZWFtbGlzdC5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJl
YW0vcGVlcmNvbm5lY3Rpb24tcmVtb3Zlc3RyZWFtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9BdHRyaWJ1dGVzLmpzOgorICAgICAgICAqIGZh
c3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL2FyZ3VtZW50LXR5cGVzLmpzOgorICAgICAgICAq
IGZhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL3BlZXJjb25uZWN0aW9uLWFkZHN0cmVhbS5q
czoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9wZWVyY29ubmVjdGlv
bi1yZW1vdmVzdHJlYW0uanM6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20v
Y2FsbC1hLWNvbnN0cnVjdG9yLWFzLWEtZnVuY3Rpb24tZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9mYXN0L2RvbS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi1l
eHBlY3RlZC50eHQ6CisKIDIwMTItMDMtMDkgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBGaWxlSW5wdXRUeXBlIGRvZXNuJ3Qgc3VwcG9ydCAoc2F2ZXxyZXN0
b3JlKUZvcm1Db250cm9sU3RhdGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2Nh
bGwtYS1jb25zdHJ1Y3Rvci1hcy1hLWZ1bmN0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi5odG1sCmluZGV4IDQ3OWFmYTVmODYw
YjY1YmI4MDg0NDIxMWE1ZDMzYTYyZWE5ZjU1Y2UuLjI2NDdkZmE5YzQ4YzQ2MDU2YjE1ODcxOTJl
MGNlMWM3OTRlOGZlMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2NhbGwtYS1j
b25zdHJ1Y3Rvci1hcy1hLWZ1bmN0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
Y2FsbC1hLWNvbnN0cnVjdG9yLWFzLWEtZnVuY3Rpb24uaHRtbApAQCAtNiw3ICs2LDcgQEAKIAog
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgaWYgVHlwZUVycm9yIGlzIHRocm93biBvciBub3Qgd2hl
biB3ZSBjYWxsIGEgY29uc3RydWN0b3IgYXMgYSBub3JtYWwgZnVuY3Rpb24uIik7CiAKLXZhciB0
ZXN0X2NvbnN0cnVjdG9ycyA9IFsiQXJyYXlCdWZmZXIiLCAiQXVkaW9Db250ZXh0IiwgIkZvcm1E
YXRhIiwgIkRhdGFWaWV3IiwgIkV2ZW50U291cmNlIiwgIkZpbGVSZWFkZXIiLCAiRmxvYXQzMkFy
cmF5IiwgIkZsb2F0NjRBcnJheSIsICJBdWRpbyIsICJJbWFnZSIsICJPcHRpb24iLCAiSW50MTZB
cnJheSIsICJJbnQzMkFycmF5IiwgIkludDhBcnJheSIsICJNZXNzYWdlQ2hhbm5lbCIsICJ3ZWJr
aXRQZWVyQ29ubmVjdGlvbiIsICJTaGFyZWRXb3JrZXIiLCAiVWludDE2QXJyYXkiLCAiVWludDMy
QXJyYXkiLCAiVWludDhBcnJheSIsICJXZWJLaXRDU1NNYXRyaXgiLCAiV2ViS2l0UG9pbnQiLCAi
V2ViU29ja2V0IiwgIldvcmtlciIsICJYTUxIdHRwUmVxdWVzdCIsICJYU0xUUHJvY2Vzc29yIl07
Cit2YXIgdGVzdF9jb25zdHJ1Y3RvcnMgPSBbIkFycmF5QnVmZmVyIiwgIkF1ZGlvQ29udGV4dCIs
ICJGb3JtRGF0YSIsICJEYXRhVmlldyIsICJFdmVudFNvdXJjZSIsICJGaWxlUmVhZGVyIiwgIkZs
b2F0MzJBcnJheSIsICJGbG9hdDY0QXJyYXkiLCAiQXVkaW8iLCAiSW1hZ2UiLCAiT3B0aW9uIiwg
IkludDE2QXJyYXkiLCAiSW50MzJBcnJheSIsICJJbnQ4QXJyYXkiLCAiTWVzc2FnZUNoYW5uZWwi
LCAid2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uIiwgIlNoYXJlZFdvcmtlciIsICJVaW50
MTZBcnJheSIsICJVaW50MzJBcnJheSIsICJVaW50OEFycmF5IiwgIldlYktpdENTU01hdHJpeCIs
ICJXZWJLaXRQb2ludCIsICJXZWJTb2NrZXQiLCAiV29ya2VyIiwgIlhNTEh0dHBSZXF1ZXN0Iiwg
IlhTTFRQcm9jZXNzb3IiXTsKIAogdGVzdF9jb25zdHJ1Y3RvcnMuZm9yRWFjaChmdW5jdGlvbiAo
Y29uc3RydWN0b3IpIHsKICAgICBpZiAoZXZhbCgid2luZG93LiIgKyBjb25zdHJ1Y3RvcikpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0aW9uLUF0
dHJpYnV0ZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9wZWVy
Y29ubmVjdGlvbi1BdHRyaWJ1dGVzLWV4cGVjdGVkLnR4dAppbmRleCBiNjVjZjJiZjUyZjNhOTFk
ODk3NDc2YTI1MDI4MTNhNTQwYjRmYWYwLi5jNDIxM2NlMzU1NjRiZDVlMTRkZDUxMzU3ZGI5ZWJm
NDY0NTllMzk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJj
b25uZWN0aW9uLUF0dHJpYnV0ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vcGVlcmNvbm5lY3Rpb24tQXR0cmlidXRlcy1leHBlY3RlZC50eHQKQEAgLTEs
NCArMSw0IEBACi1UZXN0cyBQZWVyVG9QZWVyQ29ubmVjdGlvbiByZWxhdGVkIEF0dHJpYnV0ZXMg
YWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cudzMub3JnL1RSL3dlYnJ0Yy8KK1Rlc3RzIERlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbiByZWxhdGVkIEF0dHJpYnV0ZXMgYWNjb3JkaW5nIHRvIGh0dHA6Ly93
d3cudzMub3JnL1RSL3dlYnJ0Yy8KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0aW9uLWFkZHN0
cmVhbS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJjb25u
ZWN0aW9uLWFkZHN0cmVhbS1leHBlY3RlZC50eHQKaW5kZXggOTY1NDNiYjIwMGZhYWUwZjAyNzhh
ZTliY2VhOTEyMWIxNTY1MGU3MC4uMTk2ZjJkNjJlYjY4NWVjZTA5OWRlZjY3ZjQ1NjlhYTZiNWJh
ZThkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9wZWVyY29ubmVj
dGlvbi1hZGRzdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vcGVlcmNvbm5lY3Rpb24tYWRkc3RyZWFtLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQg
QEAKLVRlc3RzIFBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0oKS4KK1Rlc3RzIERlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbjo6YWRkU3RyZWFtKCkuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9wZWVyY29ubmVjdGlv
bi1hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL3BlZXJjb25uZWN0aW9uLWFyZ3VtZW50LXR5cGVzLWV4cGVjdGVkLnR4dAppbmRleCBmNDFj
YWU0MzAyM2I4N2YxN2M0NDY4MTdjYmIyNWMwYjIxNjNmZGJjLi5jNTc2Y2JkNmUyYjU1NTU1Zjkx
OWJiOGYyZmMwY2M2ODM0ZGQ2YjM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL3BlZXJjb25uZWN0aW9uLWFyZ3VtZW50LXR5cGVzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0aW9uLWFyZ3VtZW50LXR5cGVz
LWV4cGVjdGVkLnR4dApAQCAtMSw1NCArMSw1NCBAQAotVGVzdHMgdGhlIGFjY2VwdGFibGUgdHlw
ZXMgZm9yIGFyZ3VtZW50cyB0byBtZXRob2QgZm9yIFBlZXJUb1BlZXJDb25uZWN0aW9uIGRlZmlu
YXRpb24uCitUZXN0cyB0aGUgYWNjZXB0YWJsZSB0eXBlcyBmb3IgYXJndW1lbnRzIHRvIG1ldGhv
ZCBmb3IgRGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uIGRlZmluYXRpb24uCiAKIE9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIHR5cGVvZiB3ZWJraXRQZWVyQ29ubmVjdGlvbj09ICdm
dW5jdGlvbicgaXMgdHJ1ZQotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgbmV3IHdlYmtp
dFBlZXJDb25uZWN0aW9uKCJTVFVOIDIwMy4wLjExMy4yOjI0NzgiKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25u
ZWN0aW9uKCJTVFVOIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0
aW9uKCJTVFVOIGV4YW1wbGUubmV0IikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVu
b3VnaCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTlMgMjAz
LjAuMTEzLjI6MjQ3OCIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJn
dW1lbnRzLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU5TIHJlbGF5LmV4YW1w
bGUubmV0OjM0NzgiKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3Vt
ZW50cy4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOUyBleGFtcGxlLm5ldCIp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBu
ZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gMjAzLjAuMTEzLjI6MjQ3OCIpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBuZXcgd2Via2l0
UGVlckNvbm5lY3Rpb24oIlRVUk4gcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBuZXcgd2Via2l0UGVl
ckNvbm5lY3Rpb24oIlRVUk4gZXhhbXBsZS5uZXQiKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJU
VVJOUyAyMDMuMC4xMTMuMjoyNDc4IikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVu
b3VnaCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMgcmVs
YXkuZXhhbXBsZS5uZXQ6MzQ3OCIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91
Z2ggYXJndW1lbnRzLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk5TIGV4YW1w
bGUubmV0IikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMu
Ci1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTiBOT05FIikgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRQZWVy
Q29ubmVjdGlvbigiVFVSTlMgTk9ORSIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBl
bm91Z2ggYXJndW1lbnRzLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU4gTk9O
RSIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFT
UyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU5TIE5PTkUiKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25u
ZWN0aW9uKCJ1bmRlZmluZWQiKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cy4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJudWxsIikgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJr
aXRQZWVyQ29ubmVjdGlvbih7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbig0MikgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRQ
ZWVyQ29ubmVjdGlvbihJbmZpbml0eSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVu
b3VnaCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigtSW5maW5pdHkp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgotUEFTUyBu
ZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oZW1wdHlGdW5jdGlvbikgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVj
dGlvbigiU1RVTiAyMDMuMC4xMTMuMjoyNDc4IixlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOIHJlbGF5LmV4
YW1wbGUubmV0OjM0NzgiLGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgot
UEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU4gZXhhbXBsZS5uZXQiLGVtcHR5RnVu
Y3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5l
Y3Rpb24oIlNUVU5TIDIwMy4wLjExMy4yOjI0NzgiLGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU5TIHJlbGF5
LmV4YW1wbGUubmV0OjM0NzgiLGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU5TIGV4YW1wbGUubmV0IixlbXB0
eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmV3IHdlYmtpdFBlZXJD
b25uZWN0aW9uKCJUVVJOIDIwMy4wLjExMy4yOjI0NzgiLGVtcHR5RnVuY3Rpb24pIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgotUEFTUyBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gcmVs
YXkuZXhhbXBsZS5uZXQ6MzQ3OCIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTiBleGFtcGxlLm5ldCIsZW1w
dHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5ldyB3ZWJraXRQZWVy
Q29ubmVjdGlvbigiVFVSTlMgMjAzLjAuMTEzLjI6MjQ3OCIsZW1wdHlGdW5jdGlvbikgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMg
cmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMgZXhhbXBsZS5uZXQi
LGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgotUEFTUyBuZXcgd2Via2l0
UGVlckNvbm5lY3Rpb24oIlRVUk4gTk9ORSIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCi1QQVNTIG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMgTk9ORSIsZW1w
dHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5ldyB3ZWJraXRQZWVy
Q29ubmVjdGlvbigiU1RVTiBOT05FIixlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOUyBOT05FIixlbXB0eUZ1
bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25u
ZWN0aW9uKCJUVVJOIE5PTkUiLHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBF
X01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgbmV3IHdlYmtpdFBlZXJDb25u
ZWN0aW9uKCJUVVJOUyBOT05FIix7fSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIG5l
dyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiBOT05FIiw0MikgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgbmV3IHdlYmtp
dFBlZXJDb25uZWN0aW9uKCJTVFVOUyBOT05FIixJbmZpbml0eSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KLVBBU1MgbmV3IHdlYmtp
dFBlZXJDb25uZWN0aW9uKCJTVFVOUyBOT05FIiwtSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBF
cnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIHR5cGVvZiB3
ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb249PSAnZnVuY3Rpb24nIGlzIHRydWUKK1BBU1Mg
bmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uKCJTVFVOIDIwMy4wLjExMy4yOjI0NzgiKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbigiU1RVTiByZWxheS5leGFtcGxlLm5ldDozNDc4IikgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3ZWJraXREZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU4gZXhhbXBsZS5uZXQiKSB0aHJldyBleGNlcHRpb24g
VHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0
ZWRQZWVyQ29ubmVjdGlvbigiU1RVTlMgMjAzLjAuMTEzLjI6MjQ3OCIpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgd2Via2l0RGVwcmVj
YXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOUyByZWxheS5leGFtcGxlLm5ldDozNDc4IikgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3ZWJr
aXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU5TIGV4YW1wbGUubmV0IikgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3ZWJraXRE
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk4gMjAzLjAuMTEzLjI6MjQ3OCIpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgd2Via2l0
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJUVVJOIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3
IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTiBleGFtcGxlLm5ldCIpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgd2Vi
a2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJUVVJOUyAyMDMuMC4xMTMuMjoyNDc4IikgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3
ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk5TIHJlbGF5LmV4YW1wbGUubmV0OjM0
NzgiKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BB
U1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTlMgZXhhbXBsZS5uZXQi
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1Mg
bmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTiBOT05FIikgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3ZWJraXRE
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk5TIE5PTkUiKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbigiU1RVTiBOT05FIikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90
IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rp
b24oIlNUVU5TIE5PTkUiKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFy
Z3VtZW50cy4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigidW5kZWZp
bmVkIikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMuCitQ
QVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIm51bGwiKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3IHdlYmtpdERl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbih7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90
IGVub3VnaCBhcmd1bWVudHMuCitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rp
b24oNDIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgor
UEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKEluZmluaXR5KSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KK1BBU1MgbmV3IHdlYmtp
dERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigtSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uKGVtcHR5RnVuY3Rpb24pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5v
dCBlbm91Z2ggYXJndW1lbnRzLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0
aW9uKCJTVFVOIDIwMy4wLjExMy4yOjI0NzgiLGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVO
IHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiLGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOIGV4
YW1wbGUubmV0IixlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
bmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTlMgMjAzLjAuMTEzLjI6MjQ3
OCIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJr
aXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU5TIHJlbGF5LmV4YW1wbGUubmV0OjM0Nzgi
LGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOUyBleGFtcGxlLm5ldCIsZW1wdHlGdW5jdGlv
bikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVl
ckNvbm5lY3Rpb24oIlRVUk4gMjAzLjAuMTEzLjI6MjQ3OCIsZW1wdHlGdW5jdGlvbikgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rp
b24oIlRVUk4gcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24o
IlRVUk4gZXhhbXBsZS5uZXQiLGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJUVVJOUyAyMDMuMC4x
MTMuMjoyNDc4IixlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
bmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTlMgcmVsYXkuZXhhbXBsZS5u
ZXQ6MzQ3OCIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5l
dyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk5TIGV4YW1wbGUubmV0IixlbXB0
eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdERlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTiBOT05FIixlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigi
VFVSTlMgTk9ORSIsZW1wdHlGdW5jdGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNT
IG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU4gTk9ORSIsZW1wdHlGdW5j
dGlvbikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5ldyB3ZWJraXREZXByZWNhdGVk
UGVlckNvbm5lY3Rpb24oIlNUVU5TIE5PTkUiLGVtcHR5RnVuY3Rpb24pIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgorUEFTUyBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJUVVJO
IE5PTkUiLHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VS
UjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVj
dGlvbigiVFVSTlMgTk9ORSIse30pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuZXcg
d2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOIE5PTkUiLDQyKSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBu
ZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOUyBOT05FIixJbmZpbml0eSkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAx
Ny4KK1BBU1MgbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTlMgTk9ORSIs
LUluZmluaXR5KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00g
RXhjZXB0aW9uIDE3LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJjb25u
ZWN0aW9uLWV2ZW50bGlzdGVuZXItb3B0aW9uYWwtYXJndW1lbnQuaHRtbCBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vcGVlcmNvbm5lY3Rpb24tZXZlbnRsaXN0ZW5lci1vcHRpb25hbC1h
cmd1bWVudC5odG1sCmluZGV4IDYxNzVlZTcyOTQ4MGFkNjRmYWY3NzE0ZTRlZjdiYzNiY2NjNDYz
YjcuLmNlYjI2MjUzNDNjZWEzOWI2NTcxNTk5NzQxN2MwMzEzZGMyY2ZhNGUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vcGVlcmNvbm5lY3Rpb24tZXZlbnRsaXN0ZW5l
ci1vcHRpb25hbC1hcmd1bWVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vcGVlcmNvbm5lY3Rpb24tZXZlbnRsaXN0ZW5lci1vcHRpb25hbC1hcmd1bWVudC5odG1sCkBA
IC0xMCw3ICsxMCw3IEBACiA8c2NyaXB0PgogZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjb25maXJt
cyBpZiB0aGUgdGhpcmQgYXJndW1lbnQgb2YgYWRkRXZlbnRMaXN0ZW5lcigpIGFuZCByZW1vdmVF
dmVudExpc3RlbmVyKCkgaXMgb3B0aW9uYWwuIik7CiAKLXZhciBwYyA9IG5ldyB3ZWJraXRQZWVy
Q29ubmVjdGlvbigic29tZS5zZXJ2ZXIuY29tIiwgZnVuY3Rpb24oKSB7fSk7Cit2YXIgcGMgPSBu
ZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJzb21lLnNlcnZlci5jb20iLCBmdW5j
dGlvbigpIHt9KTsKIHNob3VsZEJlKCdwYy5hZGRFdmVudExpc3RlbmVyKCJmb28iLCBmdW5jdGlv
bigpIHt9KScsICd1bmRlZmluZWQnKTsKIHNob3VsZEJlKCdwYy5hZGRFdmVudExpc3RlbmVyKCJm
b28iLCBmdW5jdGlvbigpIHt9LCBmYWxzZSknLCAndW5kZWZpbmVkJyk7CiBzaG91bGRCZSgncGMu
YWRkRXZlbnRMaXN0ZW5lcigiZm9vIiwgZnVuY3Rpb24oKSB7fSwgdHJ1ZSknLCAndW5kZWZpbmVk
Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0
aW9uLW1lZGlhc3RyZWFtbGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9w
ZWVyY29ubmVjdGlvbi1tZWRpYXN0cmVhbWxpc3QuaHRtbAppbmRleCBhOWQ4ZTI3ZGQwYWYzN2Jl
YzBlZjFiOWI4ZDkzNzlmMjIxOWQ3YjdlLi4xYmFkN2ZkODRkNWZlODIzZDBiMGU3Zjg3Y2QwZmY5
NTlkYmRhYTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJj
b25uZWN0aW9uLW1lZGlhc3RyZWFtbGlzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vcGVlcmNvbm5lY3Rpb24tbWVkaWFzdHJlYW1saXN0Lmh0bWwKQEAgLTExLDcgKzEx
LDcgQEAKIDxzY3JpcHQ+CiBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGNvbmZpcm1zIHRoYXQgb3V0
LW9mLWJvdW5kcyBhY2Nlc3Mgb2YgTWVkaWFTdHJlYW1MaXN0IHJldHVybnMgdW5kZWZpbmVkLiIp
OwogCi12YXIgcGMgPSBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIiIsIGZ1bmN0aW9uKCkge30p
OwordmFyIHBjID0gbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiIiwgZnVuY3Rp
b24oKSB7fSk7CiAKIHNob3VsZEJlVW5kZWZpbmVkKCdwYy5sb2NhbFN0cmVhbXNbMHhiYWRjMGRl
ZF0nKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9wZWVyY29u
bmVjdGlvbi1yZW1vdmVzdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YXN0cmVhbS9wZWVyY29ubmVjdGlvbi1yZW1vdmVzdHJlYW0tZXhwZWN0ZWQudHh0CmluZGV4IDBi
NmUyYWQ4NzBiNmFkNGE2YjVhNWRhZDM2NGZjNzQ4ZDMzNGFhNjcuLmE2NDJhMDA3OWQ3NmYwNTg4
NjA5MDZiNWQ1NGIzZDdlZjA0Y2FkMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vcGVlcmNvbm5lY3Rpb24tcmVtb3Zlc3RyZWFtLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3BlZXJjb25uZWN0aW9uLXJlbW92ZXN0cmVhbS1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1UZXN0cyBQZWVyQ29ubmVjdGlvbjo6cmVtb3Zl
U3RyZWFtKCkuCitUZXN0cyBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OnJlbW92ZVN0cmVhbSgp
LgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL0F0dHJpYnV0ZXMuanMgYi9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9BdHRyaWJ1dGVzLmpzCmluZGV4IGQ4NDQy
YWNhMjMwZjIyOTNiMDI5YTQwN2ZiYWI1YmJlNjg1OTBiYzYuLmE1YWFjYTg3Y2ZiMGI3MDUyNTQ5
YTQ2NGYwMmVjYmY1NDc4NDQ0N2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vc2NyaXB0LXRlc3RzL0F0dHJpYnV0ZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvQXR0cmlidXRlcy5qcwpAQCAtMSw0ICsxLDQgQEAKLWRl
c2NyaXB0aW9uKCJUZXN0cyBQZWVyVG9QZWVyQ29ubmVjdGlvbiByZWxhdGVkIEF0dHJpYnV0ZXMg
YWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cudzMub3JnL1RSL3dlYnJ0Yy8iKTsKK2Rlc2NyaXB0aW9u
KCJUZXN0cyBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb24gcmVsYXRlZCBBdHRyaWJ1dGVzIGFjY29y
ZGluZyB0byBodHRwOi8vd3d3LnczLm9yZy9UUi93ZWJydGMvIik7CiB2YXIgc3RyZWFtOwogZnVu
Y3Rpb24gc2hvdWxkTm90VGhyb3coZXhwcmVzc2lvbikKIHsKQEAgLTY5LDcgKzY5LDcgQEAgZnVu
Y3Rpb24gZ290U3RyZWFtRmFpbGVkKGVycm9yKSB7CiB9CiAKIAotdmFyIHBjPW5ldyB3ZWJraXRQ
ZWVyQ29ubmVjdGlvbigiU1RVTiBOT05FIiwgZW1wdHlGdW5jdGlvbik7Cit2YXIgcGM9bmV3IHdl
YmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTiBOT05FIiwgZW1wdHlGdW5jdGlvbik7
CiAvL21ldGhvZAogc2hvdWxkQmVUcnVlQSgidHlwZW9mIHBjLmFkZFN0cmVhbSA9PSAnZnVuY3Rp
b24nIik7CiBzaG91bGRCZVRydWVBKCJ0eXBlb2YgcGMucmVtb3ZlU3RyZWFtID09ICdmdW5jdGlv
biciKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRl
c3RzL2FyZ3VtZW50LXR5cGVzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9zY3Jp
cHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMKaW5kZXggYzMyODRjODU2Mzg2MmNlMGI5NWUyZjU1
ZDk4NjUxNDU5ZTc0YjExYi4uZGQ2YjQ0NGJjOGRhMzU5ZGY1NzExN2MzMzYyZGU0MTMxNjk0MTI2
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMv
YXJndW1lbnQtdHlwZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9zY3Jp
cHQtdGVzdHMvYXJndW1lbnQtdHlwZXMuanMKQEAgLTEsNCArMSw0IEBACi1kZXNjcmlwdGlvbigi
VGVzdHMgdGhlIGFjY2VwdGFibGUgdHlwZXMgZm9yIGFyZ3VtZW50cyB0byBtZXRob2QgZm9yIFBl
ZXJUb1BlZXJDb25uZWN0aW9uIGRlZmluYXRpb24uIik7CitkZXNjcmlwdGlvbigiVGVzdHMgdGhl
IGFjY2VwdGFibGUgdHlwZXMgZm9yIGFyZ3VtZW50cyB0byBtZXRob2QgZm9yIERlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbiBkZWZpbmF0aW9uLiIpOwogCiBmdW5jdGlvbiBzaG91bGROb3RUaHJvdyhl
eHByZXNzaW9uKQogewpAQCAtMzEsNTggKzMxLDU4IEBAIE9iamVjdFRocm93aW5nRXhjZXB0aW9u
LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogfQogdmFyIG9iamVjdFRocm93aW5n
RXhjZXB0aW9uID0gbmV3IE9iamVjdFRocm93aW5nRXhjZXB0aW9uKCk7CiAKLXNob3VsZEJlVHJ1
ZSgidHlwZW9mIHdlYmtpdFBlZXJDb25uZWN0aW9uPT0gJ2Z1bmN0aW9uJyIpOworc2hvdWxkQmVU
cnVlKCJ0eXBlb2Ygd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uPT0gJ2Z1bmN0aW9uJyIp
OwogCiAvLyAwIEFyZ3VtZW50Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oKScsIHRy
dWUsJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKK3Rlc3QoJ25ldyB3ZWJraXRE
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oKScsIHRydWUsJ1R5cGVFcnJvcjogTm90IGVub3VnaCBh
cmd1bWVudHMnKTsKIAotLy8gMSBBcmd1bWVudCAobmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uIHJl
cXVpcmVzIGF0IGxlYXN0IDIgYXJndW1lbnRzKS4KLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVj
dGlvbigiU1RVTiAyMDMuMC4xMTMuMjoyNDc4IiknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5v
dWdoIGFyZ3VtZW50cycpOwotdGVzdCgnbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOIHJl
bGF5LmV4YW1wbGUubmV0OjM0NzgiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJn
dW1lbnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU4gZXhhbXBsZS5u
ZXQiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Ci10ZXN0KCdu
ZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU5TIDIwMy4wLjExMy4yOjI0NzgiKScsIHRydWUs
ICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVl
ckNvbm5lY3Rpb24oIlNUVU5TIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiKScsIHRydWUsICdUeXBl
RXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5l
Y3Rpb24oIlNUVU5TIGV4YW1wbGUubmV0IiknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cycpOwotdGVzdCgnbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJUVVJOIDIwMy4w
LjExMy4yOjI0NzgiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7
Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gcmVsYXkuZXhhbXBsZS5uZXQ6
MzQ3OCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKLXRlc3Qo
J25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTiBleGFtcGxlLm5ldCIpJywgdHJ1ZSwgJ1R5
cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29u
bmVjdGlvbigiVFVSTlMgMjAzLjAuMTEzLjI6MjQ3OCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90
IGVub3VnaCBhcmd1bWVudHMnKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVS
TlMgcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMnKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMgZXhh
bXBsZS5uZXQiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Ci10
ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gTk9ORSIpJywgdHJ1ZSwgJ1R5cGVF
cnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVj
dGlvbigiVFVSTlMgTk9ORSIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVu
dHMnKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiBOT05FIiknLCB0cnVl
LCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwotdGVzdCgnbmV3IHdlYmtpdFBl
ZXJDb25uZWN0aW9uKCJTVFVOUyBOT05FIiknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cycpOwotdGVzdCgnbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJ1bmRlZmluZWQi
KScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Ci10ZXN0KCduZXcg
d2Via2l0UGVlckNvbm5lY3Rpb24oIm51bGwiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91
Z2ggYXJndW1lbnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oe30pJywgdHJ1
ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKLXRlc3QoJ25ldyB3ZWJraXRQ
ZWVyQ29ubmVjdGlvbig0MiknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50
cycpOwotdGVzdCgnbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKEluZmluaXR5KScsIHRydWUsICdU
eXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNv
bm5lY3Rpb24oLUluZmluaXR5KScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzJyk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oZW1wdHlGdW5jdGlvbiknLCB0
cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOworLy8gMSBBcmd1bWVudCAo
bmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbiByZXF1aXJlcyBhdCBsZWFzdCAyIGFy
Z3VtZW50cykuCit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVO
IDIwMy4wLjExMy4yOjI0NzgiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1l
bnRzJyk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOIHJl
bGF5LmV4YW1wbGUubmV0OjM0NzgiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJn
dW1lbnRzJyk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVO
IGV4YW1wbGUubmV0IiknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycp
OwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTlMgMjAzLjAu
MTEzLjI6MjQ3OCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsK
K3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU5TIHJlbGF5LmV4
YW1wbGUubmV0OjM0NzgiKScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRz
Jyk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOUyBleGFt
cGxlLm5ldCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKK3Rl
c3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk4gMjAzLjAuMTEzLjI6
MjQ3OCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKK3Rlc3Qo
J25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk4gcmVsYXkuZXhhbXBsZS5u
ZXQ6MzQ3OCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKK3Rl
c3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk4gZXhhbXBsZS5uZXQi
KScsIHRydWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Cit0ZXN0KCduZXcg
d2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJUVVJOUyAyMDMuMC4xMTMuMjoyNDc4Iikn
LCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwordGVzdCgnbmV3IHdl
YmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTlMgcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3
OCIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKK3Rlc3QoJ25l
dyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk5TIGV4YW1wbGUubmV0IiknLCB0
cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwordGVzdCgnbmV3IHdlYmtp
dERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTiBOT05FIiknLCB0cnVlLCAnVHlwZUVycm9y
OiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbigiVFVSTlMgTk9ORSIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBh
cmd1bWVudHMnKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNU
VU4gTk9ORSIpJywgdHJ1ZSwgJ1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKK3Rl
c3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU5TIE5PTkUiKScsIHRy
dWUsICdUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Cit0ZXN0KCduZXcgd2Via2l0
RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJ1bmRlZmluZWQiKScsIHRydWUsICdUeXBlRXJyb3I6
IE5vdCBlbm91Z2ggYXJndW1lbnRzJyk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJD
b25uZWN0aW9uKCJudWxsIiknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50
cycpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbih7fSknLCB0cnVl
LCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwordGVzdCgnbmV3IHdlYmtpdERl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbig0MiknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdo
IGFyZ3VtZW50cycpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbihJ
bmZpbml0eSknLCB0cnVlLCAnVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cycpOwordGVz
dCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigtSW5maW5pdHkpJywgdHJ1ZSwg
J1R5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMnKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXBy
ZWNhdGVkUGVlckNvbm5lY3Rpb24oZW1wdHlGdW5jdGlvbiknLCB0cnVlLCAnVHlwZUVycm9yOiBO
b3QgZW5vdWdoIGFyZ3VtZW50cycpOwogCiAvLzIgQXJndW1lbnQKLXRlc3QoJ25ldyB3ZWJraXRQ
ZWVyQ29ubmVjdGlvbigiU1RVTiAyMDMuMC4xMTMuMjoyNDc4IixlbXB0eUZ1bmN0aW9uKScsIGZh
bHNlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiByZWxheS5leGFtcGxl
Lm5ldDozNDc4IixlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVy
Q29ubmVjdGlvbigiU1RVTiBleGFtcGxlLm5ldCIsZW1wdHlGdW5jdGlvbiknLGZhbHNlKTsKLXRl
c3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTlMgMjAzLjAuMTEzLjI6MjQ3OCIsZW1w
dHlGdW5jdGlvbiknLCBmYWxzZSk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNU
VU5TIHJlbGF5LmV4YW1wbGUubmV0OjM0NzgiLGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwotdGVz
dCgnbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOUyBleGFtcGxlLm5ldCIsZW1wdHlGdW5j
dGlvbiknLCBmYWxzZSk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gMjAz
LjAuMTEzLjI6MjQ3OCIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Ci10ZXN0KCduZXcgd2Via2l0
UGVlckNvbm5lY3Rpb24oIlRVUk4gcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIsZW1wdHlGdW5jdGlv
biknLCBmYWxzZSk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gZXhhbXBs
ZS5uZXQiLGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwotdGVzdCgnbmV3IHdlYmtpdFBlZXJDb25u
ZWN0aW9uKCJUVVJOUyAyMDMuMC4xMTMuMjoyNDc4IixlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsK
LXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMgcmVsYXkuZXhhbXBsZS5uZXQ6
MzQ3OCIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5l
Y3Rpb24oIlRVUk5TIGV4YW1wbGUubmV0IixlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKLXRlc3Qo
J25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTiBOT05FIixlbXB0eUZ1bmN0aW9uKScsIGZh
bHNlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMgTk9ORSIsZW1wdHlG
dW5jdGlvbiknLGZhbHNlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiBO
T05FIixlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKLXRlc3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVj
dGlvbigiU1RVTlMgTk9ORSIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Ci10ZXN0KCduZXcgd2Vi
a2l0UGVlckNvbm5lY3Rpb24oIlRVUk4gTk9ORSIsdW5kZWZpbmVkKScsICB0cnVlKTsKLXRlc3Qo
J25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiVFVSTlMgTk9ORSIse30pJywgZmFsc2UpOwotdGVz
dCgnbmV3IHdlYmtpdFBlZXJDb25uZWN0aW9uKCJTVFVOIE5PTkUiLDQyKScsICB0cnVlKTsKLXRl
c3QoJ25ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTlMgTk9ORSIsSW5maW5pdHkpJywgdHJ1
ZSk7Ci10ZXN0KCduZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU5TIE5PTkUiLC1JbmZpbml0
eSknLCB0cnVlKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNU
VU4gMjAzLjAuMTEzLjI6MjQ3OCIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Cit0ZXN0KCduZXcg
d2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOIHJlbGF5LmV4YW1wbGUubmV0OjM0
NzgiLGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQ
ZWVyQ29ubmVjdGlvbigiU1RVTiBleGFtcGxlLm5ldCIsZW1wdHlGdW5jdGlvbiknLGZhbHNlKTsK
K3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU5TIDIwMy4wLjEx
My4yOjI0NzgiLGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwordGVzdCgnbmV3IHdlYmtpdERlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTlMgcmVsYXkuZXhhbXBsZS5uZXQ6MzQ3OCIsZW1wdHlG
dW5jdGlvbiknLCBmYWxzZSk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0
aW9uKCJTVFVOUyBleGFtcGxlLm5ldCIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Cit0ZXN0KCdu
ZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJUVVJOIDIwMy4wLjExMy4yOjI0Nzgi
LGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVy
Q29ubmVjdGlvbigiVFVSTiByZWxheS5leGFtcGxlLm5ldDozNDc4IixlbXB0eUZ1bmN0aW9uKScs
IGZhbHNlKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk4g
ZXhhbXBsZS5uZXQiLGVtcHR5RnVuY3Rpb24pJywgZmFsc2UpOwordGVzdCgnbmV3IHdlYmtpdERl
cHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTlMgMjAzLjAuMTEzLjI6MjQ3OCIsZW1wdHlGdW5j
dGlvbiknLCBmYWxzZSk7Cit0ZXN0KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
KCJUVVJOUyByZWxheS5leGFtcGxlLm5ldDozNDc4IixlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsK
K3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlRVUk5TIGV4YW1wbGUu
bmV0IixlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVk
UGVlckNvbm5lY3Rpb24oIlRVUk4gTk9ORSIsZW1wdHlGdW5jdGlvbiknLCBmYWxzZSk7Cit0ZXN0
KCduZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJUVVJOUyBOT05FIixlbXB0eUZ1
bmN0aW9uKScsZmFsc2UpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlv
bigiU1RVTiBOT05FIixlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKK3Rlc3QoJ25ldyB3ZWJraXRE
ZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU5TIE5PTkUiLGVtcHR5RnVuY3Rpb24pJywgZmFs
c2UpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbigiVFVSTiBOT05F
Iix1bmRlZmluZWQpJywgIHRydWUpOwordGVzdCgnbmV3IHdlYmtpdERlcHJlY2F0ZWRQZWVyQ29u
bmVjdGlvbigiVFVSTlMgTk9ORSIse30pJywgZmFsc2UpOwordGVzdCgnbmV3IHdlYmtpdERlcHJl
Y2F0ZWRQZWVyQ29ubmVjdGlvbigiU1RVTiBOT05FIiw0MiknLCAgdHJ1ZSk7Cit0ZXN0KCduZXcg
d2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCJTVFVOUyBOT05FIixJbmZpbml0eSknLCB0
cnVlKTsKK3Rlc3QoJ25ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rpb24oIlNUVU5TIE5P
TkUiLC1JbmZpbml0eSknLCB0cnVlKTsKIAogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL3BlZXJjb25uZWN0aW9uLWFkZHN0cmVhbS5qcyBi
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL3BlZXJjb25uZWN0aW9u
LWFkZHN0cmVhbS5qcwppbmRleCBhNTk0MWY5ZjkzNTRjOGYyMzY1MzJkMTM0ZTY2ZTU1YmNhODMx
Mzg1Li42Y2U2ZWMxNzVmMDQ3MmE2OTkxZGUxMGI0N2M2NzA1ZTFhNDEyYWE2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9wZWVyY29ubmVjdGlv
bi1hZGRzdHJlYW0uanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQt
dGVzdHMvcGVlcmNvbm5lY3Rpb24tYWRkc3RyZWFtLmpzCkBAIC0xLDYgKzEsNiBAQAotZGVzY3Jp
cHRpb24oIlRlc3RzIFBlZXJDb25uZWN0aW9uOjphZGRTdHJlYW0oKS4iKTsKK2Rlc2NyaXB0aW9u
KCJUZXN0cyBEZXByZWNhdGVkUGVlckNvbm5lY3Rpb246OmFkZFN0cmVhbSgpLiIpOwogCi12YXIg
cGMgPSBuZXcgd2Via2l0UGVlckNvbm5lY3Rpb24oIlNUVU4gc29tZS5zZXJ2ZXIuY29tIiwgZnVu
Y3Rpb24oKSB7fSk7Cit2YXIgcGMgPSBuZXcgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9u
KCJTVFVOIHNvbWUuc2VydmVyLmNvbSIsIGZ1bmN0aW9uKCkge30pOwogCiB0cnkgewogICAgIHBj
LmFkZFN0cmVhbSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9z
Y3JpcHQtdGVzdHMvcGVlcmNvbm5lY3Rpb24tcmVtb3Zlc3RyZWFtLmpzIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9zY3JpcHQtdGVzdHMvcGVlcmNvbm5lY3Rpb24tcmVtb3Zlc3RyZWFt
LmpzCmluZGV4IDc0MDllZWU2YWM1MDUzZTY2YjU3NzE1YmMwNmJmMWI4MDU4NjA3OTguLjQ3Nzdk
ODQzM2NiMDRiNmI5OGIxMzNjYTA5MTZkNjY0ZDNhOWUxZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vc2NyaXB0LXRlc3RzL3BlZXJjb25uZWN0aW9uLXJlbW92ZXN0
cmVhbS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL3NjcmlwdC10ZXN0cy9w
ZWVyY29ubmVjdGlvbi1yZW1vdmVzdHJlYW0uanMKQEAgLTEsNiArMSw2IEBACi1kZXNjcmlwdGlv
bigiVGVzdHMgUGVlckNvbm5lY3Rpb246OnJlbW92ZVN0cmVhbSgpLiIpOworZGVzY3JpcHRpb24o
IlRlc3RzIERlcHJlY2F0ZWRQZWVyQ29ubmVjdGlvbjo6cmVtb3ZlU3RyZWFtKCkuIik7CiAKLXZh
ciBwYyA9IG5ldyB3ZWJraXRQZWVyQ29ubmVjdGlvbigiU1RVTiBzb21lLnNlcnZlci5jb20iLCBm
dW5jdGlvbigpIHt9KTsKK3ZhciBwYyA9IG5ldyB3ZWJraXREZXByZWNhdGVkUGVlckNvbm5lY3Rp
b24oIlNUVU4gc29tZS5zZXJ2ZXIuY29tIiwgZnVuY3Rpb24oKSB7fSk7CiAKIHRyeSB7CiAgICAg
cGMucmVtb3ZlU3RyZWFtKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2RvbS9jYWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9jYWxsLWEtY29uc3Ry
dWN0b3ItYXMtYS1mdW5jdGlvbi1leHBlY3RlZC50eHQKaW5kZXggMGZmMGYzNTdhYjg2MWNkNTA2
ZDYyMGE3OTk4Y2JjZTE0MjVmZjNmMC4uZTRhZmUxMjZjOGM1NWY0Mzk2MzFlNmY0ZDM5YjMwOTJi
OTUzN2E5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9k
b20vY2FsbC1hLWNvbnN0cnVjdG9yLWFzLWEtZnVuY3Rpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL2NhbGwtYS1jb25zdHJ1Y3Rvci1h
cy1hLWZ1bmN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMTgsNyArMTgsNyBAQCBQQVNTIEludDE2QXJy
YXkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNh
bm5vdCBiZSBjYQogUEFTUyBJbnQzMkFycmF5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
RE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uLgog
UEFTUyBJbnQ4QXJyYXkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBET00gb2JqZWN0IGNv
bnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4uCiBQQVNTIE1lc3NhZ2VD
aGFubmVsKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRE9NIG9iamVjdCBjb25zdHJ1Y3Rv
ciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uLgotUEFTUyB3ZWJraXRQZWVyQ29ubmVj
dGlvbigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IERPTSBvYmplY3QgY29uc3RydWN0b3Ig
Y2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLi4KK1BBU1Mgd2Via2l0RGVwcmVjYXRlZFBl
ZXJDb25uZWN0aW9uKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRE9NIG9iamVjdCBjb25z
dHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uLgogU0tJUCBTaGFyZWRXb3Jr
ZXIgaXMgbm90IGltcGxlbWVudGVkLgogUEFTUyBVaW50MTZBcnJheSgpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBh
IGZ1bmN0aW9uLi4KIFBBU1MgVWludDMyQXJyYXkoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4u
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vY2FsbC1hLWNv
bnN0cnVjdG9yLWFzLWEtZnVuY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvZG9tL2NhbGwtYS1jb25zdHJ1Y3Rvci1hcy1hLWZ1bmN0aW9uLWV4cGVjdGVk
LnR4dAppbmRleCAwOGYxZGY5MWFkOTJmMzlkZmU2YzJiZGYyOGJjNjc2MzIyYzIwY2MyLi5jZjUw
OTM1NjNiODViODdkMDgzZGVmMjU4YzBlMTg0NTAzMmNlYWI0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9kb20vY2FsbC1hLWNvbnN0cnVjdG9yLWFzLWEtZnVuY3Rp
b24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L2RvbS9j
YWxsLWEtY29uc3RydWN0b3ItYXMtYS1mdW5jdGlvbi1leHBlY3RlZC50eHQKQEAgLTE4LDcgKzE4
LDcgQEAgUEFTUyBJbnQxNkFycmF5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogJ1tvYmpl
Y3QgSW50MTZBcnJheUNvbnN0cnVjdG9yXScgaXMKIFBBU1MgSW50MzJBcnJheSgpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6ICdbb2JqZWN0IEludDMyQXJyYXlDb25zdHJ1Y3Rvcl0nIGlzIG5v
dCBhIGZ1bmN0aW9uIChldmFsdWF0aW5nICdJbnQzMkFycmF5KCknKS4KIFBBU1MgSW50OEFycmF5
KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogJ1tvYmplY3QgSW50OEFycmF5Q29uc3RydWN0
b3JdJyBpcyBub3QgYSBmdW5jdGlvbiAoZXZhbHVhdGluZyAnSW50OEFycmF5KCknKS4KIFBBU1Mg
TWVzc2FnZUNoYW5uZWwoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiAnW29iamVjdCBNZXNz
YWdlQ2hhbm5lbENvbnN0cnVjdG9yXScgaXMgbm90IGEgZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ01l
c3NhZ2VDaGFubmVsKCknKS4KLVBBU1Mgd2Via2l0UGVlckNvbm5lY3Rpb24oKSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiAnW29iamVjdCBQZWVyQ29ubmVjdGlvbkNvbnN0cnVjdG9yXScgaXMg
bm90IGEgZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ3dlYmtpdFBlZXJDb25uZWN0aW9uKCknKS4KK1BB
U1Mgd2Via2l0RGVwcmVjYXRlZFBlZXJDb25uZWN0aW9uKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogJ1tvYmplY3QgUGVlckNvbm5lY3Rpb25Db25zdHJ1Y3Rvcl0nIGlzIG5vdCBhIGZ1bmN0
aW9uIChldmFsdWF0aW5nICd3ZWJraXRQZWVyQ29ubmVjdGlvbigpJykuCiBQQVNTIFNoYXJlZFdv
cmtlcigpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6ICdbb2JqZWN0IFNoYXJlZFdvcmtlckNv
bnN0cnVjdG9yXScgaXMgbm90IGEgZnVuY3Rpb24gKGV2YWx1YXRpbmcgJ1NoYXJlZFdvcmtlcigp
JykuCiBQQVNTIFVpbnQxNkFycmF5KCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogJ1tvYmpl
Y3QgVWludDE2QXJyYXlDb25zdHJ1Y3Rvcl0nIGlzIG5vdCBhIGZ1bmN0aW9uIChldmFsdWF0aW5n
ICdVaW50MTZBcnJheSgpJykuCiBQQVNTIFVpbnQzMkFycmF5KCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogJ1tvYmplY3QgVWludDMyQXJyYXlDb25zdHJ1Y3Rvcl0nIGlzIG5vdCBhIGZ1bmN0
aW9uIChldmFsdWF0aW5nICdVaW50MzJBcnJheSgpJykuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>