<?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>233673</bug_id>
          
          <creation_ts>2021-11-30 17:10:13 -0800</creation_ts>
          <short_desc>PCM: Unlinkable tokens for triggering event to prevent fraud</short_desc>
          <delta_ts>2021-12-03 16:02:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1819015</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-11-30 17:10:13 -0800</bug_when>
    <thetext>We recently introduced click fraud prevention with unlinkable tokens on the source side in Private Click Measurement (PCM). We should design and implement a way for click destinations to sign unlinkable tokens too and have those tokens be part of the resulting ad attribution report. This helps fight at least three types of fraud:

1. A fraudulent user induces a triggering event that the merchant doesn’t trust. The new feature would allow them to simply not sign a token for that event.
2. A fraudulent publisher creates an attribution report with a signed token from itself and submits it to the merchant to claim attribution.
3. A fraudulent merchant claims that a specific attribution report was fraudulent so that they don’t have to pay for attribution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819017</commentid>
    <comment_count>1</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-11-30 17:10:36 -0800</bug_when>
    <thetext>&lt;rdar://79426347&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819065</commentid>
    <comment_count>2</comment_count>
      <attachid>445507</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-11-30 20:28:17 -0800</bug_when>
    <thetext>Created attachment 445507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819068</commentid>
    <comment_count>3</comment_count>
      <attachid>445509</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-11-30 20:48:23 -0800</bug_when>
    <thetext>Created attachment 445509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819092</commentid>
    <comment_count>4</comment_count>
      <attachid>445521</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-11-30 22:03:56 -0800</bug_when>
    <thetext>Created attachment 445521
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819240</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-12-01 08:09:02 -0800</bug_when>
    <thetext>The iOS layout test failure is just a remaining text diff change I need to make. I’ll do that as part of addressing code review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819324</commentid>
    <comment_count>6</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-12-01 11:09:29 -0800</bug_when>
    <thetext>The iOS API test failure is unrelated and being addressed similar to https://trac.webkit.org/changeset/286368/webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819352</commentid>
    <comment_count>7</comment_count>
      <attachid>445521</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-01 12:05:02 -0800</bug_when>
    <thetext>Comment on attachment 445521
Patch

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

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:95
&gt; +PrivateClickMeasurement::UnlinkableToken PrivateClickMeasurement::UnlinkableToken::isolatedCopy() const

nit: If you use trailing return type syntax, it reduces the number of &quot;PrivateClickMeasurement::&quot; needed.

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:107
&gt; +PrivateClickMeasurement::SourceUnlinkableToken PrivateClickMeasurement::SourceUnlinkableToken::isolatedCopy() const

This is a lot of duplicate code.  Can we just have UnlinkableToken have an isolatedCopy() without having 3 copies of the exact same code?  Same with the secret tokens.

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:164
&gt; +    for (auto&amp; parameter : parameters) {
&gt; +        if (parameter.key == &quot;attributionSource&quot;) {

This seems to allow two attributionDestinationNonces or two attributionSources.  I think the intent of the two parameters is that there is one attributionSource and one attributionDestinationNonce.

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:183
&gt; +    AttributionTriggerData attributionTriggerData;

I prefer the pattern of calling the constructor with all the members when returning it over calling the default constructor then filling in the members.  It makes it easier to remember all the members.

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:343
&gt; +bool PrivateClickMeasurement::EphemeralDestinationNonce::isValid() const

Can we make EphemeralSourceNonce and EphemeralDestinationNonce share a parent class to have less duplicate code like we do with the tokens?

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:365
&gt; +const std::optional&lt;const URL&gt; PrivateClickMeasurement::tokenPublicKeyURL(const RegistrableDomain&amp; registrableDomain)

A URL already has a null state.  std::optional&lt;URL&gt; is almost always overkill.  Just check if the URL is non-null and valid.

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:413
&gt; +        return reportDetails;

Do we want an empty object here instead of nullptr?

&gt; Source/WebCore/loader/cocoa/PrivateClickMeasurementCocoa.mm:91
&gt; +Expected&lt;PrivateClickMeasurement::DestinationSecretToken, String&gt; PrivateClickMeasurement::calculateAndUpdateDestinationSecretToken(const String&amp; serverResponseBase64URL, DestinationUnlinkableToken&amp; unlinkableToken)

Why is this signature so different from calculateAndUpdateSourceSecretToken?

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:719
&gt;  bool Database::needsUpdatedSchema()

I&apos;m not sure if this needs updating.  Schema migration needs a test like MigrateFromPCM1

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h:104
&gt; +    std::optional&lt;WebCore::PrivateClickMeasurement::DestinationSecretToken&gt; m_destinationSecretToken;

Why do we need to keep a destination secret token here but not a source secret token here?

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp:283
&gt; +void PrivateClickMeasurementManager::getSignedUnlinkableTokenForDestination(SourceSite&amp;&amp; sourceSite, AttributionDestinationSite&amp;&amp; destinationSite, AttributionTriggerData&amp;&amp; attributionTriggerData, const ApplicationBundleIdentifier&amp; applicationBundleIdentifier)

This shares a lot of code with PrivateClickMeasurementManager::getSignedUnlinkableToken.  Can they be better abstracted?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:349
&gt; +TEST(PrivateClickMeasurement, DestinationClickFraudPrevention)

This has a lot of duplicate code with TEST(PrivateClickMeasurement, FraudPrevention).  Can they share anything?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819365</commentid>
    <comment_count>8</comment_count>
      <attachid>445521</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-12-01 12:29:47 -0800</bug_when>
    <thetext>Comment on attachment 445521
Patch

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

&gt; Source/WebKit/NetworkProcess/DatabaseUtilities.cpp:163
&gt; +    // These indices are zero-based for some reason. There should be a comment here explaining why.

This is explained in the SQLite docs: https://www.sqlite.org/c3ref/column_blob.html &quot;The leftmost column of the result set has the index 0&quot;.

&gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:-714
&gt; -    checkColumns(unattributedTableName);

Removing this will cause an API test to fail, MigrateFromPCM1. We should replace it with a test for the new columns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819520</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-12-01 18:07:28 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 445521 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=445521&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:95
&gt; &gt; +PrivateClickMeasurement::UnlinkableToken PrivateClickMeasurement::UnlinkableToken::isolatedCopy() const
&gt; 
&gt; nit: If you use trailing return type syntax, it reduces the number of
&gt; &quot;PrivateClickMeasurement::&quot; needed.
&gt; 
&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:107
&gt; &gt; +PrivateClickMeasurement::SourceUnlinkableToken PrivateClickMeasurement::SourceUnlinkableToken::isolatedCopy() const
&gt; 
&gt; This is a lot of duplicate code.  Can we just have UnlinkableToken have an
&gt; isolatedCopy() without having 3 copies of the exact same code?  Same with
&gt; the secret tokens.

That&apos;s what I did first but the compiler did not accept my cast to the specific type. Any idea how it should be done? I specifically want to have distinct types to minimize the risk of tokens getting mixed up in the code.

&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:164
&gt; &gt; +    for (auto&amp; parameter : parameters) {
&gt; &gt; +        if (parameter.key == &quot;attributionSource&quot;) {
&gt; 
&gt; This seems to allow two attributionDestinationNonces or two
&gt; attributionSources.  I think the intent of the two parameters is that there
&gt; is one attributionSource and one attributionDestinationNonce.

True.

&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:183
&gt; &gt; +    AttributionTriggerData attributionTriggerData;
&gt; 
&gt; I prefer the pattern of calling the constructor with all the members when
&gt; returning it over calling the default constructor then filling in the
&gt; members.  It makes it easier to remember all the members.

Some of them are optional which is why it was done this way. Are you saying you want them to have default values in the constructor?

&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:343
&gt; &gt; +bool PrivateClickMeasurement::EphemeralDestinationNonce::isValid() const
&gt; 
&gt; Can we make EphemeralSourceNonce and EphemeralDestinationNonce share a
&gt; parent class to have less duplicate code like we do with the tokens?

I actually don&apos;t think they need to be distinct since they are not stored or included in attribution reports. I&apos;ll try to change that.

&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:365
&gt; &gt; +const std::optional&lt;const URL&gt; PrivateClickMeasurement::tokenPublicKeyURL(const RegistrableDomain&amp; registrableDomain)
&gt; 
&gt; A URL already has a null state.  std::optional&lt;URL&gt; is almost always
&gt; overkill.  Just check if the URL is non-null and valid.

The problem here is that checking if the URL is non-empty has to be done by the caller and it&apos;s easy to forget. We already had that problem in how we create the token URLs which is why I made them optional. When they are optional, the caller *has to check*. Mandatory check is what I want. Another way to achieve that is by having an optional error/exception. Is that preferable?

&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:413
&gt; &gt; +        return reportDetails;
&gt; 
&gt; Do we want an empty object here instead of nullptr?

The function returns a Ref&lt;JSON::Object&gt;. Can that be null?

&gt; &gt; Source/WebCore/loader/cocoa/PrivateClickMeasurementCocoa.mm:91
&gt; &gt; +Expected&lt;PrivateClickMeasurement::DestinationSecretToken, String&gt; PrivateClickMeasurement::calculateAndUpdateDestinationSecretToken(const String&amp; serverResponseBase64URL, DestinationUnlinkableToken&amp; unlinkableToken)
&gt; 
&gt; Why is this signature so different from calculateAndUpdateSourceSecretToken?

It&apos;s static since the DestinationUnlinkableToken is not a member. I at one point made them both static but removed that to make fewer changes.

&gt; &gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:719
&gt; &gt;  bool Database::needsUpdatedSchema()
&gt; 
&gt; I&apos;m not sure if this needs updating.  Schema migration needs a test like
&gt; MigrateFromPCM1

Is this what Kate referred to in her subsequent comment?

&gt; &gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.h:104
&gt; &gt; +    std::optional&lt;WebCore::PrivateClickMeasurement::DestinationSecretToken&gt; m_destinationSecretToken;
&gt; 
&gt; Why do we need to keep a destination secret token here but not a source
&gt; secret token here?

Sorry, this is a leftover from before I had implemented the DB part and wanted to build a full roundtrip test case. I kept the destination token in memory to build the test case and then continued to implement the DB part. Will remove.

&gt; &gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementManager.cpp:283
&gt; &gt; +void PrivateClickMeasurementManager::getSignedUnlinkableTokenForDestination(SourceSite&amp;&amp; sourceSite, AttributionDestinationSite&amp;&amp; destinationSite, AttributionTriggerData&amp;&amp; attributionTriggerData, const ApplicationBundleIdentifier&amp; applicationBundleIdentifier)
&gt; 
&gt; This shares a lot of code with
&gt; PrivateClickMeasurementManager::getSignedUnlinkableToken.  Can they be
&gt; better abstracted?

Agreed. I started out trying to combine them but the flow is quite different. The first one gets the signature before a PCM object is persisted. The second gets the signature before trying to match with an already stored PCM object. I&apos;ll see if I can extract some of the code into a helper function.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/EventAttribution.mm:349
&gt; &gt; +TEST(PrivateClickMeasurement, DestinationClickFraudPrevention)
&gt; 
&gt; This has a lot of duplicate code with TEST(PrivateClickMeasurement,
&gt; FraudPrevention).  Can they share anything?

I&apos;ll try.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819521</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-12-01 18:11:07 -0800</bug_when>
    <thetext>(In reply to Kate Cheney from comment #8)
&gt; Comment on attachment 445521 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=445521&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/DatabaseUtilities.cpp:163
&gt; &gt; +    // These indices are zero-based for some reason. There should be a comment here explaining why.
&gt; 
&gt; This is explained in the SQLite docs:
&gt; https://www.sqlite.org/c3ref/column_blob.html &quot;The leftmost column of the
&gt; result set has the index 0&quot;.

Thanks! I&apos;ll add that link in a comment so that others won&apos;t get as confused as I was.

&gt; &gt; Source/WebKit/NetworkProcess/PrivateClickMeasurement/PrivateClickMeasurementDatabase.cpp:-714
&gt; &gt; -    checkColumns(unattributedTableName);
&gt; 
&gt; Removing this will cause an API test to fail, MigrateFromPCM1. We should
&gt; replace it with a test for the new columns.

I got no API test failures though, neither locally nor on the bots. Any clues as to why?

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819949</commentid>
    <comment_count>11</comment_count>
      <attachid>445793</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-12-02 16:54:55 -0800</bug_when>
    <thetext>Created attachment 445793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1819960</commentid>
    <comment_count>12</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-12-02 17:05:36 -0800</bug_when>
    <thetext>Changes from last patch:
- Extracted a bunch of shared code to reduce duplication, both in implementation and test code.
- Made sure duplicate query parameters are not allowed.
- Collapsed source and destination nonces into once class.
- Removed stray member variable.
- Added comment and link on zero-based indices.

Remaining things to discuss:

# Constructor with default values vs filling in members

PrivateClickMeasurement::parseAttributionRequestQuery() returns a PrivateClickMeasurement::AttributionTriggerData object for further population which is why it&apos;s done that way. The alternative I considered was to create the PrivateClickMeasurement::AttributionTriggerData object and submit it in the call to PrivateClickMeasurement::parseAttributionRequestQuery() but that still means filling in members after construction.

# Use of std::optional&lt;URL&gt;

I want to force the caller to have to check instead of relying on the caller to check if the returned URL is empty or not. This is because the signature URL stuff doesn&apos;t react on empty URLs and I don&apos;t want to risk us producing tokens for invalid URLs.

# MigrateFromPCM1

You both commented on this but the test passes with my changes. There&apos;s a comment in the code that we should remove the migration code late 2021. I looked at how the test is set up and wasn&apos;t able to figure out if it&apos;s supposed to fail with my changes or not. Kate suggested I repurpose this test for the new columns. Guidance would be appreciated. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820270</commentid>
    <comment_count>13</comment_count>
      <attachid>445793</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-03 12:37:31 -0800</bug_when>
    <thetext>Comment on attachment 445793
Patch

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

My comment about MigrateFromPCM1 was that we need a MigrateFromPCM2 to test what happens when we open a database written before this schema change.

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:75
&gt; +    copy.tokenBase64URL = tokenBase64URL.isolatedCopy();

This is all duplicate code.  It should just call SecretToken::isolatedCopy.

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:84
&gt; +    copy.tokenBase64URL = tokenBase64URL.isolatedCopy();

ditto.  Actually, I think if you just completely remove these 4 functions it will do the right thing.

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:111
&gt; +    copy.blinder = blinder;

ditto with UnlinkableToken::isolatedCopy

&gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:123
&gt; +    copy.blinder = blinder;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820307</commentid>
    <comment_count>14</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-12-03 14:03:36 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #13)
&gt; Comment on attachment 445793 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=445793&amp;action=review
&gt; 
&gt; My comment about MigrateFromPCM1 was that we need a MigrateFromPCM2 to test
&gt; what happens when we open a database written before this schema change.
&gt; 
&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:75
&gt; &gt; +    copy.tokenBase64URL = tokenBase64URL.isolatedCopy();
&gt; 
&gt; This is all duplicate code.  It should just call SecretToken::isolatedCopy.
&gt; 
&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:84
&gt; &gt; +    copy.tokenBase64URL = tokenBase64URL.isolatedCopy();
&gt; 
&gt; ditto.  Actually, I think if you just completely remove these 4 functions it
&gt; will do the right thing.
&gt; 
&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:111
&gt; &gt; +    copy.blinder = blinder;
&gt; 
&gt; ditto with UnlinkableToken::isolatedCopy
&gt; 
&gt; &gt; Source/WebCore/loader/PrivateClickMeasurement.cpp:123
&gt; &gt; +    copy.blinder = blinder;
&gt; 
&gt; ditto

I did that originally and ran into problems casting to the specific type that I want the respective isolatedCopy() to return. DestinationSecretToken::isolatedCopy() should return a DestinationSecretToken and vice versa. I may have done it wrong.

return static_cast&lt;DestinationSecretToken&gt;(SecretToken::isolatedCopy());

… results in …

error: no matching conversion for static_cast from &apos;PrivateClickMeasurement::SecretToken&apos; to &apos;WebCore::PrivateClickMeasurement::SourceSecretToken&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820308</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-03 14:04:34 -0800</bug_when>
    <thetext>Don&apos;t static_cast, call the constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820315</commentid>
    <comment_count>16</comment_count>
      <attachid>445902</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-12-03 14:39:02 -0800</bug_when>
    <thetext>Created attachment 445902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820316</commentid>
    <comment_count>17</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-12-03 14:41:06 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #15)
&gt; Don&apos;t static_cast, call the constructor.

That worked! Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820335</commentid>
    <comment_count>18</comment_count>
      <attachid>445902</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2021-12-03 15:47:44 -0800</bug_when>
    <thetext>Comment on attachment 445902
Patch

Thank you, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820336</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-03 16:02:26 -0800</bug_when>
    <thetext>Committed r286519 (244854@main): &lt;https://commits.webkit.org/244854@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445902.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445507</attachid>
            <date>2021-11-30 20:28:17 -0800</date>
            <delta_ts>2021-11-30 20:51:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233673-20211130202816.patch</filename>
            <type>text/plain</type>
            <size>108624</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRlNDYyN2I5OTJhMTMz
YWM4NTAzZWY3MmE1ZmJmZGE1MGJhNTdiYi4uMDY3MDM5NTIwYjM1MTIyYzUyMzRiNzMwZmJlZmU0
MTJkYzI5ZjJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIxLTExLTMwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogVW5saW5rYWJs
ZSB0b2tlbnMgZm9yIHRyaWdnZXJpbmcgZXZlbnQgdG8gcHJldmVudCBmcmF1ZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjczCisgICAgICAgIDxy
ZGFyOi8vNzk0MjYzNDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgdHJpZ2dlcmluZyBldmVudHMgdG8gaGF2ZSBhbiBv
cHRpb25hbCBxdWVyeSBwYXJhbWV0ZXIgbGlrZSB0aGlzOgorICAgICAgICBodHRwczovL2Rlc3Rp
bmF0aW9uLmV4YW1wbGUvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmln
Z2VyLWF0dHJpYnV0aW9uLzExP2F0dHJpYnV0aW9uRGVzdGluYXRpb25Ob25jZT1BQkNERUZhYmNk
ZWYwMTIzNDU2Nzg5CisKKyAgICAgICAgVGhlIHByZXNlbmNlIG9mIGFuIGF0dHJpYnV0aW9uRGVz
dGluYXRpb25Ob25jZSB0cmlnZ2VycyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIgdG8K
KyAgICAgICAgYXNrIHRoZSBzZXJ2ZXIgdG8gc2lnbiBhbiB1bmxpbmthYmxlIHRva2VuIGZvciB0
aGUgdHJpZ2dlcmluZyBldmVudCBhbmQgdGhlbiBzdG9yZXMgdGhlCisgICAgICAgIGNvcnJlc3Bv
bmRpbmcgc2VjcmV0IHRva2VuIHBsdXMgdGhlIHNpZ25hdHVyZSBmb3IgbGF0ZXIgaW5jbHVzaW9u
IGluIHRoZSBhdHRyaWJ1dGlvbiByZXBvcnQuCisKKyAgICAgICAgVGhlIFdlYkNvcmUgY2hhbmdl
cyBpbnRyb2R1Y2UgdGhlc2UgbmV3IHN0cnVjdHMgYW5kIGRhdGEgZmllbGRzIGluCisgICAgICAg
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OgorICAgICAgICAtIEVwaGVtZXJhbERl
c3RpbmF0aW9uTm9uY2UKKyAgICAgICAgLSBVbmxpbmthYmxlVG9rZW4gKGJhc2UgY2xhc3MgZm9y
IHRoZSBzcGVjaWZpYyBvbmVzIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uKQorICAgICAgICAt
IFNvdXJjZVVubGlua2FibGVUb2tlbgorICAgICAgICAtIERlc3RpbmF0aW9uVW5saW5rYWJsZVRv
a2VuCisgICAgICAgIC0gU2VjcmV0VG9rZW4gKGJhc2UgY2xhc3MgZm9yIHRoZSBzcGVjaWZpYyBv
bmVzIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uKQorICAgICAgICAtIFNvdXJjZVNlY3JldFRv
a2VuCisgICAgICAgIC0gRGVzdGluYXRpb25TZWNyZXRUb2tlbgorCisgICAgICAgIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIG5vdyBoYXMg
dGhlc2Ugb3B0aW9uYWwgZmllbGRzOgorICAgICAgICAtIGVwaGVtZXJhbERlc3RpbmF0aW9uTm9u
Y2UKKyAgICAgICAgLSBkZXN0aW5hdGlvblVubGlua2FibGVUb2tlbgorICAgICAgICAtIGRlc3Rp
bmF0aW9uU2VjcmV0VG9rZW4KKyAgICAgICAgLSBkZXN0aW5hdGlvblNpdGUKKworICAgICAgICBU
aGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIHNldHRlcnMvZ2V0dGVycyBhbmQgY3JlYXRvciBmdW5j
dGlvbnMgZm9yIHRob3NlIGRhdGEgZmllbGRzLgorCisgICAgICAgIE5ldyBBUEkvdW5pdCB0ZXN0
IFByaXZhdGVDbGlja01lYXN1cmVtZW50LkRlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZlbnRpb24u
CisKKyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZVNlY3JldFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNvbGF0
ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVx
dWVzdFF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojpw
YXJzZUF0dHJpYnV0aW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6YXR0cmlidXRpb25SZXBvcnRKU09OIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNWYWxp
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBo
ZW1lcmFsRGVzdGluYXRpb25Ob25jZTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNOb25jZVZhbGlkKToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblB1YmxpY0tleVVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5QdWJsaWNLZXlVUkwgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2ln
bmF0dXJlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0
b2tlblNpZ25hdHVyZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6dG9rZW5TaWduYXR1cmVKU09OIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRU
b2tlbjo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6c2V0RGVzdGluYXRpb25TZWNyZXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46OmlzVmFsaWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJp
Z2dlckRhdGE6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OnNldERlc3RpbmF0
aW9uVW5saW5rYWJsZVRva2VuVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OnNldERlc3RpbmF0aW9uU2VjcmV0
VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uVHJpZ2dlckRhdGE6OnRva2VuUHVibGljS2V5VVJMIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjp0
b2tlblNpZ25hdHVyZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6c291cmNlVW5saW5rYWJsZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVt
ZXJhbERlc3RpbmF0aW9uTm9uY2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2FibGVUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlRGVz
dGluYXRpb25VbmxpbmthYmxlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVVubGlua2FibGVUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlU291
cmNlU2VjcmV0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uU2VjcmV0VG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNlY3Jl
dFRva2VuKToKKwogMjAyMS0xMS0zMCAgR2FicmllbCBOYXZhIE1hcmlubyAgPGduYXZhbWFyaW5v
QGFwcGxlLmNvbT4KIAogICAgICAgICBudWxscHRyIGRlcmVmIGluIEluYmFuZENoYXB0ZXJUcmFj
a1ByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ2hhcHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDA2ZDQ5NzQ5MzIx
NGY2NGYyMjFhNDQyNjY3MzU2YWJlNTRiODA1Zi4uMDU3ODVhYzljYmM2YTQyYjczMWRjNjFhYWRm
ZDgxNjNiODUzMjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMS0xMS0zMCAgSm9o
biBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IFVubGlua2Fi
bGUgdG9rZW5zIGZvciB0cmlnZ2VyaW5nIGV2ZW50IHRvIHByZXZlbnQgZnJhdWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3MworICAgICAgICA8
cmRhcjovLzc5NDI2MzQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHRyaWdnZXJpbmcgZXZlbnRzIHRvIGhhdmUgYW4g
b3B0aW9uYWwgcXVlcnkgcGFyYW1ldGVyIGxpa2UgdGhpczoKKyAgICAgICAgaHR0cHM6Ly9kZXN0
aW5hdGlvbi5leGFtcGxlLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJp
Z2dlci1hdHRyaWJ1dGlvbi8xMT9hdHRyaWJ1dGlvbkRlc3RpbmF0aW9uTm9uY2U9QUJDREVGYWJj
ZGVmMDEyMzQ1Njc4OQorCisgICAgICAgIFRoZSBwcmVzZW5jZSBvZiBhbiBhdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uTm9uY2UgdHJpZ2dlcnMgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyIHRv
CisgICAgICAgIGFzayB0aGUgc2VydmVyIHRvIHNpZ24gYW4gdW5saW5rYWJsZSB0b2tlbiBmb3Ig
dGhlIHRyaWdnZXJpbmcgZXZlbnQgYW5kIHRoZW4gc3RvcmVzIHRoZQorICAgICAgICBjb3JyZXNw
b25kaW5nIHNlY3JldCB0b2tlbiBwbHVzIHRoZSBzaWduYXR1cmUgZm9yIGxhdGVyIGluY2x1c2lv
biBpbiB0aGUgYXR0cmlidXRpb24gcmVwb3J0LgorCisgICAgICAgIE5ldyBBUEkvdW5pdCB0ZXN0
IFByaXZhdGVDbGlja01lYXN1cmVtZW50LkRlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZlbnRpb24u
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RnJvbURhdGFiYXNlIGNvbnN0KToKKyAgICAgICAgICAgIE5vdyBoYW5kbGVzIGRlc3RpbmF0
aW9uIHRva2Vucy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UENNOjpEYXRhYmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAgICAgTm93IGNhbGxzIGFkZERl
c3RpbmF0aW9uVG9rZW5Db2x1bW5zSWZOZWNlc3NhcnkoKS4KKyAgICAgICAgKFdlYktpdDo6UENN
OjpEYXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAgICAg
Tm93IGRvZXMgaW5zZXJ0aW9uIG9mIG9wdGlvbmFsIGRlc3RpbmF0aW9uIHRva2Vucy4KKyAgICAg
ICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWRkRGVzdGluYXRpb25Ub2tlbkNvbHVtbnNJZk5l
Y2Vzc2FyeSk6CisgICAgICAgICAgICBEYXRhYmFzZSBtaWdyYXRpb24uCisgICAgICAgIChXZWJL
aXQ6OlBDTTo6RGF0YWJhc2U6OmFkZEJ1bmRsZUlEQ29sdW1uSWZOZWNlc3NhcnkpOiBEZWxldGVk
LgorICAgICAgICAgICAgVGVtcG9yYXJ5IG1pZ3JhdGlvbiBmdW5jdGlvbiBmb3Igbm9uLWN1c3Rv
bWVyIGJ1aWxkcy4gTm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZCk6CisgICAgICAgICAgICBK
dXN0IG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyOjpnZXRUb2tlblB1YmxpY0tleSk6CisgICAgICAgICAgICBOb3QgY2hhbmdlZCBh
ZmFpay4gU2VlbXMgbGlrZSB0aGUgZGlmZiBpcyBjb25mdXNlZC4KKyAgICAgICAgKFdlYktpdDo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5G
b3JTb3VyY2UpOgorICAgICAgICAgICAgUmVuYW1lZC4KKyAgICAgICAgKFdlYktpdDo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0
aW5hdGlvbik6CisgICAgICAgICAgICBEaWZmZXJlbnQgdGhhbiBmb3IgdGhlIHNvdXJjZSBpbiB0
aGF0IGl0IHJlc3VsdHMgaW4gYW4gYXR0cmlidXRpb24gY2FsbC4KKyAgICAgICAgKFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRpb24pOgorICAgICAgICAgICAg
Tm93IGRvZXMgc2lnbmluZyBvZiBkZXN0aW5hdGlvbiB0b2tlbiBpZiB0aGUgb3B0aW9uYWwgbm9u
Y2UgaXMgaW4gdGhlIHRyaWdnZXJpbmcgZXZlbnQuCisgICAgICAgIChQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRva2Vu
KTogRGVsZXRlZC4KKyAgICAgICAgICAgIFJlbmFtZWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JTb3VyY2UoKS4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXIuaDoKKwogMjAyMS0xMS0zMCAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgRXh0ZW5zaW9uVGFiQWN0aXZhdGlvbiBkaWFn
bm9zdGljIGV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50LmNwcAppbmRleCBiOTJhYTAyNDNjZGQxYmE2YzYzMTVkMDcwNTdlNGVhY2ZiODhl
ZWJlLi5kYmNjODA0NWI2ZjdhNDU5NDg0ZWUxM2FiZGFhNGYwNjMyMzQ3YzkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKQEAgLTQ0
LDcgKzQ0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blB1YmxpY0tleVBhdGhbXSA9ICIvLndlbGwta25vd24vcHIKIHN0YXRpYyBjb25zdCBjaGFyIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50UmVwb3J0QXR0cmlidXRpb25QYXRoW10gPSAiLy53ZWxsLWtu
b3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvcmVwb3J0LWF0dHJpYnV0aW9uLyI7CiBjb25z
dCBzaXplX3QgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0
aFNlZ21lbnRTaXplID0gMjsKIGNvbnN0IHNpemVfdCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFBy
aW9yaXR5UGF0aFNlZ21lbnRTaXplID0gMjsKLWNvbnN0IHVpbnQ4X3QgcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRWZXJzaW9uID0gMjsKK2NvbnN0IHVpbnQ4X3QgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRWZXJzaW9uID0gMzsKIAogY29uc3QgU2Vjb25kcyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
bWF4QWdlKCkKIHsKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgICAgICYmIChtX3RpbWVzVG9TZW5kLnNvdXJjZUVhcmxp
ZXN0VGltZVRvU2VuZCB8fCBtX3RpbWVzVG9TZW5kLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9T
ZW5kKTsKIH0KIAotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6U2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIHsKICAgICAgICAgdG9rZW5CYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCksCkBAIC02OSwxMiAr
NjksMzAgQEAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXQKICAgICB9OwogfQogCitQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZVNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIGF1dG8gY29w
eSA9IFNvdXJjZVNlY3JldFRva2VuIHsgfTsKKyAgICBjb3B5LnRva2VuQmFzZTY0VVJMID0gdG9r
ZW5CYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5zaWduYXR1cmVCYXNlNjRVUkwg
PSBzaWduYXR1cmVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5rZXlJREJhc2U2
NFVSTCA9IGtleUlEQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpOworICAgIHJldHVybiBjb3B5Owor
fQorCitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRUb2tlbiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRUb2tlbjo6aXNvbGF0ZWRDb3B5
KCkgY29uc3QKK3sKKyAgICBhdXRvIGNvcHkgPSBEZXN0aW5hdGlvblNlY3JldFRva2VuIHsgfTsK
KyAgICBjb3B5LnRva2VuQmFzZTY0VVJMID0gdG9rZW5CYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCk7
CisgICAgY29weS5zaWduYXR1cmVCYXNlNjRVUkwgPSBzaWduYXR1cmVCYXNlNjRVUkwuaXNvbGF0
ZWRDb3B5KCk7CisgICAgY29weS5rZXlJREJhc2U2NFVSTCA9IGtleUlEQmFzZTY0VVJMLmlzb2xh
dGVkQ29weSgpOworICAgIHJldHVybiBjb3B5OworfQorCiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsU291cmNlTm9uY2UgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJh
bFNvdXJjZU5vbmNlOjppc29sYXRlZENvcHkoKSBjb25zdAogewogICAgIHJldHVybiB7IG5vbmNl
Lmlzb2xhdGVkQ29weSgpIH07CiB9CiAKLVByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VV
bmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVU
b2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpVbmxp
bmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVubGlua2FibGVUb2tlbjo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gewogI2lmIFBMQVRGT1JNKENPQ09BKQpA
QCAtODYsNiArMTA0LDI2IEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VVbmxpbmth
YmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVuCiAgICAgfTsKIH0KIAor
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkoKSBjb25z
dAoreworICAgIGF1dG8gY29weSA9IFNvdXJjZVVubGlua2FibGVUb2tlbiB7IH07CisgICAgY29w
eS5ibGluZGVyID0gYmxpbmRlcjsKKyAgICBjb3B5LndhaXRpbmdUb2tlbiA9IHdhaXRpbmdUb2tl
bjsKKyAgICBjb3B5LnJlYWR5VG9rZW4gPSByZWFkeVRva2VuOworICAgIGNvcHkudmFsdWVCYXNl
NjRVUkwgPSB2YWx1ZUJhc2U2NFVSTC5pc29sYXRlZENvcHkoKTsKKyAgICByZXR1cm4gY29weTsK
K30KKworUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2Vu
IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBhdXRvIGNvcHkgPSBEZXN0aW5hdGlvblVubGlua2Fi
bGVUb2tlbiB7IH07CisgICAgY29weS5ibGluZGVyID0gYmxpbmRlcjsKKyAgICBjb3B5LndhaXRp
bmdUb2tlbiA9IHdhaXRpbmdUb2tlbjsKKyAgICBjb3B5LnJlYWR5VG9rZW4gPSByZWFkeVRva2Vu
OworICAgIGNvcHkudmFsdWVCYXNlNjRVUkwgPSB2YWx1ZUJhc2U2NFVSTC5pc29sYXRlZENvcHko
KTsKKyAgICByZXR1cm4gY29weTsKK30KKwogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgY29weSB7CkBAIC0xMTEsMjYgKzE0OSw0MSBAQCBFeHBlY3RlZDxQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgU3RyaW5nPiBQcml2
YXRlQ2xpY2tNZQogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzKHJlZGly
ZWN0VVJMKTsKICAgICBpZiAoIXBhcmFtZXRlcnMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJzaW9uIHdhcyBu
b3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMIGhhZCBhIHF1ZXJ5IHN0cmluZyBidXQgaXQgZGlk
bid0IGNvbnRhaW4gc3VwcG9ydGVkIHBhcmFtZXRlcnMuIl9zKTsKLQotICAgIGlmIChwYXJhbWV0
ZXJzLnNpemUoKSA+IDEpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUg
Q2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRo
ZSBVUkwncyBxdWVyeSBzdHJpbmcgY29udGFpbmVkIHVuc3VwcG9ydGVkIHBhcmFtZXRlcnMuIl9z
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCBo
YWQgYSBxdWVyeSBzdHJpbmcgYnV0IGl0IGRpZG4ndCBjb250YWluIHN1cHBvcnRlZCBwYXJhbWV0
ZXJzLiJfcyk7CisKKyAgICBpZiAocGFyYW1ldGVycy5zaXplKCkgPiAyKQorICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5n
IGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgcXVlcnkgc3RyaW5nIGNv
bnRhaW5lZCB1bnN1cHBvcnRlZCBwYXJhbWV0ZXJzLiJfcyk7CisKKyAgICBFcGhlbWVyYWxEZXN0
aW5hdGlvbk5vbmNlIGRlc3RpbmF0aW9uTm9uY2U7CisgICAgUmVnaXN0cmFibGVEb21haW4gc291
cmNlRG9tYWluOworICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDogcGFyYW1ldGVycykgeworICAg
ICAgICBpZiAocGFyYW1ldGVyLmtleSA9PSAiYXR0cmlidXRpb25Tb3VyY2UiKSB7CisgICAgICAg
ICAgICBpZiAocGFyYW1ldGVyLnZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5n
IGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgYXR0cmlidXRpb25Tb3Vy
Y2UgcXVlcnkgcGFyYW1ldGVyIGhhZCBubyB2YWx1ZS4iX3MpOworCisgICAgICAgICAgICBhdXRv
IGF0dHJpYnV0aW9uU291cmNlVVJMID0gVVJMKFVSTCgpLCBwYXJhbWV0ZXIudmFsdWUpOworICAg
ICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblNvdXJjZVVSTC5pc1ZhbGlkKCkgfHwgKGF0dHJpYnV0
aW9uU291cmNlVVJMLmhhc1BhdGgoKSAmJiBhdHRyaWJ1dGlvblNvdXJjZVVSTC5wYXRoKCkubGVu
Z3RoKCkgPiAxKSB8fCBhdHRyaWJ1dGlvblNvdXJjZVVSTC5oYXNDcmVkZW50aWFscygpIHx8IGF0
dHJpYnV0aW9uU291cmNlVVJMLmhhc1F1ZXJ5KCkgfHwgYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFz
RnJhZ21lbnRJZGVudGlmaWVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90
IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIGF0dHJpYnV0aW9uU291cmNlIHF1ZXJ5IHBhcmFt
ZXRlciB3YXMgbm90IGEgdmFsaWQgVVJMIG9yIHdhcyBhIFVSTCB3aXRoIGEgcGF0aCwgY3JlZGVu
dGlhbHMsIHF1ZXJ5IHN0cmluZywgb3IgZnJhZ21lbnQuIl9zKTsKKworICAgICAgICAgICAgc291
cmNlRG9tYWluID0gUmVnaXN0cmFibGVEb21haW4geyBhdHRyaWJ1dGlvblNvdXJjZVVSTCB9Owor
ICAgICAgICAgICAgaWYgKHNvdXJjZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dl
cmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIGF0dHJpYnV0aW9u
U291cmNlIHF1ZXJ5IHBhcmFtZXRlciBoYWQgbm8gcmVnaXN0cmFibGUgZG9tYWluLiJfcyk7Cisg
ICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLmtleSA9PSAiYXR0cmlidXRpb25EZXN0aW5hdGlv
bk5vbmNlIikgeworICAgICAgICAgICAgaWYgKHBhcmFtZXRlci52YWx1ZS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFz
dXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVS
TCdzIGF0dHJpYnV0aW9uRGVzdGluYXRpb25Ob25jZSBxdWVyeSBwYXJhbWV0ZXIgaGFkIG5vIHZh
bHVlLiJfcyk7CisgICAgICAgICAgICBkZXN0aW5hdGlvbk5vbmNlLm5vbmNlID0gcGFyYW1ldGVy
LnZhbHVlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBh
Y2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBxdWVyeSBzdHJpbmcgY29udGFpbmVkIHVuc3VwcG9y
dGVkIHBhcmFtZXRlcnMuIl9zKTsKKyAgICB9CiAKLSAgICBhdXRvIHBhcmFtZXRlciA9IHBhcmFt
ZXRlcnMuZmlyc3QoKTsKLSAgICBpZiAocGFyYW1ldGVyLmtleSA9PSAiYXR0cmlidXRpb25Tb3Vy
Y2UiKSB7Ci0gICAgICAgIGlmIChwYXJhbWV0ZXIudmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29u
dmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIGF0dHJpYnV0aW9uU291
cmNlIHF1ZXJ5IHBhcmFtZXRlciBoYWQgbm8gdmFsdWUuIl9zKTsKKyAgICBBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CisgICAgaWYgKCFzb3VyY2VEb21haW4u
aXNFbXB0eSgpKQorICAgICAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnNvdXJjZVJlZ2lzdHJh
YmxlRG9tYWluID0gV1RGTW92ZShzb3VyY2VEb21haW4pOwogCi0gICAgICAgIGF1dG8gYXR0cmli
dXRpb25Tb3VyY2VVUkwgPSBVUkwoVVJMKCksIHBhcmFtZXRlci52YWx1ZSk7Ci0gICAgICAgIGlm
ICghYXR0cmlidXRpb25Tb3VyY2VVUkwuaXNWYWxpZCgpIHx8IChhdHRyaWJ1dGlvblNvdXJjZVVS
TC5oYXNQYXRoKCkgJiYgYXR0cmlidXRpb25Tb3VyY2VVUkwucGF0aCgpLmxlbmd0aCgpID4gMSkg
fHwgYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFzQ3JlZGVudGlhbHMoKSB8fCBhdHRyaWJ1dGlvblNv
dXJjZVVSTC5oYXNRdWVyeSgpIHx8IGF0dHJpYnV0aW9uU291cmNlVVJMLmhhc0ZyYWdtZW50SWRl
bnRpZmllcigpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhl
IFVSTCdzIGF0dHJpYnV0aW9uU291cmNlIHF1ZXJ5IHBhcmFtZXRlciB3YXMgbm90IGEgdmFsaWQg
VVJMIG9yIHdhcyBhIFVSTCB3aXRoIGEgcGF0aCwgY3JlZGVudGlhbHMsIHF1ZXJ5IHN0cmluZywg
b3IgZnJhZ21lbnQuIl9zKTsKKyAgICBpZiAoIWRlc3RpbmF0aW9uTm9uY2Uubm9uY2UuaXNFbXB0
eSgpKQorICAgICAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmVwaGVtZXJhbERlc3RpbmF0aW9u
Tm9uY2UgPSBXVEZNb3ZlKGRlc3RpbmF0aW9uTm9uY2UpOwogCi0gICAgICAgIEF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEgYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKLSAgICAgICAgYXR0cmlidXRpb25U
cmlnZ2VyRGF0YS5zb3VyY2VSZWdpc3RyYWJsZURvbWFpbiA9IFJlZ2lzdHJhYmxlRG9tYWluIHsg
YXR0cmlidXRpb25Tb3VyY2VVUkwgfTsKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGE7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVS
TCBkaWQgbm90IGNvbnRhaW4gYW4gYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1ldGVyLiJf
cyk7CisgICAgcmV0dXJuIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiB9CiAKIEV4cGVjdGVkPFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBTdHJpbmc+IFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChjb25zdCBVUkwm
IHJlZGlyZWN0VVJMKQpAQCAtMTQwLDE4ICsxOTMsMjEgQEAgRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gUHJpdmF0ZUNsaWNr
TWUKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG51bGxTdHJpbmcoKSk7CiAKICAgICBp
ZiAoIXJlZGlyZWN0VVJMLnByb3RvY29sSXMoImh0dHBzIikgfHwgcmVkaXJlY3RVUkwuaGFzQ3Jl
ZGVudGlhbHMoKSB8fCByZWRpcmVjdFVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKLSAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29u
dmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIHByb3RvY29sIGlzIG5v
dCBIVFRQUyBvciB0aGUgVVJMIGNvbnRhaW5zIG9uZSBvciBtb3JlIG9mIHVzZXJuYW1lLCBwYXNz
d29yZCwgYW5kIGZyYWdtZW50LiJfcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgi
W1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2Nl
cHRlZCBiZWNhdXNlIHRoZSBVUkwncyBwcm90b2NvbCBpcyBub3QgSFRUUFMgb3IgdGhlIFVSTCBj
b250YWlucyBvbmUgb3IgbW9yZSBvZiB1c2VybmFtZSwgcGFzc3dvcmQsIGFuZCBmcmFnbWVudC4i
X3MpOwogCiAgICAgYXV0byByZXN1bHQgPSBwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdFF1ZXJ5KHJl
ZGlyZWN0VVJMKTsKLSAgICBpZiAoIXJlc3VsdCAmJiAhcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIGlm
ICghcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVu
dF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIHF1
ZXJ5IHN0cmluZyBjb3VsZCBub3QgYmUgcGFyc2VkLiJfcyk7CisgICAgfQogICAgIGF1dG8gYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSA9IHJlc3VsdC52YWx1ZSgpOwogCiAgICAgYXV0byBwcmVmaXhM
ZW5ndGggPSBzaXplb2YocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUcmlnZ2VyQXR0cmlidXRpb25Q
YXRoKSAtIDE7CiAgICAgaWYgKHBhdGgubGVuZ3RoKCkgPT0gcHJlZml4TGVuZ3RoICsgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplKSB7
CiAgICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA9IHBhcnNlSW50ZWdl
cjx1aW50NjRfdD4ocGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoLCBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUpKTsKICAgICAgICAg
aWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0IHx8ICphdHRyaWJ1dGlvblRyaWdnZXJE
YXRhVUludDY0ID4gQXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4RW50cm9weSkKLSAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFz
dXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIGNvbnZlcnNp
b24gZGF0YSBjb3VsZCBub3QgYmUgcGFyc2VkIG9yIHdhcyBoaWdoZXIgdGhhbiB0aGUgYWxsb3dl
ZCBtYXhpbXVtIG9mICJfcywgQXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4RW50cm9weSwgIi4i
X3MpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJbUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVk
IGJlY2F1c2UgdGhlIGNvbnZlcnNpb24gZGF0YSBjb3VsZCBub3QgYmUgcGFyc2VkIG9yIHdhcyBo
aWdoZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIG9mICJfcywgQXR0cmlidXRpb25UcmlnZ2Vy
RGF0YTo6TWF4RW50cm9weSwgIi4iX3MpKTsKIAogICAgICAgICBhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhLmRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90PigqYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJ
bnQ2NCk7CiAgICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEucHJpb3JpdHkgPSAwOwpAQCAt
MTYxLDE4ICsyMTcsMTggQEAgRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gUHJpdmF0ZUNsaWNrTWUKICAgICBpZiAocGF0aC5s
ZW5ndGgoKSA9PSBwcmVmaXhMZW5ndGggKyBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0
aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUgKyAxICsgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRQcmlvcml0eVBhdGhTZWdtZW50U2l6ZSkgewogICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGFVSW50NjQgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHBhdGguc3Vic3RyaW5nKHBy
ZWZpeExlbmd0aCwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
UGF0aFNlZ21lbnRTaXplKSk7CiAgICAgICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJ
bnQ2NCB8fCAqYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA+IEF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGE6Ok1heEVudHJvcHkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobWFr
ZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBh
Y2NlcHRlZCBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90IGJlIHBhcnNlZCBv
ciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3MsIEF0dHJpYnV0aW9u
VHJpZ2dlckRhdGE6Ok1heEVudHJvcHksICIuIl9zKSk7CisgICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQobWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdn
ZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEg
Y291bGQgbm90IGJlIHBhcnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11
bSBvZiAiX3MsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVudHJvcHksICIuIl9zKSk7CiAK
ICAgICAgICAgYXV0byBhdHRyaWJ1dGlvblByaW9yaXR5VUludDY0ID0gcGFyc2VJbnRlZ2VyPHVp
bnQ2NF90PihwYXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGggKyBwcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUgKyAxLCBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplKSk7CiAgICAgICAgIGlmICghYXR0
cmlidXRpb25Qcmlvcml0eVVJbnQ2NCB8fCAqYXR0cmlidXRpb25Qcmlvcml0eVVJbnQ2NCA+IFBy
aW9yaXR5OjpNYXhFbnRyb3B5KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG1h
a2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJzaW9uIHdhcyBub3Qg
YWNjZXB0ZWQgYmVjYXVzZSB0aGUgcHJpb3JpdHkgY291bGQgbm90IGJlIHBhcnNlZCBvciB3YXMg
aGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3MsIFByaW9yaXR5OjpNYXhFbnRy
b3B5LCAiLiJfcykpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG1ha2VTdHJp
bmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3Qg
YWNjZXB0ZWQgYmVjYXVzZSB0aGUgcHJpb3JpdHkgY291bGQgbm90IGJlIHBhcnNlZCBvciB3YXMg
aGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3MsIFByaW9yaXR5OjpNYXhFbnRy
b3B5LCAiLiJfcykpOwogCiAgICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGF0YSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KCphdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0KTsKICAgICAg
ICAgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5wcmlvcml0eSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KCphdHRyaWJ1dGlvblByaW9yaXR5VUludDY0KTsKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGE7CiAgICAgfQogCi0gICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2Ug
dGhlIFVSTCBwYXRoIGNvbnRhaW5lZCB1bnJlY29nbml6ZWQgcGFydHMuIl9zKTsKKyAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5n
IGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMIHBhdGggY29udGFpbmVkIHVu
cmVjb2duaXplZCBwYXJ0cy4iX3MpOwogfQogCiBib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpoYXNQcmV2aW91c2x5QmVlblJlcG9ydGVkKCkKQEAgLTI2MiwyMSArMzE4LDM3IEBAIFJlZjxK
U09OOjpPYmplY3Q+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjphdHRyaWJ1dGlvblJlcG9ydEpT
T04oKSBjb25zdAogICAgICAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInNvdXJjZV9zZWNy
ZXRfdG9rZW5fc2lnbmF0dXJlIl9zLCBtX3NvdXJjZVNlY3JldFRva2VuLT5zaWduYXR1cmVCYXNl
NjRVUkwpOwogICAgIH0KIAorICAgIC8vIFRoaXMgdG9rZW4gaGFzIGJlZW4ga2VwdCBzZWNyZXQg
dGhpcyBmYXIgYW5kIGNhbm5vdCBiZSBsaW5rZWQgdG8gdGhlIHVubGlua2FibGUgdG9rZW4uCisg
ICAgaWYgKG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+ZGVzdGluYXRpb25TZWNyZXRUb2tlbikg
eworICAgICAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoImRlc3RpbmF0aW9uX3NlY3JldF90
b2tlbiJfcywgbV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhLT5kZXN0aW5hdGlvblNlY3JldFRva2Vu
LT50b2tlbkJhc2U2NFVSTCk7CisgICAgICAgIHJlcG9ydERldGFpbHMtPnNldFN0cmluZygiZGVz
dGluYXRpb25fc2VjcmV0X3Rva2VuX3NpZ25hdHVyZSJfcywgbV9hdHRyaWJ1dGlvblRyaWdnZXJE
YXRhLT5kZXN0aW5hdGlvblNlY3JldFRva2VuLT5zaWduYXR1cmVCYXNlNjRVUkwpOworICAgIH0K
KwogICAgIHJldHVybiByZXBvcnREZXRhaWxzOwogfQogCiAvLyBNQVJLOiAtIEZyYXVkIFByZXZl
bnRpb24KIAotc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBFcGhlbWVyYWxTb3VyY2VOb25jZVJl
cXVpcmVkTnVtYmVyT2ZCeXRlcyA9IDE2Oworc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBFcGhl
bWVyYWxOb25jZVJlcXVpcmVkTnVtYmVyT2ZCeXRlcyA9IDE2OwogCiBib29sIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNWYWxpZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc05vbmNlVmFsaWQobm9uY2UpOwor
fQorCitib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxEZXN0aW5hdGlvbk5v
bmNlOjppc1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OmlzTm9uY2VWYWxpZChub25jZSk7Cit9CisKK2Jvb2wgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OmlzTm9uY2VWYWxpZChjb25zdCBTdHJpbmcmIG5vbmNlKQogewogICAgIC8vIEZJWE1FOiBJ
bnZlc3RpZ2F0ZSBpZiB3ZSBjYW4gZG8gd2l0aCBhIHNpbXBsZSBsZW5ndGggY2hlY2sgaW5zdGVh
ZCBvZiBkZWNvZGluZy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxOTQ1CiAgICAgYXV0byBkaWdlc3QgPSBiYXNlNjRVUkxEZWNvZGUobm9uY2UpOwog
ICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGRpZ2Vz
dC0+c2l6ZSgpID09IEVwaGVtZXJhbFNvdXJjZU5vbmNlUmVxdWlyZWROdW1iZXJPZkJ5dGVzOwor
ICAgIHJldHVybiBkaWdlc3QtPnNpemUoKSA9PSBFcGhlbWVyYWxOb25jZVJlcXVpcmVkTnVtYmVy
T2ZCeXRlczsKIH0KIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6c2V0RXBoZW1lcmFs
U291cmNlTm9uY2UoRXBoZW1lcmFsU291cmNlTm9uY2UmJiBub25jZSkKQEAgLTI4NiwxNyArMzU4
LDMxIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnNldEVwaGVtZXJhbFNvdXJjZU5v
bmNlKEVwaGVtZXJhbFNvdXJjZU5vbmNlJiYgbm9uCiAgICAgbV9lcGhlbWVyYWxTb3VyY2VOb25j
ZSA9IFdURk1vdmUobm9uY2UpOwogfQogCi1VUkwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRv
a2VuU2lnbmF0dXJlVVJMKCkgY29uc3QKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgVVJMPiBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5QdWJsaWNLZXlVUkwoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIGlmICghbV9lcGhlbWVyYWxTb3Vy
Y2VOb25jZSB8fCAhbV9lcGhlbWVyYWxTb3VyY2VOb25jZS0+aXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm4gVVJMKCk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gbWFrZVZhbGlkVVJMKHJlZ2lzdHJh
YmxlRG9tYWluLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5UGF0aCk7Cit9
CisKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgVVJMPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6dG9rZW5QdWJsaWNLZXlVUkwoKSBjb25zdAoreworICAgIHJldHVybiB0b2tlblB1YmxpY0tl
eVVSTChtX3NvdXJjZVNpdGUucmVnaXN0cmFibGVEb21haW4pOworfQogCi0gICAgcmV0dXJuIG1h
a2VWYWxpZFVSTChtX3NvdXJjZVNpdGUucmVnaXN0cmFibGVEb21haW4sIHByaXZhdGVDbGlja01l
YXN1cmVtZW50VG9rZW5TaWduYXR1cmVQYXRoKTsKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3Qg
VVJMPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1cmVVUkwoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQoreworICAgIGlmIChyZWdpc3RyYWJs
ZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0
dXJuIG1ha2VWYWxpZFVSTChyZWdpc3RyYWJsZURvbWFpbiwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRUb2tlblNpZ25hdHVyZVBhdGgpOwogfQogCi1VUkwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OnRva2VuUHVibGljS2V5VVJMKCkgY29uc3QKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgVVJM
PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1cmVVUkwoKSBjb25zdAogewot
ICAgIHJldHVybiBtYWtlVmFsaWRVUkwobV9zb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluLCBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5UGF0aCk7CisgICAgaWYgKCFtX2Vw
aGVtZXJhbFNvdXJjZU5vbmNlIHx8ICFtX2VwaGVtZXJhbFNvdXJjZU5vbmNlLT5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gdG9rZW5TaWduYXR1
cmVVUkwobV9zb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAogUmVmPEpTT046Ok9i
amVjdD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2lnbmF0dXJlSlNPTigpIGNvbnN0
CkBAIC0zMTYsNiArNDAyLDI4IEBAIFJlZjxKU09OOjpPYmplY3Q+IFByaXZhdGVDbGlja01lYXN1
cmVtZW50Ojp0b2tlblNpZ25hdHVyZUpTT04oKSBjb25zdAogICAgIHJldHVybiByZXBvcnREZXRh
aWxzOwogfQogCitSZWY8SlNPTjo6T2JqZWN0PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25UcmlnZ2VyRGF0YTo6dG9rZW5TaWduYXR1cmVKU09OKCkgY29uc3QKK3sKKyAgICBh
dXRvIHJlcG9ydERldGFpbHMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgIGlmICghZXBo
ZW1lcmFsRGVzdGluYXRpb25Ob25jZSB8fCAhZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZS0+aXNW
YWxpZCgpKQorICAgICAgICByZXR1cm4gcmVwb3J0RGV0YWlsczsKKworICAgIGlmICghZGVzdGlu
YXRpb25VbmxpbmthYmxlVG9rZW4gfHwgZGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4tPnZhbHVl
QmFzZTY0VVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHJlcG9ydERldGFpbHM7CisKKyAg
ICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiX3MsICJj
bGljayJfcyk7CisgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJkZXN0aW5hdGlvbl9ub25j
ZSJfcywgZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZS0+bm9uY2UpOworICAgIC8vIFRoaXMgdG9r
ZW4gY2FuIG5vdCBiZSBsaW5rZWQgdG8gdGhlIHNlY3JldCB0b2tlbi4KKyAgICByZXBvcnREZXRh
aWxzLT5zZXRTdHJpbmcoImRlc3RpbmF0aW9uX3VubGlua2FibGVfdG9rZW4iX3MsIGRlc3RpbmF0
aW9uVW5saW5rYWJsZVRva2VuLT52YWx1ZUJhc2U2NFVSTCk7CisgICAgcmVwb3J0RGV0YWlscy0+
c2V0SW50ZWdlcigidmVyc2lvbiJfcywgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRWZXJzaW9uKTsK
KyAgICByZXR1cm4gcmVwb3J0RGV0YWlsczsKK30KKworYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6U2VjcmV0VG9rZW46OmlzVmFsaWQoKSBjb25zdAoreworICAgIHJldHVybiAhKHRva2Vu
QmFzZTY0VVJMLmlzRW1wdHkoKSB8fCBzaWduYXR1cmVCYXNlNjRVUkwuaXNFbXB0eSgpIHx8IGtl
eUlEQmFzZTY0VVJMLmlzRW1wdHkoKSk7Cit9CisKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OnNldFNvdXJjZVNlY3JldFRva2VuKFNvdXJjZVNlY3JldFRva2VuJiYgdG9rZW4pCiB7CiAg
ICAgaWYgKCF0b2tlbi5pc1ZhbGlkKCkpCkBAIC0zMjMsOSArNDMxLDExIEBAIHZvaWQgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OnNldFNvdXJjZVNlY3JldFRva2VuKFNvdXJjZVNlY3JldFRva2Vu
JiYgdG9rZW4pCiAgICAgbV9zb3VyY2VTZWNyZXRUb2tlbiA9IFdURk1vdmUodG9rZW4pOwogfQog
Ci1ib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbjo6aXNWYWxp
ZCgpIGNvbnN0Cit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpzZXREZXN0aW5hdGlvblNl
Y3JldFRva2VuKERlc3RpbmF0aW9uU2VjcmV0VG9rZW4mJiB0b2tlbikKIHsKLSAgICByZXR1cm4g
ISh0b2tlbkJhc2U2NFVSTC5pc0VtcHR5KCkgfHwgc2lnbmF0dXJlQmFzZTY0VVJMLmlzRW1wdHko
KSB8fCBrZXlJREJhc2U2NFVSTC5pc0VtcHR5KCkpOworICAgIGlmICghdG9rZW4uaXNWYWxpZCgp
IHx8ICFtX2F0dHJpYnV0aW9uVHJpZ2dlckRhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBtX2F0
dHJpYnV0aW9uVHJpZ2dlckRhdGEtPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gPSBXVEZNb3ZlKHRv
a2VuKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAppbmRleCBmY2MzZTliZTYxNzAwNjg0ZjFj
NGNkOWU1MzQ3MGUwMTBiNzliYzEzLi5hODQ2N2E1ZGMzYWVhNjcyODRmYzk3M2NlZDNmMWFjMTE0
NzU2M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQuaApAQCAtMTY4LDE2ICsxNjgsNjMgQEAgcHVibGljOgogICAgICAgICBQcmlvcml0eVZh
bHVlIHZhbHVlOwogICAgIH07CiAgICAgCisgICAgc3RydWN0IEVwaGVtZXJhbERlc3RpbmF0aW9u
Tm9uY2UgeworICAgICAgICBTdHJpbmcgbm9uY2U7CisKKyAgICAgICAgRXBoZW1lcmFsRGVzdGlu
YXRpb25Ob25jZSBpc29sYXRlZENvcHkoKSBjb25zdDsKKworICAgICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGlzVmFsaWQoKSBjb25zdDsKKworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2U+IGRl
Y29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHN0cnVjdCBVbmxpbmthYmxlVG9rZW4gewor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBSZXRhaW5QdHI8UlNBQlNTQVRva2VuQmxpbmRl
cj4gYmxpbmRlcjsKKyAgICAgICAgUmV0YWluUHRyPFJTQUJTU0FUb2tlbldhaXRpbmdBY3RpdmF0
aW9uPiB3YWl0aW5nVG9rZW47CisgICAgICAgIFJldGFpblB0cjxSU0FCU1NBVG9rZW5SZWFkeT4g
cmVhZHlUb2tlbjsKKyNlbmRpZgorICAgICAgICBTdHJpbmcgdmFsdWVCYXNlNjRVUkw7CisgICAg
ICAgIAorICAgICAgICBVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAg
fTsKKworICAgIHN0cnVjdCBTb3VyY2VVbmxpbmthYmxlVG9rZW4gOiBVbmxpbmthYmxlVG9rZW4g
eworICAgICAgICBTb3VyY2VVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Cisg
ICAgfTsKKworICAgIHN0cnVjdCBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiA6IFVubGlua2Fi
bGVUb2tlbiB7CisgICAgICAgIERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29w
eSgpIGNvbnN0OworICAgIH07CisKKyAgICBzdHJ1Y3QgU2VjcmV0VG9rZW4geworICAgICAgICBT
dHJpbmcgdG9rZW5CYXNlNjRVUkw7CisgICAgICAgIFN0cmluZyBzaWduYXR1cmVCYXNlNjRVUkw7
CisgICAgICAgIFN0cmluZyBrZXlJREJhc2U2NFVSTDsKKyAgICAgICAgU2VjcmV0VG9rZW4gaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OworICAgIH07
CisKKyAgICBzdHJ1Y3QgU291cmNlU2VjcmV0VG9rZW4gOiBTZWNyZXRUb2tlbiB7CisgICAgICAg
IFNvdXJjZVNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIH07CisKKyAgICBz
dHJ1Y3QgRGVzdGluYXRpb25TZWNyZXRUb2tlbiA6IFNlY3JldFRva2VuIHsKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgRGVzdGluYXRpb25TZWNyZXRUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsK
KyAgICB9OworCiAgICAgc3RydWN0IEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgewogICAgICAgICBz
dGF0aWMgY29uc3RleHByIHVpbnQ4X3QgTWF4RW50cm9weSA9IDE1OwogCiAgICAgICAgIGVudW0g
Y2xhc3MgV2FzU2VudCA6IGJvb2wgeyBObywgWWVzIH07CiAKICAgICAgICAgQXR0cmlidXRpb25U
cmlnZ2VyRGF0YSgpID0gZGVmYXVsdDsKLSAgICAgICAgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSh1
aW50OF90IGRhdGEsIFByaW9yaXR5IHByaW9yaXR5LCBXYXNTZW50IHdhc1NlbnQgPSBXYXNTZW50
OjpObykKKyAgICAgICAgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSh1aW50OF90IGRhdGEsIFByaW9y
aXR5IHByaW9yaXR5LCBXYXNTZW50IHdhc1NlbnQgPSBXYXNTZW50OjpObywgc3RkOjpvcHRpb25h
bDxFcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlPiBub25jZSA9IHN0ZDo6bnVsbG9wdCkKICAgICAg
ICAgICAgIDogZGF0YSB7IGRhdGEgfQogICAgICAgICAgICAgLCBwcmlvcml0eSB7IHByaW9yaXR5
LnZhbHVlIH0KICAgICAgICAgICAgICwgd2FzU2VudCB7IHdhc1NlbnQgfQorICAgICAgICAgICAg
LCBlcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlIHsgbm9uY2UgfQogICAgICAgICB7CiAgICAgICAg
IH0KIApAQCAtMTg1LDExICsyMzIsMjYgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gZGF0YSA8PSBNYXhFbnRyb3B5ICYmIHByaW9yaXR5IDw9IFByaW9yaXR5OjpNYXhF
bnRyb3B5OwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIHZvaWQgc2V0RGVzdGluYXRp
b25VbmxpbmthYmxlVG9rZW5WYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKQorICAgICAgICAgICAg
ICAgIGRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuID0gRGVzdGluYXRpb25VbmxpbmthYmxlVG9r
ZW4geyB9OworICAgICAgICAgICAgZGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4tPnZhbHVlQmFz
ZTY0VVJMID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBzZXREZXN0aW5hdGlvblNl
Y3JldFRva2VuKGNvbnN0IERlc3RpbmF0aW9uU2VjcmV0VG9rZW4mIHRva2VuKSB7IGRlc3RpbmF0
aW9uU2VjcmV0VG9rZW4gPSB0b2tlbjsgfQorICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPGNv
bnN0IFVSTD4gdG9rZW5QdWJsaWNLZXlVUkwoKSBjb25zdCB7IHJldHVybiBkZXN0aW5hdGlvblNp
dGUgPyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5QdWJsaWNLZXlVUkwoKmRlc3RpbmF0
aW9uU2l0ZSkgOiBVUkwoKTsgfQorICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVS
TD4gdG9rZW5TaWduYXR1cmVVUkwoKSBjb25zdCB7IHJldHVybiBkZXN0aW5hdGlvblNpdGUgPyBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1cmVVUkwoKmRlc3RpbmF0aW9uU2l0
ZSkgOiBVUkwoKTsgfQorICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SlNPTjo6T2JqZWN0PiB0
b2tlblNpZ25hdHVyZUpTT04oKSBjb25zdDsKKwogICAgICAgICB1aW50OF90IGRhdGEgeyAwIH07
CiAgICAgICAgIFByaW9yaXR5VmFsdWUgcHJpb3JpdHk7CiAgICAgICAgIFdhc1NlbnQgd2FzU2Vu
dCA9IFdhc1NlbnQ6Ok5vOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWlu
PiBzb3VyY2VSZWdpc3RyYWJsZURvbWFpbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxFcGhlbWVy
YWxEZXN0aW5hdGlvbk5vbmNlPiBlcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlOworICAgICAgICBz
dGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuPiBkZXN0aW5hdGlvblVubGlu
a2FibGVUb2tlbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvblNlY3JldFRva2Vu
PiBkZXN0aW5hdGlvblNlY3JldFRva2VuOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJh
YmxlRG9tYWluPiBkZXN0aW5hdGlvblNpdGU7CiAKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgICAgICB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBk
ZWNvZGUoRGVjb2RlciYpOwpAQCAtMzM4LDggKzQwMCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRFcGhlbWVyYWwoQXR0cmlidXRpb25FcGhlbWVyYWwgaXNFcGhlbWVyYWwpIHsgbV9pc0VwaGVt
ZXJhbCA9IGlzRXBoZW1lcmFsOyB9CiAKICAgICAvLyBNQVJLOiAtIEZyYXVkIFByZXZlbnRpb24K
LSAgICBXRUJDT1JFX0VYUE9SVCBVUkwgdG9rZW5QdWJsaWNLZXlVUkwoKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCBVUkwgdG9rZW5TaWduYXR1cmVVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4gdG9rZW5QdWJsaWNLZXlVUkwo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3Qgc3RkOjpvcHRpb25hbDxj
b25zdCBVUkw+IHRva2VuUHVibGljS2V5VVJMKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBVUkw+IHRva2VuU2ln
bmF0dXJlVVJMKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8Y29uc3QgVVJMPiB0b2tlblNpZ25hdHVyZVVSTChjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEpTT046Ok9iamVjdD4gdG9rZW5TaWdu
YXR1cmVKU09OKCkgY29uc3Q7CiAKQEAgLTM1NywyNCArNDIxLDIyIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEVwaGVtZXJhbFNvdXJjZU5vbmNlKEVwaGVtZXJhbFNvdXJj
ZU5vbmNlJiYpOwogICAgIHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+IGVwaGVt
ZXJhbFNvdXJjZU5vbmNlKCkgY29uc3QgeyByZXR1cm4gbV9lcGhlbWVyYWxTb3VyY2VOb25jZTsg
fTsKICAgICB2b2lkIGNsZWFyRXBoZW1lcmFsU291cmNlTm9uY2UoKSB7IG1fZXBoZW1lcmFsU291
cmNlTm9uY2UucmVzZXQoKTsgfTsKLQotICAgIHN0cnVjdCBTb3VyY2VTZWNyZXRUb2tlbiB7Ci0g
ICAgICAgIFN0cmluZyB0b2tlbkJhc2U2NFVSTDsKLSAgICAgICAgU3RyaW5nIHNpZ25hdHVyZUJh
c2U2NFVSTDsKLSAgICAgICAgU3RyaW5nIGtleUlEQmFzZTY0VVJMOwotCi0gICAgICAgIFNvdXJj
ZVNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgICAgICBib29sIGlzVmFsaWQo
KSBjb25zdDsKLSAgICB9OworICAgIAorICAgIHN0YXRpYyBib29sIGlzTm9uY2VWYWxpZChjb25z
dCBTdHJpbmcmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBjYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VVbmxpbmthYmxlVG9r
ZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwpOworICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBFeHBlY3RlZDxEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiwgU3RyaW5n
PiBjYWxjdWxhdGVBbmRVcGRhdGVEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbihjb25zdCBTdHJp
bmcmIHNlcnZlclB1YmxpY0tleUJhc2U2NFVSTCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNlY3JldFRva2VuKGNvbnN0
IFN0cmluZyYgc2VydmVyUmVzcG9uc2VCYXNlNjRVUkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBFeHBlY3RlZDxEZXN0aW5hdGlvblNlY3JldFRva2VuLCBTdHJpbmc+IGNhbGN1bGF0ZUFu
ZFVwZGF0ZURlc3RpbmF0aW9uU2VjcmV0VG9rZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJSZXNwb25z
ZUJhc2U2NFVSTCwgRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4mKTsKICNlbmRpZgogCisgICAg
U291cmNlVW5saW5rYWJsZVRva2VuJiBzb3VyY2VVbmxpbmthYmxlVG9rZW4oKSB7IHJldHVybiBt
X3NvdXJjZVVubGlua2FibGVUb2tlbjsgfQogICAgIHZvaWQgc2V0U291cmNlVW5saW5rYWJsZVRv
a2VuVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBtX3NvdXJjZVVubGlua2FibGVUb2tlbi52
YWx1ZUJhc2U2NFVSTCA9IHZhbHVlOyB9CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxTb3VyY2VT
ZWNyZXRUb2tlbj4mIHNvdXJjZVNlY3JldFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VT
ZWNyZXRUb2tlbjsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U291cmNlU2VjcmV0VG9r
ZW4oU291cmNlU2VjcmV0VG9rZW4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXREZXN0
aW5hdGlvblNlY3JldFRva2VuKERlc3RpbmF0aW9uU2VjcmV0VG9rZW4mJik7CisKIAogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudD4gZGVjb2RlKERlY29kZXImKTsKQEAgLTM4NSw2ICs0NDcsMTEgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgRXhwZWN0ZWQ8QXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgU3RyaW5nPiBw
YXJzZUF0dHJpYnV0aW9uUmVxdWVzdFF1ZXJ5KGNvbnN0IFVSTCYpOwogICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBjYWxjdWxhdGVBbmRVcGRhdGVVbmxpbmthYmxlVG9rZW4oY29uc3QgU3RyaW5n
JiBzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwsIFVubGlua2FibGVUb2tlbiYsIGNvbnN0IFN0cmlu
ZyYgY29udGV4dEZvckxvZ01lc3NhZ2UpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gY2FsY3VsYXRlQW5kVXBkYXRlU2VjcmV0VG9rZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJSZXNw
b25zZUJhc2U2NFVSTCwgVW5saW5rYWJsZVRva2VuJiwgU2VjcmV0VG9rZW4mLCBjb25zdCBTdHJp
bmcmIGNvbnRleHRGb3JMb2dNZXNzYWdlKTsKKyNlbmRpZgorCiAgICAgU291cmNlSUQgbV9zb3Vy
Y2VJRDsKICAgICBTb3VyY2VTaXRlIG1fc291cmNlU2l0ZTsKICAgICBBdHRyaWJ1dGlvbkRlc3Rp
bmF0aW9uU2l0ZSBtX2Rlc3RpbmF0aW9uU2l0ZTsKQEAgLTM5NCwxNyArNDYxLDYgQEAgcHJpdmF0
ZToKICAgICBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE+IG1fYXR0cmlidXRp
b25UcmlnZ2VyRGF0YTsKICAgICBBdHRyaWJ1dGlvblRpbWVUb1NlbmREYXRhIG1fdGltZXNUb1Nl
bmQ7CiAKLSAgICBzdHJ1Y3QgU291cmNlVW5saW5rYWJsZVRva2VuIHsKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICAgICAgUmV0YWluUHRyPFJTQUJTU0FUb2tlbkJsaW5kZXI+IGJsaW5kZXI7Ci0g
ICAgICAgIFJldGFpblB0cjxSU0FCU1NBVG9rZW5XYWl0aW5nQWN0aXZhdGlvbj4gd2FpdGluZ1Rv
a2VuOwotICAgICAgICBSZXRhaW5QdHI8UlNBQlNTQVRva2VuUmVhZHk+IHJlYWR5VG9rZW47Ci0j
ZW5kaWYKLSAgICAgICAgU3RyaW5nIHZhbHVlQmFzZTY0VVJMOwotCi0gICAgICAgIFNvdXJjZVVu
bGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKLSAgICB9OwotCiAgICAgc3RkOjpv
cHRpb25hbDxFcGhlbWVyYWxTb3VyY2VOb25jZT4gbV9lcGhlbWVyYWxTb3VyY2VOb25jZTsKICAg
ICBTb3VyY2VVbmxpbmthYmxlVG9rZW4gbV9zb3VyY2VVbmxpbmthYmxlVG9rZW47CiAgICAgc3Rk
OjpvcHRpb25hbDxTb3VyY2VTZWNyZXRUb2tlbj4gbV9zb3VyY2VTZWNyZXRUb2tlbjsKQEAgLTUw
NSwxMCArNTYxLDI3IEBAIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVw
aGVtZXJhbFNvdXJjZU5vbmNlPiBQcml2YXRlQ2xpY2tNZWFzdXJlCiAgICAgcmV0dXJuIEVwaGVt
ZXJhbFNvdXJjZU5vbmNlIHsgV1RGTW92ZSgqbm9uY2UpIH07CiB9CiAKK3RlbXBsYXRlPGNsYXNz
IEVuY29kZXI+Cit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxEZXN0aW5h
dGlvbk5vbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IG5vbmNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZT4gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2U6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBub25jZTsKKyAgICBk
ZWNvZGVyID4+IG5vbmNlOworICAgIGlmICghbm9uY2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIEVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2UgeyBXVEZN
b3ZlKCpub25jZSkgfTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgZGF0YSA8PCBwcmlvcml0eSA8PCB3
YXNTZW50IDw8IHNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluOworICAgIGVuY29kZXIgPDwgZGF0YSA8
PCBwcmlvcml0eSA8PCB3YXNTZW50IDw8IHNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluIDw8IGVwaGVt
ZXJhbERlc3RpbmF0aW9uTm9uY2UgPDwgZGVzdGluYXRpb25TaXRlOwogfQogCiB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPgpAQCAtNTMzLDkgKzYwNiwyMSBAQCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBQcml2YXRlQ2xpY2tNZWFz
dQogICAgIGRlY29kZXIgPj4gc291cmNlUmVnaXN0cmFibGVEb21haW47CiAgICAgaWYgKCFzb3Vy
Y2VSZWdpc3RyYWJsZURvbWFpbikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICAK
KworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxFcGhlbWVyYWxEZXN0aW5hdGlvbk5v
bmNlPj4gZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZTsKKyAgICBkZWNvZGVyID4+IGVwaGVtZXJh
bERlc3RpbmF0aW9uTm9uY2U7CisgICAgaWYgKCFlcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9w
dGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPj4gZGVzdGluYXRpb25TaXRlOworICAgIGRlY29kZXIg
Pj4gZGVzdGluYXRpb25TaXRlOworICAgIGlmICghZGVzdGluYXRpb25TaXRlKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSBhdHRyaWJ1
dGlvblRyaWdnZXJEYXRhIHsgV1RGTW92ZSgqZGF0YSksIFByaW9yaXR5IHsgKnByaW9yaXR5IH0s
ICp3YXNTZW50IH07CiAgICAgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5zb3VyY2VSZWdpc3RyYWJs
ZURvbWFpbiA9IFdURk1vdmUoKnNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluKTsKKyAgICBhdHRyaWJ1
dGlvblRyaWdnZXJEYXRhLmVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2UgPSBXVEZNb3ZlKCplcGhl
bWVyYWxEZXN0aW5hdGlvbk5vbmNlKTsKKyAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmRlc3Rp
bmF0aW9uU2l0ZSA9IFdURk1vdmUoKmRlc3RpbmF0aW9uU2l0ZSk7CiAgICAgcmV0dXJuIGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0KaW5kZXggMjNkODdj
MjdhYTFiNWExZDNiMDYwZDk4NjE4YmU4NzY1MWZhNzg5My4uYmY3ZWQ4YTJhNGMzZjM3OTUxZmMx
ZGZlMzA3ZWY3MDNjOTVkNzJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nv
Y29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0KQEAgLTMxLDY2ICsz
MSwxMDIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjpvcHRpb25hbDxTdHJpbmc+IFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VVbmxpbmthYmxl
VG9rZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwpCit7CisgICAgcmV0
dXJuIGNhbGN1bGF0ZUFuZFVwZGF0ZVVubGlua2FibGVUb2tlbihzZXJ2ZXJQdWJsaWNLZXlCYXNl
NjRVUkwsIG1fc291cmNlVW5saW5rYWJsZVRva2VuLCAic291cmNlIl9zKTsKK30KKworRXhwZWN0
ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuLCBT
dHJpbmc+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRhdGVEZXN0aW5h
dGlvblVubGlua2FibGVUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclB1YmxpY0tleUJhc2U2NFVS
TCkKK3sKKyAgICBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBkZXN0aW5hdGlvblRva2VuOwor
ICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gY2FsY3VsYXRlQW5kVXBkYXRlVW5saW5rYWJsZVRva2Vu
KHNlcnZlclB1YmxpY0tleUJhc2U2NFVSTCwgZGVzdGluYXRpb25Ub2tlbiwgImRlc3RpbmF0aW9u
Il9zKTsKKyAgICBpZiAoZXJyb3JNZXNzYWdlKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoKmVycm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIGRlc3RpbmF0aW9uVG9rZW47Cit9CisKK3N0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5k
VXBkYXRlVW5saW5rYWJsZVRva2VuKGNvbnN0IFN0cmluZyYgc2VydmVyUHVibGljS2V5QmFzZTY0
VVJMLCBVbmxpbmthYmxlVG9rZW4mIHVubGlua2FibGVUb2tlbiwgY29uc3QgU3RyaW5nJiBjb250
ZXh0Rm9yTG9nTWVzc2FnZSkKIHsKICNpZiBIQVZFKFJTQV9CU1NBKQogICAgIHsKICAgICAgICAg
YXV0byBzZXJ2ZXJQdWJsaWNLZXlEYXRhID0gYmFzZTY0VVJMRGVjb2RlKHNlcnZlclB1YmxpY0tl
eUJhc2U2NFVSTCk7CiAgICAgICAgIGlmICghc2VydmVyUHVibGljS2V5RGF0YSkKLSAgICAgICAg
ICAgIHJldHVybiAiQ291bGQgbm90IGRlY29kZSB0aGUgc291cmNlJ3MgcHVibGljIGtleSBkYXRh
LiJfczsKKyAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJDb3VsZCBub3QgZGVjb2RlIHRo
ZSAiLCBjb250ZXh0Rm9yTG9nTWVzc2FnZSwgIidzIHB1YmxpYyBrZXkgZGF0YS4iKTsKICAgICAg
ICAgYXV0byBzZXJ2ZXJQdWJsaWNLZXkgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJ5dGVzOnNlcnZlclB1YmxpY0tleURhdGEtPmRhdGEoKSBsZW5ndGg6c2VydmVyUHVibGljS2V5
RGF0YS0+c2l6ZSgpXSk7CiAKICAgICAgICAgTlNFcnJvciogbnNFcnJvciA9IDA7Ci0gICAgICAg
IG1fc291cmNlVW5saW5rYWJsZVRva2VuLmJsaW5kZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUlNB
QlNTQVRva2VuQmxpbmRlckluc3RhbmNlKCkgaW5pdFdpdGhQdWJsaWNLZXk6c2VydmVyUHVibGlj
S2V5LmdldCgpIGVycm9yOiZuc0Vycm9yXSk7CisgICAgICAgIHVubGlua2FibGVUb2tlbi5ibGlu
ZGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1JTQUJTU0FUb2tlbkJsaW5kZXJJbnN0YW5jZSgpIGlu
aXRXaXRoUHVibGljS2V5OnNlcnZlclB1YmxpY0tleS5nZXQoKSBlcnJvcjombnNFcnJvcl0pOwog
ICAgICAgICBpZiAobnNFcnJvcikKICAgICAgICAgICAgIHJldHVybiBuc0Vycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uOwotICAgICAgICBpZiAoIW1fc291cmNlVW5saW5rYWJsZVRva2VuLmJsaW5k
ZXIpCi0gICAgICAgICAgICByZXR1cm4gIkRpZCBub3QgZ2V0IGEgc291cmNlIHVubGlua2FibGUg
dG9rZW4gYmxpbmRlci4iX3M7CisgICAgICAgIGlmICghdW5saW5rYWJsZVRva2VuLmJsaW5kZXIp
CisgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiRGlkIG5vdCBnZXQgYSAiLCBjb250ZXh0
Rm9yTG9nTWVzc2FnZSwgIiB1bmxpbmthYmxlIHRva2VuIGJsaW5kZXIuIik7CiAgICAgfQogCiAg
ICAgTlNFcnJvciogbnNFcnJvciA9IDA7Ci0gICAgbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ud2Fp
dGluZ1Rva2VuID0gW21fc291cmNlVW5saW5rYWJsZVRva2VuLmJsaW5kZXIgdG9rZW5XYWl0aW5n
QWN0aXZhdGlvbldpdGhDb250ZW50Om51bGxwdHIgZXJyb3I6Jm5zRXJyb3JdOworICAgIHVubGlu
a2FibGVUb2tlbi53YWl0aW5nVG9rZW4gPSBbdW5saW5rYWJsZVRva2VuLmJsaW5kZXIgdG9rZW5X
YWl0aW5nQWN0aXZhdGlvbldpdGhDb250ZW50Om51bGxwdHIgZXJyb3I6Jm5zRXJyb3JdOwogICAg
IGlmIChuc0Vycm9yKQogICAgICAgICByZXR1cm4gbnNFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlv
bjsKLSAgICBpZiAoIW1fc291cmNlVW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tlbikKLSAgICAg
ICAgcmV0dXJuICJEaWQgbm90IGdldCBhIHNvdXJjZSB1bmxpbmthYmxlIHRva2VuIHdhaXRpbmcg
dG9rZW4uIl9zOworICAgIGlmICghdW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tlbikKKyAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoIkRpZCBub3QgZ2V0IGEgIiwgY29udGV4dEZvckxvZ01lc3Nh
Z2UsICIgdW5saW5rYWJsZSB0b2tlbiB3YWl0aW5nIHRva2VuLiIpOwogCi0gICAgbV9zb3VyY2VV
bmxpbmthYmxlVG9rZW4udmFsdWVCYXNlNjRVUkwgPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhb
bV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuIGJsaW5kZWRNZXNzYWdlXS5ieXRl
cywgW21fc291cmNlVW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tlbiBibGluZGVkTWVzc2FnZV0u
bGVuZ3RoKTsKKyAgICB1bmxpbmthYmxlVG9rZW4udmFsdWVCYXNlNjRVUkwgPSBiYXNlNjRVUkxF
bmNvZGVUb1N0cmluZyhbdW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tlbiBibGluZGVkTWVzc2Fn
ZV0uYnl0ZXMsIFt1bmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuIGJsaW5kZWRNZXNzYWdlXS5s
ZW5ndGgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwpOworICAgIFVOVVNFRF9QQVJBTSh1bmxpbmthYmxl
VG9rZW4pOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0Rm9yTG9nTWVzc2FnZSk7CiAgICAgcmV0
dXJuICJVbmxpbmthYmxlIHRva2VucyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIHBsYXRmb3Jt
LiJfczsKICNlbmRpZiAvLyBIQVZFKFJTQV9CU1NBKQogfQogCiBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNlY3Jl
dFRva2VuKGNvbnN0IFN0cmluZyYgc2VydmVyUmVzcG9uc2VCYXNlNjRVUkwpCit7CisgICAgU291
cmNlU2VjcmV0VG9rZW4gc2VjcmV0VG9rZW47CisgICAgaWYgKGF1dG8gZXJyb3JNZXNzYWdlID0g
Y2FsY3VsYXRlQW5kVXBkYXRlU2VjcmV0VG9rZW4oc2VydmVyUmVzcG9uc2VCYXNlNjRVUkwsIG1f
c291cmNlVW5saW5rYWJsZVRva2VuLCBzZWNyZXRUb2tlbiwgInNvdXJjZSJfcykpCisgICAgICAg
IHJldHVybiBlcnJvck1lc3NhZ2U7CisgICAgCisgICAgbV9zb3VyY2VTZWNyZXRUb2tlbiA9IFdU
Rk1vdmUoc2VjcmV0VG9rZW4pOworICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKK0V4cGVj
dGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuLCBTdHJp
bmc+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRhdGVEZXN0aW5hdGlv
blNlY3JldFRva2VuKGNvbnN0IFN0cmluZyYgc2VydmVyUmVzcG9uc2VCYXNlNjRVUkwsIERlc3Rp
bmF0aW9uVW5saW5rYWJsZVRva2VuJiB1bmxpbmthYmxlVG9rZW4pCit7CisgICAgRGVzdGluYXRp
b25TZWNyZXRUb2tlbiBzZWNyZXRUb2tlbjsKKyAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGNhbGN1
bGF0ZUFuZFVwZGF0ZVNlY3JldFRva2VuKHNlcnZlclJlc3BvbnNlQmFzZTY0VVJMLCB1bmxpbmth
YmxlVG9rZW4sIHNlY3JldFRva2VuLCAic291cmNlIl9zKTsKKyAgICBpZiAoZXJyb3JNZXNzYWdl
KQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoKmVycm9yTWVzc2FnZSk7CisgICAgcmV0
dXJuIHNlY3JldFRva2VuOworfQorCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNlY3JldFRva2VuKGNvbnN0IFN0cmluZyYg
c2VydmVyUmVzcG9uc2VCYXNlNjRVUkwsIFVubGlua2FibGVUb2tlbiYgdW5saW5rYWJsZVRva2Vu
LCBTZWNyZXRUb2tlbiYgc2VjcmV0VG9rZW4sIGNvbnN0IFN0cmluZyYgY29udGV4dEZvckxvZ01l
c3NhZ2UpCiB7CiAjaWYgSEFWRShSU0FfQlNTQSkKLSAgICBpZiAoIW1fc291cmNlVW5saW5rYWJs
ZVRva2VuLndhaXRpbmdUb2tlbikKLSAgICAgICAgcmV0dXJuICJEaWQgbm90IGZpbmQgYSBzb3Vy
Y2UgdW5saW5rYWJsZSB0b2tlbiB3YWl0aW5nIHRva2VuLiJfczsKKyAgICBpZiAoIXVubGlua2Fi
bGVUb2tlbi53YWl0aW5nVG9rZW4pCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJEaWQgbm90
IGZpbmQgYSAiLCBjb250ZXh0Rm9yTG9nTWVzc2FnZSwgIiB1bmxpbmthYmxlIHRva2VuIHdhaXRp
bmcgdG9rZW4uIik7CiAKICAgICB7CiAgICAgICAgIGF1dG8gc2VydmVyUmVzcG9uc2VEYXRhID0g
YmFzZTY0VVJMRGVjb2RlKHNlcnZlclJlc3BvbnNlQmFzZTY0VVJMKTsKICAgICAgICAgaWYgKCFz
ZXJ2ZXJSZXNwb25zZURhdGEpCi0gICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBkZWNvZGUg
c291cmNlIHJlc3BvbnNlIGRhdGEuIl9zOworICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
IkNvdWxkIG5vdCBkZWNvZGUgIiwgY29udGV4dEZvckxvZ01lc3NhZ2UsICIgcmVzcG9uc2UgZGF0
YS4iKTsKICAgICAgICAgYXV0byBzZXJ2ZXJSZXNwb25zZSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxs
b2NdIGluaXRXaXRoQnl0ZXM6c2VydmVyUmVzcG9uc2VEYXRhLT5kYXRhKCkgbGVuZ3RoOnNlcnZl
clJlc3BvbnNlRGF0YS0+c2l6ZSgpXSk7CiAKICAgICAgICAgTlNFcnJvciogbnNFcnJvciA9IDA7
Ci0gICAgICAgIG1fc291cmNlVW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4gPSBbbV9zb3VyY2VV
bmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuIGFjdGl2YXRlVG9rZW5XaXRoU2VydmVyUmVzcG9u
c2U6c2VydmVyUmVzcG9uc2UuZ2V0KCkgZXJyb3I6Jm5zRXJyb3JdOworICAgICAgICB1bmxpbmth
YmxlVG9rZW4ucmVhZHlUb2tlbiA9IFt1bmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuIGFjdGl2
YXRlVG9rZW5XaXRoU2VydmVyUmVzcG9uc2U6c2VydmVyUmVzcG9uc2UuZ2V0KCkgZXJyb3I6Jm5z
RXJyb3JdOwogICAgICAgICBpZiAobnNFcnJvcikKICAgICAgICAgICAgIHJldHVybiBuc0Vycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uOwotICAgICAgICBpZiAoIW1fc291cmNlVW5saW5rYWJsZVRv
a2VuLnJlYWR5VG9rZW4pCi0gICAgICAgICAgICByZXR1cm4gIkRpZCBub3QgZ2V0IGEgc291cmNl
IHVubGlua2FibGUgdG9rZW4gcmVhZHkgdG9rZW4uIl9zOworICAgICAgICBpZiAoIXVubGlua2Fi
bGVUb2tlbi5yZWFkeVRva2VuKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkRpZCBu
b3QgZ2V0IGEgIiwgY29udGV4dEZvckxvZ01lc3NhZ2UsICIgdW5saW5rYWJsZSB0b2tlbiByZWFk
eSB0b2tlbi4iKTsKICAgICB9CiAKLSAgICBTb3VyY2VTZWNyZXRUb2tlbiB0b2tlbjsKLSAgICB0
b2tlbi50b2tlbkJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFttX3NvdXJjZVVu
bGlua2FibGVUb2tlbi5yZWFkeVRva2VuIHRva2VuQ29udGVudF0uYnl0ZXMsIFttX3NvdXJjZVVu
bGlua2FibGVUb2tlbi5yZWFkeVRva2VuIHRva2VuQ29udGVudF0ubGVuZ3RoKTsKLSAgICB0b2tl
bi5rZXlJREJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFttX3NvdXJjZVVubGlu
a2FibGVUb2tlbi5yZWFkeVRva2VuIGtleUlkXS5ieXRlcywgW21fc291cmNlVW5saW5rYWJsZVRv
a2VuLnJlYWR5VG9rZW4ga2V5SWRdLmxlbmd0aCk7Ci0gICAgdG9rZW4uc2lnbmF0dXJlQmFzZTY0
VVJMID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoW21fc291cmNlVW5saW5rYWJsZVRva2VuLnJl
YWR5VG9rZW4gc2lnbmF0dXJlXS5ieXRlcywgW21fc291cmNlVW5saW5rYWJsZVRva2VuLnJlYWR5
VG9rZW4gc2lnbmF0dXJlXS5sZW5ndGgpOworICAgIHNlY3JldFRva2VuLnRva2VuQmFzZTY0VVJM
ID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoW3VubGlua2FibGVUb2tlbi5yZWFkeVRva2VuIHRv
a2VuQ29udGVudF0uYnl0ZXMsIFt1bmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiB0b2tlbkNvbnRl
bnRdLmxlbmd0aCk7CisgICAgc2VjcmV0VG9rZW4ua2V5SURCYXNlNjRVUkwgPSBiYXNlNjRVUkxF
bmNvZGVUb1N0cmluZyhbdW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4ga2V5SWRdLmJ5dGVzLCBb
dW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4ga2V5SWRdLmxlbmd0aCk7CisgICAgc2VjcmV0VG9r
ZW4uc2lnbmF0dXJlQmFzZTY0VVJMID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoW3VubGlua2Fi
bGVUb2tlbi5yZWFkeVRva2VuIHNpZ25hdHVyZV0uYnl0ZXMsIFt1bmxpbmthYmxlVG9rZW4ucmVh
ZHlUb2tlbiBzaWduYXR1cmVdLmxlbmd0aCk7CiAKLSAgICBtX3NvdXJjZVNlY3JldFRva2VuID0g
V1RGTW92ZSh0b2tlbik7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKHNlcnZlclJlc3BvbnNlQmFzZTY0VVJMKTsKKyAgICBVTlVTRURfUEFSQU0odW5s
aW5rYWJsZVRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0oc2VjcmV0VG9rZW4pOworICAgIFVOVVNF
RF9QQVJBTShjb250ZXh0Rm9yTG9nTWVzc2FnZSk7CiAgICAgcmV0dXJuICJVbmxpbmthYmxlIHRv
a2VucyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIHBsYXRmb3JtLiJfczsKICNlbmRpZiAvLyBI
QVZFKFJTQV9CU1NBKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9EYXRhYmFzZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rh
dGFiYXNlVXRpbGl0aWVzLmNwcAppbmRleCAxNDg2ZDUyMjk2ZjY3NTFmMzEwYzc5ODE2NmJmN2Vk
YmVkMmFiNDMyLi5hOTA0NTRlZTM3NjVhOGQ4NDhlYmE2MzEyYTI2ZmE0OGNkZjBjYjBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNw
cApAQCAtMTYwLDE1ICsxNjAsMjYgQEAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
RGF0YWJhc2VVdGlsaXRpZXM6OmJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQKIAogICAgIFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50IGF0dHJpYnV0aW9uKFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VJRChzb3VyY2VJRCksIFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoc291cmNlU2l0ZURvbWFp
bikpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5h
dGlvblNpdGUoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21S
ZWdpc3RyYWJsZURvbWFpblN0cmluZyhkZXN0aW5hdGlvblNpdGVEb21haW4pKSwgYnVuZGxlSUQs
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lT2ZBZENsaWNrKSwgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRXBoZW1lcmFsOjpObyk7CiAKKyAgICAvLyBU
aGVzZSBpbmRpY2VzIGFyZSB6ZXJvLWJhc2VkIGZvciBzb21lIHJlYXNvbi4gVGhlcmUgc2hvdWxk
IGJlIGEgY29tbWVudCBoZXJlIGV4cGxhaW5pbmcgd2h5LgogICAgIGlmIChhdHRyaWJ1dGlvblR5
cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQp
IHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gc3RhdGVtZW50LmNvbHVt
bkludCgzKTsKICAgICAgICAgYXV0byBwcmlvcml0eSA9IHN0YXRlbWVudC5jb2x1bW5JbnQoNCk7
CiAgICAgICAgIGF1dG8gc291cmNlRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQu
Y29sdW1uRG91YmxlKDYpOwogICAgICAgICBhdXRvIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9T
ZW5kVmFsdWUgPSBzdGF0ZW1lbnQuY29sdW1uRG91YmxlKDEwKTsKKyAgICAgICAgYXV0byBkZXN0
aW5hdGlvblRva2VuID0gc3RhdGVtZW50LmNvbHVtblRleHQoMTIpOworICAgICAgICBhdXRvIGRl
c3RpbmF0aW9uU2lnbmF0dXJlID0gc3RhdGVtZW50LmNvbHVtblRleHQoMTMpOworICAgICAgICBh
dXRvIGRlc3RpbmF0aW9uS2V5SUQgPSBzdGF0ZW1lbnQuY29sdW1uVGV4dCgxNCk7CiAKICAgICAg
ICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgIT0gLTEpCiAgICAgICAgICAgICBhdHRyaWJ1
dGlvbi5zZXRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0
cmlidXRpb25UcmlnZ2VyRGF0YSB7IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UHJpb3JpdHkocHJp
b3JpdHkpIH0pOwogCisgICAgICAgIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpE
ZXN0aW5hdGlvblNlY3JldFRva2VuIGRlc3RpbmF0aW9uU2VjcmV0VG9rZW47CisgICAgICAgIGRl
c3RpbmF0aW9uU2VjcmV0VG9rZW4udG9rZW5CYXNlNjRVUkwgPSBkZXN0aW5hdGlvblRva2VuOwor
ICAgICAgICBkZXN0aW5hdGlvblNlY3JldFRva2VuLnNpZ25hdHVyZUJhc2U2NFVSTCA9IGRlc3Rp
bmF0aW9uU2lnbmF0dXJlOworICAgICAgICBkZXN0aW5hdGlvblNlY3JldFRva2VuLmtleUlEQmFz
ZTY0VVJMID0gZGVzdGluYXRpb25LZXlJRDsKKworICAgICAgICBhdHRyaWJ1dGlvbi5zZXREZXN0
aW5hdGlvblNlY3JldFRva2VuKFdURk1vdmUoZGVzdGluYXRpb25TZWNyZXRUb2tlbikpOworCiAg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZDsK
ICAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVU
b1NlbmQ7CiAKQEAgLTE4Miw3ICsxOTMsMTIgQEAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQgRGF0YWJhc2VVdGlsaXRpZXM6OmJ1aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQKICAg
ICAgICAgYXR0cmlidXRpb24uc2V0VGltZXNUb1NlbmQoeyBzb3VyY2VFYXJsaWVzdFRpbWVUb1Nl
bmQsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kIH0pOwogICAgIH0KIAotICAgIGF0dHJp
YnV0aW9uLnNldFNvdXJjZVNlY3JldFRva2VuKHsgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQgfSk7
CisgICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRva2Vu
IHNvdXJjZVNlY3JldFRva2VuOworICAgIHNvdXJjZVNlY3JldFRva2VuLnRva2VuQmFzZTY0VVJM
ID0gdG9rZW47CisgICAgc291cmNlU2VjcmV0VG9rZW4uc2lnbmF0dXJlQmFzZTY0VVJMID0gc2ln
bmF0dXJlOworICAgIHNvdXJjZVNlY3JldFRva2VuLmtleUlEQmFzZTY0VVJMID0ga2V5SUQ7CisK
KyAgICBhdHRyaWJ1dGlvbi5zZXRTb3VyY2VTZWNyZXRUb2tlbihXVEZNb3ZlKHNvdXJjZVNlY3Jl
dFRva2VuKSk7CiAKICAgICByZXR1cm4gYXR0cmlidXRpb247CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
YmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZjOC4uZTUwY2Y0YWJiZTU2NGU0
Y2EzZmI3MjZjYWE5ZDU2OWM1NGIwOWQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTAwNiw5ICsxMDA2
LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAgICAgaWYgKCFzZXNz
aW9uSUQoKS5pc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChyZWRp
cmVjdFJlcXVlc3QudXJsKCkpKQorICAgICAgICBpZiAoYXV0byByZXN1bHQgPSBXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RS
ZXF1ZXN0LnVybCgpKSkgewogICAgICAgICAgICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhID0gcmVzdWx0LnZhbHVlKCk7Ci0gICAgICAgIGVsc2UgaWYgKCFy
ZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBpZiAocHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQorICAgICAgICAgICAgICAgIHByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+ZGVzdGluYXRpb25TaXRlID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVz
KCkgfTsKKyAgICAgICAgfSBlbHNlIGlmICghcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIHJlc3VsdC5lcnJvcigpKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGF0YWJhc2UuY3BwCmluZGV4IGJjYTdmNTE5MzRjOGY2MzIyMzBiMjcxNDExOWJi
MmU2NzNjZmE1ZjkuLjBjYWE4NzEyOWQ0ODg5Y2ZlNTU5ZDQ4NmU3Y2ZiNGRiYmU5NzExMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhdGFiYXNlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBjb25zdGV4cHIgYXV0byBz
ZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5ID0gIlVQ
REFURSBVbgogY29uc3RleHByIGF1dG8gaW5zZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURv
bWFpbklELCAiCiAgICAgInNvdXJjZUlELCB0aW1lT2ZBZENsaWNrLCB0b2tlbiwgc2lnbmF0dXJl
LCBrZXlJRCwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCkgVkFMVUVTICg/LCA/LCA/LCA/LCA/
LCA/LCA/LCA/KSJfczsKIGNvbnN0ZXhwciBhdXRvIGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNFIElOVE8gQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0
ZURvbWFpbklELCAiCi0gICAgInNvdXJjZUlELCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBwcmlv
cml0eSwgdGltZU9mQWRDbGljaywgZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UsIHRva2VuLCBz
aWduYXR1cmUsIGtleUlELCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3RpbmF0aW9uLCBzb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlEKSBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sID8sID8s
ID8sID8pIl9zOworICAgICJzb3VyY2VJRCwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgcHJpb3Jp
dHksIHRpbWVPZkFkQ2xpY2ssIGVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlLCB0b2tlbiwgc2ln
bmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0aW5hdGlvbiwgc291cmNlQXBw
bGljYXRpb25CdW5kbGVJRCwgZGVzdGluYXRpb25Ub2tlbiwgZGVzdGluYXRpb25TaWduYXR1cmUs
IGRlc3RpbmF0aW9uS2V5SUQpIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgPywgPywgPywg
PywgPywgPywgPywgPykiX3M7CiBjb25zdGV4cHIgYXV0byBmaW5kVW5hdHRyaWJ1dGVkUXVlcnkg
PSAiU0VMRUNUICogRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVS
RSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8g
QU5EIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgPSA/Il9zOwogY29uc3RleHByIGF1dG8gZmlu
ZEF0dHJpYnV0ZWRRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNp
dGVEb21haW5JRCA9ID8gQU5EIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgPSA/Il9zOwogY29u
c3RleHByIGF1dG8gcmVtb3ZlVW5hdHRyaWJ1dGVkUXVlcnkgPSAiREVMRVRFIEZST00gVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0g
PyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/IEFORCBzb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlEID0gPyJfczsKQEAgLTY0LDYgKzY0LDcgQEAgY29uc3RleHByIGF1dG8gY3JlYXRlQXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFURSBUQUJMRSBBdHRyaWJ1dGUK
ICAgICAic291cmNlU2l0ZURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIGRlc3RpbmF0aW9uU2l0
ZURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIHNvdXJjZUlEIElOVEVHRVIgTk9UIE5VTEwsICIK
ICAgICAiYXR0cmlidXRpb25UcmlnZ2VyRGF0YSBJTlRFR0VSIE5PVCBOVUxMLCBwcmlvcml0eSBJ
TlRFR0VSIE5PVCBOVUxMLCB0aW1lT2ZBZENsaWNrIFJFQUwgTk9UIE5VTEwsICIKICAgICAiZWFy
bGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgUkVBTCwgdG9rZW4gVEVYVCwgc2lnbmF0dXJlIFRFWFQs
IGtleUlEIFRFWFQsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGluYXRpb24gUkVBTCwgc291cmNl
QXBwbGljYXRpb25CdW5kbGVJRCBURVhULCAiCisgICAgImRlc3RpbmF0aW9uVG9rZW4gVEVYVCwg
ZGVzdGluYXRpb25TaWduYXR1cmUgVEVYVCwgZGVzdGluYXRpb25LZXlJRCBURVhULCAiCiAgICAg
IkZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyBQQ01PYnNlcnZlZERv
bWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlv
blNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCiAgICAgIlBDTU9ic2VydmVkRG9tYWlucyhkb21h
aW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9zOwogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVl
SW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVF
IElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRf
c291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFpbklEX3NvdXJjZUFwcGxpY2F0
aW9uQnVuZGxlSUQgb24gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCBzb3Vy
Y2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCBzb3VyY2VBcHBsaWNhdGlv
bkJ1bmRsZUlEICkiX3M7CkBAIC04Niw3ICs4Nyw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZShjb25z
dCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgb3BlbkRhdGFiYXNlQW5kQ3JlYXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKICAgICBl
bmFibGVGb3JlaWduS2V5cygpOwotICAgIGFkZEJ1bmRsZUlEQ29sdW1uSWZOZWNlc3NhcnkoKTsK
KyAgICBhZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KCk7CiAgICAgbWlncmF0
ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCk7CiAgICAgYWxsRGF0YWJhc2VzKCkuYWRkKHRo
aXMpOwogfQpAQCAtMTgwLDYgKzE4MSw3IEBAIHZvaWQgRGF0YWJhc2U6Omluc2VydFByaXZhdGVD
bGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKICAgICAg
ICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gYXR0cmlidXRpb24uYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSgpID8gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLnZhbHVl
KCkuZGF0YSA6IC0xOwogICAgICAgICBhdXRvIHByaW9yaXR5ID0gYXR0cmlidXRpb24uYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSgpID8gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgp
LnZhbHVlKCkucHJpb3JpdHkgOiAtMTsKICAgICAgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVU
b1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLnNvdXJjZUVhcmxpZXN0VGltZVRvU2Vu
ZCA/IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuc291cmNlRWFybGllc3RUaW1lVG9TZW5kLnZh
bHVlKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDogLTE7CisgICAgICAgIGF1dG8gZGVz
dGluYXRpb25TZWNyZXRUb2tlbiA9IGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEo
KSA/IGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKS52YWx1ZSgpLmRlc3RpbmF0
aW9uU2VjcmV0VG9rZW4gOiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gZGVzdGluYXRpb25F
YXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLmRlc3RpbmF0aW9u
RWFybGllc3RUaW1lVG9TZW5kID8gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5kZXN0aW5hdGlv
bkVhcmxpZXN0VGltZVRvU2VuZC52YWx1ZSgpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSA6
IC0xOwogCiAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBpbnNlcnRpbmcgYW4gYXR0cmli
dXRlZCBwcml2YXRlIGNsaWNrIG1lYXN1cmVtZW50IHZhbHVlIGludG8gdGhlIGRhdGFiYXNlIHdp
dGhvdXQgdmFsaWQgcmVwb3J0IHRpbWVzLgpAQCAtMTk5LDYgKzIwMSw5IEBAIHZvaWQgRGF0YWJh
c2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50JiYKICAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoMTAsIHNvdXJj
ZVNlY3JldFRva2VuID8gc291cmNlU2VjcmV0VG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlT
dHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3Vi
bGUoMTEsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSAhPSBTUUxJVEVfT0sKICAgICAg
ICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoMTIsIGF0dHJpYnV0aW9uLnNvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSUQoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQt
PmJpbmRUZXh0KDEzLCBkZXN0aW5hdGlvblNlY3JldFRva2VuID8gZGVzdGluYXRpb25TZWNyZXRU
b2tlbi0+dG9rZW5CYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAg
ICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoMTQsIGRlc3RpbmF0aW9uU2VjcmV0VG9rZW4g
PyBkZXN0aW5hdGlvblNlY3JldFRva2VuLT5zaWduYXR1cmVCYXNlNjRVUkwgOiBlbXB0eVN0cmlu
ZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoMTUs
IGRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gPyBkZXN0aW5hdGlvblNlY3JldFRva2VuLT5rZXlJREJh
c2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3Rh
dGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZTo6aW5zZXJ0UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgaW5zZXJ0QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50UXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTY5OSwyMCArNzA0LDE4IEBAIHZvaWQgRGF0YWJhc2U6OmRlc3Ryb3lTdGF0ZW1lbnRz
KCkKICAgICBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50ID0gbnVsbHB0cjsKIH0KIAot
dm9pZCBEYXRhYmFzZTo6YWRkQnVuZGxlSURDb2x1bW5JZk5lY2Vzc2FyeSgpCit2b2lkIERhdGFi
YXNlOjphZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KCkKIHsKLSAgICAvLyBG
SVhNRTogUmVtb3ZlIHRoaXMgYXQgdGhlIGVuZCBvZiAyMDIxLiBObyBwdWJsaWMgcmVsZWFzZSB3
YXMgbWFkZSB3aXRoIHRoZSBzY2hlbWEgbWlzc2luZyBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlE
LCBzbyB0aGlzIGlzIG9ubHkgbmVlZGVkIHRvIG1pZ3JhdGUgaW50ZXJuYWwgdXNlcnMgd2hvIHVw
ZGF0ZWQgaW4gU2VwdGVtYmVyIDIwMjEuCi0gICAgU3RyaW5nIGF0dHJpYnV0ZWRUYWJsZU5hbWUo
IkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIpOwotICAgIFN0cmluZyB1bmF0dHJp
YnV0ZWRUYWJsZU5hbWUoIlVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsK
LSAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRENvbHVtbk5hbWUoInNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSUQiX3MpOwotICAgIGF1dG8gY2hlY2tDb2x1bW5zID0gWyZdIChjb25z
dCBTdHJpbmcmIHRhYmxlTmFtZSkgewotICAgICAgICBhdXRvIGNvbHVtbnMgPSBjb2x1bW5zRm9y
VGFibGUodGFibGVOYW1lKTsKLSAgICAgICAgaWYgKCFjb2x1bW5zLnNpemUoKSB8fCBjb2x1bW5z
Lmxhc3QoKSAhPSBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEQ29sdW1uTmFtZSkKLSAgICAgICAg
ICAgIGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKHRhYmxlTmFtZSwgc291cmNlQXBwbGljYXRpb25C
dW5kbGVJRENvbHVtbk5hbWUpOwotICAgIH07Ci0gICAgY2hlY2tDb2x1bW5zKGF0dHJpYnV0ZWRU
YWJsZU5hbWUpOwotICAgIGNoZWNrQ29sdW1ucyh1bmF0dHJpYnV0ZWRUYWJsZU5hbWUpOworICAg
IFN0cmluZyBhdHRyaWJ1dGVkVGFibGVOYW1lKCJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQiX3MpOworICAgIFN0cmluZyBkZXN0aW5hdGlvbktleUlEQ29sdW1uTmFtZSgiZGVzdGlu
YXRpb25LZXlJRCJfcyk7CisgICAgYXV0byBjb2x1bW5zID0gY29sdW1uc0ZvclRhYmxlKGF0dHJp
YnV0ZWRUYWJsZU5hbWUpOworICAgIGlmICghY29sdW1ucy5zaXplKCkgfHwgY29sdW1ucy5sYXN0
KCkgIT0gZGVzdGluYXRpb25LZXlJRENvbHVtbk5hbWUpIHsKKyAgICAgICAgYWRkTWlzc2luZ0Nv
bHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSwgImRlc3RpbmF0aW9uVG9rZW4iX3MpOwor
ICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCAiZGVz
dGluYXRpb25TaWduYXR1cmUiX3MpOworICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShh
dHRyaWJ1dGVkVGFibGVOYW1lLCBkZXN0aW5hdGlvbktleUlEQ29sdW1uTmFtZSk7CisgICAgfQog
fQorCiBib29sIERhdGFiYXNlOjpuZWVkc1VwZGF0ZWRTY2hlbWEoKQogewogICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyBhdCB0aGUgZW5kIG9mIDIwMjEuIE5vIHB1YmxpYyByZWxlYXNlIHdhcyBt
YWRlIHdpdGggdGhlIHNjaGVtYSBtaXNzaW5nIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQsIHNv
IHRoaXMgaXMgb25seSBuZWVkZWQgdG8gbWlncmF0ZSBpbnRlcm5hbCB1c2VycyB3aG8gdXBkYXRl
ZCBpbiBTZXB0ZW1iZXIgMjAyMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRh
YmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKaW5kZXggYTUwMzczNzgwZjIx
N2IzNjM2NDRlMGJlNGUyYjI2MjM5NTk0MjgyMS4uYmI0OWJiNjJhYTcxODBjNmQ3ZDYzMmNiYzEx
Mzk5YjM0NzRhNTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHJp
dmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPERvbWFpbklEPiBkb21haW5JRChjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIFN0cmluZyBnZXREb21haW5TdHJpbmdGcm9tRG9t
YWluSUQoRG9tYWluSUQpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9pZCBhZGRCdW5kbGVJRENvbHVt
bklmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBhZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVj
ZXNzYXJ5KCk7CiAgICAgYm9vbCBuZWVkc1VwZGF0ZWRTY2hlbWEoKSBmaW5hbDsKICAgICBib29s
IGNyZWF0ZVVuaXF1ZUluZGljZXMoKSBmaW5hbDsKICAgICBjb25zdCBNZW1vcnlDb21wYWN0TG9v
a3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4mIGV4cGVj
dGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKSBmaW5hbDsKQEAgLTEwMCw2ICsxMDAsOCBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgU3RhdGVtZW50IG1fZG9tYWluSURGcm9tU3RyaW5nU3RhdGVtZW50
OwogICAgIG11dGFibGUgU3RhdGVtZW50IG1fZG9tYWluU3RyaW5nRnJvbURvbWFpbklEU3RhdGVt
ZW50OwogICAgIG11dGFibGUgU3RhdGVtZW50IG1faW5zZXJ0T2JzZXJ2ZWREb21haW5TdGF0ZW1l
bnQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpEZXN0aW5hdGlvblNlY3JldFRva2VuPiBtX2Rlc3RpbmF0aW9uU2VjcmV0VG9rZW47CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OlBDTQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCmluZGV4IGRm
ZGU3YzgzNDE0YmY5YzJlMWQ4OTE0ZjFmNmFmOTY0MzEzYTM2M2UuLmI3ZWQ5ZGE3Mjg1MWMyMzMy
NDQzOTIxMDIyNThjZWYwZTEwMTBlOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnN0b3JlVW5hdHRy
aWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKICAgICAgICAgICAgIGlmIChtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcpCi0g
ICAgICAgICAgICAgICAgbWVhc3VyZW1lbnQuc2V0U291cmNlVW5saW5rYWJsZVRva2VuVmFsdWUo
bV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLT51bmxpbmthYmxlVG9rZW4pOworICAg
ICAgICAgICAgICAgIG1lYXN1cmVtZW50LnNldFNvdXJjZVVubGlua2FibGVUb2tlblZhbHVlKG1f
ZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+dW5saW5rYWJsZVRva2VuRm9yU291cmNl
KTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgIGlmIChhdXRvIGVycm9yTWVzc2FnZSA9IG1lYXN1cmVtZW50LmNhbGN1bGF0ZUFuZFVwZGF0
ZVNvdXJjZVVubGlua2FibGVUb2tlbihwdWJsaWNLZXlCYXNlNjRVUkwpKSB7CkBAIC0xMDMsNyAr
MTAzLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnN0b3JlVW5hdHRy
aWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKICAgICAgICAgICAgIH0KICNlbmRpZgog
Ci0gICAgICAgICAgICBnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4oV1RGTW92ZShtZWFzdXJlbWVu
dCkpOworICAgICAgICAgICAgZ2V0U2lnbmVkVW5saW5rYWJsZVRva2VuRm9yU291cmNlKFdURk1v
dmUobWVhc3VyZW1lbnQpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfSk7CiAgICAg
fQpAQCAtMTE4LDEzICsxMTgsMTggQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmdldFRva2VuUHVibGljS2V5KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKICAgICBpZiAo
IWZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gdG9rZW5QdWJs
aWNLZXlVUkwgPSBhdHRyaWJ1dGlvbi50b2tlblB1YmxpY0tleVVSTCgpOworICAgIFVSTCB0b2tl
blB1YmxpY0tleVVSTDsKICAgICBpZiAobV90b2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpIHsK
ICAgICAgICAgaWYgKGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQgPT0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OkRlc3RpbmF0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB0b2tlblB1YmxpY0tleVVSTCA9ICptX3Rva2VuUHVibGlj
S2V5VVJMRm9yVGVzdGluZzsKICAgICAgICAgLy8gRklYTUUoMjI1MzY0KQogICAgICAgICBwY21E
YXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6Tm9u
UGVyc29uYWxseUlkZW50aWZpYWJsZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byBv
cHRVUkwgPSBhdHRyaWJ1dGlvbi50b2tlblB1YmxpY0tleVVSTCgpKQorICAgICAgICAgICAgdG9r
ZW5QdWJsaWNLZXlVUkwgPSAqb3B0VVJMOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKHRva2VuUHVibGljS2V5VVJMLmlzRW1wdHkoKSB8fCAhdG9r
ZW5QdWJsaWNLZXlVUkwuaXNWYWxpZCgpKQpAQCAtMTU2LDE4ICsxNjEsNzEgQEAgdm9pZCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFRva2VuUHVibGljS2V5KFByaXZhdGVDbGlj
a01lYXN1cmVtZW50JiYKICAgICB9KTsKIH0KIAotdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbihQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCYmIG1lYXN1cmVtZW50KQordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Omdl
dFRva2VuUHVibGljS2V5KEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2lu
dCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNt
RGF0YUNhcnJpZWQgcGNtRGF0YUNhcnJpZWQsIEZ1bmN0aW9uPHZvaWQoQXR0cmlidXRpb25Ucmln
Z2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIGNvbnN0IFN0cmluZyYgcHVibGljS2V5
QmFzZTY0VVJMKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFVSTCB0b2tlblB1YmxpY0tleVVSTDsKKyAgICBpZiAobV90
b2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpIHsKKyAgICAgICAgaWYgKGF0dHJpYnV0aW9uUmVw
b3J0RW5kcG9pbnQgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0
RW5kcG9pbnQ6OlNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdG9rZW5QdWJs
aWNLZXlVUkwgPSAqbV90b2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc7CisgICAgICAgIC8vIEZJ
WE1FKDIyNTM2NCkKKyAgICAgICAgcGNtRGF0YUNhcnJpZWQgPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6UGNtRGF0YUNhcnJpZWQ6Ok5vblBlcnNvbmFsbHlJZGVudGlmaWFibGU7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKGF1dG8gb3B0VVJMID0gYXR0cmlidXRpb25UcmlnZ2VyRGF0YS50
b2tlblB1YmxpY0tleVVSTCgpKQorICAgICAgICAgICAgdG9rZW5QdWJsaWNLZXlVUkwgPSAqb3B0
VVJMOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KHRva2VuUHVibGljS2V5VVJMLmlzRW1wdHkoKSB8fCAhdG9rZW5QdWJsaWNLZXlVUkwuaXNWYWxp
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZGVidWdNb2RlRW5hYmxlZCgpKQorICAg
ICAgICBwY21EYXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fy
cmllZDo6UGVyc29uYWxseUlkZW50aWZpYWJsZTsKKworICAgIFJFTEVBU0VfTE9HX0lORk8oUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJBYm91dCB0byBmaXJlIGEgdG9rZW4gcHVibGljIGtleSBy
ZXF1ZXN0LiIpOworICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdl
TGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGEg
dG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcyk7CisKKyAgICBQQ006Ok5ldHdvcmtMb2FkZXI6
OnN0YXJ0KFdURk1vdmUodG9rZW5QdWJsaWNLZXlVUkwpLCBudWxscHRyLCBwY21EYXRhQ2Fycmll
ZCwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHRoaXMsIGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEgPSBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoYXV0byYgZXJyb3JEZXNjcmlwdGlvbiwgYXV0byYganNvbk9iamVjdCkg
bXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKCFlcnJvckRlc2NyaXB0aW9uLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBt
X2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFr
ZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJlY2VpdmVkIGVycm9yOiAnIl9z
LCBlcnJvckRlc2NyaXB0aW9uLCAiJyBmb3IgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcykp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFqc29uT2Jq
ZWN0KSB7CisgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVz
c2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRd
IEpTT04gcmVzcG9uc2UgaXMgZW1wdHkgZm9yIHRva2VuIHB1YmxpYyBrZXkgcmVxdWVzdC4iX3Mp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fY2xpZW50LT5i
cm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkxvZywgbWFrZVN0cmluZygiW1By
aXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEdvdCBKU09OIHJlc3BvbnNlIGZvciB0b2tlbiBwdWJs
aWMga2V5IHJlcXVlc3QuIl9zKSk7CisKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShhdHRyaWJ1
dGlvblRyaWdnZXJEYXRhKSwganNvbk9iamVjdC0+Z2V0U3RyaW5nKCJ0b2tlbl9wdWJsaWNfa2V5
Il9zKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JTb3VyY2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQmJiBtZWFzdXJlbWVudCkKIHsKICAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSBjbG9zZSBpbiB0aW1l
IHRvIHRoZSBuYXZpZ2F0aW9uYWwgY2xpY2sgd2hpY2ggbWFrZXMgaXQgbGlrZWx5IHRvIGJlIHBl
cnNvbmFsbHkgaWRlbnRpZmlhYmxlLgogICAgIGF1dG8gcGNtRGF0YUNhcnJpZWQgPSBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6OlBlcnNvbmFsbHlJZGVudGlmaWFibGU7
Ci0gICAgYXV0byB0b2tlblNpZ25hdHVyZVVSTCA9IG1lYXN1cmVtZW50LnRva2VuU2lnbmF0dXJl
VVJMKCk7CisgICAgVVJMIHRva2VuU2lnbmF0dXJlVVJMOwogICAgIGlmIChtX3Rva2VuU2lnbmF0
dXJlVVJMRm9yVGVzdGluZykgewogICAgICAgICB0b2tlblNpZ25hdHVyZVVSTCA9ICptX3Rva2Vu
U2lnbmF0dXJlVVJMRm9yVGVzdGluZzsKICAgICAgICAgLy8gRklYTUUoMjI1MzY0KQogICAgICAg
ICBwY21EYXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fycmll
ZDo6Tm9uUGVyc29uYWxseUlkZW50aWZpYWJsZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
YXV0byBvcHRVUkwgPSBtZWFzdXJlbWVudC50b2tlblNpZ25hdHVyZVVSTCgpKQorICAgICAgICAg
ICAgdG9rZW5TaWduYXR1cmVVUkwgPSAqb3B0VVJMOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHRva2VuU2lnbmF0dXJlVVJMLmlzRW1wdHkoKSB8
fCAhdG9rZW5TaWduYXR1cmVVUkwuaXNWYWxpZCgpKQpAQCAtMTk4LDE4ICsyNTYsMjIgQEAgdm9p
ZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tl
bihQcml2YXRlQ2xpY2tNZWFzdXIKICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25z
b2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudF0gSlNPTiByZXNwb25zZSBkb2Vzbid0IGhhdmUgdGhlIGtleSAndW5saW5r
YWJsZV90b2tlbicgZm9yIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iX3MpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICAvLyBGSVggTk9XIQotICAgICAgICBpZiAobV9m
cmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKQotICAgICAgICAgICAgbWVhc3VyZW1lbnQu
c2V0U291cmNlU2VjcmV0VG9rZW4oeyBtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rpbmct
PnNlY3JldFRva2VuLCBtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnNpZ25hdHVy
ZSwgbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLT5rZXlJRCB9KTsKKworICAgICAg
ICBpZiAobV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKSB7CisgICAgICAgICAgICBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW4gc291cmNlU2VjcmV0VG9r
ZW47CisgICAgICAgICAgICBzb3VyY2VTZWNyZXRUb2tlbi50b2tlbkJhc2U2NFVSTCA9IG1fZnJh
dWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+c2VjcmV0VG9rZW5Gb3JTb3VyY2U7CisgICAg
ICAgICAgICBzb3VyY2VTZWNyZXRUb2tlbi5zaWduYXR1cmVCYXNlNjRVUkwgPSBtX2ZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnNpZ25hdHVyZUZvclNvdXJjZTsKKyAgICAgICAgICAg
IHNvdXJjZVNlY3JldFRva2VuLmtleUlEQmFzZTY0VVJMID0gbV9mcmF1ZFByZXZlbnRpb25WYWx1
ZXNGb3JUZXN0aW5nLT5rZXlJREZvclNvdXJjZTsKKyAgICAgICAgICAgIG1lYXN1cmVtZW50LnNl
dFNvdXJjZVNlY3JldFRva2VuKFdURk1vdmUoc291cmNlU2VjcmV0VG9rZW4pKTsKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICAgICAgZWxzZSB7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBpZiAoYXV0byBlcnJvck1lc3NhZ2UgPSBtZWFzdXJlbWVudC5jYWxjdWxhdGVBbmRVcGRhdGVT
b3VyY2VTZWNyZXRUb2tlbihzaWduYXR1cmVCYXNlNjRVUkwpKSB7CiAgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCB0aGUgZm9sbG93
aW5nIGVycm9yIGluIGNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNlY3JldFRva2VuKCk6ICcle3B1
YmxpY31zIiwgZXJyb3JNZXNzYWdlLT51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBt
X2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFr
ZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdICJfcywgKmVycm9yTWVzc2FnZSkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgfQogI2Vu
ZGlmCisgICAgICAgIH0KIAogICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3Nh
Z2UoTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gU3Rvcmlu
ZyBhIHNlY3JldCB0b2tlbi4iX3MpOwogCkBAIC0yMTgsNiArMjgwLDg1IEBAIHZvaWQgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4oUHJpdmF0
ZUNsaWNrTWVhc3VyCiAKIH0KIAordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
OmdldFNpZ25lZFVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKFNvdXJjZVNpdGUmJiBzb3Vy
Y2VTaXRlLCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYmIGRlc3RpbmF0aW9uU2l0ZSwgQXR0
cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIGNvbnN0IEFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllciYgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKQorewor
ICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhp
cyBpcyBndWFyYW50ZWVkIHRvIGJlIGNsb3NlIGluIHRpbWUgdG8gdGhlIG5hdmlnYXRpb25hbCBj
bGljayB3aGljaCBtYWtlcyBpdCBsaWtlbHkgdG8gYmUgcGVyc29uYWxseSBpZGVudGlmaWFibGUu
CisgICAgYXV0byBwY21EYXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21E
YXRhQ2FycmllZDo6UGVyc29uYWxseUlkZW50aWZpYWJsZTsKKyAgICBVUkwgdG9rZW5TaWduYXR1
cmVVUkw7CisgICAgaWYgKG1fdG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nKSB7CisgICAgICAg
IHRva2VuU2lnbmF0dXJlVVJMID0gKm1fdG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nOworICAg
ICAgICAvLyBGSVhNRSgyMjUzNjQpCisgICAgICAgIHBjbURhdGFDYXJyaWVkID0gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25hbGx5SWRlbnRpZmlhYmxl
OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvIG9wdFVSTCA9IGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEudG9rZW5TaWduYXR1cmVVUkwoKSkKKyAgICAgICAgICAgIHRva2VuU2lnbmF0dXJl
VVJMID0gKm9wdFVSTDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmICh0b2tlblNpZ25hdHVyZVVSTC5pc0VtcHR5KCkgfHwgIXRva2VuU2lnbmF0dXJl
VVJMLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRlYnVnTW9kZUVuYWJs
ZWQoKSkKKyAgICAgICAgcGNtRGF0YUNhcnJpZWQgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
UGNtRGF0YUNhcnJpZWQ6OlBlcnNvbmFsbHlJZGVudGlmaWFibGU7CisKKyAgICBSRUxFQVNFX0xP
R19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQWJvdXQgdG8gZmlyZSBhIHVubGlua2Fi
bGUgdG9rZW4gc2lnbmluZyByZXF1ZXN0LiIpOworICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25z
b2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
XSBBYm91dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIl9zKTsK
KworICAgIFBDTTo6TmV0d29ya0xvYWRlcjo6c3RhcnQoV1RGTW92ZSh0b2tlblNpZ25hdHVyZVVS
TCksIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEudG9rZW5TaWduYXR1cmVKU09OKCksIHBjbURhdGFD
YXJyaWVkLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdGhpcywgc291cmNlU2l0ZSA9
IFdURk1vdmUoc291cmNlU2l0ZSksIGRlc3RpbmF0aW9uU2l0ZSA9IFdURk1vdmUoZGVzdGluYXRp
b25TaXRlKSwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdURk1vdmUoYXR0cmlidXRpb25Ucmln
Z2VyRGF0YSksIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IGFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllci5pc29sYXRlZENvcHkoKV0gKGF1dG8mIGVycm9yRGVzY3JpcHRpb24sIGF1dG8m
IGpzb25PYmplY3QpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmICghZXJyb3JEZXNjcmlwdGlvbi5pc051bGwoKSkgewor
ICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBSZWNlaXZl
ZCBlcnJvcjogJyJfcywgZXJyb3JEZXNjcmlwdGlvbiwgIicgZm9yIHNlY3JldCB0b2tlbiBzaWdu
aW5nIHJlcXVlc3QuIl9zKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoIWpzb25PYmplY3QpIHsKKyAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RD
b25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudF0gSlNPTiByZXNwb25zZSBpcyBlbXB0eSBmb3IgdG9rZW4gc2lnbmlu
ZyByZXF1ZXN0LiJfcykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgYXV0byBzaWduYXR1cmVCYXNlNjRVUkwgPSBqc29uT2JqZWN0LT5nZXRTdHJpbmcoInVubGlu
a2FibGVfdG9rZW4iX3MpOworICAgICAgICBpZiAoc2lnbmF0dXJlQmFzZTY0VVJMLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBK
U09OIHJlc3BvbnNlIGRvZXNuJ3QgaGF2ZSB0aGUga2V5ICd1bmxpbmthYmxlX3Rva2VuJyBmb3Ig
dG9rZW4gc2lnbmluZyByZXF1ZXN0LiJfcykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZykgewor
ICAgICAgICAgICAgYXV0byB0ZXN0VG9rZW4gPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U2Vj
cmV0VG9rZW4geyBtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnNlY3JldFRva2Vu
Rm9yRGVzdGluYXRpb24sIG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+c2lnbmF0
dXJlRm9yRGVzdGluYXRpb24sIG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+a2V5
SURGb3JEZXN0aW5hdGlvbiB9OworICAgICAgICAgICAgYXV0byB0ZXN0RGVzdGluYXRpb25Ub2tl
biA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuIHsgdGVz
dFRva2VuIH07CisgICAgICAgICAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnNldERlc3RpbmF0
aW9uU2VjcmV0VG9rZW4oV1RGTW92ZSh0ZXN0RGVzdGluYXRpb25Ub2tlbikpOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLmRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKSB7CisgICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkRlc3RpbmF0aW9u
IHVubGlua2FibGUgdG9rZW4gaXMgbWlzc2luZy4iKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVu
dC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgIltQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBEZXN0aW5hdGlvbiB1bmxpbmthYmxlIHRva2VuIGlzIG1pc3Np
bmcuIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGF1dG8gcmVzdWx0ID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFu
ZFVwZGF0ZURlc3RpbmF0aW9uU2VjcmV0VG9rZW4oc2lnbmF0dXJlQmFzZTY0VVJMLCAqYXR0cmli
dXRpb25UcmlnZ2VyRGF0YS5kZXN0aW5hdGlvblVubGlua2FibGVUb2tlbik7CisgICAgICAgICAg
ICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gcmVz
dWx0LmVycm9yKCkuaXNFbXB0eSgpID8gIlVua25vd24iIDogcmVzdWx0LmVycm9yKCk7CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdv
dCB0aGUgZm9sbG93aW5nIGVycm9yIGluIGNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNlY3JldFRv
a2VuKCk6ICcle3B1YmxpY31zIiwgZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6
OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gIl9zLCBlcnJv
ck1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6
OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBTdG9yaW5nIGEgc2VjcmV0IHRva2Vu
LiJfcyk7CisKKyAgICAgICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGVzdGluYXRpb25T
ZWNyZXRUb2tlbiA9IHJlc3VsdC52YWx1ZSgpOworICAgICAgICAgICAgYXR0cmlidXRlKFdURk1v
dmUoc291cmNlU2l0ZSksIFdURk1vdmUoZGVzdGluYXRpb25TaXRlKSwgV1RGTW92ZShhdHRyaWJ1
dGlvblRyaWdnZXJEYXRhKSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRsZUlERm9y
VGVzdGluZyA/ICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50QXBwQnVuZGxlSURGb3JUZXN0aW5n
IDogYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAg
ICAgfQorI2VuZGlmCisgICAgfSk7Cit9CisKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCYmIG1lYXN1cmVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlw
ZSB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgc3RvcmUoKS5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3ZlKG1lYXN1
cmVtZW50KSwgdHlwZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMjUxLDcgKzM5
Miw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpoYW5kbGVBdHRyaWJ1
dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKICAgICBSZWdpc3RyYWJsZURvbWFpbiBzb3Vy
Y2VEb21haW47CiAgICAgaWYgKHJlZGlyZWN0RG9tYWluLm1hdGNoZXMoZmlyc3RQYXJ0eVVSTCkp
IHsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnNvdXJjZVJlZ2lzdHJhYmxl
RG9tYWluKSB7Ci0gICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
TWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdn
ZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIGl0IHdhcyByZXF1ZXN0ZWQgaW4g
YW4gSFRUUCByZWRpcmVjdCB0aGF0IGlzIHNhbWUtc2l0ZSBhcyB0aGUgICBmaXJzdC1wYXJ0eSBh
bmQgbm8gYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1ldGVyIHdhcyBwcm92aWRlZC4iX3Mp
OworICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2
ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSBpdCB3YXMgcmVxdWVzdGVkIGluIGFuIEhUVFAg
cmVkaXJlY3QgdGhhdCBpcyBzYW1lLXNpdGUgYXMgdGhlIGZpcnN0LXBhcnR5IGFuZCBubyBhdHRy
aWJ1dGlvblNvdXJjZSBxdWVyeSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkLiJfcyk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc291cmNlRG9tYWluID0gKmF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEuc291cmNlUmVnaXN0cmFibGVEb21haW47CkBAIC0yNjMsNiArNDA0LDQx
IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpoYW5kbGVBdHRyaWJ1dGlv
bihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKIAogICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25z
b2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
XSBUcmlnZ2VyaW5nIGV2ZW50IGFjY2VwdGVkLiJfcyk7CiAKKyAgICAvLyBTaWduaW5nIG9mIGEg
ZGVzdGluYXRpb24gdG9rZW4gbXVzdCBiZSBkb25lIHVuY29uZGl0aW9uYWxseS4gT3RoZXJ3aXNl
IGl0IGJlY29tZXMgYSB3YXkgdG8gZGlzY292ZXIgdGhhdCB0aGVyZSBpcyBhIHBlbmRpbmcgYXR0
cmlidXRpb24uCisgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZXBoZW1lcmFsRGVzdGlu
YXRpb25Ob25jZSkgeworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFDb3B5ID0g
YXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAgICAgICAgLy8gVGhpcyBpcyBndWFyYW50ZWVkIHRv
IGJlIGNsb3NlIGluIHRpbWUgdG8gdGhlIHRyaWdnZXJpbmcgZXZlbnQgd2hpY2ggbWFrZXMgaXQg
bGlrZWx5IHRvIGJlIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlLgorICAgICAgICBnZXRUb2tlblB1
YmxpY0tleShXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFDb3B5KSwgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OkRlc3RpbmF0aW9uLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6OlBlcnNvbmFsbHlJZGVudGlmaWFi
bGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlzLCBzb3VyY2VTaXRlID0gU291
cmNlU2l0ZSB7IFdURk1vdmUoc291cmNlRG9tYWluKSB9LCBkZXN0aW5hdGlvblNpdGUgPSBBdHRy
aWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IGZpcnN0UGFydHlVUkwgfSwgYXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyID0gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmlzb2xhdGVkQ29weSgp
XSAoQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIGNvbnN0
IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAocHVi
bGljS2V5QmFzZTY0VVJMLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJUaGUgcHVibGljIGtleSBVUkwgd2FzIGVt
cHR5LiIpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRoZSBw
dWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JU
ZXN0aW5nKQorICAgICAgICAgICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuc2V0RGVzdGlu
YXRpb25VbmxpbmthYmxlVG9rZW5WYWx1ZShtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3Rp
bmctPnVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKTsKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uVW5saW5rYWJs
ZVRva2VuKHB1YmxpY0tleUJhc2U2NFVSTCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkg
eworICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmRlc3RpbmF0aW9u
VW5saW5rYWJsZVRva2VuID0gcmVzdWx0LnZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGdl
dFNpZ25lZFVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKFdURk1vdmUoc291cmNlU2l0ZSks
IFdURk1vdmUoZGVzdGluYXRpb25TaXRlKSwgV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
KSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRsZUlERm9yVGVzdGluZyA/ICptX3By
aXZhdGVDbGlja01lYXN1cmVtZW50QXBwQnVuZGxlSURGb3JUZXN0aW5nIDogYXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVy
cm9yKCkuaXNFbXB0eSgpID8gIlVua25vd24iIDogcmVzdWx0LmVycm9yKCk7CisgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdvdCB0aGUg
Zm9sbG93aW5nIGVycm9yIGluIGNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uVW5saW5rYWJs
ZVRva2VuKCk6ICcle3B1YmxpY31zIiwgZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2
ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gIl9zLCBl
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisj
ZW5kaWYKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdHRyaWJ1
dGUoU291cmNlU2l0ZSB7IFdURk1vdmUoc291cmNlRG9tYWluKSB9LCBBdHRyaWJ1dGlvbkRlc3Rp
bmF0aW9uU2l0ZSB7IGZpcnN0UGFydHlVUkwgfSwgV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhKSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRsZUlERm9yVGVzdGluZyA/ICpt
X3ByaXZhdGVDbGlja01lYXN1cmVtZW50QXBwQnVuZGxlSURGb3JUZXN0aW5nIDogYXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKTsKIH0KIApAQCAtMzI0LDE2ICs1MDAsNjMgQEAgdm9pZCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZShTb3VyY2VTaXRlJiYgc291cmNl
U2l0ZSwgQXR0cmlidXQKIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZp
cmVDb252ZXJzaW9uUmVxdWVzdChjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYgYXR0cmli
dXRpb24sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50
IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpCiB7Ci0gICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgp
KQorICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSB8fCAhYXR0cmlidXRpb24uYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWF0dHJpYnV0aW9uLnNv
dXJjZVNlY3JldFRva2VuKCkpIHsKKyAgICBpZiAoIWF0dHJpYnV0aW9uLnNvdXJjZVNlY3JldFRv
a2VuKCkgJiYgIWF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKS0+ZGVzdGluYXRp
b25TZWNyZXRUb2tlbikgewogICAgICAgICBmaXJlQ29udmVyc2lvblJlcXVlc3RJbXBsKGF0dHJp
YnV0aW9uLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGF1dG8gYXR0cmlidXRpb25Db3B5ID0gYXR0cmlidXRpb247CiAgICAgLy8gVGhp
cyBoYXBwZW5zIG91dCBvZiB3ZWJwYWdlIGNvbnRleHQgYW5kIHdpdGggYSBsb25nIGRlbGF5IGFu
ZCBpcyB0aHVzIHVubGlrZWx5IHRvIGJlIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlLgorICAgIGlm
IChhdHRyaWJ1dGlvbi5zb3VyY2VTZWNyZXRUb2tlbigpKSB7CisgICAgICAgIGdldFRva2VuUHVi
bGljS2V5KFdURk1vdmUoYXR0cmlidXRpb25Db3B5KSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2lu
dCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25hbGx5
SWRlbnRpZmlhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdGhpcywgYXR0cmli
dXRpb25SZXBvcnRFbmRwb2ludF0gKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRp
b24sIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSB7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byBw
dWJsaWNLZXlEYXRhID0gYmFzZTY0VVJMRGVjb2RlKHB1YmxpY0tleUJhc2U2NFVSTCk7CisgICAg
ICAgICAgICBpZiAoIXB1YmxpY0tleURhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpD
cnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgICAgICAgICBjcnlwdG8tPmFk
ZEJ5dGVzKHB1YmxpY0tleURhdGEtPmRhdGEoKSwgcHVibGljS2V5RGF0YS0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgIGF1dG8gcHVibGljS2V5RGF0YUhhc2ggPSBjcnlwdG8tPmNvbXB1dGVIYXNoKCk7
CisKKyAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhwdWJs
aWNLZXlEYXRhSGFzaC5kYXRhKCksIHB1YmxpY0tleURhdGFIYXNoLnNpemUoKSk7CisgICAgICAg
ICAgICBpZiAoa2V5SUQgIT0gYXR0cmlidXRpb24uc291cmNlU2VjcmV0VG9rZW4oKS0+a2V5SURC
YXNlNjRVUkwpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoIWF0
dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgIGlmIChhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRh
KCktPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4pIHsKKyAgICAgICAgICAgICAgICBnZXRUb2tlblB1
YmxpY0tleShXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25hbGx5SWRl
bnRpZmlhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdGhpcywgYXR0cmlidXRp
b25SZXBvcnRFbmRwb2ludF0gKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRpb24s
IGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgICAgICAgICAgYXV0byBwdWJsaWNLZXlEYXRhID0gYmFzZTY0VVJMRGVjb2RlKHB1Ymxp
Y0tleUJhc2U2NFVSTCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghcHVibGljS2V5RGF0YSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICBh
dXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgICAgICAgICAgICAgICAgIGNyeXB0by0+YWRkQnl0
ZXMocHVibGljS2V5RGF0YS0+ZGF0YSgpLCBwdWJsaWNLZXlEYXRhLT5zaXplKCkpOworICAgICAg
ICAgICAgICAgICAgICBhdXRvIHB1YmxpY0tleURhdGFIYXNoID0gY3J5cHRvLT5jb21wdXRlSGFz
aCgpOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhwdWJsaWNLZXlEYXRhSGFzaC5kYXRhKCksIHB1YmxpY0tleURhdGFIYXNoLnNpemUo
KSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChrZXlJRCAhPSBhdHRyaWJ1dGlvbi5hdHRyaWJ1
dGlvblRyaWdnZXJEYXRhKCktPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4tPmtleUlEQmFzZTY0VVJM
KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAg
IGZpcmVDb252ZXJzaW9uUmVxdWVzdEltcGwoYXR0cmlidXRpb24sIGF0dHJpYnV0aW9uUmVwb3J0
RW5kcG9pbnQpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmlyZUNvbnZlcnNpb25SZXF1ZXN0SW1wbChh
dHRyaWJ1dGlvbiwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CisgICAgICAgIH0pOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgZ2V0VG9rZW5QdWJsaWNLZXkoV1RGTW92ZShhdHRy
aWJ1dGlvbkNvcHkpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50LCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6Ok5vblBlcnNvbmFsbHlJZGVudGlmaWFibGUsIFt3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlzLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50
XSAoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgY29uc3QgU3RyaW5nJiBw
dWJsaWNLZXlCYXNlNjRVUkwpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTM0Nyw3ICs1NzAsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjo6ZmlyZUNvbnZlcnNpb25SZXF1ZXN0KGNvbnN0IFByaXZhdGVDbGlja01lYQogICAg
ICAgICBhdXRvIHB1YmxpY0tleURhdGFIYXNoID0gY3J5cHRvLT5jb21wdXRlSGFzaCgpOwogCiAg
ICAgICAgIGF1dG8ga2V5SUQgPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhwdWJsaWNLZXlEYXRh
SGFzaC5kYXRhKCksIHB1YmxpY0tleURhdGFIYXNoLnNpemUoKSk7Ci0gICAgICAgIGlmIChrZXlJ
RCAhPSBhdHRyaWJ1dGlvbi5zb3VyY2VTZWNyZXRUb2tlbigpLT5rZXlJREJhc2U2NFVSTCkKKyAg
ICAgICAgaWYgKCFhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCktPmRlc3RpbmF0
aW9uU2VjcmV0VG9rZW4gfHwga2V5SUQgIT0gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSgpLT5kZXN0aW5hdGlvblNlY3JldFRva2VuLT5rZXlJREJhc2U2NFVSTCkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBmaXJlQ29udmVyc2lvblJlcXVlc3RJbXBsKGF0dHJpYnV0
aW9uLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCmluZGV4IGM2
NzNhZjg0ODgzMmZkMWI3YzA5YjI5MGVhOTdlMTEzYzAyYTI1NjMuLjg2OTc2YTNkMWY2MWNjYTZj
MWFhYjhiMDMzN2RhYmE3MDQxYjZlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApAQCAtNzMsNyArNzMs
OSBAQCBwcml2YXRlOgogICAgIGNvbnN0IFBDTTo6U3RvcmUmIHN0b3JlKCkgY29uc3Q7CiAgICAg
dm9pZCBzdGFydFRpbWVyKFNlY29uZHMpOwogICAgIHZvaWQgZ2V0VG9rZW5QdWJsaWNLZXkoUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uUmVwb3J0RW5kcG9pbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fycmll
ZCwgRnVuY3Rpb248dm9pZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uLCBj
b25zdCBTdHJpbmcmIHB1YmxpY0tleUJhc2U2NFVSTCk+JiYpOwotICAgIHZvaWQgZ2V0U2lnbmVk
VW5saW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpOworICAgIHZvaWQgZ2V0
VG9rZW5QdWJsaWNLZXkoQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlBjbURhdGFDYXJyaWVkLCBGdW5jdGlvbjx2b2lkKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEm
JiwgY29uc3QgU3RyaW5nJiBwdWJsaWNLZXlCYXNlNjRVUkwpPiYmKTsKKyAgICB2b2lkIGdldFNp
Z25lZFVubGlua2FibGVUb2tlbkZvclNvdXJjZShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsK
KyAgICB2b2lkIGdldFNpZ25lZFVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKFNvdXJjZVNp
dGUmJiwgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmJiwgQXR0cmlidXRpb25UcmlnZ2VyRGF0
YSYmLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXImKTsKICAgICB2b2lkIGluc2Vy
dFByaXZhdGVDbGlja01lYXN1cmVtZW50KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9p
bnQpOwogICAgIHZvaWQgYXR0cmlidXRlKFNvdXJjZVNpdGUmJiwgQXR0cmlidXRpb25EZXN0aW5h
dGlvblNpdGUmJiwgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBjb25zdCBBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXImKTsKQEAgLTEwMSwxMCArMTAzLDE0IEBAIHByaXZhdGU6CiAgICAgc3Rk
OjpvcHRpb25hbDxBdHRyaWJ1dGlvblJlcG9ydFRlc3RDb25maWc+IG1fYXR0cmlidXRpb25SZXBv
cnRUZXN0Q29uZmlnOwogCiAgICAgc3RydWN0IFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1ZXMg
ewotICAgICAgICBTdHJpbmcgdW5saW5rYWJsZVRva2VuOwotICAgICAgICBTdHJpbmcgc2VjcmV0
VG9rZW47Ci0gICAgICAgIFN0cmluZyBzaWduYXR1cmU7Ci0gICAgICAgIFN0cmluZyBrZXlJRDsK
KyAgICAgICAgU3RyaW5nIHVubGlua2FibGVUb2tlbkZvclNvdXJjZTsKKyAgICAgICAgU3RyaW5n
IHNlY3JldFRva2VuRm9yU291cmNlOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlRm9yU291cmNl
OworICAgICAgICBTdHJpbmcga2V5SURGb3JTb3VyY2U7CisgICAgICAgIFN0cmluZyB1bmxpbmth
YmxlVG9rZW5Gb3JEZXN0aW5hdGlvbjsKKyAgICAgICAgU3RyaW5nIHNlY3JldFRva2VuRm9yRGVz
dGluYXRpb247CisgICAgICAgIFN0cmluZyBzaWduYXR1cmVGb3JEZXN0aW5hdGlvbjsKKyAgICAg
ICAgU3RyaW5nIGtleUlERm9yRGVzdGluYXRpb247CiAgICAgfTsKIAogICAgIHN0ZDo6b3B0aW9u
YWw8VGVzdGluZ0ZyYXVkUHJldmVudGlvblZhbHVlcz4gbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNG
b3JUZXN0aW5nOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGJlNDg0NzE3ZDRhYjQzN2JlZTY4NjdmMzM4MDg3NGE3YjdjYWZlNzQuLjJkYzY2MzY4
YWQyZDFhMTIyNmFhMDRmMDEwMWRiY2Y0YjhlMTYyMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0xMS0zMCAg
Sm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IFVubGlu
a2FibGUgdG9rZW5zIGZvciB0cmlnZ2VyaW5nIGV2ZW50IHRvIHByZXZlbnQgZnJhdWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3MworICAgICAg
ICA8cmRhcjovLzc5NDI2MzQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5ldyB0ZXN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50LkRlc3RpbmF0aW9u
Q2xpY2tGcmF1ZFByZXZlbnRpb24uCisgICAgICAgIFRoZSBvdGhlciBjaGFuZ2VzIGFyZSBhIHJl
cG9ydCB2ZXJzaW9uIGJ1bXAgMi0+MyBhbmQgYSBuYW1lIGNoYW5nZQorICAgICAgICBGcmF1ZFBy
ZXZlbnRpb27igJM+U291cmNlQ2xpY2tGcmF1ZFByZXZlbnRpb24uCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpy
dW5CYXNpY1BDTVRlc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICAgICBOZXcgdGVzdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5EZXN0aW5hdGlvbkNsaWNrRnJh
dWRQcmV2ZW50aW9uLgorCiAyMDIxLTExLTMwICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBFeHRlbnNpb25UYWJBY3RpdmF0aW9uIGRpYWdu
b3N0aWMgZXZlbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCmluZGV4IDcxNGFmY2FiNGM1ZWQ3
ZjY4NzIwOGNlMmU3MjM0YTkxYWM3ZTg5YzMuLjlhZjJhYWY2MDZjMjNmYzY3YjFkZDUwOWY1YWRk
YzUxODZhNWJjZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcApAQCAtNTgsNyArNTgsNyBA
QCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBWYWxpZE1pblZhbHVlcykKICAgICBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRyaWJ1dGlvbiB7IFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpTb3VyY2VJRChtaW42Qml0VmFsdWUpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNl
U2l0ZSB7IHdlYktpdFVSTCB9LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25E
ZXN0aW5hdGlvblNpdGUgeyBleGFtcGxlVVJMIH0sICJ0ZXN0LmJ1bmRsZS5pZGVudGlmaWVyIiwg
V2FsbFRpbWU6Om5vdygpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25FcGhlbWVyYWw6Ok5vIH07CiAgICAgYXR0cmlidXRpb24uYXR0cmlidXRlQW5kR2V0RWFy
bGllc3RUaW1lVG9TZW5kKFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhKG1pbjZCaXRWYWx1ZSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlByaW9yaXR5KG1p
bjZCaXRWYWx1ZSkpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6SXNSdW5uaW5n
TGF5b3V0VGVzdDo6Tm8pOwogCi0gICAgQVNTRVJUX0VRKGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9u
UmVwb3J0SlNPTigpLT50b0pTT05TdHJpbmcoKSwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5cGVc
IjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwid2Via2l0Lm9yZ1wiLFwic291cmNlX2lkXCI6
MCxcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5jb21cIixcInRyaWdnZXJfZGF0YVwi
OjAsXCJ2ZXJzaW9uXCI6Mn0iKTsKKyAgICBBU1NFUlRfRVEoYXR0cmlidXRpb24uYXR0cmlidXRp
b25SZXBvcnRKU09OKCktPnRvSlNPTlN0cmluZygpLCAie1wic291cmNlX2VuZ2FnZW1lbnRfdHlw
ZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCJ3ZWJraXQub3JnXCIsXCJzb3VyY2VfaWRc
IjowLFwiYXR0cmlidXRlZF9vbl9zaXRlXCI6XCJleGFtcGxlLmNvbVwiLFwidHJpZ2dlcl9kYXRh
XCI6MCxcInZlcnNpb25cIjozfSIpOwogfQogCiBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50
LCBWYWxpZE1pZFZhbHVlcykKQEAgLTY2LDcgKzY2LDcgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgVmFsaWRNaWRWYWx1ZXMpCiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0
cmlidXRpb24geyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQoKHVpbnQzMl90KTE5
MiksIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlIHsgd2ViS2l0VVJMIH0sIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IGV4YW1w
bGVVUkwgfSwgInRlc3QuYnVuZGxlLmlkZW50aWZpZXIiLCBXYWxsVGltZTo6bm93KCksIFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkVwaGVtZXJhbDo6Tm8gfTsK
ICAgICBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKHVpbnQzMl90KTksIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpQcmlvcml0eSgodWludDMyX3QpMjIpKSwgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OklzUnVubmluZ0xheW91dFRlc3Q6Ok5vKTsKIAotICAg
IEFTU0VSVF9FUShhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblJlcG9ydEpTT04oKS0+dG9KU09OU3Ry
aW5nKCksICJ7XCJzb3VyY2VfZW5nYWdlbWVudF90eXBlXCI6XCJjbGlja1wiLFwic291cmNlX3Np
dGVcIjpcIndlYmtpdC5vcmdcIixcInNvdXJjZV9pZFwiOjE5MixcImF0dHJpYnV0ZWRfb25fc2l0
ZVwiOlwiZXhhbXBsZS5jb21cIixcInRyaWdnZXJfZGF0YVwiOjksXCJ2ZXJzaW9uXCI6Mn0iKTsK
KyAgICBBU1NFUlRfRVEoYXR0cmlidXRpb24uYXR0cmlidXRpb25SZXBvcnRKU09OKCktPnRvSlNP
TlN0cmluZygpLCAie1wic291cmNlX2VuZ2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJj
ZV9zaXRlXCI6XCJ3ZWJraXQub3JnXCIsXCJzb3VyY2VfaWRcIjoxOTIsXCJhdHRyaWJ1dGVkX29u
X3NpdGVcIjpcImV4YW1wbGUuY29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjo5LFwidmVyc2lvblwiOjN9
Iik7CiB9CiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFZhbGlkTWF4VmFsdWVzKQpA
QCAtNzQsNyArNzQsNyBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBWYWxpZE1heFZh
bHVlcykKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRyaWJ1dGlvbiB7IFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpTb3VyY2VJRChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNl
SUQ6Ok1heEVudHJvcHkpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSB7IHdl
YktpdFVSTCB9LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlv
blNpdGUgeyBleGFtcGxlVVJMIH0sICJ0ZXN0LmJ1bmRsZS5pZGVudGlmaWVyIiwgV2FsbFRpbWU6
Om5vdygpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25FcGhl
bWVyYWw6Ok5vIH07CiAgICAgYXR0cmlidXRpb24uYXR0cmlidXRlQW5kR2V0RWFybGllc3RUaW1l
VG9TZW5kKFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UHJpb3JpdHkoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlByaW9yaXR5OjpNYXhFbnRyb3B5KSksIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpJc1J1bm5pbmdMYXlvdXRUZXN0OjpObyk7CiAKLSAgICBBU1NFUlRfRVEoYXR0cmlidXRp
b24uYXR0cmlidXRpb25SZXBvcnRKU09OKCktPnRvSlNPTlN0cmluZygpLCAie1wic291cmNlX2Vu
Z2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCJ3ZWJraXQub3JnXCIs
XCJzb3VyY2VfaWRcIjoyNTUsXCJhdHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUuY29tXCIs
XCJ0cmlnZ2VyX2RhdGFcIjoxNSxcInZlcnNpb25cIjoyfSIpOworICAgIEFTU0VSVF9FUShhdHRy
aWJ1dGlvbi5hdHRyaWJ1dGlvblJlcG9ydEpTT04oKS0+dG9KU09OU3RyaW5nKCksICJ7XCJzb3Vy
Y2VfZW5nYWdlbWVudF90eXBlXCI6XCJjbGlja1wiLFwic291cmNlX3NpdGVcIjpcIndlYmtpdC5v
cmdcIixcInNvdXJjZV9pZFwiOjI1NSxcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5j
b21cIixcInRyaWdnZXJfZGF0YVwiOjE1LFwidmVyc2lvblwiOjN9Iik7CiB9CiAKIFRFU1QoUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEVhcmxpZXN0VGltZVRvU2VuZEF0dHJpYnV0aW9uTWluaW11
bURlbGF5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQppbmRl
eCAwN2I1NjJlMWFmNjI5NDY2NDA2OGJjOWZiM2MwMjY3YWQ1YzU0MGMwLi5kYzQzNGY0Yjc5NWI0
NmJiZjlmNjg3YTIyZGNmYWFjOTYyMmFiMWRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRDb2NvYS5tbQpAQCAtODMsNyArODMsNyBAQCBURVNUKFByaXZhdGVDbGlja01l
YXN1cmVtZW50LCBWYWxpZEJsaW5kZWRTZWNyZXQpCiAgICAgRVhQRUNUX1NUUkVRKHNvdXJjZVVu
bGlua2FibGVUb2tlbi0+Z2V0U3RyaW5nKCJzb3VyY2VfZW5nYWdlbWVudF90eXBlIl9zKS51dGY4
KCkuZGF0YSgpLCAiY2xpY2siKTsKICAgICBFWFBFQ1RfU1RSRVEoc291cmNlVW5saW5rYWJsZVRv
a2VuLT5nZXRTdHJpbmcoInNvdXJjZV9ub25jZSJfcykudXRmOCgpLmRhdGEoKSwgIkFCQ0RFRmFi
Y2RlZjAxMjM0NTY3ODkiKTsKICAgICBFWFBFQ1RfRkFMU0Uoc291cmNlVW5saW5rYWJsZVRva2Vu
LT5nZXRTdHJpbmcoInNvdXJjZV91bmxpbmthYmxlX3Rva2VuIl9zKS5pc0VtcHR5KCkpOwotICAg
IEVYUEVDVF9FUShzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmdldEludGVnZXIoInZlcnNpb24iX3Mp
LCAyKTsKKyAgICBFWFBFQ1RfRVEoc291cmNlVW5saW5rYWJsZVRva2VuLT5nZXRJbnRlZ2VyKCJ2
ZXJzaW9uIl9zKSwgMyk7CiAKICAgICAvLyBHZW5lcmF0ZSB0aGUgc2lnbmF0dXJlLgogICAgIGF1
dG8gYmxpbmRlZE1lc3NhZ2UgPSBiYXNlNjRVUkxEZWNvZGUoc291cmNlVW5saW5rYWJsZVRva2Vu
LT5nZXRTdHJpbmcoInNvdXJjZV91bmxpbmthYmxlX3Rva2VuIl9zKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24u
bW0KaW5kZXggZDA2OTVkNGEwNzJmNDA2YTZiM2U4YTZkMzc3ZDgxMjMyYWFlNWNkYy4uZDAzMTcw
M2IzZDkzM2E4MTY0MDc0NDhhNzU5ZmQ1OWVmMDllMDczNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQpA
QCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgcnVuQmFzaWNQQ01UZXN0KFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gKmNvbmZpZ3VyYXRpb24sIEZ1bmN0aW9uPHZvaWQoV0tXZWJWCiAgICAgICAgICAgICAg
ICAgcmVxdWVzdDMuYXBwZW5kKCdcMCcpOwogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0
cm5zdHIocmVxdWVzdDMuZGF0YSgpLCAiUE9TVCAvIEhUVFAvMS4xXHJcbiIsIHJlcXVlc3QzLnNp
emUoKSkpOwogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJvZHlCZWdpbiA9IHN0cm5zdHIo
cmVxdWVzdDMuZGF0YSgpLCAiXHJcblxyXG4iLCByZXF1ZXN0My5zaXplKCkpICsgc3RybGVuKCJc
clxuXHJcbiIpOwotICAgICAgICAgICAgICAgIEVYUEVDVF9TVFJFUShib2R5QmVnaW4sICJ7XCJz
b3VyY2VfZW5nYWdlbWVudF90eXBlXCI6XCJjbGlja1wiLFwic291cmNlX3NpdGVcIjpcIjEyNy4w
LjAuMVwiLFwic291cmNlX2lkXCI6NDIsXCJhdHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUu
Y29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjoxMixcInZlcnNpb25cIjoyfSIpOworICAgICAgICAgICAg
ICAgIEVYUEVDVF9TVFJFUShib2R5QmVnaW4sICJ7XCJzb3VyY2VfZW5nYWdlbWVudF90eXBlXCI6
XCJjbGlja1wiLFwic291cmNlX3NpdGVcIjpcIjEyNy4wLjAuMVwiLFwic291cmNlX2lkXCI6NDIs
XCJhdHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUuY29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjox
MixcInZlcnNpb25cIjozfSIpOwogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIHJ1
bkJhc2ljUENNVGVzdChXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uLCBGdW5j
dGlvbjx2b2lkKFdLV2ViVgogfQogCiAjaWYgSEFWRShSU0FfQlNTQSkKLVRFU1QoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsIEZyYXVkUHJldmVudGlvbikKK1RFU1QoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIFNvdXJjZUNsaWNrRnJhdWRQcmV2ZW50aW9uKQogewogICAgIFtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nOk5PXTsK
ICAgICBib29sIGRvbmUgPSBmYWxzZTsKQEAgLTI3MCw3ICsyNzAsNyBAQCBURVNUKFByaXZhdGVD
bGlja01lYXN1cmVtZW50LCBGcmF1ZFByZXZlbnRpb24pCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKHJlc3BvbnNlKSwgW2Nvbm5lY3Rpb24s
ICZkb25lLCB1bmxpbmthYmxlVG9rZW4sIHRva2VuLCAmc2VjS2V5XSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29u
bmVjdGlvbiwgJmRvbmUsIHVubGlua2FibGVUb2tlbiwgdG9rZW4sICZzZWNLZXldIChWZWN0b3I8
Y2hhcj4mJiByZXF1ZXN0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdDQuZGF0YSgpLCAiUE9TVCAvIEhUVFAvMS4x
XHJcbiIsIHJlcXVlc3Q0LnNpemUoKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdDQuZGF0YSgpLCAie1wic291cmNl
X2VuZ2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCIxMjcuMC4wLjFc
IixcInNvdXJjZV9pZFwiOjQyLFwiYXR0cmlidXRlZF9vbl9zaXRlXCI6XCJleGFtcGxlLmNvbVwi
LFwidHJpZ2dlcl9kYXRhXCI6MTIsXCJ2ZXJzaW9uXCI6MiwiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdDQuZGF0YSgp
LCAie1wic291cmNlX2VuZ2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6
XCIxMjcuMC4wLjFcIixcInNvdXJjZV9pZFwiOjQyLFwiYXR0cmlidXRlZF9vbl9zaXRlXCI6XCJl
eGFtcGxlLmNvbVwiLFwidHJpZ2dlcl9kYXRhXCI6MTIsXCJ2ZXJzaW9uXCI6MywiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0NC5zaXplKCkpKTsK
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShz
dHJuc3RyKHJlcXVlc3Q0LmRhdGEoKSwgdG9rZW4udXRmOCgpLmRhdGEoKSwgcmVxdWVzdDQuc2l6
ZSgpKSk7CkBAIC0zNDUsNiArMzQ1LDE2MCBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50
LCBGcmF1ZFByZXZlbnRpb24pCiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKIH0KKwor
VEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgRGVzdGluYXRpb25DbGlja0ZyYXVkUHJldmVu
dGlvbikKK3sKKyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXROZXR3b3JrUHJvY2Vzc1N1c3Bl
bnNpb25BbGxvd2VkRm9yVGVzdGluZzpOT107CisgICAgYm9vbCBkb25lID0gZmFsc2U7CisKKyAg
ICAvLyBHZW5lcmF0ZSB0aGUgc2VydmVyIGtleSBwYWlyLgorICAgIHNpemVfdCBtb2R1bHVzTkJp
dHMgPSA0MDk2OworICAgIGludCBlcnJvciA9IDA7CisKKyAgICBzdHJ1Y3QgY2Nybmdfc3RhdGUq
IHJuZyA9IGNjcm5nKCZlcnJvcik7CisKKyAgICBjb25zdCB1aW50OF90IGVbXSA9IHsgMHgxLCAw
eDAwLCAweDAxIH07CisgICAgY2Nyc2FfZnVsbF9jdHhfZGVjbChjY25fc2l6ZW9mKG1vZHVsdXNO
Qml0cyksIHJzYVByaXZhdGVLZXkpOworICAgIGVycm9yID0gY2Nyc2FfZ2VuZXJhdGVfa2V5KG1v
ZHVsdXNOQml0cywgcnNhUHJpdmF0ZUtleSwgc2l6ZW9mKGUpLCBlLCBybmcpOworCisgICAgY2Ny
c2FfcHViX2N0eF90IHJzYVB1YmxpY0tleSA9IGNjcnNhX2N0eF9wdWJsaWMocnNhUHJpdmF0ZUtl
eSk7CisgICAgc2l6ZV90IG1vZHVsdXNOQnl0ZXMgPSBjY19jZWlsaW5nKGNjcnNhX3B1YmtleWxl
bmd0aChyc2FQdWJsaWNLZXkpLCA4KTsKKworICAgIHNpemVfdCBleHBvcnRTaXplID0gY2NkZXJf
ZW5jb2RlX3JzYV9wdWJfc2l6ZShyc2FQdWJsaWNLZXkpOworICAgIGF1dG8gcHVibGljS2V5ID0g
YWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRXaXRoTGVuZ3RoOmV4cG9ydFNpemVd
KTsKKyAgICBjY2Rlcl9lbmNvZGVfcnNhX3B1Yihyc2FQdWJsaWNLZXksIHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihbcHVibGljS2V5IG11dGFibGVCeXRlc10pLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
W3B1YmxpY0tleSBtdXRhYmxlQnl0ZXNdKSArIFtwdWJsaWNLZXkgbGVuZ3RoXSk7CisKKyAgICBh
dXRvIHNlY0tleSA9IGFkb3B0Q0YoU2VjS2V5Q3JlYXRlV2l0aERhdGEoKF9fYnJpZGdlIENGRGF0
YVJlZilwdWJsaWNLZXkuZ2V0KCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsKKyAgICAg
ICAgKF9fYnJpZGdlIGlkKWtTZWNBdHRyS2V5VHlwZTogKF9fYnJpZGdlIGlkKWtTZWNBdHRyS2V5
VHlwZVJTQSwKKyAgICAgICAgKF9fYnJpZGdlIGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChfX2JyaWRn
ZSBpZClrU2VjQXR0cktleUNsYXNzUHVibGljCisgICAgfSwgbmlsKSk7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHJhd0tleUJ5dGVzKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwdWJsaWNLZXku
Z2V0KCkuYnl0ZXMpLCBwdWJsaWNLZXkuZ2V0KCkubGVuZ3RoKTsKKyAgICBhdXRvIHdyYXBwZWRL
ZXlCeXRlcyA9IHdyYXBQdWJsaWNLZXlXaXRoUlNBUFNTT0lEKFdURk1vdmUocmF3S2V5Qnl0ZXMp
KTsKKworICAgIGF1dG8ga2V5RGF0YSA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKHdyYXBwZWRL
ZXlCeXRlcy5kYXRhKCksIHdyYXBwZWRLZXlCeXRlcy5zaXplKCkpOworCisgICAgLy8gVGhlIHNl
cnZlci4KKyAgICBIVFRQU2VydmVyIHNlcnZlcihbJmRvbmUsIGNvbm5lY3Rpb25Db3VudCA9IDAs
ICZyc2FQcml2YXRlS2V5LCAmbW9kdWx1c05CeXRlcywgJnJuZywgJmtleURhdGEsICZzZWNLZXld
IChDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKCsrY29u
bmVjdGlvbkNvdW50KSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXSAoVmVjdG9yPGNoYXI+JiYgcmVxdWVzdDEp
IHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QxLmRhdGEoKSwg
IkdFVCAvY29udmVyc2lvblJlcXVlc3RCZWZvcmVSZWRpcmVjdCBIVFRQLzEuMVxyXG4iLCByZXF1
ZXN0MS5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWRpcmVjdCA9ICJI
VFRQLzEuMSAzMDIgRm91bmRcclxuIgorICAgICAgICAgICAgICAgICAgICAiTG9jYXRpb246IC8u
d2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3RyaWdnZXItYXR0cmlidXRpb24v
MTI/YXR0cmlidXRpb25EZXN0aW5hdGlvbk5vbmNlPUFCQ0RFRmFiY2RlZjAxMjM0NTY3ODlcclxu
IgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuXHJcbiI7CisgICAg
ICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKHJlZGlyZWN0LCBbY29ubmVjdGlvbl0geworICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlv
bl0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QyLmRhdGEoKSwgIkdFVCAvLndlbGwta25vd24vcHJp
dmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9uLzEyP2F0dHJpYnV0aW9u
RGVzdGluYXRpb25Ob25jZT1BQkNERUZhYmNkZWYwMTIzNDU2Nzg5IEhUVFAvMS4xXHJcbiIsIHJl
cXVlc3QyLnNpemUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVz
cG9uc2UgPSAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQ29udGVudC1MZW5ndGg6IDBcclxuXHJcbiI7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b25uZWN0aW9uLnNlbmQocmVzcG9uc2UpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtj
b25uZWN0aW9uLCAmcnNhUHJpdmF0ZUtleSwgJm1vZHVsdXNOQnl0ZXMsICZybmcsICZrZXlEYXRh
LCAmZG9uZSwgJnNlY0tleV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QxKSB7CisgICAgICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0MS5kYXRhKCksICJHRVQgLyBIVFRQLzEu
MVxyXG4iLCByZXF1ZXN0MS5zaXplKCkpKTsKKworICAgICAgICAgICAgICAgIC8vIEV4YW1wbGUg
cmVzcG9uc2U6IHsgInRva2VuX3B1YmxpY19rZXkiOiAiQUJDRCIgfS4gIkFCQ0QiIHNob3VsZCBi
ZSBCYXNlNjRVUkwgZW5jb2RlZC4KKyAgICAgICAgICAgICAgICBhdXRvIHJlc3BvbnNlID0gbWFr
ZVN0cmluZygiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRl
bnQtVHlwZTogYXBwbGljYXRpb24vanNvblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250
ZW50LUxlbmd0aDogIiwgMjQgKyBrZXlEYXRhLmxlbmd0aCgpLCAiXHJcblxyXG4iCisgICAgICAg
ICAgICAgICAgICAgICJ7XCJ0b2tlbl9wdWJsaWNfa2V5XCI6IFwiIiwga2V5RGF0YSwgIlwifSIp
OworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKHJlc3BvbnNlKSwgW2Nv
bm5lY3Rpb24sICZyc2FQcml2YXRlS2V5LCAmbW9kdWx1c05CeXRlcywgJnJuZywgJmtleURhdGEs
ICZkb25lLCAmc2VjS2V5XSB7CisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2
ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uLCAmcnNhUHJpdmF0ZUtleSwgJm1vZHVsdXNOQnl0ZXMs
ICZybmcsICZrZXlEYXRhLCAmZG9uZSwgJnNlY0tleV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3Qy
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3Qy
LmRhdGEoKSwgIlBPU1QgLyBIVFRQLzEuMVxyXG4iLCByZXF1ZXN0Mi5zaXplKCkpKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byByZXF1ZXN0MlN0cmluZyA9IFN0cmluZyhyZXF1ZXN0
Mi5kYXRhKCksIHJlcXVlc3QyLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRv
IGtleSA9IFN0cmluZygiZGVzdGluYXRpb25fdW5saW5rYWJsZV90b2tlbiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBzdGFydCA9IHJlcXVlc3QyU3RyaW5nLmZpbmQoa2V5KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICs9IGtleS5sZW5ndGgoKSArIDM7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGVuZCA9IHJlcXVlc3QyU3RyaW5nLmZpbmQoJyInLCBzdGFy
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHRva2VuID0gcmVxdWVzdDJTdHJpbmcu
c3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFydCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gYmxpbmRlZE1lc3NhZ2UgPSBiYXNlNjRVUkxEZWNvZGUodG9rZW4pOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY2Nyc2Fic3NhX2NpcGhlcnN1aXRlICpjaXBo
ZXJzdWl0ZSA9ICZjY3JzYWJzc2FfY2lwaGVyc3VpdGVfcnNhNDA5Nl9zaGEzODQ7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGJsaW5kZWRTaWduYXR1cmUgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGF0YSBhbGxvY10gaW5pdFdpdGhMZW5ndGg6bW9kdWx1c05CeXRlc10pOworICAgICAgICAg
ICAgICAgICAgICAgICAgY2Nyc2Fic3NhX3NpZ25fYmxpbmRlZF9tZXNzYWdlKGNpcGhlcnN1aXRl
LCByc2FQcml2YXRlS2V5LCBibGluZGVkTWVzc2FnZS0+ZGF0YSgpLCBibGluZGVkTWVzc2FnZS0+
c2l6ZSgpLCBzdGF0aWNfY2FzdDx1aW50OF90ICo+KFtibGluZGVkU2lnbmF0dXJlIG11dGFibGVC
eXRlc10pLCBbYmxpbmRlZFNpZ25hdHVyZSBsZW5ndGhdLCBybmcpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byB1bmxpbmthYmxlVG9rZW4gPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhb
YmxpbmRlZFNpZ25hdHVyZSBieXRlc10sIFtibGluZGVkU2lnbmF0dXJlIGxlbmd0aF0pOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGFtcGxlIHJlc3BvbnNlOiB7ICJ1bmxpbmthYmxl
X3Rva2VuIjogIkFCQ0QiIH0uICJBQkNEIiBzaG91bGQgYmUgQmFzZTY0VVJMIGVuY29kZWQuCisg
ICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3BvbnNlID0gbWFrZVN0cmluZygiSFRUUC8x
LjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBl
OiBhcHBsaWNhdGlvbi9qc29uXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29u
dGVudC1MZW5ndGg6ICIsIDI0ICsgdW5saW5rYWJsZVRva2VuLmxlbmd0aCgpLCAiXHJcblxyXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcInVubGlua2FibGVfdG9rZW5cIjogXCIi
LCB1bmxpbmthYmxlVG9rZW4sICJcIn0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb24uc2VuZChXVEZNb3ZlKHJlc3BvbnNlKSwgW2Nvbm5lY3Rpb24sICZrZXlEYXRhLCAmZG9u
ZSwgdW5saW5rYWJsZVRva2VuLCB0b2tlbiwgJnNlY0tleV0geworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uLCAma2V5
RGF0YSwgJmRvbmUsIHVubGlua2FibGVUb2tlbiwgdG9rZW4sICZzZWNLZXldIChWZWN0b3I8Y2hh
cj4mJiByZXF1ZXN0MykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShzdHJuc3RyKHJlcXVlc3QzLmRhdGEoKSwgIkdFVCAvIEhUVFAvMS4xXHJcbiIsIHJlcXVl
c3QzLnNpemUoKSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV4YW1w
bGUgcmVzcG9uc2U6IHsgInRva2VuX3B1YmxpY19rZXkiOiAiQUJDRCIgfS4gIkFCQ0QiIHNob3Vs
ZCBiZSBCYXNlNjRVUkwgZW5jb2RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byByZXNwb25zZSA9IG1ha2VTdHJpbmcoIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9q
c29uXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxl
bmd0aDogIiwgMjQgKyBrZXlEYXRhLmxlbmd0aCgpLCAiXHJcblxyXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAie1widG9rZW5fcHVibGljX2tleVwiOiBcIiIsIGtleURh
dGEsICJcIn0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5z
ZW5kKFdURk1vdmUocmVzcG9uc2UpLCBbY29ubmVjdGlvbiwgJmRvbmUsIHVubGlua2FibGVUb2tl
biwgdG9rZW4sICZzZWNLZXldIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uLCAmZG9uZSwgdW5saW5r
YWJsZVRva2VuLCB0b2tlbiwgJnNlY0tleV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3Q0KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0
cihyZXF1ZXN0NC5kYXRhKCksICJQT1NUIC8gSFRUUC8xLjFcclxuIiwgcmVxdWVzdDQuc2l6ZSgp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUo
c3RybnN0cihyZXF1ZXN0NC5kYXRhKCksICJ7XCJzb3VyY2VfZW5nYWdlbWVudF90eXBlXCI6XCJj
bGlja1wiLFwic291cmNlX3NpdGVcIjpcIjEyNy4wLjAuMVwiLFwic291cmNlX2lkXCI6NDIsXCJh
dHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUuY29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjoxMixc
InZlcnNpb25cIjozLCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Q0LnNpemUoKSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0cm5zdHIocmVxdWVzdDQuZGF0YSgpLCB0b2tlbi51dGY4
KCkuZGF0YSgpLCByZXF1ZXN0NC5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RybnN0cihyZXF1ZXN0NC5kYXRhKCksIHVubGlu
a2FibGVUb2tlbi51dGY4KCkuZGF0YSgpLCByZXF1ZXN0NC5zaXplKCkpKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVxdWVzdDRTdHJpbmcgPSBTdHJp
bmcocmVxdWVzdDQuZGF0YSgpLCByZXF1ZXN0NC5zaXplKCkpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBrZXkgPSBTdHJpbmcoImRlc3RpbmF0aW9uX3Nl
Y3JldF90b2tlbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8gc3RhcnQgPSByZXF1ZXN0NFN0cmluZy5maW5kKGtleSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhcnQgKz0ga2V5Lmxlbmd0aCgpICsgMzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGVuZCA9IHJlcXVlc3Q0U3RyaW5n
LmZpbmQoJyInLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXV0byB0b2tlbiA9IHJlcXVlc3Q0U3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3Rh
cnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdG9rZW5W
ZWN0b3IgPSBiYXNlNjRVUkxEZWNvZGUodG9rZW4pOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gdG9rZW5EYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCeXRlczp0b2tlblZlY3Rvci0+ZGF0YSgpIGxlbmd0aDp0b2tlblZlY3Rvci0+c2l6
ZSgpXSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSBT
dHJpbmcoImRlc3RpbmF0aW9uX3NlY3JldF90b2tlbl9zaWduYXR1cmUiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IHJlcXVlc3Q0U3RyaW5nLmZpbmQo
a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCArPSBr
ZXkubGVuZ3RoKCkgKyAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuZCA9IHJlcXVlc3Q0U3RyaW5nLmZpbmQoJyInLCBzdGFydCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBzaWduYXR1cmUgPSByZXF1ZXN0NFN0cmluZy5z
dWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvIHNpZ25hdHVyZVZlY3RvciA9IGJhc2U2NFVSTERlY29kZShzaWdu
YXR1cmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gc2ln
bmF0dXJlRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6c2lnbmF0
dXJlVmVjdG9yLT5kYXRhKCkgbGVuZ3RoOnNpZ25hdHVyZVZlY3Rvci0+c2l6ZSgpXSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShTZWNLZXlW
ZXJpZnlTaWduYXR1cmUoc2VjS2V5LmdldCgpLCBrU2VjS2V5QWxnb3JpdGhtUlNBU2lnbmF0dXJl
TWVzc2FnZVBTU1NIQTM4NCwgKF9fYnJpZGdlIENGRGF0YVJlZil0b2tlbkRhdGEuZ2V0KCksIChf
X2JyaWRnZSBDRkRhdGFSZWYpc2lnbmF0dXJlRGF0YS5nZXQoKSwgTlVMTCkpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKyAgICBOU1VSTCAqc2VydmVyVVJMID0g
c2VydmVyLnJlcXVlc3QoKS5VUkw7CisKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3V2l0aG91
dFVzaW5nRGFlbW9uKCk7CisgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZUFsbG93aW5nQWxsVExTKCk7CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndl
YnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107Cisg
ICAgW3dlYlZpZXcgX2FkZEV2ZW50QXR0cmlidXRpb25XaXRoU291cmNlSUQ6NDIgZGVzdGluYXRp
b25VUkw6ZXhhbXBsZVVSTCgpIHNvdXJjZURlc2NyaXB0aW9uOkAidGVzdCBzb3VyY2UgZGVzY3Jp
cHRpb24iIHB1cmNoYXNlcjpAInRlc3QgcHVyY2hhc2VyIiByZXBvcnRFbmRwb2ludDpzZXJ2ZXJV
Ukwgb3B0aW9uYWxOb25jZTpuaWwgYXBwbGljYXRpb25CdW5kbGVJRDpAInRlc3QuYnVuZGxlLmlk
IiBlcGhlbWVyYWw6Tk9dOworICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0
YVN0b3JlIF90cnVzdFNlcnZlckZvckxvY2FsUENNVGVzdGluZzpzZWNUcnVzdEZyb21DZXJ0aWZp
Y2F0ZUNoYWluKEBbKGlkKXRlc3RDZXJ0aWZpY2F0ZSgpLmdldCgpXSkuZ2V0KCldOworCisgICAg
W3dlYlZpZXcgX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxz
Rm9yVGVzdGluZzpzZXJ2ZXJVUkwgZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTCgpIGNvbXBsZXRp
b25IYW5kbGVyOl57CisgICAgICAgIFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nOllFUyBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAg
ICAgICAgW3dlYlZpZXcgX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25Ub2tl
blB1YmxpY0tleVVSTEZvclRlc3Rpbmc6c2VydmVyVVJMIGNvbXBsZXRpb25IYW5kbGVyOl57Cisg
ICAgICAgICAgICAgICAgW3dlYlZpZXcgX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25Ub2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc6c2VydmVyVVJMIGNvbXBsZXRpb25IYW5k
bGVyOl57CisgICAgICAgICAgICAgICAgICAgIFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEFwcEJ1bmRsZUlERm9yVGVzdGluZzpAInRlc3QuYnVuZGxlLmlkIiBjb21wbGV0aW9u
SGFuZGxlcjpeeworICAgICAgICAgICAgICAgICAgICAgICAgTlNTdHJpbmcgKmh0bWwgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+c2V0VGltZW91dChmdW5jdGlvbigpeyBm
ZXRjaCgnJUBjb252ZXJzaW9uUmVxdWVzdEJlZm9yZVJlZGlyZWN0Jyx7bW9kZTonbm8tY29ycyd9
KTsgfSwgMTAwKTs8L3NjcmlwdD4iLCBzZXJ2ZXJVUkxdOworICAgICAgICAgICAgICAgICAgICAg
ICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbCBiYXNlVVJMOmV4YW1wbGVVUkwoKV07Cisg
ICAgICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAg
fV07CisgICAgICAgIH1dOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CiAjZW5k
aWYKIAogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgQmFzaWMpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmUzNGEw
NmYxZDAxZDAyOGE2OTM0MzNhNGI3YjRkNTFjNTVkNDM1ZC4uMzE5YWFjZDBmNGE2MzY4MzU1OTVk
ZWJhNGU2MWEzYWM5NTZlZGZmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTExLTMwICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogVW5saW5r
YWJsZSB0b2tlbnMgZm9yIHRyaWdnZXJpbmcgZXZlbnQgdG8gcHJldmVudCBmcmF1ZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjczCisgICAgICAg
IDxyZGFyOi8vNzk0MjYzNDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlc2UgY2hhbmdlcyBhcmUgYSByZXBvcnQgdmVyc2lvbiBidW1wIDItPjMu
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L2F0dHJpYnV0
aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1mZXRjaC1rZWVwYWxpdmUtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvZXhwaXJlZC1hdHRyaWJ1
dGlvbi1yZXBvcnQtZ2V0cy1zZW50LW9uLXNlc3Npb24tc3RhcnQtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvbXVsdGlwbGUtYXBwLWJ1
bmRsZS1pZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUt
cHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC90cmlnZ2VyaW5n
LWV2ZW50LXdpdGgtYXR0cmlidXRpb24tc291cmNlLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4
cGVjdGVkLnR4dDoKKwogMjAyMS0xMS0zMCAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5j
b20+CiAKICAgICAgICAgWyBCaWdTdXIrIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWwgaXMgY29uc2lz
dGVudGx5IGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWZldGNoLWtl
ZXBhbGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1mZXRjaC1rZWVwYWxp
dmUtZXhwZWN0ZWQudHh0CmluZGV4IDJkMWExNjA1YmE0YWM5YjY1NWYxM2EzNjY4YzQ2NzgxYzMx
M2QxMDQuLjdhOTg4ZDRiODMxNWYyMjA2YTNkYzRjMzg3YjBmNmVkMThiOTY5YTIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmli
dXRpb24tY29udmVyc2lvbi10aHJvdWdoLWZldGNoLWtlZXBhbGl2ZS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRd
IENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwgcGF0aCBjb250YWlu
ZWQgdW5yZWNvZ25pemVkIHBhcnRzLgorQ09OU09MRSBNRVNTQUdFOiBbUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhl
IFVSTCBwYXRoIGNvbnRhaW5lZCB1bnJlY29nbml6ZWQgcGFydHMuCiBDT05TT0xFIE1FU1NBR0U6
IE9yaWdpbiBodHRwOi8vMTI3LjAuMC4xOjgwMDAgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNv
bnRyb2wtQWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogNDA0CiBDT05TT0xFIE1FU1NBR0U6IEZl
dGNoIEFQSSBjYW5ub3QgbG9hZCBodHRwczovLzEyNy4wLjAuMTo4NDQzLy53ZWxsLWtub3duL3By
aXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi93aGF0ZXZlciBkdWUg
dG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgogVGVzdHMgdHJpZ2dlcmluZyBvZiBwcml2YXRlIGNs
aWNrIG1lYXN1cmVtZW50IGF0dHJpYnV0aW9ucyB3aXRoIGZldGNoIG9uIHBhZ2VoaWRlLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9l
eHBpcmVkLWF0dHJpYnV0aW9uLXJlcG9ydC1nZXRzLXNlbnQtb24tc2Vzc2lvbi1zdGFydC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50
L2V4cGlyZWQtYXR0cmlidXRpb24tcmVwb3J0LWdldHMtc2VudC1vbi1zZXNzaW9uLXN0YXJ0LWV4
cGVjdGVkLnR4dAppbmRleCBjM2Q5MjlhYWM1NjYxYzY5MWQ0YzM1Y2Q5NGJhYmU3N2I3YmFlOWQ0
Li4wMGNmZmQ5OTRhNjIwNWUyM2FiMGM0NmM1NGUxYTYwNDg3NGY1N2Y2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L2V4cGlyZWQtYXR0
cmlidXRpb24tcmVwb3J0LWdldHMtc2VudC1vbi1zZXNzaW9uLXN0YXJ0LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L2V4cGly
ZWQtYXR0cmlidXRpb24tcmVwb3J0LWdldHMtc2VudC1vbi1zZXNzaW9uLXN0YXJ0LWV4cGVjdGVk
LnR4dApAQCAtMTEsNyArMTEsNyBAQCBDb250ZW50IHR5cGU6IGFwcGxpY2F0aW9uL2pzb24KIFJF
UVVFU1RfVVJJOiAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2NvbnZlcnNpb25S
ZXBvcnQucHkKIE5vIGNvb2tpZXMgaW4gYXR0cmlidXRpb24gcmVxdWVzdC4KIFJlcXVlc3QgYm9k
eToKLXsic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIxMjcu
MC4wLjEiLCJzb3VyY2VfaWQiOjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRy
aWdnZXJfZGF0YSI6MTIsInZlcnNpb24iOjJ9Cit7InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJj
bGljayIsInNvdXJjZV9zaXRlIjoiMTI3LjAuMC4xIiwic291cmNlX2lkIjozLCJhdHRyaWJ1dGVk
X29uX3NpdGUiOiJsb2NhbGhvc3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjozfQogCiAK
IE5vIHN0b3JlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IGRhdGEuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L211bHRpcGxlLWFw
cC1idW5kbGUtaWRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvbXVsdGlwbGUtYXBwLWJ1bmRsZS1pZHMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGZhM2E1ZjQ5MDIwODRmOTQ1NjNiMDMzZjI2OTc0Mjg3MGE2OTI0MjcuLmU1YjdmMTc4ZWE0
ZTYzOGNhYzY0MDBlYWM3YzNlMTQ2YzZiNjBiZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvbXVsdGlwbGUtYXBwLWJ1bmRsZS1pZHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvbXVsdGlwbGUtYXBwLWJ1bmRsZS1pZHMtZXhwZWN0ZWQudHh0CkBAIC0xMiw3ICsx
Miw3IEBAIENvbnRlbnQgdHlwZTogYXBwbGljYXRpb24vanNvbgogUkVRVUVTVF9VUkk6IC9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5weT9yZWNpcGll
bnQ9Q2xpY2tTb3VyY2UKIE5vIGNvb2tpZXMgaW4gYXR0cmlidXRpb24gcmVxdWVzdC4KIFJlcXVl
c3QgYm9keToKLXsic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUi
OiIxMjcuMC4wLjEiLCJzb3VyY2VfaWQiOjMzLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2NhbGhv
c3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjoyfQoreyJzb3VyY2VfZW5nYWdlbWVudF90
eXBlIjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6MzMsImF0
dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZlcnNpb24i
OjN9CiAKIAogLS0tLS0tLS0KQEAgLTI0LDcgKzI0LDcgQEAgQ29udGVudCB0eXBlOiBhcHBsaWNh
dGlvbi9qc29uCiBSRVFVRVNUX1VSSTogL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNl
cy9jb252ZXJzaW9uUmVwb3J0LnB5P3JlY2lwaWVudD1DbGlja0Rlc3RpbmF0aW9uCiBObyBjb29r
aWVzIGluIGF0dHJpYnV0aW9uIHJlcXVlc3QuCiBSZXF1ZXN0IGJvZHk6Ci17InNvdXJjZV9lbmdh
Z2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9zaXRlIjoiMTI3LjAuMC4xIiwic291cmNlX2lk
IjozMywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwi
dmVyc2lvbiI6Mn0KK3sic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3Np
dGUiOiIxMjcuMC4wLjEiLCJzb3VyY2VfaWQiOjMzLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2Nh
bGhvc3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjozfQogCiBVbmF0dHJpYnV0ZWQgUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudHM6CiBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCAxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1
cmVtZW50L3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc2VuZC1hdHRy
aWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0CmluZGV4IGU2YWQ5MTE3Mzhm
YThlMTk3MzBjYTliNDNlZGI5ZjJmMDAzYmRlYTUuLjEyNzEzYjY2OTZlMDIyZTFhNjFjZmE2ZDVh
ZTUyMjM5MWUyNDVmMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0CkBA
IC0xNiw3ICsxNiw3IEBAIENvbnRlbnQgdHlwZTogYXBwbGljYXRpb24vanNvbgogUkVRVUVTVF9V
Ukk6IC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5w
eT9yZWNpcGllbnQ9Q2xpY2tTb3VyY2UKIE5vIGNvb2tpZXMgaW4gYXR0cmlidXRpb24gcmVxdWVz
dC4KIFJlcXVlc3QgYm9keToKLXsic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291
cmNlX3NpdGUiOiIxMjcuMC4wLjEiLCJzb3VyY2VfaWQiOjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6
ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZlcnNpb24iOjJ9Cit7InNvdXJjZV9lbmdh
Z2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9zaXRlIjoiMTI3LjAuMC4xIiwic291cmNlX2lk
IjozLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2NhbGhvc3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2
ZXJzaW9uIjozfQogCiAKIC0tLS0tLS0tCkBAIC0yOCw3ICsyOCw3IEBAIENvbnRlbnQgdHlwZTog
YXBwbGljYXRpb24vanNvbgogUkVRVUVTVF9VUkk6IC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9y
ZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5weT9yZWNpcGllbnQ9Q2xpY2tEZXN0aW5hdGlvbgog
Tm8gY29va2llcyBpbiBhdHRyaWJ1dGlvbiByZXF1ZXN0LgogUmVxdWVzdCBib2R5OgoteyJzb3Vy
Y2VfZW5nYWdlbWVudF90eXBlIjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNv
dXJjZV9pZCI6MywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRh
IjoxMiwidmVyc2lvbiI6Mn0KK3sic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291
cmNlX3NpdGUiOiIxMjcuMC4wLjEiLCJzb3VyY2VfaWQiOjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6
ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZlcnNpb24iOjN9CiAKIAogLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50
L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UtZXhwZWN0
ZWQudHh0CmluZGV4IGFmMDE5ZDhhMDk5NWNiMWE4NTcyZWE0MGE1ZTBhODY2ZWM4NGEyZjAuLmQx
N2RlNDQ4NjExNTRhMWJkMzMzNzlhZjYwMzBiNjliNTY4ZmI5OWIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1j
bGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9zdG9yZS1wcml2YXRl
LWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLWV4cGVjdGVkLnR4dApAQCAtMTgs
NyArMTgsNyBAQCBDb250ZW50IHR5cGU6IGFwcGxpY2F0aW9uL2pzb24KIFJFUVVFU1RfVVJJOiAv
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwu
cHkKIE5vIGNvb2tpZXMgaW4gdG9rZW4gc2lnbmluZyByZXF1ZXN0LgogUmVxdWVzdCBib2R5Ogot
eyJzb3VyY2VfZW5nYWdlbWVudF90eXBlIjoiY2xpY2siLCJzb3VyY2Vfbm9uY2UiOiJBQkNERUZh
YmNkZWYwMTIzNDU2Nzg5Iiwic291cmNlX3VubGlua2FibGVfdG9rZW4iOiJ1bmxpbmthYmxlVG9r
ZW4iLCJ2ZXJzaW9uIjoyfQoreyJzb3VyY2VfZW5nYWdlbWVudF90eXBlIjoiY2xpY2siLCJzb3Vy
Y2Vfbm9uY2UiOiJBQkNERUZhYmNkZWYwMTIzNDU2Nzg5Iiwic291cmNlX3VubGlua2FibGVfdG9r
ZW4iOiJ1bmxpbmthYmxlVG9rZW4iLCJ2ZXJzaW9uIjozfQogUkVRVUVTVF9NRVRIT0Q6IEdFVAog
SFRUUF9IT1NUOiAxMjcuMC4wLjE6ODAwMAogUkVRVUVTVF9VUkk6IC9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2ZW50aW9uVGVzdFVSTC5weQpAQCAtMzEsNyArMzEs
NyBAQCBDb250ZW50IHR5cGU6IGFwcGxpY2F0aW9uL2pzb24KIFJFUVVFU1RfVVJJOiAvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwucHkKIE5v
IGNvb2tpZXMgaW4gdG9rZW4gc2lnbmluZyByZXF1ZXN0LgogUmVxdWVzdCBib2R5OgoteyJzb3Vy
Y2VfZW5nYWdlbWVudF90eXBlIjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNv
dXJjZV9pZCI6MywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRh
IjoxMiwidmVyc2lvbiI6Miwic291cmNlX3NlY3JldF90b2tlbiI6InNlY3JldFRva2VuIiwic291
cmNlX3NlY3JldF90b2tlbl9zaWduYXR1cmUiOiJzaWduYXR1cmUifQoreyJzb3VyY2VfZW5nYWdl
bWVudF90eXBlIjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6
MywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwidmVy
c2lvbiI6Mywic291cmNlX3NlY3JldF90b2tlbiI6InNlY3JldFRva2VuIiwic291cmNlX3NlY3Jl
dF90b2tlbl9zaWduYXR1cmUiOiJzaWduYXR1cmUifQogCiAKIE5vIHN0b3JlZCBQcml2YXRlIENs
aWNrIE1lYXN1cmVtZW50IGRhdGEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3RyaWdnZXJpbmctZXZlbnQtd2l0aC1hdHRyaWJ1dGlv
bi1zb3VyY2UtdGhyb3VnaC1mZXRjaC1rZWVwYWxpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC90cmlnZ2VyaW5nLWV2ZW50LXdp
dGgtYXR0cmlidXRpb24tc291cmNlLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4
dAppbmRleCA1YTlmZDNhYmM4MWE5ZmNlODE1NjRmMjI3YWU3Mjk3YzkyMzQwYjMxLi4wMjgyNDc5
ODliOTlmY2ZiMWE2NWVkZmFiNDgwYTQ3YTgyMzA1MTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3RyaWdnZXJpbmctZXZlbnQtd2l0
aC1hdHRyaWJ1dGlvbi1zb3VyY2UtdGhyb3VnaC1mZXRjaC1rZWVwYWxpdmUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvdHJp
Z2dlcmluZy1ldmVudC13aXRoLWF0dHJpYnV0aW9uLXNvdXJjZS10aHJvdWdoLWZldGNoLWtlZXBh
bGl2ZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IFtQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVz
ZSB0aGUgY29udmVyc2lvbiBkYXRhIGNvdWxkIG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0
aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gb2YgMTUuCitDT05TT0xFIE1FU1NBR0U6IFtQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVj
YXVzZSB0aGUgY29udmVyc2lvbiBkYXRhIGNvdWxkIG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hl
ciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gb2YgMTUuCiBDT05TT0xFIE1FU1NBR0U6IE9yaWdp
biBodHRwOi8vbG9jYWxob3N0OjgwMDAgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNvbnRyb2wt
QWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogNDA0CiBDT05TT0xFIE1FU1NBR0U6IEZldGNoIEFQ
SSBjYW5ub3QgbG9hZCBodHRwczovL2xvY2FsaG9zdDo4NDQzLy53ZWxsLWtub3duL3ByaXZhdGUt
Y2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi9EdW1teT9hdHRyaWJ1dGlvblNv
dXJjZT1odHRwczovLzEyNy4wLjAuMSBkdWUgdG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgogVGVz
dHMgdHJpZ2dlcmluZyBvZiBwcml2YXRlIGNsaWNrIG1lYXN1cmVtZW50IGF0dHJpYnV0aW9uIHdp
dGggc2FtZS1zaXRlIHRyaWdnZXJpbmcgZXZlbnQgcmVxdWVzdC4K
</data>
<flag name="commit-queue"
          id="470708"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445509</attachid>
            <date>2021-11-30 20:48:23 -0800</date>
            <delta_ts>2021-11-30 22:03:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233673-20211130204822.patch</filename>
            <type>text/plain</type>
            <size>109479</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRlNDYyN2I5OTJhMTMz
YWM4NTAzZWY3MmE1ZmJmZGE1MGJhNTdiYi4uMDY3MDM5NTIwYjM1MTIyYzUyMzRiNzMwZmJlZmU0
MTJkYzI5ZjJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIxLTExLTMwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogVW5saW5rYWJs
ZSB0b2tlbnMgZm9yIHRyaWdnZXJpbmcgZXZlbnQgdG8gcHJldmVudCBmcmF1ZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjczCisgICAgICAgIDxy
ZGFyOi8vNzk0MjYzNDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgdHJpZ2dlcmluZyBldmVudHMgdG8gaGF2ZSBhbiBv
cHRpb25hbCBxdWVyeSBwYXJhbWV0ZXIgbGlrZSB0aGlzOgorICAgICAgICBodHRwczovL2Rlc3Rp
bmF0aW9uLmV4YW1wbGUvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmln
Z2VyLWF0dHJpYnV0aW9uLzExP2F0dHJpYnV0aW9uRGVzdGluYXRpb25Ob25jZT1BQkNERUZhYmNk
ZWYwMTIzNDU2Nzg5CisKKyAgICAgICAgVGhlIHByZXNlbmNlIG9mIGFuIGF0dHJpYnV0aW9uRGVz
dGluYXRpb25Ob25jZSB0cmlnZ2VycyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIgdG8K
KyAgICAgICAgYXNrIHRoZSBzZXJ2ZXIgdG8gc2lnbiBhbiB1bmxpbmthYmxlIHRva2VuIGZvciB0
aGUgdHJpZ2dlcmluZyBldmVudCBhbmQgdGhlbiBzdG9yZXMgdGhlCisgICAgICAgIGNvcnJlc3Bv
bmRpbmcgc2VjcmV0IHRva2VuIHBsdXMgdGhlIHNpZ25hdHVyZSBmb3IgbGF0ZXIgaW5jbHVzaW9u
IGluIHRoZSBhdHRyaWJ1dGlvbiByZXBvcnQuCisKKyAgICAgICAgVGhlIFdlYkNvcmUgY2hhbmdl
cyBpbnRyb2R1Y2UgdGhlc2UgbmV3IHN0cnVjdHMgYW5kIGRhdGEgZmllbGRzIGluCisgICAgICAg
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OgorICAgICAgICAtIEVwaGVtZXJhbERl
c3RpbmF0aW9uTm9uY2UKKyAgICAgICAgLSBVbmxpbmthYmxlVG9rZW4gKGJhc2UgY2xhc3MgZm9y
IHRoZSBzcGVjaWZpYyBvbmVzIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uKQorICAgICAgICAt
IFNvdXJjZVVubGlua2FibGVUb2tlbgorICAgICAgICAtIERlc3RpbmF0aW9uVW5saW5rYWJsZVRv
a2VuCisgICAgICAgIC0gU2VjcmV0VG9rZW4gKGJhc2UgY2xhc3MgZm9yIHRoZSBzcGVjaWZpYyBv
bmVzIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uKQorICAgICAgICAtIFNvdXJjZVNlY3JldFRv
a2VuCisgICAgICAgIC0gRGVzdGluYXRpb25TZWNyZXRUb2tlbgorCisgICAgICAgIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIG5vdyBoYXMg
dGhlc2Ugb3B0aW9uYWwgZmllbGRzOgorICAgICAgICAtIGVwaGVtZXJhbERlc3RpbmF0aW9uTm9u
Y2UKKyAgICAgICAgLSBkZXN0aW5hdGlvblVubGlua2FibGVUb2tlbgorICAgICAgICAtIGRlc3Rp
bmF0aW9uU2VjcmV0VG9rZW4KKyAgICAgICAgLSBkZXN0aW5hdGlvblNpdGUKKworICAgICAgICBU
aGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIHNldHRlcnMvZ2V0dGVycyBhbmQgY3JlYXRvciBmdW5j
dGlvbnMgZm9yIHRob3NlIGRhdGEgZmllbGRzLgorCisgICAgICAgIE5ldyBBUEkvdW5pdCB0ZXN0
IFByaXZhdGVDbGlja01lYXN1cmVtZW50LkRlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZlbnRpb24u
CisKKyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZVNlY3JldFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNvbGF0
ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVx
dWVzdFF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojpw
YXJzZUF0dHJpYnV0aW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6YXR0cmlidXRpb25SZXBvcnRKU09OIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNWYWxp
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBo
ZW1lcmFsRGVzdGluYXRpb25Ob25jZTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNOb25jZVZhbGlkKToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblB1YmxpY0tleVVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5QdWJsaWNLZXlVUkwgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2ln
bmF0dXJlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0
b2tlblNpZ25hdHVyZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6dG9rZW5TaWduYXR1cmVKU09OIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRU
b2tlbjo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6c2V0RGVzdGluYXRpb25TZWNyZXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46OmlzVmFsaWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJp
Z2dlckRhdGE6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OnNldERlc3RpbmF0
aW9uVW5saW5rYWJsZVRva2VuVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OnNldERlc3RpbmF0aW9uU2VjcmV0
VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uVHJpZ2dlckRhdGE6OnRva2VuUHVibGljS2V5VVJMIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjp0
b2tlblNpZ25hdHVyZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6c291cmNlVW5saW5rYWJsZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVt
ZXJhbERlc3RpbmF0aW9uTm9uY2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2FibGVUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlRGVz
dGluYXRpb25VbmxpbmthYmxlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVVubGlua2FibGVUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlU291
cmNlU2VjcmV0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uU2VjcmV0VG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNlY3Jl
dFRva2VuKToKKwogMjAyMS0xMS0zMCAgR2FicmllbCBOYXZhIE1hcmlubyAgPGduYXZhbWFyaW5v
QGFwcGxlLmNvbT4KIAogICAgICAgICBudWxscHRyIGRlcmVmIGluIEluYmFuZENoYXB0ZXJUcmFj
a1ByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ2hhcHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDA2ZDQ5NzQ5MzIx
NGY2NGYyMjFhNDQyNjY3MzU2YWJlNTRiODA1Zi4uMThkY2IxODY2ZWM1NjQ4OTA5NjU5MTliYzE4
MGRmYWYyMDBkM2I5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAyMS0xMS0zMCAgSm9o
biBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IFVubGlua2Fi
bGUgdG9rZW5zIGZvciB0cmlnZ2VyaW5nIGV2ZW50IHRvIHByZXZlbnQgZnJhdWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3MworICAgICAgICA8
cmRhcjovLzc5NDI2MzQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHRyaWdnZXJpbmcgZXZlbnRzIHRvIGhhdmUgYW4g
b3B0aW9uYWwgcXVlcnkgcGFyYW1ldGVyIGxpa2UgdGhpczoKKyAgICAgICAgaHR0cHM6Ly9kZXN0
aW5hdGlvbi5leGFtcGxlLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJp
Z2dlci1hdHRyaWJ1dGlvbi8xMT9hdHRyaWJ1dGlvbkRlc3RpbmF0aW9uTm9uY2U9QUJDREVGYWJj
ZGVmMDEyMzQ1Njc4OQorCisgICAgICAgIFRoZSBwcmVzZW5jZSBvZiBhbiBhdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uTm9uY2UgdHJpZ2dlcnMgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyIHRv
CisgICAgICAgIGFzayB0aGUgc2VydmVyIHRvIHNpZ24gYW4gdW5saW5rYWJsZSB0b2tlbiBmb3Ig
dGhlIHRyaWdnZXJpbmcgZXZlbnQgYW5kIHRoZW4gc3RvcmVzIHRoZQorICAgICAgICBjb3JyZXNw
b25kaW5nIHNlY3JldCB0b2tlbiBwbHVzIHRoZSBzaWduYXR1cmUgZm9yIGxhdGVyIGluY2x1c2lv
biBpbiB0aGUgYXR0cmlidXRpb24gcmVwb3J0LgorCisgICAgICAgIE5ldyBBUEkvdW5pdCB0ZXN0
IFByaXZhdGVDbGlja01lYXN1cmVtZW50LkRlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZlbnRpb24u
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RnJvbURhdGFiYXNlIGNvbnN0KToKKyAgICAgICAgICAgIE5vdyBoYW5kbGVzIGRlc3RpbmF0
aW9uIHRva2Vucy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UENNOjpEYXRhYmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAgICAgTm93IGNhbGxzIGFkZERl
c3RpbmF0aW9uVG9rZW5Db2x1bW5zSWZOZWNlc3NhcnkoKS4KKyAgICAgICAgKFdlYktpdDo6UENN
OjpEYXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAgICAg
Tm93IGRvZXMgaW5zZXJ0aW9uIG9mIG9wdGlvbmFsIGRlc3RpbmF0aW9uIHRva2Vucy4KKyAgICAg
ICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWRkRGVzdGluYXRpb25Ub2tlbkNvbHVtbnNJZk5l
Y2Vzc2FyeSk6CisgICAgICAgICAgICBEYXRhYmFzZSBtaWdyYXRpb24uCisgICAgICAgIChXZWJL
aXQ6OlBDTTo6RGF0YWJhc2U6OmFkZEJ1bmRsZUlEQ29sdW1uSWZOZWNlc3NhcnkpOiBEZWxldGVk
LgorICAgICAgICAgICAgVGVtcG9yYXJ5IG1pZ3JhdGlvbiBmdW5jdGlvbiBmb3Igbm9uLWN1c3Rv
bWVyIGJ1aWxkcy4gTm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZCk6CisgICAgICAgICAgICBK
dXN0IG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyOjpnZXRUb2tlblB1YmxpY0tleSk6CisgICAgICAgICAgICBOb3QgY2hhbmdlZCBh
ZmFpay4gU2VlbXMgbGlrZSB0aGUgZGlmZiBpcyBjb25mdXNlZC4KKyAgICAgICAgKFdlYktpdDo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5G
b3JTb3VyY2UpOgorICAgICAgICAgICAgUmVuYW1lZC4KKyAgICAgICAgKFdlYktpdDo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0
aW5hdGlvbik6CisgICAgICAgICAgICBEaWZmZXJlbnQgdGhhbiBmb3IgdGhlIHNvdXJjZSBpbiB0
aGF0IGl0IHJlc3VsdHMgaW4gYW4gYXR0cmlidXRpb24gY2FsbC4KKyAgICAgICAgKFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRpb24pOgorICAgICAgICAgICAg
Tm93IGRvZXMgc2lnbmluZyBvZiBkZXN0aW5hdGlvbiB0b2tlbiBpZiB0aGUgb3B0aW9uYWwgbm9u
Y2UgaXMgaW4gdGhlIHRyaWdnZXJpbmcgZXZlbnQuCisgICAgICAgIChQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRva2Vu
KTogRGVsZXRlZC4KKyAgICAgICAgICAgIFJlbmFtZWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JTb3VyY2UoKS4KKyAgICAgICAgKFdl
YktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzZXRQQ01GcmF1ZFByZXZlbnRp
b25WYWx1ZXNGb3JUZXN0aW5nKToKKyAgICAgICAgICAgIEFkZGVkIGVtcHR5IGluaXRpYWxpemVy
IHN0cmluZ3MgZm9yIHRoZSBkZXN0aW5hdGlvbiB0ZXN0IHRva2VuIHZhbHVlcyBub3QgaW4gdXNl
IHlldC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKwogMjAyMS0xMS0zMCAgQkogQnVyZyAg
PGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgRXh0ZW5zaW9u
VGFiQWN0aXZhdGlvbiBkaWFnbm9zdGljIGV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRleCBiOTJhYTAyNDNjZGQxYmE2YzYz
MTVkMDcwNTdlNGVhY2ZiODhlZWJlLi5kYmNjODA0NWI2ZjdhNDU5NDg0ZWUxM2FiZGFhNGYwNjMy
MzQ3YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVBhdGhbXSA9ICIvLndlbGwta25vd24vcHIKIHN0
YXRpYyBjb25zdCBjaGFyIHByaXZhdGVDbGlja01lYXN1cmVtZW50UmVwb3J0QXR0cmlidXRpb25Q
YXRoW10gPSAiLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvcmVwb3J0LWF0
dHJpYnV0aW9uLyI7CiBjb25zdCBzaXplX3QgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplID0gMjsKIGNvbnN0IHNpemVfdCBwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplID0gMjsKLWNvbnN0IHVpbnQ4
X3QgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRWZXJzaW9uID0gMjsKK2NvbnN0IHVpbnQ4X3QgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRWZXJzaW9uID0gMzsKIAogY29uc3QgU2Vjb25kcyBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6bWF4QWdlKCkKIHsKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgICAgICYmIChtX3RpbWVz
VG9TZW5kLnNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCB8fCBtX3RpbWVzVG9TZW5kLmRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kKTsKIH0KIAotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNv
dXJjZVNlY3JldFRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tl
bjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRU
b2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgdG9rZW5CYXNlNjRVUkwuaXNvbGF0ZWRD
b3B5KCksCkBAIC02OSwxMiArNjksMzAgQEAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZVNlY3JldFRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXQKICAgICB9
OwogfQogCitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW4gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSBjb25z
dAoreworICAgIGF1dG8gY29weSA9IFNvdXJjZVNlY3JldFRva2VuIHsgfTsKKyAgICBjb3B5LnRv
a2VuQmFzZTY0VVJMID0gdG9rZW5CYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5z
aWduYXR1cmVCYXNlNjRVUkwgPSBzaWduYXR1cmVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCk7Cisg
ICAgY29weS5rZXlJREJhc2U2NFVSTCA9IGtleUlEQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpOwor
ICAgIHJldHVybiBjb3B5OworfQorCitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRp
b25TZWNyZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRU
b2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBhdXRvIGNvcHkgPSBEZXN0aW5hdGlv
blNlY3JldFRva2VuIHsgfTsKKyAgICBjb3B5LnRva2VuQmFzZTY0VVJMID0gdG9rZW5CYXNlNjRV
UkwuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5zaWduYXR1cmVCYXNlNjRVUkwgPSBzaWduYXR1
cmVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5rZXlJREJhc2U2NFVSTCA9IGtl
eUlEQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpOworICAgIHJldHVybiBjb3B5OworfQorCiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlOjppc29sYXRlZENvcHkoKSBjb25zdAogewog
ICAgIHJldHVybiB7IG5vbmNlLmlzb2xhdGVkQ29weSgpIH07CiB9CiAKLVByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVu
bGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gewogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtODYsNiArMTA0LDI2IEBAIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZVVuCiAgICAgfTsKIH0KIAorUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2Fi
bGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRva2VuOjpp
c29sYXRlZENvcHkoKSBjb25zdAoreworICAgIGF1dG8gY29weSA9IFNvdXJjZVVubGlua2FibGVU
b2tlbiB7IH07CisgICAgY29weS5ibGluZGVyID0gYmxpbmRlcjsKKyAgICBjb3B5LndhaXRpbmdU
b2tlbiA9IHdhaXRpbmdUb2tlbjsKKyAgICBjb3B5LnJlYWR5VG9rZW4gPSByZWFkeVRva2VuOwor
ICAgIGNvcHkudmFsdWVCYXNlNjRVUkwgPSB2YWx1ZUJhc2U2NFVSTC5pc29sYXRlZENvcHkoKTsK
KyAgICByZXR1cm4gY29weTsKK30KKworUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0
aW9uVW5saW5rYWJsZVRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblVu
bGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBhdXRvIGNvcHkgPSBE
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiB7IH07CisgICAgY29weS5ibGluZGVyID0gYmxpbmRl
cjsKKyAgICBjb3B5LndhaXRpbmdUb2tlbiA9IHdhaXRpbmdUb2tlbjsKKyAgICBjb3B5LnJlYWR5
VG9rZW4gPSByZWFkeVRva2VuOworICAgIGNvcHkudmFsdWVCYXNlNjRVUkwgPSB2YWx1ZUJhc2U2
NFVSTC5pc29sYXRlZENvcHkoKTsKKyAgICByZXR1cm4gY29weTsKK30KKwogUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0
CiB7CiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgY29weSB7CkBAIC0xMTEsMjYgKzE0OSw0
MSBAQCBFeHBlY3RlZDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSwgU3RyaW5nPiBQcml2YXRlQ2xpY2tNZQogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gcXVl
cnlQYXJhbWV0ZXJzKHJlZGlyZWN0VVJMKTsKICAgICBpZiAoIXBhcmFtZXRlcnMuc2l6ZSgpKQot
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
XSBDb252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMIGhhZCBhIHF1ZXJ5
IHN0cmluZyBidXQgaXQgZGlkbid0IGNvbnRhaW4gc3VwcG9ydGVkIHBhcmFtZXRlcnMuIl9zKTsK
LQotICAgIGlmIChwYXJhbWV0ZXJzLnNpemUoKSA+IDEpCi0gICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBh
Y2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBxdWVyeSBzdHJpbmcgY29udGFpbmVkIHVuc3VwcG9y
dGVkIHBhcmFtZXRlcnMuIl9zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVk
IGJlY2F1c2UgdGhlIFVSTCBoYWQgYSBxdWVyeSBzdHJpbmcgYnV0IGl0IGRpZG4ndCBjb250YWlu
IHN1cHBvcnRlZCBwYXJhbWV0ZXJzLiJfcyk7CisKKyAgICBpZiAocGFyYW1ldGVycy5zaXplKCkg
PiAyKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1
cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJM
J3MgcXVlcnkgc3RyaW5nIGNvbnRhaW5lZCB1bnN1cHBvcnRlZCBwYXJhbWV0ZXJzLiJfcyk7CisK
KyAgICBFcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlIGRlc3RpbmF0aW9uTm9uY2U7CisgICAgUmVn
aXN0cmFibGVEb21haW4gc291cmNlRG9tYWluOworICAgIGZvciAoYXV0byYgcGFyYW1ldGVyIDog
cGFyYW1ldGVycykgeworICAgICAgICBpZiAocGFyYW1ldGVyLmtleSA9PSAiYXR0cmlidXRpb25T
b3VyY2UiKSB7CisgICAgICAgICAgICBpZiAocGFyYW1ldGVyLnZhbHVlLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1
cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJM
J3MgYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1ldGVyIGhhZCBubyB2YWx1ZS4iX3MpOwor
CisgICAgICAgICAgICBhdXRvIGF0dHJpYnV0aW9uU291cmNlVVJMID0gVVJMKFVSTCgpLCBwYXJh
bWV0ZXIudmFsdWUpOworICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblNvdXJjZVVSTC5pc1Zh
bGlkKCkgfHwgKGF0dHJpYnV0aW9uU291cmNlVVJMLmhhc1BhdGgoKSAmJiBhdHRyaWJ1dGlvblNv
dXJjZVVSTC5wYXRoKCkubGVuZ3RoKCkgPiAxKSB8fCBhdHRyaWJ1dGlvblNvdXJjZVVSTC5oYXND
cmVkZW50aWFscygpIHx8IGF0dHJpYnV0aW9uU291cmNlVVJMLmhhc1F1ZXJ5KCkgfHwgYXR0cmli
dXRpb25Tb3VyY2VVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dl
cmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIGF0dHJpYnV0aW9u
U291cmNlIHF1ZXJ5IHBhcmFtZXRlciB3YXMgbm90IGEgdmFsaWQgVVJMIG9yIHdhcyBhIFVSTCB3
aXRoIGEgcGF0aCwgY3JlZGVudGlhbHMsIHF1ZXJ5IHN0cmluZywgb3IgZnJhZ21lbnQuIl9zKTsK
KworICAgICAgICAgICAgc291cmNlRG9tYWluID0gUmVnaXN0cmFibGVEb21haW4geyBhdHRyaWJ1
dGlvblNvdXJjZVVSTCB9OworICAgICAgICAgICAgaWYgKHNvdXJjZURvbWFpbi5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhl
IFVSTCdzIGF0dHJpYnV0aW9uU291cmNlIHF1ZXJ5IHBhcmFtZXRlciBoYWQgbm8gcmVnaXN0cmFi
bGUgZG9tYWluLiJfcyk7CisgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVyLmtleSA9PSAiYXR0
cmlidXRpb25EZXN0aW5hdGlvbk5vbmNlIikgeworICAgICAgICAgICAgaWYgKHBhcmFtZXRlci52
YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJb
UHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2Vw
dGVkIGJlY2F1c2UgdGhlIFVSTCdzIGF0dHJpYnV0aW9uRGVzdGluYXRpb25Ob25jZSBxdWVyeSBw
YXJhbWV0ZXIgaGFkIG5vIHZhbHVlLiJfcyk7CisgICAgICAgICAgICBkZXN0aW5hdGlvbk5vbmNl
Lm5vbmNlID0gcGFyYW1ldGVyLnZhbHVlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdnZXJp
bmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBxdWVyeSBzdHJpbmcg
Y29udGFpbmVkIHVuc3VwcG9ydGVkIHBhcmFtZXRlcnMuIl9zKTsKKyAgICB9CiAKLSAgICBhdXRv
IHBhcmFtZXRlciA9IHBhcmFtZXRlcnMuZmlyc3QoKTsKLSAgICBpZiAocGFyYW1ldGVyLmtleSA9
PSAiYXR0cmlidXRpb25Tb3VyY2UiKSB7Ci0gICAgICAgIGlmIChwYXJhbWV0ZXIudmFsdWUuaXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVS
TCdzIGF0dHJpYnV0aW9uU291cmNlIHF1ZXJ5IHBhcmFtZXRlciBoYWQgbm8gdmFsdWUuIl9zKTsK
KyAgICBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CisgICAg
aWYgKCFzb3VyY2VEb21haW4uaXNFbXB0eSgpKQorICAgICAgICBhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhLnNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZShzb3VyY2VEb21haW4pOwogCi0g
ICAgICAgIGF1dG8gYXR0cmlidXRpb25Tb3VyY2VVUkwgPSBVUkwoVVJMKCksIHBhcmFtZXRlci52
YWx1ZSk7Ci0gICAgICAgIGlmICghYXR0cmlidXRpb25Tb3VyY2VVUkwuaXNWYWxpZCgpIHx8IChh
dHRyaWJ1dGlvblNvdXJjZVVSTC5oYXNQYXRoKCkgJiYgYXR0cmlidXRpb25Tb3VyY2VVUkwucGF0
aCgpLmxlbmd0aCgpID4gMSkgfHwgYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFzQ3JlZGVudGlhbHMo
KSB8fCBhdHRyaWJ1dGlvblNvdXJjZVVSTC5oYXNRdWVyeSgpIHx8IGF0dHJpYnV0aW9uU291cmNl
VVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFj
Y2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIGF0dHJpYnV0aW9uU291cmNlIHF1ZXJ5IHBhcmFtZXRl
ciB3YXMgbm90IGEgdmFsaWQgVVJMIG9yIHdhcyBhIFVSTCB3aXRoIGEgcGF0aCwgY3JlZGVudGlh
bHMsIHF1ZXJ5IHN0cmluZywgb3IgZnJhZ21lbnQuIl9zKTsKKyAgICBpZiAoIWRlc3RpbmF0aW9u
Tm9uY2Uubm9uY2UuaXNFbXB0eSgpKQorICAgICAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmVw
aGVtZXJhbERlc3RpbmF0aW9uTm9uY2UgPSBXVEZNb3ZlKGRlc3RpbmF0aW9uTm9uY2UpOwogCi0g
ICAgICAgIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKLSAg
ICAgICAgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5zb3VyY2VSZWdpc3RyYWJsZURvbWFpbiA9IFJl
Z2lzdHJhYmxlRG9tYWluIHsgYXR0cmlidXRpb25Tb3VyY2VVUkwgfTsKLSAgICAgICAgcmV0dXJu
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2Vw
dGVkIGJlY2F1c2UgdGhlIFVSTCBkaWQgbm90IGNvbnRhaW4gYW4gYXR0cmlidXRpb25Tb3VyY2Ug
cXVlcnkgcGFyYW1ldGVyLiJfcyk7CisgICAgcmV0dXJuIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7
CiB9CiAKIEV4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9u
UmVxdWVzdChjb25zdCBVUkwmIHJlZGlyZWN0VVJMKQpAQCAtMTQwLDE4ICsxOTMsMjEgQEAgRXhw
ZWN0ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIFN0
cmluZz4gUHJpdmF0ZUNsaWNrTWUKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG51bGxT
dHJpbmcoKSk7CiAKICAgICBpZiAoIXJlZGlyZWN0VVJMLnByb3RvY29sSXMoImh0dHBzIikgfHwg
cmVkaXJlY3RVUkwuaGFzQ3JlZGVudGlhbHMoKSB8fCByZWRpcmVjdFVSTC5oYXNGcmFnbWVudElk
ZW50aWZpZXIoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGlj
ayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVS
TCdzIHByb3RvY29sIGlzIG5vdCBIVFRQUyBvciB0aGUgVVJMIGNvbnRhaW5zIG9uZSBvciBtb3Jl
IG9mIHVzZXJuYW1lLCBwYXNzd29yZCwgYW5kIGZyYWdtZW50LiJfcyk7CisgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcg
ZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBwcm90b2NvbCBpcyBub3Qg
SFRUUFMgb3IgdGhlIFVSTCBjb250YWlucyBvbmUgb3IgbW9yZSBvZiB1c2VybmFtZSwgcGFzc3dv
cmQsIGFuZCBmcmFnbWVudC4iX3MpOwogCiAgICAgYXV0byByZXN1bHQgPSBwYXJzZUF0dHJpYnV0
aW9uUmVxdWVzdFF1ZXJ5KHJlZGlyZWN0VVJMKTsKLSAgICBpZiAoIXJlc3VsdCAmJiAhcmVzdWx0
LmVycm9yKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGlmICghcmVz
dWx0KSB7CisgICAgICAgIGlmICghcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJl
Y2F1c2UgdGhlIFVSTCdzIHF1ZXJ5IHN0cmluZyBjb3VsZCBub3QgYmUgcGFyc2VkLiJfcyk7Cisg
ICAgfQogICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHJlc3VsdC52YWx1ZSgpOwog
CiAgICAgYXV0byBwcmVmaXhMZW5ndGggPSBzaXplb2YocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
cmlnZ2VyQXR0cmlidXRpb25QYXRoKSAtIDE7CiAgICAgaWYgKHBhdGgubGVuZ3RoKCkgPT0gcHJl
Zml4TGVuZ3RoICsgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
UGF0aFNlZ21lbnRTaXplKSB7CiAgICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJ
bnQ2NCA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3Ro
LCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVu
dFNpemUpKTsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0IHx8ICph
dHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID4gQXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4
RW50cm9weSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJb
UHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJl
Y2F1c2UgdGhlIGNvbnZlcnNpb24gZGF0YSBjb3VsZCBub3QgYmUgcGFyc2VkIG9yIHdhcyBoaWdo
ZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIG9mICJfcywgQXR0cmlidXRpb25UcmlnZ2VyRGF0
YTo6TWF4RW50cm9weSwgIi4iX3MpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVu
dCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIGNvbnZlcnNpb24gZGF0YSBjb3VsZCBub3Qg
YmUgcGFyc2VkIG9yIHdhcyBoaWdoZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIG9mICJfcywg
QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4RW50cm9weSwgIi4iX3MpKTsKIAogICAgICAgICBh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhLmRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90PigqYXR0cmli
dXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCk7CiAgICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEu
cHJpb3JpdHkgPSAwOwpAQCAtMTYxLDE4ICsyMTcsMTggQEAgRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIFN0cmluZz4gUHJpdmF0ZUNsaWNr
TWUKICAgICBpZiAocGF0aC5sZW5ndGgoKSA9PSBwcmVmaXhMZW5ndGggKyBwcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNpemUgKyAxICsgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRQcmlvcml0eVBhdGhTZWdtZW50U2l6ZSkgewogICAgICAgICBh
dXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+
KHBhdGguc3Vic3RyaW5nKHByZWZpeExlbmd0aCwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplKSk7CiAgICAgICAgIGlmICghYXR0cmli
dXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCB8fCAqYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA+
IEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVudHJvcHkpCi0gICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQobWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENv
bnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEgY291
bGQgbm90IGJlIHBhcnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBv
ZiAiX3MsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVudHJvcHksICIuIl9zKSk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRo
ZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90IGJlIHBhcnNlZCBvciB3YXMgaGlnaGVyIHRoYW4g
dGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3MsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVu
dHJvcHksICIuIl9zKSk7CiAKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvblByaW9yaXR5VUludDY0
ID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihwYXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGggKyBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGFQYXRoU2VnbWVudFNp
emUgKyAxLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplKSk7
CiAgICAgICAgIGlmICghYXR0cmlidXRpb25Qcmlvcml0eVVJbnQ2NCB8fCAqYXR0cmlidXRpb25Q
cmlvcml0eVVJbnQ2NCA+IFByaW9yaXR5OjpNYXhFbnRyb3B5KQotICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBD
b252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgcHJpb3JpdHkgY291bGQgbm90
IGJlIHBhcnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3Ms
IFByaW9yaXR5OjpNYXhFbnRyb3B5LCAiLiJfcykpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2Vy
aW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgcHJpb3JpdHkgY291bGQgbm90
IGJlIHBhcnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3Ms
IFByaW9yaXR5OjpNYXhFbnRyb3B5LCAiLiJfcykpOwogCiAgICAgICAgIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEuZGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KCphdHRyaWJ1dGlvblRyaWdnZXJE
YXRhVUludDY0KTsKICAgICAgICAgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5wcmlvcml0eSA9IHN0
YXRpY19jYXN0PHVpbnQ4X3Q+KCphdHRyaWJ1dGlvblByaW9yaXR5VUludDY0KTsKICAgICAgICAg
cmV0dXJuIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAgICAgfQogCi0gICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90
IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCBwYXRoIGNvbnRhaW5lZCB1bnJlY29nbml6ZWQgcGFy
dHMuIl9zKTsKKyAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1
cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJM
IHBhdGggY29udGFpbmVkIHVucmVjb2duaXplZCBwYXJ0cy4iX3MpOwogfQogCiBib29sIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpoYXNQcmV2aW91c2x5QmVlblJlcG9ydGVkKCkKQEAgLTI2Miwy
MSArMzE4LDM3IEBAIFJlZjxKU09OOjpPYmplY3Q+IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojph
dHRyaWJ1dGlvblJlcG9ydEpTT04oKSBjb25zdAogICAgICAgICByZXBvcnREZXRhaWxzLT5zZXRT
dHJpbmcoInNvdXJjZV9zZWNyZXRfdG9rZW5fc2lnbmF0dXJlIl9zLCBtX3NvdXJjZVNlY3JldFRv
a2VuLT5zaWduYXR1cmVCYXNlNjRVUkwpOwogICAgIH0KIAorICAgIC8vIFRoaXMgdG9rZW4gaGFz
IGJlZW4ga2VwdCBzZWNyZXQgdGhpcyBmYXIgYW5kIGNhbm5vdCBiZSBsaW5rZWQgdG8gdGhlIHVu
bGlua2FibGUgdG9rZW4uCisgICAgaWYgKG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+ZGVzdGlu
YXRpb25TZWNyZXRUb2tlbikgeworICAgICAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoImRl
c3RpbmF0aW9uX3NlY3JldF90b2tlbiJfcywgbV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhLT5kZXN0
aW5hdGlvblNlY3JldFRva2VuLT50b2tlbkJhc2U2NFVSTCk7CisgICAgICAgIHJlcG9ydERldGFp
bHMtPnNldFN0cmluZygiZGVzdGluYXRpb25fc2VjcmV0X3Rva2VuX3NpZ25hdHVyZSJfcywgbV9h
dHRyaWJ1dGlvblRyaWdnZXJEYXRhLT5kZXN0aW5hdGlvblNlY3JldFRva2VuLT5zaWduYXR1cmVC
YXNlNjRVUkwpOworICAgIH0KKwogICAgIHJldHVybiByZXBvcnREZXRhaWxzOwogfQogCiAvLyBN
QVJLOiAtIEZyYXVkIFByZXZlbnRpb24KIAotc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBFcGhl
bWVyYWxTb3VyY2VOb25jZVJlcXVpcmVkTnVtYmVyT2ZCeXRlcyA9IDE2Oworc3RhdGljIGNvbnN0
ZXhwciB1aW50MzJfdCBFcGhlbWVyYWxOb25jZVJlcXVpcmVkTnVtYmVyT2ZCeXRlcyA9IDE2Owog
CiBib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNW
YWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc05v
bmNlVmFsaWQobm9uY2UpOworfQorCitib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhl
bWVyYWxEZXN0aW5hdGlvbk5vbmNlOjppc1ZhbGlkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmlzTm9uY2VWYWxpZChub25jZSk7Cit9CisKK2Jvb2wgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmlzTm9uY2VWYWxpZChjb25zdCBTdHJpbmcmIG5vbmNlKQog
ewogICAgIC8vIEZJWE1FOiBJbnZlc3RpZ2F0ZSBpZiB3ZSBjYW4gZG8gd2l0aCBhIHNpbXBsZSBs
ZW5ndGggY2hlY2sgaW5zdGVhZCBvZiBkZWNvZGluZy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxOTQ1CiAgICAgYXV0byBkaWdlc3QgPSBiYXNlNjRV
UkxEZWNvZGUobm9uY2UpOwogICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGRpZ2VzdC0+c2l6ZSgpID09IEVwaGVtZXJhbFNvdXJjZU5vbmNlUmVxdWly
ZWROdW1iZXJPZkJ5dGVzOworICAgIHJldHVybiBkaWdlc3QtPnNpemUoKSA9PSBFcGhlbWVyYWxO
b25jZVJlcXVpcmVkTnVtYmVyT2ZCeXRlczsKIH0KIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6c2V0RXBoZW1lcmFsU291cmNlTm9uY2UoRXBoZW1lcmFsU291cmNlTm9uY2UmJiBub25j
ZSkKQEAgLTI4NiwxNyArMzU4LDMxIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnNl
dEVwaGVtZXJhbFNvdXJjZU5vbmNlKEVwaGVtZXJhbFNvdXJjZU5vbmNlJiYgbm9uCiAgICAgbV9l
cGhlbWVyYWxTb3VyY2VOb25jZSA9IFdURk1vdmUobm9uY2UpOwogfQogCi1VUkwgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OnRva2VuU2lnbmF0dXJlVVJMKCkgY29uc3QKK2NvbnN0IHN0ZDo6b3B0
aW9uYWw8Y29uc3QgVVJMPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5QdWJsaWNLZXlV
UkwoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogewotICAgIGlm
ICghbV9lcGhlbWVyYWxTb3VyY2VOb25jZSB8fCAhbV9lcGhlbWVyYWxTb3VyY2VOb25jZS0+aXNW
YWxpZCgpKQotICAgICAgICByZXR1cm4gVVJMKCk7CisgICAgaWYgKHJlZ2lzdHJhYmxlRG9tYWlu
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4gbWFr
ZVZhbGlkVVJMKHJlZ2lzdHJhYmxlRG9tYWluLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2Vu
UHVibGljS2V5UGF0aCk7Cit9CisKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgVVJMPiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5QdWJsaWNLZXlVUkwoKSBjb25zdAoreworICAgIHJl
dHVybiB0b2tlblB1YmxpY0tleVVSTChtX3NvdXJjZVNpdGUucmVnaXN0cmFibGVEb21haW4pOwor
fQogCi0gICAgcmV0dXJuIG1ha2VWYWxpZFVSTChtX3NvdXJjZVNpdGUucmVnaXN0cmFibGVEb21h
aW4sIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVQYXRoKTsKK2NvbnN0IHN0
ZDo6b3B0aW9uYWw8Y29uc3QgVVJMPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWdu
YXR1cmVVUkwoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQorewor
ICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmV0dXJuIG1ha2VWYWxpZFVSTChyZWdpc3RyYWJsZURvbWFpbiwgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVBhdGgpOwogfQogCi1VUkwgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuUHVibGljS2V5VVJMKCkgY29uc3QKK2NvbnN0IHN0ZDo6
b3B0aW9uYWw8Y29uc3QgVVJMPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1
cmVVUkwoKSBjb25zdAogewotICAgIHJldHVybiBtYWtlVmFsaWRVUkwobV9zb3VyY2VTaXRlLnJl
Z2lzdHJhYmxlRG9tYWluLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuUHVibGljS2V5UGF0
aCk7CisgICAgaWYgKCFtX2VwaGVtZXJhbFNvdXJjZU5vbmNlIHx8ICFtX2VwaGVtZXJhbFNvdXJj
ZU5vbmNlLT5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gdG9rZW5TaWduYXR1cmVVUkwobV9zb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsK
IH0KIAogUmVmPEpTT046Ok9iamVjdD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2ln
bmF0dXJlSlNPTigpIGNvbnN0CkBAIC0zMTYsNiArNDAyLDI4IEBAIFJlZjxKU09OOjpPYmplY3Q+
IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblNpZ25hdHVyZUpTT04oKSBjb25zdAogICAg
IHJldHVybiByZXBvcnREZXRhaWxzOwogfQogCitSZWY8SlNPTjo6T2JqZWN0PiBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6dG9rZW5TaWduYXR1cmVKU09O
KCkgY29uc3QKK3sKKyAgICBhdXRvIHJlcG9ydERldGFpbHMgPSBKU09OOjpPYmplY3Q6OmNyZWF0
ZSgpOworICAgIGlmICghZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZSB8fCAhZXBoZW1lcmFsRGVz
dGluYXRpb25Ob25jZS0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gcmVwb3J0RGV0YWlsczsK
KworICAgIGlmICghZGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4gfHwgZGVzdGluYXRpb25Vbmxp
bmthYmxlVG9rZW4tPnZhbHVlQmFzZTY0VVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHJl
cG9ydERldGFpbHM7CisKKyAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoInNvdXJjZV9lbmdh
Z2VtZW50X3R5cGUiX3MsICJjbGljayJfcyk7CisgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5n
KCJkZXN0aW5hdGlvbl9ub25jZSJfcywgZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZS0+bm9uY2Up
OworICAgIC8vIFRoaXMgdG9rZW4gY2FuIG5vdCBiZSBsaW5rZWQgdG8gdGhlIHNlY3JldCB0b2tl
bi4KKyAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoImRlc3RpbmF0aW9uX3VubGlua2FibGVf
dG9rZW4iX3MsIGRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuLT52YWx1ZUJhc2U2NFVSTCk7Cisg
ICAgcmVwb3J0RGV0YWlscy0+c2V0SW50ZWdlcigidmVyc2lvbiJfcywgcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRWZXJzaW9uKTsKKyAgICByZXR1cm4gcmVwb3J0RGV0YWlsczsKK30KKworYm9vbCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U2VjcmV0VG9rZW46OmlzVmFsaWQoKSBjb25zdAorewor
ICAgIHJldHVybiAhKHRva2VuQmFzZTY0VVJMLmlzRW1wdHkoKSB8fCBzaWduYXR1cmVCYXNlNjRV
UkwuaXNFbXB0eSgpIHx8IGtleUlEQmFzZTY0VVJMLmlzRW1wdHkoKSk7Cit9CisKIHZvaWQgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnNldFNvdXJjZVNlY3JldFRva2VuKFNvdXJjZVNlY3JldFRv
a2VuJiYgdG9rZW4pCiB7CiAgICAgaWYgKCF0b2tlbi5pc1ZhbGlkKCkpCkBAIC0zMjMsOSArNDMx
LDExIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnNldFNvdXJjZVNlY3JldFRva2Vu
KFNvdXJjZVNlY3JldFRva2VuJiYgdG9rZW4pCiAgICAgbV9zb3VyY2VTZWNyZXRUb2tlbiA9IFdU
Rk1vdmUodG9rZW4pOwogfQogCi1ib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VT
ZWNyZXRUb2tlbjo6aXNWYWxpZCgpIGNvbnN0Cit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpzZXREZXN0aW5hdGlvblNlY3JldFRva2VuKERlc3RpbmF0aW9uU2VjcmV0VG9rZW4mJiB0b2tl
bikKIHsKLSAgICByZXR1cm4gISh0b2tlbkJhc2U2NFVSTC5pc0VtcHR5KCkgfHwgc2lnbmF0dXJl
QmFzZTY0VVJMLmlzRW1wdHkoKSB8fCBrZXlJREJhc2U2NFVSTC5pc0VtcHR5KCkpOworICAgIGlm
ICghdG9rZW4uaXNWYWxpZCgpIHx8ICFtX2F0dHJpYnV0aW9uVHJpZ2dlckRhdGEpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2F0dHJpYnV0aW9uVHJpZ2dlckRhdGEtPmRlc3RpbmF0aW9uU2VjcmV0
VG9rZW4gPSBXVEZNb3ZlKHRva2VuKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAppbmRleCBm
Y2MzZTliZTYxNzAwNjg0ZjFjNGNkOWU1MzQ3MGUwMTBiNzliYzEzLi5hODQ2N2E1ZGMzYWVhNjcy
ODRmYzk3M2NlZDNmMWFjMTE0NzU2M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuaApAQCAtMTY4LDE2ICsxNjgsNjMgQEAgcHVibGljOgog
ICAgICAgICBQcmlvcml0eVZhbHVlIHZhbHVlOwogICAgIH07CiAgICAgCisgICAgc3RydWN0IEVw
aGVtZXJhbERlc3RpbmF0aW9uTm9uY2UgeworICAgICAgICBTdHJpbmcgbm9uY2U7CisKKyAgICAg
ICAgRXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZSBpc29sYXRlZENvcHkoKSBjb25zdDsKKworICAg
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmFsaWQoKSBjb25zdDsKKworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAg
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVwaGVtZXJhbERl
c3RpbmF0aW9uTm9uY2U+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAgIHN0cnVjdCBV
bmxpbmthYmxlVG9rZW4geworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICBSZXRhaW5QdHI8
UlNBQlNTQVRva2VuQmxpbmRlcj4gYmxpbmRlcjsKKyAgICAgICAgUmV0YWluUHRyPFJTQUJTU0FU
b2tlbldhaXRpbmdBY3RpdmF0aW9uPiB3YWl0aW5nVG9rZW47CisgICAgICAgIFJldGFpblB0cjxS
U0FCU1NBVG9rZW5SZWFkeT4gcmVhZHlUb2tlbjsKKyNlbmRpZgorICAgICAgICBTdHJpbmcgdmFs
dWVCYXNlNjRVUkw7CisgICAgICAgIAorICAgICAgICBVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CisgICAgfTsKKworICAgIHN0cnVjdCBTb3VyY2VVbmxpbmthYmxlVG9rZW4g
OiBVbmxpbmthYmxlVG9rZW4geworICAgICAgICBTb3VyY2VVbmxpbmthYmxlVG9rZW4gaXNvbGF0
ZWRDb3B5KCkgY29uc3Q7CisgICAgfTsKKworICAgIHN0cnVjdCBEZXN0aW5hdGlvblVubGlua2Fi
bGVUb2tlbiA6IFVubGlua2FibGVUb2tlbiB7CisgICAgICAgIERlc3RpbmF0aW9uVW5saW5rYWJs
ZVRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgIH07CisKKyAgICBzdHJ1Y3QgU2VjcmV0
VG9rZW4geworICAgICAgICBTdHJpbmcgdG9rZW5CYXNlNjRVUkw7CisgICAgICAgIFN0cmluZyBz
aWduYXR1cmVCYXNlNjRVUkw7CisgICAgICAgIFN0cmluZyBrZXlJREJhc2U2NFVSTDsKKyAgICAg
ICAgU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0OworICAgIH07CisKKyAgICBzdHJ1Y3QgU291cmNlU2VjcmV0VG9rZW4gOiBTZWNy
ZXRUb2tlbiB7CisgICAgICAgIFNvdXJjZVNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0
OworICAgIH07CisKKyAgICBzdHJ1Y3QgRGVzdGluYXRpb25TZWNyZXRUb2tlbiA6IFNlY3JldFRv
a2VuIHsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgRGVzdGluYXRpb25TZWNyZXRUb2tlbiBpc29s
YXRlZENvcHkoKSBjb25zdDsKKyAgICB9OworCiAgICAgc3RydWN0IEF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEgewogICAgICAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgTWF4RW50cm9weSA9IDE1
OwogCiAgICAgICAgIGVudW0gY2xhc3MgV2FzU2VudCA6IGJvb2wgeyBObywgWWVzIH07CiAKICAg
ICAgICAgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpID0gZGVmYXVsdDsKLSAgICAgICAgQXR0cmli
dXRpb25UcmlnZ2VyRGF0YSh1aW50OF90IGRhdGEsIFByaW9yaXR5IHByaW9yaXR5LCBXYXNTZW50
IHdhc1NlbnQgPSBXYXNTZW50OjpObykKKyAgICAgICAgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSh1
aW50OF90IGRhdGEsIFByaW9yaXR5IHByaW9yaXR5LCBXYXNTZW50IHdhc1NlbnQgPSBXYXNTZW50
OjpObywgc3RkOjpvcHRpb25hbDxFcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlPiBub25jZSA9IHN0
ZDo6bnVsbG9wdCkKICAgICAgICAgICAgIDogZGF0YSB7IGRhdGEgfQogICAgICAgICAgICAgLCBw
cmlvcml0eSB7IHByaW9yaXR5LnZhbHVlIH0KICAgICAgICAgICAgICwgd2FzU2VudCB7IHdhc1Nl
bnQgfQorICAgICAgICAgICAgLCBlcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlIHsgbm9uY2UgfQog
ICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtMTg1LDExICsyMzIsMjYgQEAgcHVibGljOgogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZGF0YSA8PSBNYXhFbnRyb3B5ICYmIHByaW9yaXR5
IDw9IFByaW9yaXR5OjpNYXhFbnRyb3B5OwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAg
IHZvaWQgc2V0RGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW5WYWx1ZShjb25zdCBTdHJpbmcmIHZh
bHVlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uVW5saW5rYWJsZVRv
a2VuKQorICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuID0gRGVzdGlu
YXRpb25VbmxpbmthYmxlVG9rZW4geyB9OworICAgICAgICAgICAgZGVzdGluYXRpb25Vbmxpbmth
YmxlVG9rZW4tPnZhbHVlQmFzZTY0VVJMID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgdm9p
ZCBzZXREZXN0aW5hdGlvblNlY3JldFRva2VuKGNvbnN0IERlc3RpbmF0aW9uU2VjcmV0VG9rZW4m
IHRva2VuKSB7IGRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gPSB0b2tlbjsgfQorICAgICAgICBjb25z
dCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4gdG9rZW5QdWJsaWNLZXlVUkwoKSBjb25zdCB7IHJl
dHVybiBkZXN0aW5hdGlvblNpdGUgPyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5QdWJs
aWNLZXlVUkwoKmRlc3RpbmF0aW9uU2l0ZSkgOiBVUkwoKTsgfQorICAgICAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPGNvbnN0IFVSTD4gdG9rZW5TaWduYXR1cmVVUkwoKSBjb25zdCB7IHJldHVybiBk
ZXN0aW5hdGlvblNpdGUgPyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1cmVV
UkwoKmRlc3RpbmF0aW9uU2l0ZSkgOiBVUkwoKTsgfQorICAgICAgICBXRUJDT1JFX0VYUE9SVCBS
ZWY8SlNPTjo6T2JqZWN0PiB0b2tlblNpZ25hdHVyZUpTT04oKSBjb25zdDsKKwogICAgICAgICB1
aW50OF90IGRhdGEgeyAwIH07CiAgICAgICAgIFByaW9yaXR5VmFsdWUgcHJpb3JpdHk7CiAgICAg
ICAgIFdhc1NlbnQgd2FzU2VudCA9IFdhc1NlbnQ6Ok5vOwogICAgICAgICBzdGQ6Om9wdGlvbmFs
PFJlZ2lzdHJhYmxlRG9tYWluPiBzb3VyY2VSZWdpc3RyYWJsZURvbWFpbjsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxFcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlPiBlcGhlbWVyYWxEZXN0aW5hdGlv
bk5vbmNlOworICAgICAgICBzdGQ6Om9wdGlvbmFsPERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2Vu
PiBkZXN0aW5hdGlvblVubGlua2FibGVUb2tlbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxEZXN0
aW5hdGlvblNlY3JldFRva2VuPiBkZXN0aW5hdGlvblNlY3JldFRva2VuOworICAgICAgICBzdGQ6
Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBkZXN0aW5hdGlvblNpdGU7CiAKICAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtMzM4LDggKzQwMCwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRFcGhlbWVyYWwoQXR0cmlidXRpb25FcGhlbWVyYWwgaXNFcGhl
bWVyYWwpIHsgbV9pc0VwaGVtZXJhbCA9IGlzRXBoZW1lcmFsOyB9CiAKICAgICAvLyBNQVJLOiAt
IEZyYXVkIFByZXZlbnRpb24KLSAgICBXRUJDT1JFX0VYUE9SVCBVUkwgdG9rZW5QdWJsaWNLZXlV
UkwoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBVUkwgdG9rZW5TaWduYXR1cmVVUkwoKSBj
b25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4g
dG9rZW5QdWJsaWNLZXlVUkwoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29u
c3Qgc3RkOjpvcHRpb25hbDxjb25zdCBVUkw+IHRva2VuUHVibGljS2V5VVJMKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJik7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RkOjpvcHRpb25hbDxj
b25zdCBVUkw+IHRva2VuU2lnbmF0dXJlVVJMKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgVVJMPiB0b2tlblNpZ25hdHVyZVVSTChj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEpTT046
Ok9iamVjdD4gdG9rZW5TaWduYXR1cmVKU09OKCkgY29uc3Q7CiAKQEAgLTM1NywyNCArNDIxLDIy
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVwaGVtZXJhbFNvdXJjZU5v
bmNlKEVwaGVtZXJhbFNvdXJjZU5vbmNlJiYpOwogICAgIHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFs
U291cmNlTm9uY2U+IGVwaGVtZXJhbFNvdXJjZU5vbmNlKCkgY29uc3QgeyByZXR1cm4gbV9lcGhl
bWVyYWxTb3VyY2VOb25jZTsgfTsKICAgICB2b2lkIGNsZWFyRXBoZW1lcmFsU291cmNlTm9uY2Uo
KSB7IG1fZXBoZW1lcmFsU291cmNlTm9uY2UucmVzZXQoKTsgfTsKLQotICAgIHN0cnVjdCBTb3Vy
Y2VTZWNyZXRUb2tlbiB7Ci0gICAgICAgIFN0cmluZyB0b2tlbkJhc2U2NFVSTDsKLSAgICAgICAg
U3RyaW5nIHNpZ25hdHVyZUJhc2U2NFVSTDsKLSAgICAgICAgU3RyaW5nIGtleUlEQmFzZTY0VVJM
OwotCi0gICAgICAgIFNvdXJjZVNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotICAg
ICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKLSAgICB9OworICAgIAorICAgIHN0YXRpYyBib29s
IGlzTm9uY2VWYWxpZChjb25zdCBTdHJpbmcmKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjYWxjdWxhdGVBbmRVcGRhdGVT
b3VyY2VVbmxpbmthYmxlVG9rZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRV
UkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeHBlY3RlZDxEZXN0aW5hdGlvblVubGlu
a2FibGVUb2tlbiwgU3RyaW5nPiBjYWxjdWxhdGVBbmRVcGRhdGVEZXN0aW5hdGlvblVubGlua2Fi
bGVUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclB1YmxpY0tleUJhc2U2NFVSTCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJj
ZVNlY3JldFRva2VuKGNvbnN0IFN0cmluZyYgc2VydmVyUmVzcG9uc2VCYXNlNjRVUkwpOworICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeHBlY3RlZDxEZXN0aW5hdGlvblNlY3JldFRva2VuLCBT
dHJpbmc+IGNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uU2VjcmV0VG9rZW4oY29uc3QgU3Ry
aW5nJiBzZXJ2ZXJSZXNwb25zZUJhc2U2NFVSTCwgRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4m
KTsKICNlbmRpZgogCisgICAgU291cmNlVW5saW5rYWJsZVRva2VuJiBzb3VyY2VVbmxpbmthYmxl
VG9rZW4oKSB7IHJldHVybiBtX3NvdXJjZVVubGlua2FibGVUb2tlbjsgfQogICAgIHZvaWQgc2V0
U291cmNlVW5saW5rYWJsZVRva2VuVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBtX3NvdXJj
ZVVubGlua2FibGVUb2tlbi52YWx1ZUJhc2U2NFVSTCA9IHZhbHVlOyB9CiAgICAgY29uc3Qgc3Rk
OjpvcHRpb25hbDxTb3VyY2VTZWNyZXRUb2tlbj4mIHNvdXJjZVNlY3JldFRva2VuKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VTZWNyZXRUb2tlbjsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0U291cmNlU2VjcmV0VG9rZW4oU291cmNlU2VjcmV0VG9rZW4mJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXREZXN0aW5hdGlvblNlY3JldFRva2VuKERlc3RpbmF0aW9uU2VjcmV0VG9r
ZW4mJik7CisKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gZGVjb2RlKERlY29kZXImKTsKQEAgLTM4NSw2
ICs0NDcsMTEgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgRXhwZWN0ZWQ8QXR0cmlidXRpb25Ucmln
Z2VyRGF0YSwgU3RyaW5nPiBwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdFF1ZXJ5KGNvbnN0IFVSTCYp
OwogICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0OwogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjYWxjdWxhdGVBbmRVcGRhdGVVbmxpbmthYmxl
VG9rZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwsIFVubGlua2FibGVU
b2tlbiYsIGNvbnN0IFN0cmluZyYgY29udGV4dEZvckxvZ01lc3NhZ2UpOworICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gY2FsY3VsYXRlQW5kVXBkYXRlU2VjcmV0VG9rZW4oY29uc3Qg
U3RyaW5nJiBzZXJ2ZXJSZXNwb25zZUJhc2U2NFVSTCwgVW5saW5rYWJsZVRva2VuJiwgU2VjcmV0
VG9rZW4mLCBjb25zdCBTdHJpbmcmIGNvbnRleHRGb3JMb2dNZXNzYWdlKTsKKyNlbmRpZgorCiAg
ICAgU291cmNlSUQgbV9zb3VyY2VJRDsKICAgICBTb3VyY2VTaXRlIG1fc291cmNlU2l0ZTsKICAg
ICBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSBtX2Rlc3RpbmF0aW9uU2l0ZTsKQEAgLTM5NCwx
NyArNDYxLDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPEF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGE+IG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKICAgICBBdHRyaWJ1dGlvblRpbWVUb1Nl
bmREYXRhIG1fdGltZXNUb1NlbmQ7CiAKLSAgICBzdHJ1Y3QgU291cmNlVW5saW5rYWJsZVRva2Vu
IHsKLSNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgUmV0YWluUHRyPFJTQUJTU0FUb2tlbkJs
aW5kZXI+IGJsaW5kZXI7Ci0gICAgICAgIFJldGFpblB0cjxSU0FCU1NBVG9rZW5XYWl0aW5nQWN0
aXZhdGlvbj4gd2FpdGluZ1Rva2VuOwotICAgICAgICBSZXRhaW5QdHI8UlNBQlNTQVRva2VuUmVh
ZHk+IHJlYWR5VG9rZW47Ci0jZW5kaWYKLSAgICAgICAgU3RyaW5nIHZhbHVlQmFzZTY0VVJMOwot
Ci0gICAgICAgIFNvdXJjZVVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKLSAg
ICB9OwotCiAgICAgc3RkOjpvcHRpb25hbDxFcGhlbWVyYWxTb3VyY2VOb25jZT4gbV9lcGhlbWVy
YWxTb3VyY2VOb25jZTsKICAgICBTb3VyY2VVbmxpbmthYmxlVG9rZW4gbV9zb3VyY2VVbmxpbmth
YmxlVG9rZW47CiAgICAgc3RkOjpvcHRpb25hbDxTb3VyY2VTZWNyZXRUb2tlbj4gbV9zb3VyY2VT
ZWNyZXRUb2tlbjsKQEAgLTUwNSwxMCArNTYxLDI3IEBAIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlPiBQcml2YXRlQ2xpY2tNZWFzdXJl
CiAgICAgcmV0dXJuIEVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgV1RGTW92ZSgqbm9uY2UpIH07CiB9
CiAKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpFcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKK3sKKyAgICBlbmNvZGVyIDw8IG5vbmNlOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
Pgorc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsRGVzdGlu
YXRpb25Ob25jZT4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbERlc3RpbmF0aW9u
Tm9uY2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBub25jZTsKKyAgICBkZWNvZGVyID4+IG5vbmNlOworICAgIGlmICghbm9uY2UpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIEVwaGVtZXJhbERlc3Rp
bmF0aW9uTm9uY2UgeyBXVEZNb3ZlKCpub25jZSkgfTsKK30KKwogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRh
dGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwgZGF0
YSA8PCBwcmlvcml0eSA8PCB3YXNTZW50IDw8IHNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluOworICAg
IGVuY29kZXIgPDwgZGF0YSA8PCBwcmlvcml0eSA8PCB3YXNTZW50IDw8IHNvdXJjZVJlZ2lzdHJh
YmxlRG9tYWluIDw8IGVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2UgPDwgZGVzdGluYXRpb25TaXRl
OwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtNTMzLDkgKzYwNiwyMSBAQCBzdGQ6
Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
PiBQcml2YXRlQ2xpY2tNZWFzdQogICAgIGRlY29kZXIgPj4gc291cmNlUmVnaXN0cmFibGVEb21h
aW47CiAgICAgaWYgKCFzb3VyY2VSZWdpc3RyYWJsZURvbWFpbikKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLSAgICAKKworICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxFcGhl
bWVyYWxEZXN0aW5hdGlvbk5vbmNlPj4gZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZTsKKyAgICBk
ZWNvZGVyID4+IGVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2U7CisgICAgaWYgKCFlcGhlbWVyYWxE
ZXN0aW5hdGlvbk5vbmNlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3Rk
OjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPj4gZGVzdGluYXRpb25T
aXRlOworICAgIGRlY29kZXIgPj4gZGVzdGluYXRpb25TaXRlOworICAgIGlmICghZGVzdGluYXRp
b25TaXRlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgQXR0cmlidXRpb25U
cmlnZ2VyRGF0YSBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhIHsgV1RGTW92ZSgqZGF0YSksIFByaW9y
aXR5IHsgKnByaW9yaXR5IH0sICp3YXNTZW50IH07CiAgICAgYXR0cmlidXRpb25UcmlnZ2VyRGF0
YS5zb3VyY2VSZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUoKnNvdXJjZVJlZ2lzdHJhYmxlRG9t
YWluKTsKKyAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmVwaGVtZXJhbERlc3RpbmF0aW9uTm9u
Y2UgPSBXVEZNb3ZlKCplcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlKTsKKyAgICBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLmRlc3RpbmF0aW9uU2l0ZSA9IFdURk1vdmUoKmRlc3RpbmF0aW9uU2l0ZSk7
CiAgICAgcmV0dXJuIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29j
b2EubW0KaW5kZXggMjNkODdjMjdhYTFiNWExZDNiMDYwZDk4NjE4YmU4NzY1MWZhNzg5My4uYmY3
ZWQ4YTJhNGMzZjM3OTUxZmMxZGZlMzA3ZWY3MDNjOTVkNzJhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29j
b2EubW0KQEAgLTMxLDY2ICszMSwxMDIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RkOjpv
cHRpb25hbDxTdHJpbmc+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRh
dGVTb3VyY2VVbmxpbmthYmxlVG9rZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJQdWJsaWNLZXlCYXNl
NjRVUkwpCit7CisgICAgcmV0dXJuIGNhbGN1bGF0ZUFuZFVwZGF0ZVVubGlua2FibGVUb2tlbihz
ZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwsIG1fc291cmNlVW5saW5rYWJsZVRva2VuLCAic291cmNl
Il9zKTsKK30KKworRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9u
VW5saW5rYWJsZVRva2VuLCBTdHJpbmc+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxh
dGVBbmRVcGRhdGVEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZl
clB1YmxpY0tleUJhc2U2NFVSTCkKK3sKKyAgICBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBk
ZXN0aW5hdGlvblRva2VuOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gY2FsY3VsYXRlQW5kVXBk
YXRlVW5saW5rYWJsZVRva2VuKHNlcnZlclB1YmxpY0tleUJhc2U2NFVSTCwgZGVzdGluYXRpb25U
b2tlbiwgImRlc3RpbmF0aW9uIl9zKTsKKyAgICBpZiAoZXJyb3JNZXNzYWdlKQorICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoKmVycm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIGRlc3RpbmF0
aW9uVG9rZW47Cit9CisKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlVW5saW5rYWJsZVRva2VuKGNvbnN0IFN0cmluZyYgc2Vy
dmVyUHVibGljS2V5QmFzZTY0VVJMLCBVbmxpbmthYmxlVG9rZW4mIHVubGlua2FibGVUb2tlbiwg
Y29uc3QgU3RyaW5nJiBjb250ZXh0Rm9yTG9nTWVzc2FnZSkKIHsKICNpZiBIQVZFKFJTQV9CU1NB
KQogICAgIHsKICAgICAgICAgYXV0byBzZXJ2ZXJQdWJsaWNLZXlEYXRhID0gYmFzZTY0VVJMRGVj
b2RlKHNlcnZlclB1YmxpY0tleUJhc2U2NFVSTCk7CiAgICAgICAgIGlmICghc2VydmVyUHVibGlj
S2V5RGF0YSkKLSAgICAgICAgICAgIHJldHVybiAiQ291bGQgbm90IGRlY29kZSB0aGUgc291cmNl
J3MgcHVibGljIGtleSBkYXRhLiJfczsKKyAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJD
b3VsZCBub3QgZGVjb2RlIHRoZSAiLCBjb250ZXh0Rm9yTG9nTWVzc2FnZSwgIidzIHB1YmxpYyBr
ZXkgZGF0YS4iKTsKICAgICAgICAgYXV0byBzZXJ2ZXJQdWJsaWNLZXkgPSBhZG9wdE5TKFtbTlNE
YXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnNlcnZlclB1YmxpY0tleURhdGEtPmRhdGEoKSBsZW5n
dGg6c2VydmVyUHVibGljS2V5RGF0YS0+c2l6ZSgpXSk7CiAKICAgICAgICAgTlNFcnJvciogbnNF
cnJvciA9IDA7Ci0gICAgICAgIG1fc291cmNlVW5saW5rYWJsZVRva2VuLmJsaW5kZXIgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jUlNBQlNTQVRva2VuQmxpbmRlckluc3RhbmNlKCkgaW5pdFdpdGhQdWJs
aWNLZXk6c2VydmVyUHVibGljS2V5LmdldCgpIGVycm9yOiZuc0Vycm9yXSk7CisgICAgICAgIHVu
bGlua2FibGVUb2tlbi5ibGluZGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1JTQUJTU0FUb2tlbkJs
aW5kZXJJbnN0YW5jZSgpIGluaXRXaXRoUHVibGljS2V5OnNlcnZlclB1YmxpY0tleS5nZXQoKSBl
cnJvcjombnNFcnJvcl0pOwogICAgICAgICBpZiAobnNFcnJvcikKICAgICAgICAgICAgIHJldHVy
biBuc0Vycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uOwotICAgICAgICBpZiAoIW1fc291cmNlVW5s
aW5rYWJsZVRva2VuLmJsaW5kZXIpCi0gICAgICAgICAgICByZXR1cm4gIkRpZCBub3QgZ2V0IGEg
c291cmNlIHVubGlua2FibGUgdG9rZW4gYmxpbmRlci4iX3M7CisgICAgICAgIGlmICghdW5saW5r
YWJsZVRva2VuLmJsaW5kZXIpCisgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiRGlkIG5v
dCBnZXQgYSAiLCBjb250ZXh0Rm9yTG9nTWVzc2FnZSwgIiB1bmxpbmthYmxlIHRva2VuIGJsaW5k
ZXIuIik7CiAgICAgfQogCiAgICAgTlNFcnJvciogbnNFcnJvciA9IDA7Ci0gICAgbV9zb3VyY2VV
bmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuID0gW21fc291cmNlVW5saW5rYWJsZVRva2VuLmJs
aW5kZXIgdG9rZW5XYWl0aW5nQWN0aXZhdGlvbldpdGhDb250ZW50Om51bGxwdHIgZXJyb3I6Jm5z
RXJyb3JdOworICAgIHVubGlua2FibGVUb2tlbi53YWl0aW5nVG9rZW4gPSBbdW5saW5rYWJsZVRv
a2VuLmJsaW5kZXIgdG9rZW5XYWl0aW5nQWN0aXZhdGlvbldpdGhDb250ZW50Om51bGxwdHIgZXJy
b3I6Jm5zRXJyb3JdOwogICAgIGlmIChuc0Vycm9yKQogICAgICAgICByZXR1cm4gbnNFcnJvci5s
b2NhbGl6ZWREZXNjcmlwdGlvbjsKLSAgICBpZiAoIW1fc291cmNlVW5saW5rYWJsZVRva2VuLndh
aXRpbmdUb2tlbikKLSAgICAgICAgcmV0dXJuICJEaWQgbm90IGdldCBhIHNvdXJjZSB1bmxpbmth
YmxlIHRva2VuIHdhaXRpbmcgdG9rZW4uIl9zOworICAgIGlmICghdW5saW5rYWJsZVRva2VuLndh
aXRpbmdUb2tlbikKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkRpZCBub3QgZ2V0IGEgIiwg
Y29udGV4dEZvckxvZ01lc3NhZ2UsICIgdW5saW5rYWJsZSB0b2tlbiB3YWl0aW5nIHRva2VuLiIp
OwogCi0gICAgbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4udmFsdWVCYXNlNjRVUkwgPSBiYXNlNjRV
UkxFbmNvZGVUb1N0cmluZyhbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuIGJs
aW5kZWRNZXNzYWdlXS5ieXRlcywgW21fc291cmNlVW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tl
biBibGluZGVkTWVzc2FnZV0ubGVuZ3RoKTsKKyAgICB1bmxpbmthYmxlVG9rZW4udmFsdWVCYXNl
NjRVUkwgPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhbdW5saW5rYWJsZVRva2VuLndhaXRpbmdU
b2tlbiBibGluZGVkTWVzc2FnZV0uYnl0ZXMsIFt1bmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2Vu
IGJsaW5kZWRNZXNzYWdlXS5sZW5ndGgpOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwpOworICAgIFVOVVNF
RF9QQVJBTSh1bmxpbmthYmxlVG9rZW4pOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0Rm9yTG9n
TWVzc2FnZSk7CiAgICAgcmV0dXJuICJVbmxpbmthYmxlIHRva2VucyBhcmUgbm90IHN1cHBvcnRl
ZCBieSB0aGlzIHBsYXRmb3JtLiJfczsKICNlbmRpZiAvLyBIQVZFKFJTQV9CU1NBKQogfQogCiBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFu
ZFVwZGF0ZVNvdXJjZVNlY3JldFRva2VuKGNvbnN0IFN0cmluZyYgc2VydmVyUmVzcG9uc2VCYXNl
NjRVUkwpCit7CisgICAgU291cmNlU2VjcmV0VG9rZW4gc2VjcmV0VG9rZW47CisgICAgaWYgKGF1
dG8gZXJyb3JNZXNzYWdlID0gY2FsY3VsYXRlQW5kVXBkYXRlU2VjcmV0VG9rZW4oc2VydmVyUmVz
cG9uc2VCYXNlNjRVUkwsIG1fc291cmNlVW5saW5rYWJsZVRva2VuLCBzZWNyZXRUb2tlbiwgInNv
dXJjZSJfcykpCisgICAgICAgIHJldHVybiBlcnJvck1lc3NhZ2U7CisgICAgCisgICAgbV9zb3Vy
Y2VTZWNyZXRUb2tlbiA9IFdURk1vdmUoc2VjcmV0VG9rZW4pOworICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Cit9CisKK0V4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlv
blNlY3JldFRva2VuLCBTdHJpbmc+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVB
bmRVcGRhdGVEZXN0aW5hdGlvblNlY3JldFRva2VuKGNvbnN0IFN0cmluZyYgc2VydmVyUmVzcG9u
c2VCYXNlNjRVUkwsIERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuJiB1bmxpbmthYmxlVG9rZW4p
Cit7CisgICAgRGVzdGluYXRpb25TZWNyZXRUb2tlbiBzZWNyZXRUb2tlbjsKKyAgICBhdXRvIGVy
cm9yTWVzc2FnZSA9IGNhbGN1bGF0ZUFuZFVwZGF0ZVNlY3JldFRva2VuKHNlcnZlclJlc3BvbnNl
QmFzZTY0VVJMLCB1bmxpbmthYmxlVG9rZW4sIHNlY3JldFRva2VuLCAic291cmNlIl9zKTsKKyAg
ICBpZiAoZXJyb3JNZXNzYWdlKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoKmVycm9y
TWVzc2FnZSk7CisgICAgcmV0dXJuIHNlY3JldFRva2VuOworfQorCitzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNlY3JldFRv
a2VuKGNvbnN0IFN0cmluZyYgc2VydmVyUmVzcG9uc2VCYXNlNjRVUkwsIFVubGlua2FibGVUb2tl
biYgdW5saW5rYWJsZVRva2VuLCBTZWNyZXRUb2tlbiYgc2VjcmV0VG9rZW4sIGNvbnN0IFN0cmlu
ZyYgY29udGV4dEZvckxvZ01lc3NhZ2UpCiB7CiAjaWYgSEFWRShSU0FfQlNTQSkKLSAgICBpZiAo
IW1fc291cmNlVW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tlbikKLSAgICAgICAgcmV0dXJuICJE
aWQgbm90IGZpbmQgYSBzb3VyY2UgdW5saW5rYWJsZSB0b2tlbiB3YWl0aW5nIHRva2VuLiJfczsK
KyAgICBpZiAoIXVubGlua2FibGVUb2tlbi53YWl0aW5nVG9rZW4pCisgICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKCJEaWQgbm90IGZpbmQgYSAiLCBjb250ZXh0Rm9yTG9nTWVzc2FnZSwgIiB1bmxp
bmthYmxlIHRva2VuIHdhaXRpbmcgdG9rZW4uIik7CiAKICAgICB7CiAgICAgICAgIGF1dG8gc2Vy
dmVyUmVzcG9uc2VEYXRhID0gYmFzZTY0VVJMRGVjb2RlKHNlcnZlclJlc3BvbnNlQmFzZTY0VVJM
KTsKICAgICAgICAgaWYgKCFzZXJ2ZXJSZXNwb25zZURhdGEpCi0gICAgICAgICAgICByZXR1cm4g
IkNvdWxkIG5vdCBkZWNvZGUgc291cmNlIHJlc3BvbnNlIGRhdGEuIl9zOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBkZWNvZGUgIiwgY29udGV4dEZvckxvZ01lc3Nh
Z2UsICIgcmVzcG9uc2UgZGF0YS4iKTsKICAgICAgICAgYXV0byBzZXJ2ZXJSZXNwb25zZSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6c2VydmVyUmVzcG9uc2VEYXRhLT5k
YXRhKCkgbGVuZ3RoOnNlcnZlclJlc3BvbnNlRGF0YS0+c2l6ZSgpXSk7CiAKICAgICAgICAgTlNF
cnJvciogbnNFcnJvciA9IDA7Ci0gICAgICAgIG1fc291cmNlVW5saW5rYWJsZVRva2VuLnJlYWR5
VG9rZW4gPSBbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuIGFjdGl2YXRlVG9r
ZW5XaXRoU2VydmVyUmVzcG9uc2U6c2VydmVyUmVzcG9uc2UuZ2V0KCkgZXJyb3I6Jm5zRXJyb3Jd
OworICAgICAgICB1bmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiA9IFt1bmxpbmthYmxlVG9rZW4u
d2FpdGluZ1Rva2VuIGFjdGl2YXRlVG9rZW5XaXRoU2VydmVyUmVzcG9uc2U6c2VydmVyUmVzcG9u
c2UuZ2V0KCkgZXJyb3I6Jm5zRXJyb3JdOwogICAgICAgICBpZiAobnNFcnJvcikKICAgICAgICAg
ICAgIHJldHVybiBuc0Vycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uOwotICAgICAgICBpZiAoIW1f
c291cmNlVW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4pCi0gICAgICAgICAgICByZXR1cm4gIkRp
ZCBub3QgZ2V0IGEgc291cmNlIHVubGlua2FibGUgdG9rZW4gcmVhZHkgdG9rZW4uIl9zOworICAg
ICAgICBpZiAoIXVubGlua2FibGVUb2tlbi5yZWFkeVRva2VuKQorICAgICAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoIkRpZCBub3QgZ2V0IGEgIiwgY29udGV4dEZvckxvZ01lc3NhZ2UsICIgdW5s
aW5rYWJsZSB0b2tlbiByZWFkeSB0b2tlbi4iKTsKICAgICB9CiAKLSAgICBTb3VyY2VTZWNyZXRU
b2tlbiB0b2tlbjsKLSAgICB0b2tlbi50b2tlbkJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29kZVRv
U3RyaW5nKFttX3NvdXJjZVVubGlua2FibGVUb2tlbi5yZWFkeVRva2VuIHRva2VuQ29udGVudF0u
Ynl0ZXMsIFttX3NvdXJjZVVubGlua2FibGVUb2tlbi5yZWFkeVRva2VuIHRva2VuQ29udGVudF0u
bGVuZ3RoKTsKLSAgICB0b2tlbi5rZXlJREJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKFttX3NvdXJjZVVubGlua2FibGVUb2tlbi5yZWFkeVRva2VuIGtleUlkXS5ieXRlcywgW21f
c291cmNlVW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4ga2V5SWRdLmxlbmd0aCk7Ci0gICAgdG9r
ZW4uc2lnbmF0dXJlQmFzZTY0VVJMID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoW21fc291cmNl
VW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4gc2lnbmF0dXJlXS5ieXRlcywgW21fc291cmNlVW5s
aW5rYWJsZVRva2VuLnJlYWR5VG9rZW4gc2lnbmF0dXJlXS5sZW5ndGgpOworICAgIHNlY3JldFRv
a2VuLnRva2VuQmFzZTY0VVJMID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoW3VubGlua2FibGVU
b2tlbi5yZWFkeVRva2VuIHRva2VuQ29udGVudF0uYnl0ZXMsIFt1bmxpbmthYmxlVG9rZW4ucmVh
ZHlUb2tlbiB0b2tlbkNvbnRlbnRdLmxlbmd0aCk7CisgICAgc2VjcmV0VG9rZW4ua2V5SURCYXNl
NjRVUkwgPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhbdW5saW5rYWJsZVRva2VuLnJlYWR5VG9r
ZW4ga2V5SWRdLmJ5dGVzLCBbdW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4ga2V5SWRdLmxlbmd0
aCk7CisgICAgc2VjcmV0VG9rZW4uc2lnbmF0dXJlQmFzZTY0VVJMID0gYmFzZTY0VVJMRW5jb2Rl
VG9TdHJpbmcoW3VubGlua2FibGVUb2tlbi5yZWFkeVRva2VuIHNpZ25hdHVyZV0uYnl0ZXMsIFt1
bmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiBzaWduYXR1cmVdLmxlbmd0aCk7CiAKLSAgICBtX3Nv
dXJjZVNlY3JldFRva2VuID0gV1RGTW92ZSh0b2tlbik7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlcnZlclJlc3BvbnNlQmFzZTY0VVJMKTsKKyAg
ICBVTlVTRURfUEFSQU0odW5saW5rYWJsZVRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0oc2VjcmV0
VG9rZW4pOworICAgIFVOVVNFRF9QQVJBTShjb250ZXh0Rm9yTG9nTWVzc2FnZSk7CiAgICAgcmV0
dXJuICJVbmxpbmthYmxlIHRva2VucyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIHBsYXRmb3Jt
LiJfczsKICNlbmRpZiAvLyBIQVZFKFJTQV9CU1NBKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcAppbmRleCAxNDg2ZDUyMjk2ZjY3
NTFmMzEwYzc5ODE2NmJmN2VkYmVkMmFiNDMyLi5hOTA0NTRlZTM3NjVhOGQ4NDhlYmE2MzEyYTI2
ZmE0OGNkZjBjYjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rh
dGFiYXNlVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rh
dGFiYXNlVXRpbGl0aWVzLmNwcApAQCAtMTYwLDE1ICsxNjAsMjYgQEAgV2ViQ29yZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgRGF0YWJhc2VVdGlsaXRpZXM6OmJ1aWxkUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQKIAogICAgIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50IGF0dHJpYnV0
aW9uKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VJRChzb3VyY2VJRCks
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlKFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJp
bmcoc291cmNlU2l0ZURvbWFpbikpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVu
Y2hlY2tlZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhkZXN0aW5hdGlvblNpdGVE
b21haW4pKSwgYnVuZGxlSUQsIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lT2ZBZENsaWNr
KSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRXBoZW1lcmFs
OjpObyk7CiAKKyAgICAvLyBUaGVzZSBpbmRpY2VzIGFyZSB6ZXJvLWJhc2VkIGZvciBzb21lIHJl
YXNvbi4gVGhlcmUgc2hvdWxkIGJlIGEgY29tbWVudCBoZXJlIGV4cGxhaW5pbmcgd2h5LgogICAg
IGlmIChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlv
blR5cGU6OkF0dHJpYnV0ZWQpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
ID0gc3RhdGVtZW50LmNvbHVtbkludCgzKTsKICAgICAgICAgYXV0byBwcmlvcml0eSA9IHN0YXRl
bWVudC5jb2x1bW5JbnQoNCk7CiAgICAgICAgIGF1dG8gc291cmNlRWFybGllc3RUaW1lVG9TZW5k
VmFsdWUgPSBzdGF0ZW1lbnQuY29sdW1uRG91YmxlKDYpOwogICAgICAgICBhdXRvIGRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQuY29sdW1uRG91YmxlKDEwKTsK
KyAgICAgICAgYXV0byBkZXN0aW5hdGlvblRva2VuID0gc3RhdGVtZW50LmNvbHVtblRleHQoMTIp
OworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uU2lnbmF0dXJlID0gc3RhdGVtZW50LmNvbHVtblRl
eHQoMTMpOworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uS2V5SUQgPSBzdGF0ZW1lbnQuY29sdW1u
VGV4dCgxNCk7CiAKICAgICAgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgIT0gLTEpCiAg
ICAgICAgICAgICBhdHRyaWJ1dGlvbi5zZXRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7IHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6UHJpb3JpdHkocHJpb3JpdHkpIH0pOwogCisgICAgICAgIFdlYkNvcmU6OlByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuIGRlc3RpbmF0aW9uU2VjcmV0
VG9rZW47CisgICAgICAgIGRlc3RpbmF0aW9uU2VjcmV0VG9rZW4udG9rZW5CYXNlNjRVUkwgPSBk
ZXN0aW5hdGlvblRva2VuOworICAgICAgICBkZXN0aW5hdGlvblNlY3JldFRva2VuLnNpZ25hdHVy
ZUJhc2U2NFVSTCA9IGRlc3RpbmF0aW9uU2lnbmF0dXJlOworICAgICAgICBkZXN0aW5hdGlvblNl
Y3JldFRva2VuLmtleUlEQmFzZTY0VVJMID0gZGVzdGluYXRpb25LZXlJRDsKKworICAgICAgICBh
dHRyaWJ1dGlvbi5zZXREZXN0aW5hdGlvblNlY3JldFRva2VuKFdURk1vdmUoZGVzdGluYXRpb25T
ZWNyZXRUb2tlbikpOworCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHNvdXJjZUVh
cmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZGVzdGlu
YXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ7CiAKQEAgLTE4Miw3ICsxOTMsMTIgQEAgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgRGF0YWJhc2VVdGlsaXRpZXM6OmJ1aWxkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQKICAgICAgICAgYXR0cmlidXRpb24uc2V0VGltZXNUb1NlbmQoeyBzb3Vy
Y2VFYXJsaWVzdFRpbWVUb1NlbmQsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kIH0pOwog
ICAgIH0KIAotICAgIGF0dHJpYnV0aW9uLnNldFNvdXJjZVNlY3JldFRva2VuKHsgdG9rZW4sIHNp
Z25hdHVyZSwga2V5SUQgfSk7CisgICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZVNlY3JldFRva2VuIHNvdXJjZVNlY3JldFRva2VuOworICAgIHNvdXJjZVNlY3JldFRv
a2VuLnRva2VuQmFzZTY0VVJMID0gdG9rZW47CisgICAgc291cmNlU2VjcmV0VG9rZW4uc2lnbmF0
dXJlQmFzZTY0VVJMID0gc2lnbmF0dXJlOworICAgIHNvdXJjZVNlY3JldFRva2VuLmtleUlEQmFz
ZTY0VVJMID0ga2V5SUQ7CisKKyAgICBhdHRyaWJ1dGlvbi5zZXRTb3VyY2VTZWNyZXRUb2tlbihX
VEZNb3ZlKHNvdXJjZVNlY3JldFRva2VuKSk7CiAKICAgICByZXR1cm4gYXR0cmlidXRpb247CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYzMzZj
OC4uZTUwY2Y0YWJiZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2OWM1NGIwOWQ3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cApAQCAtMTAwNiw5ICsxMDA2LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAKICAgICBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blRyaWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRh
dGE7CiAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgIGlmIChh
dXRvIHJlc3VsdCA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJp
YnV0aW9uUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QudXJsKCkpKQorICAgICAgICBpZiAoYXV0byBy
ZXN1bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlv
blJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICAgICAgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gcmVzdWx0LnZhbHVlKCk7Ci0g
ICAgICAgIGVsc2UgaWYgKCFyZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkpCisgICAgICAgICAgICBp
ZiAocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQorICAgICAg
ICAgICAgICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+
ZGVzdGluYXRpb25TaXRlID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0LmZp
cnN0UGFydHlGb3JDb29raWVzKCkgfTsKKyAgICAgICAgfSBlbHNlIGlmICghcmVzdWx0LmVycm9y
KCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIHJlc3VsdC5l
cnJvcigpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCmluZGV4IGJjYTdmNTE5MzRj
OGY2MzIyMzBiMjcxNDExOWJiMmU2NzNjZmE1ZjkuLjBjYWE4NzEyOWQ0ODg5Y2ZlNTU5ZDQ4NmU3
Y2ZiNGRiYmU5NzExMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcApAQCAtNDAsNyArNDAsNyBA
QCBjb25zdGV4cHIgYXV0byBzZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFz
RXhwaXJlZFF1ZXJ5ID0gIlVQREFURSBVbgogY29uc3RleHByIGF1dG8gaW5zZXJ0VW5hdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRP
IFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWluSUQs
IGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCiAgICAgInNvdXJjZUlELCB0aW1lT2ZBZENsaWNr
LCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCkgVkFM
VUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfczsKIGNvbnN0ZXhwciBhdXRvIGluc2VydEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBMQUNF
IElOVE8gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWlu
SUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCi0gICAgInNvdXJjZUlELCBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLCBwcmlvcml0eSwgdGltZU9mQWRDbGljaywgZWFybGllc3RUaW1lVG9TZW5k
VG9Tb3VyY2UsIHRva2VuLCBzaWduYXR1cmUsIGtleUlELCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rl
c3RpbmF0aW9uLCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEKSBWQUxVRVMgKD8sID8sID8sID8s
ID8sID8sID8sID8sID8sID8sID8sID8pIl9zOworICAgICJzb3VyY2VJRCwgYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSwgcHJpb3JpdHksIHRpbWVPZkFkQ2xpY2ssIGVhcmxpZXN0VGltZVRvU2VuZFRv
U291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1lVG9TZW5kVG9EZXN0
aW5hdGlvbiwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCwgZGVzdGluYXRpb25Ub2tlbiwgZGVz
dGluYXRpb25TaWduYXR1cmUsIGRlc3RpbmF0aW9uS2V5SUQpIFZBTFVFUyAoPywgPywgPywgPywg
PywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3M7CiBjb25zdGV4cHIgYXV0byBmaW5k
VW5hdHRyaWJ1dGVkUXVlcnkgPSAiU0VMRUNUICogRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlv
blNpdGVEb21haW5JRCA9ID8gQU5EIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgPSA/Il9zOwog
Y29uc3RleHByIGF1dG8gZmluZEF0dHJpYnV0ZWRRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIEF0dHJp
YnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/
IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8gQU5EIHNvdXJjZUFwcGxpY2F0aW9uQnVu
ZGxlSUQgPSA/Il9zOwogY29uc3RleHByIGF1dG8gcmVtb3ZlVW5hdHRyaWJ1dGVkUXVlcnkgPSAi
REVMRVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291
cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/IEFORCBz
b3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEID0gPyJfczsKQEAgLTY0LDYgKzY0LDcgQEAgY29uc3Rl
eHByIGF1dG8gY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNSRUFU
RSBUQUJMRSBBdHRyaWJ1dGUKICAgICAic291cmNlU2l0ZURvbWFpbklEIElOVEVHRVIgTk9UIE5V
TEwsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIHNvdXJjZUlEIElO
VEVHRVIgTk9UIE5VTEwsICIKICAgICAiYXR0cmlidXRpb25UcmlnZ2VyRGF0YSBJTlRFR0VSIE5P
VCBOVUxMLCBwcmlvcml0eSBJTlRFR0VSIE5PVCBOVUxMLCB0aW1lT2ZBZENsaWNrIFJFQUwgTk9U
IE5VTEwsICIKICAgICAiZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgUkVBTCwgdG9rZW4gVEVY
VCwgc2lnbmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVzdGlu
YXRpb24gUkVBTCwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCBURVhULCAiCisgICAgImRlc3Rp
bmF0aW9uVG9rZW4gVEVYVCwgZGVzdGluYXRpb25TaWduYXR1cmUgVEVYVCwgZGVzdGluYXRpb25L
ZXlJRCBURVhULCAiCiAgICAgIkZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgUkVGRVJF
TkNFUyBQQ01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBGT1JF
SUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCiAgICAgIlBDTU9i
c2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9zOwogY29uc3RleHBy
IGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1dGVkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURvbWFp
bklEX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgb24gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgKCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklE
LCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEICkiX3M7CkBAIC04Niw3ICs4Nyw3IEBAIERhdGFi
YXNlOjpEYXRhYmFzZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgb3BlbkRhdGFiYXNlQW5kQ3JlYXRlU2NoZW1hSWZO
ZWNlc3NhcnkoKTsKICAgICBlbmFibGVGb3JlaWduS2V5cygpOwotICAgIGFkZEJ1bmRsZUlEQ29s
dW1uSWZOZWNlc3NhcnkoKTsKKyAgICBhZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVjZXNz
YXJ5KCk7CiAgICAgbWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCk7CiAgICAgYWxs
RGF0YWJhc2VzKCkuYWRkKHRoaXMpOwogfQpAQCAtMTgwLDYgKzE4MSw3IEBAIHZvaWQgRGF0YWJh
c2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50JiYKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gYXR0cmli
dXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpID8gYXR0cmlidXRpb24uYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSgpLnZhbHVlKCkuZGF0YSA6IC0xOwogICAgICAgICBhdXRvIHByaW9yaXR5ID0g
YXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpID8gYXR0cmlidXRpb24uYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSgpLnZhbHVlKCkucHJpb3JpdHkgOiAtMTsKICAgICAgICAgYXV0byBz
b3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLnNvdXJj
ZUVhcmxpZXN0VGltZVRvU2VuZCA/IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuc291cmNlRWFy
bGllc3RUaW1lVG9TZW5kLnZhbHVlKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDogLTE7
CisgICAgICAgIGF1dG8gZGVzdGluYXRpb25TZWNyZXRUb2tlbiA9IGF0dHJpYnV0aW9uLmF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEoKSA/IGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEo
KS52YWx1ZSgpLmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gOiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IGF1dG8gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1lc1Rv
U2VuZCgpLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID8gYXR0cmlidXRpb24udGltZXNU
b1NlbmQoKS5kZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZC52YWx1ZSgpLnNlY29uZHNTaW5j
ZUVwb2NoKCkudmFsdWUoKSA6IC0xOwogCiAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBp
bnNlcnRpbmcgYW4gYXR0cmlidXRlZCBwcml2YXRlIGNsaWNrIG1lYXN1cmVtZW50IHZhbHVlIGlu
dG8gdGhlIGRhdGFiYXNlIHdpdGhvdXQgdmFsaWQgcmVwb3J0IHRpbWVzLgpAQCAtMTk5LDYgKzIw
MSw5IEBAIHZvaWQgRGF0YWJhc2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKICAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+
YmluZFRleHQoMTAsIHNvdXJjZVNlY3JldFRva2VuID8gc291cmNlU2VjcmV0VG9rZW4tPmtleUlE
QmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBz
dGF0ZW1lbnQtPmJpbmREb3VibGUoMTEsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoMTIsIGF0dHJp
YnV0aW9uLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQoKSkgIT0gU1FMSVRFX09LCisgICAgICAg
ICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEzLCBkZXN0aW5hdGlvblNlY3JldFRva2VuID8g
ZGVzdGluYXRpb25TZWNyZXRUb2tlbi0+dG9rZW5CYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAh
PSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoMTQsIGRlc3Rp
bmF0aW9uU2VjcmV0VG9rZW4gPyBkZXN0aW5hdGlvblNlY3JldFRva2VuLT5zaWduYXR1cmVCYXNl
NjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRl
bWVudC0+YmluZFRleHQoMTUsIGRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gPyBkZXN0aW5hdGlvblNl
Y3JldFRva2VuLT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwog
ICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBE
YXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaW5zZXJ0QXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVfTE9H
X1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY5OSwyMCArNzA0LDE4IEBAIHZvaWQgRGF0YWJhc2U6
OmRlc3Ryb3lTdGF0ZW1lbnRzKCkKICAgICBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVtZW50
ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBEYXRhYmFzZTo6YWRkQnVuZGxlSURDb2x1bW5JZk5lY2Vz
c2FyeSgpCit2b2lkIERhdGFiYXNlOjphZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVjZXNz
YXJ5KCkKIHsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYXQgdGhlIGVuZCBvZiAyMDIxLiBO
byBwdWJsaWMgcmVsZWFzZSB3YXMgbWFkZSB3aXRoIHRoZSBzY2hlbWEgbWlzc2luZyBzb3VyY2VB
cHBsaWNhdGlvbkJ1bmRsZUlELCBzbyB0aGlzIGlzIG9ubHkgbmVlZGVkIHRvIG1pZ3JhdGUgaW50
ZXJuYWwgdXNlcnMgd2hvIHVwZGF0ZWQgaW4gU2VwdGVtYmVyIDIwMjEuCi0gICAgU3RyaW5nIGF0
dHJpYnV0ZWRUYWJsZU5hbWUoIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIpOwot
ICAgIFN0cmluZyB1bmF0dHJpYnV0ZWRUYWJsZU5hbWUoIlVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Il9zKTsKLSAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRENv
bHVtbk5hbWUoInNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQiX3MpOwotICAgIGF1dG8gY2hlY2tD
b2x1bW5zID0gWyZdIChjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkgewotICAgICAgICBhdXRvIGNv
bHVtbnMgPSBjb2x1bW5zRm9yVGFibGUodGFibGVOYW1lKTsKLSAgICAgICAgaWYgKCFjb2x1bW5z
LnNpemUoKSB8fCBjb2x1bW5zLmxhc3QoKSAhPSBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEQ29s
dW1uTmFtZSkKLSAgICAgICAgICAgIGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKHRhYmxlTmFtZSwg
c291cmNlQXBwbGljYXRpb25CdW5kbGVJRENvbHVtbk5hbWUpOwotICAgIH07Ci0gICAgY2hlY2tD
b2x1bW5zKGF0dHJpYnV0ZWRUYWJsZU5hbWUpOwotICAgIGNoZWNrQ29sdW1ucyh1bmF0dHJpYnV0
ZWRUYWJsZU5hbWUpOworICAgIFN0cmluZyBhdHRyaWJ1dGVkVGFibGVOYW1lKCJBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOworICAgIFN0cmluZyBkZXN0aW5hdGlvbktleUlE
Q29sdW1uTmFtZSgiZGVzdGluYXRpb25LZXlJRCJfcyk7CisgICAgYXV0byBjb2x1bW5zID0gY29s
dW1uc0ZvclRhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUpOworICAgIGlmICghY29sdW1ucy5zaXpl
KCkgfHwgY29sdW1ucy5sYXN0KCkgIT0gZGVzdGluYXRpb25LZXlJRENvbHVtbk5hbWUpIHsKKyAg
ICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSwgImRlc3Rp
bmF0aW9uVG9rZW4iX3MpOworICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShhdHRyaWJ1
dGVkVGFibGVOYW1lLCAiZGVzdGluYXRpb25TaWduYXR1cmUiX3MpOworICAgICAgICBhZGRNaXNz
aW5nQ29sdW1uVG9UYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCBkZXN0aW5hdGlvbktleUlEQ29s
dW1uTmFtZSk7CisgICAgfQogfQorCiBib29sIERhdGFiYXNlOjpuZWVkc1VwZGF0ZWRTY2hlbWEo
KQogewogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhdCB0aGUgZW5kIG9mIDIwMjEuIE5vIHB1
YmxpYyByZWxlYXNlIHdhcyBtYWRlIHdpdGggdGhlIHNjaGVtYSBtaXNzaW5nIHNvdXJjZUFwcGxp
Y2F0aW9uQnVuZGxlSUQsIHNvIHRoaXMgaXMgb25seSBuZWVkZWQgdG8gbWlncmF0ZSBpbnRlcm5h
bCB1c2VycyB3aG8gdXBkYXRlZCBpbiBTZXB0ZW1iZXIgMjAyMS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgK
aW5kZXggYTUwMzczNzgwZjIxN2IzNjM2NDRlMGJlNGUyYjI2MjM5NTk0MjgyMS4uYmI0OWJiNjJh
YTcxODBjNmQ3ZDYzMmNiYzExMzk5YjM0NzRhNTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKQEAg
LTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPERvbWFpbklEPiBkb21h
aW5JRChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIFN0cmluZyBnZXRE
b21haW5TdHJpbmdGcm9tRG9tYWluSUQoRG9tYWluSUQpIGNvbnN0IGZpbmFsOwogCi0gICAgdm9p
ZCBhZGRCdW5kbGVJRENvbHVtbklmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBhZGREZXN0aW5hdGlv
blRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBuZWVkc1VwZGF0ZWRTY2hlbWEo
KSBmaW5hbDsKICAgICBib29sIGNyZWF0ZVVuaXF1ZUluZGljZXMoKSBmaW5hbDsKICAgICBjb25z
dCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFu
ZEluZGV4UGFpcj4mIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKSBmaW5hbDsKQEAgLTEw
MCw2ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgU3RhdGVtZW50IG1fZG9tYWluSURG
cm9tU3RyaW5nU3RhdGVtZW50OwogICAgIG11dGFibGUgU3RhdGVtZW50IG1fZG9tYWluU3RyaW5n
RnJvbURvbWFpbklEU3RhdGVtZW50OwogICAgIG11dGFibGUgU3RhdGVtZW50IG1faW5zZXJ0T2Jz
ZXJ2ZWREb21haW5TdGF0ZW1lbnQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuPiBtX2Rlc3RpbmF0aW9u
U2VjcmV0VG9rZW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OlBDTQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuY3BwCmluZGV4IGRmZGU3YzgzNDE0YmY5YzJlMWQ4OTE0ZjFmNmFmOTY0MzEzYTM2M2Uu
LmQwZTNjYmJmNTEyMjk4Njc5NGM1YTcyODQ3MjdkMTQ2NTAxZGI5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXI6OnN0b3JlVW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGlmIChtX2ZyYXVkUHJldmVudGlvblZh
bHVlc0ZvclRlc3RpbmcpCi0gICAgICAgICAgICAgICAgbWVhc3VyZW1lbnQuc2V0U291cmNlVW5s
aW5rYWJsZVRva2VuVmFsdWUobV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLT51bmxp
bmthYmxlVG9rZW4pOworICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50LnNldFNvdXJjZVVubGlu
a2FibGVUb2tlblZhbHVlKG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+dW5saW5r
YWJsZVRva2VuRm9yU291cmNlKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgIGlmIChhdXRvIGVycm9yTWVzc2FnZSA9IG1lYXN1cmVtZW50
LmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2FibGVUb2tlbihwdWJsaWNLZXlCYXNlNjRV
UkwpKSB7CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXI6OnN0b3JlVW5hdHRyaWJ1dGVkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKICAgICAg
ICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgICAgICBnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4o
V1RGTW92ZShtZWFzdXJlbWVudCkpOworICAgICAgICAgICAgZ2V0U2lnbmVkVW5saW5rYWJsZVRv
a2VuRm9yU291cmNlKFdURk1vdmUobWVhc3VyZW1lbnQpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTE4LDEzICsxMTgsMTggQEAgdm9pZCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFRva2VuUHVibGljS2V5KFByaXZhdGVDbGlja01lYXN1
cmVtZW50JiYKICAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gdG9rZW5QdWJsaWNLZXlVUkwgPSBhdHRyaWJ1dGlvbi50b2tlblB1YmxpY0tleVVS
TCgpOworICAgIFVSTCB0b2tlblB1YmxpY0tleVVSTDsKICAgICBpZiAobV90b2tlblB1YmxpY0tl
eVVSTEZvclRlc3RpbmcpIHsKICAgICAgICAgaWYgKGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQg
PT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OkRl
c3RpbmF0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0b2tlblB1YmxpY0tleVVS
TCA9ICptX3Rva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZzsKICAgICAgICAgLy8gRklYTUUoMjI1
MzY0KQogICAgICAgICBwY21EYXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQ
Y21EYXRhQ2FycmllZDo6Tm9uUGVyc29uYWxseUlkZW50aWZpYWJsZTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpZiAoYXV0byBvcHRVUkwgPSBhdHRyaWJ1dGlvbi50b2tlblB1YmxpY0tleVVSTCgp
KQorICAgICAgICAgICAgdG9rZW5QdWJsaWNLZXlVUkwgPSAqb3B0VVJMOworICAgICAgICBlbHNl
CisgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHRva2VuUHVibGljS2V5VVJM
LmlzRW1wdHkoKSB8fCAhdG9rZW5QdWJsaWNLZXlVUkwuaXNWYWxpZCgpKQpAQCAtMTU2LDE4ICsx
NjEsNzEgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFRva2VuUHVi
bGljS2V5KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKICAgICB9KTsKIH0KIAotdm9pZCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbihQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCYmIG1lYXN1cmVtZW50KQordm9pZCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI6OmdldFRva2VuUHVibGljS2V5KEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEm
JiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25SZXBvcnRFbmRwb2ludCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50LCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQgcGNtRGF0YUNhcnJpZWQsIEZ1bmN0aW9uPHZv
aWQoQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIGNvbnN0
IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAoIWZl
YXR1cmVFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFVSTCB0b2tlblB1YmxpY0tl
eVVSTDsKKyAgICBpZiAobV90b2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcpIHsKKyAgICAgICAg
aWYgKGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OlNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgdG9rZW5QdWJsaWNLZXlVUkwgPSAqbV90b2tlblB1YmxpY0tleVVSTEZvclRlc3Rp
bmc7CisgICAgICAgIC8vIEZJWE1FKDIyNTM2NCkKKyAgICAgICAgcGNtRGF0YUNhcnJpZWQgPSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6Ok5vblBlcnNvbmFsbHlJZGVu
dGlmaWFibGU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8gb3B0VVJMID0gYXR0cmli
dXRpb25UcmlnZ2VyRGF0YS50b2tlblB1YmxpY0tleVVSTCgpKQorICAgICAgICAgICAgdG9rZW5Q
dWJsaWNLZXlVUkwgPSAqb3B0VVJMOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKHRva2VuUHVibGljS2V5VVJMLmlzRW1wdHkoKSB8fCAhdG9rZW5Q
dWJsaWNLZXlVUkwuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZGVidWdN
b2RlRW5hYmxlZCgpKQorICAgICAgICBwY21EYXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpQY21EYXRhQ2FycmllZDo6UGVyc29uYWxseUlkZW50aWZpYWJsZTsKKworICAgIFJF
TEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJBYm91dCB0byBmaXJlIGEg
dG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiIpOworICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25z
b2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
XSBBYm91dCB0byBmaXJlIGEgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcyk7CisKKyAgICBQ
Q006Ok5ldHdvcmtMb2FkZXI6OnN0YXJ0KFdURk1vdmUodG9rZW5QdWJsaWNLZXlVUkwpLCBudWxs
cHRyLCBwY21EYXRhQ2FycmllZCwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0sIHRoaXMs
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYXV0byYgZXJyb3JEZXNjcmlwdGlvbiwg
YXV0byYganNvbk9iamVjdCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFlcnJvckRlc2NyaXB0aW9uLmlzTnVsbCgp
KSB7CisgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFJl
Y2VpdmVkIGVycm9yOiAnIl9zLCBlcnJvckRlc2NyaXB0aW9uLCAiJyBmb3IgdG9rZW4gcHVibGlj
IGtleSByZXF1ZXN0LiJfcykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFqc29uT2JqZWN0KSB7CisgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUg
Q2xpY2sgTWVhc3VyZW1lbnRdIEpTT04gcmVzcG9uc2UgaXMgZW1wdHkgZm9yIHRva2VuIHB1Ymxp
YyBrZXkgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6Okxv
ZywgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEdvdCBKU09OIHJlc3Bv
bnNlIGZvciB0b2tlbiBwdWJsaWMga2V5IHJlcXVlc3QuIl9zKSk7CisKKyAgICAgICAgY2FsbGJh
Y2soV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwganNvbk9iamVjdC0+Z2V0U3RyaW5n
KCJ0b2tlbl9wdWJsaWNfa2V5Il9zKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JTb3VyY2UoUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBtZWFzdXJlbWVudCkKIHsKICAgICBpZiAoIWZlYXR1cmVF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoaXMgaXMgZ3VhcmFudGVlZCB0
byBiZSBjbG9zZSBpbiB0aW1lIHRvIHRoZSBuYXZpZ2F0aW9uYWwgY2xpY2sgd2hpY2ggbWFrZXMg
aXQgbGlrZWx5IHRvIGJlIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlLgogICAgIGF1dG8gcGNtRGF0
YUNhcnJpZWQgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6OlBlcnNv
bmFsbHlJZGVudGlmaWFibGU7Ci0gICAgYXV0byB0b2tlblNpZ25hdHVyZVVSTCA9IG1lYXN1cmVt
ZW50LnRva2VuU2lnbmF0dXJlVVJMKCk7CisgICAgVVJMIHRva2VuU2lnbmF0dXJlVVJMOwogICAg
IGlmIChtX3Rva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZykgewogICAgICAgICB0b2tlblNpZ25h
dHVyZVVSTCA9ICptX3Rva2VuU2lnbmF0dXJlVVJMRm9yVGVzdGluZzsKICAgICAgICAgLy8gRklY
TUUoMjI1MzY0KQogICAgICAgICBwY21EYXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpQY21EYXRhQ2FycmllZDo6Tm9uUGVyc29uYWxseUlkZW50aWZpYWJsZTsKKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAoYXV0byBvcHRVUkwgPSBtZWFzdXJlbWVudC50b2tlblNpZ25hdHVy
ZVVSTCgpKQorICAgICAgICAgICAgdG9rZW5TaWduYXR1cmVVUkwgPSAqb3B0VVJMOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHRva2VuU2lnbmF0
dXJlVVJMLmlzRW1wdHkoKSB8fCAhdG9rZW5TaWduYXR1cmVVUkwuaXNWYWxpZCgpKQpAQCAtMTk4
LDE4ICsyNTYsMjIgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFNp
Z25lZFVubGlua2FibGVUb2tlbihQcml2YXRlQ2xpY2tNZWFzdXIKICAgICAgICAgICAgIG1fY2xp
ZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3Ry
aW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gSlNPTiByZXNwb25zZSBkb2Vzbid0IGhh
dmUgdGhlIGtleSAndW5saW5rYWJsZV90b2tlbicgZm9yIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4i
X3MpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAvLyBGSVggTk9X
IQotICAgICAgICBpZiAobV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKQotICAgICAg
ICAgICAgbWVhc3VyZW1lbnQuc2V0U291cmNlU2VjcmV0VG9rZW4oeyBtX2ZyYXVkUHJldmVudGlv
blZhbHVlc0ZvclRlc3RpbmctPnNlY3JldFRva2VuLCBtX2ZyYXVkUHJldmVudGlvblZhbHVlc0Zv
clRlc3RpbmctPnNpZ25hdHVyZSwgbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLT5r
ZXlJRCB9KTsKKworICAgICAgICBpZiAobV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5n
KSB7CisgICAgICAgICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9r
ZW4gc291cmNlU2VjcmV0VG9rZW47CisgICAgICAgICAgICBzb3VyY2VTZWNyZXRUb2tlbi50b2tl
bkJhc2U2NFVSTCA9IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+c2VjcmV0VG9r
ZW5Gb3JTb3VyY2U7CisgICAgICAgICAgICBzb3VyY2VTZWNyZXRUb2tlbi5zaWduYXR1cmVCYXNl
NjRVUkwgPSBtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnNpZ25hdHVyZUZvclNv
dXJjZTsKKyAgICAgICAgICAgIHNvdXJjZVNlY3JldFRva2VuLmtleUlEQmFzZTY0VVJMID0gbV9m
cmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLT5rZXlJREZvclNvdXJjZTsKKyAgICAgICAg
ICAgIG1lYXN1cmVtZW50LnNldFNvdXJjZVNlY3JldFRva2VuKFdURk1vdmUoc291cmNlU2VjcmV0
VG9rZW4pKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgZWxzZSB7CisgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICBpZiAoYXV0byBlcnJvck1lc3NhZ2UgPSBtZWFzdXJlbWVudC5j
YWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VTZWNyZXRUb2tlbihzaWduYXR1cmVCYXNlNjRVUkwpKSB7
CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgIkdvdCB0aGUgZm9sbG93aW5nIGVycm9yIGluIGNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVNl
Y3JldFRva2VuKCk6ICcle3B1YmxpY31zIiwgZXJyb3JNZXNzYWdlLT51dGY4KCkuZGF0YSgpKTsK
ICAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdICJf
cywgKmVycm9yTWVzc2FnZSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KLSAgICAgICAgfQogI2VuZGlmCisgICAgICAgIH0KIAogICAgICAgICBtX2NsaWVudC0+YnJv
YWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudF0gU3RvcmluZyBhIHNlY3JldCB0b2tlbi4iX3MpOwogCkBAIC0yMTgsNiArMjgw
LDg1IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxp
bmthYmxlVG9rZW4oUHJpdmF0ZUNsaWNrTWVhc3VyCiAKIH0KIAordm9pZCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9u
KFNvdXJjZVNpdGUmJiBzb3VyY2VTaXRlLCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSYmIGRl
c3RpbmF0aW9uU2l0ZSwgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEsIGNvbnN0IEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciYgYXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKQoreworICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGNsb3NlIGluIHRpbWUgdG8g
dGhlIG5hdmlnYXRpb25hbCBjbGljayB3aGljaCBtYWtlcyBpdCBsaWtlbHkgdG8gYmUgcGVyc29u
YWxseSBpZGVudGlmaWFibGUuCisgICAgYXV0byBwY21EYXRhQ2FycmllZCA9IFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6UGVyc29uYWxseUlkZW50aWZpYWJsZTsKKyAg
ICBVUkwgdG9rZW5TaWduYXR1cmVVUkw7CisgICAgaWYgKG1fdG9rZW5TaWduYXR1cmVVUkxGb3JU
ZXN0aW5nKSB7CisgICAgICAgIHRva2VuU2lnbmF0dXJlVVJMID0gKm1fdG9rZW5TaWduYXR1cmVV
UkxGb3JUZXN0aW5nOworICAgICAgICAvLyBGSVhNRSgyMjUzNjQpCisgICAgICAgIHBjbURhdGFD
YXJyaWVkID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJz
b25hbGx5SWRlbnRpZmlhYmxlOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvIG9wdFVS
TCA9IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEudG9rZW5TaWduYXR1cmVVUkwoKSkKKyAgICAgICAg
ICAgIHRva2VuU2lnbmF0dXJlVVJMID0gKm9wdFVSTDsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh0b2tlblNpZ25hdHVyZVVSTC5pc0VtcHR5KCkg
fHwgIXRva2VuU2lnbmF0dXJlVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKGRlYnVnTW9kZUVuYWJsZWQoKSkKKyAgICAgICAgcGNtRGF0YUNhcnJpZWQgPSBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6OlBlcnNvbmFsbHlJZGVudGlmaWFibGU7
CisKKyAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQWJvdXQg
dG8gZmlyZSBhIHVubGlua2FibGUgdG9rZW4gc2lnbmluZyByZXF1ZXN0LiIpOworICAgIG1fY2xp
ZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBzaWdu
aW5nIHJlcXVlc3QuIl9zKTsKKworICAgIFBDTTo6TmV0d29ya0xvYWRlcjo6c3RhcnQoV1RGTW92
ZSh0b2tlblNpZ25hdHVyZVVSTCksIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEudG9rZW5TaWduYXR1
cmVKU09OKCksIHBjbURhdGFDYXJyaWVkLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
dGhpcywgc291cmNlU2l0ZSA9IFdURk1vdmUoc291cmNlU2l0ZSksIGRlc3RpbmF0aW9uU2l0ZSA9
IFdURk1vdmUoZGVzdGluYXRpb25TaXRlKSwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IFdURk1v
dmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9
IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllci5pc29sYXRlZENvcHkoKV0gKGF1dG8mIGVycm9y
RGVzY3JpcHRpb24sIGF1dG8mIGpzb25PYmplY3QpIG11dGFibGUgeworICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghZXJyb3JEZXNjcmlw
dGlvbi5pc051bGwoKSkgeworICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1l
YXN1cmVtZW50XSBSZWNlaXZlZCBlcnJvcjogJyJfcywgZXJyb3JEZXNjcmlwdGlvbiwgIicgZm9y
IHNlY3JldCB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIl9zKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWpzb25PYmplY3QpIHsKKyAgICAgICAgICAgIG1f
Y2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtl
U3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gSlNPTiByZXNwb25zZSBpcyBlbXB0
eSBmb3IgdG9rZW4gc2lnbmluZyByZXF1ZXN0LiJfcykpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgYXV0byBzaWduYXR1cmVCYXNlNjRVUkwgPSBqc29uT2JqZWN0
LT5nZXRTdHJpbmcoInVubGlua2FibGVfdG9rZW4iX3MpOworICAgICAgICBpZiAoc2lnbmF0dXJl
QmFzZTY0VVJMLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENs
aWNrIE1lYXN1cmVtZW50XSBKU09OIHJlc3BvbnNlIGRvZXNuJ3QgaGF2ZSB0aGUga2V5ICd1bmxp
bmthYmxlX3Rva2VuJyBmb3IgdG9rZW4gc2lnbmluZyByZXF1ZXN0LiJfcykpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fZnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZykgeworICAgICAgICAgICAgYXV0byB0ZXN0VG9rZW4gPSBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6U2VjcmV0VG9rZW4geyBtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRl
c3RpbmctPnNlY3JldFRva2VuRm9yRGVzdGluYXRpb24sIG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZy0+c2lnbmF0dXJlRm9yRGVzdGluYXRpb24sIG1fZnJhdWRQcmV2ZW50aW9uVmFs
dWVzRm9yVGVzdGluZy0+a2V5SURGb3JEZXN0aW5hdGlvbiB9OworICAgICAgICAgICAgYXV0byB0
ZXN0RGVzdGluYXRpb25Ub2tlbiA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlv
blNlY3JldFRva2VuIHsgdGVzdFRva2VuIH07CisgICAgICAgICAgICBhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhLnNldERlc3RpbmF0aW9uU2VjcmV0VG9rZW4oV1RGTW92ZSh0ZXN0RGVzdGluYXRpb25U
b2tlbikpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2Vu
KSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgIkRlc3RpbmF0aW9uIHVubGlua2FibGUgdG9rZW4gaXMgbWlzc2luZy4iKTsKKyAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVs
OjpFcnJvciwgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBEZXN0aW5hdGlvbiB1bmxpbmth
YmxlIHRva2VuIGlzIG1pc3NpbmcuIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uU2VjcmV0VG9rZW4oc2lnbmF0dXJl
QmFzZTY0VVJMLCAqYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kZXN0aW5hdGlvblVubGlua2FibGVU
b2tlbik7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgICAgIGF1dG8g
ZXJyb3JNZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpID8gIlVua25vd24iIDogcmVz
dWx0LmVycm9yKCk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCwgIkdvdCB0aGUgZm9sbG93aW5nIGVycm9yIGluIGNhbGN1bGF0ZUFuZFVw
ZGF0ZVNvdXJjZVNlY3JldFRva2VuKCk6ICcle3B1YmxpY31zIiwgZXJyb3JNZXNzYWdlLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVz
c2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFz
dXJlbWVudF0gIl9zLCBlcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVz
c2FnZShNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBTdG9y
aW5nIGEgc2VjcmV0IHRva2VuLiJfcyk7CisKKyAgICAgICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEuZGVzdGluYXRpb25TZWNyZXRUb2tlbiA9IHJlc3VsdC52YWx1ZSgpOworICAgICAgICAg
ICAgYXR0cmlidXRlKFdURk1vdmUoc291cmNlU2l0ZSksIFdURk1vdmUoZGVzdGluYXRpb25TaXRl
KSwgV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEFwcEJ1bmRsZUlERm9yVGVzdGluZyA/ICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50QXBw
QnVuZGxlSURGb3JUZXN0aW5nIDogYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKTsKKyAgICAg
ICAgfQorI2Vsc2UKKyAgICAgICAgfQorI2VuZGlmCisgICAgfSk7Cit9CisKIHZvaWQgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIG1lYXN1cmVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZSB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc3RvcmUoKS5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudChXVEZNb3ZlKG1lYXN1cmVtZW50KSwgdHlwZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwpAQCAtMjUxLDcgKzM5Miw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyOjpoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKICAgICBSZWdp
c3RyYWJsZURvbWFpbiBzb3VyY2VEb21haW47CiAgICAgaWYgKHJlZGlyZWN0RG9tYWluLm1hdGNo
ZXMoZmlyc3RQYXJ0eVVSTCkpIHsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
LnNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluKSB7Ci0gICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRj
YXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiW1ByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIGl0
IHdhcyByZXF1ZXN0ZWQgaW4gYW4gSFRUUCByZWRpcmVjdCB0aGF0IGlzIHNhbWUtc2l0ZSBhcyB0
aGUgICBmaXJzdC1wYXJ0eSBhbmQgbm8gYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1ldGVy
IHdhcyBwcm92aWRlZC4iX3MpOworICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVt
ZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSBpdCB3YXMgcmVx
dWVzdGVkIGluIGFuIEhUVFAgcmVkaXJlY3QgdGhhdCBpcyBzYW1lLXNpdGUgYXMgdGhlIGZpcnN0
LXBhcnR5IGFuZCBubyBhdHRyaWJ1dGlvblNvdXJjZSBxdWVyeSBwYXJhbWV0ZXIgd2FzIHByb3Zp
ZGVkLiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc291cmNl
RG9tYWluID0gKmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuc291cmNlUmVnaXN0cmFibGVEb21haW47
CkBAIC0yNjMsNiArNDA0LDQxIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKIAogICAgIG1fY2xp
ZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IGFjY2VwdGVkLiJfcyk7CiAKKyAg
ICAvLyBTaWduaW5nIG9mIGEgZGVzdGluYXRpb24gdG9rZW4gbXVzdCBiZSBkb25lIHVuY29uZGl0
aW9uYWxseS4gT3RoZXJ3aXNlIGl0IGJlY29tZXMgYSB3YXkgdG8gZGlzY292ZXIgdGhhdCB0aGVy
ZSBpcyBhIHBlbmRpbmcgYXR0cmlidXRpb24uCisgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEuZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZSkgeworICAgICAgICBhdXRvIGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGFDb3B5ID0gYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAgICAgICAgLy8gVGhp
cyBpcyBndWFyYW50ZWVkIHRvIGJlIGNsb3NlIGluIHRpbWUgdG8gdGhlIHRyaWdnZXJpbmcgZXZl
bnQgd2hpY2ggbWFrZXMgaXQgbGlrZWx5IHRvIGJlIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlLgor
ICAgICAgICBnZXRUb2tlblB1YmxpY0tleShXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFD
b3B5KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6
OkRlc3RpbmF0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6OlBl
cnNvbmFsbHlJZGVudGlmaWFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlz
LCBzb3VyY2VTaXRlID0gU291cmNlU2l0ZSB7IFdURk1vdmUoc291cmNlRG9tYWluKSB9LCBkZXN0
aW5hdGlvblNpdGUgPSBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IGZpcnN0UGFydHlVUkwg
fSwgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gYXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyLmlzb2xhdGVkQ29weSgpXSAoQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEsIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBpZiAocHVibGljS2V5QmFzZTY0VVJMLmlzRW1wdHkoKSkgeworICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJUaGUgcHVi
bGljIGtleSBVUkwgd2FzIGVtcHR5LiIpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9h
ZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRdIFRoZSBwdWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9mcmF1ZFBy
ZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKQorICAgICAgICAgICAgICAgIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEuc2V0RGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW5WYWx1ZShtX2ZyYXVkUHJldmVu
dGlvblZhbHVlc0ZvclRlc3RpbmctPnVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKTsKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1
dG8gcmVzdWx0ID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURl
c3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKHB1YmxpY0tleUJhc2U2NFVSTCk7CisgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhLmRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuID0gcmVzdWx0LnZhbHVlKCk7CisgICAg
ICAgICAgICAgICAgICAgIGdldFNpZ25lZFVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKFdU
Rk1vdmUoc291cmNlU2l0ZSksIFdURk1vdmUoZGVzdGluYXRpb25TaXRlKSwgV1RGTW92ZShhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhKSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRsZUlE
Rm9yVGVzdGluZyA/ICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50QXBwQnVuZGxlSURGb3JUZXN0
aW5nIDogYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGF1dG8gZXJyb3JN
ZXNzYWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpID8gIlVua25vd24iIDogcmVzdWx0LmVy
cm9yKCk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgIkdvdCB0aGUgZm9sbG93aW5nIGVycm9yIGluIGNhbGN1bGF0ZUFuZFVwZGF0ZURl
c3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKCk6ICcle3B1YmxpY31zIiwgZXJyb3JNZXNzYWdlLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xl
TWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudF0gIl9zLCBlcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBhdHRyaWJ1dGUoU291cmNlU2l0ZSB7IFdURk1vdmUoc291cmNlRG9tYWluKSB9
LCBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IGZpcnN0UGFydHlVUkwgfSwgV1RGTW92ZShh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRs
ZUlERm9yVGVzdGluZyA/ICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50QXBwQnVuZGxlSURGb3JU
ZXN0aW5nIDogYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKTsKIH0KIApAQCAtMzI0LDE2ICs1
MDAsNjMgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZShT
b3VyY2VTaXRlJiYgc291cmNlU2l0ZSwgQXR0cmlidXQKIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdChjb25zdCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCYgYXR0cmlidXRpb24sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpCiB7Ci0gICAgaWYg
KCFmZWF0dXJlRW5hYmxlZCgpKQorICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSB8fCAhYXR0cmli
dXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIWF0dHJpYnV0aW9uLnNvdXJjZVNlY3JldFRva2VuKCkpIHsKKyAgICBpZiAoIWF0dHJpYnV0
aW9uLnNvdXJjZVNlY3JldFRva2VuKCkgJiYgIWF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEoKS0+ZGVzdGluYXRpb25TZWNyZXRUb2tlbikgewogICAgICAgICBmaXJlQ29udmVyc2lv
blJlcXVlc3RJbXBsKGF0dHJpYnV0aW9uLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gYXR0cmlidXRpb25Db3B5ID0gYXR0cmli
dXRpb247CiAgICAgLy8gVGhpcyBoYXBwZW5zIG91dCBvZiB3ZWJwYWdlIGNvbnRleHQgYW5kIHdp
dGggYSBsb25nIGRlbGF5IGFuZCBpcyB0aHVzIHVubGlrZWx5IHRvIGJlIHBlcnNvbmFsbHkgaWRl
bnRpZmlhYmxlLgorICAgIGlmIChhdHRyaWJ1dGlvbi5zb3VyY2VTZWNyZXRUb2tlbigpKSB7Cisg
ICAgICAgIGdldFRva2VuUHVibGljS2V5KFdURk1vdmUoYXR0cmlidXRpb25Db3B5KSwgYXR0cmli
dXRpb25SZXBvcnRFbmRwb2ludCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJy
aWVkOjpOb25QZXJzb25hbGx5SWRlbnRpZmlhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRo
aXMgfSwgdGhpcywgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludF0gKFByaXZhdGVDbGlja01lYXN1
cmVtZW50JiYgYXR0cmlidXRpb24sIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSB7
CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgYXV0byBwdWJsaWNLZXlEYXRhID0gYmFzZTY0VVJMRGVjb2RlKHB1YmxpY0tl
eUJhc2U2NFVSTCk7CisgICAgICAgICAgICBpZiAoIXB1YmxpY0tleURhdGEpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGln
ZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAg
ICAgICAgICBjcnlwdG8tPmFkZEJ5dGVzKHB1YmxpY0tleURhdGEtPmRhdGEoKSwgcHVibGljS2V5
RGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gcHVibGljS2V5RGF0YUhhc2ggPSBjcnlw
dG8tPmNvbXB1dGVIYXNoKCk7CisKKyAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBiYXNlNjRVUkxF
bmNvZGVUb1N0cmluZyhwdWJsaWNLZXlEYXRhSGFzaC5kYXRhKCksIHB1YmxpY0tleURhdGFIYXNo
LnNpemUoKSk7CisgICAgICAgICAgICBpZiAoa2V5SUQgIT0gYXR0cmlidXRpb24uc291cmNlU2Vj
cmV0VG9rZW4oKS0+a2V5SURCYXNlNjRVUkwpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICBpZiAoIWF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChhdHRyaWJ1dGlvbi5hdHRy
aWJ1dGlvblRyaWdnZXJEYXRhKCktPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4pIHsKKyAgICAgICAg
ICAgICAgICBnZXRUb2tlblB1YmxpY0tleShXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgYXR0cmlidXRp
b25SZXBvcnRFbmRwb2ludCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVk
OjpOb25QZXJzb25hbGx5SWRlbnRpZmlhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgdGhpcywgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludF0gKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50JiYgYXR0cmlidXRpb24sIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBwdWJsaWNLZXlEYXRhID0gYmFz
ZTY0VVJMRGVjb2RlKHB1YmxpY0tleUJhc2U2NFVSTCk7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghcHVibGljS2V5RGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgICAgICAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUo
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgICAgICAgICAgICAg
ICAgIGNyeXB0by0+YWRkQnl0ZXMocHVibGljS2V5RGF0YS0+ZGF0YSgpLCBwdWJsaWNLZXlEYXRh
LT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHB1YmxpY0tleURhdGFIYXNoID0g
Y3J5cHRvLT5jb21wdXRlSGFzaCgpOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8ga2V5SUQg
PSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhwdWJsaWNLZXlEYXRhSGFzaC5kYXRhKCksIHB1Ymxp
Y0tleURhdGFIYXNoLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChrZXlJRCAhPSBh
dHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCktPmRlc3RpbmF0aW9uU2VjcmV0VG9r
ZW4tPmtleUlEQmFzZTY0VVJMKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICAgICAgICAgIGZpcmVDb252ZXJzaW9uUmVxdWVzdEltcGwoYXR0cmlidXRpb24s
IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmlyZUNvbnZl
cnNpb25SZXF1ZXN0SW1wbChhdHRyaWJ1dGlvbiwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgZ2V0VG9rZW5QdWJs
aWNLZXkoV1RGTW92ZShhdHRyaWJ1dGlvbkNvcHkpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6Ok5vblBlcnNvbmFsbHlJ
ZGVudGlmaWFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlzLCBhdHRyaWJ1
dGlvblJlcG9ydEVuZHBvaW50XSAoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlv
biwgY29uc3QgU3RyaW5nJiBwdWJsaWNLZXlCYXNlNjRVUkwpIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM0Nyw3ICs1NzAsNyBAQCB2b2lkIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZUNvbnZlcnNpb25SZXF1ZXN0KGNvbnN0IFBy
aXZhdGVDbGlja01lYQogICAgICAgICBhdXRvIHB1YmxpY0tleURhdGFIYXNoID0gY3J5cHRvLT5j
b21wdXRlSGFzaCgpOwogCiAgICAgICAgIGF1dG8ga2V5SUQgPSBiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhwdWJsaWNLZXlEYXRhSGFzaC5kYXRhKCksIHB1YmxpY0tleURhdGFIYXNoLnNpemUoKSk7
Ci0gICAgICAgIGlmIChrZXlJRCAhPSBhdHRyaWJ1dGlvbi5zb3VyY2VTZWNyZXRUb2tlbigpLT5r
ZXlJREJhc2U2NFVSTCkKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhKCktPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gfHwga2V5SUQgIT0gYXR0cmlidXRpb24u
YXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLT5kZXN0aW5hdGlvblNlY3JldFRva2VuLT5rZXlJREJh
c2U2NFVSTCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBmaXJlQ29udmVyc2lvblJl
cXVlc3RJbXBsKGF0dHJpYnV0aW9uLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKQEAgLTUy
Nyw3ICs3NTAsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0UENN
RnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbgogewogICAgIGlmICh1bmxpbmth
YmxlVG9rZW4uaXNFbXB0eSgpIHx8IHNlY3JldFRva2VuLmlzRW1wdHkoKSB8fCBzaWduYXR1cmUu
aXNFbXB0eSgpIHx8IGtleUlELmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZnJh
dWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyA9IFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1
ZXMgeyBXVEZNb3ZlKHVubGlua2FibGVUb2tlbiksIFdURk1vdmUoc2VjcmV0VG9rZW4pLCBXVEZN
b3ZlKHNpZ25hdHVyZSksIFdURk1vdmUoa2V5SUQpIH07CisgICAgbV9mcmF1ZFByZXZlbnRpb25W
YWx1ZXNGb3JUZXN0aW5nID0gVGVzdGluZ0ZyYXVkUHJldmVudGlvblZhbHVlcyB7IFdURk1vdmUo
dW5saW5rYWJsZVRva2VuKSwgV1RGTW92ZShzZWNyZXRUb2tlbiksIFdURk1vdmUoc2lnbmF0dXJl
KSwgV1RGTW92ZShrZXlJRCksIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIGVtcHR5U3Ry
aW5nKCksIGVtcHR5U3RyaW5nKCkgfTsKIH0KIAogYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXI6OmZlYXR1cmVFbmFibGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCmluZGV4IGM2
NzNhZjg0ODgzMmZkMWI3YzA5YjI5MGVhOTdlMTEzYzAyYTI1NjMuLjg2OTc2YTNkMWY2MWNjYTZj
MWFhYjhiMDMzN2RhYmE3MDQxYjZlOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApAQCAtNzMsNyArNzMs
OSBAQCBwcml2YXRlOgogICAgIGNvbnN0IFBDTTo6U3RvcmUmIHN0b3JlKCkgY29uc3Q7CiAgICAg
dm9pZCBzdGFydFRpbWVyKFNlY29uZHMpOwogICAgIHZvaWQgZ2V0VG9rZW5QdWJsaWNLZXkoUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uUmVwb3J0RW5kcG9pbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fycmll
ZCwgRnVuY3Rpb248dm9pZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmIGF0dHJpYnV0aW9uLCBj
b25zdCBTdHJpbmcmIHB1YmxpY0tleUJhc2U2NFVSTCk+JiYpOwotICAgIHZvaWQgZ2V0U2lnbmVk
VW5saW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYpOworICAgIHZvaWQgZ2V0
VG9rZW5QdWJsaWNLZXkoQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlBjbURhdGFDYXJyaWVkLCBGdW5jdGlvbjx2b2lkKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEm
JiwgY29uc3QgU3RyaW5nJiBwdWJsaWNLZXlCYXNlNjRVUkwpPiYmKTsKKyAgICB2b2lkIGdldFNp
Z25lZFVubGlua2FibGVUb2tlbkZvclNvdXJjZShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsK
KyAgICB2b2lkIGdldFNpZ25lZFVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKFNvdXJjZVNp
dGUmJiwgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmJiwgQXR0cmlidXRpb25UcmlnZ2VyRGF0
YSYmLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXImKTsKICAgICB2b2lkIGluc2Vy
dFByaXZhdGVDbGlja01lYXN1cmVtZW50KFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24oUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9p
bnQpOwogICAgIHZvaWQgYXR0cmlidXRlKFNvdXJjZVNpdGUmJiwgQXR0cmlidXRpb25EZXN0aW5h
dGlvblNpdGUmJiwgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmLCBjb25zdCBBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXImKTsKQEAgLTEwMSwxMCArMTAzLDE0IEBAIHByaXZhdGU6CiAgICAgc3Rk
OjpvcHRpb25hbDxBdHRyaWJ1dGlvblJlcG9ydFRlc3RDb25maWc+IG1fYXR0cmlidXRpb25SZXBv
cnRUZXN0Q29uZmlnOwogCiAgICAgc3RydWN0IFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1ZXMg
ewotICAgICAgICBTdHJpbmcgdW5saW5rYWJsZVRva2VuOwotICAgICAgICBTdHJpbmcgc2VjcmV0
VG9rZW47Ci0gICAgICAgIFN0cmluZyBzaWduYXR1cmU7Ci0gICAgICAgIFN0cmluZyBrZXlJRDsK
KyAgICAgICAgU3RyaW5nIHVubGlua2FibGVUb2tlbkZvclNvdXJjZTsKKyAgICAgICAgU3RyaW5n
IHNlY3JldFRva2VuRm9yU291cmNlOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlRm9yU291cmNl
OworICAgICAgICBTdHJpbmcga2V5SURGb3JTb3VyY2U7CisgICAgICAgIFN0cmluZyB1bmxpbmth
YmxlVG9rZW5Gb3JEZXN0aW5hdGlvbjsKKyAgICAgICAgU3RyaW5nIHNlY3JldFRva2VuRm9yRGVz
dGluYXRpb247CisgICAgICAgIFN0cmluZyBzaWduYXR1cmVGb3JEZXN0aW5hdGlvbjsKKyAgICAg
ICAgU3RyaW5nIGtleUlERm9yRGVzdGluYXRpb247CiAgICAgfTsKIAogICAgIHN0ZDo6b3B0aW9u
YWw8VGVzdGluZ0ZyYXVkUHJldmVudGlvblZhbHVlcz4gbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNG
b3JUZXN0aW5nOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGJlNDg0NzE3ZDRhYjQzN2JlZTY4NjdmMzM4MDg3NGE3YjdjYWZlNzQuLjJkYzY2MzY4
YWQyZDFhMTIyNmFhMDRmMDEwMWRiY2Y0YjhlMTYyMmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAyMS0xMS0zMCAg
Sm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IFVubGlu
a2FibGUgdG9rZW5zIGZvciB0cmlnZ2VyaW5nIGV2ZW50IHRvIHByZXZlbnQgZnJhdWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3MworICAgICAg
ICA8cmRhcjovLzc5NDI2MzQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5ldyB0ZXN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50LkRlc3RpbmF0aW9u
Q2xpY2tGcmF1ZFByZXZlbnRpb24uCisgICAgICAgIFRoZSBvdGhlciBjaGFuZ2VzIGFyZSBhIHJl
cG9ydCB2ZXJzaW9uIGJ1bXAgMi0+MyBhbmQgYSBuYW1lIGNoYW5nZQorICAgICAgICBGcmF1ZFBy
ZXZlbnRpb27igJM+U291cmNlQ2xpY2tGcmF1ZFByZXZlbnRpb24uCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpy
dW5CYXNpY1BDTVRlc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICAgICBOZXcgdGVzdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5EZXN0aW5hdGlvbkNsaWNrRnJh
dWRQcmV2ZW50aW9uLgorCiAyMDIxLTExLTMwICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBFeHRlbnNpb25UYWJBY3RpdmF0aW9uIGRpYWdu
b3N0aWMgZXZlbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCmluZGV4IDcxNGFmY2FiNGM1ZWQ3
ZjY4NzIwOGNlMmU3MjM0YTkxYWM3ZTg5YzMuLjlhZjJhYWY2MDZjMjNmYzY3YjFkZDUwOWY1YWRk
YzUxODZhNWJjZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcApAQCAtNTgsNyArNTgsNyBA
QCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBWYWxpZE1pblZhbHVlcykKICAgICBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRyaWJ1dGlvbiB7IFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpTb3VyY2VJRChtaW42Qml0VmFsdWUpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNl
U2l0ZSB7IHdlYktpdFVSTCB9LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25E
ZXN0aW5hdGlvblNpdGUgeyBleGFtcGxlVVJMIH0sICJ0ZXN0LmJ1bmRsZS5pZGVudGlmaWVyIiwg
V2FsbFRpbWU6Om5vdygpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25FcGhlbWVyYWw6Ok5vIH07CiAgICAgYXR0cmlidXRpb24uYXR0cmlidXRlQW5kR2V0RWFy
bGllc3RUaW1lVG9TZW5kKFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhKG1pbjZCaXRWYWx1ZSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlByaW9yaXR5KG1p
bjZCaXRWYWx1ZSkpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6SXNSdW5uaW5n
TGF5b3V0VGVzdDo6Tm8pOwogCi0gICAgQVNTRVJUX0VRKGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9u
UmVwb3J0SlNPTigpLT50b0pTT05TdHJpbmcoKSwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5cGVc
IjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwid2Via2l0Lm9yZ1wiLFwic291cmNlX2lkXCI6
MCxcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5jb21cIixcInRyaWdnZXJfZGF0YVwi
OjAsXCJ2ZXJzaW9uXCI6Mn0iKTsKKyAgICBBU1NFUlRfRVEoYXR0cmlidXRpb24uYXR0cmlidXRp
b25SZXBvcnRKU09OKCktPnRvSlNPTlN0cmluZygpLCAie1wic291cmNlX2VuZ2FnZW1lbnRfdHlw
ZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCJ3ZWJraXQub3JnXCIsXCJzb3VyY2VfaWRc
IjowLFwiYXR0cmlidXRlZF9vbl9zaXRlXCI6XCJleGFtcGxlLmNvbVwiLFwidHJpZ2dlcl9kYXRh
XCI6MCxcInZlcnNpb25cIjozfSIpOwogfQogCiBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50
LCBWYWxpZE1pZFZhbHVlcykKQEAgLTY2LDcgKzY2LDcgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgVmFsaWRNaWRWYWx1ZXMpCiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0
cmlidXRpb24geyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQoKHVpbnQzMl90KTE5
MiksIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlIHsgd2ViS2l0VVJMIH0sIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IGV4YW1w
bGVVUkwgfSwgInRlc3QuYnVuZGxlLmlkZW50aWZpZXIiLCBXYWxsVGltZTo6bm93KCksIFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkVwaGVtZXJhbDo6Tm8gfTsK
ICAgICBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGVBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKHVpbnQzMl90KTksIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpQcmlvcml0eSgodWludDMyX3QpMjIpKSwgV2ViQ29yZTo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OklzUnVubmluZ0xheW91dFRlc3Q6Ok5vKTsKIAotICAg
IEFTU0VSVF9FUShhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblJlcG9ydEpTT04oKS0+dG9KU09OU3Ry
aW5nKCksICJ7XCJzb3VyY2VfZW5nYWdlbWVudF90eXBlXCI6XCJjbGlja1wiLFwic291cmNlX3Np
dGVcIjpcIndlYmtpdC5vcmdcIixcInNvdXJjZV9pZFwiOjE5MixcImF0dHJpYnV0ZWRfb25fc2l0
ZVwiOlwiZXhhbXBsZS5jb21cIixcInRyaWdnZXJfZGF0YVwiOjksXCJ2ZXJzaW9uXCI6Mn0iKTsK
KyAgICBBU1NFUlRfRVEoYXR0cmlidXRpb24uYXR0cmlidXRpb25SZXBvcnRKU09OKCktPnRvSlNP
TlN0cmluZygpLCAie1wic291cmNlX2VuZ2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJj
ZV9zaXRlXCI6XCJ3ZWJraXQub3JnXCIsXCJzb3VyY2VfaWRcIjoxOTIsXCJhdHRyaWJ1dGVkX29u
X3NpdGVcIjpcImV4YW1wbGUuY29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjo5LFwidmVyc2lvblwiOjN9
Iik7CiB9CiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFZhbGlkTWF4VmFsdWVzKQpA
QCAtNzQsNyArNzQsNyBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBWYWxpZE1heFZh
bHVlcykKICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRyaWJ1dGlvbiB7IFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpTb3VyY2VJRChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNl
SUQ6Ok1heEVudHJvcHkpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSB7IHdl
YktpdFVSTCB9LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlv
blNpdGUgeyBleGFtcGxlVVJMIH0sICJ0ZXN0LmJ1bmRsZS5pZGVudGlmaWVyIiwgV2FsbFRpbWU6
Om5vdygpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25FcGhl
bWVyYWw6Ok5vIH07CiAgICAgYXR0cmlidXRpb24uYXR0cmlidXRlQW5kR2V0RWFybGllc3RUaW1l
VG9TZW5kKFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UHJpb3JpdHkoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlByaW9yaXR5OjpNYXhFbnRyb3B5KSksIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpJc1J1bm5pbmdMYXlvdXRUZXN0OjpObyk7CiAKLSAgICBBU1NFUlRfRVEoYXR0cmlidXRp
b24uYXR0cmlidXRpb25SZXBvcnRKU09OKCktPnRvSlNPTlN0cmluZygpLCAie1wic291cmNlX2Vu
Z2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCJ3ZWJraXQub3JnXCIs
XCJzb3VyY2VfaWRcIjoyNTUsXCJhdHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUuY29tXCIs
XCJ0cmlnZ2VyX2RhdGFcIjoxNSxcInZlcnNpb25cIjoyfSIpOworICAgIEFTU0VSVF9FUShhdHRy
aWJ1dGlvbi5hdHRyaWJ1dGlvblJlcG9ydEpTT04oKS0+dG9KU09OU3RyaW5nKCksICJ7XCJzb3Vy
Y2VfZW5nYWdlbWVudF90eXBlXCI6XCJjbGlja1wiLFwic291cmNlX3NpdGVcIjpcIndlYmtpdC5v
cmdcIixcInNvdXJjZV9pZFwiOjI1NSxcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5j
b21cIixcInRyaWdnZXJfZGF0YVwiOjE1LFwidmVyc2lvblwiOjN9Iik7CiB9CiAKIFRFU1QoUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEVhcmxpZXN0VGltZVRvU2VuZEF0dHJpYnV0aW9uTWluaW11
bURlbGF5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2Nv
Y29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQppbmRl
eCAwN2I1NjJlMWFmNjI5NDY2NDA2OGJjOWZiM2MwMjY3YWQ1YzU0MGMwLi5kYzQzNGY0Yjc5NWI0
NmJiZjlmNjg3YTIyZGNmYWFjOTYyMmFiMWRkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRDb2NvYS5tbQpAQCAtODMsNyArODMsNyBAQCBURVNUKFByaXZhdGVDbGlja01l
YXN1cmVtZW50LCBWYWxpZEJsaW5kZWRTZWNyZXQpCiAgICAgRVhQRUNUX1NUUkVRKHNvdXJjZVVu
bGlua2FibGVUb2tlbi0+Z2V0U3RyaW5nKCJzb3VyY2VfZW5nYWdlbWVudF90eXBlIl9zKS51dGY4
KCkuZGF0YSgpLCAiY2xpY2siKTsKICAgICBFWFBFQ1RfU1RSRVEoc291cmNlVW5saW5rYWJsZVRv
a2VuLT5nZXRTdHJpbmcoInNvdXJjZV9ub25jZSJfcykudXRmOCgpLmRhdGEoKSwgIkFCQ0RFRmFi
Y2RlZjAxMjM0NTY3ODkiKTsKICAgICBFWFBFQ1RfRkFMU0Uoc291cmNlVW5saW5rYWJsZVRva2Vu
LT5nZXRTdHJpbmcoInNvdXJjZV91bmxpbmthYmxlX3Rva2VuIl9zKS5pc0VtcHR5KCkpOwotICAg
IEVYUEVDVF9FUShzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmdldEludGVnZXIoInZlcnNpb24iX3Mp
LCAyKTsKKyAgICBFWFBFQ1RfRVEoc291cmNlVW5saW5rYWJsZVRva2VuLT5nZXRJbnRlZ2VyKCJ2
ZXJzaW9uIl9zKSwgMyk7CiAKICAgICAvLyBHZW5lcmF0ZSB0aGUgc2lnbmF0dXJlLgogICAgIGF1
dG8gYmxpbmRlZE1lc3NhZ2UgPSBiYXNlNjRVUkxEZWNvZGUoc291cmNlVW5saW5rYWJsZVRva2Vu
LT5nZXRTdHJpbmcoInNvdXJjZV91bmxpbmthYmxlX3Rva2VuIl9zKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24u
bW0KaW5kZXggZDA2OTVkNGEwNzJmNDA2YTZiM2U4YTZkMzc3ZDgxMjMyYWFlNWNkYy4uZDAzMTcw
M2IzZDkzM2E4MTY0MDc0NDhhNzU5ZmQ1OWVmMDllMDczNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQpA
QCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgcnVuQmFzaWNQQ01UZXN0KFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gKmNvbmZpZ3VyYXRpb24sIEZ1bmN0aW9uPHZvaWQoV0tXZWJWCiAgICAgICAgICAgICAg
ICAgcmVxdWVzdDMuYXBwZW5kKCdcMCcpOwogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0
cm5zdHIocmVxdWVzdDMuZGF0YSgpLCAiUE9TVCAvIEhUVFAvMS4xXHJcbiIsIHJlcXVlc3QzLnNp
emUoKSkpOwogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGJvZHlCZWdpbiA9IHN0cm5zdHIo
cmVxdWVzdDMuZGF0YSgpLCAiXHJcblxyXG4iLCByZXF1ZXN0My5zaXplKCkpICsgc3RybGVuKCJc
clxuXHJcbiIpOwotICAgICAgICAgICAgICAgIEVYUEVDVF9TVFJFUShib2R5QmVnaW4sICJ7XCJz
b3VyY2VfZW5nYWdlbWVudF90eXBlXCI6XCJjbGlja1wiLFwic291cmNlX3NpdGVcIjpcIjEyNy4w
LjAuMVwiLFwic291cmNlX2lkXCI6NDIsXCJhdHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUu
Y29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjoxMixcInZlcnNpb25cIjoyfSIpOworICAgICAgICAgICAg
ICAgIEVYUEVDVF9TVFJFUShib2R5QmVnaW4sICJ7XCJzb3VyY2VfZW5nYWdlbWVudF90eXBlXCI6
XCJjbGlja1wiLFwic291cmNlX3NpdGVcIjpcIjEyNy4wLjAuMVwiLFwic291cmNlX2lkXCI6NDIs
XCJhdHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUuY29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjox
MixcInZlcnNpb25cIjozfSIpOwogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIHJ1
bkJhc2ljUENNVGVzdChXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uLCBGdW5j
dGlvbjx2b2lkKFdLV2ViVgogfQogCiAjaWYgSEFWRShSU0FfQlNTQSkKLVRFU1QoUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsIEZyYXVkUHJldmVudGlvbikKK1RFU1QoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIFNvdXJjZUNsaWNrRnJhdWRQcmV2ZW50aW9uKQogewogICAgIFtXS1dlYnNpdGVEYXRh
U3RvcmUgX3NldE5ldHdvcmtQcm9jZXNzU3VzcGVuc2lvbkFsbG93ZWRGb3JUZXN0aW5nOk5PXTsK
ICAgICBib29sIGRvbmUgPSBmYWxzZTsKQEAgLTI3MCw3ICsyNzAsNyBAQCBURVNUKFByaXZhdGVD
bGlja01lYXN1cmVtZW50LCBGcmF1ZFByZXZlbnRpb24pCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKHJlc3BvbnNlKSwgW2Nvbm5lY3Rpb24s
ICZkb25lLCB1bmxpbmthYmxlVG9rZW4sIHRva2VuLCAmc2VjS2V5XSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29u
bmVjdGlvbiwgJmRvbmUsIHVubGlua2FibGVUb2tlbiwgdG9rZW4sICZzZWNLZXldIChWZWN0b3I8
Y2hhcj4mJiByZXF1ZXN0NCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdDQuZGF0YSgpLCAiUE9TVCAvIEhUVFAvMS4x
XHJcbiIsIHJlcXVlc3Q0LnNpemUoKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdDQuZGF0YSgpLCAie1wic291cmNl
X2VuZ2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCIxMjcuMC4wLjFc
IixcInNvdXJjZV9pZFwiOjQyLFwiYXR0cmlidXRlZF9vbl9zaXRlXCI6XCJleGFtcGxlLmNvbVwi
LFwidHJpZ2dlcl9kYXRhXCI6MTIsXCJ2ZXJzaW9uXCI6MiwiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdDQuZGF0YSgp
LCAie1wic291cmNlX2VuZ2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6
XCIxMjcuMC4wLjFcIixcInNvdXJjZV9pZFwiOjQyLFwiYXR0cmlidXRlZF9vbl9zaXRlXCI6XCJl
eGFtcGxlLmNvbVwiLFwidHJpZ2dlcl9kYXRhXCI6MTIsXCJ2ZXJzaW9uXCI6MywiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0NC5zaXplKCkpKTsK
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShz
dHJuc3RyKHJlcXVlc3Q0LmRhdGEoKSwgdG9rZW4udXRmOCgpLmRhdGEoKSwgcmVxdWVzdDQuc2l6
ZSgpKSk7CkBAIC0zNDUsNiArMzQ1LDE2MCBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50
LCBGcmF1ZFByZXZlbnRpb24pCiAgICAgfV07CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKIH0KKwor
VEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgRGVzdGluYXRpb25DbGlja0ZyYXVkUHJldmVu
dGlvbikKK3sKKyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9zZXROZXR3b3JrUHJvY2Vzc1N1c3Bl
bnNpb25BbGxvd2VkRm9yVGVzdGluZzpOT107CisgICAgYm9vbCBkb25lID0gZmFsc2U7CisKKyAg
ICAvLyBHZW5lcmF0ZSB0aGUgc2VydmVyIGtleSBwYWlyLgorICAgIHNpemVfdCBtb2R1bHVzTkJp
dHMgPSA0MDk2OworICAgIGludCBlcnJvciA9IDA7CisKKyAgICBzdHJ1Y3QgY2Nybmdfc3RhdGUq
IHJuZyA9IGNjcm5nKCZlcnJvcik7CisKKyAgICBjb25zdCB1aW50OF90IGVbXSA9IHsgMHgxLCAw
eDAwLCAweDAxIH07CisgICAgY2Nyc2FfZnVsbF9jdHhfZGVjbChjY25fc2l6ZW9mKG1vZHVsdXNO
Qml0cyksIHJzYVByaXZhdGVLZXkpOworICAgIGVycm9yID0gY2Nyc2FfZ2VuZXJhdGVfa2V5KG1v
ZHVsdXNOQml0cywgcnNhUHJpdmF0ZUtleSwgc2l6ZW9mKGUpLCBlLCBybmcpOworCisgICAgY2Ny
c2FfcHViX2N0eF90IHJzYVB1YmxpY0tleSA9IGNjcnNhX2N0eF9wdWJsaWMocnNhUHJpdmF0ZUtl
eSk7CisgICAgc2l6ZV90IG1vZHVsdXNOQnl0ZXMgPSBjY19jZWlsaW5nKGNjcnNhX3B1YmtleWxl
bmd0aChyc2FQdWJsaWNLZXkpLCA4KTsKKworICAgIHNpemVfdCBleHBvcnRTaXplID0gY2NkZXJf
ZW5jb2RlX3JzYV9wdWJfc2l6ZShyc2FQdWJsaWNLZXkpOworICAgIGF1dG8gcHVibGljS2V5ID0g
YWRvcHROUyhbW05TTXV0YWJsZURhdGEgYWxsb2NdIGluaXRXaXRoTGVuZ3RoOmV4cG9ydFNpemVd
KTsKKyAgICBjY2Rlcl9lbmNvZGVfcnNhX3B1Yihyc2FQdWJsaWNLZXksIHN0YXRpY19jYXN0PHVp
bnQ4X3QqPihbcHVibGljS2V5IG11dGFibGVCeXRlc10pLCBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
W3B1YmxpY0tleSBtdXRhYmxlQnl0ZXNdKSArIFtwdWJsaWNLZXkgbGVuZ3RoXSk7CisKKyAgICBh
dXRvIHNlY0tleSA9IGFkb3B0Q0YoU2VjS2V5Q3JlYXRlV2l0aERhdGEoKF9fYnJpZGdlIENGRGF0
YVJlZilwdWJsaWNLZXkuZ2V0KCksIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpQHsKKyAgICAg
ICAgKF9fYnJpZGdlIGlkKWtTZWNBdHRyS2V5VHlwZTogKF9fYnJpZGdlIGlkKWtTZWNBdHRyS2V5
VHlwZVJTQSwKKyAgICAgICAgKF9fYnJpZGdlIGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChfX2JyaWRn
ZSBpZClrU2VjQXR0cktleUNsYXNzUHVibGljCisgICAgfSwgbmlsKSk7CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IHJhd0tleUJ5dGVzKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwdWJsaWNLZXku
Z2V0KCkuYnl0ZXMpLCBwdWJsaWNLZXkuZ2V0KCkubGVuZ3RoKTsKKyAgICBhdXRvIHdyYXBwZWRL
ZXlCeXRlcyA9IHdyYXBQdWJsaWNLZXlXaXRoUlNBUFNTT0lEKFdURk1vdmUocmF3S2V5Qnl0ZXMp
KTsKKworICAgIGF1dG8ga2V5RGF0YSA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKHdyYXBwZWRL
ZXlCeXRlcy5kYXRhKCksIHdyYXBwZWRLZXlCeXRlcy5zaXplKCkpOworCisgICAgLy8gVGhlIHNl
cnZlci4KKyAgICBIVFRQU2VydmVyIHNlcnZlcihbJmRvbmUsIGNvbm5lY3Rpb25Db3VudCA9IDAs
ICZyc2FQcml2YXRlS2V5LCAmbW9kdWx1c05CeXRlcywgJnJuZywgJmtleURhdGEsICZzZWNLZXld
IChDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKCsrY29u
bmVjdGlvbkNvdW50KSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXSAoVmVjdG9yPGNoYXI+JiYgcmVxdWVzdDEp
IHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QxLmRhdGEoKSwg
IkdFVCAvY29udmVyc2lvblJlcXVlc3RCZWZvcmVSZWRpcmVjdCBIVFRQLzEuMVxyXG4iLCByZXF1
ZXN0MS5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWRpcmVjdCA9ICJI
VFRQLzEuMSAzMDIgRm91bmRcclxuIgorICAgICAgICAgICAgICAgICAgICAiTG9jYXRpb246IC8u
d2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3RyaWdnZXItYXR0cmlidXRpb24v
MTI/YXR0cmlidXRpb25EZXN0aW5hdGlvbk5vbmNlPUFCQ0RFRmFiY2RlZjAxMjM0NTY3ODlcclxu
IgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuXHJcbiI7CisgICAg
ICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKHJlZGlyZWN0LCBbY29ubmVjdGlvbl0geworICAg
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlv
bl0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QyLmRhdGEoKSwgIkdFVCAvLndlbGwta25vd24vcHJp
dmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9uLzEyP2F0dHJpYnV0aW9u
RGVzdGluYXRpb25Ob25jZT1BQkNERUZhYmNkZWYwMTIzNDU2Nzg5IEhUVFAvMS4xXHJcbiIsIHJl
cXVlc3QyLnNpemUoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVz
cG9uc2UgPSAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQ29udGVudC1MZW5ndGg6IDBcclxuXHJcbiI7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b25uZWN0aW9uLnNlbmQocmVzcG9uc2UpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtj
b25uZWN0aW9uLCAmcnNhUHJpdmF0ZUtleSwgJm1vZHVsdXNOQnl0ZXMsICZybmcsICZrZXlEYXRh
LCAmZG9uZSwgJnNlY0tleV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QxKSB7CisgICAgICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0MS5kYXRhKCksICJHRVQgLyBIVFRQLzEu
MVxyXG4iLCByZXF1ZXN0MS5zaXplKCkpKTsKKworICAgICAgICAgICAgICAgIC8vIEV4YW1wbGUg
cmVzcG9uc2U6IHsgInRva2VuX3B1YmxpY19rZXkiOiAiQUJDRCIgfS4gIkFCQ0QiIHNob3VsZCBi
ZSBCYXNlNjRVUkwgZW5jb2RlZC4KKyAgICAgICAgICAgICAgICBhdXRvIHJlc3BvbnNlID0gbWFr
ZVN0cmluZygiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRl
bnQtVHlwZTogYXBwbGljYXRpb24vanNvblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250
ZW50LUxlbmd0aDogIiwgMjQgKyBrZXlEYXRhLmxlbmd0aCgpLCAiXHJcblxyXG4iCisgICAgICAg
ICAgICAgICAgICAgICJ7XCJ0b2tlbl9wdWJsaWNfa2V5XCI6IFwiIiwga2V5RGF0YSwgIlwifSIp
OworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKHJlc3BvbnNlKSwgW2Nv
bm5lY3Rpb24sICZyc2FQcml2YXRlS2V5LCAmbW9kdWx1c05CeXRlcywgJnJuZywgJmtleURhdGEs
ICZkb25lLCAmc2VjS2V5XSB7CisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2
ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uLCAmcnNhUHJpdmF0ZUtleSwgJm1vZHVsdXNOQnl0ZXMs
ICZybmcsICZrZXlEYXRhLCAmZG9uZSwgJnNlY0tleV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3Qy
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3Qy
LmRhdGEoKSwgIlBPU1QgLyBIVFRQLzEuMVxyXG4iLCByZXF1ZXN0Mi5zaXplKCkpKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byByZXF1ZXN0MlN0cmluZyA9IFN0cmluZyhyZXF1ZXN0
Mi5kYXRhKCksIHJlcXVlc3QyLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRv
IGtleSA9IFN0cmluZygiZGVzdGluYXRpb25fdW5saW5rYWJsZV90b2tlbiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBzdGFydCA9IHJlcXVlc3QyU3RyaW5nLmZpbmQoa2V5KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICs9IGtleS5sZW5ndGgoKSArIDM7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGVuZCA9IHJlcXVlc3QyU3RyaW5nLmZpbmQoJyInLCBzdGFy
dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHRva2VuID0gcmVxdWVzdDJTdHJpbmcu
c3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFydCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gYmxpbmRlZE1lc3NhZ2UgPSBiYXNlNjRVUkxEZWNvZGUodG9rZW4pOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY2Nyc2Fic3NhX2NpcGhlcnN1aXRlICpjaXBo
ZXJzdWl0ZSA9ICZjY3JzYWJzc2FfY2lwaGVyc3VpdGVfcnNhNDA5Nl9zaGEzODQ7CisgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIGJsaW5kZWRTaWduYXR1cmUgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGF0YSBhbGxvY10gaW5pdFdpdGhMZW5ndGg6bW9kdWx1c05CeXRlc10pOworICAgICAgICAg
ICAgICAgICAgICAgICAgY2Nyc2Fic3NhX3NpZ25fYmxpbmRlZF9tZXNzYWdlKGNpcGhlcnN1aXRl
LCByc2FQcml2YXRlS2V5LCBibGluZGVkTWVzc2FnZS0+ZGF0YSgpLCBibGluZGVkTWVzc2FnZS0+
c2l6ZSgpLCBzdGF0aWNfY2FzdDx1aW50OF90ICo+KFtibGluZGVkU2lnbmF0dXJlIG11dGFibGVC
eXRlc10pLCBbYmxpbmRlZFNpZ25hdHVyZSBsZW5ndGhdLCBybmcpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byB1bmxpbmthYmxlVG9rZW4gPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhb
YmxpbmRlZFNpZ25hdHVyZSBieXRlc10sIFtibGluZGVkU2lnbmF0dXJlIGxlbmd0aF0pOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGFtcGxlIHJlc3BvbnNlOiB7ICJ1bmxpbmthYmxl
X3Rva2VuIjogIkFCQ0QiIH0uICJBQkNEIiBzaG91bGQgYmUgQmFzZTY0VVJMIGVuY29kZWQuCisg
ICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJlc3BvbnNlID0gbWFrZVN0cmluZygiSFRUUC8x
LjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBl
OiBhcHBsaWNhdGlvbi9qc29uXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29u
dGVudC1MZW5ndGg6ICIsIDI0ICsgdW5saW5rYWJsZVRva2VuLmxlbmd0aCgpLCAiXHJcblxyXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcInVubGlua2FibGVfdG9rZW5cIjogXCIi
LCB1bmxpbmthYmxlVG9rZW4sICJcIn0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb24uc2VuZChXVEZNb3ZlKHJlc3BvbnNlKSwgW2Nvbm5lY3Rpb24sICZrZXlEYXRhLCAmZG9u
ZSwgdW5saW5rYWJsZVRva2VuLCB0b2tlbiwgJnNlY0tleV0geworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uLCAma2V5
RGF0YSwgJmRvbmUsIHVubGlua2FibGVUb2tlbiwgdG9rZW4sICZzZWNLZXldIChWZWN0b3I8Y2hh
cj4mJiByZXF1ZXN0MykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShzdHJuc3RyKHJlcXVlc3QzLmRhdGEoKSwgIkdFVCAvIEhUVFAvMS4xXHJcbiIsIHJlcXVl
c3QzLnNpemUoKSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEV4YW1w
bGUgcmVzcG9uc2U6IHsgInRva2VuX3B1YmxpY19rZXkiOiAiQUJDRCIgfS4gIkFCQ0QiIHNob3Vs
ZCBiZSBCYXNlNjRVUkwgZW5jb2RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byByZXNwb25zZSA9IG1ha2VTdHJpbmcoIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9q
c29uXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxl
bmd0aDogIiwgMjQgKyBrZXlEYXRhLmxlbmd0aCgpLCAiXHJcblxyXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAie1widG9rZW5fcHVibGljX2tleVwiOiBcIiIsIGtleURh
dGEsICJcIn0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5z
ZW5kKFdURk1vdmUocmVzcG9uc2UpLCBbY29ubmVjdGlvbiwgJmRvbmUsIHVubGlua2FibGVUb2tl
biwgdG9rZW4sICZzZWNLZXldIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uLCAmZG9uZSwgdW5saW5r
YWJsZVRva2VuLCB0b2tlbiwgJnNlY0tleV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3Q0KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0
cihyZXF1ZXN0NC5kYXRhKCksICJQT1NUIC8gSFRUUC8xLjFcclxuIiwgcmVxdWVzdDQuc2l6ZSgp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUo
c3RybnN0cihyZXF1ZXN0NC5kYXRhKCksICJ7XCJzb3VyY2VfZW5nYWdlbWVudF90eXBlXCI6XCJj
bGlja1wiLFwic291cmNlX3NpdGVcIjpcIjEyNy4wLjAuMVwiLFwic291cmNlX2lkXCI6NDIsXCJh
dHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUuY29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjoxMixc
InZlcnNpb25cIjozLCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3Q0LnNpemUoKSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0cm5zdHIocmVxdWVzdDQuZGF0YSgpLCB0b2tlbi51dGY4
KCkuZGF0YSgpLCByZXF1ZXN0NC5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RybnN0cihyZXF1ZXN0NC5kYXRhKCksIHVubGlu
a2FibGVUb2tlbi51dGY4KCkuZGF0YSgpLCByZXF1ZXN0NC5zaXplKCkpKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVxdWVzdDRTdHJpbmcgPSBTdHJp
bmcocmVxdWVzdDQuZGF0YSgpLCByZXF1ZXN0NC5zaXplKCkpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBrZXkgPSBTdHJpbmcoImRlc3RpbmF0aW9uX3Nl
Y3JldF90b2tlbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1
dG8gc3RhcnQgPSByZXF1ZXN0NFN0cmluZy5maW5kKGtleSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhcnQgKz0ga2V5Lmxlbmd0aCgpICsgMzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGVuZCA9IHJlcXVlc3Q0U3RyaW5n
LmZpbmQoJyInLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXV0byB0b2tlbiA9IHJlcXVlc3Q0U3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3Rh
cnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdG9rZW5W
ZWN0b3IgPSBiYXNlNjRVUkxEZWNvZGUodG9rZW4pOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gdG9rZW5EYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCeXRlczp0b2tlblZlY3Rvci0+ZGF0YSgpIGxlbmd0aDp0b2tlblZlY3Rvci0+c2l6
ZSgpXSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSBT
dHJpbmcoImRlc3RpbmF0aW9uX3NlY3JldF90b2tlbl9zaWduYXR1cmUiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IHJlcXVlc3Q0U3RyaW5nLmZpbmQo
a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCArPSBr
ZXkubGVuZ3RoKCkgKyAzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuZCA9IHJlcXVlc3Q0U3RyaW5nLmZpbmQoJyInLCBzdGFydCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBzaWduYXR1cmUgPSByZXF1ZXN0NFN0cmluZy5z
dWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvIHNpZ25hdHVyZVZlY3RvciA9IGJhc2U2NFVSTERlY29kZShzaWdu
YXR1cmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gc2ln
bmF0dXJlRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6c2lnbmF0
dXJlVmVjdG9yLT5kYXRhKCkgbGVuZ3RoOnNpZ25hdHVyZVZlY3Rvci0+c2l6ZSgpXSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShTZWNLZXlW
ZXJpZnlTaWduYXR1cmUoc2VjS2V5LmdldCgpLCBrU2VjS2V5QWxnb3JpdGhtUlNBU2lnbmF0dXJl
TWVzc2FnZVBTU1NIQTM4NCwgKF9fYnJpZGdlIENGRGF0YVJlZil0b2tlbkRhdGEuZ2V0KCksIChf
X2JyaWRnZSBDRkRhdGFSZWYpc2lnbmF0dXJlRGF0YS5nZXQoKSwgTlVMTCkpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKyAgICBOU1VSTCAqc2VydmVyVVJMID0g
c2VydmVyLnJlcXVlc3QoKS5VUkw7CisKKyAgICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3V2l0aG91
dFVzaW5nRGFlbW9uKCk7CisgICAgd2ViVmlldy5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZUFsbG93aW5nQWxsVExTKCk7CisgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLndl
YnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107Cisg
ICAgW3dlYlZpZXcgX2FkZEV2ZW50QXR0cmlidXRpb25XaXRoU291cmNlSUQ6NDIgZGVzdGluYXRp
b25VUkw6ZXhhbXBsZVVSTCgpIHNvdXJjZURlc2NyaXB0aW9uOkAidGVzdCBzb3VyY2UgZGVzY3Jp
cHRpb24iIHB1cmNoYXNlcjpAInRlc3QgcHVyY2hhc2VyIiByZXBvcnRFbmRwb2ludDpzZXJ2ZXJV
Ukwgb3B0aW9uYWxOb25jZTpuaWwgYXBwbGljYXRpb25CdW5kbGVJRDpAInRlc3QuYnVuZGxlLmlk
IiBlcGhlbWVyYWw6Tk9dOworICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0
YVN0b3JlIF90cnVzdFNlcnZlckZvckxvY2FsUENNVGVzdGluZzpzZWNUcnVzdEZyb21DZXJ0aWZp
Y2F0ZUNoYWluKEBbKGlkKXRlc3RDZXJ0aWZpY2F0ZSgpLmdldCgpXSkuZ2V0KCldOworCisgICAg
W3dlYlZpZXcgX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxz
Rm9yVGVzdGluZzpzZXJ2ZXJVUkwgZGVzdGluYXRpb25VUkw6ZXhhbXBsZVVSTCgpIGNvbXBsZXRp
b25IYW5kbGVyOl57CisgICAgICAgIFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nOllFUyBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAg
ICAgICAgW3dlYlZpZXcgX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25Ub2tl
blB1YmxpY0tleVVSTEZvclRlc3Rpbmc6c2VydmVyVVJMIGNvbXBsZXRpb25IYW5kbGVyOl57Cisg
ICAgICAgICAgICAgICAgW3dlYlZpZXcgX3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmli
dXRpb25Ub2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc6c2VydmVyVVJMIGNvbXBsZXRpb25IYW5k
bGVyOl57CisgICAgICAgICAgICAgICAgICAgIFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEFwcEJ1bmRsZUlERm9yVGVzdGluZzpAInRlc3QuYnVuZGxlLmlkIiBjb21wbGV0aW9u
SGFuZGxlcjpeeworICAgICAgICAgICAgICAgICAgICAgICAgTlNTdHJpbmcgKmh0bWwgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+c2V0VGltZW91dChmdW5jdGlvbigpeyBm
ZXRjaCgnJUBjb252ZXJzaW9uUmVxdWVzdEJlZm9yZVJlZGlyZWN0Jyx7bW9kZTonbm8tY29ycyd9
KTsgfSwgMTAwKTs8L3NjcmlwdD4iLCBzZXJ2ZXJVUkxdOworICAgICAgICAgICAgICAgICAgICAg
ICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbCBiYXNlVVJMOmV4YW1wbGVVUkwoKV07Cisg
ICAgICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAg
fV07CisgICAgICAgIH1dOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CiAjZW5k
aWYKIAogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgQmFzaWMpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmUzNGEw
NmYxZDAxZDAyOGE2OTM0MzNhNGI3YjRkNTFjNTVkNDM1ZC4uMzE5YWFjZDBmNGE2MzY4MzU1OTVk
ZWJhNGU2MWEzYWM5NTZlZGZmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTExLTMwICBK
b2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogVW5saW5r
YWJsZSB0b2tlbnMgZm9yIHRyaWdnZXJpbmcgZXZlbnQgdG8gcHJldmVudCBmcmF1ZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjczCisgICAgICAg
IDxyZGFyOi8vNzk0MjYzNDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlc2UgY2hhbmdlcyBhcmUgYSByZXBvcnQgdmVyc2lvbiBidW1wIDItPjMu
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L2F0dHJpYnV0
aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1mZXRjaC1rZWVwYWxpdmUtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvZXhwaXJlZC1hdHRyaWJ1
dGlvbi1yZXBvcnQtZ2V0cy1zZW50LW9uLXNlc3Npb24tc3RhcnQtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvbXVsdGlwbGUtYXBwLWJ1
bmRsZS1pZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUt
cHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC90cmlnZ2VyaW5n
LWV2ZW50LXdpdGgtYXR0cmlidXRpb24tc291cmNlLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4
cGVjdGVkLnR4dDoKKwogMjAyMS0xMS0zMCAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBhcHBsZS5j
b20+CiAKICAgICAgICAgWyBCaWdTdXIrIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9tZWRpYS1zb3VyY2UvbWVkaWFzb3VyY2UtYWRkc291cmNlYnVmZmVyLmh0bWwgaXMgY29uc2lz
dGVudGx5IGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWZldGNoLWtl
ZXBhbGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1mZXRjaC1rZWVwYWxp
dmUtZXhwZWN0ZWQudHh0CmluZGV4IDJkMWExNjA1YmE0YWM5YjY1NWYxM2EzNjY4YzQ2NzgxYzMx
M2QxMDQuLjdhOTg4ZDRiODMxNWYyMjA2YTNkYzRjMzg3YjBmNmVkMThiOTY5YTIgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmli
dXRpb24tY29udmVyc2lvbi10aHJvdWdoLWZldGNoLWtlZXBhbGl2ZS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRd
IENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwgcGF0aCBjb250YWlu
ZWQgdW5yZWNvZ25pemVkIHBhcnRzLgorQ09OU09MRSBNRVNTQUdFOiBbUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhl
IFVSTCBwYXRoIGNvbnRhaW5lZCB1bnJlY29nbml6ZWQgcGFydHMuCiBDT05TT0xFIE1FU1NBR0U6
IE9yaWdpbiBodHRwOi8vMTI3LjAuMC4xOjgwMDAgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNv
bnRyb2wtQWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogNDA0CiBDT05TT0xFIE1FU1NBR0U6IEZl
dGNoIEFQSSBjYW5ub3QgbG9hZCBodHRwczovLzEyNy4wLjAuMTo4NDQzLy53ZWxsLWtub3duL3By
aXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi93aGF0ZXZlciBkdWUg
dG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgogVGVzdHMgdHJpZ2dlcmluZyBvZiBwcml2YXRlIGNs
aWNrIG1lYXN1cmVtZW50IGF0dHJpYnV0aW9ucyB3aXRoIGZldGNoIG9uIHBhZ2VoaWRlLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9l
eHBpcmVkLWF0dHJpYnV0aW9uLXJlcG9ydC1nZXRzLXNlbnQtb24tc2Vzc2lvbi1zdGFydC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50
L2V4cGlyZWQtYXR0cmlidXRpb24tcmVwb3J0LWdldHMtc2VudC1vbi1zZXNzaW9uLXN0YXJ0LWV4
cGVjdGVkLnR4dAppbmRleCBjM2Q5MjlhYWM1NjYxYzY5MWQ0YzM1Y2Q5NGJhYmU3N2I3YmFlOWQ0
Li4wMGNmZmQ5OTRhNjIwNWUyM2FiMGM0NmM1NGUxYTYwNDg3NGY1N2Y2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L2V4cGlyZWQtYXR0
cmlidXRpb24tcmVwb3J0LWdldHMtc2VudC1vbi1zZXNzaW9uLXN0YXJ0LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L2V4cGly
ZWQtYXR0cmlidXRpb24tcmVwb3J0LWdldHMtc2VudC1vbi1zZXNzaW9uLXN0YXJ0LWV4cGVjdGVk
LnR4dApAQCAtMTEsNyArMTEsNyBAQCBDb250ZW50IHR5cGU6IGFwcGxpY2F0aW9uL2pzb24KIFJF
UVVFU1RfVVJJOiAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2NvbnZlcnNpb25S
ZXBvcnQucHkKIE5vIGNvb2tpZXMgaW4gYXR0cmlidXRpb24gcmVxdWVzdC4KIFJlcXVlc3QgYm9k
eToKLXsic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIxMjcu
MC4wLjEiLCJzb3VyY2VfaWQiOjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRy
aWdnZXJfZGF0YSI6MTIsInZlcnNpb24iOjJ9Cit7InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJj
bGljayIsInNvdXJjZV9zaXRlIjoiMTI3LjAuMC4xIiwic291cmNlX2lkIjozLCJhdHRyaWJ1dGVk
X29uX3NpdGUiOiJsb2NhbGhvc3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjozfQogCiAK
IE5vIHN0b3JlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50IGRhdGEuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L211bHRpcGxlLWFw
cC1idW5kbGUtaWRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvbXVsdGlwbGUtYXBwLWJ1bmRsZS1pZHMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGZhM2E1ZjQ5MDIwODRmOTQ1NjNiMDMzZjI2OTc0Mjg3MGE2OTI0MjcuLmU1YjdmMTc4ZWE0
ZTYzOGNhYzY0MDBlYWM3YzNlMTQ2YzZiNjBiZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvbXVsdGlwbGUtYXBwLWJ1bmRsZS1pZHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvbXVsdGlwbGUtYXBwLWJ1bmRsZS1pZHMtZXhwZWN0ZWQudHh0CkBAIC0xMiw3ICsx
Miw3IEBAIENvbnRlbnQgdHlwZTogYXBwbGljYXRpb24vanNvbgogUkVRVUVTVF9VUkk6IC9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5weT9yZWNpcGll
bnQ9Q2xpY2tTb3VyY2UKIE5vIGNvb2tpZXMgaW4gYXR0cmlidXRpb24gcmVxdWVzdC4KIFJlcXVl
c3QgYm9keToKLXsic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUi
OiIxMjcuMC4wLjEiLCJzb3VyY2VfaWQiOjMzLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2NhbGhv
c3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjoyfQoreyJzb3VyY2VfZW5nYWdlbWVudF90
eXBlIjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6MzMsImF0
dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZlcnNpb24i
OjN9CiAKIAogLS0tLS0tLS0KQEAgLTI0LDcgKzI0LDcgQEAgQ29udGVudCB0eXBlOiBhcHBsaWNh
dGlvbi9qc29uCiBSRVFVRVNUX1VSSTogL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNl
cy9jb252ZXJzaW9uUmVwb3J0LnB5P3JlY2lwaWVudD1DbGlja0Rlc3RpbmF0aW9uCiBObyBjb29r
aWVzIGluIGF0dHJpYnV0aW9uIHJlcXVlc3QuCiBSZXF1ZXN0IGJvZHk6Ci17InNvdXJjZV9lbmdh
Z2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9zaXRlIjoiMTI3LjAuMC4xIiwic291cmNlX2lk
IjozMywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwi
dmVyc2lvbiI6Mn0KK3sic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3Np
dGUiOiIxMjcuMC4wLjEiLCJzb3VyY2VfaWQiOjMzLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2Nh
bGhvc3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjozfQogCiBVbmF0dHJpYnV0ZWQgUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudHM6CiBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCAxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1
cmVtZW50L3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc2VuZC1hdHRy
aWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0CmluZGV4IGU2YWQ5MTE3Mzhm
YThlMTk3MzBjYTliNDNlZGI5ZjJmMDAzYmRlYTUuLjEyNzEzYjY2OTZlMDIyZTFhNjFjZmE2ZDVh
ZTUyMjM5MWUyNDVmMzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhwZWN0ZWQudHh0CkBA
IC0xNiw3ICsxNiw3IEBAIENvbnRlbnQgdHlwZTogYXBwbGljYXRpb24vanNvbgogUkVRVUVTVF9V
Ukk6IC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5w
eT9yZWNpcGllbnQ9Q2xpY2tTb3VyY2UKIE5vIGNvb2tpZXMgaW4gYXR0cmlidXRpb24gcmVxdWVz
dC4KIFJlcXVlc3QgYm9keToKLXsic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291
cmNlX3NpdGUiOiIxMjcuMC4wLjEiLCJzb3VyY2VfaWQiOjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6
ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZlcnNpb24iOjJ9Cit7InNvdXJjZV9lbmdh
Z2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9zaXRlIjoiMTI3LjAuMC4xIiwic291cmNlX2lk
IjozLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2NhbGhvc3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2
ZXJzaW9uIjozfQogCiAKIC0tLS0tLS0tCkBAIC0yOCw3ICsyOCw3IEBAIENvbnRlbnQgdHlwZTog
YXBwbGljYXRpb24vanNvbgogUkVRVUVTVF9VUkk6IC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9y
ZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5weT9yZWNpcGllbnQ9Q2xpY2tEZXN0aW5hdGlvbgog
Tm8gY29va2llcyBpbiBhdHRyaWJ1dGlvbiByZXF1ZXN0LgogUmVxdWVzdCBib2R5OgoteyJzb3Vy
Y2VfZW5nYWdlbWVudF90eXBlIjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNv
dXJjZV9pZCI6MywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRh
IjoxMiwidmVyc2lvbiI6Mn0KK3sic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291
cmNlX3NpdGUiOiIxMjcuMC4wLjEiLCJzb3VyY2VfaWQiOjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6
ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZlcnNpb24iOjN9CiAKIAogLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50
L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UtZXhwZWN0
ZWQudHh0CmluZGV4IGFmMDE5ZDhhMDk5NWNiMWE4NTcyZWE0MGE1ZTBhODY2ZWM4NGEyZjAuLmQx
N2RlNDQ4NjExNTRhMWJkMzMzNzlhZjYwMzBiNjliNTY4ZmI5OWIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1j
bGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9zdG9yZS1wcml2YXRl
LWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLWV4cGVjdGVkLnR4dApAQCAtMTgs
NyArMTgsNyBAQCBDb250ZW50IHR5cGU6IGFwcGxpY2F0aW9uL2pzb24KIFJFUVVFU1RfVVJJOiAv
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwu
cHkKIE5vIGNvb2tpZXMgaW4gdG9rZW4gc2lnbmluZyByZXF1ZXN0LgogUmVxdWVzdCBib2R5Ogot
eyJzb3VyY2VfZW5nYWdlbWVudF90eXBlIjoiY2xpY2siLCJzb3VyY2Vfbm9uY2UiOiJBQkNERUZh
YmNkZWYwMTIzNDU2Nzg5Iiwic291cmNlX3VubGlua2FibGVfdG9rZW4iOiJ1bmxpbmthYmxlVG9r
ZW4iLCJ2ZXJzaW9uIjoyfQoreyJzb3VyY2VfZW5nYWdlbWVudF90eXBlIjoiY2xpY2siLCJzb3Vy
Y2Vfbm9uY2UiOiJBQkNERUZhYmNkZWYwMTIzNDU2Nzg5Iiwic291cmNlX3VubGlua2FibGVfdG9r
ZW4iOiJ1bmxpbmthYmxlVG9rZW4iLCJ2ZXJzaW9uIjozfQogUkVRVUVTVF9NRVRIT0Q6IEdFVAog
SFRUUF9IT1NUOiAxMjcuMC4wLjE6ODAwMAogUkVRVUVTVF9VUkk6IC9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2ZW50aW9uVGVzdFVSTC5weQpAQCAtMzEsNyArMzEs
NyBAQCBDb250ZW50IHR5cGU6IGFwcGxpY2F0aW9uL2pzb24KIFJFUVVFU1RfVVJJOiAvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwucHkKIE5v
IGNvb2tpZXMgaW4gdG9rZW4gc2lnbmluZyByZXF1ZXN0LgogUmVxdWVzdCBib2R5OgoteyJzb3Vy
Y2VfZW5nYWdlbWVudF90eXBlIjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNv
dXJjZV9pZCI6MywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRh
IjoxMiwidmVyc2lvbiI6Miwic291cmNlX3NlY3JldF90b2tlbiI6InNlY3JldFRva2VuIiwic291
cmNlX3NlY3JldF90b2tlbl9zaWduYXR1cmUiOiJzaWduYXR1cmUifQoreyJzb3VyY2VfZW5nYWdl
bWVudF90eXBlIjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6
MywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwidmVy
c2lvbiI6Mywic291cmNlX3NlY3JldF90b2tlbiI6InNlY3JldFRva2VuIiwic291cmNlX3NlY3Jl
dF90b2tlbl9zaWduYXR1cmUiOiJzaWduYXR1cmUifQogCiAKIE5vIHN0b3JlZCBQcml2YXRlIENs
aWNrIE1lYXN1cmVtZW50IGRhdGEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3RyaWdnZXJpbmctZXZlbnQtd2l0aC1hdHRyaWJ1dGlv
bi1zb3VyY2UtdGhyb3VnaC1mZXRjaC1rZWVwYWxpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC90cmlnZ2VyaW5nLWV2ZW50LXdp
dGgtYXR0cmlidXRpb24tc291cmNlLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4
dAppbmRleCA1YTlmZDNhYmM4MWE5ZmNlODE1NjRmMjI3YWU3Mjk3YzkyMzQwYjMxLi4wMjgyNDc5
ODliOTlmY2ZiMWE2NWVkZmFiNDgwYTQ3YTgyMzA1MTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3RyaWdnZXJpbmctZXZlbnQtd2l0
aC1hdHRyaWJ1dGlvbi1zb3VyY2UtdGhyb3VnaC1mZXRjaC1rZWVwYWxpdmUtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvdHJp
Z2dlcmluZy1ldmVudC13aXRoLWF0dHJpYnV0aW9uLXNvdXJjZS10aHJvdWdoLWZldGNoLWtlZXBh
bGl2ZS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IFtQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVz
ZSB0aGUgY29udmVyc2lvbiBkYXRhIGNvdWxkIG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0
aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gb2YgMTUuCitDT05TT0xFIE1FU1NBR0U6IFtQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVj
YXVzZSB0aGUgY29udmVyc2lvbiBkYXRhIGNvdWxkIG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hl
ciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gb2YgMTUuCiBDT05TT0xFIE1FU1NBR0U6IE9yaWdp
biBodHRwOi8vbG9jYWxob3N0OjgwMDAgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNvbnRyb2wt
QWxsb3ctT3JpZ2luLiBTdGF0dXMgY29kZTogNDA0CiBDT05TT0xFIE1FU1NBR0U6IEZldGNoIEFQ
SSBjYW5ub3QgbG9hZCBodHRwczovL2xvY2FsaG9zdDo4NDQzLy53ZWxsLWtub3duL3ByaXZhdGUt
Y2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi9EdW1teT9hdHRyaWJ1dGlvblNv
dXJjZT1odHRwczovLzEyNy4wLjAuMSBkdWUgdG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgogVGVz
dHMgdHJpZ2dlcmluZyBvZiBwcml2YXRlIGNsaWNrIG1lYXN1cmVtZW50IGF0dHJpYnV0aW9uIHdp
dGggc2FtZS1zaXRlIHRyaWdnZXJpbmcgZXZlbnQgcmVxdWVzdC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445521</attachid>
            <date>2021-11-30 22:03:56 -0800</date>
            <delta_ts>2021-12-02 16:54:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233673-20211130220355.patch</filename>
            <type>text/plain</type>
            <size>109537</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRlNDYyN2I5OTJhMTMz
YWM4NTAzZWY3MmE1ZmJmZGE1MGJhNTdiYi4uMDY3MDM5NTIwYjM1MTIyYzUyMzRiNzMwZmJlZmU0
MTJkYzI5ZjJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDIxLTExLTMwICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogVW5saW5rYWJs
ZSB0b2tlbnMgZm9yIHRyaWdnZXJpbmcgZXZlbnQgdG8gcHJldmVudCBmcmF1ZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjczCisgICAgICAgIDxy
ZGFyOi8vNzk0MjYzNDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgdHJpZ2dlcmluZyBldmVudHMgdG8gaGF2ZSBhbiBv
cHRpb25hbCBxdWVyeSBwYXJhbWV0ZXIgbGlrZSB0aGlzOgorICAgICAgICBodHRwczovL2Rlc3Rp
bmF0aW9uLmV4YW1wbGUvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmln
Z2VyLWF0dHJpYnV0aW9uLzExP2F0dHJpYnV0aW9uRGVzdGluYXRpb25Ob25jZT1BQkNERUZhYmNk
ZWYwMTIzNDU2Nzg5CisKKyAgICAgICAgVGhlIHByZXNlbmNlIG9mIGFuIGF0dHJpYnV0aW9uRGVz
dGluYXRpb25Ob25jZSB0cmlnZ2VycyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIgdG8K
KyAgICAgICAgYXNrIHRoZSBzZXJ2ZXIgdG8gc2lnbiBhbiB1bmxpbmthYmxlIHRva2VuIGZvciB0
aGUgdHJpZ2dlcmluZyBldmVudCBhbmQgdGhlbiBzdG9yZXMgdGhlCisgICAgICAgIGNvcnJlc3Bv
bmRpbmcgc2VjcmV0IHRva2VuIHBsdXMgdGhlIHNpZ25hdHVyZSBmb3IgbGF0ZXIgaW5jbHVzaW9u
IGluIHRoZSBhdHRyaWJ1dGlvbiByZXBvcnQuCisKKyAgICAgICAgVGhlIFdlYkNvcmUgY2hhbmdl
cyBpbnRyb2R1Y2UgdGhlc2UgbmV3IHN0cnVjdHMgYW5kIGRhdGEgZmllbGRzIGluCisgICAgICAg
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OgorICAgICAgICAtIEVwaGVtZXJhbERl
c3RpbmF0aW9uTm9uY2UKKyAgICAgICAgLSBVbmxpbmthYmxlVG9rZW4gKGJhc2UgY2xhc3MgZm9y
IHRoZSBzcGVjaWZpYyBvbmVzIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uKQorICAgICAgICAt
IFNvdXJjZVVubGlua2FibGVUb2tlbgorICAgICAgICAtIERlc3RpbmF0aW9uVW5saW5rYWJsZVRv
a2VuCisgICAgICAgIC0gU2VjcmV0VG9rZW4gKGJhc2UgY2xhc3MgZm9yIHRoZSBzcGVjaWZpYyBv
bmVzIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uKQorICAgICAgICAtIFNvdXJjZVNlY3JldFRv
a2VuCisgICAgICAgIC0gRGVzdGluYXRpb25TZWNyZXRUb2tlbgorCisgICAgICAgIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIG5vdyBoYXMg
dGhlc2Ugb3B0aW9uYWwgZmllbGRzOgorICAgICAgICAtIGVwaGVtZXJhbERlc3RpbmF0aW9uTm9u
Y2UKKyAgICAgICAgLSBkZXN0aW5hdGlvblVubGlua2FibGVUb2tlbgorICAgICAgICAtIGRlc3Rp
bmF0aW9uU2VjcmV0VG9rZW4KKyAgICAgICAgLSBkZXN0aW5hdGlvblNpdGUKKworICAgICAgICBU
aGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIHNldHRlcnMvZ2V0dGVycyBhbmQgY3JlYXRvciBmdW5j
dGlvbnMgZm9yIHRob3NlIGRhdGEgZmllbGRzLgorCisgICAgICAgIE5ldyBBUEkvdW5pdCB0ZXN0
IFByaXZhdGVDbGlja01lYXN1cmVtZW50LkRlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZlbnRpb24u
CisKKyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZVNlY3JldFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNvbGF0
ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVx
dWVzdFF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojpw
YXJzZUF0dHJpYnV0aW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6YXR0cmlidXRpb25SZXBvcnRKU09OIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNWYWxp
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBo
ZW1lcmFsRGVzdGluYXRpb25Ob25jZTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNOb25jZVZhbGlkKToKKyAgICAgICAgKFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblB1YmxpY0tleVVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5QdWJsaWNLZXlVUkwgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2ln
bmF0dXJlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0
b2tlblNpZ25hdHVyZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6dG9rZW5TaWduYXR1cmVKU09OIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRU
b2tlbjo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6c2V0RGVzdGluYXRpb25TZWNyZXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46OmlzVmFsaWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJp
Z2dlckRhdGE6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OnNldERlc3RpbmF0
aW9uVW5saW5rYWJsZVRva2VuVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OnNldERlc3RpbmF0aW9uU2VjcmV0
VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uVHJpZ2dlckRhdGE6OnRva2VuUHVibGljS2V5VVJMIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjp0
b2tlblNpZ25hdHVyZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6c291cmNlVW5saW5rYWJsZVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVt
ZXJhbERlc3RpbmF0aW9uTm9uY2U6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIGxvYWRlci9jb2NvYS9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2FibGVUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlRGVz
dGluYXRpb25VbmxpbmthYmxlVG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVVubGlua2FibGVUb2tlbik6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlU291
cmNlU2VjcmV0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uU2VjcmV0VG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNlY3Jl
dFRva2VuKToKKwogMjAyMS0xMS0zMCAgR2FicmllbCBOYXZhIE1hcmlubyAgPGduYXZhbWFyaW5v
QGFwcGxlLmNvbT4KIAogICAgICAgICBudWxscHRyIGRlcmVmIGluIEluYmFuZENoYXB0ZXJUcmFj
a1ByaXZhdGVBVkZPYmpDOjpwcm9jZXNzQ2hhcHRlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNDA2ZDQ5NzQ5MzIx
NGY2NGYyMjFhNDQyNjY3MzU2YWJlNTRiODA1Zi4uMThkY2IxODY2ZWM1NjQ4OTA5NjU5MTliYzE4
MGRmYWYyMDBkM2I5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MSBAQAorMjAyMS0xMS0zMCAgSm9o
biBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IFVubGlua2Fi
bGUgdG9rZW5zIGZvciB0cmlnZ2VyaW5nIGV2ZW50IHRvIHByZXZlbnQgZnJhdWQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3MworICAgICAgICA8
cmRhcjovLzc5NDI2MzQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHRyaWdnZXJpbmcgZXZlbnRzIHRvIGhhdmUgYW4g
b3B0aW9uYWwgcXVlcnkgcGFyYW1ldGVyIGxpa2UgdGhpczoKKyAgICAgICAgaHR0cHM6Ly9kZXN0
aW5hdGlvbi5leGFtcGxlLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJp
Z2dlci1hdHRyaWJ1dGlvbi8xMT9hdHRyaWJ1dGlvbkRlc3RpbmF0aW9uTm9uY2U9QUJDREVGYWJj
ZGVmMDEyMzQ1Njc4OQorCisgICAgICAgIFRoZSBwcmVzZW5jZSBvZiBhbiBhdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uTm9uY2UgdHJpZ2dlcnMgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyIHRv
CisgICAgICAgIGFzayB0aGUgc2VydmVyIHRvIHNpZ24gYW4gdW5saW5rYWJsZSB0b2tlbiBmb3Ig
dGhlIHRyaWdnZXJpbmcgZXZlbnQgYW5kIHRoZW4gc3RvcmVzIHRoZQorICAgICAgICBjb3JyZXNw
b25kaW5nIHNlY3JldCB0b2tlbiBwbHVzIHRoZSBzaWduYXR1cmUgZm9yIGxhdGVyIGluY2x1c2lv
biBpbiB0aGUgYXR0cmlidXRpb24gcmVwb3J0LgorCisgICAgICAgIE5ldyBBUEkvdW5pdCB0ZXN0
IFByaXZhdGVDbGlja01lYXN1cmVtZW50LkRlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZlbnRpb24u
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRpbGl0aWVzOjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50RnJvbURhdGFiYXNlIGNvbnN0KToKKyAgICAgICAgICAgIE5vdyBoYW5kbGVzIGRlc3RpbmF0
aW9uIHRva2Vucy4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6UENNOjpEYXRhYmFzZTo6RGF0YWJhc2UpOgorICAgICAgICAgICAgTm93IGNhbGxzIGFkZERl
c3RpbmF0aW9uVG9rZW5Db2x1bW5zSWZOZWNlc3NhcnkoKS4KKyAgICAgICAgKFdlYktpdDo6UENN
OjpEYXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAgICAg
Tm93IGRvZXMgaW5zZXJ0aW9uIG9mIG9wdGlvbmFsIGRlc3RpbmF0aW9uIHRva2Vucy4KKyAgICAg
ICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWRkRGVzdGluYXRpb25Ub2tlbkNvbHVtbnNJZk5l
Y2Vzc2FyeSk6CisgICAgICAgICAgICBEYXRhYmFzZSBtaWdyYXRpb24uCisgICAgICAgIChXZWJL
aXQ6OlBDTTo6RGF0YWJhc2U6OmFkZEJ1bmRsZUlEQ29sdW1uSWZOZWNlc3NhcnkpOiBEZWxldGVk
LgorICAgICAgICAgICAgVGVtcG9yYXJ5IG1pZ3JhdGlvbiBmdW5jdGlvbiBmb3Igbm9uLWN1c3Rv
bWVyIGJ1aWxkcy4gTm8gbG9uZ2VyIG5lZWRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZCk6CisgICAgICAgICAgICBK
dXN0IG5hbWUgY2hhbmdlcy4KKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyOjpnZXRUb2tlblB1YmxpY0tleSk6CisgICAgICAgICAgICBOb3QgY2hhbmdlZCBh
ZmFpay4gU2VlbXMgbGlrZSB0aGUgZGlmZiBpcyBjb25mdXNlZC4KKyAgICAgICAgKFdlYktpdDo6
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5G
b3JTb3VyY2UpOgorICAgICAgICAgICAgUmVuYW1lZC4KKyAgICAgICAgKFdlYktpdDo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0
aW5hdGlvbik6CisgICAgICAgICAgICBEaWZmZXJlbnQgdGhhbiBmb3IgdGhlIHNvdXJjZSBpbiB0
aGF0IGl0IHJlc3VsdHMgaW4gYW4gYXR0cmlidXRpb24gY2FsbC4KKyAgICAgICAgKFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRpb24pOgorICAgICAgICAgICAg
Tm93IGRvZXMgc2lnbmluZyBvZiBkZXN0aW5hdGlvbiB0b2tlbiBpZiB0aGUgb3B0aW9uYWwgbm9u
Y2UgaXMgaW4gdGhlIHRyaWdnZXJpbmcgZXZlbnQuCisgICAgICAgIChQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRva2Vu
KTogRGVsZXRlZC4KKyAgICAgICAgICAgIFJlbmFtZWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JTb3VyY2UoKS4KKyAgICAgICAgKFdl
YktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzZXRQQ01GcmF1ZFByZXZlbnRp
b25WYWx1ZXNGb3JUZXN0aW5nKToKKyAgICAgICAgICAgIEFkZGVkIGVtcHR5IGluaXRpYWxpemVy
IHN0cmluZ3MgZm9yIHRoZSBkZXN0aW5hdGlvbiB0ZXN0IHRva2VuIHZhbHVlcyBub3QgaW4gdXNl
IHlldC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKwogMjAyMS0xMS0zMCAgQkogQnVyZyAg
PGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgRXh0ZW5zaW9u
VGFiQWN0aXZhdGlvbiBkaWFnbm9zdGljIGV2ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRleCBiOTJhYTAyNDNjZGQxYmE2YzYz
MTVkMDcwNTdlNGVhY2ZiODhlZWJlLi4zYWNlNzQ5OTI5NGZlOWZjY2I1Y2I1ZWU0ZWE0NDc0MDRk
OTNiMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVBhdGhbXSA9ICIvLndlbGwta25vd24vcHIKIHN0
YXRpYyBjb25zdCBjaGFyIHByaXZhdGVDbGlja01lYXN1cmVtZW50UmVwb3J0QXR0cmlidXRpb25Q
YXRoW10gPSAiLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvcmVwb3J0LWF0
dHJpYnV0aW9uLyI7CiBjb25zdCBzaXplX3QgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplID0gMjsKIGNvbnN0IHNpemVfdCBwcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFByaW9yaXR5UGF0aFNlZ21lbnRTaXplID0gMjsKLWNvbnN0IHVpbnQ4
X3QgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRWZXJzaW9uID0gMjsKK2NvbnN0IHVpbnQ4X3QgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRWZXJzaW9uID0gMzsKIAogY29uc3QgU2Vjb25kcyBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6bWF4QWdlKCkKIHsKQEAgLTYwLDcgKzYwLDcgQEAgYm9vbCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNWYWxpZCgpIGNvbnN0CiAgICAgICAgICYmIChtX3RpbWVz
VG9TZW5kLnNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCB8fCBtX3RpbWVzVG9TZW5kLmRlc3RpbmF0
aW9uRWFybGllc3RUaW1lVG9TZW5kKTsKIH0KIAotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNv
dXJjZVNlY3JldFRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tl
bjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRU
b2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHsKICAgICAgICAgdG9rZW5CYXNlNjRVUkwuaXNvbGF0ZWRD
b3B5KCksCkBAIC02OSwxMiArNjksMzAgQEAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZVNlY3JldFRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXQKICAgICB9
OwogfQogCitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW4gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSBjb25z
dAoreworICAgIGF1dG8gY29weSA9IFNvdXJjZVNlY3JldFRva2VuIHsgfTsKKyAgICBjb3B5LnRv
a2VuQmFzZTY0VVJMID0gdG9rZW5CYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5z
aWduYXR1cmVCYXNlNjRVUkwgPSBzaWduYXR1cmVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCk7Cisg
ICAgY29weS5rZXlJREJhc2U2NFVSTCA9IGtleUlEQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpOwor
ICAgIHJldHVybiBjb3B5OworfQorCitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRp
b25TZWNyZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRU
b2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAgICBhdXRvIGNvcHkgPSBEZXN0aW5hdGlv
blNlY3JldFRva2VuIHsgfTsKKyAgICBjb3B5LnRva2VuQmFzZTY0VVJMID0gdG9rZW5CYXNlNjRV
UkwuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5zaWduYXR1cmVCYXNlNjRVUkwgPSBzaWduYXR1
cmVCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCk7CisgICAgY29weS5rZXlJREJhc2U2NFVSTCA9IGtl
eUlEQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpOworICAgIHJldHVybiBjb3B5OworfQorCiBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlOjppc29sYXRlZENvcHkoKSBjb25zdAogewog
ICAgIHJldHVybiB7IG5vbmNlLmlzb2xhdGVkQ29weSgpIH07CiB9CiAKLVByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZVVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVu
bGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gewogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtODYsNiArMTA0LDMwIEBAIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZVVuCiAgICAgfTsKIH0KIAorUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVubGlua2Fi
bGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRva2VuOjpp
c29sYXRlZENvcHkoKSBjb25zdAoreworICAgIGF1dG8gY29weSA9IFNvdXJjZVVubGlua2FibGVU
b2tlbiB7IH07CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY29weS5ibGluZGVyID0gYmxpbmRl
cjsKKyAgICBjb3B5LndhaXRpbmdUb2tlbiA9IHdhaXRpbmdUb2tlbjsKKyAgICBjb3B5LnJlYWR5
VG9rZW4gPSByZWFkeVRva2VuOworI2VuZGlmCisgICAgY29weS52YWx1ZUJhc2U2NFVSTCA9IHZh
bHVlQmFzZTY0VVJMLmlzb2xhdGVkQ29weSgpOworICAgIHJldHVybiBjb3B5OworfQorCitQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHko
KSBjb25zdAoreworICAgIGF1dG8gY29weSA9IERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuIHsg
fTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjb3B5LmJsaW5kZXIgPSBibGluZGVyOworICAg
IGNvcHkud2FpdGluZ1Rva2VuID0gd2FpdGluZ1Rva2VuOworICAgIGNvcHkucmVhZHlUb2tlbiA9
IHJlYWR5VG9rZW47CisjZW5kaWYKKyAgICBjb3B5LnZhbHVlQmFzZTY0VVJMID0gdmFsdWVCYXNl
NjRVUkwuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojppc29sYXRlZENvcHkoKSBjb25z
dAogewogICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50IGNvcHkgewpAQCAtMTExLDI2ICsxNTMs
NDEgQEAgRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEsIFN0cmluZz4gUHJpdmF0ZUNsaWNrTWUKIAogICAgIGF1dG8gcGFyYW1ldGVycyA9IHF1
ZXJ5UGFyYW1ldGVycyhyZWRpcmVjdFVSTCk7CiAgICAgaWYgKCFwYXJhbWV0ZXJzLnNpemUoKSkK
LSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVu
dF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCBoYWQgYSBxdWVy
eSBzdHJpbmcgYnV0IGl0IGRpZG4ndCBjb250YWluIHN1cHBvcnRlZCBwYXJhbWV0ZXJzLiJfcyk7
Ci0KLSAgICBpZiAocGFyYW1ldGVycy5zaXplKCkgPiAxKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJzaW9uIHdhcyBub3Qg
YWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgcXVlcnkgc3RyaW5nIGNvbnRhaW5lZCB1bnN1cHBv
cnRlZCBwYXJhbWV0ZXJzLiJfcyk7Ci0KLSAgICBhdXRvIHBhcmFtZXRlciA9IHBhcmFtZXRlcnMu
Zmlyc3QoKTsKLSAgICBpZiAocGFyYW1ldGVyLmtleSA9PSAiYXR0cmlidXRpb25Tb3VyY2UiKSB7
Ci0gICAgICAgIGlmIChwYXJhbWV0ZXIudmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lv
biB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIGF0dHJpYnV0aW9uU291cmNlIHF1
ZXJ5IHBhcmFtZXRlciBoYWQgbm8gdmFsdWUuIl9zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMg
bm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCBoYWQgYSBxdWVyeSBzdHJpbmcgYnV0IGl0IGRp
ZG4ndCBjb250YWluIHN1cHBvcnRlZCBwYXJhbWV0ZXJzLiJfcyk7CisKKyAgICBpZiAocGFyYW1l
dGVycy5zaXplKCkgPiAyKQorICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVj
YXVzZSB0aGUgVVJMJ3MgcXVlcnkgc3RyaW5nIGNvbnRhaW5lZCB1bnN1cHBvcnRlZCBwYXJhbWV0
ZXJzLiJfcyk7CisKKyAgICBFcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlIGRlc3RpbmF0aW9uTm9u
Y2U7CisgICAgUmVnaXN0cmFibGVEb21haW4gc291cmNlRG9tYWluOworICAgIGZvciAoYXV0byYg
cGFyYW1ldGVyIDogcGFyYW1ldGVycykgeworICAgICAgICBpZiAocGFyYW1ldGVyLmtleSA9PSAi
YXR0cmlidXRpb25Tb3VyY2UiKSB7CisgICAgICAgICAgICBpZiAocGFyYW1ldGVyLnZhbHVlLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVj
YXVzZSB0aGUgVVJMJ3MgYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1ldGVyIGhhZCBubyB2
YWx1ZS4iX3MpOworCisgICAgICAgICAgICBhdXRvIGF0dHJpYnV0aW9uU291cmNlVVJMID0gVVJM
KFVSTCgpLCBwYXJhbWV0ZXIudmFsdWUpOworICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblNv
dXJjZVVSTC5pc1ZhbGlkKCkgfHwgKGF0dHJpYnV0aW9uU291cmNlVVJMLmhhc1BhdGgoKSAmJiBh
dHRyaWJ1dGlvblNvdXJjZVVSTC5wYXRoKCkubGVuZ3RoKCkgPiAxKSB8fCBhdHRyaWJ1dGlvblNv
dXJjZVVSTC5oYXNDcmVkZW50aWFscygpIHx8IGF0dHJpYnV0aW9uU291cmNlVVJMLmhhc1F1ZXJ5
KCkgfHwgYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdz
IGF0dHJpYnV0aW9uU291cmNlIHF1ZXJ5IHBhcmFtZXRlciB3YXMgbm90IGEgdmFsaWQgVVJMIG9y
IHdhcyBhIFVSTCB3aXRoIGEgcGF0aCwgY3JlZGVudGlhbHMsIHF1ZXJ5IHN0cmluZywgb3IgZnJh
Z21lbnQuIl9zKTsKKworICAgICAgICAgICAgc291cmNlRG9tYWluID0gUmVnaXN0cmFibGVEb21h
aW4geyBhdHRyaWJ1dGlvblNvdXJjZVVSTCB9OworICAgICAgICAgICAgaWYgKHNvdXJjZURvbWFp
bi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVk
IGJlY2F1c2UgdGhlIFVSTCdzIGF0dHJpYnV0aW9uU291cmNlIHF1ZXJ5IHBhcmFtZXRlciBoYWQg
bm8gcmVnaXN0cmFibGUgZG9tYWluLiJfcyk7CisgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVy
LmtleSA9PSAiYXR0cmlidXRpb25EZXN0aW5hdGlvbk5vbmNlIikgeworICAgICAgICAgICAgaWYg
KHBhcmFtZXRlci52YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3
YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIGF0dHJpYnV0aW9uRGVzdGluYXRpb25O
b25jZSBxdWVyeSBwYXJhbWV0ZXIgaGFkIG5vIHZhbHVlLiJfcyk7CisgICAgICAgICAgICBkZXN0
aW5hdGlvbk5vbmNlLm5vbmNlID0gcGFyYW1ldGVyLnZhbHVlOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1l
bnRdIFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBx
dWVyeSBzdHJpbmcgY29udGFpbmVkIHVuc3VwcG9ydGVkIHBhcmFtZXRlcnMuIl9zKTsKKyAgICB9
CiAKLSAgICAgICAgYXV0byBhdHRyaWJ1dGlvblNvdXJjZVVSTCA9IFVSTChVUkwoKSwgcGFyYW1l
dGVyLnZhbHVlKTsKLSAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblNvdXJjZVVSTC5pc1ZhbGlkKCkg
fHwgKGF0dHJpYnV0aW9uU291cmNlVVJMLmhhc1BhdGgoKSAmJiBhdHRyaWJ1dGlvblNvdXJjZVVS
TC5wYXRoKCkubGVuZ3RoKCkgPiAxKSB8fCBhdHRyaWJ1dGlvblNvdXJjZVVSTC5oYXNDcmVkZW50
aWFscygpIHx8IGF0dHJpYnV0aW9uU291cmNlVVJMLmhhc1F1ZXJ5KCkgfHwgYXR0cmlidXRpb25T
b3VyY2VVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJzaW9uIHdhcyBu
b3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFy
YW1ldGVyIHdhcyBub3QgYSB2YWxpZCBVUkwgb3Igd2FzIGEgVVJMIHdpdGggYSBwYXRoLCBjcmVk
ZW50aWFscywgcXVlcnkgc3RyaW5nLCBvciBmcmFnbWVudC4iX3MpOworICAgIEF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEgYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAgICBpZiAoIXNvdXJjZURvbWFp
bi5pc0VtcHR5KCkpCisgICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuc291cmNlUmVnaXN0
cmFibGVEb21haW4gPSBXVEZNb3ZlKHNvdXJjZURvbWFpbik7CiAKLSAgICAgICAgQXR0cmlidXRp
b25UcmlnZ2VyRGF0YSBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwotICAgICAgICBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLnNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluID0gUmVnaXN0cmFibGVEb21haW4g
eyBhdHRyaWJ1dGlvblNvdXJjZVVSTCB9OwotICAgICAgICByZXR1cm4gYXR0cmlidXRpb25Ucmln
Z2VyRGF0YTsKLSAgICB9CisgICAgaWYgKCFkZXN0aW5hdGlvbk5vbmNlLm5vbmNlLmlzRW1wdHko
KSkKKyAgICAgICAgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5lcGhlbWVyYWxEZXN0aW5hdGlvbk5v
bmNlID0gV1RGTW92ZShkZXN0aW5hdGlvbk5vbmNlKTsKIAotICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2Nl
cHRlZCBiZWNhdXNlIHRoZSBVUkwgZGlkIG5vdCBjb250YWluIGFuIGF0dHJpYnV0aW9uU291cmNl
IHF1ZXJ5IHBhcmFtZXRlci4iX3MpOworICAgIHJldHVybiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
OwogfQogCiBFeHBlY3RlZDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25Ucmln
Z2VyRGF0YSwgU3RyaW5nPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlv
blJlcXVlc3QoY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKQEAgLTE0MCwxOCArMTk3LDIxIEBAIEV4
cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBT
dHJpbmc+IFByaXZhdGVDbGlja01lCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChudWxs
U3RyaW5nKCkpOwogCiAgICAgaWYgKCFyZWRpcmVjdFVSTC5wcm90b2NvbElzKCJodHRwcyIpIHx8
IHJlZGlyZWN0VVJMLmhhc0NyZWRlbnRpYWxzKCkgfHwgcmVkaXJlY3RVUkwuaGFzRnJhZ21lbnRJ
ZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xp
Y2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBV
UkwncyBwcm90b2NvbCBpcyBub3QgSFRUUFMgb3IgdGhlIFVSTCBjb250YWlucyBvbmUgb3IgbW9y
ZSBvZiB1c2VybmFtZSwgcGFzc3dvcmQsIGFuZCBmcmFnbWVudC4iX3MpOworICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5n
IGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgcHJvdG9jb2wgaXMgbm90
IEhUVFBTIG9yIHRoZSBVUkwgY29udGFpbnMgb25lIG9yIG1vcmUgb2YgdXNlcm5hbWUsIHBhc3N3
b3JkLCBhbmQgZnJhZ21lbnQuIl9zKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VBdHRyaWJ1
dGlvblJlcXVlc3RRdWVyeShyZWRpcmVjdFVSTCk7Ci0gICAgaWYgKCFyZXN1bHQgJiYgIXJlc3Vs
dC5lcnJvcigpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoIXJl
c3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBi
ZWNhdXNlIHRoZSBVUkwncyBxdWVyeSBzdHJpbmcgY291bGQgbm90IGJlIHBhcnNlZC4iX3MpOwor
ICAgIH0KICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSByZXN1bHQudmFsdWUoKTsK
IAogICAgIGF1dG8gcHJlZml4TGVuZ3RoID0gc2l6ZW9mKHByaXZhdGVDbGlja01lYXN1cmVtZW50
VHJpZ2dlckF0dHJpYnV0aW9uUGF0aCkgLSAxOwogICAgIGlmIChwYXRoLmxlbmd0aCgpID09IHBy
ZWZpeExlbmd0aCArIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0
YVBhdGhTZWdtZW50U2l6ZSkgewogICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFV
SW50NjQgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHBhdGguc3Vic3RyaW5nKHByZWZpeExlbmd0
aCwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21l
bnRTaXplKSk7CiAgICAgICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCB8fCAq
YXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA+IEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1h
eEVudHJvcHkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobWFrZVN0cmluZygi
W1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBi
ZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90IGJlIHBhcnNlZCBvciB3YXMgaGln
aGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3MsIEF0dHJpYnV0aW9uVHJpZ2dlckRh
dGE6Ok1heEVudHJvcHksICIuIl9zKSk7CisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQobWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZl
bnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90
IGJlIHBhcnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3Ms
IEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVudHJvcHksICIuIl9zKSk7CiAKICAgICAgICAg
YXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oKmF0dHJp
YnV0aW9uVHJpZ2dlckRhdGFVSW50NjQpOwogICAgICAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
LnByaW9yaXR5ID0gMDsKQEAgLTE2MSwxOCArMjIxLDE4IEBAIEV4cGVjdGVkPFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlj
a01lCiAgICAgaWYgKHBhdGgubGVuZ3RoKCkgPT0gcHJlZml4TGVuZ3RoICsgcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplICsgMSArIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50UHJpb3JpdHlQYXRoU2VnbWVudFNpemUpIHsKICAgICAgICAg
YXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90
PihwYXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGgsIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSkpOwogICAgICAgICBpZiAoIWF0dHJp
YnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgfHwgKmF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQg
PiBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5KQotICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBD
b252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgY29udmVyc2lvbiBkYXRhIGNv
dWxkIG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0g
b2YgIl9zLCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5LCAiLiJfcykpOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNr
IE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0
aGUgY29udmVyc2lvbiBkYXRhIGNvdWxkIG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFu
IHRoZSBhbGxvd2VkIG1heGltdW0gb2YgIl9zLCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhF
bnRyb3B5LCAiLiJfcykpOwogCiAgICAgICAgIGF1dG8gYXR0cmlidXRpb25Qcmlvcml0eVVJbnQ2
NCA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocGF0aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoICsg
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRT
aXplICsgMSwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRQcmlvcml0eVBhdGhTZWdtZW50U2l6ZSkp
OwogICAgICAgICBpZiAoIWF0dHJpYnV0aW9uUHJpb3JpdHlVSW50NjQgfHwgKmF0dHJpYnV0aW9u
UHJpb3JpdHlVSW50NjQgPiBQcmlvcml0eTo6TWF4RW50cm9weSkKLSAgICAgICAgICAgIHJldHVy
biBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0g
Q29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIHByaW9yaXR5IGNvdWxkIG5v
dCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gb2YgIl9z
LCBQcmlvcml0eTo6TWF4RW50cm9weSwgIi4iX3MpKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZChtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dl
cmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIHByaW9yaXR5IGNvdWxkIG5v
dCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gb2YgIl9z
LCBQcmlvcml0eTo6TWF4RW50cm9weSwgIi4iX3MpKTsKIAogICAgICAgICBhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhLmRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90PigqYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YVVJbnQ2NCk7CiAgICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEucHJpb3JpdHkgPSBz
dGF0aWNfY2FzdDx1aW50OF90PigqYXR0cmlidXRpb25Qcmlvcml0eVVJbnQ2NCk7CiAgICAgICAg
IHJldHVybiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIH0KIAotICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5v
dCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwgcGF0aCBjb250YWluZWQgdW5yZWNvZ25pemVkIHBh
cnRzLiJfcyk7CisgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFz
dXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVS
TCBwYXRoIGNvbnRhaW5lZCB1bnJlY29nbml6ZWQgcGFydHMuIl9zKTsKIH0KIAogYm9vbCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6aGFzUHJldmlvdXNseUJlZW5SZXBvcnRlZCgpCkBAIC0yNjIs
MjEgKzMyMiwzNyBAQCBSZWY8SlNPTjo6T2JqZWN0PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
YXR0cmlidXRpb25SZXBvcnRKU09OKCkgY29uc3QKICAgICAgICAgcmVwb3J0RGV0YWlscy0+c2V0
U3RyaW5nKCJzb3VyY2Vfc2VjcmV0X3Rva2VuX3NpZ25hdHVyZSJfcywgbV9zb3VyY2VTZWNyZXRU
b2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJMKTsKICAgICB9CiAKKyAgICAvLyBUaGlzIHRva2VuIGhh
cyBiZWVuIGtlcHQgc2VjcmV0IHRoaXMgZmFyIGFuZCBjYW5ub3QgYmUgbGlua2VkIHRvIHRoZSB1
bmxpbmthYmxlIHRva2VuLgorICAgIGlmIChtX2F0dHJpYnV0aW9uVHJpZ2dlckRhdGEtPmRlc3Rp
bmF0aW9uU2VjcmV0VG9rZW4pIHsKKyAgICAgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJk
ZXN0aW5hdGlvbl9zZWNyZXRfdG9rZW4iX3MsIG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+ZGVz
dGluYXRpb25TZWNyZXRUb2tlbi0+dG9rZW5CYXNlNjRVUkwpOworICAgICAgICByZXBvcnREZXRh
aWxzLT5zZXRTdHJpbmcoImRlc3RpbmF0aW9uX3NlY3JldF90b2tlbl9zaWduYXR1cmUiX3MsIG1f
YXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+ZGVzdGluYXRpb25TZWNyZXRUb2tlbi0+c2lnbmF0dXJl
QmFzZTY0VVJMKTsKKyAgICB9CisKICAgICByZXR1cm4gcmVwb3J0RGV0YWlsczsKIH0KIAogLy8g
TUFSSzogLSBGcmF1ZCBQcmV2ZW50aW9uCiAKLXN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgRXBo
ZW1lcmFsU291cmNlTm9uY2VSZXF1aXJlZE51bWJlck9mQnl0ZXMgPSAxNjsKK3N0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgRXBoZW1lcmFsTm9uY2VSZXF1aXJlZE51bWJlck9mQnl0ZXMgPSAxNjsK
IAogYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U6Omlz
VmFsaWQoKSBjb25zdAoreworICAgIHJldHVybiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aXNO
b25jZVZhbGlkKG5vbmNlKTsKK30KKworYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBo
ZW1lcmFsRGVzdGluYXRpb25Ob25jZTo6aXNWYWxpZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Ojppc05vbmNlVmFsaWQobm9uY2UpOworfQorCitib29sIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Ojppc05vbmNlVmFsaWQoY29uc3QgU3RyaW5nJiBub25jZSkK
IHsKICAgICAvLyBGSVhNRTogSW52ZXN0aWdhdGUgaWYgd2UgY2FuIGRvIHdpdGggYSBzaW1wbGUg
bGVuZ3RoIGNoZWNrIGluc3RlYWQgb2YgZGVjb2RpbmcuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTk0NQogICAgIGF1dG8gZGlnZXN0ID0gYmFzZTY0
VVJMRGVjb2RlKG5vbmNlKTsKICAgICBpZiAoIWRpZ2VzdCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiBkaWdlc3QtPnNpemUoKSA9PSBFcGhlbWVyYWxTb3VyY2VOb25jZVJlcXVp
cmVkTnVtYmVyT2ZCeXRlczsKKyAgICByZXR1cm4gZGlnZXN0LT5zaXplKCkgPT0gRXBoZW1lcmFs
Tm9uY2VSZXF1aXJlZE51bWJlck9mQnl0ZXM7CiB9CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OnNldEVwaGVtZXJhbFNvdXJjZU5vbmNlKEVwaGVtZXJhbFNvdXJjZU5vbmNlJiYgbm9u
Y2UpCkBAIC0yODYsMTcgKzM2MiwzMSBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojpz
ZXRFcGhlbWVyYWxTb3VyY2VOb25jZShFcGhlbWVyYWxTb3VyY2VOb25jZSYmIG5vbgogICAgIG1f
ZXBoZW1lcmFsU291cmNlTm9uY2UgPSBXVEZNb3ZlKG5vbmNlKTsKIH0KIAotVVJMIFByaXZhdGVD
bGlja01lYXN1cmVtZW50Ojp0b2tlblNpZ25hdHVyZVVSTCgpIGNvbnN0Citjb25zdCBzdGQ6Om9w
dGlvbmFsPGNvbnN0IFVSTD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuUHVibGljS2V5
VVJMKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKIHsKLSAgICBp
ZiAoIW1fZXBoZW1lcmFsU291cmNlTm9uY2UgfHwgIW1fZXBoZW1lcmFsU291cmNlTm9uY2UtPmlz
VmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIFVSTCgpOworICAgIGlmIChyZWdpc3RyYWJsZURvbWFp
bi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIG1h
a2VWYWxpZFVSTChyZWdpc3RyYWJsZURvbWFpbiwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tl
blB1YmxpY0tleVBhdGgpOworfQogCi0gICAgcmV0dXJuIG1ha2VWYWxpZFVSTChtX3NvdXJjZVNp
dGUucmVnaXN0cmFibGVEb21haW4sIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1
cmVQYXRoKTsKK2NvbnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgVVJMPiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6dG9rZW5QdWJsaWNLZXlVUkwoKSBjb25zdAoreworICAgIHJldHVybiB0b2tlblB1
YmxpY0tleVVSTChtX3NvdXJjZVNpdGUucmVnaXN0cmFibGVEb21haW4pOworfQorCitjb25zdCBz
dGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2ln
bmF0dXJlVVJMKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKK3sK
KyAgICBpZiAocmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIHJldHVybiBtYWtlVmFsaWRVUkwocmVnaXN0cmFibGVEb21haW4sIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50VG9rZW5TaWduYXR1cmVQYXRoKTsKIH0KIAotVVJMIFByaXZh
dGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblB1YmxpY0tleVVSTCgpIGNvbnN0Citjb25zdCBzdGQ6
Om9wdGlvbmFsPGNvbnN0IFVSTD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2lnbmF0
dXJlVVJMKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVZhbGlkVVJMKG1fc291cmNlU2l0ZS5y
ZWdpc3RyYWJsZURvbWFpbiwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVBh
dGgpOworICAgIGlmICghbV9lcGhlbWVyYWxTb3VyY2VOb25jZSB8fCAhbV9lcGhlbWVyYWxTb3Vy
Y2VOb25jZS0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
cmV0dXJuIHRva2VuU2lnbmF0dXJlVVJMKG1fc291cmNlU2l0ZS5yZWdpc3RyYWJsZURvbWFpbik7
CiB9CiAKIFJlZjxKU09OOjpPYmplY3Q+IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblNp
Z25hdHVyZUpTT04oKSBjb25zdApAQCAtMzE2LDYgKzQwNiwyOCBAQCBSZWY8SlNPTjo6T2JqZWN0
PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1cmVKU09OKCkgY29uc3QKICAg
ICByZXR1cm4gcmVwb3J0RGV0YWlsczsKIH0KIAorUmVmPEpTT046Ok9iamVjdD4gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OnRva2VuU2lnbmF0dXJlSlNP
TigpIGNvbnN0Cit7CisgICAgYXV0byByZXBvcnREZXRhaWxzID0gSlNPTjo6T2JqZWN0OjpjcmVh
dGUoKTsKKyAgICBpZiAoIWVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2UgfHwgIWVwaGVtZXJhbERl
c3RpbmF0aW9uTm9uY2UtPmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHJlcG9ydERldGFpbHM7
CisKKyAgICBpZiAoIWRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuIHx8IGRlc3RpbmF0aW9uVW5s
aW5rYWJsZVRva2VuLT52YWx1ZUJhc2U2NFVSTC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBy
ZXBvcnREZXRhaWxzOworCisgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJzb3VyY2VfZW5n
YWdlbWVudF90eXBlIl9zLCAiY2xpY2siX3MpOworICAgIHJlcG9ydERldGFpbHMtPnNldFN0cmlu
ZygiZGVzdGluYXRpb25fbm9uY2UiX3MsIGVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2UtPm5vbmNl
KTsKKyAgICAvLyBUaGlzIHRva2VuIGNhbiBub3QgYmUgbGlua2VkIHRvIHRoZSBzZWNyZXQgdG9r
ZW4uCisgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJkZXN0aW5hdGlvbl91bmxpbmthYmxl
X3Rva2VuIl9zLCBkZXN0aW5hdGlvblVubGlua2FibGVUb2tlbi0+dmFsdWVCYXNlNjRVUkwpOwor
ICAgIHJlcG9ydERldGFpbHMtPnNldEludGVnZXIoInZlcnNpb24iX3MsIHByaXZhdGVDbGlja01l
YXN1cmVtZW50VmVyc2lvbik7CisgICAgcmV0dXJuIHJlcG9ydERldGFpbHM7Cit9CisKK2Jvb2wg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuOjppc1ZhbGlkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gISh0b2tlbkJhc2U2NFVSTC5pc0VtcHR5KCkgfHwgc2lnbmF0dXJlQmFzZTY0
VVJMLmlzRW1wdHkoKSB8fCBrZXlJREJhc2U2NFVSTC5pc0VtcHR5KCkpOworfQorCiB2b2lkIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpzZXRTb3VyY2VTZWNyZXRUb2tlbihTb3VyY2VTZWNyZXRU
b2tlbiYmIHRva2VuKQogewogICAgIGlmICghdG9rZW4uaXNWYWxpZCgpKQpAQCAtMzIzLDkgKzQz
NSwxMSBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpzZXRTb3VyY2VTZWNyZXRUb2tl
bihTb3VyY2VTZWNyZXRUb2tlbiYmIHRva2VuKQogICAgIG1fc291cmNlU2VjcmV0VG9rZW4gPSBX
VEZNb3ZlKHRva2VuKTsKIH0KIAotYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNl
U2VjcmV0VG9rZW46OmlzVmFsaWQoKSBjb25zdAordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6c2V0RGVzdGluYXRpb25TZWNyZXRUb2tlbihEZXN0aW5hdGlvblNlY3JldFRva2VuJiYgdG9r
ZW4pCiB7Ci0gICAgcmV0dXJuICEodG9rZW5CYXNlNjRVUkwuaXNFbXB0eSgpIHx8IHNpZ25hdHVy
ZUJhc2U2NFVSTC5pc0VtcHR5KCkgfHwga2V5SURCYXNlNjRVUkwuaXNFbXB0eSgpKTsKKyAgICBp
ZiAoIXRva2VuLmlzVmFsaWQoKSB8fCAhbV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQorICAgICAg
ICByZXR1cm47CisgICAgbV9hdHRyaWJ1dGlvblRyaWdnZXJEYXRhLT5kZXN0aW5hdGlvblNlY3Jl
dFRva2VuID0gV1RGTW92ZSh0b2tlbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKaW5kZXgg
ZmNjM2U5YmU2MTcwMDY4NGYxYzRjZDllNTM0NzBlMDEwYjc5YmMxMy4uYTg0NjdhNWRjM2FlYTY3
Mjg0ZmM5NzNjZWQzZjFhYzExNDc1NjNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmgKQEAgLTE2OCwxNiArMTY4LDYzIEBAIHB1YmxpYzoK
ICAgICAgICAgUHJpb3JpdHlWYWx1ZSB2YWx1ZTsKICAgICB9OwogICAgIAorICAgIHN0cnVjdCBF
cGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlIHsKKyAgICAgICAgU3RyaW5nIG5vbmNlOworCisgICAg
ICAgIEVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2UgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKKyAg
ICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisKKyAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxFcGhlbWVyYWxE
ZXN0aW5hdGlvbk5vbmNlPiBkZWNvZGUoRGVjb2RlciYpOworICAgIH07CisKKyAgICBzdHJ1Y3Qg
VW5saW5rYWJsZVRva2VuIHsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgUmV0YWluUHRy
PFJTQUJTU0FUb2tlbkJsaW5kZXI+IGJsaW5kZXI7CisgICAgICAgIFJldGFpblB0cjxSU0FCU1NB
VG9rZW5XYWl0aW5nQWN0aXZhdGlvbj4gd2FpdGluZ1Rva2VuOworICAgICAgICBSZXRhaW5QdHI8
UlNBQlNTQVRva2VuUmVhZHk+IHJlYWR5VG9rZW47CisjZW5kaWYKKyAgICAgICAgU3RyaW5nIHZh
bHVlQmFzZTY0VVJMOworICAgICAgICAKKyAgICAgICAgVW5saW5rYWJsZVRva2VuIGlzb2xhdGVk
Q29weSgpIGNvbnN0OworICAgIH07CisKKyAgICBzdHJ1Y3QgU291cmNlVW5saW5rYWJsZVRva2Vu
IDogVW5saW5rYWJsZVRva2VuIHsKKyAgICAgICAgU291cmNlVW5saW5rYWJsZVRva2VuIGlzb2xh
dGVkQ29weSgpIGNvbnN0OworICAgIH07CisKKyAgICBzdHJ1Y3QgRGVzdGluYXRpb25Vbmxpbmth
YmxlVG9rZW4gOiBVbmxpbmthYmxlVG9rZW4geworICAgICAgICBEZXN0aW5hdGlvblVubGlua2Fi
bGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICB9OworCisgICAgc3RydWN0IFNlY3Jl
dFRva2VuIHsKKyAgICAgICAgU3RyaW5nIHRva2VuQmFzZTY0VVJMOworICAgICAgICBTdHJpbmcg
c2lnbmF0dXJlQmFzZTY0VVJMOworICAgICAgICBTdHJpbmcga2V5SURCYXNlNjRVUkw7CisgICAg
ICAgIFNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OworICAgICAgICBib29sIGlzVmFs
aWQoKSBjb25zdDsKKyAgICB9OworCisgICAgc3RydWN0IFNvdXJjZVNlY3JldFRva2VuIDogU2Vj
cmV0VG9rZW4geworICAgICAgICBTb3VyY2VTZWNyZXRUb2tlbiBpc29sYXRlZENvcHkoKSBjb25z
dDsKKyAgICB9OworCisgICAgc3RydWN0IERlc3RpbmF0aW9uU2VjcmV0VG9rZW4gOiBTZWNyZXRU
b2tlbiB7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIERlc3RpbmF0aW9uU2VjcmV0VG9rZW4gaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgfTsKKwogICAgIHN0cnVjdCBBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhIHsKICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IE1heEVudHJvcHkgPSAx
NTsKIAogICAgICAgICBlbnVtIGNsYXNzIFdhc1NlbnQgOiBib29sIHsgTm8sIFllcyB9OwogCiAg
ICAgICAgIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIEF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEodWludDhfdCBkYXRhLCBQcmlvcml0eSBwcmlvcml0eSwgV2FzU2Vu
dCB3YXNTZW50ID0gV2FzU2VudDo6Tm8pCisgICAgICAgIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEo
dWludDhfdCBkYXRhLCBQcmlvcml0eSBwcmlvcml0eSwgV2FzU2VudCB3YXNTZW50ID0gV2FzU2Vu
dDo6Tm8sIHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZT4gbm9uY2UgPSBz
dGQ6Om51bGxvcHQpCiAgICAgICAgICAgICA6IGRhdGEgeyBkYXRhIH0KICAgICAgICAgICAgICwg
cHJpb3JpdHkgeyBwcmlvcml0eS52YWx1ZSB9CiAgICAgICAgICAgICAsIHdhc1NlbnQgeyB3YXNT
ZW50IH0KKyAgICAgICAgICAgICwgZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZSB7IG5vbmNlIH0K
ICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTE4NSwxMSArMjMyLDI2IEBAIHB1YmxpYzoKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGRhdGEgPD0gTWF4RW50cm9weSAmJiBwcmlvcml0
eSA8PSBQcmlvcml0eTo6TWF4RW50cm9weTsKICAgICAgICAgfQotICAgICAgICAKKworICAgICAg
ICB2b2lkIHNldERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuVmFsdWUoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvblVubGlua2FibGVU
b2tlbikKKyAgICAgICAgICAgICAgICBkZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiA9IERlc3Rp
bmF0aW9uVW5saW5rYWJsZVRva2VuIHsgfTsKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uVW5saW5r
YWJsZVRva2VuLT52YWx1ZUJhc2U2NFVSTCA9IHZhbHVlOworICAgICAgICB9CisgICAgICAgIHZv
aWQgc2V0RGVzdGluYXRpb25TZWNyZXRUb2tlbihjb25zdCBEZXN0aW5hdGlvblNlY3JldFRva2Vu
JiB0b2tlbikgeyBkZXN0aW5hdGlvblNlY3JldFRva2VuID0gdG9rZW47IH0KKyAgICAgICAgY29u
c3Qgc3RkOjpvcHRpb25hbDxjb25zdCBVUkw+IHRva2VuUHVibGljS2V5VVJMKCkgY29uc3QgeyBy
ZXR1cm4gZGVzdGluYXRpb25TaXRlID8gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuUHVi
bGljS2V5VVJMKCpkZXN0aW5hdGlvblNpdGUpIDogVVJMKCk7IH0KKyAgICAgICAgY29uc3Qgc3Rk
OjpvcHRpb25hbDxjb25zdCBVUkw+IHRva2VuU2lnbmF0dXJlVVJMKCkgY29uc3QgeyByZXR1cm4g
ZGVzdGluYXRpb25TaXRlID8gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2lnbmF0dXJl
VVJMKCpkZXN0aW5hdGlvblNpdGUpIDogVVJMKCk7IH0KKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
UmVmPEpTT046Ok9iamVjdD4gdG9rZW5TaWduYXR1cmVKU09OKCkgY29uc3Q7CisKICAgICAgICAg
dWludDhfdCBkYXRhIHsgMCB9OwogICAgICAgICBQcmlvcml0eVZhbHVlIHByaW9yaXR5OwogICAg
ICAgICBXYXNTZW50IHdhc1NlbnQgPSBXYXNTZW50OjpObzsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxSZWdpc3RyYWJsZURvbWFpbj4gc291cmNlUmVnaXN0cmFibGVEb21haW47CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8RXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZT4gZXBoZW1lcmFsRGVzdGluYXRp
b25Ob25jZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxEZXN0aW5hdGlvblVubGlua2FibGVUb2tl
bj4gZGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW47CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RGVz
dGluYXRpb25TZWNyZXRUb2tlbj4gZGVzdGluYXRpb25TZWNyZXRUb2tlbjsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gZGVzdGluYXRpb25TaXRlOwogCiAgICAgICAg
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAg
ICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXR0cmli
dXRpb25UcmlnZ2VyRGF0YT4gZGVjb2RlKERlY29kZXImKTsKQEAgLTMzOCw4ICs0MDAsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0RXBoZW1lcmFsKEF0dHJpYnV0aW9uRXBoZW1lcmFsIGlzRXBo
ZW1lcmFsKSB7IG1faXNFcGhlbWVyYWwgPSBpc0VwaGVtZXJhbDsgfQogCiAgICAgLy8gTUFSSzog
LSBGcmF1ZCBQcmV2ZW50aW9uCi0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIHRva2VuUHVibGljS2V5
VVJMKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgVVJMIHRva2VuU2lnbmF0dXJlVVJMKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBVUkw+
IHRva2VuUHVibGljS2V5VVJMKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgVVJMPiB0b2tlblB1YmxpY0tleVVSTChjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpOworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHN0ZDo6b3B0aW9uYWw8
Y29uc3QgVVJMPiB0b2tlblNpZ25hdHVyZVVSTCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4gdG9rZW5TaWduYXR1cmVVUkwo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZjxKU09O
OjpPYmplY3Q+IHRva2VuU2lnbmF0dXJlSlNPTigpIGNvbnN0OwogCkBAIC0zNTcsMjQgKzQyMSwy
MiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFcGhlbWVyYWxTb3VyY2VO
b25jZShFcGhlbWVyYWxTb3VyY2VOb25jZSYmKTsKICAgICBzdGQ6Om9wdGlvbmFsPEVwaGVtZXJh
bFNvdXJjZU5vbmNlPiBlcGhlbWVyYWxTb3VyY2VOb25jZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXBo
ZW1lcmFsU291cmNlTm9uY2U7IH07CiAgICAgdm9pZCBjbGVhckVwaGVtZXJhbFNvdXJjZU5vbmNl
KCkgeyBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlLnJlc2V0KCk7IH07Ci0KLSAgICBzdHJ1Y3QgU291
cmNlU2VjcmV0VG9rZW4gewotICAgICAgICBTdHJpbmcgdG9rZW5CYXNlNjRVUkw7Ci0gICAgICAg
IFN0cmluZyBzaWduYXR1cmVCYXNlNjRVUkw7Ci0gICAgICAgIFN0cmluZyBrZXlJREJhc2U2NFVS
TDsKLQotICAgICAgICBTb3VyY2VTZWNyZXRUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKLSAg
ICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7Ci0gICAgfTsKKyAgICAKKyAgICBzdGF0aWMgYm9v
bCBpc05vbmNlVmFsaWQoY29uc3QgU3RyaW5nJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY2FsY3VsYXRlQW5kVXBkYXRl
U291cmNlVW5saW5rYWJsZVRva2VuKGNvbnN0IFN0cmluZyYgc2VydmVyUHVibGljS2V5QmFzZTY0
VVJMKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhwZWN0ZWQ8RGVzdGluYXRpb25Vbmxp
bmthYmxlVG9rZW4sIFN0cmluZz4gY2FsY3VsYXRlQW5kVXBkYXRlRGVzdGluYXRpb25Vbmxpbmth
YmxlVG9rZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjYWxjdWxhdGVBbmRVcGRhdGVTb3Vy
Y2VTZWNyZXRUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclJlc3BvbnNlQmFzZTY0VVJMKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhwZWN0ZWQ8RGVzdGluYXRpb25TZWNyZXRUb2tlbiwg
U3RyaW5nPiBjYWxjdWxhdGVBbmRVcGRhdGVEZXN0aW5hdGlvblNlY3JldFRva2VuKGNvbnN0IFN0
cmluZyYgc2VydmVyUmVzcG9uc2VCYXNlNjRVUkwsIERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2Vu
Jik7CiAjZW5kaWYKIAorICAgIFNvdXJjZVVubGlua2FibGVUb2tlbiYgc291cmNlVW5saW5rYWJs
ZVRva2VuKCkgeyByZXR1cm4gbV9zb3VyY2VVbmxpbmthYmxlVG9rZW47IH0KICAgICB2b2lkIHNl
dFNvdXJjZVVubGlua2FibGVUb2tlblZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgbV9zb3Vy
Y2VVbmxpbmthYmxlVG9rZW4udmFsdWVCYXNlNjRVUkwgPSB2YWx1ZTsgfQogICAgIGNvbnN0IHN0
ZDo6b3B0aW9uYWw8U291cmNlU2VjcmV0VG9rZW4+JiBzb3VyY2VTZWNyZXRUb2tlbigpIGNvbnN0
IHsgcmV0dXJuIG1fc291cmNlU2VjcmV0VG9rZW47IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFNvdXJjZVNlY3JldFRva2VuKFNvdXJjZVNlY3JldFRva2VuJiYpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0RGVzdGluYXRpb25TZWNyZXRUb2tlbihEZXN0aW5hdGlvblNlY3JldFRv
a2VuJiYpOworCiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNv
ZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IGRlY29kZShEZWNvZGVyJik7CkBAIC0zODUs
NiArNDQ3LDExIEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEV4cGVjdGVkPEF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEsIFN0cmluZz4gcGFyc2VBdHRyaWJ1dGlvblJlcXVlc3RRdWVyeShjb25zdCBVUkwm
KTsKICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY2FsY3VsYXRlQW5kVXBkYXRlVW5saW5rYWJs
ZVRva2VuKGNvbnN0IFN0cmluZyYgc2VydmVyUHVibGljS2V5QmFzZTY0VVJMLCBVbmxpbmthYmxl
VG9rZW4mLCBjb25zdCBTdHJpbmcmIGNvbnRleHRGb3JMb2dNZXNzYWdlKTsKKyAgICBzdGF0aWMg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGNhbGN1bGF0ZUFuZFVwZGF0ZVNlY3JldFRva2VuKGNvbnN0
IFN0cmluZyYgc2VydmVyUmVzcG9uc2VCYXNlNjRVUkwsIFVubGlua2FibGVUb2tlbiYsIFNlY3Jl
dFRva2VuJiwgY29uc3QgU3RyaW5nJiBjb250ZXh0Rm9yTG9nTWVzc2FnZSk7CisjZW5kaWYKKwog
ICAgIFNvdXJjZUlEIG1fc291cmNlSUQ7CiAgICAgU291cmNlU2l0ZSBtX3NvdXJjZVNpdGU7CiAg
ICAgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgbV9kZXN0aW5hdGlvblNpdGU7CkBAIC0zOTQs
MTcgKzQ2MSw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhPiBtX2F0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAgICAgQXR0cmlidXRpb25UaW1lVG9T
ZW5kRGF0YSBtX3RpbWVzVG9TZW5kOwogCi0gICAgc3RydWN0IFNvdXJjZVVubGlua2FibGVUb2tl
biB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIFJldGFpblB0cjxSU0FCU1NBVG9rZW5C
bGluZGVyPiBibGluZGVyOwotICAgICAgICBSZXRhaW5QdHI8UlNBQlNTQVRva2VuV2FpdGluZ0Fj
dGl2YXRpb24+IHdhaXRpbmdUb2tlbjsKLSAgICAgICAgUmV0YWluUHRyPFJTQUJTU0FUb2tlblJl
YWR5PiByZWFkeVRva2VuOwotI2VuZGlmCi0gICAgICAgIFN0cmluZyB2YWx1ZUJhc2U2NFVSTDsK
LQotICAgICAgICBTb3VyY2VVbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Ci0g
ICAgfTsKLQogICAgIHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+IG1fZXBoZW1l
cmFsU291cmNlTm9uY2U7CiAgICAgU291cmNlVW5saW5rYWJsZVRva2VuIG1fc291cmNlVW5saW5r
YWJsZVRva2VuOwogICAgIHN0ZDo6b3B0aW9uYWw8U291cmNlU2VjcmV0VG9rZW4+IG1fc291cmNl
U2VjcmV0VG9rZW47CkBAIC01MDUsMTAgKzU2MSwyNyBAQCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZT4gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZQogICAgIHJldHVybiBFcGhlbWVyYWxTb3VyY2VOb25jZSB7IFdURk1vdmUoKm5vbmNlKSB9Owog
fQogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBub25jZTsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4KK3N0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbERlc3Rp
bmF0aW9uTm9uY2U+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxEZXN0aW5hdGlv
bk5vbmNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gbm9uY2U7CisgICAgZGVjb2RlciA+PiBub25jZTsKKyAgICBpZiAoIW5vbmNlKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHJldHVybiBFcGhlbWVyYWxEZXN0
aW5hdGlvbk5vbmNlIHsgV1RGTW92ZSgqbm9uY2UpIH07Cit9CisKIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+CiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJE
YXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGRh
dGEgPDwgcHJpb3JpdHkgPDwgd2FzU2VudCA8PCBzb3VyY2VSZWdpc3RyYWJsZURvbWFpbjsKKyAg
ICBlbmNvZGVyIDw8IGRhdGEgPDwgcHJpb3JpdHkgPDwgd2FzU2VudCA8PCBzb3VyY2VSZWdpc3Ry
YWJsZURvbWFpbiA8PCBlcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlIDw8IGRlc3RpbmF0aW9uU2l0
ZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTUzMyw5ICs2MDYsMjEgQEAgc3Rk
OjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0
YT4gUHJpdmF0ZUNsaWNrTWVhc3UKICAgICBkZWNvZGVyID4+IHNvdXJjZVJlZ2lzdHJhYmxlRG9t
YWluOwogICAgIGlmICghc291cmNlUmVnaXN0cmFibGVEb21haW4pCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7Ci0gICAgCisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8RXBo
ZW1lcmFsRGVzdGluYXRpb25Ob25jZT4+IGVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2U7CisgICAg
ZGVjb2RlciA+PiBlcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlOworICAgIGlmICghZXBoZW1lcmFs
RGVzdGluYXRpb25Ob25jZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0
ZDo6b3B0aW9uYWw8c3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4+IGRlc3RpbmF0aW9u
U2l0ZTsKKyAgICBkZWNvZGVyID4+IGRlc3RpbmF0aW9uU2l0ZTsKKyAgICBpZiAoIWRlc3RpbmF0
aW9uU2l0ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIEF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7IFdURk1vdmUoKmRhdGEpLCBQcmlv
cml0eSB7ICpwcmlvcml0eSB9LCAqd2FzU2VudCB9OwogICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEuc291cmNlUmVnaXN0cmFibGVEb21haW4gPSBXVEZNb3ZlKCpzb3VyY2VSZWdpc3RyYWJsZURv
bWFpbik7CisgICAgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5lcGhlbWVyYWxEZXN0aW5hdGlvbk5v
bmNlID0gV1RGTW92ZSgqZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZSk7CisgICAgYXR0cmlidXRp
b25UcmlnZ2VyRGF0YS5kZXN0aW5hdGlvblNpdGUgPSBXVEZNb3ZlKCpkZXN0aW5hdGlvblNpdGUp
OwogICAgIHJldHVybiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENv
Y29hLm1tCmluZGV4IDIzZDg3YzI3YWExYjVhMWQzYjA2MGQ5ODYxOGJlODc2NTFmYTc4OTMuLmJm
N2VkOGEyYTRjM2YzNzk1MWZjMWRmZTMwN2VmNzAzYzk1ZDcyYTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENv
Y29hLm1tCkBAIC0zMSw2NiArMzEsMTAyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBk
YXRlU291cmNlVW5saW5rYWJsZVRva2VuKGNvbnN0IFN0cmluZyYgc2VydmVyUHVibGljS2V5QmFz
ZTY0VVJMKQoreworICAgIHJldHVybiBjYWxjdWxhdGVBbmRVcGRhdGVVbmxpbmthYmxlVG9rZW4o
c2VydmVyUHVibGljS2V5QmFzZTY0VVJMLCBtX3NvdXJjZVVubGlua2FibGVUb2tlbiwgInNvdXJj
ZSJfcyk7Cit9CisKK0V4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlv
blVubGlua2FibGVUb2tlbiwgU3RyaW5nPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3Vs
YXRlQW5kVXBkYXRlRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4oY29uc3QgU3RyaW5nJiBzZXJ2
ZXJQdWJsaWNLZXlCYXNlNjRVUkwpCit7CisgICAgRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4g
ZGVzdGluYXRpb25Ub2tlbjsKKyAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGNhbGN1bGF0ZUFuZFVw
ZGF0ZVVubGlua2FibGVUb2tlbihzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwsIGRlc3RpbmF0aW9u
VG9rZW4sICJkZXN0aW5hdGlvbiJfcyk7CisgICAgaWYgKGVycm9yTWVzc2FnZSkKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCplcnJvck1lc3NhZ2UpOworICAgIHJldHVybiBkZXN0aW5h
dGlvblRva2VuOworfQorCitzdGQ6Om9wdGlvbmFsPFN0cmluZz4gUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVVubGlua2FibGVUb2tlbihjb25zdCBTdHJpbmcmIHNl
cnZlclB1YmxpY0tleUJhc2U2NFVSTCwgVW5saW5rYWJsZVRva2VuJiB1bmxpbmthYmxlVG9rZW4s
IGNvbnN0IFN0cmluZyYgY29udGV4dEZvckxvZ01lc3NhZ2UpCiB7CiAjaWYgSEFWRShSU0FfQlNT
QSkKICAgICB7CiAgICAgICAgIGF1dG8gc2VydmVyUHVibGljS2V5RGF0YSA9IGJhc2U2NFVSTERl
Y29kZShzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwpOwogICAgICAgICBpZiAoIXNlcnZlclB1Ymxp
Y0tleURhdGEpCi0gICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBkZWNvZGUgdGhlIHNvdXJj
ZSdzIHB1YmxpYyBrZXkgZGF0YS4iX3M7CisgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygi
Q291bGQgbm90IGRlY29kZSB0aGUgIiwgY29udGV4dEZvckxvZ01lc3NhZ2UsICIncyBwdWJsaWMg
a2V5IGRhdGEuIik7CiAgICAgICAgIGF1dG8gc2VydmVyUHVibGljS2V5ID0gYWRvcHROUyhbW05T
RGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpzZXJ2ZXJQdWJsaWNLZXlEYXRhLT5kYXRhKCkgbGVu
Z3RoOnNlcnZlclB1YmxpY0tleURhdGEtPnNpemUoKV0pOwogCiAgICAgICAgIE5TRXJyb3IqIG5z
RXJyb3IgPSAwOwotICAgICAgICBtX3NvdXJjZVVubGlua2FibGVUb2tlbi5ibGluZGVyID0gYWRv
cHROUyhbUEFMOjphbGxvY1JTQUJTU0FUb2tlbkJsaW5kZXJJbnN0YW5jZSgpIGluaXRXaXRoUHVi
bGljS2V5OnNlcnZlclB1YmxpY0tleS5nZXQoKSBlcnJvcjombnNFcnJvcl0pOworICAgICAgICB1
bmxpbmthYmxlVG9rZW4uYmxpbmRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NSU0FCU1NBVG9rZW5C
bGluZGVySW5zdGFuY2UoKSBpbml0V2l0aFB1YmxpY0tleTpzZXJ2ZXJQdWJsaWNLZXkuZ2V0KCkg
ZXJyb3I6Jm5zRXJyb3JdKTsKICAgICAgICAgaWYgKG5zRXJyb3IpCiAgICAgICAgICAgICByZXR1
cm4gbnNFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbjsKLSAgICAgICAgaWYgKCFtX3NvdXJjZVVu
bGlua2FibGVUb2tlbi5ibGluZGVyKQotICAgICAgICAgICAgcmV0dXJuICJEaWQgbm90IGdldCBh
IHNvdXJjZSB1bmxpbmthYmxlIHRva2VuIGJsaW5kZXIuIl9zOworICAgICAgICBpZiAoIXVubGlu
a2FibGVUb2tlbi5ibGluZGVyKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkRpZCBu
b3QgZ2V0IGEgIiwgY29udGV4dEZvckxvZ01lc3NhZ2UsICIgdW5saW5rYWJsZSB0b2tlbiBibGlu
ZGVyLiIpOwogICAgIH0KIAogICAgIE5TRXJyb3IqIG5zRXJyb3IgPSAwOwotICAgIG1fc291cmNl
VW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tlbiA9IFttX3NvdXJjZVVubGlua2FibGVUb2tlbi5i
bGluZGVyIHRva2VuV2FpdGluZ0FjdGl2YXRpb25XaXRoQ29udGVudDpudWxscHRyIGVycm9yOiZu
c0Vycm9yXTsKKyAgICB1bmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuID0gW3VubGlua2FibGVU
b2tlbi5ibGluZGVyIHRva2VuV2FpdGluZ0FjdGl2YXRpb25XaXRoQ29udGVudDpudWxscHRyIGVy
cm9yOiZuc0Vycm9yXTsKICAgICBpZiAobnNFcnJvcikKICAgICAgICAgcmV0dXJuIG5zRXJyb3Iu
bG9jYWxpemVkRGVzY3JpcHRpb247Ci0gICAgaWYgKCFtX3NvdXJjZVVubGlua2FibGVUb2tlbi53
YWl0aW5nVG9rZW4pCi0gICAgICAgIHJldHVybiAiRGlkIG5vdCBnZXQgYSBzb3VyY2UgdW5saW5r
YWJsZSB0b2tlbiB3YWl0aW5nIHRva2VuLiJfczsKKyAgICBpZiAoIXVubGlua2FibGVUb2tlbi53
YWl0aW5nVG9rZW4pCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJEaWQgbm90IGdldCBhICIs
IGNvbnRleHRGb3JMb2dNZXNzYWdlLCAiIHVubGlua2FibGUgdG9rZW4gd2FpdGluZyB0b2tlbi4i
KTsKIAotICAgIG1fc291cmNlVW5saW5rYWJsZVRva2VuLnZhbHVlQmFzZTY0VVJMID0gYmFzZTY0
VVJMRW5jb2RlVG9TdHJpbmcoW21fc291cmNlVW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tlbiBi
bGluZGVkTWVzc2FnZV0uYnl0ZXMsIFttX3NvdXJjZVVubGlua2FibGVUb2tlbi53YWl0aW5nVG9r
ZW4gYmxpbmRlZE1lc3NhZ2VdLmxlbmd0aCk7CisgICAgdW5saW5rYWJsZVRva2VuLnZhbHVlQmFz
ZTY0VVJMID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoW3VubGlua2FibGVUb2tlbi53YWl0aW5n
VG9rZW4gYmxpbmRlZE1lc3NhZ2VdLmJ5dGVzLCBbdW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tl
biBibGluZGVkTWVzc2FnZV0ubGVuZ3RoKTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oc2VydmVyUHVibGljS2V5QmFzZTY0VVJMKTsKKyAgICBVTlVT
RURfUEFSQU0odW5saW5rYWJsZVRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dEZvckxv
Z01lc3NhZ2UpOwogICAgIHJldHVybiAiVW5saW5rYWJsZSB0b2tlbnMgYXJlIG5vdCBzdXBwb3J0
ZWQgYnkgdGhpcyBwbGF0Zm9ybS4iX3M7CiAjZW5kaWYgLy8gSEFWRShSU0FfQlNTQSkKIH0KIAog
c3RkOjpvcHRpb25hbDxTdHJpbmc+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVB
bmRVcGRhdGVTb3VyY2VTZWNyZXRUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclJlc3BvbnNlQmFz
ZTY0VVJMKQoreworICAgIFNvdXJjZVNlY3JldFRva2VuIHNlY3JldFRva2VuOworICAgIGlmIChh
dXRvIGVycm9yTWVzc2FnZSA9IGNhbGN1bGF0ZUFuZFVwZGF0ZVNlY3JldFRva2VuKHNlcnZlclJl
c3BvbnNlQmFzZTY0VVJMLCBtX3NvdXJjZVVubGlua2FibGVUb2tlbiwgc2VjcmV0VG9rZW4sICJz
b3VyY2UiX3MpKQorICAgICAgICByZXR1cm4gZXJyb3JNZXNzYWdlOworICAgIAorICAgIG1fc291
cmNlU2VjcmV0VG9rZW4gPSBXVEZNb3ZlKHNlY3JldFRva2VuKTsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworfQorCitFeHBlY3RlZDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRp
b25TZWNyZXRUb2tlbiwgU3RyaW5nPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRl
QW5kVXBkYXRlRGVzdGluYXRpb25TZWNyZXRUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclJlc3Bv
bnNlQmFzZTY0VVJMLCBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiYgdW5saW5rYWJsZVRva2Vu
KQoreworICAgIERlc3RpbmF0aW9uU2VjcmV0VG9rZW4gc2VjcmV0VG9rZW47CisgICAgYXV0byBl
cnJvck1lc3NhZ2UgPSBjYWxjdWxhdGVBbmRVcGRhdGVTZWNyZXRUb2tlbihzZXJ2ZXJSZXNwb25z
ZUJhc2U2NFVSTCwgdW5saW5rYWJsZVRva2VuLCBzZWNyZXRUb2tlbiwgInNvdXJjZSJfcyk7Cisg
ICAgaWYgKGVycm9yTWVzc2FnZSkKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCplcnJv
ck1lc3NhZ2UpOworICAgIHJldHVybiBzZWNyZXRUb2tlbjsKK30KKworc3RkOjpvcHRpb25hbDxT
dHJpbmc+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRhdGVTZWNyZXRU
b2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclJlc3BvbnNlQmFzZTY0VVJMLCBVbmxpbmthYmxlVG9r
ZW4mIHVubGlua2FibGVUb2tlbiwgU2VjcmV0VG9rZW4mIHNlY3JldFRva2VuLCBjb25zdCBTdHJp
bmcmIGNvbnRleHRGb3JMb2dNZXNzYWdlKQogewogI2lmIEhBVkUoUlNBX0JTU0EpCi0gICAgaWYg
KCFtX3NvdXJjZVVubGlua2FibGVUb2tlbi53YWl0aW5nVG9rZW4pCi0gICAgICAgIHJldHVybiAi
RGlkIG5vdCBmaW5kIGEgc291cmNlIHVubGlua2FibGUgdG9rZW4gd2FpdGluZyB0b2tlbi4iX3M7
CisgICAgaWYgKCF1bmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuKQorICAgICAgICByZXR1cm4g
bWFrZVN0cmluZygiRGlkIG5vdCBmaW5kIGEgIiwgY29udGV4dEZvckxvZ01lc3NhZ2UsICIgdW5s
aW5rYWJsZSB0b2tlbiB3YWl0aW5nIHRva2VuLiIpOwogCiAgICAgewogICAgICAgICBhdXRvIHNl
cnZlclJlc3BvbnNlRGF0YSA9IGJhc2U2NFVSTERlY29kZShzZXJ2ZXJSZXNwb25zZUJhc2U2NFVS
TCk7CiAgICAgICAgIGlmICghc2VydmVyUmVzcG9uc2VEYXRhKQotICAgICAgICAgICAgcmV0dXJu
ICJDb3VsZCBub3QgZGVjb2RlIHNvdXJjZSByZXNwb25zZSBkYXRhLiJfczsKKyAgICAgICAgICAg
IHJldHVybiBtYWtlU3RyaW5nKCJDb3VsZCBub3QgZGVjb2RlICIsIGNvbnRleHRGb3JMb2dNZXNz
YWdlLCAiIHJlc3BvbnNlIGRhdGEuIik7CiAgICAgICAgIGF1dG8gc2VydmVyUmVzcG9uc2UgPSBh
ZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnNlcnZlclJlc3BvbnNlRGF0YS0+
ZGF0YSgpIGxlbmd0aDpzZXJ2ZXJSZXNwb25zZURhdGEtPnNpemUoKV0pOwogCiAgICAgICAgIE5T
RXJyb3IqIG5zRXJyb3IgPSAwOwotICAgICAgICBtX3NvdXJjZVVubGlua2FibGVUb2tlbi5yZWFk
eVRva2VuID0gW21fc291cmNlVW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tlbiBhY3RpdmF0ZVRv
a2VuV2l0aFNlcnZlclJlc3BvbnNlOnNlcnZlclJlc3BvbnNlLmdldCgpIGVycm9yOiZuc0Vycm9y
XTsKKyAgICAgICAgdW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4gPSBbdW5saW5rYWJsZVRva2Vu
LndhaXRpbmdUb2tlbiBhY3RpdmF0ZVRva2VuV2l0aFNlcnZlclJlc3BvbnNlOnNlcnZlclJlc3Bv
bnNlLmdldCgpIGVycm9yOiZuc0Vycm9yXTsKICAgICAgICAgaWYgKG5zRXJyb3IpCiAgICAgICAg
ICAgICByZXR1cm4gbnNFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbjsKLSAgICAgICAgaWYgKCFt
X3NvdXJjZVVubGlua2FibGVUb2tlbi5yZWFkeVRva2VuKQotICAgICAgICAgICAgcmV0dXJuICJE
aWQgbm90IGdldCBhIHNvdXJjZSB1bmxpbmthYmxlIHRva2VuIHJlYWR5IHRva2VuLiJfczsKKyAg
ICAgICAgaWYgKCF1bmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbikKKyAgICAgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCJEaWQgbm90IGdldCBhICIsIGNvbnRleHRGb3JMb2dNZXNzYWdlLCAiIHVu
bGlua2FibGUgdG9rZW4gcmVhZHkgdG9rZW4uIik7CiAgICAgfQogCi0gICAgU291cmNlU2VjcmV0
VG9rZW4gdG9rZW47Ci0gICAgdG9rZW4udG9rZW5CYXNlNjRVUkwgPSBiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiB0b2tlbkNvbnRlbnRd
LmJ5dGVzLCBbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiB0b2tlbkNvbnRlbnRd
Lmxlbmd0aCk7Ci0gICAgdG9rZW4ua2V5SURCYXNlNjRVUkwgPSBiYXNlNjRVUkxFbmNvZGVUb1N0
cmluZyhbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiBrZXlJZF0uYnl0ZXMsIFtt
X3NvdXJjZVVubGlua2FibGVUb2tlbi5yZWFkeVRva2VuIGtleUlkXS5sZW5ndGgpOwotICAgIHRv
a2VuLnNpZ25hdHVyZUJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFttX3NvdXJj
ZVVubGlua2FibGVUb2tlbi5yZWFkeVRva2VuIHNpZ25hdHVyZV0uYnl0ZXMsIFttX3NvdXJjZVVu
bGlua2FibGVUb2tlbi5yZWFkeVRva2VuIHNpZ25hdHVyZV0ubGVuZ3RoKTsKKyAgICBzZWNyZXRU
b2tlbi50b2tlbkJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFt1bmxpbmthYmxl
VG9rZW4ucmVhZHlUb2tlbiB0b2tlbkNvbnRlbnRdLmJ5dGVzLCBbdW5saW5rYWJsZVRva2VuLnJl
YWR5VG9rZW4gdG9rZW5Db250ZW50XS5sZW5ndGgpOworICAgIHNlY3JldFRva2VuLmtleUlEQmFz
ZTY0VVJMID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoW3VubGlua2FibGVUb2tlbi5yZWFkeVRv
a2VuIGtleUlkXS5ieXRlcywgW3VubGlua2FibGVUb2tlbi5yZWFkeVRva2VuIGtleUlkXS5sZW5n
dGgpOworICAgIHNlY3JldFRva2VuLnNpZ25hdHVyZUJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29k
ZVRvU3RyaW5nKFt1bmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiBzaWduYXR1cmVdLmJ5dGVzLCBb
dW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4gc2lnbmF0dXJlXS5sZW5ndGgpOwogCi0gICAgbV9z
b3VyY2VTZWNyZXRUb2tlbiA9IFdURk1vdmUodG9rZW4pOwogICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzZXJ2ZXJSZXNwb25zZUJhc2U2NFVSTCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHVubGlua2FibGVUb2tlbik7CisgICAgVU5VU0VEX1BBUkFNKHNlY3Jl
dFRva2VuKTsKKyAgICBVTlVTRURfUEFSQU0oY29udGV4dEZvckxvZ01lc3NhZ2UpOwogICAgIHJl
dHVybiAiVW5saW5rYWJsZSB0b2tlbnMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBwbGF0Zm9y
bS4iX3M7CiAjZW5kaWYgLy8gSEFWRShSU0FfQlNTQSkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKaW5kZXggMTQ4NmQ1MjI5NmY2
NzUxZjMxMGM3OTgxNjZiZjdlZGJlZDJhYjQzMi4uYTkwNDU0ZWUzNzY1YThkODQ4ZWJhNjMxMmEy
NmZhNDhjZGYwY2IwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
YXRhYmFzZVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
YXRhYmFzZVV0aWxpdGllcy5jcHAKQEAgLTE2MCwxNSArMTYwLDI2IEBAIFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50IERhdGFiYXNlVXRpbGl0aWVzOjpidWlsZFByaXZhdGVDbGlja01l
YXN1cmVtZW50CiAKICAgICBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBhdHRyaWJ1
dGlvbihXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQoc291cmNlSUQp
LCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZShXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3Ry
aW5nKHNvdXJjZVNpdGVEb21haW4pKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOjp1
bmNoZWNrZWRDcmVhdGVGcm9tUmVnaXN0cmFibGVEb21haW5TdHJpbmcoZGVzdGluYXRpb25TaXRl
RG9tYWluKSksIGJ1bmRsZUlELCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHModGltZU9mQWRDbGlj
ayksIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkVwaGVtZXJh
bDo6Tm8pOwogCisgICAgLy8gVGhlc2UgaW5kaWNlcyBhcmUgemVyby1iYXNlZCBmb3Igc29tZSBy
ZWFzb24uIFRoZXJlIHNob3VsZCBiZSBhIGNvbW1lbnQgaGVyZSBleHBsYWluaW5nIHdoeS4KICAg
ICBpZiAoYXR0cmlidXRpb25UeXBlID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRp
b25UeXBlOjpBdHRyaWJ1dGVkKSB7CiAgICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0
YSA9IHN0YXRlbWVudC5jb2x1bW5JbnQoMyk7CiAgICAgICAgIGF1dG8gcHJpb3JpdHkgPSBzdGF0
ZW1lbnQuY29sdW1uSW50KDQpOwogICAgICAgICBhdXRvIHNvdXJjZUVhcmxpZXN0VGltZVRvU2Vu
ZFZhbHVlID0gc3RhdGVtZW50LmNvbHVtbkRvdWJsZSg2KTsKICAgICAgICAgYXV0byBkZXN0aW5h
dGlvbkVhcmxpZXN0VGltZVRvU2VuZFZhbHVlID0gc3RhdGVtZW50LmNvbHVtbkRvdWJsZSgxMCk7
CisgICAgICAgIGF1dG8gZGVzdGluYXRpb25Ub2tlbiA9IHN0YXRlbWVudC5jb2x1bW5UZXh0KDEy
KTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvblNpZ25hdHVyZSA9IHN0YXRlbWVudC5jb2x1bW5U
ZXh0KDEzKTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvbktleUlEID0gc3RhdGVtZW50LmNvbHVt
blRleHQoMTQpOwogCiAgICAgICAgIGlmIChhdHRyaWJ1dGlvblRyaWdnZXJEYXRhICE9IC0xKQog
ICAgICAgICAgICAgYXR0cmlidXRpb24uc2V0QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgeyBzdGF0aWNfY2FzdDx1aW50
OF90PihhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlByaW9yaXR5KHByaW9yaXR5KSB9KTsKIAorICAgICAgICBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRUb2tlbiBkZXN0aW5hdGlvblNlY3Jl
dFRva2VuOworICAgICAgICBkZXN0aW5hdGlvblNlY3JldFRva2VuLnRva2VuQmFzZTY0VVJMID0g
ZGVzdGluYXRpb25Ub2tlbjsKKyAgICAgICAgZGVzdGluYXRpb25TZWNyZXRUb2tlbi5zaWduYXR1
cmVCYXNlNjRVUkwgPSBkZXN0aW5hdGlvblNpZ25hdHVyZTsKKyAgICAgICAgZGVzdGluYXRpb25T
ZWNyZXRUb2tlbi5rZXlJREJhc2U2NFVSTCA9IGRlc3RpbmF0aW9uS2V5SUQ7CisKKyAgICAgICAg
YXR0cmlidXRpb24uc2V0RGVzdGluYXRpb25TZWNyZXRUb2tlbihXVEZNb3ZlKGRlc3RpbmF0aW9u
U2VjcmV0VG9rZW4pKTsKKwogICAgICAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBzb3VyY2VF
YXJsaWVzdFRpbWVUb1NlbmQ7CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRlc3Rp
bmF0aW9uRWFybGllc3RUaW1lVG9TZW5kOwogCkBAIC0xODIsNyArMTkzLDEyIEBAIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50IERhdGFiYXNlVXRpbGl0aWVzOjpidWlsZFByaXZhdGVD
bGlja01lYXN1cmVtZW50CiAgICAgICAgIGF0dHJpYnV0aW9uLnNldFRpbWVzVG9TZW5kKHsgc291
cmNlRWFybGllc3RUaW1lVG9TZW5kLCBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCB9KTsK
ICAgICB9CiAKLSAgICBhdHRyaWJ1dGlvbi5zZXRTb3VyY2VTZWNyZXRUb2tlbih7IHRva2VuLCBz
aWduYXR1cmUsIGtleUlEIH0pOworICAgIFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpTb3VyY2VTZWNyZXRUb2tlbiBzb3VyY2VTZWNyZXRUb2tlbjsKKyAgICBzb3VyY2VTZWNyZXRU
b2tlbi50b2tlbkJhc2U2NFVSTCA9IHRva2VuOworICAgIHNvdXJjZVNlY3JldFRva2VuLnNpZ25h
dHVyZUJhc2U2NFVSTCA9IHNpZ25hdHVyZTsKKyAgICBzb3VyY2VTZWNyZXRUb2tlbi5rZXlJREJh
c2U2NFVSTCA9IGtleUlEOworCisgICAgYXR0cmlidXRpb24uc2V0U291cmNlU2VjcmV0VG9rZW4o
V1RGTW92ZShzb3VyY2VTZWNyZXRUb2tlbikpOwogCiAgICAgcmV0dXJuIGF0dHJpYnV0aW9uOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IGJmOGYzNTdkN2E4M2VlNTAyODkxZGIxZTVhYmQ4NDE4NGM2MzM2
YzguLmU1MGNmNGFiYmU1NjRlNGNhM2ZiNzI2Y2FhOWQ1NjljNTRiMDlkNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5j
cHAKQEAgLTEwMDYsOSArMTAwNiwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZWRpcmVjdGVkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogCiAgICAg
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRp
b25UcmlnZ2VyRGF0YT4gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJE
YXRhOwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkgewotICAgICAgICBpZiAo
YXV0byByZXN1bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRy
aWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkKKyAgICAgICAgaWYgKGF1dG8g
cmVzdWx0ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnBhcnNlQXR0cmlidXRp
b25SZXF1ZXN0KHJlZGlyZWN0UmVxdWVzdC51cmwoKSkpIHsKICAgICAgICAgICAgIHByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IHJlc3VsdC52YWx1ZSgpOwot
ICAgICAgICBlbHNlIGlmICghcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAg
aWYgKHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKKyAgICAg
ICAgICAgICAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEt
PmRlc3RpbmF0aW9uU2l0ZSA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpIH07CisgICAgICAgIH0gZWxzZSBpZiAoIXJlc3VsdC5lcnJv
cigpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCByZXN1bHQu
ZXJyb3IoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAppbmRleCBiY2E3ZjUxOTM0
YzhmNjMyMjMwYjI3MTQxMTliYjJlNjczY2ZhNWY5Li4wY2FhODcxMjlkNDg4OWNmZTU1OWQ0ODZl
N2NmYjRkYmJlOTcxMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKQEAgLTQwLDcgKzQwLDcg
QEAgY29uc3RleHByIGF1dG8gc2V0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRB
c0V4cGlyZWRRdWVyeSA9ICJVUERBVEUgVW4KIGNvbnN0ZXhwciBhdXRvIGluc2VydFVuYXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnkgPSAiSU5TRVJUIE9SIFJFUExBQ0UgSU5U
TyBVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291cmNlU2l0ZURvbWFpbklE
LCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgIgogICAgICJzb3VyY2VJRCwgdGltZU9mQWRDbGlj
aywgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQpIFZB
TFVFUyAoPywgPywgPywgPywgPywgPywgPywgPykiX3M7CiBjb25zdGV4cHIgYXV0byBpbnNlcnRB
dHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFD
RSBJTlRPIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCAoc291cmNlU2l0ZURvbWFp
bklELCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCwgIgotICAgICJzb3VyY2VJRCwgYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSwgcHJpb3JpdHksIHRpbWVPZkFkQ2xpY2ssIGVhcmxpZXN0VGltZVRvU2Vu
ZFRvU291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1lVG9TZW5kVG9E
ZXN0aW5hdGlvbiwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCkgVkFMVUVTICg/LCA/LCA/LCA/
LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfczsKKyAgICAic291cmNlSUQsIGF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEsIHByaW9yaXR5LCB0aW1lT2ZBZENsaWNrLCBlYXJsaWVzdFRpbWVUb1NlbmRU
b1NvdXJjZSwgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb24sIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQsIGRlc3RpbmF0aW9uVG9rZW4sIGRl
c3RpbmF0aW9uU2lnbmF0dXJlLCBkZXN0aW5hdGlvbktleUlEKSBWQUxVRVMgKD8sID8sID8sID8s
ID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zOwogY29uc3RleHByIGF1dG8gZmlu
ZFVuYXR0cmlidXRlZFF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRp
b25TaXRlRG9tYWluSUQgPSA/IEFORCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEID0gPyJfczsK
IGNvbnN0ZXhwciBhdXRvIGZpbmRBdHRyaWJ1dGVkUXVlcnkgPSAiU0VMRUNUICogRlJPTSBBdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0g
PyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/IEFORCBzb3VyY2VBcHBsaWNhdGlvbkJ1
bmRsZUlEID0gPyJfczsKIGNvbnN0ZXhwciBhdXRvIHJlbW92ZVVuYXR0cmlidXRlZFF1ZXJ5ID0g
IkRFTEVURSBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IFdIRVJFIHNv
dXJjZVNpdGVEb21haW5JRCA9ID8gQU5EIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEID0gPyBBTkQg
c291cmNlQXBwbGljYXRpb25CdW5kbGVJRCA9ID8iX3M7CkBAIC02NCw2ICs2NCw3IEBAIGNvbnN0
ZXhwciBhdXRvIGNyZWF0ZUF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9ICJDUkVB
VEUgVEFCTEUgQXR0cmlidXRlCiAgICAgInNvdXJjZVNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBO
VUxMLCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCBJTlRFR0VSIE5PVCBOVUxMLCBzb3VyY2VJRCBJ
TlRFR0VSIE5PVCBOVUxMLCAiCiAgICAgImF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgSU5URUdFUiBO
T1QgTlVMTCwgcHJpb3JpdHkgSU5URUdFUiBOT1QgTlVMTCwgdGltZU9mQWRDbGljayBSRUFMIE5P
VCBOVUxMLCAiCiAgICAgImVhcmxpZXN0VGltZVRvU2VuZFRvU291cmNlIFJFQUwsIHRva2VuIFRF
WFQsIHNpZ25hdHVyZSBURVhULCBrZXlJRCBURVhULCBlYXJsaWVzdFRpbWVUb1NlbmRUb0Rlc3Rp
bmF0aW9uIFJFQUwsIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgVEVYVCwgIgorICAgICJkZXN0
aW5hdGlvblRva2VuIFRFWFQsIGRlc3RpbmF0aW9uU2lnbmF0dXJlIFRFWFQsIGRlc3RpbmF0aW9u
S2V5SUQgVEVYVCwgIgogICAgICJGT1JFSUdOIEtFWShzb3VyY2VTaXRlRG9tYWluSUQpIFJFRkVS
RU5DRVMgUENNT2JzZXJ2ZWREb21haW5zKGRvbWFpbklEKSBPTiBERUxFVEUgQ0FTQ0FERSwgRk9S
RUlHTiBLRVkoZGVzdGluYXRpb25TaXRlRG9tYWluSUQpIFJFRkVSRU5DRVMgIgogICAgICJQQ01P
YnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFKSJfczsKIGNvbnN0ZXhw
ciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgPSAiQ1JFQVRFIFVOSVFVRSBJTkRFWCBJRiBOT1QgRVhJU1RTIFVuYXR0cmlidXRlZFByaXZh
dGVDbGlja01lYXN1cmVtZW50X3NvdXJjZVNpdGVEb21haW5JRF9kZXN0aW5hdGlvblNpdGVEb21h
aW5JRF9zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEIG9uIFVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50ICggc291cmNlU2l0ZURvbWFpbklELCBkZXN0aW5hdGlvblNpdGVEb21haW5J
RCwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCApIl9zOwpAQCAtODYsNyArODcsNyBAQCBEYXRh
YmFzZTo6RGF0YWJhc2UoY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5KQogICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG9wZW5EYXRhYmFzZUFuZENyZWF0ZVNjaGVtYUlm
TmVjZXNzYXJ5KCk7CiAgICAgZW5hYmxlRm9yZWlnbktleXMoKTsKLSAgICBhZGRCdW5kbGVJRENv
bHVtbklmTmVjZXNzYXJ5KCk7CisgICAgYWRkRGVzdGluYXRpb25Ub2tlbkNvbHVtbnNJZk5lY2Vz
c2FyeSgpOwogICAgIG1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vzc2FyeSgpOwogICAgIGFs
bERhdGFiYXNlcygpLmFkZCh0aGlzKTsKIH0KQEAgLTE4MCw2ICsxODEsNyBAQCB2b2lkIERhdGFi
YXNlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCYmCiAgICAgICAgIGF1dG8gYXR0cmlidXRpb25UcmlnZ2VyRGF0YSA9IGF0dHJp
YnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKSA/IGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEoKS52YWx1ZSgpLmRhdGEgOiAtMTsKICAgICAgICAgYXV0byBwcmlvcml0eSA9
IGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKSA/IGF0dHJpYnV0aW9uLmF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEoKS52YWx1ZSgpLnByaW9yaXR5IDogLTE7CiAgICAgICAgIGF1dG8g
c291cmNlRWFybGllc3RUaW1lVG9TZW5kID0gYXR0cmlidXRpb24udGltZXNUb1NlbmQoKS5zb3Vy
Y2VFYXJsaWVzdFRpbWVUb1NlbmQgPyBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLnNvdXJjZUVh
cmxpZXN0VGltZVRvU2VuZC52YWx1ZSgpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSA6IC0x
OworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gPSBhdHRyaWJ1dGlvbi5hdHRy
aWJ1dGlvblRyaWdnZXJEYXRhKCkgPyBhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRh
KCkudmFsdWUoKS5kZXN0aW5hdGlvblNlY3JldFRva2VuIDogc3RkOjpudWxsb3B0OwogICAgICAg
ICBhdXRvIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID0gYXR0cmlidXRpb24udGltZXNU
b1NlbmQoKS5kZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCA/IGF0dHJpYnV0aW9uLnRpbWVz
VG9TZW5kKCkuZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQudmFsdWUoKS5zZWNvbmRzU2lu
Y2VFcG9jaCgpLnZhbHVlKCkgOiAtMTsKIAogICAgICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUg
aW5zZXJ0aW5nIGFuIGF0dHJpYnV0ZWQgcHJpdmF0ZSBjbGljayBtZWFzdXJlbWVudCB2YWx1ZSBp
bnRvIHRoZSBkYXRhYmFzZSB3aXRob3V0IHZhbGlkIHJlcG9ydCB0aW1lcy4KQEAgLTE5OSw2ICsy
MDEsOSBAQCB2b2lkIERhdGFiYXNlOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAgICAgICAgICAgICB8fCBzdGF0ZW1lbnQt
PmJpbmRUZXh0KDEwLCBzb3VyY2VTZWNyZXRUb2tlbiA/IHNvdXJjZVNlY3JldFRva2VuLT5rZXlJ
REJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9PSwogICAgICAgICAgICAgfHwg
c3RhdGVtZW50LT5iaW5kRG91YmxlKDExLCBkZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZCkg
IT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEyLCBhdHRy
aWJ1dGlvbi5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEKCkpICE9IFNRTElURV9PSworICAgICAg
ICAgICAgfHwgc3RhdGVtZW50LT5iaW5kVGV4dCgxMywgZGVzdGluYXRpb25TZWNyZXRUb2tlbiA/
IGRlc3RpbmF0aW9uU2VjcmV0VG9rZW4tPnRva2VuQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkg
IT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDE0LCBkZXN0
aW5hdGlvblNlY3JldFRva2VuID8gZGVzdGluYXRpb25TZWNyZXRUb2tlbi0+c2lnbmF0dXJlQmFz
ZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCisgICAgICAgICAgICB8fCBzdGF0
ZW1lbnQtPmJpbmRUZXh0KDE1LCBkZXN0aW5hdGlvblNlY3JldFRva2VuID8gZGVzdGluYXRpb25T
ZWNyZXRUb2tlbi0+a2V5SURCYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBTUUxJVEVfT0sK
ICAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIiVwIC0g
RGF0YWJhc2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50IGluc2VydEF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQUklWQVRFX0xP
R19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC02OTksMjAgKzcwNCwxOCBAQCB2b2lkIERhdGFiYXNl
OjpkZXN0cm95U3RhdGVtZW50cygpCiAgICAgbV9pbnNlcnRPYnNlcnZlZERvbWFpblN0YXRlbWVu
dCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgRGF0YWJhc2U6OmFkZEJ1bmRsZUlEQ29sdW1uSWZOZWNl
c3NhcnkoKQordm9pZCBEYXRhYmFzZTo6YWRkRGVzdGluYXRpb25Ub2tlbkNvbHVtbnNJZk5lY2Vz
c2FyeSgpCiB7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGF0IHRoZSBlbmQgb2YgMjAyMS4g
Tm8gcHVibGljIHJlbGVhc2Ugd2FzIG1hZGUgd2l0aCB0aGUgc2NoZW1hIG1pc3Npbmcgc291cmNl
QXBwbGljYXRpb25CdW5kbGVJRCwgc28gdGhpcyBpcyBvbmx5IG5lZWRlZCB0byBtaWdyYXRlIGlu
dGVybmFsIHVzZXJzIHdobyB1cGRhdGVkIGluIFNlcHRlbWJlciAyMDIxLgotICAgIFN0cmluZyBh
dHRyaWJ1dGVkVGFibGVOYW1lKCJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiKTsK
LSAgICBTdHJpbmcgdW5hdHRyaWJ1dGVkVGFibGVOYW1lKCJVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCJfcyk7Ci0gICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSURD
b2x1bW5OYW1lKCJzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEIl9zKTsKLSAgICBhdXRvIGNoZWNr
Q29sdW1ucyA9IFsmXSAoY29uc3QgU3RyaW5nJiB0YWJsZU5hbWUpIHsKLSAgICAgICAgYXV0byBj
b2x1bW5zID0gY29sdW1uc0ZvclRhYmxlKHRhYmxlTmFtZSk7Ci0gICAgICAgIGlmICghY29sdW1u
cy5zaXplKCkgfHwgY29sdW1ucy5sYXN0KCkgIT0gc291cmNlQXBwbGljYXRpb25CdW5kbGVJRENv
bHVtbk5hbWUpCi0gICAgICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZSh0YWJsZU5hbWUs
IHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSURDb2x1bW5OYW1lKTsKLSAgICB9OwotICAgIGNoZWNr
Q29sdW1ucyhhdHRyaWJ1dGVkVGFibGVOYW1lKTsKLSAgICBjaGVja0NvbHVtbnModW5hdHRyaWJ1
dGVkVGFibGVOYW1lKTsKKyAgICBTdHJpbmcgYXR0cmlidXRlZFRhYmxlTmFtZSgiQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKKyAgICBTdHJpbmcgZGVzdGluYXRpb25LZXlJ
RENvbHVtbk5hbWUoImRlc3RpbmF0aW9uS2V5SUQiX3MpOworICAgIGF1dG8gY29sdW1ucyA9IGNv
bHVtbnNGb3JUYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lKTsKKyAgICBpZiAoIWNvbHVtbnMuc2l6
ZSgpIHx8IGNvbHVtbnMubGFzdCgpICE9IGRlc3RpbmF0aW9uS2V5SURDb2x1bW5OYW1lKSB7Cisg
ICAgICAgIGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUsICJkZXN0
aW5hdGlvblRva2VuIl9zKTsKKyAgICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmli
dXRlZFRhYmxlTmFtZSwgImRlc3RpbmF0aW9uU2lnbmF0dXJlIl9zKTsKKyAgICAgICAgYWRkTWlz
c2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSwgZGVzdGluYXRpb25LZXlJRENv
bHVtbk5hbWUpOworICAgIH0KIH0KKwogYm9vbCBEYXRhYmFzZTo6bmVlZHNVcGRhdGVkU2NoZW1h
KCkKIHsKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYXQgdGhlIGVuZCBvZiAyMDIxLiBObyBw
dWJsaWMgcmVsZWFzZSB3YXMgbWFkZSB3aXRoIHRoZSBzY2hlbWEgbWlzc2luZyBzb3VyY2VBcHBs
aWNhdGlvbkJ1bmRsZUlELCBzbyB0aGlzIGlzIG9ubHkgbmVlZGVkIHRvIG1pZ3JhdGUgaW50ZXJu
YWwgdXNlcnMgd2hvIHVwZGF0ZWQgaW4gU2VwdGVtYmVyIDIwMjEuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5o
CmluZGV4IGE1MDM3Mzc4MGYyMTdiMzYzNjQ0ZTBiZTRlMmIyNjIzOTU5NDI4MjEuLmJiNDliYjYy
YWE3MTgwYzZkN2Q2MzJjYmMxMTM5OWIzNDc0YTUwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnREYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oCkBA
IC03Niw3ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxEb21haW5JRD4gZG9t
YWluSUQoY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKTsKICAgICBTdHJpbmcgZ2V0
RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKERvbWFpbklEKSBjb25zdCBmaW5hbDsKIAotICAgIHZv
aWQgYWRkQnVuZGxlSURDb2x1bW5JZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgYWRkRGVzdGluYXRp
b25Ub2tlbkNvbHVtbnNJZk5lY2Vzc2FyeSgpOwogICAgIGJvb2wgbmVlZHNVcGRhdGVkU2NoZW1h
KCkgZmluYWw7CiAgICAgYm9vbCBjcmVhdGVVbmlxdWVJbmRpY2VzKCkgZmluYWw7CiAgICAgY29u
c3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVB
bmRJbmRleFBhaXI+JiBleHBlY3RlZFRhYmxlQW5kSW5kZXhRdWVyaWVzKCkgZmluYWw7CkBAIC0x
MDAsNiArMTAwLDggQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIFN0YXRlbWVudCBtX2RvbWFpbklE
RnJvbVN0cmluZ1N0YXRlbWVudDsKICAgICBtdXRhYmxlIFN0YXRlbWVudCBtX2RvbWFpblN0cmlu
Z0Zyb21Eb21haW5JRFN0YXRlbWVudDsKICAgICBtdXRhYmxlIFN0YXRlbWVudCBtX2luc2VydE9i
c2VydmVkRG9tYWluU3RhdGVtZW50OworCisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25TZWNyZXRUb2tlbj4gbV9kZXN0aW5hdGlv
blNlY3JldFRva2VuOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpQQ00KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyLmNwcAppbmRleCBkZmRlN2M4MzQxNGJmOWMyZTFkODkxNGYxZjZhZjk2NDMxM2EzNjNl
Li5kMGUzY2JiZjUxMjI5ODY3OTRjNWE3Mjg0NzI3ZDE0NjUwMWRiOTk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBpZiAobV9mcmF1ZFByZXZlbnRpb25W
YWx1ZXNGb3JUZXN0aW5nKQotICAgICAgICAgICAgICAgIG1lYXN1cmVtZW50LnNldFNvdXJjZVVu
bGlua2FibGVUb2tlblZhbHVlKG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+dW5s
aW5rYWJsZVRva2VuKTsKKyAgICAgICAgICAgICAgICBtZWFzdXJlbWVudC5zZXRTb3VyY2VVbmxp
bmthYmxlVG9rZW5WYWx1ZShtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnVubGlu
a2FibGVUb2tlbkZvclNvdXJjZSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBlcnJvck1lc3NhZ2UgPSBtZWFzdXJlbWVu
dC5jYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VVbmxpbmthYmxlVG9rZW4ocHVibGljS2V5QmFzZTY0
VVJMKSkgewpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAgICAg
ICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICAgICAgZ2V0U2lnbmVkVW5saW5rYWJsZVRva2Vu
KFdURk1vdmUobWVhc3VyZW1lbnQpKTsKKyAgICAgICAgICAgIGdldFNpZ25lZFVubGlua2FibGVU
b2tlbkZvclNvdXJjZShXVEZNb3ZlKG1lYXN1cmVtZW50KSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTExOCwxMyArMTE4LDE4IEBAIHZvaWQgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRUb2tlblB1YmxpY0tleShQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCYmCiAgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIHRva2VuUHVibGljS2V5VVJMID0gYXR0cmlidXRpb24udG9rZW5QdWJsaWNLZXlV
UkwoKTsKKyAgICBVUkwgdG9rZW5QdWJsaWNLZXlVUkw7CiAgICAgaWYgKG1fdG9rZW5QdWJsaWNL
ZXlVUkxGb3JUZXN0aW5nKSB7CiAgICAgICAgIGlmIChhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50
ID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50OjpE
ZXN0aW5hdGlvbikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdG9rZW5QdWJsaWNLZXlV
UkwgPSAqbV90b2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc7CiAgICAgICAgIC8vIEZJWE1FKDIy
NTM2NCkKICAgICAgICAgcGNtRGF0YUNhcnJpZWQgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
UGNtRGF0YUNhcnJpZWQ6Ok5vblBlcnNvbmFsbHlJZGVudGlmaWFibGU7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgaWYgKGF1dG8gb3B0VVJMID0gYXR0cmlidXRpb24udG9rZW5QdWJsaWNLZXlVUkwo
KSkKKyAgICAgICAgICAgIHRva2VuUHVibGljS2V5VVJMID0gKm9wdFVSTDsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh0b2tlblB1YmxpY0tleVVS
TC5pc0VtcHR5KCkgfHwgIXRva2VuUHVibGljS2V5VVJMLmlzVmFsaWQoKSkKQEAgLTE1NiwxOCAr
MTYxLDcxIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRUb2tlblB1
YmxpY0tleShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAgICAgfSk7CiB9CiAKLXZvaWQgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4oUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBtZWFzdXJlbWVudCkKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyOjpnZXRUb2tlblB1YmxpY0tleShBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
JiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uUmVwb3J0RW5kcG9pbnQgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCwgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkIHBjbURhdGFDYXJyaWVkLCBGdW5jdGlvbjx2
b2lkKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBjb25z
dCBTdHJpbmcmIHB1YmxpY0tleUJhc2U2NFVSTCk+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKCFm
ZWF0dXJlRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBVUkwgdG9rZW5QdWJsaWNL
ZXlVUkw7CisgICAgaWYgKG1fdG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKSB7CisgICAgICAg
IGlmIChhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50ID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50OjpTb3VyY2UpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHRva2VuUHVibGljS2V5VVJMID0gKm1fdG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0
aW5nOworICAgICAgICAvLyBGSVhNRSgyMjUzNjQpCisgICAgICAgIHBjbURhdGFDYXJyaWVkID0g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25hbGx5SWRl
bnRpZmlhYmxlOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChhdXRvIG9wdFVSTCA9IGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGEudG9rZW5QdWJsaWNLZXlVUkwoKSkKKyAgICAgICAgICAgIHRva2Vu
UHVibGljS2V5VVJMID0gKm9wdFVSTDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGlmICh0b2tlblB1YmxpY0tleVVSTC5pc0VtcHR5KCkgfHwgIXRva2Vu
UHVibGljS2V5VVJMLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRlYnVn
TW9kZUVuYWJsZWQoKSkKKyAgICAgICAgcGNtRGF0YUNhcnJpZWQgPSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6OlBlcnNvbmFsbHlJZGVudGlmaWFibGU7CisKKyAgICBS
RUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQWJvdXQgdG8gZmlyZSBh
IHRva2VuIHB1YmxpYyBrZXkgcmVxdWVzdC4iKTsKKyAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29u
c29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVu
dF0gQWJvdXQgdG8gZmlyZSBhIHRva2VuIHB1YmxpYyBrZXkgcmVxdWVzdC4iX3MpOworCisgICAg
UENNOjpOZXR3b3JrTG9hZGVyOjpzdGFydChXVEZNb3ZlKHRva2VuUHVibGljS2V5VVJMKSwgbnVs
bHB0ciwgcGNtRGF0YUNhcnJpZWQsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlz
LCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGF1dG8mIGVycm9yRGVzY3JpcHRpb24s
IGF1dG8mIGpzb25PYmplY3QpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghZXJyb3JEZXNjcmlwdGlvbi5pc051bGwo
KSkgeworICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBS
ZWNlaXZlZCBlcnJvcjogJyJfcywgZXJyb3JEZXNjcmlwdGlvbiwgIicgZm9yIHRva2VuIHB1Ymxp
YyBrZXkgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICghanNvbk9iamVjdCkgeworICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2Fz
dENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBKU09OIHJlc3BvbnNlIGlzIGVtcHR5IGZvciB0b2tlbiBwdWJs
aWMga2V5IHJlcXVlc3QuIl9zKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpM
b2csIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBHb3QgSlNPTiByZXNw
b25zZSBmb3IgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcykpOworCisgICAgICAgIGNhbGxi
YWNrKFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIGpzb25PYmplY3QtPmdldFN0cmlu
ZygidG9rZW5fcHVibGljX2tleSJfcykpOworICAgIH0pOworfQorCit2b2lkIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuRm9yU291cmNlKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50JiYgbWVhc3VyZW1lbnQpCiB7CiAgICAgaWYgKCFmZWF0dXJl
RW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlzIGlzIGd1YXJhbnRlZWQg
dG8gYmUgY2xvc2UgaW4gdGltZSB0byB0aGUgbmF2aWdhdGlvbmFsIGNsaWNrIHdoaWNoIG1ha2Vz
IGl0IGxpa2VseSB0byBiZSBwZXJzb25hbGx5IGlkZW50aWZpYWJsZS4KICAgICBhdXRvIHBjbURh
dGFDYXJyaWVkID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpQZXJz
b25hbGx5SWRlbnRpZmlhYmxlOwotICAgIGF1dG8gdG9rZW5TaWduYXR1cmVVUkwgPSBtZWFzdXJl
bWVudC50b2tlblNpZ25hdHVyZVVSTCgpOworICAgIFVSTCB0b2tlblNpZ25hdHVyZVVSTDsKICAg
ICBpZiAobV90b2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcpIHsKICAgICAgICAgdG9rZW5TaWdu
YXR1cmVVUkwgPSAqbV90b2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc7CiAgICAgICAgIC8vIEZJ
WE1FKDIyNTM2NCkKICAgICAgICAgcGNtRGF0YUNhcnJpZWQgPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6UGNtRGF0YUNhcnJpZWQ6Ok5vblBlcnNvbmFsbHlJZGVudGlmaWFibGU7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKGF1dG8gb3B0VVJMID0gbWVhc3VyZW1lbnQudG9rZW5TaWduYXR1
cmVVUkwoKSkKKyAgICAgICAgICAgIHRva2VuU2lnbmF0dXJlVVJMID0gKm9wdFVSTDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICh0b2tlblNpZ25h
dHVyZVVSTC5pc0VtcHR5KCkgfHwgIXRva2VuU2lnbmF0dXJlVVJMLmlzVmFsaWQoKSkKQEAgLTE5
OCwxOCArMjU2LDIyIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRT
aWduZWRVbmxpbmthYmxlVG9rZW4oUHJpdmF0ZUNsaWNrTWVhc3VyCiAgICAgICAgICAgICBtX2Ns
aWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0
cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEpTT04gcmVzcG9uc2UgZG9lc24ndCBo
YXZlIHRoZSBrZXkgJ3VubGlua2FibGVfdG9rZW4nIGZvciB0b2tlbiBzaWduaW5nIHJlcXVlc3Qu
Il9zKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgLy8gRklYIE5P
VyEKLSAgICAgICAgaWYgKG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZykKLSAgICAg
ICAgICAgIG1lYXN1cmVtZW50LnNldFNvdXJjZVNlY3JldFRva2VuKHsgbV9mcmF1ZFByZXZlbnRp
b25WYWx1ZXNGb3JUZXN0aW5nLT5zZWNyZXRUb2tlbiwgbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNG
b3JUZXN0aW5nLT5zaWduYXR1cmUsIG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+
a2V5SUQgfSk7CisKKyAgICAgICAgaWYgKG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGlu
ZykgeworICAgICAgICAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRv
a2VuIHNvdXJjZVNlY3JldFRva2VuOworICAgICAgICAgICAgc291cmNlU2VjcmV0VG9rZW4udG9r
ZW5CYXNlNjRVUkwgPSBtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnNlY3JldFRv
a2VuRm9yU291cmNlOworICAgICAgICAgICAgc291cmNlU2VjcmV0VG9rZW4uc2lnbmF0dXJlQmFz
ZTY0VVJMID0gbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLT5zaWduYXR1cmVGb3JT
b3VyY2U7CisgICAgICAgICAgICBzb3VyY2VTZWNyZXRUb2tlbi5rZXlJREJhc2U2NFVSTCA9IG1f
ZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+a2V5SURGb3JTb3VyY2U7CisgICAgICAg
ICAgICBtZWFzdXJlbWVudC5zZXRTb3VyY2VTZWNyZXRUb2tlbihXVEZNb3ZlKHNvdXJjZVNlY3Jl
dFRva2VuKSk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGVsc2UgeworICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgaWYgKGF1dG8gZXJyb3JNZXNzYWdlID0gbWVhc3VyZW1lbnQu
Y2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4oc2lnbmF0dXJlQmFzZTY0VVJMKSkg
ewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsICJHb3QgdGhlIGZvbGxvd2luZyBlcnJvciBpbiBjYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VT
ZWNyZXRUb2tlbigpOiAnJXtwdWJsaWN9cyIsIGVycm9yTWVzc2FnZS0+dXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAi
X3MsICplcnJvck1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9Ci0gICAgICAgIH0KICNlbmRpZgorICAgICAgICB9CiAKICAgICAgICAgbV9jbGllbnQtPmJy
b2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6TG9nLCAiW1ByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRdIFN0b3JpbmcgYSBzZWNyZXQgdG9rZW4uIl9zKTsKIApAQCAtMjE4LDYgKzI4
MCw4NSBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5s
aW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cgogCiB9CiAKK3ZvaWQgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0aW5hdGlv
bihTb3VyY2VTaXRlJiYgc291cmNlU2l0ZSwgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUmJiBk
ZXN0aW5hdGlvblNpdGUsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXImIGFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSBjbG9zZSBpbiB0aW1lIHRv
IHRoZSBuYXZpZ2F0aW9uYWwgY2xpY2sgd2hpY2ggbWFrZXMgaXQgbGlrZWx5IHRvIGJlIHBlcnNv
bmFsbHkgaWRlbnRpZmlhYmxlLgorICAgIGF1dG8gcGNtRGF0YUNhcnJpZWQgPSBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6OlBlcnNvbmFsbHlJZGVudGlmaWFibGU7Cisg
ICAgVVJMIHRva2VuU2lnbmF0dXJlVVJMOworICAgIGlmIChtX3Rva2VuU2lnbmF0dXJlVVJMRm9y
VGVzdGluZykgeworICAgICAgICB0b2tlblNpZ25hdHVyZVVSTCA9ICptX3Rva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZzsKKyAgICAgICAgLy8gRklYTUUoMjI1MzY0KQorICAgICAgICBwY21EYXRh
Q2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6Tm9uUGVy
c29uYWxseUlkZW50aWZpYWJsZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byBvcHRV
UkwgPSBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnRva2VuU2lnbmF0dXJlVVJMKCkpCisgICAgICAg
ICAgICB0b2tlblNpZ25hdHVyZVVSTCA9ICpvcHRVUkw7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodG9rZW5TaWduYXR1cmVVUkwuaXNFbXB0eSgp
IHx8ICF0b2tlblNpZ25hdHVyZVVSTC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChkZWJ1Z01vZGVFbmFibGVkKCkpCisgICAgICAgIHBjbURhdGFDYXJyaWVkID0gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpQZXJzb25hbGx5SWRlbnRpZmlhYmxl
OworCisgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkFib3V0
IHRvIGZpcmUgYSB1bmxpbmthYmxlIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iKTsKKyAgICBtX2Ns
aWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudF0gQWJvdXQgdG8gZmlyZSBhIHVubGlua2FibGUgdG9rZW4gc2ln
bmluZyByZXF1ZXN0LiJfcyk7CisKKyAgICBQQ006Ok5ldHdvcmtMb2FkZXI6OnN0YXJ0KFdURk1v
dmUodG9rZW5TaWduYXR1cmVVUkwpLCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnRva2VuU2lnbmF0
dXJlSlNPTigpLCBwY21EYXRhQ2FycmllZCwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHRoaXMsIHNvdXJjZVNpdGUgPSBXVEZNb3ZlKHNvdXJjZVNpdGUpLCBkZXN0aW5hdGlvblNpdGUg
PSBXVEZNb3ZlKGRlc3RpbmF0aW9uU2l0ZSksIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgPSBXVEZN
b3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIg
PSBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCldIChhdXRvJiBlcnJv
ckRlc2NyaXB0aW9uLCBhdXRvJiBqc29uT2JqZWN0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIWVycm9yRGVzY3Jp
cHRpb24uaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xl
TWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudF0gUmVjZWl2ZWQgZXJyb3I6ICciX3MsIGVycm9yRGVzY3JpcHRpb24sICInIGZv
ciBzZWNyZXQgdG9rZW4gc2lnbmluZyByZXF1ZXN0LiJfcykpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFqc29uT2JqZWN0KSB7CisgICAgICAgICAgICBt
X2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFr
ZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEpTT04gcmVzcG9uc2UgaXMgZW1w
dHkgZm9yIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGF1dG8gc2lnbmF0dXJlQmFzZTY0VVJMID0ganNvbk9iamVj
dC0+Z2V0U3RyaW5nKCJ1bmxpbmthYmxlX3Rva2VuIl9zKTsKKyAgICAgICAgaWYgKHNpZ25hdHVy
ZUJhc2U2NFVSTC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RD
b25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudF0gSlNPTiByZXNwb25zZSBkb2Vzbid0IGhhdmUgdGhlIGtleSAndW5s
aW5rYWJsZV90b2tlbicgZm9yIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX2ZyYXVkUHJldmVudGlvblZh
bHVlc0ZvclRlc3RpbmcpIHsKKyAgICAgICAgICAgIGF1dG8gdGVzdFRva2VuID0gUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuIHsgbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JU
ZXN0aW5nLT5zZWNyZXRUb2tlbkZvckRlc3RpbmF0aW9uLCBtX2ZyYXVkUHJldmVudGlvblZhbHVl
c0ZvclRlc3RpbmctPnNpZ25hdHVyZUZvckRlc3RpbmF0aW9uLCBtX2ZyYXVkUHJldmVudGlvblZh
bHVlc0ZvclRlc3RpbmctPmtleUlERm9yRGVzdGluYXRpb24gfTsKKyAgICAgICAgICAgIGF1dG8g
dGVzdERlc3RpbmF0aW9uVG9rZW4gPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRp
b25TZWNyZXRUb2tlbiB7IHRlc3RUb2tlbiB9OworICAgICAgICAgICAgYXR0cmlidXRpb25Ucmln
Z2VyRGF0YS5zZXREZXN0aW5hdGlvblNlY3JldFRva2VuKFdURk1vdmUodGVzdERlc3RpbmF0aW9u
VG9rZW4pKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kZXN0aW5hdGlvblVubGlua2FibGVUb2tl
bikgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsICJEZXN0aW5hdGlvbiB1bmxpbmthYmxlIHRva2VuIGlzIG1pc3NpbmcuIik7CisgICAg
ICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZl
bDo6RXJyb3IsICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gRGVzdGluYXRpb24gdW5saW5r
YWJsZSB0b2tlbiBpcyBtaXNzaW5nLiJfcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRhdGVEZXN0aW5hdGlvblNlY3JldFRva2VuKHNpZ25hdHVy
ZUJhc2U2NFVSTCwgKmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGVzdGluYXRpb25VbmxpbmthYmxl
VG9rZW4pOworICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IGVycm9yTWVzc2FnZSA9IHJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJVbmtub3duIiA6IHJl
c3VsdC5lcnJvcigpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQsICJHb3QgdGhlIGZvbGxvd2luZyBlcnJvciBpbiBjYWxjdWxhdGVBbmRV
cGRhdGVTb3VyY2VTZWNyZXRUb2tlbigpOiAnJXtwdWJsaWN9cyIsIGVycm9yTWVzc2FnZS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRdICJfcywgZXJyb3JNZXNzYWdlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UoTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gU3Rv
cmluZyBhIHNlY3JldCB0b2tlbi4iX3MpOworCisgICAgICAgICAgICBhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhLmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gPSByZXN1bHQudmFsdWUoKTsKKyAgICAgICAg
ICAgIGF0dHJpYnV0ZShXVEZNb3ZlKHNvdXJjZVNpdGUpLCBXVEZNb3ZlKGRlc3RpbmF0aW9uU2l0
ZSksIFdURk1vdmUoYXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIG1fcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBcHBCdW5kbGVJREZvclRlc3RpbmcgPyAqbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFw
cEJ1bmRsZUlERm9yVGVzdGluZyA6IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik7CisgICAg
ICAgIH0KKyNlbHNlCisgICAgICAgIH0KKyNlbmRpZgorICAgIH0pOworfQorCiB2b2lkIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBtZWFzdXJlbWVudCwgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRBdHRyaWJ1dGlvblR5cGUgdHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIHN0b3JlKCkuaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQoV1RGTW92ZShtZWFzdXJlbWVudCksIHR5cGUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKQEAgLTI1MSw3ICszOTIsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlcjo6aGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmCiAgICAgUmVn
aXN0cmFibGVEb21haW4gc291cmNlRG9tYWluOwogICAgIGlmIChyZWRpcmVjdERvbWFpbi5tYXRj
aGVzKGZpcnN0UGFydHlVUkwpKSB7CiAgICAgICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0
YS5zb3VyY2VSZWdpc3RyYWJsZURvbWFpbikgewotICAgICAgICAgICAgbV9jbGllbnQtPmJyb2Fk
Y2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIltQcml2YXRlIENsaWNr
IE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSBp
dCB3YXMgcmVxdWVzdGVkIGluIGFuIEhUVFAgcmVkaXJlY3QgdGhhdCBpcyBzYW1lLXNpdGUgYXMg
dGhlICAgZmlyc3QtcGFydHkgYW5kIG5vIGF0dHJpYnV0aW9uU291cmNlIHF1ZXJ5IHBhcmFtZXRl
ciB3YXMgcHJvdmlkZWQuIl9zKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25z
b2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJbUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgaXQgd2FzIHJl
cXVlc3RlZCBpbiBhbiBIVFRQIHJlZGlyZWN0IHRoYXQgaXMgc2FtZS1zaXRlIGFzIHRoZSBmaXJz
dC1wYXJ0eSBhbmQgbm8gYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1ldGVyIHdhcyBwcm92
aWRlZC4iX3MpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHNvdXJj
ZURvbWFpbiA9ICphdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnNvdXJjZVJlZ2lzdHJhYmxlRG9tYWlu
OwpAQCAtMjYzLDYgKzQwNCw0MSBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cjo6aGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmCiAKICAgICBtX2Ns
aWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpMb2csICJbUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCBhY2NlcHRlZC4iX3MpOwogCisg
ICAgLy8gU2lnbmluZyBvZiBhIGRlc3RpbmF0aW9uIHRva2VuIG11c3QgYmUgZG9uZSB1bmNvbmRp
dGlvbmFsbHkuIE90aGVyd2lzZSBpdCBiZWNvbWVzIGEgd2F5IHRvIGRpc2NvdmVyIHRoYXQgdGhl
cmUgaXMgYSBwZW5kaW5nIGF0dHJpYnV0aW9uLgorICAgIGlmIChhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhLmVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2UpIHsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhQ29weSA9IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CisgICAgICAgIC8vIFRo
aXMgaXMgZ3VhcmFudGVlZCB0byBiZSBjbG9zZSBpbiB0aW1lIHRvIHRoZSB0cmlnZ2VyaW5nIGV2
ZW50IHdoaWNoIG1ha2VzIGl0IGxpa2VseSB0byBiZSBwZXJzb25hbGx5IGlkZW50aWZpYWJsZS4K
KyAgICAgICAgZ2V0VG9rZW5QdWJsaWNLZXkoV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
Q29weSksIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50
OjpEZXN0aW5hdGlvbiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpQ
ZXJzb25hbGx5SWRlbnRpZmlhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdGhp
cywgc291cmNlU2l0ZSA9IFNvdXJjZVNpdGUgeyBXVEZNb3ZlKHNvdXJjZURvbWFpbikgfSwgZGVz
dGluYXRpb25TaXRlID0gQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyBmaXJzdFBhcnR5VVJM
IH0sIGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllciA9IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
Zmllci5pc29sYXRlZENvcHkoKV0gKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLCBjb25zdCBTdHJpbmcmIHB1YmxpY0tleUJhc2U2NFVSTCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgaWYgKHB1YmxpY0tleUJhc2U2NFVSTC5pc0VtcHR5KCkpIHsKKyAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiVGhlIHB1
YmxpYyBrZXkgVVJMIHdhcyBlbXB0eS4iKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJv
YWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgIltQcml2YXRlIENsaWNr
IE1lYXN1cmVtZW50XSBUaGUgcHVibGljIGtleSBVUkwgd2FzIGVtcHR5LiIpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1fZnJhdWRQ
cmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZykKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhLnNldERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuVmFsdWUobV9mcmF1ZFByZXZl
bnRpb25WYWx1ZXNGb3JUZXN0aW5nLT51bmxpbmthYmxlVG9rZW5Gb3JEZXN0aW5hdGlvbik7Cisj
aWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRhdGVE
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbihwdWJsaWNLZXlCYXNlNjRVUkwpOworICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRpb25Ucmln
Z2VyRGF0YS5kZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiA9IHJlc3VsdC52YWx1ZSgpOworICAg
ICAgICAgICAgICAgICAgICBnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0aW5hdGlvbihX
VEZNb3ZlKHNvdXJjZVNpdGUpLCBXVEZNb3ZlKGRlc3RpbmF0aW9uU2l0ZSksIFdURk1vdmUoYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSksIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJ
REZvclRlc3RpbmcgPyAqbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRsZUlERm9yVGVz
dGluZyA6IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRvIGVycm9y
TWVzc2FnZSA9IHJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSA/ICJVbmtub3duIiA6IHJlc3VsdC5l
cnJvcigpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsICJHb3QgdGhlIGZvbGxvd2luZyBlcnJvciBpbiBjYWxjdWxhdGVBbmRVcGRhdGVE
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbigpOiAnJXtwdWJsaWN9cyIsIGVycm9yTWVzc2FnZS51
dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29s
ZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRdICJfcywgZXJyb3JNZXNzYWdlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgIH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgYXR0cmlidXRlKFNvdXJjZVNpdGUgeyBXVEZNb3ZlKHNvdXJjZURvbWFpbikg
fSwgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyBmaXJzdFBhcnR5VVJMIH0sIFdURk1vdmUo
YXR0cmlidXRpb25UcmlnZ2VyRGF0YSksIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5k
bGVJREZvclRlc3RpbmcgPyAqbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRsZUlERm9y
VGVzdGluZyA6IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcik7CiB9CiAKQEAgLTMyNCwxNiAr
NTAwLDYzIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjphdHRyaWJ1dGUo
U291cmNlU2l0ZSYmIHNvdXJjZVNpdGUsIEF0dHJpYnV0CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25SZXBvcnRFbmRwb2ludCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KQogewotICAgIGlm
ICghZmVhdHVyZUVuYWJsZWQoKSkKKyAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkgfHwgIWF0dHJp
YnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKCFhdHRyaWJ1dGlvbi5zb3VyY2VTZWNyZXRUb2tlbigpKSB7CisgICAgaWYgKCFhdHRyaWJ1
dGlvbi5zb3VyY2VTZWNyZXRUb2tlbigpICYmICFhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhKCktPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4pIHsKICAgICAgICAgZmlyZUNvbnZlcnNp
b25SZXF1ZXN0SW1wbChhdHRyaWJ1dGlvbiwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIGF0dHJpYnV0aW9uQ29weSA9IGF0dHJp
YnV0aW9uOwogICAgIC8vIFRoaXMgaGFwcGVucyBvdXQgb2Ygd2VicGFnZSBjb250ZXh0IGFuZCB3
aXRoIGEgbG9uZyBkZWxheSBhbmQgaXMgdGh1cyB1bmxpa2VseSB0byBiZSBwZXJzb25hbGx5IGlk
ZW50aWZpYWJsZS4KKyAgICBpZiAoYXR0cmlidXRpb24uc291cmNlU2VjcmV0VG9rZW4oKSkgewor
ICAgICAgICBnZXRUb2tlblB1YmxpY0tleShXVEZNb3ZlKGF0dHJpYnV0aW9uQ29weSksIGF0dHJp
YnV0aW9uUmVwb3J0RW5kcG9pbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fy
cmllZDo6Tm9uUGVyc29uYWxseUlkZW50aWZpYWJsZSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0
aGlzIH0sIHRoaXMsIGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnRdIChQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCYmIGF0dHJpYnV0aW9uLCBjb25zdCBTdHJpbmcmIHB1YmxpY0tleUJhc2U2NFVSTCkg
eworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGF1dG8gcHVibGljS2V5RGF0YSA9IGJhc2U2NFVSTERlY29kZShwdWJsaWNL
ZXlCYXNlNjRVUkwpOworICAgICAgICAgICAgaWYgKCFwdWJsaWNLZXlEYXRhKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0Rp
Z2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAg
ICAgICAgICAgY3J5cHRvLT5hZGRCeXRlcyhwdWJsaWNLZXlEYXRhLT5kYXRhKCksIHB1YmxpY0tl
eURhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBhdXRvIHB1YmxpY0tleURhdGFIYXNoID0gY3J5
cHRvLT5jb21wdXRlSGFzaCgpOworCisgICAgICAgICAgICBhdXRvIGtleUlEID0gYmFzZTY0VVJM
RW5jb2RlVG9TdHJpbmcocHVibGljS2V5RGF0YUhhc2guZGF0YSgpLCBwdWJsaWNLZXlEYXRhSGFz
aC5zaXplKCkpOworICAgICAgICAgICAgaWYgKGtleUlEICE9IGF0dHJpYnV0aW9uLnNvdXJjZVNl
Y3JldFRva2VuKCktPmtleUlEQmFzZTY0VVJMKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoYXR0cmlidXRpb24uYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSgpLT5kZXN0aW5hdGlvblNlY3JldFRva2VuKSB7CisgICAgICAg
ICAgICAgICAgZ2V0VG9rZW5QdWJsaWNLZXkoV1RGTW92ZShhdHRyaWJ1dGlvbiksIGF0dHJpYnV0
aW9uUmVwb3J0RW5kcG9pbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fycmll
ZDo6Tm9uUGVyc29uYWxseUlkZW50aWZpYWJsZSwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlz
IH0sIHRoaXMsIGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnRdIChQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCYmIGF0dHJpYnV0aW9uLCBjb25zdCBTdHJpbmcmIHB1YmxpY0tleUJhc2U2NFVSTCkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8gcHVibGljS2V5RGF0YSA9IGJh
c2U2NFVSTERlY29kZShwdWJsaWNLZXlCYXNlNjRVUkwpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIXB1YmxpY0tleURhdGEpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICAgICAgYXV0byBjcnlwdG8gPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRl
KFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8yNTYpOworICAgICAgICAgICAgICAg
ICAgICBjcnlwdG8tPmFkZEJ5dGVzKHB1YmxpY0tleURhdGEtPmRhdGEoKSwgcHVibGljS2V5RGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBwdWJsaWNLZXlEYXRhSGFzaCA9
IGNyeXB0by0+Y29tcHV0ZUhhc2goKTsKKworICAgICAgICAgICAgICAgICAgICBhdXRvIGtleUlE
ID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcocHVibGljS2V5RGF0YUhhc2guZGF0YSgpLCBwdWJs
aWNLZXlEYXRhSGFzaC5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoa2V5SUQgIT0g
YXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLT5kZXN0aW5hdGlvblNlY3JldFRv
a2VuLT5rZXlJREJhc2U2NFVSTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgICAgICAgICBmaXJlQ29udmVyc2lvblJlcXVlc3RJbXBsKGF0dHJpYnV0aW9u
LCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpcmVDb252
ZXJzaW9uUmVxdWVzdEltcGwoYXR0cmlidXRpb24sIGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQp
OworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGdldFRva2VuUHVi
bGljS2V5KFdURk1vdmUoYXR0cmlidXRpb25Db3B5KSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2lu
dCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25hbGx5
SWRlbnRpZmlhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdGhpcywgYXR0cmli
dXRpb25SZXBvcnRFbmRwb2ludF0gKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmlidXRp
b24sIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSB7CiAgICAgICAgIGlmICghd2Vh
a1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNDcsNyArNTcwLDcgQEAgdm9pZCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdChjb25zdCBQ
cml2YXRlQ2xpY2tNZWEKICAgICAgICAgYXV0byBwdWJsaWNLZXlEYXRhSGFzaCA9IGNyeXB0by0+
Y29tcHV0ZUhhc2goKTsKIAogICAgICAgICBhdXRvIGtleUlEID0gYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcocHVibGljS2V5RGF0YUhhc2guZGF0YSgpLCBwdWJsaWNLZXlEYXRhSGFzaC5zaXplKCkp
OwotICAgICAgICBpZiAoa2V5SUQgIT0gYXR0cmlidXRpb24uc291cmNlU2VjcmV0VG9rZW4oKS0+
a2V5SURCYXNlNjRVUkwpCisgICAgICAgIGlmICghYXR0cmlidXRpb24uYXR0cmlidXRpb25Ucmln
Z2VyRGF0YSgpLT5kZXN0aW5hdGlvblNlY3JldFRva2VuIHx8IGtleUlEICE9IGF0dHJpYnV0aW9u
LmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKS0+ZGVzdGluYXRpb25TZWNyZXRUb2tlbi0+a2V5SURC
YXNlNjRVUkwpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZmlyZUNvbnZlcnNpb25S
ZXF1ZXN0SW1wbChhdHRyaWJ1dGlvbiwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CkBAIC01
MjcsNyArNzUwLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnNldFBD
TUZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW4KIHsKICAgICBpZiAodW5saW5r
YWJsZVRva2VuLmlzRW1wdHkoKSB8fCBzZWNyZXRUb2tlbi5pc0VtcHR5KCkgfHwgc2lnbmF0dXJl
LmlzRW1wdHkoKSB8fCBrZXlJRC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2Zy
YXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmcgPSBUZXN0aW5nRnJhdWRQcmV2ZW50aW9uVmFs
dWVzIHsgV1RGTW92ZSh1bmxpbmthYmxlVG9rZW4pLCBXVEZNb3ZlKHNlY3JldFRva2VuKSwgV1RG
TW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKGtleUlEKSB9OworICAgIG1fZnJhdWRQcmV2ZW50aW9u
VmFsdWVzRm9yVGVzdGluZyA9IFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1ZXMgeyBXVEZNb3Zl
KHVubGlua2FibGVUb2tlbiksIFdURk1vdmUoc2VjcmV0VG9rZW4pLCBXVEZNb3ZlKHNpZ25hdHVy
ZSksIFdURk1vdmUoa2V5SUQpLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0cmluZygpLCBlbXB0eVN0
cmluZygpLCBlbXB0eVN0cmluZygpIH07CiB9CiAKIGJvb2wgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyOjpmZWF0dXJlRW5hYmxlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaAppbmRleCBj
NjczYWY4NDg4MzJmZDFiN2MwOWIyOTBlYTk3ZTExM2MwMmEyNTYzLi44Njk3NmEzZDFmNjFjY2E2
YzFhYWI4YjAzMzdkYWJhNzA0MWI2ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKQEAgLTczLDcgKzcz
LDkgQEAgcHJpdmF0ZToKICAgICBjb25zdCBQQ006OlN0b3JlJiBzdG9yZSgpIGNvbnN0OwogICAg
IHZvaWQgc3RhcnRUaW1lcihTZWNvbmRzKTsKICAgICB2b2lkIGdldFRva2VuUHVibGljS2V5KFBy
aXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblJlcG9ydEVuZHBvaW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJp
ZWQsIEZ1bmN0aW9uPHZvaWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwg
Y29uc3QgU3RyaW5nJiBwdWJsaWNLZXlCYXNlNjRVUkwpPiYmKTsKLSAgICB2b2lkIGdldFNpZ25l
ZFVubGlua2FibGVUb2tlbihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKKyAgICB2b2lkIGdl
dFRva2VuUHVibGljS2V5KEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQsIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpQY21EYXRhQ2FycmllZCwgRnVuY3Rpb248dm9pZChBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
JiYsIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKT4mJik7CisgICAgdm9pZCBnZXRT
aWduZWRVbmxpbmthYmxlVG9rZW5Gb3JTb3VyY2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7
CisgICAgdm9pZCBnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0aW5hdGlvbihTb3VyY2VT
aXRlJiYsIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiYsIEF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEmJiwgY29uc3QgQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyJik7CiAgICAgdm9pZCBpbnNl
cnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFByaXZhdGVDbGlja01lYXN1
cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBv
aW50KTsKICAgICB2b2lkIGF0dHJpYnV0ZShTb3VyY2VTaXRlJiYsIEF0dHJpYnV0aW9uRGVzdGlu
YXRpb25TaXRlJiYsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyJik7CkBAIC0xMDEsMTAgKzEwMywxNCBAQCBwcml2YXRlOgogICAgIHN0
ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25SZXBvcnRUZXN0Q29uZmlnPiBtX2F0dHJpYnV0aW9uUmVw
b3J0VGVzdENvbmZpZzsKIAogICAgIHN0cnVjdCBUZXN0aW5nRnJhdWRQcmV2ZW50aW9uVmFsdWVz
IHsKLSAgICAgICAgU3RyaW5nIHVubGlua2FibGVUb2tlbjsKLSAgICAgICAgU3RyaW5nIHNlY3Jl
dFRva2VuOwotICAgICAgICBTdHJpbmcgc2lnbmF0dXJlOwotICAgICAgICBTdHJpbmcga2V5SUQ7
CisgICAgICAgIFN0cmluZyB1bmxpbmthYmxlVG9rZW5Gb3JTb3VyY2U7CisgICAgICAgIFN0cmlu
ZyBzZWNyZXRUb2tlbkZvclNvdXJjZTsKKyAgICAgICAgU3RyaW5nIHNpZ25hdHVyZUZvclNvdXJj
ZTsKKyAgICAgICAgU3RyaW5nIGtleUlERm9yU291cmNlOworICAgICAgICBTdHJpbmcgdW5saW5r
YWJsZVRva2VuRm9yRGVzdGluYXRpb247CisgICAgICAgIFN0cmluZyBzZWNyZXRUb2tlbkZvckRl
c3RpbmF0aW9uOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlRm9yRGVzdGluYXRpb247CisgICAg
ICAgIFN0cmluZyBrZXlJREZvckRlc3RpbmF0aW9uOwogICAgIH07CiAKICAgICBzdGQ6Om9wdGlv
bmFsPFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1ZXM+IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBiZTQ4NDcxN2Q0YWI0MzdiZWU2ODY3ZjMzODA4NzRhN2I3Y2FmZTc0Li4yZGM2NjM2
OGFkMmQxYTEyMjZhYTA0ZjAxMDFkYmNmNGI4ZTE2MjJlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjEtMTEtMzAg
IEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBVbmxp
bmthYmxlIHRva2VucyBmb3IgdHJpZ2dlcmluZyBldmVudCB0byBwcmV2ZW50IGZyYXVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzMKKyAgICAg
ICAgPHJkYXI6Ly83OTQyNjM0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBOZXcgdGVzdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5EZXN0aW5hdGlv
bkNsaWNrRnJhdWRQcmV2ZW50aW9uLgorICAgICAgICBUaGUgb3RoZXIgY2hhbmdlcyBhcmUgYSBy
ZXBvcnQgdmVyc2lvbiBidW1wIDItPjMgYW5kIGEgbmFtZSBjaGFuZ2UKKyAgICAgICAgRnJhdWRQ
cmV2ZW50aW9u4oCTPlNvdXJjZUNsaWNrRnJhdWRQcmV2ZW50aW9uLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvY29hLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
cnVuQmFzaWNQQ01UZXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAgICAgTmV3IHRlc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuRGVzdGluYXRpb25DbGlja0Zy
YXVkUHJldmVudGlvbi4KKwogMjAyMS0xMS0zMCAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgRXh0ZW5zaW9uVGFiQWN0aXZhdGlvbiBkaWFn
bm9zdGljIGV2ZW50CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRleCA3MTRhZmNhYjRjNWVk
N2Y2ODcyMDhjZTJlNzIzNGE5MWFjN2U4OWMzLi45YWYyYWFmNjA2YzIzZmM2N2IxZGQ1MDlmNWFk
ZGM1MTg2YTViY2RmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDcg
QEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFsaWRNaW5WYWx1ZXMpCiAgICAgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24geyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6U291cmNlSUQobWluNkJpdFZhbHVlKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZVNpdGUgeyB3ZWJLaXRVUkwgfSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9u
RGVzdGluYXRpb25TaXRlIHsgZXhhbXBsZVVSTCB9LCAidGVzdC5idW5kbGUuaWRlbnRpZmllciIs
IFdhbGxUaW1lOjpub3coKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJp
YnV0aW9uRXBoZW1lcmFsOjpObyB9OwogICAgIGF0dHJpYnV0aW9uLmF0dHJpYnV0ZUFuZEdldEVh
cmxpZXN0VGltZVRvU2VuZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25Ucmln
Z2VyRGF0YShtaW42Qml0VmFsdWUsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQcmlvcml0eSht
aW42Qml0VmFsdWUpKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OklzUnVubmlu
Z0xheW91dFRlc3Q6Ok5vKTsKIAotICAgIEFTU0VSVF9FUShhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlv
blJlcG9ydEpTT04oKS0+dG9KU09OU3RyaW5nKCksICJ7XCJzb3VyY2VfZW5nYWdlbWVudF90eXBl
XCI6XCJjbGlja1wiLFwic291cmNlX3NpdGVcIjpcIndlYmtpdC5vcmdcIixcInNvdXJjZV9pZFwi
OjAsXCJhdHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUuY29tXCIsXCJ0cmlnZ2VyX2RhdGFc
IjowLFwidmVyc2lvblwiOjJ9Iik7CisgICAgQVNTRVJUX0VRKGF0dHJpYnV0aW9uLmF0dHJpYnV0
aW9uUmVwb3J0SlNPTigpLT50b0pTT05TdHJpbmcoKSwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5
cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwid2Via2l0Lm9yZ1wiLFwic291cmNlX2lk
XCI6MCxcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5jb21cIixcInRyaWdnZXJfZGF0
YVwiOjAsXCJ2ZXJzaW9uXCI6M30iKTsKIH0KIAogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgVmFsaWRNaWRWYWx1ZXMpCkBAIC02Niw3ICs2Niw3IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIFZhbGlkTWlkVmFsdWVzKQogICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50IGF0
dHJpYnV0aW9uIHsgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZUlEKCh1aW50MzJfdCkx
OTIpLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSB7IHdlYktpdFVSTCB9LCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyBleGFt
cGxlVVJMIH0sICJ0ZXN0LmJ1bmRsZS5pZGVudGlmaWVyIiwgV2FsbFRpbWU6Om5vdygpLCBXZWJD
b3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25FcGhlbWVyYWw6Ok5vIH07
CiAgICAgYXR0cmlidXRpb24uYXR0cmlidXRlQW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCh1aW50MzJfdCk5LCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UHJpb3JpdHkoKHVpbnQzMl90KTIyKSksIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpJc1J1bm5pbmdMYXlvdXRUZXN0OjpObyk7CiAKLSAg
ICBBU1NFUlRfRVEoYXR0cmlidXRpb24uYXR0cmlidXRpb25SZXBvcnRKU09OKCktPnRvSlNPTlN0
cmluZygpLCAie1wic291cmNlX2VuZ2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9z
aXRlXCI6XCJ3ZWJraXQub3JnXCIsXCJzb3VyY2VfaWRcIjoxOTIsXCJhdHRyaWJ1dGVkX29uX3Np
dGVcIjpcImV4YW1wbGUuY29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjo5LFwidmVyc2lvblwiOjJ9Iik7
CisgICAgQVNTRVJUX0VRKGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uUmVwb3J0SlNPTigpLT50b0pT
T05TdHJpbmcoKSwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5cGVcIjpcImNsaWNrXCIsXCJzb3Vy
Y2Vfc2l0ZVwiOlwid2Via2l0Lm9yZ1wiLFwic291cmNlX2lkXCI6MTkyLFwiYXR0cmlidXRlZF9v
bl9zaXRlXCI6XCJleGFtcGxlLmNvbVwiLFwidHJpZ2dlcl9kYXRhXCI6OSxcInZlcnNpb25cIjoz
fSIpOwogfQogCiBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBWYWxpZE1heFZhbHVlcykK
QEAgLTc0LDcgKzc0LDcgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFsaWRNYXhW
YWx1ZXMpCiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24geyBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZUlEOjpNYXhFbnRyb3B5KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUgeyB3
ZWJLaXRVUkwgfSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRp
b25TaXRlIHsgZXhhbXBsZVVSTCB9LCAidGVzdC5idW5kbGUuaWRlbnRpZmllciIsIFdhbGxUaW1l
Ojpub3coKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRXBo
ZW1lcmFsOjpObyB9OwogICAgIGF0dHJpYnV0aW9uLmF0dHJpYnV0ZUFuZEdldEVhcmxpZXN0VGlt
ZVRvU2VuZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YShQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4RW50cm9w
eSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlByaW9yaXR5KFByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpQcmlvcml0eTo6TWF4RW50cm9weSkpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6SXNSdW5uaW5nTGF5b3V0VGVzdDo6Tm8pOwogCi0gICAgQVNTRVJUX0VRKGF0dHJpYnV0
aW9uLmF0dHJpYnV0aW9uUmVwb3J0SlNPTigpLT50b0pTT05TdHJpbmcoKSwgIntcInNvdXJjZV9l
bmdhZ2VtZW50X3R5cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwid2Via2l0Lm9yZ1wi
LFwic291cmNlX2lkXCI6MjU1LFwiYXR0cmlidXRlZF9vbl9zaXRlXCI6XCJleGFtcGxlLmNvbVwi
LFwidHJpZ2dlcl9kYXRhXCI6MTUsXCJ2ZXJzaW9uXCI6Mn0iKTsKKyAgICBBU1NFUlRfRVEoYXR0
cmlidXRpb24uYXR0cmlidXRpb25SZXBvcnRKU09OKCktPnRvSlNPTlN0cmluZygpLCAie1wic291
cmNlX2VuZ2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCJ3ZWJraXQu
b3JnXCIsXCJzb3VyY2VfaWRcIjoyNTUsXCJhdHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUu
Y29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjoxNSxcInZlcnNpb25cIjozfSIpOwogfQogCiBURVNUKFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LCBFYXJsaWVzdFRpbWVUb1NlbmRBdHRyaWJ1dGlvbk1pbmlt
dW1EZWxheSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
b2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvY29hLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0KaW5k
ZXggMDdiNTYyZTFhZjYyOTQ2NjQwNjhiYzlmYjNjMDI2N2FkNWM1NDBjMC4uZGM0MzRmNGI3OTVi
NDZiYmY5ZjY4N2EyMmRjZmFhYzk2MjJhYjFkZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50Q29jb2EubW0KQEAgLTgzLDcgKzgzLDcgQEAgVEVTVChQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCwgVmFsaWRCbGluZGVkU2VjcmV0KQogICAgIEVYUEVDVF9TVFJFUShzb3VyY2VV
bmxpbmthYmxlVG9rZW4tPmdldFN0cmluZygic291cmNlX2VuZ2FnZW1lbnRfdHlwZSJfcykudXRm
OCgpLmRhdGEoKSwgImNsaWNrIik7CiAgICAgRVhQRUNUX1NUUkVRKHNvdXJjZVVubGlua2FibGVU
b2tlbi0+Z2V0U3RyaW5nKCJzb3VyY2Vfbm9uY2UiX3MpLnV0ZjgoKS5kYXRhKCksICJBQkNERUZh
YmNkZWYwMTIzNDU2Nzg5Iik7CiAgICAgRVhQRUNUX0ZBTFNFKHNvdXJjZVVubGlua2FibGVUb2tl
bi0+Z2V0U3RyaW5nKCJzb3VyY2VfdW5saW5rYWJsZV90b2tlbiJfcykuaXNFbXB0eSgpKTsKLSAg
ICBFWFBFQ1RfRVEoc291cmNlVW5saW5rYWJsZVRva2VuLT5nZXRJbnRlZ2VyKCJ2ZXJzaW9uIl9z
KSwgMik7CisgICAgRVhQRUNUX0VRKHNvdXJjZVVubGlua2FibGVUb2tlbi0+Z2V0SW50ZWdlcigi
dmVyc2lvbiJfcyksIDMpOwogCiAgICAgLy8gR2VuZXJhdGUgdGhlIHNpZ25hdHVyZS4KICAgICBh
dXRvIGJsaW5kZWRNZXNzYWdlID0gYmFzZTY0VVJMRGVjb2RlKHNvdXJjZVVubGlua2FibGVUb2tl
bi0+Z2V0U3RyaW5nKCJzb3VyY2VfdW5saW5rYWJsZV90b2tlbiJfcykpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9u
Lm1tCmluZGV4IGQwNjk1ZDRhMDcyZjQwNmE2YjNlOGE2ZDM3N2Q4MTIzMmFhZTVjZGMuLmQwMzE3
MDNiM2Q5MzNhODE2NDA3NDQ4YTc1OWZkNTllZjA5ZTA3MzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50QXR0cmlidXRpb24ubW0K
QEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIHJ1bkJhc2ljUENNVGVzdChXS1dlYlZpZXdDb25maWd1
cmF0aW9uICpjb25maWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKFdLV2ViVgogICAgICAgICAgICAg
ICAgIHJlcXVlc3QzLmFwcGVuZCgnXDAnKTsKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShz
dHJuc3RyKHJlcXVlc3QzLmRhdGEoKSwgIlBPU1QgLyBIVFRQLzEuMVxyXG4iLCByZXF1ZXN0My5z
aXplKCkpKTsKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBib2R5QmVnaW4gPSBzdHJuc3Ry
KHJlcXVlc3QzLmRhdGEoKSwgIlxyXG5cclxuIiwgcmVxdWVzdDMuc2l6ZSgpKSArIHN0cmxlbigi
XHJcblxyXG4iKTsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfU1RSRVEoYm9keUJlZ2luLCAie1wi
c291cmNlX2VuZ2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCIxMjcu
MC4wLjFcIixcInNvdXJjZV9pZFwiOjQyLFwiYXR0cmlidXRlZF9vbl9zaXRlXCI6XCJleGFtcGxl
LmNvbVwiLFwidHJpZ2dlcl9kYXRhXCI6MTIsXCJ2ZXJzaW9uXCI6Mn0iKTsKKyAgICAgICAgICAg
ICAgICBFWFBFQ1RfU1RSRVEoYm9keUJlZ2luLCAie1wic291cmNlX2VuZ2FnZW1lbnRfdHlwZVwi
OlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCIxMjcuMC4wLjFcIixcInNvdXJjZV9pZFwiOjQy
LFwiYXR0cmlidXRlZF9vbl9zaXRlXCI6XCJleGFtcGxlLmNvbVwiLFwidHJpZ2dlcl9kYXRhXCI6
MTIsXCJ2ZXJzaW9uXCI6M30iKTsKICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBy
dW5CYXNpY1BDTVRlc3QoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiwgRnVu
Y3Rpb248dm9pZChXS1dlYlYKIH0KIAogI2lmIEhBVkUoUlNBX0JTU0EpCi1URVNUKFByaXZhdGVD
bGlja01lYXN1cmVtZW50LCBGcmF1ZFByZXZlbnRpb24pCitURVNUKFByaXZhdGVDbGlja01lYXN1
cmVtZW50LCBTb3VyY2VDbGlja0ZyYXVkUHJldmVudGlvbikKIHsKICAgICBbV0tXZWJzaXRlRGF0
YVN0b3JlIF9zZXROZXR3b3JrUHJvY2Vzc1N1c3BlbnNpb25BbGxvd2VkRm9yVGVzdGluZzpOT107
CiAgICAgYm9vbCBkb25lID0gZmFsc2U7CkBAIC0yNzAsNyArMjcwLDcgQEAgVEVTVChQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgRnJhdWRQcmV2ZW50aW9uKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXNwb25zZSksIFtjb25uZWN0aW9u
LCAmZG9uZSwgdW5saW5rYWJsZVRva2VuLCB0b2tlbiwgJnNlY0tleV0gewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nv
bm5lY3Rpb24sICZkb25lLCB1bmxpbmthYmxlVG9rZW4sIHRva2VuLCAmc2VjS2V5XSAoVmVjdG9y
PGNoYXI+JiYgcmVxdWVzdDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3Q0LmRhdGEoKSwgIlBPU1QgLyBIVFRQLzEu
MVxyXG4iLCByZXF1ZXN0NC5zaXplKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3Q0LmRhdGEoKSwgIntcInNvdXJj
ZV9lbmdhZ2VtZW50X3R5cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwiMTI3LjAuMC4x
XCIsXCJzb3VyY2VfaWRcIjo0MixcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5jb21c
IixcInRyaWdnZXJfZGF0YVwiOjEyLFwidmVyc2lvblwiOjIsIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3Q0LmRhdGEo
KSwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwi
OlwiMTI3LjAuMC4xXCIsXCJzb3VyY2VfaWRcIjo0MixcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwi
ZXhhbXBsZS5jb21cIixcInRyaWdnZXJfZGF0YVwiOjEyLFwidmVyc2lvblwiOjMsIiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDQuc2l6ZSgpKSk7
CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3RybnN0cihyZXF1ZXN0NC5kYXRhKCksIHRva2VuLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3Q0LnNp
emUoKSkpOwpAQCAtMzQ1LDYgKzM0NSwxNjAgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgRnJhdWRQcmV2ZW50aW9uKQogICAgIH1dOwogICAgIFV0aWw6OnJ1bigmZG9uZSk7CiB9CisK
K1RFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIERlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZl
bnRpb24pCit7CisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0TmV0d29ya1Byb2Nlc3NTdXNw
ZW5zaW9uQWxsb3dlZEZvclRlc3Rpbmc6Tk9dOworICAgIGJvb2wgZG9uZSA9IGZhbHNlOworCisg
ICAgLy8gR2VuZXJhdGUgdGhlIHNlcnZlciBrZXkgcGFpci4KKyAgICBzaXplX3QgbW9kdWx1c05C
aXRzID0gNDA5NjsKKyAgICBpbnQgZXJyb3IgPSAwOworCisgICAgc3RydWN0IGNjcm5nX3N0YXRl
KiBybmcgPSBjY3JuZygmZXJyb3IpOworCisgICAgY29uc3QgdWludDhfdCBlW10gPSB7IDB4MSwg
MHgwMCwgMHgwMSB9OworICAgIGNjcnNhX2Z1bGxfY3R4X2RlY2woY2NuX3NpemVvZihtb2R1bHVz
TkJpdHMpLCByc2FQcml2YXRlS2V5KTsKKyAgICBlcnJvciA9IGNjcnNhX2dlbmVyYXRlX2tleSht
b2R1bHVzTkJpdHMsIHJzYVByaXZhdGVLZXksIHNpemVvZihlKSwgZSwgcm5nKTsKKworICAgIGNj
cnNhX3B1Yl9jdHhfdCByc2FQdWJsaWNLZXkgPSBjY3JzYV9jdHhfcHVibGljKHJzYVByaXZhdGVL
ZXkpOworICAgIHNpemVfdCBtb2R1bHVzTkJ5dGVzID0gY2NfY2VpbGluZyhjY3JzYV9wdWJrZXls
ZW5ndGgocnNhUHVibGljS2V5KSwgOCk7CisKKyAgICBzaXplX3QgZXhwb3J0U2l6ZSA9IGNjZGVy
X2VuY29kZV9yc2FfcHViX3NpemUocnNhUHVibGljS2V5KTsKKyAgICBhdXRvIHB1YmxpY0tleSA9
IGFkb3B0TlMoW1tOU011dGFibGVEYXRhIGFsbG9jXSBpbml0V2l0aExlbmd0aDpleHBvcnRTaXpl
XSk7CisgICAgY2NkZXJfZW5jb2RlX3JzYV9wdWIocnNhUHVibGljS2V5LCBzdGF0aWNfY2FzdDx1
aW50OF90Kj4oW3B1YmxpY0tleSBtdXRhYmxlQnl0ZXNdKSwgc3RhdGljX2Nhc3Q8dWludDhfdCo+
KFtwdWJsaWNLZXkgbXV0YWJsZUJ5dGVzXSkgKyBbcHVibGljS2V5IGxlbmd0aF0pOworCisgICAg
YXV0byBzZWNLZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVdpdGhEYXRhKChfX2JyaWRnZSBDRkRh
dGFSZWYpcHVibGljS2V5LmdldCgpLCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKUB7CisgICAg
ICAgIChfX2JyaWRnZSBpZClrU2VjQXR0cktleVR5cGU6IChfX2JyaWRnZSBpZClrU2VjQXR0cktl
eVR5cGVSU0EsCisgICAgICAgIChfX2JyaWRnZSBpZClrU2VjQXR0cktleUNsYXNzOiAoX19icmlk
Z2UgaWQpa1NlY0F0dHJLZXlDbGFzc1B1YmxpYworICAgIH0sIG5pbCkpOworICAgIFZlY3Rvcjx1
aW50OF90PiByYXdLZXlCeXRlcyhzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHVibGljS2V5
LmdldCgpLmJ5dGVzKSwgcHVibGljS2V5LmdldCgpLmxlbmd0aCk7CisgICAgYXV0byB3cmFwcGVk
S2V5Qnl0ZXMgPSB3cmFwUHVibGljS2V5V2l0aFJTQVBTU09JRChXVEZNb3ZlKHJhd0tleUJ5dGVz
KSk7CisKKyAgICBhdXRvIGtleURhdGEgPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyh3cmFwcGVk
S2V5Qnl0ZXMuZGF0YSgpLCB3cmFwcGVkS2V5Qnl0ZXMuc2l6ZSgpKTsKKworICAgIC8vIFRoZSBz
ZXJ2ZXIuCisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoWyZkb25lLCBjb25uZWN0aW9uQ291bnQgPSAw
LCAmcnNhUHJpdmF0ZUtleSwgJm1vZHVsdXNOQnl0ZXMsICZybmcsICZrZXlEYXRhLCAmc2VjS2V5
XSAoQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dpdGNoICgrK2Nv
bm5lY3Rpb25Db3VudCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBjb25uZWN0aW9u
LnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbl0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3Qx
KSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0MS5kYXRhKCks
ICJHRVQgL2NvbnZlcnNpb25SZXF1ZXN0QmVmb3JlUmVkaXJlY3QgSFRUUC8xLjFcclxuIiwgcmVx
dWVzdDEuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcmVkaXJlY3QgPSAi
SFRUUC8xLjEgMzAyIEZvdW5kXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkxvY2F0aW9uOiAv
LndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9u
LzEyP2F0dHJpYnV0aW9uRGVzdGluYXRpb25Ob25jZT1BQkNERUZhYmNkZWYwMTIzNDU2Nzg5XHJc
biIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAwXHJcblxyXG4iOworICAg
ICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChyZWRpcmVjdCwgW2Nvbm5lY3Rpb25dIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rp
b25dIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0MikgeworICAgICAgICAgICAgICAgICAgICAgICAg
RVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0Mi5kYXRhKCksICJHRVQgLy53ZWxsLWtub3duL3By
aXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi8xMj9hdHRyaWJ1dGlv
bkRlc3RpbmF0aW9uTm9uY2U9QUJDREVGYWJjZGVmMDEyMzQ1Njc4OSBIVFRQLzEuMVxyXG4iLCBy
ZXF1ZXN0Mi5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHJl
c3BvbnNlID0gIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtTGVuZ3RoOiAwXHJcblxyXG4iOworICAgICAgICAgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbi5zZW5kKHJlc3BvbnNlKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIDI6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChb
Y29ubmVjdGlvbiwgJnJzYVByaXZhdGVLZXksICZtb2R1bHVzTkJ5dGVzLCAmcm5nLCAma2V5RGF0
YSwgJmRvbmUsICZzZWNLZXldIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0MSkgeworICAgICAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdDEuZGF0YSgpLCAiR0VUIC8gSFRUUC8x
LjFcclxuIiwgcmVxdWVzdDEuc2l6ZSgpKSk7CisKKyAgICAgICAgICAgICAgICAvLyBFeGFtcGxl
IHJlc3BvbnNlOiB7ICJ0b2tlbl9wdWJsaWNfa2V5IjogIkFCQ0QiIH0uICJBQkNEIiBzaG91bGQg
YmUgQmFzZTY0VVJMIGVuY29kZWQuCisgICAgICAgICAgICAgICAgYXV0byByZXNwb25zZSA9IG1h
a2VTdHJpbmcoIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250
ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29u
dGVudC1MZW5ndGg6ICIsIDI0ICsga2V5RGF0YS5sZW5ndGgoKSwgIlxyXG5cclxuIgorICAgICAg
ICAgICAgICAgICAgICAie1widG9rZW5fcHVibGljX2tleVwiOiBcIiIsIGtleURhdGEsICJcIn0i
KTsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXNwb25zZSksIFtj
b25uZWN0aW9uLCAmcnNhUHJpdmF0ZUtleSwgJm1vZHVsdXNOQnl0ZXMsICZybmcsICZrZXlEYXRh
LCAmZG9uZSwgJnNlY0tleV0geworICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbiwgJnJzYVByaXZhdGVLZXksICZtb2R1bHVzTkJ5dGVz
LCAmcm5nLCAma2V5RGF0YSwgJmRvbmUsICZzZWNLZXldIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0
MikgeworICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0
Mi5kYXRhKCksICJQT1NUIC8gSFRUUC8xLjFcclxuIiwgcmVxdWVzdDIuc2l6ZSgpKSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVxdWVzdDJTdHJpbmcgPSBTdHJpbmcocmVxdWVz
dDIuZGF0YSgpLCByZXF1ZXN0Mi5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byBrZXkgPSBTdHJpbmcoImRlc3RpbmF0aW9uX3VubGlua2FibGVfdG9rZW4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gc3RhcnQgPSByZXF1ZXN0MlN0cmluZy5maW5kKGtleSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydCArPSBrZXkubGVuZ3RoKCkgKyAzOworICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBlbmQgPSByZXF1ZXN0MlN0cmluZy5maW5kKCciJywgc3Rh
cnQpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byB0b2tlbiA9IHJlcXVlc3QyU3RyaW5n
LnN1YnN0cmluZyhzdGFydCwgZW5kIC0gc3RhcnQpOworCisgICAgICAgICAgICAgICAgICAgICAg
ICBhdXRvIGJsaW5kZWRNZXNzYWdlID0gYmFzZTY0VVJMRGVjb2RlKHRva2VuKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGNjcnNhYnNzYV9jaXBoZXJzdWl0ZSAqY2lw
aGVyc3VpdGUgPSAmY2Nyc2Fic3NhX2NpcGhlcnN1aXRlX3JzYTQwOTZfc2hhMzg0OworICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBibGluZGVkU2lnbmF0dXJlID0gYWRvcHROUyhbW05TTXV0
YWJsZURhdGEgYWxsb2NdIGluaXRXaXRoTGVuZ3RoOm1vZHVsdXNOQnl0ZXNdKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNjcnNhYnNzYV9zaWduX2JsaW5kZWRfbWVzc2FnZShjaXBoZXJzdWl0
ZSwgcnNhUHJpdmF0ZUtleSwgYmxpbmRlZE1lc3NhZ2UtPmRhdGEoKSwgYmxpbmRlZE1lc3NhZ2Ut
PnNpemUoKSwgc3RhdGljX2Nhc3Q8dWludDhfdCAqPihbYmxpbmRlZFNpZ25hdHVyZSBtdXRhYmxl
Qnl0ZXNdKSwgW2JsaW5kZWRTaWduYXR1cmUgbGVuZ3RoXSwgcm5nKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gdW5saW5rYWJsZVRva2VuID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmco
W2JsaW5kZWRTaWduYXR1cmUgYnl0ZXNdLCBbYmxpbmRlZFNpZ25hdHVyZSBsZW5ndGhdKTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXhhbXBsZSByZXNwb25zZTogeyAidW5saW5rYWJs
ZV90b2tlbiI6ICJBQkNEIiB9LiAiQUJDRCIgc2hvdWxkIGJlIEJhc2U2NFVSTCBlbmNvZGVkLgor
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0byByZXNwb25zZSA9IG1ha2VTdHJpbmcoIkhUVFAv
MS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlw
ZTogYXBwbGljYXRpb24vanNvblxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNv
bnRlbnQtTGVuZ3RoOiAiLCAyNCArIHVubGlua2FibGVUb2tlbi5sZW5ndGgoKSwgIlxyXG5cclxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XCJ1bmxpbmthYmxlX3Rva2VuXCI6IFwi
IiwgdW5saW5rYWJsZVRva2VuLCAiXCJ9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25u
ZWN0aW9uLnNlbmQoV1RGTW92ZShyZXNwb25zZSksIFtjb25uZWN0aW9uLCAma2V5RGF0YSwgJmRv
bmUsIHVubGlua2FibGVUb2tlbiwgdG9rZW4sICZzZWNLZXldIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbiwgJmtl
eURhdGEsICZkb25lLCB1bmxpbmthYmxlVG9rZW4sIHRva2VuLCAmc2VjS2V5XSAoVmVjdG9yPGNo
YXI+JiYgcmVxdWVzdDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNU
X1RSVUUoc3RybnN0cihyZXF1ZXN0My5kYXRhKCksICJHRVQgLyBIVFRQLzEuMVxyXG4iLCByZXF1
ZXN0My5zaXplKCkpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGFt
cGxlIHJlc3BvbnNlOiB7ICJ0b2tlbl9wdWJsaWNfa2V5IjogIkFCQ0QiIH0uICJBQkNEIiBzaG91
bGQgYmUgQmFzZTY0VVJMIGVuY29kZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gcmVzcG9uc2UgPSBtYWtlU3RyaW5nKCJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24v
anNvblxyXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1M
ZW5ndGg6ICIsIDI0ICsga2V5RGF0YS5sZW5ndGgoKSwgIlxyXG5cclxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIntcInRva2VuX3B1YmxpY19rZXlcIjogXCIiLCBrZXlE
YXRhLCAiXCJ9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24u
c2VuZChXVEZNb3ZlKHJlc3BvbnNlKSwgW2Nvbm5lY3Rpb24sICZkb25lLCB1bmxpbmthYmxlVG9r
ZW4sIHRva2VuLCAmc2VjS2V5XSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbiwgJmRvbmUsIHVubGlu
a2FibGVUb2tlbiwgdG9rZW4sICZzZWNLZXldIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0NCkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5z
dHIocmVxdWVzdDQuZGF0YSgpLCAiUE9TVCAvIEhUVFAvMS4xXHJcbiIsIHJlcXVlc3Q0LnNpemUo
KSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVF
KHN0cm5zdHIocmVxdWVzdDQuZGF0YSgpLCAie1wic291cmNlX2VuZ2FnZW1lbnRfdHlwZVwiOlwi
Y2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCIxMjcuMC4wLjFcIixcInNvdXJjZV9pZFwiOjQyLFwi
YXR0cmlidXRlZF9vbl9zaXRlXCI6XCJleGFtcGxlLmNvbVwiLFwidHJpZ2dlcl9kYXRhXCI6MTIs
XCJ2ZXJzaW9uXCI6MywiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXF1ZXN0NC5zaXplKCkpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShzdHJuc3RyKHJlcXVlc3Q0LmRhdGEoKSwgdG9rZW4udXRm
OCgpLmRhdGEoKSwgcmVxdWVzdDQuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0cm5zdHIocmVxdWVzdDQuZGF0YSgpLCB1bmxp
bmthYmxlVG9rZW4udXRmOCgpLmRhdGEoKSwgcmVxdWVzdDQuc2l6ZSgpKSk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHJlcXVlc3Q0U3RyaW5nID0gU3Ry
aW5nKHJlcXVlc3Q0LmRhdGEoKSwgcmVxdWVzdDQuc2l6ZSgpKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8ga2V5ID0gU3RyaW5nKCJkZXN0aW5hdGlvbl9z
ZWNyZXRfdG9rZW4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dXRvIHN0YXJ0ID0gcmVxdWVzdDRTdHJpbmcuZmluZChrZXkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICs9IGtleS5sZW5ndGgoKSArIDM7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBlbmQgPSByZXF1ZXN0NFN0cmlu
Zy5maW5kKCciJywgc3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gdG9rZW4gPSByZXF1ZXN0NFN0cmluZy5zdWJzdHJpbmcoc3RhcnQsIGVuZCAtIHN0
YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHRva2Vu
VmVjdG9yID0gYmFzZTY0VVJMRGVjb2RlKHRva2VuKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdXRvIHRva2VuRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQnl0ZXM6dG9rZW5WZWN0b3ItPmRhdGEoKSBsZW5ndGg6dG9rZW5WZWN0b3ItPnNp
emUoKV0pOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0g
U3RyaW5nKCJkZXN0aW5hdGlvbl9zZWNyZXRfdG9rZW5fc2lnbmF0dXJlIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSByZXF1ZXN0NFN0cmluZy5maW5k
KGtleSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgKz0g
a2V5Lmxlbmd0aCgpICsgMzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbmQgPSByZXF1ZXN0NFN0cmluZy5maW5kKCciJywgc3RhcnQpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gc2lnbmF0dXJlID0gcmVxdWVzdDRTdHJpbmcu
c3Vic3RyaW5nKHN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBzaWduYXR1cmVWZWN0b3IgPSBiYXNlNjRVUkxEZWNvZGUoc2ln
bmF0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHNp
Z25hdHVyZURhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnNpZ25h
dHVyZVZlY3Rvci0+ZGF0YSgpIGxlbmd0aDpzaWduYXR1cmVWZWN0b3ItPnNpemUoKV0pOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoU2VjS2V5
VmVyaWZ5U2lnbmF0dXJlKHNlY0tleS5nZXQoKSwga1NlY0tleUFsZ29yaXRobVJTQVNpZ25hdHVy
ZU1lc3NhZ2VQU1NTSEEzODQsIChfX2JyaWRnZSBDRkRhdGFSZWYpdG9rZW5EYXRhLmdldCgpLCAo
X19icmlkZ2UgQ0ZEYXRhUmVmKXNpZ25hdHVyZURhdGEuZ2V0KCksIE5VTEwpKTsKKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgTlNVUkwgKnNlcnZlclVSTCA9
IHNlcnZlci5yZXF1ZXN0KCkuVVJMOworCisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld1dpdGhv
dXRVc2luZ0RhZW1vbigpOworICAgIHdlYlZpZXcuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGVBbGxvd2luZ0FsbFRMUygpOworICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS53
ZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOwor
ICAgIFt3ZWJWaWV3IF9hZGRFdmVudEF0dHJpYnV0aW9uV2l0aFNvdXJjZUlEOjQyIGRlc3RpbmF0
aW9uVVJMOmV4YW1wbGVVUkwoKSBzb3VyY2VEZXNjcmlwdGlvbjpAInRlc3Qgc291cmNlIGRlc2Ny
aXB0aW9uIiBwdXJjaGFzZXI6QCJ0ZXN0IHB1cmNoYXNlciIgcmVwb3J0RW5kcG9pbnQ6c2VydmVy
VVJMIG9wdGlvbmFsTm9uY2U6bmlsIGFwcGxpY2F0aW9uQnVuZGxlSUQ6QCJ0ZXN0LmJ1bmRsZS5p
ZCIgZXBoZW1lcmFsOk5PXTsKKyAgICBbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ud2Vic2l0ZURh
dGFTdG9yZSBfdHJ1c3RTZXJ2ZXJGb3JMb2NhbFBDTVRlc3Rpbmc6c2VjVHJ1c3RGcm9tQ2VydGlm
aWNhdGVDaGFpbihAWyhpZCl0ZXN0Q2VydGlmaWNhdGUoKS5nZXQoKV0pLmdldCgpXTsKKworICAg
IFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJM
c0ZvclRlc3Rpbmc6c2VydmVyVVJMIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKSBjb21wbGV0
aW9uSGFuZGxlcjpeeworICAgICAgICBbd2ViVmlldyBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRPdmVycmlkZVRpbWVyRm9yVGVzdGluZzpZRVMgY29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICAg
ICAgICAgIFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVG9r
ZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nOnNlcnZlclVSTCBjb21wbGV0aW9uSGFuZGxlcjpeewor
ICAgICAgICAgICAgICAgIFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uVG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nOnNlcnZlclVSTCBjb21wbGV0aW9uSGFu
ZGxlcjpeeworICAgICAgICAgICAgICAgICAgICBbd2ViVmlldyBfc2V0UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3Rpbmc6QCJ0ZXN0LmJ1bmRsZS5pZCIgY29tcGxldGlv
bkhhbmRsZXI6XnsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5TU3RyaW5nICpodG1sID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8c2NyaXB0PnNldFRpbWVvdXQoZnVuY3Rpb24oKXsg
ZmV0Y2goJyVAY29udmVyc2lvblJlcXVlc3RCZWZvcmVSZWRpcmVjdCcse21vZGU6J25vLWNvcnMn
fSk7IH0sIDEwMCk7PC9zY3JpcHQ+Iiwgc2VydmVyVVJMXTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpleGFtcGxlVVJMKCldOwor
ICAgICAgICAgICAgICAgICAgICB9XTsKKyAgICAgICAgICAgICAgICB9XTsKKyAgICAgICAgICAg
IH1dOworICAgICAgICB9XTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQogI2Vu
ZGlmCiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEJhc2ljKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJlMzRh
MDZmMWQwMWQwMjhhNjkzNDMzYTRiN2I0ZDUxYzU1ZDQzNWQuLjMxOWFhY2QwZjRhNjM2ODM1NTk1
ZGViYTRlNjFhM2FjOTU2ZWRmZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0xMS0zMCAg
Sm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBQQ006IFVubGlu
a2FibGUgdG9rZW5zIGZvciB0cmlnZ2VyaW5nIGV2ZW50IHRvIHByZXZlbnQgZnJhdWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzY3MworICAgICAg
ICA8cmRhcjovLzc5NDI2MzQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZXNlIGNoYW5nZXMgYXJlIGEgcmVwb3J0IHZlcnNpb24gYnVtcCAyLT4z
LgorCisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1
dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L2V4cGlyZWQtYXR0cmli
dXRpb24tcmVwb3J0LWdldHMtc2VudC1vbi1zZXNzaW9uLXN0YXJ0LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L211bHRpcGxlLWFwcC1i
dW5kbGUtaWRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3N0b3Jl
LXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvdHJpZ2dlcmlu
Zy1ldmVudC13aXRoLWF0dHJpYnV0aW9uLXNvdXJjZS10aHJvdWdoLWZldGNoLWtlZXBhbGl2ZS1l
eHBlY3RlZC50eHQ6CisKIDIwMjEtMTEtMzAgIFJvYmVydCBKZW5uZXIgIDxKZW5uZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFsgQmlnU3VyKyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvbWVkaWEtc291cmNlL21lZGlhc291cmNlLWFkZHNvdXJjZWJ1ZmZlci5odG1sIGlzIGNvbnNp
c3RlbnRseSBmYWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1mZXRjaC1r
ZWVwYWxpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtZmV0Y2gta2VlcGFs
aXZlLWV4cGVjdGVkLnR4dAppbmRleCAyZDFhMTYwNWJhNGFjOWI2NTVmMTNhMzY2OGM0Njc4MWMz
MTNkMTA0Li43YTk4OGQ0YjgzMTVmMjIwNmEzZGM0YzM4N2IwZjZlZDE4Yjk2OWEyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L2F0dHJp
YnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1mZXRjaC1rZWVwYWxpdmUtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmli
dXRpb24tY29udmVyc2lvbi10aHJvdWdoLWZldGNoLWtlZXBhbGl2ZS1leHBlY3RlZC50eHQKQEAg
LTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IFtQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
XSBDb252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMIHBhdGggY29udGFp
bmVkIHVucmVjb2duaXplZCBwYXJ0cy4KK0NPTlNPTEUgTUVTU0FHRTogW1ByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRo
ZSBVUkwgcGF0aCBjb250YWluZWQgdW5yZWNvZ25pemVkIHBhcnRzLgogQ09OU09MRSBNRVNTQUdF
OiBPcmlnaW4gaHR0cDovLzEyNy4wLjAuMTo4MDAwIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1D
b250cm9sLUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDQwNAogQ09OU09MRSBNRVNTQUdFOiBG
ZXRjaCBBUEkgY2Fubm90IGxvYWQgaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My8ud2VsbC1rbm93bi9w
cml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3RyaWdnZXItYXR0cmlidXRpb24vd2hhdGV2ZXIgZHVl
IHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4KIFRlc3RzIHRyaWdnZXJpbmcgb2YgcHJpdmF0ZSBj
bGljayBtZWFzdXJlbWVudCBhdHRyaWJ1dGlvbnMgd2l0aCBmZXRjaCBvbiBwYWdlaGlkZS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
ZXhwaXJlZC1hdHRyaWJ1dGlvbi1yZXBvcnQtZ2V0cy1zZW50LW9uLXNlc3Npb24tc3RhcnQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9leHBpcmVkLWF0dHJpYnV0aW9uLXJlcG9ydC1nZXRzLXNlbnQtb24tc2Vzc2lvbi1zdGFydC1l
eHBlY3RlZC50eHQKaW5kZXggYzNkOTI5YWFjNTY2MWM2OTFkNGMzNWNkOTRiYWJlNzdiN2JhZTlk
NC4uMDBjZmZkOTk0YTYyMDVlMjNhYjBjNDZjNTRlMWE2MDQ4NzRmNTdmNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9leHBpcmVkLWF0
dHJpYnV0aW9uLXJlcG9ydC1nZXRzLXNlbnQtb24tc2Vzc2lvbi1zdGFydC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9leHBp
cmVkLWF0dHJpYnV0aW9uLXJlcG9ydC1nZXRzLXNlbnQtb24tc2Vzc2lvbi1zdGFydC1leHBlY3Rl
ZC50eHQKQEAgLTExLDcgKzExLDcgQEAgQ29udGVudCB0eXBlOiBhcHBsaWNhdGlvbi9qc29uCiBS
RVFVRVNUX1VSSTogL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9jb252ZXJzaW9u
UmVwb3J0LnB5CiBObyBjb29raWVzIGluIGF0dHJpYnV0aW9uIHJlcXVlc3QuCiBSZXF1ZXN0IGJv
ZHk6Ci17InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9zaXRlIjoiMTI3
LjAuMC4xIiwic291cmNlX2lkIjozLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2NhbGhvc3QiLCJ0
cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjoyfQoreyJzb3VyY2VfZW5nYWdlbWVudF90eXBlIjoi
Y2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6MywiYXR0cmlidXRl
ZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwidmVyc2lvbiI6M30KIAog
CiBObyBzdG9yZWQgUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudCBkYXRhLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9tdWx0aXBsZS1h
cHAtYnVuZGxlLWlkcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L211bHRpcGxlLWFwcC1idW5kbGUtaWRzLWV4cGVjdGVkLnR4dApp
bmRleCBmYTNhNWY0OTAyMDg0Zjk0NTYzYjAzM2YyNjk3NDI4NzBhNjkyNDI3Li5lNWI3ZjE3OGVh
NGU2MzhjYWM2NDAwZWFjN2MzZTE0NmM2YjYwYmViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L211bHRpcGxlLWFwcC1idW5kbGUtaWRz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01l
YXN1cmVtZW50L211bHRpcGxlLWFwcC1idW5kbGUtaWRzLWV4cGVjdGVkLnR4dApAQCAtMTIsNyAr
MTIsNyBAQCBDb250ZW50IHR5cGU6IGFwcGxpY2F0aW9uL2pzb24KIFJFUVVFU1RfVVJJOiAvcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQucHk/cmVjaXBp
ZW50PUNsaWNrU291cmNlCiBObyBjb29raWVzIGluIGF0dHJpYnV0aW9uIHJlcXVlc3QuCiBSZXF1
ZXN0IGJvZHk6Ci17InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9zaXRl
IjoiMTI3LjAuMC4xIiwic291cmNlX2lkIjozMywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxo
b3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwidmVyc2lvbiI6Mn0KK3sic291cmNlX2VuZ2FnZW1lbnRf
dHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIxMjcuMC4wLjEiLCJzb3VyY2VfaWQiOjMzLCJh
dHRyaWJ1dGVkX29uX3NpdGUiOiJsb2NhbGhvc3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9u
IjozfQogCiAKIC0tLS0tLS0tCkBAIC0yNCw3ICsyNCw3IEBAIENvbnRlbnQgdHlwZTogYXBwbGlj
YXRpb24vanNvbgogUkVRVUVTVF9VUkk6IC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJj
ZXMvY29udmVyc2lvblJlcG9ydC5weT9yZWNpcGllbnQ9Q2xpY2tEZXN0aW5hdGlvbgogTm8gY29v
a2llcyBpbiBhdHRyaWJ1dGlvbiByZXF1ZXN0LgogUmVxdWVzdCBib2R5OgoteyJzb3VyY2VfZW5n
YWdlbWVudF90eXBlIjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9p
ZCI6MzMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIs
InZlcnNpb24iOjJ9Cit7InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9z
aXRlIjoiMTI3LjAuMC4xIiwic291cmNlX2lkIjozMywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9j
YWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwidmVyc2lvbiI6M30KIAogVW5hdHRyaWJ1dGVkIFBy
aXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRzOgogV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3NlbmQtYXR0
cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dAppbmRleCBlNmFkOTExNzM4
ZmE4ZTE5NzMwY2E5YjQzZWRiOWYyZjAwM2JkZWE1Li4xMjcxM2I2Njk2ZTAyMmUxYTYxY2ZhNmQ1
YWU1MjIzOTFlMjQ1ZjM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1
cmVtZW50L3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dApA
QCAtMTYsNyArMTYsNyBAQCBDb250ZW50IHR5cGU6IGFwcGxpY2F0aW9uL2pzb24KIFJFUVVFU1Rf
VVJJOiAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQu
cHk/cmVjaXBpZW50PUNsaWNrU291cmNlCiBObyBjb29raWVzIGluIGF0dHJpYnV0aW9uIHJlcXVl
c3QuCiBSZXF1ZXN0IGJvZHk6Ci17InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNv
dXJjZV9zaXRlIjoiMTI3LjAuMC4xIiwic291cmNlX2lkIjozLCJhdHRyaWJ1dGVkX29uX3NpdGUi
OiJsb2NhbGhvc3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjoyfQoreyJzb3VyY2VfZW5n
YWdlbWVudF90eXBlIjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9p
ZCI6MywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwi
dmVyc2lvbiI6M30KIAogCiAtLS0tLS0tLQpAQCAtMjgsNyArMjgsNyBAQCBDb250ZW50IHR5cGU6
IGFwcGxpY2F0aW9uL2pzb24KIFJFUVVFU1RfVVJJOiAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
cmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQucHk/cmVjaXBpZW50PUNsaWNrRGVzdGluYXRpb24K
IE5vIGNvb2tpZXMgaW4gYXR0cmlidXRpb24gcmVxdWVzdC4KIFJlcXVlc3QgYm9keToKLXsic291
cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIxMjcuMC4wLjEiLCJz
b3VyY2VfaWQiOjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0
YSI6MTIsInZlcnNpb24iOjJ9Cit7InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNv
dXJjZV9zaXRlIjoiMTI3LjAuMC4xIiwic291cmNlX2lkIjozLCJhdHRyaWJ1dGVkX29uX3NpdGUi
OiJsb2NhbGhvc3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjozfQogCiAKIC0tLS0tLS0t
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9zdG9yZS1wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLWV4cGVj
dGVkLnR4dAppbmRleCBhZjAxOWQ4YTA5OTVjYjFhODU3MmVhNDBhNWUwYTg2NmVjODRhMmYwLi5k
MTdkZTQ0ODYxMTU0YTFiZDMzMzc5YWY2MDMwYjY5YjU2OGZiOTliIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3N0b3JlLXByaXZhdGUt
Y2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0
ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1ub25jZS1leHBlY3RlZC50eHQKQEAgLTE4
LDcgKzE4LDcgQEAgQ29udGVudCB0eXBlOiBhcHBsaWNhdGlvbi9qc29uCiBSRVFVRVNUX1VSSTog
L3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9mcmF1ZFByZXZlbnRpb25UZXN0VVJM
LnB5CiBObyBjb29raWVzIGluIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4KIFJlcXVlc3QgYm9keToK
LXsic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX25vbmNlIjoiQUJDREVG
YWJjZGVmMDEyMzQ1Njc4OSIsInNvdXJjZV91bmxpbmthYmxlX3Rva2VuIjoidW5saW5rYWJsZVRv
a2VuIiwidmVyc2lvbiI6Mn0KK3sic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291
cmNlX25vbmNlIjoiQUJDREVGYWJjZGVmMDEyMzQ1Njc4OSIsInNvdXJjZV91bmxpbmthYmxlX3Rv
a2VuIjoidW5saW5rYWJsZVRva2VuIiwidmVyc2lvbiI6M30KIFJFUVVFU1RfTUVUSE9EOiBHRVQK
IEhUVFBfSE9TVDogMTI3LjAuMC4xOjgwMDAKIFJFUVVFU1RfVVJJOiAvcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvcmVzb3VyY2VzL2ZyYXVkUHJldmVudGlvblRlc3RVUkwucHkKQEAgLTMxLDcgKzMx
LDcgQEAgQ29udGVudCB0eXBlOiBhcHBsaWNhdGlvbi9qc29uCiBSRVFVRVNUX1VSSTogL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9mcmF1ZFByZXZlbnRpb25UZXN0VVJMLnB5CiBO
byBjb29raWVzIGluIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4KIFJlcXVlc3QgYm9keToKLXsic291
cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIxMjcuMC4wLjEiLCJz
b3VyY2VfaWQiOjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0
YSI6MTIsInZlcnNpb24iOjIsInNvdXJjZV9zZWNyZXRfdG9rZW4iOiJzZWNyZXRUb2tlbiIsInNv
dXJjZV9zZWNyZXRfdG9rZW5fc2lnbmF0dXJlIjoic2lnbmF0dXJlIn0KK3sic291cmNlX2VuZ2Fn
ZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIxMjcuMC4wLjEiLCJzb3VyY2VfaWQi
OjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZl
cnNpb24iOjMsInNvdXJjZV9zZWNyZXRfdG9rZW4iOiJzZWNyZXRUb2tlbiIsInNvdXJjZV9zZWNy
ZXRfdG9rZW5fc2lnbmF0dXJlIjoic2lnbmF0dXJlIn0KIAogCiBObyBzdG9yZWQgUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudCBkYXRhLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC90cmlnZ2VyaW5nLWV2ZW50LXdpdGgtYXR0cmlidXRp
b24tc291cmNlLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvdHJpZ2dlcmluZy1ldmVudC13
aXRoLWF0dHJpYnV0aW9uLXNvdXJjZS10aHJvdWdoLWZldGNoLWtlZXBhbGl2ZS1leHBlY3RlZC50
eHQKaW5kZXggNWE5ZmQzYWJjODFhOWZjZTgxNTY0ZjIyN2FlNzI5N2M5MjM0MGIzMS4uMDI4MjQ3
OTg5Yjk5ZmNmYjFhNjVlZGZhYjQ4MGE0N2E4MjMwNTE0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC90cmlnZ2VyaW5nLWV2ZW50LXdp
dGgtYXR0cmlidXRpb24tc291cmNlLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Ry
aWdnZXJpbmctZXZlbnQtd2l0aC1hdHRyaWJ1dGlvbi1zb3VyY2UtdGhyb3VnaC1mZXRjaC1rZWVw
YWxpdmUtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBbUHJp
dmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1
c2UgdGhlIGNvbnZlcnNpb24gZGF0YSBjb3VsZCBub3QgYmUgcGFyc2VkIG9yIHdhcyBoaWdoZXIg
dGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIG9mIDE1LgorQ09OU09MRSBNRVNTQUdFOiBbUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJl
Y2F1c2UgdGhlIGNvbnZlcnNpb24gZGF0YSBjb3VsZCBub3QgYmUgcGFyc2VkIG9yIHdhcyBoaWdo
ZXIgdGhhbiB0aGUgYWxsb3dlZCBtYXhpbXVtIG9mIDE1LgogQ09OU09MRSBNRVNTQUdFOiBPcmln
aW4gaHR0cDovL2xvY2FsaG9zdDo4MDAwIGlzIG5vdCBhbGxvd2VkIGJ5IEFjY2Vzcy1Db250cm9s
LUFsbG93LU9yaWdpbi4gU3RhdHVzIGNvZGU6IDQwNAogQ09OU09MRSBNRVNTQUdFOiBGZXRjaCBB
UEkgY2Fubm90IGxvYWQgaHR0cHM6Ly9sb2NhbGhvc3Q6ODQ0My8ud2VsbC1rbm93bi9wcml2YXRl
LWNsaWNrLW1lYXN1cmVtZW50L3RyaWdnZXItYXR0cmlidXRpb24vRHVtbXk/YXR0cmlidXRpb25T
b3VyY2U9aHR0cHM6Ly8xMjcuMC4wLjEgZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4KIFRl
c3RzIHRyaWdnZXJpbmcgb2YgcHJpdmF0ZSBjbGljayBtZWFzdXJlbWVudCBhdHRyaWJ1dGlvbiB3
aXRoIHNhbWUtc2l0ZSB0cmlnZ2VyaW5nIGV2ZW50IHJlcXVlc3QuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445793</attachid>
            <date>2021-12-02 16:54:55 -0800</date>
            <delta_ts>2021-12-03 14:39:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233673-20211202165454.patch</filename>
            <type>text/plain</type>
            <size>120932</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM1YTYzYWEzNzI4ZjRm
ZTQ1MzFmZDI1YmYxNGQ2MjEzNmNkYWZiMS4uZDBkN2VmNjk2OWEwYWRjY2RkOGEzMGZjYjg5YjEy
ZDZlMzY4ZjVhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIxLTEyLTAyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogVW5saW5rYWJs
ZSB0b2tlbnMgZm9yIHRyaWdnZXJpbmcgZXZlbnQgdG8gcHJldmVudCBmcmF1ZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjczCisgICAgICAgIDxy
ZGFyOi8vNzk0MjYzNDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgdHJpZ2dlcmluZyBldmVudHMgdG8gaGF2ZSBhbiBv
cHRpb25hbCBxdWVyeSBwYXJhbWV0ZXIgbGlrZSB0aGlzOgorICAgICAgICBodHRwczovL2Rlc3Rp
bmF0aW9uLmV4YW1wbGUvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmln
Z2VyLWF0dHJpYnV0aW9uLzExP2F0dHJpYnV0aW9uRGVzdGluYXRpb25Ob25jZT1BQkNERUZhYmNk
ZWYwMTIzNDU2Nzg5CisKKyAgICAgICAgVGhlIHByZXNlbmNlIG9mIGFuIGF0dHJpYnV0aW9uRGVz
dGluYXRpb25Ob25jZSB0cmlnZ2VycyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIgdG8K
KyAgICAgICAgYXNrIHRoZSBzZXJ2ZXIgdG8gc2lnbiBhbiB1bmxpbmthYmxlIHRva2VuIGZvciB0
aGUgdHJpZ2dlcmluZyBldmVudCBhbmQgdGhlbiBzdG9yZXMgdGhlCisgICAgICAgIGNvcnJlc3Bv
bmRpbmcgc2VjcmV0IHRva2VuIHBsdXMgdGhlIHNpZ25hdHVyZSBmb3IgbGF0ZXIgaW5jbHVzaW9u
IGluIHRoZSBhdHRyaWJ1dGlvbiByZXBvcnQuCisKKyAgICAgICAgVGhlIFdlYkNvcmUgY2hhbmdl
cyBpbnRyb2R1Y2UgdGhlc2UgbmV3IHN0cnVjdHMgYW5kIGRhdGEgZmllbGRzIGluCisgICAgICAg
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OgorICAgICAgICAtIEVwaGVtZXJhbERl
c3RpbmF0aW9uTm9uY2UKKyAgICAgICAgLSBVbmxpbmthYmxlVG9rZW4gKGJhc2UgY2xhc3MgZm9y
IHRoZSBzcGVjaWZpYyBvbmVzIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uKQorICAgICAgICAt
IFNvdXJjZVVubGlua2FibGVUb2tlbgorICAgICAgICAtIERlc3RpbmF0aW9uVW5saW5rYWJsZVRv
a2VuCisgICAgICAgIC0gU2VjcmV0VG9rZW4gKGJhc2UgY2xhc3MgZm9yIHRoZSBzcGVjaWZpYyBv
bmVzIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uKQorICAgICAgICAtIFNvdXJjZVNlY3JldFRv
a2VuCisgICAgICAgIC0gRGVzdGluYXRpb25TZWNyZXRUb2tlbgorCisgICAgICAgIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIG5vdyBoYXMg
dGhlc2Ugb3B0aW9uYWwgZmllbGRzOgorICAgICAgICAtIGVwaGVtZXJhbERlc3RpbmF0aW9uTm9u
Y2UKKyAgICAgICAgLSBkZXN0aW5hdGlvblVubGlua2FibGVUb2tlbgorICAgICAgICAtIGRlc3Rp
bmF0aW9uU2VjcmV0VG9rZW4KKyAgICAgICAgLSBkZXN0aW5hdGlvblNpdGUKKworICAgICAgICBU
aGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIHNldHRlcnMvZ2V0dGVycyBhbmQgY3JlYXRvciBmdW5j
dGlvbnMgZm9yIHRob3NlIGRhdGEgZmllbGRzLgorCisgICAgICAgIE5ldyBBUEkvdW5pdCB0ZXN0
IFByaXZhdGVDbGlja01lYXN1cmVtZW50LkRlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZlbnRpb24u
CisKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBbmNob3JFbGVtZW50OjpwYXJzZVByaXZhdGVDbGlja01lYXN1cmVtZW50IGNvbnN0
KToKKyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZVNlY3JldFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsTm9uY2U6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZVVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdFF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6YXR0cmlidXRpb25SZXBvcnRKU09O
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhl
bWVyYWxOb25jZTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6c2V0RXBoZW1lcmFsU291cmNlTm9uY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuUHVibGljS2V5VVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblB1YmxpY0tleVVSTCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWdu
YXR1cmVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRv
a2VuU2lnbmF0dXJlVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjp0b2tlblNpZ25hdHVyZUpTT04gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRv
a2VuOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpzZXREZXN0aW5hdGlvblNlY3JldFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNvbGF0ZWRDb3B5
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNWYWxpZCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46
OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRh
dGE6OnNldERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OnNldERl
c3RpbmF0aW9uU2VjcmV0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OnRva2VuUHVibGljS2V5VVJMIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blRyaWdnZXJEYXRhOjp0b2tlblNpZ25hdHVyZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6ZXBoZW1lcmFsU291cmNlTm9uY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnNvdXJjZVVubGlua2Fi
bGVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVy
YWxOb25jZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpFcGhlbWVyYWxOb25jZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uVHJpZ2dlckRhdGE6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291
cmNlTm9uY2U6OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL2NvY29hL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlU291cmNlVW5saW5rYWJsZVRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRV
cGRhdGVEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlVW5saW5rYWJsZVRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRV
cGRhdGVTb3VyY2VTZWNyZXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlRGVzdGluYXRpb25TZWNyZXRUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBk
YXRlU2VjcmV0VG9rZW4pOgorCiAyMDIxLTEyLTAyICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2Fy
ZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgUmUtYWRkIHN1cHBvcnQgb2YgaW1hZ2UgY29udHJv
bCBtZW51cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggYzQxZDhjM2ZjZDUzMTQ1ZjkwN2ZlOWRhOTA1NzdiYmFkM2Vj
N2MzNS4uNzE0ZjkwNWQ1Nzk1ODMyYTI5ZjY4ZmQ2YzQyZDQ4NWJiNmM1YWE2YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1OCBAQAorMjAyMS0xMi0wMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFw
cGxlLmNvbT4KKworICAgICAgICBQQ006IFVubGlua2FibGUgdG9rZW5zIGZvciB0cmlnZ2VyaW5n
IGV2ZW50IHRvIHByZXZlbnQgZnJhdWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzY3MworICAgICAgICA8cmRhcjovLzc5NDI2MzQ3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxs
b3dzIHRyaWdnZXJpbmcgZXZlbnRzIHRvIGhhdmUgYW4gb3B0aW9uYWwgcXVlcnkgcGFyYW1ldGVy
IGxpa2UgdGhpczoKKyAgICAgICAgaHR0cHM6Ly9kZXN0aW5hdGlvbi5leGFtcGxlLy53ZWxsLWtu
b3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi8xMT9hdHRy
aWJ1dGlvbkRlc3RpbmF0aW9uTm9uY2U9QUJDREVGYWJjZGVmMDEyMzQ1Njc4OQorCisgICAgICAg
IFRoZSBwcmVzZW5jZSBvZiBhbiBhdHRyaWJ1dGlvbkRlc3RpbmF0aW9uTm9uY2UgdHJpZ2dlcnMg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyIHRvCisgICAgICAgIGFzayB0aGUgc2VydmVy
IHRvIHNpZ24gYW4gdW5saW5rYWJsZSB0b2tlbiBmb3IgdGhlIHRyaWdnZXJpbmcgZXZlbnQgYW5k
IHRoZW4gc3RvcmVzIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIHNlY3JldCB0b2tlbiBwbHVz
IHRoZSBzaWduYXR1cmUgZm9yIGxhdGVyIGluY2x1c2lvbiBpbiB0aGUgYXR0cmlidXRpb24gcmVw
b3J0LgorCisgICAgICAgIE5ldyBBUEkvdW5pdCB0ZXN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50
LkRlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZlbnRpb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRp
bGl0aWVzOjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlIGNvbnN0KToK
KyAgICAgICAgICAgIE5vdyBoYW5kbGVzIGRlc3RpbmF0aW9uIHRva2Vucy4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAg
ICAgICAgICAgTm93IHNldHMgZGVzdGluYXRpb25TaXRlIGluIFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpEYXRhYmFzZSk6Cisg
ICAgICAgICAgICBOb3cgY2FsbHMgYWRkRGVzdGluYXRpb25Ub2tlbkNvbHVtbnNJZk5lY2Vzc2Fy
eSgpLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjppbnNlcnRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCk6CisgICAgICAgICAgICBOb3cgZG9lcyBpbnNlcnRpb24gb2Ygb3B0aW9uYWwg
ZGVzdGluYXRpb24gdG9rZW5zLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjphZGRE
ZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgICAgIERhdGFiYXNl
IG1pZ3JhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWRkQnVuZGxlSURD
b2x1bW5JZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgICAgICBUZW1wb3JhcnkgbWlncmF0
aW9uIGZ1bmN0aW9uIGZvciBub24tY3VzdG9tZXIgYnVpbGRzLiBObyBsb25nZXIgbmVlZGVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnN0b3JlVW5h
dHRyaWJ1dGVkKToKKyAgICAgICAgICAgIEp1c3QgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2Vi
S2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFRva2VuUHVibGljS2V5KToK
KyAgICAgICAgICAgIE5vdCBjaGFuZ2VkIGFmYWlrLiBTZWVtcyBsaWtlIHRoZSBkaWZmIGlzIGNv
bmZ1c2VkLgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
OmNvbmZpZ3VyZUZvclRva2VuU2lnbmluZyk6CisgICAgICAgICAgICBOZXcgZnVuY3Rpb24gdG8g
ZXh0cmFjdCBzaGFyZWQgY29kZS4KKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyOjpnZXRTaWduYXR1cmVCYXNlNjRVUkxGcm9tVG9rZW5TaWduYXR1cmVSZXNw
b25zZSk6CisgICAgICAgICAgICBOZXcgZnVuY3Rpb24gdG8gZXh0cmFjdCBzaGFyZWQgY29kZS4K
KyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWdu
ZWRVbmxpbmthYmxlVG9rZW5Gb3JTb3VyY2UpOgorICAgICAgICAgICAgUmVuYW1lZCB0byBhZGQg
IkZvclNvdXJjZSIgYW5kIGFsbCBzaGFyZWQgY29kZSBleHRyYWN0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRv
a2VuRm9yRGVzdGluYXRpb24pOgorICAgICAgICAgICAgRGlmZmVyZW50IHRoYW4gZm9yIHRoZSBz
b3VyY2UgaW4gdGhhdCBpdCByZXN1bHRzIGluIGFuIGF0dHJpYnV0aW9uIGNhbGwuCisgICAgICAg
IChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmhhbmRsZUF0dHJpYnV0aW9uKToKKyAg
ICAgICAgICAgIE5vdyBkb2VzIHNpZ25pbmcgb2YgZGVzdGluYXRpb24gdG9rZW4gaWYgdGhlIG9w
dGlvbmFsIG5vbmNlIGlzIGluIHRoZSB0cmlnZ2VyaW5nIGV2ZW50LgorICAgICAgICAoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnNldFBDTUZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgQWRkZWQgZW1wdHkgaW5pdGlh
bGl6ZXIgc3RyaW5ncyBmb3IgdGhlIGRlc3RpbmF0aW9uIHRlc3QgdG9rZW4gdmFsdWVzIG5vdCBp
biB1c2UgeWV0LgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbik6IERlbGV0ZWQuCisgICAgICAgICAgICBSZW5h
bWVkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRv
a2VuRm9yU291cmNlKCkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmg6CisKIDIwMjEtMTItMDIg
IE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS1h
ZGQgc3VwcG9ydCBvZiBpbWFnZSBjb250cm9sIG1lbnVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcAppbmRleCA5NjliM2FkZTYxZThjNzc3MmQ4OWEwNmIxMmQ3MDI3
MzA5YzA5ZDE3Li45MTRiOTNkNzk3YjFkMTdmYWYxNDNjZTBkOTk3ZTQ1ZDliN2RhMDZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtNDYzLDcgKzQ2Myw3
IEBAIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IEhUTUxBbmNob3JFbGVt
ZW50OjpwYXJzZVByaXZhdGVDbGlja01lYXN1CiAKICAgICBhdXRvIGF0dHJpYnV0aW9uU291cmNl
Tm9uY2VBdHRyID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdHRyaWJ1dGlvbnNv
dXJjZW5vbmNlQXR0cik7CiAgICAgaWYgKCFhdHRyaWJ1dGlvblNvdXJjZU5vbmNlQXR0ci5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgYXV0byBlcGhlbWVyYWxOb25jZSA9IFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZSB7IGF0dHJpYnV0aW9uU291cmNlTm9uY2VBdHRy
IH07CisgICAgICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsTm9uY2UgeyBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlQXR0ciB9OwogICAgICAg
ICBpZiAoIWVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgZG9jdW1lbnQo
KS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpX
YXJuaW5nLCAiYXR0cmlidXRpb25zb3VyY2Vub25jZSB3YXMgbm90IHZhbGlkLiJfcyk7CiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKaW5kZXggYjkyYWEwMjQzY2RkMWJhNmM2MzE1
ZDA3MDU3ZTRlYWNmYjg4ZWViZS4uMDNiNjg1NjA5MmRiZWQwOWQ4MWNhZTljNWNlZTZjZjM1M2Ni
ZjQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlQYXRoW10gPSAiLy53ZWxsLWtub3duL3ByCiBzdGF0
aWMgY29uc3QgY2hhciBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFJlcG9ydEF0dHJpYnV0aW9uUGF0
aFtdID0gIi8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3JlcG9ydC1hdHRy
aWJ1dGlvbi8iOwogY29uc3Qgc2l6ZV90IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRp
b25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSA9IDI7CiBjb25zdCBzaXplX3QgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRQcmlvcml0eVBhdGhTZWdtZW50U2l6ZSA9IDI7Ci1jb25zdCB1aW50OF90
IHByaXZhdGVDbGlja01lYXN1cmVtZW50VmVyc2lvbiA9IDI7Citjb25zdCB1aW50OF90IHByaXZh
dGVDbGlja01lYXN1cmVtZW50VmVyc2lvbiA9IDM7CiAKIGNvbnN0IFNlY29uZHMgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6Om1heEFnZSgpCiB7CkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OmlzVmFsaWQoKSBjb25zdAogICAgICAgICAmJiAobV90aW1lc1Rv
U2VuZC5zb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgfHwgbV90aW1lc1RvU2VuZC5kZXN0aW5hdGlv
bkVhcmxpZXN0VGltZVRvU2VuZCk7CiB9CiAKLVByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3Vy
Y2VTZWNyZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46
Omlzb2xhdGVkQ29weSgpIGNvbnN0CitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U2VjcmV0VG9r
ZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSBj
b25zdAogewogICAgIHJldHVybiB7CiAgICAgICAgIHRva2VuQmFzZTY0VVJMLmlzb2xhdGVkQ29w
eSgpLApAQCAtNjksMTIgKzY5LDMwIEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VT
ZWNyZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0CiAgICAgfTsK
IH0KIAotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0
Cit7CisgICAgYXV0byBjb3B5ID0gU291cmNlU2VjcmV0VG9rZW4geyB9OworICAgIGNvcHkudG9r
ZW5CYXNlNjRVUkwgPSB0b2tlbkJhc2U2NFVSTC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LnNp
Z25hdHVyZUJhc2U2NFVSTCA9IHNpZ25hdHVyZUJhc2U2NFVSTC5pc29sYXRlZENvcHkoKTsKKyAg
ICBjb3B5LmtleUlEQmFzZTY0VVJMID0ga2V5SURCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCk7Cisg
ICAgcmV0dXJuIGNvcHk7Cit9CisKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlv
blNlY3JldFRva2VuIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRv
a2VuOjppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIGF1dG8gY29weSA9IERlc3RpbmF0aW9u
U2VjcmV0VG9rZW4geyB9OworICAgIGNvcHkudG9rZW5CYXNlNjRVUkwgPSB0b2tlbkJhc2U2NFVS
TC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LnNpZ25hdHVyZUJhc2U2NFVSTCA9IHNpZ25hdHVy
ZUJhc2U2NFVSTC5pc29sYXRlZENvcHkoKTsKKyAgICBjb3B5LmtleUlEQmFzZTY0VVJMID0ga2V5
SURCYXNlNjRVUkwuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKK1ByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxOb25jZSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsTm9uY2U6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHsg
bm9uY2UuaXNvbGF0ZWRDb3B5KCkgfTsKIH0KIAotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNv
dXJjZVVubGlua2FibGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5r
YWJsZVRva2VuOjppc29sYXRlZENvcHkoKSBjb25zdAorUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlVubGlua2FibGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2Vu
Ojppc29sYXRlZENvcHkoKSBjb25zdAogewogICAgIHJldHVybiB7CiAjaWYgUExBVEZPUk0oQ09D
T0EpCkBAIC04Niw2ICsxMDQsMzAgQEAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVu
bGlua2FibGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW4KICAgICB9Owog
fQogCitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRva2VuIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgp
IGNvbnN0Cit7CisgICAgYXV0byBjb3B5ID0gU291cmNlVW5saW5rYWJsZVRva2VuIHsgfTsKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICBjb3B5LmJsaW5kZXIgPSBibGluZGVyOworICAgIGNvcHku
d2FpdGluZ1Rva2VuID0gd2FpdGluZ1Rva2VuOworICAgIGNvcHkucmVhZHlUb2tlbiA9IHJlYWR5
VG9rZW47CisjZW5kaWYKKyAgICBjb3B5LnZhbHVlQmFzZTY0VVJMID0gdmFsdWVCYXNlNjRVUkwu
aXNvbGF0ZWRDb3B5KCk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKK1ByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7Cisg
ICAgYXV0byBjb3B5ID0gRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4geyB9OworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIGNvcHkuYmxpbmRlciA9IGJsaW5kZXI7CisgICAgY29weS53YWl0aW5n
VG9rZW4gPSB3YWl0aW5nVG9rZW47CisgICAgY29weS5yZWFkeVRva2VuID0gcmVhZHlUb2tlbjsK
KyNlbmRpZgorICAgIGNvcHkudmFsdWVCYXNlNjRVUkwgPSB2YWx1ZUJhc2U2NFVSTC5pc29sYXRl
ZENvcHkoKTsKKyAgICByZXR1cm4gY29weTsKK30KKwogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgY29weSB7CkBAIC0xMTEsMjYgKzE1Myw0NiBAQCBFeHBlY3Rl
ZDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgU3RyaW5n
PiBQcml2YXRlQ2xpY2tNZQogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJz
KHJlZGlyZWN0VVJMKTsKICAgICBpZiAoIXBhcmFtZXRlcnMuc2l6ZSgpKQotICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJzaW9u
IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMIGhhZCBhIHF1ZXJ5IHN0cmluZyBidXQg
aXQgZGlkbid0IGNvbnRhaW4gc3VwcG9ydGVkIHBhcmFtZXRlcnMuIl9zKTsKLQotICAgIGlmIChw
YXJhbWV0ZXJzLnNpemUoKSA+IDEpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1By
aXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNh
dXNlIHRoZSBVUkwncyBxdWVyeSBzdHJpbmcgY29udGFpbmVkIHVuc3VwcG9ydGVkIHBhcmFtZXRl
cnMuIl9zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhl
IFVSTCBoYWQgYSBxdWVyeSBzdHJpbmcgYnV0IGl0IGRpZG4ndCBjb250YWluIHN1cHBvcnRlZCBw
YXJhbWV0ZXJzLiJfcyk7CisKKyAgICBpZiAocGFyYW1ldGVycy5zaXplKCkgPiAyKQorICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmln
Z2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgcXVlcnkgc3Ry
aW5nIGNvbnRhaW5lZCB1bnN1cHBvcnRlZCBwYXJhbWV0ZXJzLiJfcyk7CisKKyAgICBFcGhlbWVy
YWxOb25jZSBkZXN0aW5hdGlvbk5vbmNlOworICAgIFJlZ2lzdHJhYmxlRG9tYWluIHNvdXJjZURv
bWFpbjsKKyAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IHBhcmFtZXRlcnMpIHsKKyAgICAgICAg
aWYgKHBhcmFtZXRlci5rZXkgPT0gImF0dHJpYnV0aW9uU291cmNlIikgeworICAgICAgICAgICAg
aWYgKHBhcmFtZXRlci52YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVu
dCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIGF0dHJpYnV0aW9uU291cmNlIHF1
ZXJ5IHBhcmFtZXRlciBoYWQgbm8gdmFsdWUuIl9zKTsKKyAgICAgICAgICAgIGlmICghc291cmNl
RG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
IltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNj
ZXB0ZWQgYmVjYXVzZSB0aGUgVVJMIGhhZCBtdWx0aXBsZSBhdHRyaWJ1dGlvblNvdXJjZSBxdWVy
eSBwYXJhbWV0ZXJzLiJfcyk7CisKKyAgICAgICAgICAgIGF1dG8gYXR0cmlidXRpb25Tb3VyY2VV
UkwgPSBVUkwoVVJMKCksIHBhcmFtZXRlci52YWx1ZSk7CisgICAgICAgICAgICBpZiAoIWF0dHJp
YnV0aW9uU291cmNlVVJMLmlzVmFsaWQoKSB8fCAoYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFzUGF0
aCgpICYmIGF0dHJpYnV0aW9uU291cmNlVVJMLnBhdGgoKS5sZW5ndGgoKSA+IDEpIHx8IGF0dHJp
YnV0aW9uU291cmNlVVJMLmhhc0NyZWRlbnRpYWxzKCkgfHwgYXR0cmlidXRpb25Tb3VyY2VVUkwu
aGFzUXVlcnkoKSB8fCBhdHRyaWJ1dGlvblNvdXJjZVVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNr
IE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0
aGUgVVJMJ3MgYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1ldGVyIHdhcyBub3QgYSB2YWxp
ZCBVUkwgb3Igd2FzIGEgVVJMIHdpdGggYSBwYXRoLCBjcmVkZW50aWFscywgcXVlcnkgc3RyaW5n
LCBvciBmcmFnbWVudC4iX3MpOworICAgICAgICAgICAgc291cmNlRG9tYWluID0gUmVnaXN0cmFi
bGVEb21haW4geyBhdHRyaWJ1dGlvblNvdXJjZVVSTCB9OworCisgICAgICAgICAgICBpZiAoc291
cmNlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0
ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3Qg
YWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1l
dGVyIGhhZCBubyByZWdpc3RyYWJsZSBkb21haW4uIl9zKTsKKyAgICAgICAgfSBlbHNlIGlmIChw
YXJhbWV0ZXIua2V5ID09ICJhdHRyaWJ1dGlvbkRlc3RpbmF0aW9uTm9uY2UiKSB7CisgICAgICAg
ICAgICBpZiAocGFyYW1ldGVyLnZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5n
IGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgYXR0cmlidXRpb25EZXN0
aW5hdGlvbk5vbmNlIHF1ZXJ5IHBhcmFtZXRlciBoYWQgbm8gdmFsdWUuIl9zKTsKKyAgICAgICAg
ICAgIGlmICghZGVzdGluYXRpb25Ob25jZS5ub25jZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJp
Z2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCBoYWQgbXVsdGlw
bGUgYXR0cmlidXRpb25EZXN0aW5hdGlvbk5vbmNlIHF1ZXJ5IHBhcmFtZXRlcnMuIl9zKTsKKwor
ICAgICAgICAgICAgZGVzdGluYXRpb25Ob25jZS5ub25jZSA9IHBhcmFtZXRlci52YWx1ZTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVj
YXVzZSB0aGUgVVJMJ3MgcXVlcnkgc3RyaW5nIGNvbnRhaW5lZCB1bnN1cHBvcnRlZCBwYXJhbWV0
ZXJzLiJfcyk7CisgICAgfQogCi0gICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzLmZpcnN0
KCk7Ci0gICAgaWYgKHBhcmFtZXRlci5rZXkgPT0gImF0dHJpYnV0aW9uU291cmNlIikgewotICAg
ICAgICBpZiAocGFyYW1ldGVyLnZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2Fz
IG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBhdHRyaWJ1dGlvblNvdXJjZSBxdWVyeSBw
YXJhbWV0ZXIgaGFkIG5vIHZhbHVlLiJfcyk7CisgICAgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSBh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhOworICAgIGlmICghc291cmNlRG9tYWluLmlzRW1wdHkoKSkK
KyAgICAgICAgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5zb3VyY2VSZWdpc3RyYWJsZURvbWFpbiA9
IFdURk1vdmUoc291cmNlRG9tYWluKTsKIAotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uU291cmNl
VVJMID0gVVJMKFVSTCgpLCBwYXJhbWV0ZXIudmFsdWUpOwotICAgICAgICBpZiAoIWF0dHJpYnV0
aW9uU291cmNlVVJMLmlzVmFsaWQoKSB8fCAoYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFzUGF0aCgp
ICYmIGF0dHJpYnV0aW9uU291cmNlVVJMLnBhdGgoKS5sZW5ndGgoKSA+IDEpIHx8IGF0dHJpYnV0
aW9uU291cmNlVVJMLmhhc0NyZWRlbnRpYWxzKCkgfHwgYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFz
UXVlcnkoKSB8fCBhdHRyaWJ1dGlvblNvdXJjZVVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkK
LSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3Vy
ZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBhdHRy
aWJ1dGlvblNvdXJjZSBxdWVyeSBwYXJhbWV0ZXIgd2FzIG5vdCBhIHZhbGlkIFVSTCBvciB3YXMg
YSBVUkwgd2l0aCBhIHBhdGgsIGNyZWRlbnRpYWxzLCBxdWVyeSBzdHJpbmcsIG9yIGZyYWdtZW50
LiJfcyk7CisgICAgaWYgKCFkZXN0aW5hdGlvbk5vbmNlLm5vbmNlLmlzRW1wdHkoKSkKKyAgICAg
ICAgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5lcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlID0gV1RG
TW92ZShkZXN0aW5hdGlvbk5vbmNlKTsKIAotICAgICAgICBBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
IGF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7Ci0gICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEu
c291cmNlUmVnaXN0cmFibGVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbiB7IGF0dHJpYnV0aW9u
U291cmNlVVJMIH07Ci0gICAgICAgIHJldHVybiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwotICAg
IH0KLQotICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1l
bnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwgZGlkIG5vdCBj
b250YWluIGFuIGF0dHJpYnV0aW9uU291cmNlIHF1ZXJ5IHBhcmFtZXRlci4iX3MpOworICAgIHJl
dHVybiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogfQogCiBFeHBlY3RlZDxQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgU3RyaW5nPiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QoY29uc3QgVVJMJiByZWRpcmVjdFVS
TCkKQEAgLTE0MCwxOCArMjAyLDIxIEBAIEV4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlja01lCiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChudWxsU3RyaW5nKCkpOwogCiAgICAgaWYgKCFyZWRpcmVj
dFVSTC5wcm90b2NvbElzKCJodHRwcyIpIHx8IHJlZGlyZWN0VVJMLmhhc0NyZWRlbnRpYWxzKCkg
fHwgcmVkaXJlY3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2Fz
IG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBwcm90b2NvbCBpcyBub3QgSFRUUFMgb3Ig
dGhlIFVSTCBjb250YWlucyBvbmUgb3IgbW9yZSBvZiB1c2VybmFtZSwgcGFzc3dvcmQsIGFuZCBm
cmFnbWVudC4iX3MpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENs
aWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVz
ZSB0aGUgVVJMJ3MgcHJvdG9jb2wgaXMgbm90IEhUVFBTIG9yIHRoZSBVUkwgY29udGFpbnMgb25l
IG9yIG1vcmUgb2YgdXNlcm5hbWUsIHBhc3N3b3JkLCBhbmQgZnJhZ21lbnQuIl9zKTsKIAogICAg
IGF1dG8gcmVzdWx0ID0gcGFyc2VBdHRyaWJ1dGlvblJlcXVlc3RRdWVyeShyZWRpcmVjdFVSTCk7
Ci0gICAgaWYgKCFyZXN1bHQgJiYgIXJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5l
cnJvcigpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdnZXJp
bmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBxdWVyeSBzdHJpbmcg
Y291bGQgbm90IGJlIHBhcnNlZC4iX3MpOworICAgIH0KICAgICBhdXRvIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEgPSByZXN1bHQudmFsdWUoKTsKIAogICAgIGF1dG8gcHJlZml4TGVuZ3RoID0gc2l6
ZW9mKHByaXZhdGVDbGlja01lYXN1cmVtZW50VHJpZ2dlckF0dHJpYnV0aW9uUGF0aCkgLSAxOwog
ICAgIGlmIChwYXRoLmxlbmd0aCgpID09IHByZWZpeExlbmd0aCArIHByaXZhdGVDbGlja01lYXN1
cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSkgewogICAgICAgICBh
dXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+
KHBhdGguc3Vic3RyaW5nKHByZWZpeExlbmd0aCwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRy
aWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplKSk7CiAgICAgICAgIGlmICghYXR0cmli
dXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCB8fCAqYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA+
IEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVudHJvcHkpCi0gICAgICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQobWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENv
bnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEgY291
bGQgbm90IGJlIHBhcnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBv
ZiAiX3MsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVudHJvcHksICIuIl9zKSk7CisgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQobWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRo
ZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90IGJlIHBhcnNlZCBvciB3YXMgaGlnaGVyIHRoYW4g
dGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3MsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVu
dHJvcHksICIuIl9zKSk7CiAKICAgICAgICAgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kYXRhID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4oKmF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQpOwogICAg
ICAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnByaW9yaXR5ID0gMDsKQEAgLTE2MSwxOCArMjI2
LDE4IEBAIEV4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlja01lCiAgICAgaWYgKHBhdGgubGVuZ3RoKCkgPT0g
cHJlZml4TGVuZ3RoICsgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJE
YXRhUGF0aFNlZ21lbnRTaXplICsgMSArIHByaXZhdGVDbGlja01lYXN1cmVtZW50UHJpb3JpdHlQ
YXRoU2VnbWVudFNpemUpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUlu
dDY0ID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90PihwYXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGgs
IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50
U2l6ZSkpOwogICAgICAgICBpZiAoIWF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgfHwgKmF0
dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgPiBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhF
bnRyb3B5KQotICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG1ha2VTdHJpbmcoIltQ
cml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVj
YXVzZSB0aGUgY29udmVyc2lvbiBkYXRhIGNvdWxkIG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hl
ciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gb2YgIl9zLCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
OjpNYXhFbnRyb3B5LCAiLiJfcykpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50
IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgY29udmVyc2lvbiBkYXRhIGNvdWxkIG5vdCBi
ZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gb2YgIl9zLCBB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5LCAiLiJfcykpOwogCiAgICAgICAgIGF1
dG8gYXR0cmlidXRpb25Qcmlvcml0eVVJbnQ2NCA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocGF0
aC5zdWJzdHJpbmcocHJlZml4TGVuZ3RoICsgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplICsgMSwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRQcmlvcml0eVBhdGhTZWdtZW50U2l6ZSkpOwogICAgICAgICBpZiAoIWF0dHJpYnV0aW9uUHJp
b3JpdHlVSW50NjQgfHwgKmF0dHJpYnV0aW9uUHJpb3JpdHlVSW50NjQgPiBQcmlvcml0eTo6TWF4
RW50cm9weSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJb
UHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJl
Y2F1c2UgdGhlIHByaW9yaXR5IGNvdWxkIG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFu
IHRoZSBhbGxvd2VkIG1heGltdW0gb2YgIl9zLCBQcmlvcml0eTo6TWF4RW50cm9weSwgIi4iX3Mp
KTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJbUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJl
Y2F1c2UgdGhlIHByaW9yaXR5IGNvdWxkIG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFu
IHRoZSBhbGxvd2VkIG1heGltdW0gb2YgIl9zLCBQcmlvcml0eTo6TWF4RW50cm9weSwgIi4iX3Mp
KTsKIAogICAgICAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmRhdGEgPSBzdGF0aWNfY2FzdDx1
aW50OF90PigqYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCk7CiAgICAgICAgIGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGEucHJpb3JpdHkgPSBzdGF0aWNfY2FzdDx1aW50OF90PigqYXR0cmlidXRp
b25Qcmlvcml0eVVJbnQ2NCk7CiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRh
OwogICAgIH0KIAotICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwgcGF0
aCBjb250YWluZWQgdW5yZWNvZ25pemVkIHBhcnRzLiJfcyk7CisgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMg
bm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCBwYXRoIGNvbnRhaW5lZCB1bnJlY29nbml6ZWQg
cGFydHMuIl9zKTsKIH0KIAogYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aGFzUHJldmlv
dXNseUJlZW5SZXBvcnRlZCgpCkBAIC0yNjIsNDEgKzMyNyw2MSBAQCBSZWY8SlNPTjo6T2JqZWN0
PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6YXR0cmlidXRpb25SZXBvcnRKU09OKCkgY29uc3QK
ICAgICAgICAgcmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJzb3VyY2Vfc2VjcmV0X3Rva2VuX3Np
Z25hdHVyZSJfcywgbV9zb3VyY2VTZWNyZXRUb2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJMKTsKICAg
ICB9CiAKKyAgICAvLyBUaGlzIHRva2VuIGhhcyBiZWVuIGtlcHQgc2VjcmV0IHRoaXMgZmFyIGFu
ZCBjYW5ub3QgYmUgbGlua2VkIHRvIHRoZSB1bmxpbmthYmxlIHRva2VuLgorICAgIGlmIChtX2F0
dHJpYnV0aW9uVHJpZ2dlckRhdGEtPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4pIHsKKyAgICAgICAg
cmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJkZXN0aW5hdGlvbl9zZWNyZXRfdG9rZW4iX3MsIG1f
YXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+ZGVzdGluYXRpb25TZWNyZXRUb2tlbi0+dG9rZW5CYXNl
NjRVUkwpOworICAgICAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoImRlc3RpbmF0aW9uX3Nl
Y3JldF90b2tlbl9zaWduYXR1cmUiX3MsIG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+ZGVzdGlu
YXRpb25TZWNyZXRUb2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJMKTsKKyAgICB9CisKICAgICByZXR1
cm4gcmVwb3J0RGV0YWlsczsKIH0KIAogLy8gTUFSSzogLSBGcmF1ZCBQcmV2ZW50aW9uCiAKLXN0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgRXBoZW1lcmFsU291cmNlTm9uY2VSZXF1aXJlZE51bWJl
ck9mQnl0ZXMgPSAxNjsKK3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgRXBoZW1lcmFsTm9uY2VS
ZXF1aXJlZE51bWJlck9mQnl0ZXMgPSAxNjsKIAotYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsU291cmNlTm9uY2U6OmlzVmFsaWQoKSBjb25zdAorYm9vbCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6OmlzVmFsaWQoKSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBJbnZlc3RpZ2F0ZSBpZiB3ZSBjYW4gZG8gd2l0aCBhIHNpbXBsZSBsZW5ndGggY2hl
Y2sgaW5zdGVhZCBvZiBkZWNvZGluZy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxOTQ1CiAgICAgYXV0byBkaWdlc3QgPSBiYXNlNjRVUkxEZWNvZGUo
bm9uY2UpOwogICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIGRpZ2VzdC0+c2l6ZSgpID09IEVwaGVtZXJhbFNvdXJjZU5vbmNlUmVxdWlyZWROdW1iZXJP
ZkJ5dGVzOworICAgIHJldHVybiBkaWdlc3QtPnNpemUoKSA9PSBFcGhlbWVyYWxOb25jZVJlcXVp
cmVkTnVtYmVyT2ZCeXRlczsKIH0KIAotdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6c2V0
RXBoZW1lcmFsU291cmNlTm9uY2UoRXBoZW1lcmFsU291cmNlTm9uY2UmJiBub25jZSkKK3ZvaWQg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnNldEVwaGVtZXJhbFNvdXJjZU5vbmNlKEVwaGVtZXJh
bE5vbmNlJiYgbm9uY2UpCiB7CiAgICAgaWYgKCFub25jZS5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlID0gV1RGTW92ZShub25jZSk7CiB9CiAK
LVVSTCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1cmVVUkwoKSBjb25zdAor
Y29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBVUkw+IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0
b2tlblB1YmxpY0tleVVSTChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21h
aW4pCiB7Ci0gICAgaWYgKCFtX2VwaGVtZXJhbFNvdXJjZU5vbmNlIHx8ICFtX2VwaGVtZXJhbFNv
dXJjZU5vbmNlLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBVUkwoKTsKKyAgICBpZiAocmVn
aXN0cmFibGVEb21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHJldHVybiBtYWtlVmFsaWRVUkwocmVnaXN0cmFibGVEb21haW4sIHByaXZhdGVDbGlja01l
YXN1cmVtZW50VG9rZW5QdWJsaWNLZXlQYXRoKTsKK30KIAotICAgIHJldHVybiBtYWtlVmFsaWRV
UkwobV9zb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFRva2VuU2lnbmF0dXJlUGF0aCk7Citjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuUHVibGljS2V5VVJMKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdG9rZW5QdWJsaWNLZXlVUkwobV9zb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsK
IH0KIAotVVJMIFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblB1YmxpY0tleVVSTCgpIGNv
bnN0Citjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OnRva2VuU2lnbmF0dXJlVVJMKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbikKIHsKLSAgICByZXR1cm4gbWFrZVZhbGlkVVJMKG1fc291cmNlU2l0ZS5yZWdpc3Ry
YWJsZURvbWFpbiwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVBhdGgpOwor
ICAgIGlmIChyZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgcmV0dXJuIG1ha2VWYWxpZFVSTChyZWdpc3RyYWJsZURvbWFpbiwgcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVBhdGgpOworfQorCitjb25zdCBzdGQ6
Om9wdGlvbmFsPGNvbnN0IFVSTD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2lnbmF0
dXJlVVJMKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZXBoZW1lcmFsU291cmNlTm9uY2UgfHwgIW1f
ZXBoZW1lcmFsU291cmNlTm9uY2UtPmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiB0b2tlblNpZ25hdHVyZVVSTChtX3NvdXJjZVNpdGUucmVnaXN0
cmFibGVEb21haW4pOwogfQogCiBSZWY8SlNPTjo6T2JqZWN0PiBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6dG9rZW5TaWduYXR1cmVKU09OKCkgY29uc3QKQEAgLTMxNiw2ICs0MDEsMjggQEAgUmVm
PEpTT046Ok9iamVjdD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2lnbmF0dXJlSlNP
TigpIGNvbnN0CiAgICAgcmV0dXJuIHJlcG9ydERldGFpbHM7CiB9CiAKK1JlZjxKU09OOjpPYmpl
Y3Q+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjp0b2tl
blNpZ25hdHVyZUpTT04oKSBjb25zdAoreworICAgIGF1dG8gcmVwb3J0RGV0YWlscyA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgaWYgKCFlcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlIHx8
ICFlcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlLT5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBy
ZXBvcnREZXRhaWxzOworCisgICAgaWYgKCFkZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiB8fCBk
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbi0+dmFsdWVCYXNlNjRVUkwuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gcmVwb3J0RGV0YWlsczsKKworICAgIHJlcG9ydERldGFpbHMtPnNldFN0cmlu
Zygic291cmNlX2VuZ2FnZW1lbnRfdHlwZSJfcywgImNsaWNrIl9zKTsKKyAgICByZXBvcnREZXRh
aWxzLT5zZXRTdHJpbmcoImRlc3RpbmF0aW9uX25vbmNlIl9zLCBlcGhlbWVyYWxEZXN0aW5hdGlv
bk5vbmNlLT5ub25jZSk7CisgICAgLy8gVGhpcyB0b2tlbiBjYW4gbm90IGJlIGxpbmtlZCB0byB0
aGUgc2VjcmV0IHRva2VuLgorICAgIHJlcG9ydERldGFpbHMtPnNldFN0cmluZygiZGVzdGluYXRp
b25fdW5saW5rYWJsZV90b2tlbiJfcywgZGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4tPnZhbHVl
QmFzZTY0VVJMKTsKKyAgICByZXBvcnREZXRhaWxzLT5zZXRJbnRlZ2VyKCJ2ZXJzaW9uIl9zLCBw
cml2YXRlQ2xpY2tNZWFzdXJlbWVudFZlcnNpb24pOworICAgIHJldHVybiByZXBvcnREZXRhaWxz
OworfQorCitib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNWYWxp
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICEodG9rZW5CYXNlNjRVUkwuaXNFbXB0eSgpIHx8IHNp
Z25hdHVyZUJhc2U2NFVSTC5pc0VtcHR5KCkgfHwga2V5SURCYXNlNjRVUkwuaXNFbXB0eSgpKTsK
K30KKwogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6c2V0U291cmNlU2VjcmV0VG9rZW4o
U291cmNlU2VjcmV0VG9rZW4mJiB0b2tlbikKIHsKICAgICBpZiAoIXRva2VuLmlzVmFsaWQoKSkK
QEAgLTMyMyw5ICs0MzAsMTEgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6c2V0U291
cmNlU2VjcmV0VG9rZW4oU291cmNlU2VjcmV0VG9rZW4mJiB0b2tlbikKICAgICBtX3NvdXJjZVNl
Y3JldFRva2VuID0gV1RGTW92ZSh0b2tlbik7CiB9CiAKLWJvb2wgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuOjppc1ZhbGlkKCkgY29uc3QKK3ZvaWQgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OnNldERlc3RpbmF0aW9uU2VjcmV0VG9rZW4oRGVzdGluYXRpb25TZWNy
ZXRUb2tlbiYmIHRva2VuKQogewotICAgIHJldHVybiAhKHRva2VuQmFzZTY0VVJMLmlzRW1wdHko
KSB8fCBzaWduYXR1cmVCYXNlNjRVUkwuaXNFbXB0eSgpIHx8IGtleUlEQmFzZTY0VVJMLmlzRW1w
dHkoKSk7CisgICAgaWYgKCF0b2tlbi5pc1ZhbGlkKCkgfHwgIW1fYXR0cmlidXRpb25UcmlnZ2Vy
RGF0YSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+ZGVz
dGluYXRpb25TZWNyZXRUb2tlbiA9IFdURk1vdmUodG9rZW4pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC5oCmluZGV4IGZjYzNlOWJlNjE3MDA2ODRmMWM0Y2Q5ZTUzNDcwZTAxMGI3OWJjMTMuLjM4
MWY2MjdhYzYzNGM3Mjk1YjA5YTNmZTIwOTdjNDE2NmRkNzFlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCkBAIC0xNjcsMTcgKzE2Nyw2
NCBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBQcmlvcml0eVZhbHVlIHZhbHVlOwogICAg
IH07Ci0gICAgCisKKyAgICBzdHJ1Y3QgRXBoZW1lcmFsTm9uY2UgeworICAgICAgICBTdHJpbmcg
bm9uY2U7CisKKyAgICAgICAgRXBoZW1lcmFsTm9uY2UgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisK
KyAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisKKyAgICAgICAg
dGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxFcGhlbWVy
YWxOb25jZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAgc3RydWN0IFVubGlua2Fi
bGVUb2tlbiB7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIFJldGFpblB0cjxSU0FCU1NB
VG9rZW5CbGluZGVyPiBibGluZGVyOworICAgICAgICBSZXRhaW5QdHI8UlNBQlNTQVRva2VuV2Fp
dGluZ0FjdGl2YXRpb24+IHdhaXRpbmdUb2tlbjsKKyAgICAgICAgUmV0YWluUHRyPFJTQUJTU0FU
b2tlblJlYWR5PiByZWFkeVRva2VuOworI2VuZGlmCisgICAgICAgIFN0cmluZyB2YWx1ZUJhc2U2
NFVSTDsKKyAgICAgICAgCisgICAgICAgIFVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBj
b25zdDsKKyAgICB9OworCisgICAgc3RydWN0IFNvdXJjZVVubGlua2FibGVUb2tlbiA6IFVubGlu
a2FibGVUb2tlbiB7CisgICAgICAgIFNvdXJjZVVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHko
KSBjb25zdDsKKyAgICB9OworCisgICAgc3RydWN0IERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2Vu
IDogVW5saW5rYWJsZVRva2VuIHsKKyAgICAgICAgRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4g
aXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgfTsKKworICAgIHN0cnVjdCBTZWNyZXRUb2tlbiB7
CisgICAgICAgIFN0cmluZyB0b2tlbkJhc2U2NFVSTDsKKyAgICAgICAgU3RyaW5nIHNpZ25hdHVy
ZUJhc2U2NFVSTDsKKyAgICAgICAgU3RyaW5nIGtleUlEQmFzZTY0VVJMOworICAgICAgICBTZWNy
ZXRUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3Q7CisgICAgfTsKKworICAgIHN0cnVjdCBTb3VyY2VTZWNyZXRUb2tlbiA6IFNlY3JldFRva2Vu
IHsKKyAgICAgICAgU291cmNlU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAg
fTsKKworICAgIHN0cnVjdCBEZXN0aW5hdGlvblNlY3JldFRva2VuIDogU2VjcmV0VG9rZW4gewor
ICAgICAgICBXRUJDT1JFX0VYUE9SVCBEZXN0aW5hdGlvblNlY3JldFRva2VuIGlzb2xhdGVkQ29w
eSgpIGNvbnN0OworICAgIH07CisKICAgICBzdHJ1Y3QgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7
CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBNYXhFbnRyb3B5ID0gMTU7CiAKICAg
ICAgICAgZW51bSBjbGFzcyBXYXNTZW50IDogYm9vbCB7IE5vLCBZZXMgfTsKIAogICAgICAgICBB
dHRyaWJ1dGlvblRyaWdnZXJEYXRhKCkgPSBkZWZhdWx0OwotICAgICAgICBBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhKHVpbnQ4X3QgZGF0YSwgUHJpb3JpdHkgcHJpb3JpdHksIFdhc1NlbnQgd2FzU2Vu
dCA9IFdhc1NlbnQ6Ok5vKQorICAgICAgICBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKHVpbnQ4X3Qg
ZGF0YSwgUHJpb3JpdHkgcHJpb3JpdHksIFdhc1NlbnQgd2FzU2VudCA9IFdhc1NlbnQ6Ok5vLCBz
dGQ6Om9wdGlvbmFsPEVwaGVtZXJhbE5vbmNlPiBub25jZSA9IHN0ZDo6bnVsbG9wdCkKICAgICAg
ICAgICAgIDogZGF0YSB7IGRhdGEgfQogICAgICAgICAgICAgLCBwcmlvcml0eSB7IHByaW9yaXR5
LnZhbHVlIH0KICAgICAgICAgICAgICwgd2FzU2VudCB7IHdhc1NlbnQgfQorICAgICAgICAgICAg
LCBlcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlIHsgbm9uY2UgfQogICAgICAgICB7CiAgICAgICAg
IH0KIApAQCAtMTg1LDExICsyMzIsMjYgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gZGF0YSA8PSBNYXhFbnRyb3B5ICYmIHByaW9yaXR5IDw9IFByaW9yaXR5OjpNYXhF
bnRyb3B5OwogICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIHZvaWQgc2V0RGVzdGluYXRp
b25VbmxpbmthYmxlVG9rZW5WYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKQorICAgICAgICAgICAg
ICAgIGRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuID0gRGVzdGluYXRpb25VbmxpbmthYmxlVG9r
ZW4geyB9OworICAgICAgICAgICAgZGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4tPnZhbHVlQmFz
ZTY0VVJMID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBzZXREZXN0aW5hdGlvblNl
Y3JldFRva2VuKGNvbnN0IERlc3RpbmF0aW9uU2VjcmV0VG9rZW4mIHRva2VuKSB7IGRlc3RpbmF0
aW9uU2VjcmV0VG9rZW4gPSB0b2tlbjsgfQorICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPGNv
bnN0IFVSTD4gdG9rZW5QdWJsaWNLZXlVUkwoKSBjb25zdCB7IHJldHVybiBkZXN0aW5hdGlvblNp
dGUgPyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5QdWJsaWNLZXlVUkwoKmRlc3RpbmF0
aW9uU2l0ZSkgOiBVUkwoKTsgfQorICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVS
TD4gdG9rZW5TaWduYXR1cmVVUkwoKSBjb25zdCB7IHJldHVybiBkZXN0aW5hdGlvblNpdGUgPyBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1cmVVUkwoKmRlc3RpbmF0aW9uU2l0
ZSkgOiBVUkwoKTsgfQorICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SlNPTjo6T2JqZWN0PiB0
b2tlblNpZ25hdHVyZUpTT04oKSBjb25zdDsKKwogICAgICAgICB1aW50OF90IGRhdGEgeyAwIH07
CiAgICAgICAgIFByaW9yaXR5VmFsdWUgcHJpb3JpdHk7CiAgICAgICAgIFdhc1NlbnQgd2FzU2Vu
dCA9IFdhc1NlbnQ6Ok5vOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWlu
PiBzb3VyY2VSZWdpc3RyYWJsZURvbWFpbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxFcGhlbWVy
YWxOb25jZT4gZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDxEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbj4gZGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW47
CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25TZWNyZXRUb2tlbj4gZGVzdGluYXRp
b25TZWNyZXRUb2tlbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4g
ZGVzdGluYXRpb25TaXRlOwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
ZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4g
c3RhdGljIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gZGVjb2RlKERlY29k
ZXImKTsKQEAgLTMzOCw0MyArNDAwLDMwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEVwaGVtZXJh
bChBdHRyaWJ1dGlvbkVwaGVtZXJhbCBpc0VwaGVtZXJhbCkgeyBtX2lzRXBoZW1lcmFsID0gaXNF
cGhlbWVyYWw7IH0KIAogICAgIC8vIE1BUks6IC0gRnJhdWQgUHJldmVudGlvbgotICAgIFdFQkNP
UkVfRVhQT1JUIFVSTCB0b2tlblB1YmxpY0tleVVSTCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQ
T1JUIFVSTCB0b2tlblNpZ25hdHVyZVVSTCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8Y29uc3QgVVJMPiB0b2tlblB1YmxpY0tleVVSTCgpIGNvbnN0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4g
dG9rZW5QdWJsaWNLZXlVUkwoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4gdG9rZW5TaWduYXR1cmVVUkwo
KSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3Qgc3RkOjpvcHRpb25hbDxj
b25zdCBVUkw+IHRva2VuU2lnbmF0dXJlVVJMKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SlNPTjo6T2JqZWN0PiB0b2tlblNpZ25hdHVyZUpTT04o
KSBjb25zdDsKIAotICAgIHN0cnVjdCBFcGhlbWVyYWxTb3VyY2VOb25jZSB7Ci0gICAgICAgIFN0
cmluZyBub25jZTsKLQotICAgICAgICBFcGhlbWVyYWxTb3VyY2VOb25jZSBpc29sYXRlZENvcHko
KSBjb25zdDsKLQotICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmFsaWQoKSBjb25zdDsK
LQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPiBkZWNvZGUoRGVjb2RlciYpOwotICAgIH07Ci0KLSAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVwaGVtZXJhbFNvdXJjZU5vbmNlKEVwaGVtZXJhbFNv
dXJjZU5vbmNlJiYpOwotICAgIHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+IGVw
aGVtZXJhbFNvdXJjZU5vbmNlKCkgY29uc3QgeyByZXR1cm4gbV9lcGhlbWVyYWxTb3VyY2VOb25j
ZTsgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVwaGVtZXJhbFNvdXJjZU5vbmNlKEVw
aGVtZXJhbE5vbmNlJiYpOworICAgIHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsTm9uY2U+IGVwaGVt
ZXJhbFNvdXJjZU5vbmNlKCkgY29uc3QgeyByZXR1cm4gbV9lcGhlbWVyYWxTb3VyY2VOb25jZTsg
fTsKICAgICB2b2lkIGNsZWFyRXBoZW1lcmFsU291cmNlTm9uY2UoKSB7IG1fZXBoZW1lcmFsU291
cmNlTm9uY2UucmVzZXQoKTsgfTsKIAotICAgIHN0cnVjdCBTb3VyY2VTZWNyZXRUb2tlbiB7Ci0g
ICAgICAgIFN0cmluZyB0b2tlbkJhc2U2NFVSTDsKLSAgICAgICAgU3RyaW5nIHNpZ25hdHVyZUJh
c2U2NFVSTDsKLSAgICAgICAgU3RyaW5nIGtleUlEQmFzZTY0VVJMOwotCi0gICAgICAgIFNvdXJj
ZVNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgICAgICBib29sIGlzVmFsaWQo
KSBjb25zdDsKLSAgICB9OwotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2Fi
bGVUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclB1YmxpY0tleUJhc2U2NFVSTCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIEV4cGVjdGVkPERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuLCBT
dHJpbmc+IGNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKGNvbnN0
IFN0cmluZyYgc2VydmVyUHVibGljS2V5QmFzZTY0VVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6Om9wdGlvbmFsPFN0cmluZz4gY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4o
Y29uc3QgU3RyaW5nJiBzZXJ2ZXJSZXNwb25zZUJhc2U2NFVSTCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIEV4cGVjdGVkPERlc3RpbmF0aW9uU2VjcmV0VG9rZW4sIFN0cmluZz4gY2FsY3Vs
YXRlQW5kVXBkYXRlRGVzdGluYXRpb25TZWNyZXRUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclJl
c3BvbnNlQmFzZTY0VVJMLCBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiYpOwogI2VuZGlmCiAK
KyAgICBTb3VyY2VVbmxpbmthYmxlVG9rZW4mIHNvdXJjZVVubGlua2FibGVUb2tlbigpIHsgcmV0
dXJuIG1fc291cmNlVW5saW5rYWJsZVRva2VuOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VVbmxpbmth
YmxlVG9rZW5WYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1fc291cmNlVW5saW5rYWJsZVRv
a2VuLnZhbHVlQmFzZTY0VVJMID0gdmFsdWU7IH0KICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFNv
dXJjZVNlY3JldFRva2VuPiYgc291cmNlU2VjcmV0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZVNlY3JldFRva2VuOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTb3VyY2VTZWNy
ZXRUb2tlbihTb3VyY2VTZWNyZXRUb2tlbiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dERlc3RpbmF0aW9uU2VjcmV0VG9rZW4oRGVzdGluYXRpb25TZWNyZXRUb2tlbiYmKTsKKwogCiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByaXZhdGVD
bGlja01lYXN1cmVtZW50PiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtMzg1LDYgKzQzNCwxMSBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBFeHBlY3RlZDxBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBTdHJp
bmc+IHBhcnNlQXR0cmlidXRpb25SZXF1ZXN0UXVlcnkoY29uc3QgVVJMJik7CiAgICAgYm9vbCBp
c1ZhbGlkKCkgY29uc3Q7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGNhbGN1bGF0ZUFuZFVwZGF0ZVVubGlua2FibGVUb2tlbihjb25zdCBT
dHJpbmcmIHNlcnZlclB1YmxpY0tleUJhc2U2NFVSTCwgVW5saW5rYWJsZVRva2VuJiwgY29uc3Qg
U3RyaW5nJiBjb250ZXh0Rm9yTG9nTWVzc2FnZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBjYWxjdWxhdGVBbmRVcGRhdGVTZWNyZXRUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZl
clJlc3BvbnNlQmFzZTY0VVJMLCBVbmxpbmthYmxlVG9rZW4mLCBTZWNyZXRUb2tlbiYsIGNvbnN0
IFN0cmluZyYgY29udGV4dEZvckxvZ01lc3NhZ2UpOworI2VuZGlmCisKICAgICBTb3VyY2VJRCBt
X3NvdXJjZUlEOwogICAgIFNvdXJjZVNpdGUgbV9zb3VyY2VTaXRlOwogICAgIEF0dHJpYnV0aW9u
RGVzdGluYXRpb25TaXRlIG1fZGVzdGluYXRpb25TaXRlOwpAQCAtMzk0LDE4ICs0NDgsNyBAQCBw
cml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gbV9hdHRy
aWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIEF0dHJpYnV0aW9uVGltZVRvU2VuZERhdGEgbV90aW1l
c1RvU2VuZDsKIAotICAgIHN0cnVjdCBTb3VyY2VVbmxpbmthYmxlVG9rZW4gewotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgICAgICBSZXRhaW5QdHI8UlNBQlNTQVRva2VuQmxpbmRlcj4gYmxpbmRl
cjsKLSAgICAgICAgUmV0YWluUHRyPFJTQUJTU0FUb2tlbldhaXRpbmdBY3RpdmF0aW9uPiB3YWl0
aW5nVG9rZW47Ci0gICAgICAgIFJldGFpblB0cjxSU0FCU1NBVG9rZW5SZWFkeT4gcmVhZHlUb2tl
bjsKLSNlbmRpZgotICAgICAgICBTdHJpbmcgdmFsdWVCYXNlNjRVUkw7Ci0KLSAgICAgICAgU291
cmNlVW5saW5rYWJsZVRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgIH07Ci0KLSAgICBz
dGQ6Om9wdGlvbmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPiBtX2VwaGVtZXJhbFNvdXJjZU5vbmNl
OworICAgIHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsTm9uY2U+IG1fZXBoZW1lcmFsU291cmNlTm9u
Y2U7CiAgICAgU291cmNlVW5saW5rYWJsZVRva2VuIG1fc291cmNlVW5saW5rYWJsZVRva2VuOwog
ICAgIHN0ZDo6b3B0aW9uYWw8U291cmNlU2VjcmV0VG9rZW4+IG1fc291cmNlU2VjcmV0VG9rZW47
CiAgICAgU3RyaW5nIG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJRDsKQEAgLTQ0OCw3ICs0OTEs
NyBAQCBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6ZGVjb2RlKERlY29kZXImCiAgICAgaWYgKCF0aW1lT2ZBZENsaWNrKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlv
bmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPj4gZXBoZW1lcmFsU291cmNlTm9uY2U7CisgICAgc3Rk
OjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPEVwaGVtZXJhbE5vbmNlPj4gZXBoZW1lcmFsU291cmNl
Tm9uY2U7CiAgICAgZGVjb2RlciA+PiBlcGhlbWVyYWxTb3VyY2VOb25jZTsKICAgICBpZiAoIWVw
aGVtZXJhbFNvdXJjZU5vbmNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDg5
LDI2ICs1MzIsMjYgQEAgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmRlY29kZShEZWNvZGVyJgogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgotdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNl
Tm9uY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAordm9pZCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewogICAgIGVuY29kZXIgPDwgbm9uY2U7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
Ci1zdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VO
b25jZT4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkVwaGVtZXJhbE5vbmNlPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9u
Y2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBub25jZTsKICAgICBkZWNvZGVyID4+IG5vbmNlOwogICAgIGlmICghbm9uY2UpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIEVwaGVtZXJhbFNvdXJjZU5v
bmNlIHsgV1RGTW92ZSgqbm9uY2UpIH07CisgICAgcmV0dXJuIEVwaGVtZXJhbE5vbmNlIHsgV1RG
TW92ZSgqbm9uY2UpIH07CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGRhdGEgPDwgcHJpb3JpdHkgPDwg
d2FzU2VudCA8PCBzb3VyY2VSZWdpc3RyYWJsZURvbWFpbjsKKyAgICBlbmNvZGVyIDw8IGRhdGEg
PDwgcHJpb3JpdHkgPDwgd2FzU2VudCA8PCBzb3VyY2VSZWdpc3RyYWJsZURvbWFpbiA8PCBlcGhl
bWVyYWxEZXN0aW5hdGlvbk5vbmNlIDw8IGRlc3RpbmF0aW9uU2l0ZTsKIH0KIAogdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KQEAgLTUzMyw5ICs1NzYsMjEgQEAgc3RkOjpvcHRpb25hbDxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gUHJpdmF0ZUNsaWNrTWVh
c3UKICAgICBkZWNvZGVyID4+IHNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluOwogICAgIGlmICghc291
cmNlUmVnaXN0cmFibGVEb21haW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAg
CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsTm9uY2U+PiBlcGhl
bWVyYWxEZXN0aW5hdGlvbk5vbmNlOworICAgIGRlY29kZXIgPj4gZXBoZW1lcmFsRGVzdGluYXRp
b25Ob25jZTsKKyAgICBpZiAoIWVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2UpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8UmVn
aXN0cmFibGVEb21haW4+PiBkZXN0aW5hdGlvblNpdGU7CisgICAgZGVjb2RlciA+PiBkZXN0aW5h
dGlvblNpdGU7CisgICAgaWYgKCFkZXN0aW5hdGlvblNpdGUpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKICAgICBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEgeyBXVEZNb3ZlKCpkYXRhKSwgUHJpb3JpdHkgeyAqcHJpb3JpdHkgfSwgKndhc1NlbnQg
fTsKICAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluID0g
V1RGTW92ZSgqc291cmNlUmVnaXN0cmFibGVEb21haW4pOworICAgIGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEuZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZSA9IFdURk1vdmUoKmVwaGVtZXJhbERlc3Rp
bmF0aW9uTm9uY2UpOworICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGVzdGluYXRpb25TaXRl
ID0gV1RGTW92ZSgqZGVzdGluYXRpb25TaXRlKTsKICAgICByZXR1cm4gYXR0cmlidXRpb25Ucmln
Z2VyRGF0YTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1By
aXZhdGVDbGlja01lYXN1cmVtZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQppbmRleCAyM2Q4N2MyN2FhMWI1YTFk
M2IwNjBkOTg2MThiZTg3NjUxZmE3ODkzLi5iZjdlZDhhMmE0YzNmMzc5NTFmYzFkZmUzMDdlZjcw
M2M5NWQ3MmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29j
b2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQpAQCAtMzEsNjYgKzMxLDEwMiBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2FibGVUb2tlbihjb25z
dCBTdHJpbmcmIHNlcnZlclB1YmxpY0tleUJhc2U2NFVSTCkKK3sKKyAgICByZXR1cm4gY2FsY3Vs
YXRlQW5kVXBkYXRlVW5saW5rYWJsZVRva2VuKHNlcnZlclB1YmxpY0tleUJhc2U2NFVSTCwgbV9z
b3VyY2VVbmxpbmthYmxlVG9rZW4sICJzb3VyY2UiX3MpOworfQorCitFeHBlY3RlZDxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4sIFN0cmluZz4gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uVW5saW5r
YWJsZVRva2VuKGNvbnN0IFN0cmluZyYgc2VydmVyUHVibGljS2V5QmFzZTY0VVJMKQoreworICAg
IERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuIGRlc3RpbmF0aW9uVG9rZW47CisgICAgYXV0byBl
cnJvck1lc3NhZ2UgPSBjYWxjdWxhdGVBbmRVcGRhdGVVbmxpbmthYmxlVG9rZW4oc2VydmVyUHVi
bGljS2V5QmFzZTY0VVJMLCBkZXN0aW5hdGlvblRva2VuLCAiZGVzdGluYXRpb24iX3MpOworICAg
IGlmIChlcnJvck1lc3NhZ2UpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgqZXJyb3JN
ZXNzYWdlKTsKKyAgICByZXR1cm4gZGVzdGluYXRpb25Ub2tlbjsKK30KKworc3RkOjpvcHRpb25h
bDxTdHJpbmc+IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRhdGVVbmxp
bmthYmxlVG9rZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwsIFVubGlu
a2FibGVUb2tlbiYgdW5saW5rYWJsZVRva2VuLCBjb25zdCBTdHJpbmcmIGNvbnRleHRGb3JMb2dN
ZXNzYWdlKQogewogI2lmIEhBVkUoUlNBX0JTU0EpCiAgICAgewogICAgICAgICBhdXRvIHNlcnZl
clB1YmxpY0tleURhdGEgPSBiYXNlNjRVUkxEZWNvZGUoc2VydmVyUHVibGljS2V5QmFzZTY0VVJM
KTsKICAgICAgICAgaWYgKCFzZXJ2ZXJQdWJsaWNLZXlEYXRhKQotICAgICAgICAgICAgcmV0dXJu
ICJDb3VsZCBub3QgZGVjb2RlIHRoZSBzb3VyY2UncyBwdWJsaWMga2V5IGRhdGEuIl9zOworICAg
ICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBkZWNvZGUgdGhlICIsIGNvbnRl
eHRGb3JMb2dNZXNzYWdlLCAiJ3MgcHVibGljIGtleSBkYXRhLiIpOwogICAgICAgICBhdXRvIHNl
cnZlclB1YmxpY0tleSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6c2Vy
dmVyUHVibGljS2V5RGF0YS0+ZGF0YSgpIGxlbmd0aDpzZXJ2ZXJQdWJsaWNLZXlEYXRhLT5zaXpl
KCldKTsKIAogICAgICAgICBOU0Vycm9yKiBuc0Vycm9yID0gMDsKLSAgICAgICAgbV9zb3VyY2VV
bmxpbmthYmxlVG9rZW4uYmxpbmRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NSU0FCU1NBVG9rZW5C
bGluZGVySW5zdGFuY2UoKSBpbml0V2l0aFB1YmxpY0tleTpzZXJ2ZXJQdWJsaWNLZXkuZ2V0KCkg
ZXJyb3I6Jm5zRXJyb3JdKTsKKyAgICAgICAgdW5saW5rYWJsZVRva2VuLmJsaW5kZXIgPSBhZG9w
dE5TKFtQQUw6OmFsbG9jUlNBQlNTQVRva2VuQmxpbmRlckluc3RhbmNlKCkgaW5pdFdpdGhQdWJs
aWNLZXk6c2VydmVyUHVibGljS2V5LmdldCgpIGVycm9yOiZuc0Vycm9yXSk7CiAgICAgICAgIGlm
IChuc0Vycm9yKQogICAgICAgICAgICAgcmV0dXJuIG5zRXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b247Ci0gICAgICAgIGlmICghbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4uYmxpbmRlcikKLSAgICAg
ICAgICAgIHJldHVybiAiRGlkIG5vdCBnZXQgYSBzb3VyY2UgdW5saW5rYWJsZSB0b2tlbiBibGlu
ZGVyLiJfczsKKyAgICAgICAgaWYgKCF1bmxpbmthYmxlVG9rZW4uYmxpbmRlcikKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJEaWQgbm90IGdldCBhICIsIGNvbnRleHRGb3JMb2dNZXNz
YWdlLCAiIHVubGlua2FibGUgdG9rZW4gYmxpbmRlci4iKTsKICAgICB9CiAKICAgICBOU0Vycm9y
KiBuc0Vycm9yID0gMDsKLSAgICBtX3NvdXJjZVVubGlua2FibGVUb2tlbi53YWl0aW5nVG9rZW4g
PSBbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4uYmxpbmRlciB0b2tlbldhaXRpbmdBY3RpdmF0aW9u
V2l0aENvbnRlbnQ6bnVsbHB0ciBlcnJvcjombnNFcnJvcl07CisgICAgdW5saW5rYWJsZVRva2Vu
LndhaXRpbmdUb2tlbiA9IFt1bmxpbmthYmxlVG9rZW4uYmxpbmRlciB0b2tlbldhaXRpbmdBY3Rp
dmF0aW9uV2l0aENvbnRlbnQ6bnVsbHB0ciBlcnJvcjombnNFcnJvcl07CiAgICAgaWYgKG5zRXJy
b3IpCiAgICAgICAgIHJldHVybiBuc0Vycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uOwotICAgIGlm
ICghbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuKQotICAgICAgICByZXR1cm4g
IkRpZCBub3QgZ2V0IGEgc291cmNlIHVubGlua2FibGUgdG9rZW4gd2FpdGluZyB0b2tlbi4iX3M7
CisgICAgaWYgKCF1bmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuKQorICAgICAgICByZXR1cm4g
bWFrZVN0cmluZygiRGlkIG5vdCBnZXQgYSAiLCBjb250ZXh0Rm9yTG9nTWVzc2FnZSwgIiB1bmxp
bmthYmxlIHRva2VuIHdhaXRpbmcgdG9rZW4uIik7CiAKLSAgICBtX3NvdXJjZVVubGlua2FibGVU
b2tlbi52YWx1ZUJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFttX3NvdXJjZVVu
bGlua2FibGVUb2tlbi53YWl0aW5nVG9rZW4gYmxpbmRlZE1lc3NhZ2VdLmJ5dGVzLCBbbV9zb3Vy
Y2VVbmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuIGJsaW5kZWRNZXNzYWdlXS5sZW5ndGgpOwor
ICAgIHVubGlua2FibGVUb2tlbi52YWx1ZUJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKFt1bmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuIGJsaW5kZWRNZXNzYWdlXS5ieXRlcywg
W3VubGlua2FibGVUb2tlbi53YWl0aW5nVG9rZW4gYmxpbmRlZE1lc3NhZ2VdLmxlbmd0aCk7CiAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlcnZlclB1
YmxpY0tleUJhc2U2NFVSTCk7CisgICAgVU5VU0VEX1BBUkFNKHVubGlua2FibGVUb2tlbik7Cisg
ICAgVU5VU0VEX1BBUkFNKGNvbnRleHRGb3JMb2dNZXNzYWdlKTsKICAgICByZXR1cm4gIlVubGlu
a2FibGUgdG9rZW5zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGxhdGZvcm0uIl9zOwogI2Vu
ZGlmIC8vIEhBVkUoUlNBX0JTU0EpCiB9CiAKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4oY29u
c3QgU3RyaW5nJiBzZXJ2ZXJSZXNwb25zZUJhc2U2NFVSTCkKK3sKKyAgICBTb3VyY2VTZWNyZXRU
b2tlbiBzZWNyZXRUb2tlbjsKKyAgICBpZiAoYXV0byBlcnJvck1lc3NhZ2UgPSBjYWxjdWxhdGVB
bmRVcGRhdGVTZWNyZXRUb2tlbihzZXJ2ZXJSZXNwb25zZUJhc2U2NFVSTCwgbV9zb3VyY2VVbmxp
bmthYmxlVG9rZW4sIHNlY3JldFRva2VuLCAic291cmNlIl9zKSkKKyAgICAgICAgcmV0dXJuIGVy
cm9yTWVzc2FnZTsKKyAgICAKKyAgICBtX3NvdXJjZVNlY3JldFRva2VuID0gV1RGTW92ZShzZWNy
ZXRUb2tlbik7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworRXhwZWN0ZWQ8UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW4sIFN0cmluZz4gUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uU2VjcmV0VG9r
ZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJSZXNwb25zZUJhc2U2NFVSTCwgRGVzdGluYXRpb25Vbmxp
bmthYmxlVG9rZW4mIHVubGlua2FibGVUb2tlbikKK3sKKyAgICBEZXN0aW5hdGlvblNlY3JldFRv
a2VuIHNlY3JldFRva2VuOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gY2FsY3VsYXRlQW5kVXBk
YXRlU2VjcmV0VG9rZW4oc2VydmVyUmVzcG9uc2VCYXNlNjRVUkwsIHVubGlua2FibGVUb2tlbiwg
c2VjcmV0VG9rZW4sICJzb3VyY2UiX3MpOworICAgIGlmIChlcnJvck1lc3NhZ2UpCisgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgqZXJyb3JNZXNzYWdlKTsKKyAgICByZXR1cm4gc2VjcmV0
VG9rZW47Cit9CisKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6Y2FsY3VsYXRlQW5kVXBkYXRlU2VjcmV0VG9rZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJSZXNw
b25zZUJhc2U2NFVSTCwgVW5saW5rYWJsZVRva2VuJiB1bmxpbmthYmxlVG9rZW4sIFNlY3JldFRv
a2VuJiBzZWNyZXRUb2tlbiwgY29uc3QgU3RyaW5nJiBjb250ZXh0Rm9yTG9nTWVzc2FnZSkKIHsK
ICNpZiBIQVZFKFJTQV9CU1NBKQotICAgIGlmICghbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ud2Fp
dGluZ1Rva2VuKQotICAgICAgICByZXR1cm4gIkRpZCBub3QgZmluZCBhIHNvdXJjZSB1bmxpbmth
YmxlIHRva2VuIHdhaXRpbmcgdG9rZW4uIl9zOworICAgIGlmICghdW5saW5rYWJsZVRva2VuLndh
aXRpbmdUb2tlbikKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkRpZCBub3QgZmluZCBhICIs
IGNvbnRleHRGb3JMb2dNZXNzYWdlLCAiIHVubGlua2FibGUgdG9rZW4gd2FpdGluZyB0b2tlbi4i
KTsKIAogICAgIHsKICAgICAgICAgYXV0byBzZXJ2ZXJSZXNwb25zZURhdGEgPSBiYXNlNjRVUkxE
ZWNvZGUoc2VydmVyUmVzcG9uc2VCYXNlNjRVUkwpOwogICAgICAgICBpZiAoIXNlcnZlclJlc3Bv
bnNlRGF0YSkKLSAgICAgICAgICAgIHJldHVybiAiQ291bGQgbm90IGRlY29kZSBzb3VyY2UgcmVz
cG9uc2UgZGF0YS4iX3M7CisgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiQ291bGQgbm90
IGRlY29kZSAiLCBjb250ZXh0Rm9yTG9nTWVzc2FnZSwgIiByZXNwb25zZSBkYXRhLiIpOwogICAg
ICAgICBhdXRvIHNlcnZlclJlc3BvbnNlID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdp
dGhCeXRlczpzZXJ2ZXJSZXNwb25zZURhdGEtPmRhdGEoKSBsZW5ndGg6c2VydmVyUmVzcG9uc2VE
YXRhLT5zaXplKCldKTsKIAogICAgICAgICBOU0Vycm9yKiBuc0Vycm9yID0gMDsKLSAgICAgICAg
bV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiA9IFttX3NvdXJjZVVubGlua2FibGVU
b2tlbi53YWl0aW5nVG9rZW4gYWN0aXZhdGVUb2tlbldpdGhTZXJ2ZXJSZXNwb25zZTpzZXJ2ZXJS
ZXNwb25zZS5nZXQoKSBlcnJvcjombnNFcnJvcl07CisgICAgICAgIHVubGlua2FibGVUb2tlbi5y
ZWFkeVRva2VuID0gW3VubGlua2FibGVUb2tlbi53YWl0aW5nVG9rZW4gYWN0aXZhdGVUb2tlbldp
dGhTZXJ2ZXJSZXNwb25zZTpzZXJ2ZXJSZXNwb25zZS5nZXQoKSBlcnJvcjombnNFcnJvcl07CiAg
ICAgICAgIGlmIChuc0Vycm9yKQogICAgICAgICAgICAgcmV0dXJuIG5zRXJyb3IubG9jYWxpemVk
RGVzY3JpcHRpb247Ci0gICAgICAgIGlmICghbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ucmVhZHlU
b2tlbikKLSAgICAgICAgICAgIHJldHVybiAiRGlkIG5vdCBnZXQgYSBzb3VyY2UgdW5saW5rYWJs
ZSB0b2tlbiByZWFkeSB0b2tlbi4iX3M7CisgICAgICAgIGlmICghdW5saW5rYWJsZVRva2VuLnJl
YWR5VG9rZW4pCisgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiRGlkIG5vdCBnZXQgYSAi
LCBjb250ZXh0Rm9yTG9nTWVzc2FnZSwgIiB1bmxpbmthYmxlIHRva2VuIHJlYWR5IHRva2VuLiIp
OwogICAgIH0KIAotICAgIFNvdXJjZVNlY3JldFRva2VuIHRva2VuOwotICAgIHRva2VuLnRva2Vu
QmFzZTY0VVJMID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoW21fc291cmNlVW5saW5rYWJsZVRv
a2VuLnJlYWR5VG9rZW4gdG9rZW5Db250ZW50XS5ieXRlcywgW21fc291cmNlVW5saW5rYWJsZVRv
a2VuLnJlYWR5VG9rZW4gdG9rZW5Db250ZW50XS5sZW5ndGgpOwotICAgIHRva2VuLmtleUlEQmFz
ZTY0VVJMID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoW21fc291cmNlVW5saW5rYWJsZVRva2Vu
LnJlYWR5VG9rZW4ga2V5SWRdLmJ5dGVzLCBbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ucmVhZHlU
b2tlbiBrZXlJZF0ubGVuZ3RoKTsKLSAgICB0b2tlbi5zaWduYXR1cmVCYXNlNjRVUkwgPSBiYXNl
NjRVUkxFbmNvZGVUb1N0cmluZyhbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiBz
aWduYXR1cmVdLmJ5dGVzLCBbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiBzaWdu
YXR1cmVdLmxlbmd0aCk7CisgICAgc2VjcmV0VG9rZW4udG9rZW5CYXNlNjRVUkwgPSBiYXNlNjRV
UkxFbmNvZGVUb1N0cmluZyhbdW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4gdG9rZW5Db250ZW50
XS5ieXRlcywgW3VubGlua2FibGVUb2tlbi5yZWFkeVRva2VuIHRva2VuQ29udGVudF0ubGVuZ3Ro
KTsKKyAgICBzZWNyZXRUb2tlbi5rZXlJREJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29kZVRvU3Ry
aW5nKFt1bmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiBrZXlJZF0uYnl0ZXMsIFt1bmxpbmthYmxl
VG9rZW4ucmVhZHlUb2tlbiBrZXlJZF0ubGVuZ3RoKTsKKyAgICBzZWNyZXRUb2tlbi5zaWduYXR1
cmVCYXNlNjRVUkwgPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhbdW5saW5rYWJsZVRva2VuLnJl
YWR5VG9rZW4gc2lnbmF0dXJlXS5ieXRlcywgW3VubGlua2FibGVUb2tlbi5yZWFkeVRva2VuIHNp
Z25hdHVyZV0ubGVuZ3RoKTsKIAotICAgIG1fc291cmNlU2VjcmV0VG9rZW4gPSBXVEZNb3ZlKHRv
a2VuKTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
c2VydmVyUmVzcG9uc2VCYXNlNjRVUkwpOworICAgIFVOVVNFRF9QQVJBTSh1bmxpbmthYmxlVG9r
ZW4pOworICAgIFVOVVNFRF9QQVJBTShzZWNyZXRUb2tlbik7CisgICAgVU5VU0VEX1BBUkFNKGNv
bnRleHRGb3JMb2dNZXNzYWdlKTsKICAgICByZXR1cm4gIlVubGlua2FibGUgdG9rZW5zIGFyZSBu
b3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGxhdGZvcm0uIl9zOwogI2VuZGlmIC8vIEhBVkUoUlNBX0JT
U0EpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNl
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGls
aXRpZXMuY3BwCmluZGV4IDE0ODZkNTIyOTZmNjc1MWYzMTBjNzk4MTY2YmY3ZWRiZWQyYWI0MzIu
LjZlMzAyNTcxNzgwNTVmNzEwMGRhNTJkYjkwY2I0YmExMGUxYmVjYzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCkBAIC0xNjAs
MTUgKzE2MCwyNiBAQCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBEYXRhYmFzZVV0
aWxpdGllczo6YnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudAogCiAgICAgV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OlNvdXJjZUlEKHNvdXJjZUlEKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OlNvdXJjZVNpdGUoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZyhzb3VyY2VTaXRlRG9tYWluKSksIFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZShX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxl
RG9tYWluU3RyaW5nKGRlc3RpbmF0aW9uU2l0ZURvbWFpbikpLCBidW5kbGVJRCwgV2FsbFRpbWU6
OmZyb21SYXdTZWNvbmRzKHRpbWVPZkFkQ2xpY2spLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25FcGhlbWVyYWw6Ok5vKTsKIAorICAgIC8vIFRoZXNlIGluZGlj
ZXMgYXJlIHplcm8tYmFzZWQ6IGh0dHBzOi8vd3d3LnNxbGl0ZS5vcmcvYzNyZWYvY29sdW1uX2Js
b2IuaHRtbCAiVGhlIGxlZnRtb3N0IGNvbHVtbiBvZiB0aGUgcmVzdWx0IHNldCBoYXMgdGhlIGlu
ZGV4IDAiLgogICAgIGlmIChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGU6OkF0dHJpYnV0ZWQpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhID0gc3RhdGVtZW50LmNvbHVtbkludCgzKTsKICAgICAgICAgYXV0byBwcmlv
cml0eSA9IHN0YXRlbWVudC5jb2x1bW5JbnQoNCk7CiAgICAgICAgIGF1dG8gc291cmNlRWFybGll
c3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQuY29sdW1uRG91YmxlKDYpOwogICAgICAgICBh
dXRvIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQuY29sdW1u
RG91YmxlKDEwKTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvblRva2VuID0gc3RhdGVtZW50LmNv
bHVtblRleHQoMTIpOworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uU2lnbmF0dXJlID0gc3RhdGVt
ZW50LmNvbHVtblRleHQoMTMpOworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uS2V5SUQgPSBzdGF0
ZW1lbnQuY29sdW1uVGV4dCgxNCk7CiAKICAgICAgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEgIT0gLTEpCiAgICAgICAgICAgICBhdHRyaWJ1dGlvbi5zZXRBdHRyaWJ1dGlvbihXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7IHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6UHJpb3JpdHkocHJpb3JpdHkpIH0pOwogCisgICAgICAgIFdlYkNv
cmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuIGRlc3Rp
bmF0aW9uU2VjcmV0VG9rZW47CisgICAgICAgIGRlc3RpbmF0aW9uU2VjcmV0VG9rZW4udG9rZW5C
YXNlNjRVUkwgPSBkZXN0aW5hdGlvblRva2VuOworICAgICAgICBkZXN0aW5hdGlvblNlY3JldFRv
a2VuLnNpZ25hdHVyZUJhc2U2NFVSTCA9IGRlc3RpbmF0aW9uU2lnbmF0dXJlOworICAgICAgICBk
ZXN0aW5hdGlvblNlY3JldFRva2VuLmtleUlEQmFzZTY0VVJMID0gZGVzdGluYXRpb25LZXlJRDsK
KworICAgICAgICBhdHRyaWJ1dGlvbi5zZXREZXN0aW5hdGlvblNlY3JldFRva2VuKFdURk1vdmUo
ZGVzdGluYXRpb25TZWNyZXRUb2tlbikpOworCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRp
bWU+IHNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxs
VGltZT4gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ7CiAKQEAgLTE4Miw3ICsxOTMsMTIg
QEAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgRGF0YWJhc2VVdGlsaXRpZXM6OmJ1
aWxkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQKICAgICAgICAgYXR0cmlidXRpb24uc2V0VGltZXNU
b1NlbmQoeyBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1l
VG9TZW5kIH0pOwogICAgIH0KIAotICAgIGF0dHJpYnV0aW9uLnNldFNvdXJjZVNlY3JldFRva2Vu
KHsgdG9rZW4sIHNpZ25hdHVyZSwga2V5SUQgfSk7CisgICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlNvdXJjZVNlY3JldFRva2VuIHNvdXJjZVNlY3JldFRva2VuOworICAgIHNv
dXJjZVNlY3JldFRva2VuLnRva2VuQmFzZTY0VVJMID0gdG9rZW47CisgICAgc291cmNlU2VjcmV0
VG9rZW4uc2lnbmF0dXJlQmFzZTY0VVJMID0gc2lnbmF0dXJlOworICAgIHNvdXJjZVNlY3JldFRv
a2VuLmtleUlEQmFzZTY0VVJMID0ga2V5SUQ7CisKKyAgICBhdHRyaWJ1dGlvbi5zZXRTb3VyY2VT
ZWNyZXRUb2tlbihXVEZNb3ZlKHNvdXJjZVNlY3JldFRva2VuKSk7CiAKICAgICByZXR1cm4gYXR0
cmlidXRpb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFi
ZDg0MTg0YzYzMzZjOC4uZTUwY2Y0YWJiZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2OWM1NGIwOWQ3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZGVyLmNwcApAQCAtMTAwNiw5ICsxMDA2LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsCiAKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0
aW9uVHJpZ2dlckRhdGE7CiAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QudXJsKCkpKQorICAgICAg
ICBpZiAoYXV0byByZXN1bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFy
c2VBdHRyaWJ1dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICAg
ICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gcmVzdWx0
LnZhbHVlKCk7Ci0gICAgICAgIGVsc2UgaWYgKCFyZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBpZiAocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJE
YXRhKQorICAgICAgICAgICAgICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25U
cmlnZ2VyRGF0YS0+ZGVzdGluYXRpb25TaXRlID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
eyByZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCkgfTsKKyAgICAgICAgfSBlbHNlIGlmICgh
cmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIHJlc3VsdC5lcnJvcigpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnREYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCmluZGV4
IGJjYTdmNTE5MzRjOGY2MzIyMzBiMjcxNDExOWJiMmU2NzNjZmE1ZjkuLjBjYWE4NzEyOWQ0ODg5
Y2ZlNTU5ZDQ4NmU3Y2ZiNGRiYmU5NzExMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnREYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcApAQCAt
NDAsNyArNDAsNyBAQCBjb25zdGV4cHIgYXV0byBzZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEFzRXhwaXJlZFF1ZXJ5ID0gIlVQREFURSBVbgogY29uc3RleHByIGF1dG8gaW5z
ZXJ0VW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1Ig
UkVQTEFDRSBJTlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VT
aXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCiAgICAgInNvdXJjZUlELCB0
aW1lT2ZBZENsaWNrLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgc291cmNlQXBwbGljYXRpb25C
dW5kbGVJRCkgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfczsKIGNvbnN0ZXhwciBh
dXRvIGluc2VydEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIklOU0VS
VCBPUiBSRVBMQUNFIElOVE8gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IChzb3Vy
Y2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCi0gICAgInNvdXJjZUlE
LCBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBwcmlvcml0eSwgdGltZU9mQWRDbGljaywgZWFybGll
c3RUaW1lVG9TZW5kVG9Tb3VyY2UsIHRva2VuLCBzaWduYXR1cmUsIGtleUlELCBlYXJsaWVzdFRp
bWVUb1NlbmRUb0Rlc3RpbmF0aW9uLCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEKSBWQUxVRVMg
KD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zOworICAgICJzb3VyY2VJRCwg
YXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgcHJpb3JpdHksIHRpbWVPZkFkQ2xpY2ssIGVhcmxpZXN0
VGltZVRvU2VuZFRvU291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1l
VG9TZW5kVG9EZXN0aW5hdGlvbiwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCwgZGVzdGluYXRp
b25Ub2tlbiwgZGVzdGluYXRpb25TaWduYXR1cmUsIGRlc3RpbmF0aW9uS2V5SUQpIFZBTFVFUyAo
PywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3M7CiBjb25zdGV4
cHIgYXV0byBmaW5kVW5hdHRyaWJ1dGVkUXVlcnkgPSAiU0VMRUNUICogRlJPTSBVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFO
RCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8gQU5EIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxl
SUQgPSA/Il9zOwogY29uc3RleHByIGF1dG8gZmluZEF0dHJpYnV0ZWRRdWVyeSA9ICJTRUxFQ1Qg
KiBGUk9NIEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRl
RG9tYWluSUQgPSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8gQU5EIHNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSUQgPSA/Il9zOwogY29uc3RleHByIGF1dG8gcmVtb3ZlVW5hdHRyaWJ1
dGVkUXVlcnkgPSAiREVMRVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQgV0hFUkUgc291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWlu
SUQgPSA/IEFORCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEID0gPyJfczsKQEAgLTY0LDYgKzY0
LDcgQEAgY29uc3RleHByIGF1dG8gY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50ID0gIkNSRUFURSBUQUJMRSBBdHRyaWJ1dGUKICAgICAic291cmNlU2l0ZURvbWFpbklEIElO
VEVHRVIgTk9UIE5VTEwsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEws
IHNvdXJjZUlEIElOVEVHRVIgTk9UIE5VTEwsICIKICAgICAiYXR0cmlidXRpb25UcmlnZ2VyRGF0
YSBJTlRFR0VSIE5PVCBOVUxMLCBwcmlvcml0eSBJTlRFR0VSIE5PVCBOVUxMLCB0aW1lT2ZBZENs
aWNrIFJFQUwgTk9UIE5VTEwsICIKICAgICAiZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgUkVB
TCwgdG9rZW4gVEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIGVhcmxpZXN0VGltZVRv
U2VuZFRvRGVzdGluYXRpb24gUkVBTCwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCBURVhULCAi
CisgICAgImRlc3RpbmF0aW9uVG9rZW4gVEVYVCwgZGVzdGluYXRpb25TaWduYXR1cmUgVEVYVCwg
ZGVzdGluYXRpb25LZXlJRCBURVhULCAiCiAgICAgIkZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21h
aW5JRCkgUkVGRVJFTkNFUyBQQ01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBD
QVNDQURFLCBGT1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAi
CiAgICAgIlBDTU9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9z
OwogY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0
aW9uU2l0ZURvbWFpbklEX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgb24gVW5hdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgKCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9u
U2l0ZURvbWFpbklELCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEICkiX3M7CkBAIC04Niw3ICs4
Nyw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3Rvcnkp
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgb3BlbkRhdGFiYXNlQW5kQ3Jl
YXRlU2NoZW1hSWZOZWNlc3NhcnkoKTsKICAgICBlbmFibGVGb3JlaWduS2V5cygpOwotICAgIGFk
ZEJ1bmRsZUlEQ29sdW1uSWZOZWNlc3NhcnkoKTsKKyAgICBhZGREZXN0aW5hdGlvblRva2VuQ29s
dW1uc0lmTmVjZXNzYXJ5KCk7CiAgICAgbWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5
KCk7CiAgICAgYWxsRGF0YWJhc2VzKCkuYWRkKHRoaXMpOwogfQpAQCAtMTgwLDYgKzE4MSw3IEBA
IHZvaWQgRGF0YWJhc2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50JiYKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhID0gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpID8gYXR0cmlidXRpb24u
YXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLnZhbHVlKCkuZGF0YSA6IC0xOwogICAgICAgICBhdXRv
IHByaW9yaXR5ID0gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpID8gYXR0cmli
dXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpLnZhbHVlKCkucHJpb3JpdHkgOiAtMTsKICAg
ICAgICAgYXV0byBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1lc1Rv
U2VuZCgpLnNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZCA/IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5k
KCkuc291cmNlRWFybGllc3RUaW1lVG9TZW5kLnZhbHVlKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52
YWx1ZSgpIDogLTE7CisgICAgICAgIGF1dG8gZGVzdGluYXRpb25TZWNyZXRUb2tlbiA9IGF0dHJp
YnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKSA/IGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9u
VHJpZ2dlckRhdGEoKS52YWx1ZSgpLmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gOiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIGF1dG8gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1
dGlvbi50aW1lc1RvU2VuZCgpLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID8gYXR0cmli
dXRpb24udGltZXNUb1NlbmQoKS5kZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZC52YWx1ZSgp
LnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSA6IC0xOwogCiAgICAgICAgIC8vIFdlIHNob3Vs
ZCBuZXZlciBiZSBpbnNlcnRpbmcgYW4gYXR0cmlidXRlZCBwcml2YXRlIGNsaWNrIG1lYXN1cmVt
ZW50IHZhbHVlIGludG8gdGhlIGRhdGFiYXNlIHdpdGhvdXQgdmFsaWQgcmVwb3J0IHRpbWVzLgpA
QCAtMTk5LDYgKzIwMSw5IEBAIHZvaWQgRGF0YWJhc2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1
cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKICAgICAgICAgICAgIHx8
IHN0YXRlbWVudC0+YmluZFRleHQoMTAsIHNvdXJjZVNlY3JldFRva2VuID8gc291cmNlU2VjcmV0
VG9rZW4tPmtleUlEQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAg
ICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoMTEsIGRlc3RpbmF0aW9uRWFybGllc3RU
aW1lVG9TZW5kKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRl
eHQoMTIsIGF0dHJpYnV0aW9uLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQoKSkgIT0gU1FMSVRF
X09LCisgICAgICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEzLCBkZXN0aW5hdGlvblNl
Y3JldFRva2VuID8gZGVzdGluYXRpb25TZWNyZXRUb2tlbi0+dG9rZW5CYXNlNjRVUkwgOiBlbXB0
eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRl
eHQoMTQsIGRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gPyBkZXN0aW5hdGlvblNlY3JldFRva2VuLT5z
aWduYXR1cmVCYXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAg
ICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoMTUsIGRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gPyBk
ZXN0aW5hdGlvblNlY3JldFRva2VuLT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9
IFNRTElURV9PSwogICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RP
TkUpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCAiJXAgLSBEYXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaW5zZXJ0
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksIGVycm9yIG1lc3NhZ2U6ICUi
IFBSSVZBVEVfTE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY5OSwyMCArNzA0LDE4IEBAIHZv
aWQgRGF0YWJhc2U6OmRlc3Ryb3lTdGF0ZW1lbnRzKCkKICAgICBtX2luc2VydE9ic2VydmVkRG9t
YWluU3RhdGVtZW50ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBEYXRhYmFzZTo6YWRkQnVuZGxlSURD
b2x1bW5JZk5lY2Vzc2FyeSgpCit2b2lkIERhdGFiYXNlOjphZGREZXN0aW5hdGlvblRva2VuQ29s
dW1uc0lmTmVjZXNzYXJ5KCkKIHsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYXQgdGhlIGVu
ZCBvZiAyMDIxLiBObyBwdWJsaWMgcmVsZWFzZSB3YXMgbWFkZSB3aXRoIHRoZSBzY2hlbWEgbWlz
c2luZyBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlELCBzbyB0aGlzIGlzIG9ubHkgbmVlZGVkIHRv
IG1pZ3JhdGUgaW50ZXJuYWwgdXNlcnMgd2hvIHVwZGF0ZWQgaW4gU2VwdGVtYmVyIDIwMjEuCi0g
ICAgU3RyaW5nIGF0dHJpYnV0ZWRUYWJsZU5hbWUoIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCIpOwotICAgIFN0cmluZyB1bmF0dHJpYnV0ZWRUYWJsZU5hbWUoIlVuYXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50Il9zKTsKLSAgICBTdHJpbmcgc291cmNlQXBwbGljYXRp
b25CdW5kbGVJRENvbHVtbk5hbWUoInNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQiX3MpOwotICAg
IGF1dG8gY2hlY2tDb2x1bW5zID0gWyZdIChjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkgewotICAg
ICAgICBhdXRvIGNvbHVtbnMgPSBjb2x1bW5zRm9yVGFibGUodGFibGVOYW1lKTsKLSAgICAgICAg
aWYgKCFjb2x1bW5zLnNpemUoKSB8fCBjb2x1bW5zLmxhc3QoKSAhPSBzb3VyY2VBcHBsaWNhdGlv
bkJ1bmRsZUlEQ29sdW1uTmFtZSkKLSAgICAgICAgICAgIGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxl
KHRhYmxlTmFtZSwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRENvbHVtbk5hbWUpOwotICAgIH07
Ci0gICAgY2hlY2tDb2x1bW5zKGF0dHJpYnV0ZWRUYWJsZU5hbWUpOwotICAgIGNoZWNrQ29sdW1u
cyh1bmF0dHJpYnV0ZWRUYWJsZU5hbWUpOworICAgIFN0cmluZyBhdHRyaWJ1dGVkVGFibGVOYW1l
KCJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOworICAgIFN0cmluZyBkZXN0
aW5hdGlvbktleUlEQ29sdW1uTmFtZSgiZGVzdGluYXRpb25LZXlJRCJfcyk7CisgICAgYXV0byBj
b2x1bW5zID0gY29sdW1uc0ZvclRhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUpOworICAgIGlmICgh
Y29sdW1ucy5zaXplKCkgfHwgY29sdW1ucy5sYXN0KCkgIT0gZGVzdGluYXRpb25LZXlJRENvbHVt
bk5hbWUpIHsKKyAgICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxl
TmFtZSwgImRlc3RpbmF0aW9uVG9rZW4iX3MpOworICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9U
YWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCAiZGVzdGluYXRpb25TaWduYXR1cmUiX3MpOworICAg
ICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCBkZXN0aW5h
dGlvbktleUlEQ29sdW1uTmFtZSk7CisgICAgfQogfQorCiBib29sIERhdGFiYXNlOjpuZWVkc1Vw
ZGF0ZWRTY2hlbWEoKQogewogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhdCB0aGUgZW5kIG9m
IDIwMjEuIE5vIHB1YmxpYyByZWxlYXNlIHdhcyBtYWRlIHdpdGggdGhlIHNjaGVtYSBtaXNzaW5n
IHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQsIHNvIHRoaXMgaXMgb25seSBuZWVkZWQgdG8gbWln
cmF0ZSBpbnRlcm5hbCB1c2VycyB3aG8gdXBkYXRlZCBpbiBTZXB0ZW1iZXIgMjAyMS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhdGFiYXNlLmgKaW5kZXggYTUwMzczNzgwZjIxN2IzNjM2NDRlMGJlNGUyYjI2MjM5NTk0Mjgy
MS4uMWZjZTY1YWRhY2Y3NWVhNWVjNWFlYmE3ZTIxZWM1ZDkzOThkYWU5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPERv
bWFpbklEPiBkb21haW5JRChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwogICAg
IFN0cmluZyBnZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoRG9tYWluSUQpIGNvbnN0IGZpbmFs
OwogCi0gICAgdm9pZCBhZGRCdW5kbGVJRENvbHVtbklmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBh
ZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBuZWVkc1Vw
ZGF0ZWRTY2hlbWEoKSBmaW5hbDsKICAgICBib29sIGNyZWF0ZVVuaXF1ZUluZGljZXMoKSBmaW5h
bDsKICAgICBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3Ry
aW5nLCBUYWJsZUFuZEluZGV4UGFpcj4mIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcAppbmRleCBkZmRlN2M4MzQxNGJmOWMyZTFkODkxNGYx
ZjZhZjk2NDMxM2EzNjNlLi4wOTQyNzk2ODc3YWIzOTViMzk5OGY0YTg4MzljNWE4M2M5M2VjMDk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogdXNpbmcgU291cmNlU2l0ZSA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpT
b3VyY2VTaXRlOwogdXNpbmcgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgPSBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU7CiB1c2luZyBBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJp
Z2dlckRhdGE7Ci11c2luZyBFcGhlbWVyYWxTb3VyY2VOb25jZSA9IFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTsKK3VzaW5nIEVwaGVtZXJhbE5vbmNlID0gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNlOwogCiBjb25zdGV4cHIgU2Vjb25k
cyBkZWJ1Z01vZGVTZWNvbmRzVW50aWxTZW5kIHsgMTBfcyB9OwogCkBAIC05Miw3ICs5Miw3IEBA
IHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgICAgICBpZiAobV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKQotICAgICAgICAg
ICAgICAgIG1lYXN1cmVtZW50LnNldFNvdXJjZVVubGlua2FibGVUb2tlblZhbHVlKG1fZnJhdWRQ
cmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZy0+dW5saW5rYWJsZVRva2VuKTsKKyAgICAgICAgICAg
ICAgICBtZWFzdXJlbWVudC5zZXRTb3VyY2VVbmxpbmthYmxlVG9rZW5WYWx1ZShtX2ZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnVubGlua2FibGVUb2tlbkZvclNvdXJjZSk7CiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAo
YXV0byBlcnJvck1lc3NhZ2UgPSBtZWFzdXJlbWVudC5jYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VV
bmxpbmthYmxlVG9rZW4ocHVibGljS2V5QmFzZTY0VVJMKSkgewpAQCAtMTAzLDcgKzEwMyw3IEBA
IHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAgICAgICAgICAgICB9CiAjZW5kaWYKIAotICAgICAg
ICAgICAgZ2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKFdURk1vdmUobWVhc3VyZW1lbnQpKTsKKyAg
ICAgICAgICAgIGdldFNpZ25lZFVubGlua2FibGVUb2tlbkZvclNvdXJjZShXVEZNb3ZlKG1lYXN1
cmVtZW50KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTEx
OCwxMyArMTE4LDE4IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRU
b2tlblB1YmxpY0tleShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAgICAgaWYgKCFmZWF0dXJl
RW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHRva2VuUHVibGljS2V5VVJM
ID0gYXR0cmlidXRpb24udG9rZW5QdWJsaWNLZXlVUkwoKTsKKyAgICBVUkwgdG9rZW5QdWJsaWNL
ZXlVUkw7CiAgICAgaWYgKG1fdG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKSB7CiAgICAgICAg
IGlmIChhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50ID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50OjpEZXN0aW5hdGlvbikKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgdG9rZW5QdWJsaWNLZXlVUkwgPSAqbV90b2tlblB1YmxpY0tleVVSTEZv
clRlc3Rpbmc7CiAgICAgICAgIC8vIEZJWE1FKDIyNTM2NCkKICAgICAgICAgcGNtRGF0YUNhcnJp
ZWQgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6Ok5vblBlcnNvbmFs
bHlJZGVudGlmaWFibGU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8gb3B0VVJMID0g
YXR0cmlidXRpb24udG9rZW5QdWJsaWNLZXlVUkwoKSkKKyAgICAgICAgICAgIHRva2VuUHVibGlj
S2V5VVJMID0gKm9wdFVSTDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmICh0b2tlblB1YmxpY0tleVVSTC5pc0VtcHR5KCkgfHwgIXRva2VuUHVibGlj
S2V5VVJMLmlzVmFsaWQoKSkKQEAgLTE1Niw2MCArMTYxLDEyNiBAQCB2b2lkIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0VG9rZW5QdWJsaWNLZXkoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQmJgogICAgIH0pOwogfQogCi12b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgbWVh
c3VyZW1lbnQpCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0VG9rZW5Q
dWJsaWNLZXkoQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEs
IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50IGF0dHJp
YnV0aW9uUmVwb3J0RW5kcG9pbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fy
cmllZCBwY21EYXRhQ2FycmllZCwgRnVuY3Rpb248dm9pZChBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
JiYgYXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgY29uc3QgU3RyaW5nJiBwdWJsaWNLZXlCYXNlNjRV
UkwpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgLy8gVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGNsb3NlIGluIHRpbWUg
dG8gdGhlIG5hdmlnYXRpb25hbCBjbGljayB3aGljaCBtYWtlcyBpdCBsaWtlbHkgdG8gYmUgcGVy
c29uYWxseSBpZGVudGlmaWFibGUuCi0gICAgYXV0byBwY21EYXRhQ2FycmllZCA9IFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6UGVyc29uYWxseUlkZW50aWZpYWJsZTsK
LSAgICBhdXRvIHRva2VuU2lnbmF0dXJlVVJMID0gbWVhc3VyZW1lbnQudG9rZW5TaWduYXR1cmVV
UkwoKTsKLSAgICBpZiAobV90b2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcpIHsKLSAgICAgICAg
dG9rZW5TaWduYXR1cmVVUkwgPSAqbV90b2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc7CisgICAg
VVJMIHRva2VuUHVibGljS2V5VVJMOworICAgIGlmIChtX3Rva2VuUHVibGljS2V5VVJMRm9yVGVz
dGluZykgeworICAgICAgICBpZiAoYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCA9PSBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludDo6U291cmNlKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB0b2tlblB1YmxpY0tleVVSTCA9ICptX3Rva2VuUHVi
bGljS2V5VVJMRm9yVGVzdGluZzsKICAgICAgICAgLy8gRklYTUUoMjI1MzY0KQogICAgICAgICBw
Y21EYXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6
Tm9uUGVyc29uYWxseUlkZW50aWZpYWJsZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0
byBvcHRVUkwgPSBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnRva2VuUHVibGljS2V5VVJMKCkpCisg
ICAgICAgICAgICB0b2tlblB1YmxpY0tleVVSTCA9ICpvcHRVUkw7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAodG9rZW5TaWduYXR1cmVVUkwuaXNF
bXB0eSgpIHx8ICF0b2tlblNpZ25hdHVyZVVSTC5pc1ZhbGlkKCkpCisgICAgaWYgKHRva2VuUHVi
bGljS2V5VVJMLmlzRW1wdHkoKSB8fCAhdG9rZW5QdWJsaWNLZXlVUkwuaXNWYWxpZCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoZGVidWdNb2RlRW5hYmxlZCgpKQogICAgICAgICBwY21E
YXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6UGVy
c29uYWxseUlkZW50aWZpYWJsZTsKIAotICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQsICJBYm91dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBzaWduaW5nIHJl
cXVlc3QuIik7Ci0gICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VM
ZXZlbDo6TG9nLCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEFib3V0IHRvIGZpcmUgYSB1
bmxpbmthYmxlIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iX3MpOworICAgIFJFTEVBU0VfTE9HX0lO
Rk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJBYm91dCB0byBmaXJlIGEgdG9rZW4gcHVibGlj
IGtleSByZXF1ZXN0LiIpOworICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShN
ZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBBYm91dCB0byBm
aXJlIGEgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcyk7CiAKLSAgICBQQ006Ok5ldHdvcmtM
b2FkZXI6OnN0YXJ0KFdURk1vdmUodG9rZW5TaWduYXR1cmVVUkwpLCBtZWFzdXJlbWVudC50b2tl
blNpZ25hdHVyZUpTT04oKSwgcGNtRGF0YUNhcnJpZWQsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCB0aGlzLCBtZWFzdXJlbWVudCA9IFdURk1vdmUobWVhc3VyZW1lbnQpXSAoYXV0byYg
ZXJyb3JEZXNjcmlwdGlvbiwgYXV0byYganNvbk9iamVjdCkgbXV0YWJsZSB7CisgICAgUENNOjpO
ZXR3b3JrTG9hZGVyOjpzdGFydChXVEZNb3ZlKHRva2VuUHVibGljS2V5VVJMKSwgbnVsbHB0ciwg
cGNtRGF0YUNhcnJpZWQsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlzLCBhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGF1dG8mIGVycm9yRGVzY3JpcHRpb24sIGF1dG8m
IGpzb25PYmplY3QpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGlmICghZXJyb3JEZXNjcmlwdGlvbi5pc051bGwoKSkgewot
ICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBSZWNlaXZl
ZCBlcnJvcjogJyJfcywgZXJyb3JEZXNjcmlwdGlvbiwgIicgZm9yIHNlY3JldCB0b2tlbiBzaWdu
aW5nIHJlcXVlc3QuIl9zKSk7CisgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29s
ZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRdIFJlY2VpdmVkIGVycm9yOiAnIl9zLCBlcnJvckRlc2NyaXB0aW9uLCAiJyBm
b3IgdG9rZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcykpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKCFqc29uT2JqZWN0KSB7Ci0gICAgICAgICAgICBtX2Ns
aWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0
cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEpTT04gcmVzcG9uc2UgaXMgZW1wdHkg
Zm9yIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5i
cm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJb
UHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gSlNPTiByZXNwb25zZSBpcyBlbXB0eSBmb3IgdG9r
ZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcykpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgYXV0byBzaWduYXR1cmVCYXNlNjRVUkwgPSBqc29uT2JqZWN0LT5nZXRT
dHJpbmcoInVubGlua2FibGVfdG9rZW4iX3MpOwotICAgICAgICBpZiAoc2lnbmF0dXJlQmFzZTY0
VVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1l
YXN1cmVtZW50XSBKU09OIHJlc3BvbnNlIGRvZXNuJ3QgaGF2ZSB0aGUga2V5ICd1bmxpbmthYmxl
X3Rva2VuJyBmb3IgdG9rZW4gc2lnbmluZyByZXF1ZXN0LiJfcykpOworICAgICAgICBtX2NsaWVu
dC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpMb2csIG1ha2VTdHJpbmco
IltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBHb3QgSlNPTiByZXNwb25zZSBmb3IgdG9rZW4g
cHVibGljIGtleSByZXF1ZXN0LiJfcykpOworCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSksIGpzb25PYmplY3QtPmdldFN0cmluZygidG9rZW5fcHVibGlj
X2tleSJfcykpOworICAgIH0pOworfQorCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlcjo6Y29uZmlndXJlRm9yVG9rZW5TaWduaW5nKFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQ
Y21EYXRhQ2FycmllZCYgcGNtRGF0YUNhcnJpZWQsIFVSTCYgdG9rZW5TaWduYXR1cmVVUkwsIHN0
ZDo6b3B0aW9uYWw8VVJMPiBnaXZlblRva2VuU2lnbmF0dXJlVVJMKQoreworICAgIC8vIFRoaXMg
aXMgZ3VhcmFudGVlZCB0byBiZSBjbG9zZSBpbiB0aW1lIHRvIGEgcGFnZSBsb2FkIHdoaWNoIGNh
biBpZGVudGlmeSB0aGUgdXNlciwgZWl0aGVyIHRoZSBzb3VyY2Ugb3IgdGhlIGRlc3RpbmF0aW9u
LgorICAgIHBjbURhdGFDYXJyaWVkID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFD
YXJyaWVkOjpQZXJzb25hbGx5SWRlbnRpZmlhYmxlOworICAgIGlmIChtX3Rva2VuU2lnbmF0dXJl
VVJMRm9yVGVzdGluZykgeworICAgICAgICB0b2tlblNpZ25hdHVyZVVSTCA9ICptX3Rva2VuU2ln
bmF0dXJlVVJMRm9yVGVzdGluZzsKKyAgICAgICAgLy8gRklYTUUoMjI1MzY0KQorICAgICAgICBp
ZiAoIWRlYnVnTW9kZUVuYWJsZWQoKSkKKyAgICAgICAgICAgIHBjbURhdGFDYXJyaWVkID0gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25hbGx5SWRlbnRp
ZmlhYmxlOworICAgIH0gZWxzZSBpZiAoZ2l2ZW5Ub2tlblNpZ25hdHVyZVVSTCkKKyAgICAgICAg
dG9rZW5TaWduYXR1cmVVUkwgPSAqZ2l2ZW5Ub2tlblNpZ25hdHVyZVVSTDsKK30KKworc3RkOjpv
cHRpb25hbDxTdHJpbmc+IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmF0
dXJlQmFzZTY0VVJMRnJvbVRva2VuU2lnbmF0dXJlUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBlcnJv
ckRlc2NyaXB0aW9uLCBjb25zdCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYganNvbk9iamVjdCkKK3sK
KyAgICBpZiAoIWVycm9yRGVzY3JpcHRpb24uaXNOdWxsKCkpIHsKKyAgICAgICAgbV9jbGllbnQt
PmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmco
IltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBSZWNlaXZlZCBlcnJvcjogJyJfcywgZXJyb3JE
ZXNjcmlwdGlvbiwgIicgZm9yIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBpZiAoIWpzb25PYmplY3QpIHsKKyAg
ICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJy
b3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBKU09OIHJlc3BvbnNl
IGlzIGVtcHR5IGZvciB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIl9zKSk7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgYXV0byBzaWduYXR1cmVCYXNlNjRVUkwgPSBq
c29uT2JqZWN0LT5nZXRTdHJpbmcoInVubGlua2FibGVfdG9rZW4iX3MpOworICAgIGlmIChzaWdu
YXR1cmVCYXNlNjRVUkwuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RD
b25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudF0gSlNPTiByZXNwb25zZSBkb2Vzbid0IGhhdmUgdGhlIGtleSAndW5s
aW5rYWJsZV90b2tlbicgZm9yIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4gc2lnbmF0dXJlQmFzZTY0
VVJMOworfQorCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVk
VW5saW5rYWJsZVRva2VuRm9yU291cmNlKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgbWVhc3Vy
ZW1lbnQpCit7CisgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQgcGNtRGF0YUNhcnJp
ZWQ7CisgICAgVVJMIHRva2VuU2lnbmF0dXJlVVJMOworICAgIGNvbmZpZ3VyZUZvclRva2VuU2ln
bmluZyhwY21EYXRhQ2FycmllZCwgdG9rZW5TaWduYXR1cmVVUkwsIG1lYXN1cmVtZW50LnRva2Vu
U2lnbmF0dXJlVVJMKCkpOworCisgICAgaWYgKHRva2VuU2lnbmF0dXJlVVJMLmlzRW1wdHkoKSB8
fCAhdG9rZW5TaWduYXR1cmVVUkwuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBS
RUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQWJvdXQgdG8gZmlyZSBh
IHVubGlua2FibGUgdG9rZW4gc2lnbmluZyByZXF1ZXN0IGZvciB0aGUgY2xpY2sgc291cmNlLiIp
OworICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6Okxv
ZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGEgdW5saW5rYWJs
ZSB0b2tlbiBzaWduaW5nIHJlcXVlc3QgZm9yIHRoZSBjbGljayBzb3VyY2UuIl9zKTsKKworICAg
IFBDTTo6TmV0d29ya0xvYWRlcjo6c3RhcnQoV1RGTW92ZSh0b2tlblNpZ25hdHVyZVVSTCksIG1l
YXN1cmVtZW50LnRva2VuU2lnbmF0dXJlSlNPTigpLCBwY21EYXRhQ2FycmllZCwgW3dlYWtUaGlz
ID0gV2Vha1B0ciB7ICp0aGlzIH0sIHRoaXMsIG1lYXN1cmVtZW50ID0gV1RGTW92ZShtZWFzdXJl
bWVudCldIChhdXRvJiBlcnJvckRlc2NyaXB0aW9uLCBhdXRvJiBqc29uT2JqZWN0KSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotICAgICAgICAvLyBGSVggTk9XIQotICAgICAgICBpZiAobV9mcmF1ZFByZXZlbnRpb25WYWx1
ZXNGb3JUZXN0aW5nKQotICAgICAgICAgICAgbWVhc3VyZW1lbnQuc2V0U291cmNlU2VjcmV0VG9r
ZW4oeyBtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnNlY3JldFRva2VuLCBtX2Zy
YXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnNpZ25hdHVyZSwgbV9mcmF1ZFByZXZlbnRp
b25WYWx1ZXNGb3JUZXN0aW5nLT5rZXlJRCB9KTsKKworICAgICAgICBhdXRvIHNpZ25hdHVyZUJh
c2U2NFVSTCA9IGdldFNpZ25hdHVyZUJhc2U2NFVSTEZyb21Ub2tlblNpZ25hdHVyZVJlc3BvbnNl
KGVycm9yRGVzY3JpcHRpb24sIGpzb25PYmplY3QpOworICAgICAgICBpZiAoIXNpZ25hdHVyZUJh
c2U2NFVSTCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9mcmF1ZFByZXZl
bnRpb25WYWx1ZXNGb3JUZXN0aW5nKSB7CisgICAgICAgICAgICBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6U291cmNlU2VjcmV0VG9rZW4gc291cmNlU2VjcmV0VG9rZW47CisgICAgICAgICAgICBz
b3VyY2VTZWNyZXRUb2tlbi50b2tlbkJhc2U2NFVSTCA9IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVz
Rm9yVGVzdGluZy0+c2VjcmV0VG9rZW5Gb3JTb3VyY2U7CisgICAgICAgICAgICBzb3VyY2VTZWNy
ZXRUb2tlbi5zaWduYXR1cmVCYXNlNjRVUkwgPSBtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRl
c3RpbmctPnNpZ25hdHVyZUZvclNvdXJjZTsKKyAgICAgICAgICAgIHNvdXJjZVNlY3JldFRva2Vu
LmtleUlEQmFzZTY0VVJMID0gbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLT5rZXlJ
REZvclNvdXJjZTsKKyAgICAgICAgICAgIG1lYXN1cmVtZW50LnNldFNvdXJjZVNlY3JldFRva2Vu
KFdURk1vdmUoc291cmNlU2VjcmV0VG9rZW4pKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBlcnJvck1lc3NhZ2UgPSBtZWFzdXJlbWVu
dC5jYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VTZWNyZXRUb2tlbihzaWduYXR1cmVCYXNlNjRVUkwp
KSB7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoYXV0byBlcnJvck1lc3NhZ2Ug
PSBtZWFzdXJlbWVudC5jYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VTZWNyZXRUb2tlbigqc2lnbmF0
dXJlQmFzZTY0VVJMKSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsICJHb3QgdGhlIGZvbGxvd2luZyBlcnJvciBpbiBjYWxjdWxhdGVB
bmRVcGRhdGVTb3VyY2VTZWNyZXRUb2tlbigpOiAnJXtwdWJsaWN9cyIsIGVycm9yTWVzc2FnZS0+
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNr
IE1lYXN1cmVtZW50XSAiX3MsICplcnJvck1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KICNlbmRpZgorICAgICAgICB9CiAKICAgICAg
ICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6TG9nLCAi
W1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFN0b3JpbmcgYSBzZWNyZXQgdG9rZW4uIl9zKTsK
IApAQCAtMjE4LDYgKzI4OSw1MiBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cgogCiB9CiAKK3Zv
aWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9r
ZW5Gb3JEZXN0aW5hdGlvbihTb3VyY2VTaXRlJiYgc291cmNlU2l0ZSwgQXR0cmlidXRpb25EZXN0
aW5hdGlvblNpdGUmJiBkZXN0aW5hdGlvblNpdGUsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIm
IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIWZlYXR1cmVFbmFibGVk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21E
YXRhQ2FycmllZCBwY21EYXRhQ2FycmllZDsKKyAgICBVUkwgdG9rZW5TaWduYXR1cmVVUkw7Cisg
ICAgY29uZmlndXJlRm9yVG9rZW5TaWduaW5nKHBjbURhdGFDYXJyaWVkLCB0b2tlblNpZ25hdHVy
ZVVSTCwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS50b2tlblNpZ25hdHVyZVVSTCgpKTsKKworICAg
IGlmICh0b2tlblNpZ25hdHVyZVVSTC5pc0VtcHR5KCkgfHwgIXRva2VuU2lnbmF0dXJlVVJMLmlz
VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgIkFib3V0IHRvIGZpcmUgYSB1bmxpbmthYmxlIHRva2VuIHNpZ25p
bmcgcmVxdWVzdCBmb3IgdGhlIGNsaWNrIGRlc3RpbmF0aW9uLiIpOworICAgIG1fY2xpZW50LT5i
cm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNr
IE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBzaWduaW5nIHJl
cXVlc3QgZm9yIHRoZSBjbGljayBkZXN0aW5hdGlvbi4iX3MpOworCisgICAgUENNOjpOZXR3b3Jr
TG9hZGVyOjpzdGFydChXVEZNb3ZlKHRva2VuU2lnbmF0dXJlVVJMKSwgYXR0cmlidXRpb25Ucmln
Z2VyRGF0YS50b2tlblNpZ25hdHVyZUpTT04oKSwgcGNtRGF0YUNhcnJpZWQsIFt3ZWFrVGhpcyA9
IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlzLCBzb3VyY2VTaXRlID0gV1RGTW92ZShzb3VyY2VTaXRl
KSwgZGVzdGluYXRpb25TaXRlID0gV1RGTW92ZShkZXN0aW5hdGlvblNpdGUpLCBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgYXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyID0gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmlzb2xhdGVk
Q29weSgpXSAoYXV0byYgZXJyb3JEZXNjcmlwdGlvbiwgYXV0byYganNvbk9iamVjdCkgbXV0YWJs
ZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgYXV0byBzaWduYXR1cmVCYXNlNjRVUkwgPSBnZXRTaWduYXR1cmVCYXNlNjRVUkxGcm9tVG9r
ZW5TaWduYXR1cmVSZXNwb25zZShlcnJvckRlc2NyaXB0aW9uLCBqc29uT2JqZWN0KTsKKyAgICAg
ICAgaWYgKCFzaWduYXR1cmVCYXNlNjRVUkwpCisgICAgICAgICAgICByZXR1cm47CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5k
ZXN0aW5hdGlvblVubGlua2FibGVUb2tlbikgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJEZXN0aW5hdGlvbiB1bmxpbmthYmxlIHRv
a2VuIGlzIG1pc3NpbmcuIik7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJbUHJpdmF0ZSBDbGljayBNZWFzdXJl
bWVudF0gRGVzdGluYXRpb24gdW5saW5rYWJsZSB0b2tlbiBpcyBtaXNzaW5nLiJfcyk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIHJl
c3VsdCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRhdGVEZXN0aW5h
dGlvblNlY3JldFRva2VuKCpzaWduYXR1cmVCYXNlNjRVUkwsICphdHRyaWJ1dGlvblRyaWdnZXJE
YXRhLmRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0
KSB7CisgICAgICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSByZXN1bHQuZXJyb3IoKS5p
c0VtcHR5KCkgPyAiVW5rbm93biIgOiByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IHRoZSBmb2xsb3dp
bmcgZXJyb3IgaW4gY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4oKTogJyV7cHVi
bGljfXMiLCBlcnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgbV9j
bGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VT
dHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAiX3MsIGVycm9yTWVzc2FnZSkpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9j
bGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6TG9nLCAiW1ByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFN0b3JpbmcgYSBzZWNyZXQgdG9rZW4uIl9zKTsKKworICAg
ICAgICAgICAgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kZXN0aW5hdGlvblNlY3JldFRva2VuID0g
cmVzdWx0LnZhbHVlKCk7CisgICAgICAgICAgICBhdHRyaWJ1dGUoV1RGTW92ZShzb3VyY2VTaXRl
KSwgV1RGTW92ZShkZXN0aW5hdGlvblNpdGUpLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEpLCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50QXBwQnVuZGxlSURGb3JUZXN0aW5nID8gKm1f
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3RpbmcgOiBhcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIpOworI2VuZGlmCisgICAgfSk7Cit9CisKIHZvaWQgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCYmIG1lYXN1cmVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEF0dHJpYnV0aW9uVHlwZSB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgc3RvcmUoKS5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dChXVEZNb3ZlKG1lYXN1cmVtZW50KSwgdHlwZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwpAQCAtMjUxLDcgKzM2OCw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
OjpoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKICAgICBSZWdpc3Ry
YWJsZURvbWFpbiBzb3VyY2VEb21haW47CiAgICAgaWYgKHJlZGlyZWN0RG9tYWluLm1hdGNoZXMo
Zmlyc3RQYXJ0eVVSTCkpIHsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnNv
dXJjZVJlZ2lzdHJhYmxlRG9tYWluKSB7Ci0gICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiW1ByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIGl0IHdh
cyByZXF1ZXN0ZWQgaW4gYW4gSFRUUCByZWRpcmVjdCB0aGF0IGlzIHNhbWUtc2l0ZSBhcyB0aGUg
ICBmaXJzdC1wYXJ0eSBhbmQgbm8gYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1ldGVyIHdh
cyBwcm92aWRlZC4iX3MpOworICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSBpdCB3YXMgcmVxdWVz
dGVkIGluIGFuIEhUVFAgcmVkaXJlY3QgdGhhdCBpcyBzYW1lLXNpdGUgYXMgdGhlIGZpcnN0LXBh
cnR5IGFuZCBubyBhdHRyaWJ1dGlvblNvdXJjZSBxdWVyeSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVk
LiJfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc291cmNlRG9t
YWluID0gKmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuc291cmNlUmVnaXN0cmFibGVEb21haW47CkBA
IC0yNjMsNiArMzgwLDQxIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpo
YW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKIAogICAgIG1fY2xpZW50
LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENs
aWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IGFjY2VwdGVkLiJfcyk7CiAKKyAgICAv
LyBTaWduaW5nIG9mIGEgZGVzdGluYXRpb24gdG9rZW4gbXVzdCBiZSBkb25lIHVuY29uZGl0aW9u
YWxseS4gT3RoZXJ3aXNlIGl0IGJlY29tZXMgYSB3YXkgdG8gZGlzY292ZXIgdGhhdCB0aGVyZSBp
cyBhIHBlbmRpbmcgYXR0cmlidXRpb24uCisgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEu
ZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZSkgeworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGFDb3B5ID0gYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAgICAgICAgLy8gVGhpcyBp
cyBndWFyYW50ZWVkIHRvIGJlIGNsb3NlIGluIHRpbWUgdG8gdGhlIHRyaWdnZXJpbmcgZXZlbnQg
d2hpY2ggbWFrZXMgaXQgbGlrZWx5IHRvIGJlIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlLgorICAg
ICAgICBnZXRUb2tlblB1YmxpY0tleShXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFDb3B5
KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OkRl
c3RpbmF0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6OlBlcnNv
bmFsbHlJZGVudGlmaWFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlzLCBz
b3VyY2VTaXRlID0gU291cmNlU2l0ZSB7IFdURk1vdmUoc291cmNlRG9tYWluKSB9LCBkZXN0aW5h
dGlvblNpdGUgPSBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IGZpcnN0UGFydHlVUkwgfSwg
YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyID0gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
Lmlzb2xhdGVkQ29weSgpXSAoQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJp
Z2dlckRhdGEsIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBpZiAocHVibGljS2V5QmFzZTY0VVJMLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJUaGUgcHVibGlj
IGtleSBVUkwgd2FzIGVtcHR5LiIpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNh
c3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnRdIFRoZSBwdWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9mcmF1ZFByZXZl
bnRpb25WYWx1ZXNGb3JUZXN0aW5nKQorICAgICAgICAgICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEuc2V0RGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW5WYWx1ZShtX2ZyYXVkUHJldmVudGlv
blZhbHVlc0ZvclRlc3RpbmctPnVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKTsKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8g
cmVzdWx0ID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURlc3Rp
bmF0aW9uVW5saW5rYWJsZVRva2VuKHB1YmxpY0tleUJhc2U2NFVSTCk7CisgICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhLmRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuID0gcmVzdWx0LnZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgICAgIGdldFNpZ25lZFVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKFdURk1v
dmUoc291cmNlU2l0ZSksIFdURk1vdmUoZGVzdGluYXRpb25TaXRlKSwgV1RGTW92ZShhdHRyaWJ1
dGlvblRyaWdnZXJEYXRhKSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRsZUlERm9y
VGVzdGluZyA/ICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50QXBwQnVuZGxlSURGb3JUZXN0aW5n
IDogYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNz
YWdlID0gcmVzdWx0LmVycm9yKCkuaXNFbXB0eSgpID8gIlVua25vd24iIDogcmVzdWx0LmVycm9y
KCk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCwgIkdvdCB0aGUgZm9sbG93aW5nIGVycm9yIGluIGNhbGN1bGF0ZUFuZFVwZGF0ZURlc3Rp
bmF0aW9uVW5saW5rYWJsZVRva2VuKCk6ICcle3B1YmxpY31zIiwgZXJyb3JNZXNzYWdlLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVz
c2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFz
dXJlbWVudF0gIl9zLCBlcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBhdHRyaWJ1dGUoU291cmNlU2l0ZSB7IFdURk1vdmUoc291cmNlRG9tYWluKSB9LCBB
dHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IGZpcnN0UGFydHlVUkwgfSwgV1RGTW92ZShhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhKSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRsZUlE
Rm9yVGVzdGluZyA/ICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50QXBwQnVuZGxlSURGb3JUZXN0
aW5nIDogYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKTsKIH0KIApAQCAtMzI0LDE2ICs0NzYs
NjMgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZShTb3Vy
Y2VTaXRlJiYgc291cmNlU2l0ZSwgQXR0cmlidXQKIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdChjb25zdCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCYgYXR0cmlidXRpb24sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpCiB7Ci0gICAgaWYgKCFm
ZWF0dXJlRW5hYmxlZCgpKQorICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSB8fCAhYXR0cmlidXRp
b24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IWF0dHJpYnV0aW9uLnNvdXJjZVNlY3JldFRva2VuKCkpIHsKKyAgICBpZiAoIWF0dHJpYnV0aW9u
LnNvdXJjZVNlY3JldFRva2VuKCkgJiYgIWF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEoKS0+ZGVzdGluYXRpb25TZWNyZXRUb2tlbikgewogICAgICAgICBmaXJlQ29udmVyc2lvblJl
cXVlc3RJbXBsKGF0dHJpYnV0aW9uLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGF1dG8gYXR0cmlidXRpb25Db3B5ID0gYXR0cmlidXRp
b247CiAgICAgLy8gVGhpcyBoYXBwZW5zIG91dCBvZiB3ZWJwYWdlIGNvbnRleHQgYW5kIHdpdGgg
YSBsb25nIGRlbGF5IGFuZCBpcyB0aHVzIHVubGlrZWx5IHRvIGJlIHBlcnNvbmFsbHkgaWRlbnRp
ZmlhYmxlLgorICAgIGlmIChhdHRyaWJ1dGlvbi5zb3VyY2VTZWNyZXRUb2tlbigpKSB7CisgICAg
ICAgIGdldFRva2VuUHVibGljS2V5KFdURk1vdmUoYXR0cmlidXRpb25Db3B5KSwgYXR0cmlidXRp
b25SZXBvcnRFbmRwb2ludCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVk
OjpOb25QZXJzb25hbGx5SWRlbnRpZmlhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgdGhpcywgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludF0gKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50JiYgYXR0cmlidXRpb24sIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSB7Cisg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgYXV0byBwdWJsaWNLZXlEYXRhID0gYmFzZTY0VVJMRGVjb2RlKHB1YmxpY0tleUJh
c2U2NFVSTCk7CisgICAgICAgICAgICBpZiAoIXB1YmxpY0tleURhdGEpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0
OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgICAg
ICAgICBjcnlwdG8tPmFkZEJ5dGVzKHB1YmxpY0tleURhdGEtPmRhdGEoKSwgcHVibGljS2V5RGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGF1dG8gcHVibGljS2V5RGF0YUhhc2ggPSBjcnlwdG8t
PmNvbXB1dGVIYXNoKCk7CisKKyAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBiYXNlNjRVUkxFbmNv
ZGVUb1N0cmluZyhwdWJsaWNLZXlEYXRhSGFzaC5kYXRhKCksIHB1YmxpY0tleURhdGFIYXNoLnNp
emUoKSk7CisgICAgICAgICAgICBpZiAoa2V5SUQgIT0gYXR0cmlidXRpb24uc291cmNlU2VjcmV0
VG9rZW4oKS0+a2V5SURCYXNlNjRVUkwpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBpZiAoIWF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChhdHRyaWJ1dGlvbi5hdHRyaWJ1
dGlvblRyaWdnZXJEYXRhKCktPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4pIHsKKyAgICAgICAgICAg
ICAgICBnZXRUb2tlblB1YmxpY0tleShXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgYXR0cmlidXRpb25S
ZXBvcnRFbmRwb2ludCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpO
b25QZXJzb25hbGx5SWRlbnRpZmlhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwg
dGhpcywgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludF0gKFByaXZhdGVDbGlja01lYXN1cmVtZW50
JiYgYXR0cmlidXRpb24sIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBwdWJsaWNLZXlEYXRhID0gYmFzZTY0
VVJMRGVjb2RlKHB1YmxpY0tleUJhc2U2NFVSTCk7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
cHVibGljS2V5RGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgICAgICAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFM
OjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgICAgICAgICAgICAgICAg
IGNyeXB0by0+YWRkQnl0ZXMocHVibGljS2V5RGF0YS0+ZGF0YSgpLCBwdWJsaWNLZXlEYXRhLT5z
aXplKCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHB1YmxpY0tleURhdGFIYXNoID0gY3J5
cHRvLT5jb21wdXRlSGFzaCgpOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBi
YXNlNjRVUkxFbmNvZGVUb1N0cmluZyhwdWJsaWNLZXlEYXRhSGFzaC5kYXRhKCksIHB1YmxpY0tl
eURhdGFIYXNoLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChrZXlJRCAhPSBhdHRy
aWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCktPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4t
PmtleUlEQmFzZTY0VVJMKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICAgICAgICAgIGZpcmVDb252ZXJzaW9uUmVxdWVzdEltcGwoYXR0cmlidXRpb24sIGF0
dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmlyZUNvbnZlcnNp
b25SZXF1ZXN0SW1wbChhdHRyaWJ1dGlvbiwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgZ2V0VG9rZW5QdWJsaWNL
ZXkoV1RGTW92ZShhdHRyaWJ1dGlvbkNvcHkpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50LCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6Ok5vblBlcnNvbmFsbHlJZGVu
dGlmaWFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlzLCBhdHRyaWJ1dGlv
blJlcG9ydEVuZHBvaW50XSAoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwg
Y29uc3QgU3RyaW5nJiBwdWJsaWNLZXlCYXNlNjRVUkwpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM0Nyw3ICs1NDYsNyBAQCB2b2lkIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZUNvbnZlcnNpb25SZXF1ZXN0KGNvbnN0IFByaXZh
dGVDbGlja01lYQogICAgICAgICBhdXRvIHB1YmxpY0tleURhdGFIYXNoID0gY3J5cHRvLT5jb21w
dXRlSGFzaCgpOwogCiAgICAgICAgIGF1dG8ga2V5SUQgPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
ZyhwdWJsaWNLZXlEYXRhSGFzaC5kYXRhKCksIHB1YmxpY0tleURhdGFIYXNoLnNpemUoKSk7Ci0g
ICAgICAgIGlmIChrZXlJRCAhPSBhdHRyaWJ1dGlvbi5zb3VyY2VTZWNyZXRUb2tlbigpLT5rZXlJ
REJhc2U2NFVSTCkKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJE
YXRhKCktPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gfHwga2V5SUQgIT0gYXR0cmlidXRpb24uYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSgpLT5kZXN0aW5hdGlvblNlY3JldFRva2VuLT5rZXlJREJhc2U2
NFVSTCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBmaXJlQ29udmVyc2lvblJlcXVl
c3RJbXBsKGF0dHJpYnV0aW9uLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKQEAgLTUyNyw3
ICs3MjYsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0UENNRnJh
dWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbgogewogICAgIGlmICh1bmxpbmthYmxl
VG9rZW4uaXNFbXB0eSgpIHx8IHNlY3JldFRva2VuLmlzRW1wdHkoKSB8fCBzaWduYXR1cmUuaXNF
bXB0eSgpIHx8IGtleUlELmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZnJhdWRQ
cmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyA9IFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1ZXMg
eyBXVEZNb3ZlKHVubGlua2FibGVUb2tlbiksIFdURk1vdmUoc2VjcmV0VG9rZW4pLCBXVEZNb3Zl
KHNpZ25hdHVyZSksIFdURk1vdmUoa2V5SUQpIH07CisgICAgbV9mcmF1ZFByZXZlbnRpb25WYWx1
ZXNGb3JUZXN0aW5nID0gVGVzdGluZ0ZyYXVkUHJldmVudGlvblZhbHVlcyB7IFdURk1vdmUodW5s
aW5rYWJsZVRva2VuKSwgV1RGTW92ZShzZWNyZXRUb2tlbiksIFdURk1vdmUoc2lnbmF0dXJlKSwg
V1RGTW92ZShrZXlJRCksIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5n
KCksIGVtcHR5U3RyaW5nKCkgfTsKIH0KIAogYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1h
bmFnZXI6OmZlYXR1cmVFbmFibGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCmluZGV4IGM2NzNh
Zjg0ODgzMmZkMWI3YzA5YjI5MGVhOTdlMTEzYzAyYTI1NjMuLjExNzgyZDIzNDBlNTI1NWY2NjVj
MjFjNzA5NjM3NzUxZmYxYmY5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApAQCAtNzMsNyArNzMsMTEg
QEAgcHJpdmF0ZToKICAgICBjb25zdCBQQ006OlN0b3JlJiBzdG9yZSgpIGNvbnN0OwogICAgIHZv
aWQgc3RhcnRUaW1lcihTZWNvbmRzKTsKICAgICB2b2lkIGdldFRva2VuUHVibGljS2V5KFByaXZh
dGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blJlcG9ydEVuZHBvaW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQs
IEZ1bmN0aW9uPHZvaWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgY29u
c3QgU3RyaW5nJiBwdWJsaWNLZXlCYXNlNjRVUkwpPiYmKTsKLSAgICB2b2lkIGdldFNpZ25lZFVu
bGlua2FibGVUb2tlbihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKKyAgICB2b2lkIGdldFRv
a2VuUHVibGljS2V5KEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpQY21EYXRhQ2FycmllZCwgRnVuY3Rpb248dm9pZChBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYs
IGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKT4mJik7CisgICAgdm9pZCBjb25maWd1
cmVGb3JUb2tlblNpZ25pbmcoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVk
JiwgVVJMJiB0b2tlblNpZ25hdHVyZVVSTCwgc3RkOjpvcHRpb25hbDxVUkw+IGdpdmVuVG9rZW5T
aWduYXR1cmVVUkwpOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBnZXRTaWduYXR1cmVCYXNl
NjRVUkxGcm9tVG9rZW5TaWduYXR1cmVSZXNwb25zZShjb25zdCBTdHJpbmcmIGVycm9yRGVzY3Jp
cHRpb24sIGNvbnN0IFJlZlB0cjxKU09OOjpPYmplY3Q+Jik7CisgICAgdm9pZCBnZXRTaWduZWRV
bmxpbmthYmxlVG9rZW5Gb3JTb3VyY2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7CisgICAg
dm9pZCBnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0aW5hdGlvbihTb3VyY2VTaXRlJiYs
IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiYsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwg
Y29uc3QgQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyJik7CiAgICAgdm9pZCBpbnNlcnRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFByaXZhdGVDbGlja01lYXN1cmVtZW50
JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsK
ICAgICB2b2lkIGF0dHJpYnV0ZShTb3VyY2VTaXRlJiYsIEF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlJiYsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyJik7CkBAIC0xMDEsMTAgKzEwNSwxNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0
aW9uYWw8QXR0cmlidXRpb25SZXBvcnRUZXN0Q29uZmlnPiBtX2F0dHJpYnV0aW9uUmVwb3J0VGVz
dENvbmZpZzsKIAogICAgIHN0cnVjdCBUZXN0aW5nRnJhdWRQcmV2ZW50aW9uVmFsdWVzIHsKLSAg
ICAgICAgU3RyaW5nIHVubGlua2FibGVUb2tlbjsKLSAgICAgICAgU3RyaW5nIHNlY3JldFRva2Vu
OwotICAgICAgICBTdHJpbmcgc2lnbmF0dXJlOwotICAgICAgICBTdHJpbmcga2V5SUQ7CisgICAg
ICAgIFN0cmluZyB1bmxpbmthYmxlVG9rZW5Gb3JTb3VyY2U7CisgICAgICAgIFN0cmluZyBzZWNy
ZXRUb2tlbkZvclNvdXJjZTsKKyAgICAgICAgU3RyaW5nIHNpZ25hdHVyZUZvclNvdXJjZTsKKyAg
ICAgICAgU3RyaW5nIGtleUlERm9yU291cmNlOworICAgICAgICBTdHJpbmcgdW5saW5rYWJsZVRv
a2VuRm9yRGVzdGluYXRpb247CisgICAgICAgIFN0cmluZyBzZWNyZXRUb2tlbkZvckRlc3RpbmF0
aW9uOworICAgICAgICBTdHJpbmcgc2lnbmF0dXJlRm9yRGVzdGluYXRpb247CisgICAgICAgIFN0
cmluZyBrZXlJREZvckRlc3RpbmF0aW9uOwogICAgIH07CiAKICAgICBzdGQ6Om9wdGlvbmFsPFRl
c3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1ZXM+IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVz
dGluZzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBhMjM2YmFlYTQwNDhlYjcwOWYwMzVjZDdiMWE4MWIzMzAyNjI3MDI1Li5kNmJiZDEwOWU3OWQ1
YzJkMmU4YmJiZWZkOGFmYjYzNWEwNjVkNjkyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTItMDIgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBVbmxpbmthYmxl
IHRva2VucyBmb3IgdHJpZ2dlcmluZyBldmVudCB0byBwcmV2ZW50IGZyYXVkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzMKKyAgICAgICAgPHJk
YXI6Ly83OTQyNjM0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOZXcgdGVzdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5EZXN0aW5hdGlvbkNsaWNr
RnJhdWRQcmV2ZW50aW9uLgorICAgICAgICBUaGUgb3RoZXIgY2hhbmdlcyBhcmUgYSByZXBvcnQg
dmVyc2lvbiBidW1wIDItPjMgYW5kIGEgbmFtZSBjaGFuZ2UKKyAgICAgICAgRnJhdWRQcmV2ZW50
aW9u4oCTPlNvdXJjZUNsaWNrRnJhdWRQcmV2ZW50aW9uLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvY29hLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuQmFz
aWNQQ01UZXN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRyaWdnZXJBdHRyaWJ1dGlvbldp
dGhTdWJyZXNvdXJjZVJlZGlyZWN0KToKKyAgICAgICAgICAgIEV4dHJhY3RlZCBzaGFyZWQgY29k
ZS4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkRlc3RpbmF0aW9uV2ViVmlldyk6CisgICAg
ICAgICAgICBFeHRyYWN0ZWQgc2hhcmVkIGNvZGUuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpz
aWduVW5saW5rYWJsZVRva2VuQW5kU2VuZFNlY3JldFRva2VuKToKKyAgICAgICAgICAgIEV4dHJh
Y3RlZCBzaGFyZWQgY29kZS4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAgICAgTmV3IHRlc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuRGVzdGluYXRpb25DbGlja0Zy
YXVkUHJldmVudGlvbi4KKyAgICAgICAgICAgIEV4dHJhY3RlZCBzaGFyZWQgY29kZSBmcm9tIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50LlNvdXJjZUNsaWNrRnJhdWRQcmV2ZW50aW9uLgorCiAyMDIx
LTEyLTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbY3Nz
LXZhbHVlcy00XSBTdXBwb3J0IGAqdmlgIChpbmxpbmUpIGFuZCBgKnZiYCAoYmxvY2spIHZpZXdw
b3J0IHVuaXRzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRleCA3MTRhZmNhYjRjNWVkN2Y2
ODcyMDhjZTJlNzIzNGE5MWFjN2U4OWMzLi41ZTc3NzY2YmFkOWE3MDQyNWFhYjM5Y2NjZDIxYjBh
ODE4NGZkNTg3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
VEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFsaWRNaW5WYWx1ZXMpCiAgICAgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24geyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
U291cmNlSUQobWluNkJpdFZhbHVlKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNp
dGUgeyB3ZWJLaXRVUkwgfSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVz
dGluYXRpb25TaXRlIHsgZXhhbXBsZVVSTCB9LCAidGVzdC5idW5kbGUuaWRlbnRpZmllciIsIFdh
bGxUaW1lOjpub3coKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uRXBoZW1lcmFsOjpObyB9OwogICAgIGF0dHJpYnV0aW9uLmF0dHJpYnV0ZUFuZEdldEVhcmxp
ZXN0VGltZVRvU2VuZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2Vy
RGF0YShtaW42Qml0VmFsdWUsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQcmlvcml0eShtaW42
Qml0VmFsdWUpKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OklzUnVubmluZ0xh
eW91dFRlc3Q6Ok5vKTsKIAotICAgIEFTU0VSVF9FUShhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblJl
cG9ydEpTT04oKS0+dG9KU09OU3RyaW5nKCksICJ7XCJzb3VyY2VfZW5nYWdlbWVudF90eXBlXCI6
XCJjbGlja1wiLFwic291cmNlX3NpdGVcIjpcIndlYmtpdC5vcmdcIixcInNvdXJjZV9pZFwiOjAs
XCJhdHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUuY29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjow
LFwidmVyc2lvblwiOjJ9Iik7CisgICAgQVNTRVJUX0VRKGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9u
UmVwb3J0SlNPTigpLT50b0pTT05TdHJpbmcoKSwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5cGVc
IjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwid2Via2l0Lm9yZ1wiLFwic291cmNlX2lkXCI6
MCxcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5jb21cIixcInRyaWdnZXJfZGF0YVwi
OjAsXCJ2ZXJzaW9uXCI6M30iKTsKIH0KIAogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
VmFsaWRNaWRWYWx1ZXMpCkBAIC02Niw3ICs2Niw3IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQsIFZhbGlkTWlkVmFsdWVzKQogICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50IGF0dHJp
YnV0aW9uIHsgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZUlEKCh1aW50MzJfdCkxOTIp
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSB7IHdlYktpdFVSTCB9LCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyBleGFtcGxl
VVJMIH0sICJ0ZXN0LmJ1bmRsZS5pZGVudGlmaWVyIiwgV2FsbFRpbWU6Om5vdygpLCBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25FcGhlbWVyYWw6Ok5vIH07CiAg
ICAgYXR0cmlidXRpb24uYXR0cmlidXRlQW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCh1aW50MzJfdCk5LCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UHJpb3JpdHkoKHVpbnQzMl90KTIyKSksIFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpJc1J1bm5pbmdMYXlvdXRUZXN0OjpObyk7CiAKLSAgICBB
U1NFUlRfRVEoYXR0cmlidXRpb24uYXR0cmlidXRpb25SZXBvcnRKU09OKCktPnRvSlNPTlN0cmlu
ZygpLCAie1wic291cmNlX2VuZ2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRl
XCI6XCJ3ZWJraXQub3JnXCIsXCJzb3VyY2VfaWRcIjoxOTIsXCJhdHRyaWJ1dGVkX29uX3NpdGVc
IjpcImV4YW1wbGUuY29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjo5LFwidmVyc2lvblwiOjJ9Iik7Cisg
ICAgQVNTRVJUX0VRKGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uUmVwb3J0SlNPTigpLT50b0pTT05T
dHJpbmcoKSwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vf
c2l0ZVwiOlwid2Via2l0Lm9yZ1wiLFwic291cmNlX2lkXCI6MTkyLFwiYXR0cmlidXRlZF9vbl9z
aXRlXCI6XCJleGFtcGxlLmNvbVwiLFwidHJpZ2dlcl9kYXRhXCI6OSxcInZlcnNpb25cIjozfSIp
OwogfQogCiBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBWYWxpZE1heFZhbHVlcykKQEAg
LTc0LDcgKzc0LDcgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFsaWRNYXhWYWx1
ZXMpCiAgICAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24geyBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6U291cmNlSUQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZUlE
OjpNYXhFbnRyb3B5KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUgeyB3ZWJL
aXRVUkwgfSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlIHsgZXhhbXBsZVVSTCB9LCAidGVzdC5idW5kbGUuaWRlbnRpZmllciIsIFdhbGxUaW1lOjpu
b3coKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRXBoZW1l
cmFsOjpObyB9OwogICAgIGF0dHJpYnV0aW9uLmF0dHJpYnV0ZUFuZEdldEVhcmxpZXN0VGltZVRv
U2VuZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YShQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4RW50cm9weSwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlByaW9yaXR5KFByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpQcmlvcml0eTo6TWF4RW50cm9weSkpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6SXNSdW5uaW5nTGF5b3V0VGVzdDo6Tm8pOwogCi0gICAgQVNTRVJUX0VRKGF0dHJpYnV0aW9u
LmF0dHJpYnV0aW9uUmVwb3J0SlNPTigpLT50b0pTT05TdHJpbmcoKSwgIntcInNvdXJjZV9lbmdh
Z2VtZW50X3R5cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwid2Via2l0Lm9yZ1wiLFwi
c291cmNlX2lkXCI6MjU1LFwiYXR0cmlidXRlZF9vbl9zaXRlXCI6XCJleGFtcGxlLmNvbVwiLFwi
dHJpZ2dlcl9kYXRhXCI6MTUsXCJ2ZXJzaW9uXCI6Mn0iKTsKKyAgICBBU1NFUlRfRVEoYXR0cmli
dXRpb24uYXR0cmlidXRpb25SZXBvcnRKU09OKCktPnRvSlNPTlN0cmluZygpLCAie1wic291cmNl
X2VuZ2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCJ3ZWJraXQub3Jn
XCIsXCJzb3VyY2VfaWRcIjoyNTUsXCJhdHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUuY29t
XCIsXCJ0cmlnZ2VyX2RhdGFcIjoxNSxcInZlcnNpb25cIjozfSIpOwogfQogCiBURVNUKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCBFYXJsaWVzdFRpbWVUb1NlbmRBdHRyaWJ1dGlvbk1pbmltdW1E
ZWxheSkKQEAgLTEyNiw3ICsxMjYsNyBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBW
YWxpZENvbnZlcnNpb25VUkxzKQogCiBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBWYWxp
ZFNvdXJjZU5vbmNlKQogewotICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyAiQUJDREVGYWJjZGVmMDEyMzQ1Njc4
OSJfcyB9OworICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsTm9uY2UgeyAiQUJDREVGYWJjZGVmMDEyMzQ1Njc4OSJfcyB9OwogICAgIEFT
U0VSVF9UUlVFKGVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSk7CiB9CiAKQEAgLTI4MiwxOSArMjgy
LDE5IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEludmFsaWRDb252ZXJzaW9uV2l0
aERpc2FsbG93ZWRVUkxDb21wb25lbnRzKQogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwg
SW52YWxpZFNvdXJjZU5vbmNlKQogewogICAgIC8vIEZld2VyIHRoYW4gdGhlIHJlcXVyaWVkIG51
bWJlciBvZiBieXRlcy4KLSAgICBhdXRvIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgIkFCQ0RhYmNkMDEyMzQ1Njc4OSJfcyB9
OworICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBo
ZW1lcmFsTm9uY2UgeyAiQUJDRGFiY2QwMTIzNDU2Nzg5Il9zIH07CiAgICAgQVNTRVJUX0ZBTFNF
KGVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSk7CiAgICAgLy8gTW9yZSB0aGFuIHRoZSByZXF1cmll
ZCBudW1iZXIgb2YgYnl0ZXMuCi0gICAgZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyAiQUJDREVGR0hJYWJjZGVmZ2hpMDEyMzQ1
Njc4OSJfcyB9OworICAgIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkVwaGVtZXJhbE5vbmNlIHsgIkFCQ0RFRkdISWFiY2RlZmdoaTAxMjM0NTY3ODkiX3MgfTsKICAg
ICBBU1NFUlRfRkFMU0UoZXBoZW1lcmFsTm9uY2UuaXNWYWxpZCgpKTsKICAgICAvLyBJbGxlZ2Fs
LCBBU0NJSSBjaGFyYWN0ZXIgJy8nLgotICAgIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgIkFCQ0RFRmFiY2RlLzAxMjM0NTY3
ODkiX3MgfTsKKyAgICBlcGhlbWVyYWxOb25jZSA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpF
cGhlbWVyYWxOb25jZSB7ICJBQkNERUZhYmNkZS8wMTIzNDU2Nzg5Il9zIH07CiAgICAgQVNTRVJU
X0ZBTFNFKGVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSk7CiAgICAgLy8gSWxsZWdhbCwgbm9uLUFT
Q0lJIGNoYXJhY3RlciAnw6UnLgotICAgIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgIkFCQ0RFRmFiY2Rlw6UwMTIzNDU2Nzg5
IiB9OworICAgIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVt
ZXJhbE5vbmNlIHsgIkFCQ0RFRmFiY2Rlw6UwMTIzNDU2Nzg5IiB9OwogICAgIEFTU0VSVF9GQUxT
RShlcGhlbWVyYWxOb25jZS5pc1ZhbGlkKCkpOwogICAgIC8vIEVtcHR5IHN0cmluZy4KLSAgICBl
cGhlbWVyYWxOb25jZSA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VO
b25jZSB7IFN0cmluZ0ltcGw6OmVtcHR5KCkgfTsKKyAgICBlcGhlbWVyYWxOb25jZSA9IFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxOb25jZSB7IFN0cmluZ0ltcGw6OmVtcHR5KCkg
fTsKICAgICBBU1NFUlRfRkFMU0UoZXBoZW1lcmFsTm9uY2UuaXNWYWxpZCgpKTsKIH0KIApAQCAt
MzE4LDcgKzMxOCw3IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEludmFsaWRCbGlu
ZGVkU2VjcmV0KQogICAgIGF1dG8gc291cmNlVW5saW5rYWJsZVRva2VuID0gcGNtLnRva2VuU2ln
bmF0dXJlSlNPTigpOwogICAgIEVYUEVDVF9FUShzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmFzT2Jq
ZWN0KCktPnNpemUoKSwgMHVsKTsKIAotICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyAiQUJDREVGYWJjZGVmMDEy
MzQ1Njc4OSJfcyB9OworICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6RXBoZW1lcmFsTm9uY2UgeyAiQUJDREVGYWJjZGVmMDEyMzQ1Njc4OSJfcyB9Owog
ICAgIEVYUEVDVF9UUlVFKGVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSk7CiAgICAgcGNtLnNldEVw
aGVtZXJhbFNvdXJjZU5vbmNlKFdURk1vdmUoZXBoZW1lcmFsTm9uY2UpKTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50Q29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29j
b2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQppbmRleCAwN2I1NjJlMWFmNjI5NDY2
NDA2OGJjOWZiM2MwMjY3YWQ1YzU0MGMwLi40YTljNzI5OWVjMzg4YTdhZjA0M2ZiNTYzMzI0ZjI2
MzBlNmJiMjA0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5t
bQpAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogVEVTVChQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFsaWRCbGluZGVkU2VjcmV0KQogewotICAgIGF1dG8gZXBo
ZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9u
Y2UgeyAiQUJDREVGYWJjZGVmMDEyMzQ1Njc4OSJfcyB9OworICAgIGF1dG8gZXBoZW1lcmFsTm9u
Y2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2UgeyAiQUJDREVGYWJj
ZGVmMDEyMzQ1Njc4OSJfcyB9OwogICAgIEVYUEVDVF9UUlVFKGVwaGVtZXJhbE5vbmNlLmlzVmFs
aWQoKSk7CiAKICAgICBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBwY20oCkBAIC04
Myw3ICs4Myw3IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFZhbGlkQmxpbmRlZFNl
Y3JldCkKICAgICBFWFBFQ1RfU1RSRVEoc291cmNlVW5saW5rYWJsZVRva2VuLT5nZXRTdHJpbmco
InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiX3MpLnV0ZjgoKS5kYXRhKCksICJjbGljayIpOwogICAg
IEVYUEVDVF9TVFJFUShzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmdldFN0cmluZygic291cmNlX25v
bmNlIl9zKS51dGY4KCkuZGF0YSgpLCAiQUJDREVGYWJjZGVmMDEyMzQ1Njc4OSIpOwogICAgIEVY
UEVDVF9GQUxTRShzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmdldFN0cmluZygic291cmNlX3VubGlu
a2FibGVfdG9rZW4iX3MpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRKHNvdXJjZVVubGlua2Fi
bGVUb2tlbi0+Z2V0SW50ZWdlcigidmVyc2lvbiJfcyksIDIpOworICAgIEVYUEVDVF9FUShzb3Vy
Y2VVbmxpbmthYmxlVG9rZW4tPmdldEludGVnZXIoInZlcnNpb24iX3MpLCAzKTsKIAogICAgIC8v
IEdlbmVyYXRlIHRoZSBzaWduYXR1cmUuCiAgICAgYXV0byBibGluZGVkTWVzc2FnZSA9IGJhc2U2
NFVSTERlY29kZShzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmdldFN0cmluZygic291cmNlX3VubGlu
a2FibGVfdG9rZW4iX3MpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQppbmRleCBkMDY5NWQ0YTA3MmY0MDZh
NmIzZThhNmQzNzdkODEyMzJhYWU1Y2RjLi40NTFmOTRiZWY0OTQxMzY3MDQxNTdkNjAzNzQ3YWE3
ZDJiYWUyYzAyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0V2ZW50QXR0cmlidXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9FdmVudEF0dHJpYnV0aW9uLm1tCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBy
dW5CYXNpY1BDTVRlc3QoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiwgRnVu
Y3Rpb248dm9pZChXS1dlYlYKICAgICAgICAgICAgICAgICByZXF1ZXN0My5hcHBlbmQoJ1wwJyk7
CiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0My5kYXRhKCksICJQ
T1NUIC8gSFRUUC8xLjFcclxuIiwgcmVxdWVzdDMuc2l6ZSgpKSk7CiAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogYm9keUJlZ2luID0gc3RybnN0cihyZXF1ZXN0My5kYXRhKCksICJcclxuXHJc
biIsIHJlcXVlc3QzLnNpemUoKSkgKyBzdHJsZW4oIlxyXG5cclxuIik7Ci0gICAgICAgICAgICAg
ICAgRVhQRUNUX1NUUkVRKGJvZHlCZWdpbiwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5cGVcIjpc
ImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwiMTI3LjAuMC4xXCIsXCJzb3VyY2VfaWRcIjo0Mixc
ImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5jb21cIixcInRyaWdnZXJfZGF0YVwiOjEy
LFwidmVyc2lvblwiOjJ9Iik7CisgICAgICAgICAgICAgICAgRVhQRUNUX1NUUkVRKGJvZHlCZWdp
biwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwi
OlwiMTI3LjAuMC4xXCIsXCJzb3VyY2VfaWRcIjo0MixcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwi
ZXhhbXBsZS5jb21cIixcInRyaWdnZXJfZGF0YVwiOjEyLFwidmVyc2lvblwiOjN9Iik7CiAgICAg
ICAgICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTkyLDcgKzE5Miw0NSBAQCB2b2lkIHJ1bkJhc2ljUENNVGVzdChXS1dlYlZpZXdD
b25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKFdLV2ViVgogfQogCiAj
aWYgSEFWRShSU0FfQlNTQSkKLVRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEZyYXVkUHJl
dmVudGlvbikKKworZW51bSBjbGFzcyBUb2tlblNpZ25pbmdQYXJ0eSA6IGJvb2wgeyBTb3VyY2Us
IERlc3RpbmF0aW9uIH07CisKK3N0YXRpYyB2b2lkIHRyaWdnZXJBdHRyaWJ1dGlvbldpdGhTdWJy
ZXNvdXJjZVJlZGlyZWN0KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgYXR0
cmlidXRpb25EZXN0aW5hdGlvbk5vbmNlKQoreworICAgIGF1dG8gb3B0aW9uYWxRdWVyeVN0cmlu
ZyA9IGF0dHJpYnV0aW9uRGVzdGluYXRpb25Ob25jZS5pc0VtcHR5KCkgPyBhdHRyaWJ1dGlvbkRl
c3RpbmF0aW9uTm9uY2UgOiBtYWtlU3RyaW5nKCI/YXR0cmlidXRpb25EZXN0aW5hdGlvbk5vbmNl
PSIsIGF0dHJpYnV0aW9uRGVzdGluYXRpb25Ob25jZSk7CisgICAgYXV0byBsb2NhdGlvbiA9IG1h
a2VTdHJpbmcoIi8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3RyaWdnZXIt
YXR0cmlidXRpb24vMTIiLCBvcHRpb25hbFF1ZXJ5U3RyaW5nKTsKKyAgICBjb25uZWN0aW9uLnJl
Y2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbiwgbG9jYXRpb25dIChWZWN0b3I8Y2hhcj4mJiBy
ZXF1ZXN0MSkgeworICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QxLmRhdGEoKSwg
IkdFVCAvY29udmVyc2lvblJlcXVlc3RCZWZvcmVSZWRpcmVjdCBIVFRQLzEuMVxyXG4iLCByZXF1
ZXN0MS5zaXplKCkpKTsKKyAgICAgICAgYXV0byByZWRpcmVjdCA9IG1ha2VTdHJpbmcoIkhUVFAv
MS4xIDMwMiBGb3VuZFxyXG5Mb2NhdGlvbjogIiwgbG9jYXRpb24sICJcclxuQ29udGVudC1MZW5n
dGg6IDBcclxuXHJcbiIpLnV0ZjgoKS5kYXRhKCk7CisgICAgICAgIGNvbm5lY3Rpb24uc2VuZChy
ZWRpcmVjdCwgW2Nvbm5lY3Rpb24sIGxvY2F0aW9uXSB7CisgICAgICAgICAgICBjb25uZWN0aW9u
LnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbiwgbG9jYXRpb25dIChWZWN0b3I8Y2hhcj4m
JiByZXF1ZXN0MikgeworICAgICAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWRIdHRwR2V0U3RyaW5n
ID0gbWFrZVN0cmluZygiR0VUICIsIGxvY2F0aW9uLCAiIEhUVFAvMS4xXHJcbiIpLnV0ZjgoKS5k
YXRhKCk7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0Mi5kYXRh
KCksIGV4cGVjdGVkSHR0cEdldFN0cmluZywgcmVxdWVzdDIuc2l6ZSgpKSk7CisgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogcmVzcG9uc2UgPSAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAwXHJcblxyXG4iOworICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb24uc2VuZChyZXNwb25zZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIHJ1bkRlc3RpbmF0aW9uV2ViVmlldyhSZXRh
aW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3LCBOU1VSTCAqc2VydmVyVVJMKQoreworICAgIFt3ZWJW
aWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRl
c3Rpbmc6c2VydmVyVVJMIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeeworICAgICAgICBbd2ViVmlldyBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVy
cmlkZVRpbWVyRm9yVGVzdGluZzpZRVMgY29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICAgICAgICAg
IFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVG9rZW5QdWJs
aWNLZXlVUkxGb3JUZXN0aW5nOnNlcnZlclVSTCBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAg
ICAgICAgICAgIFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9u
VG9rZW5TaWduYXR1cmVVUkxGb3JUZXN0aW5nOnNlcnZlclVSTCBjb21wbGV0aW9uSGFuZGxlcjpe
eworICAgICAgICAgICAgICAgICAgICBbd2ViVmlldyBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBcHBCdW5kbGVJREZvclRlc3Rpbmc6QCJ0ZXN0LmJ1bmRsZS5pZCIgY29tcGxldGlvbkhhbmRs
ZXI6XnsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5TU3RyaW5nICpodG1sID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCI8c2NyaXB0PnNldFRpbWVvdXQoZnVuY3Rpb24oKXsgZmV0Y2go
JyVAY29udmVyc2lvblJlcXVlc3RCZWZvcmVSZWRpcmVjdCcse21vZGU6J25vLWNvcnMnfSk7IH0s
IDEwMCk7PC9zY3JpcHQ+Iiwgc2VydmVyVVJMXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFt3
ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpleGFtcGxlVVJMKCldOworICAgICAg
ICAgICAgICAgICAgICB9XTsKKyAgICAgICAgICAgICAgICB9XTsKKyAgICAgICAgICAgIH1dOwor
ICAgICAgICB9XTsKKyAgICB9XTsKK30KKworc3RhdGljIHZvaWQgc2lnblVubGlua2FibGVUb2tl
bkFuZFNlbmRTZWNyZXRUb2tlbihUb2tlblNpZ25pbmdQYXJ0eSBzaWduaW5nUGFydHkpCiB7CiAg
ICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0TmV0d29ya1Byb2Nlc3NTdXNwZW5zaW9uQWxsb3dl
ZEZvclRlc3Rpbmc6Tk9dOwogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwpAQCAtMjIyLDEyICsyNjAs
MTUgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgRnJhdWRQcmV2ZW50aW9uKQogICAg
IGF1dG8gd3JhcHBlZEtleUJ5dGVzID0gd3JhcFB1YmxpY0tleVdpdGhSU0FQU1NPSUQoV1RGTW92
ZShyYXdLZXlCeXRlcykpOwogCiAgICAgYXV0byBrZXlEYXRhID0gYmFzZTY0VVJMRW5jb2RlVG9T
dHJpbmcod3JhcHBlZEtleUJ5dGVzLmRhdGEoKSwgd3JhcHBlZEtleUJ5dGVzLnNpemUoKSk7Ci0K
ICAgICAvLyBUaGUgc2VydmVyLgotICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFsmZG9uZSwgY29ubmVj
dGlvbkNvdW50ID0gMCwgJnJzYVByaXZhdGVLZXksICZtb2R1bHVzTkJ5dGVzLCAmcm5nLCAma2V5
RGF0YSwgJnNlY0tleV0gKENvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgSFRU
UFNlcnZlciBzZXJ2ZXIoW3NpZ25pbmdQYXJ0eSwgJmRvbmUsIGNvbm5lY3Rpb25Db3VudCA9IHNp
Z25pbmdQYXJ0eSA9PSBUb2tlblNpZ25pbmdQYXJ0eTo6U291cmNlID8gMSA6IDAsICZyc2FQcml2
YXRlS2V5LCAmbW9kdWx1c05CeXRlcywgJnJuZywgJmtleURhdGEsICZzZWNLZXldIChDb25uZWN0
aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNv
dW50KSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhU
VFBSZXF1ZXN0KFtjb25uZWN0aW9uLCAmcnNhUHJpdmF0ZUtleSwgJm1vZHVsdXNOQnl0ZXMsICZy
bmcsICZrZXlEYXRhLCAmZG9uZSwgJnNlY0tleV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QxKSB7
CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShzaWduaW5nUGFydHkgPT0gVG9rZW5TaWduaW5nUGFy
dHk6OkRlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgIHRyaWdnZXJBdHRyaWJ1dGlvbldpdGhTdWJy
ZXNvdXJjZVJlZGlyZWN0KGNvbm5lY3Rpb24sICJBQkNERUZhYmNkZWYwMTIzNDU2Nzg5Iik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlv
bi5yZWNlaXZlSFRUUFJlcXVlc3QoW3NpZ25pbmdQYXJ0eSwgY29ubmVjdGlvbiwgJnJzYVByaXZh
dGVLZXksICZtb2R1bHVzTkJ5dGVzLCAmcm5nLCAma2V5RGF0YSwgJmRvbmUsICZzZWNLZXldIChW
ZWN0b3I8Y2hhcj4mJiByZXF1ZXN0MSkgewogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0
cm5zdHIocmVxdWVzdDEuZGF0YSgpLCAiR0VUIC8gSFRUUC8xLjFcclxuIiwgcmVxdWVzdDEuc2l6
ZSgpKSk7CiAKICAgICAgICAgICAgICAgICAvLyBFeGFtcGxlIHJlc3BvbnNlOiB7ICJ0b2tlbl9w
dWJsaWNfa2V5IjogIkFCQ0QiIH0uICJBQkNEIiBzaG91bGQgYmUgQmFzZTY0VVJMIGVuY29kZWQu
CkBAIC0yMzUsMTIgKzI3NiwxMiBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBGcmF1
ZFByZXZlbnRpb24pCiAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LVR5cGU6IGFwcGxpY2F0
aW9uL2pzb25cclxuIgogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6ICIsIDI0
ICsga2V5RGF0YS5sZW5ndGgoKSwgIlxyXG5cclxuIgogICAgICAgICAgICAgICAgICAgICAie1wi
dG9rZW5fcHVibGljX2tleVwiOiBcIiIsIGtleURhdGEsICJcIn0iKTsKLSAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXNwb25zZSksIFtjb25uZWN0aW9uLCAmcnNhUHJp
dmF0ZUtleSwgJm1vZHVsdXNOQnl0ZXMsICZybmcsICZrZXlEYXRhLCAmZG9uZSwgJnNlY0tleV0g
ewotICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29u
bmVjdGlvbiwgJnJzYVByaXZhdGVLZXksICZtb2R1bHVzTkJ5dGVzLCAmcm5nLCAma2V5RGF0YSwg
JmRvbmUsICZzZWNLZXldIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0MikgeworICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKHJlc3BvbnNlKSwgW3NpZ25pbmdQYXJ0eSwgY29u
bmVjdGlvbiwgJnJzYVByaXZhdGVLZXksICZtb2R1bHVzTkJ5dGVzLCAmcm5nLCAma2V5RGF0YSwg
JmRvbmUsICZzZWNLZXldIHsKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZl
SFRUUFJlcXVlc3QoW3NpZ25pbmdQYXJ0eSwgY29ubmVjdGlvbiwgJnJzYVByaXZhdGVLZXksICZt
b2R1bHVzTkJ5dGVzLCAmcm5nLCAma2V5RGF0YSwgJmRvbmUsICZzZWNLZXldIChWZWN0b3I8Y2hh
cj4mJiByZXF1ZXN0MikgewogICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3Ry
bnN0cihyZXF1ZXN0Mi5kYXRhKCksICJQT1NUIC8gSFRUUC8xLjFcclxuIiwgcmVxdWVzdDIuc2l6
ZSgpKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVxdWVzdDJTdHJpbmcgPSBT
dHJpbmcocmVxdWVzdDIuZGF0YSgpLCByZXF1ZXN0Mi5zaXplKCkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byBrZXkgPSBTdHJpbmcoInNvdXJjZV91bmxpbmthYmxlX3Rva2VuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGtleSA9IHNpZ25pbmdQYXJ0eSA9PSBUb2tlblNp
Z25pbmdQYXJ0eTo6U291cmNlID8gU3RyaW5nKCJzb3VyY2VfdW5saW5rYWJsZV90b2tlbiIpIDog
U3RyaW5nKCJkZXN0aW5hdGlvbl91bmxpbmthYmxlX3Rva2VuIik7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvIHN0YXJ0ID0gcmVxdWVzdDJTdHJpbmcuZmluZChrZXkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhcnQgKz0ga2V5Lmxlbmd0aCgpICsgMzsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gZW5kID0gcmVxdWVzdDJTdHJpbmcuZmluZCgnIicsIHN0YXJ0KTsKQEAg
LTI1OCw4ICsyOTksOCBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBGcmF1ZFByZXZl
bnRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZTogYXBwbGlj
YXRpb24vanNvblxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVu
Z3RoOiAiLCAyNCArIHVubGlua2FibGVUb2tlbi5sZW5ndGgoKSwgIlxyXG5cclxuIgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ7XCJ1bmxpbmthYmxlX3Rva2VuXCI6IFwiIiwgdW5saW5r
YWJsZVRva2VuLCAiXCJ9Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNl
bmQoV1RGTW92ZShyZXNwb25zZSksIFtjb25uZWN0aW9uLCAma2V5RGF0YSwgJmRvbmUsIHVubGlu
a2FibGVUb2tlbiwgdG9rZW4sICZzZWNLZXldIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbiwgJmtleURhdGEsICZk
b25lLCB1bmxpbmthYmxlVG9rZW4sIHRva2VuLCAmc2VjS2V5XSAoVmVjdG9yPGNoYXI+JiYgcmVx
dWVzdDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZNb3Zl
KHJlc3BvbnNlKSwgW3NpZ25pbmdQYXJ0eSwgY29ubmVjdGlvbiwgJmtleURhdGEsICZkb25lLCB1
bmxpbmthYmxlVG9rZW4sIHRva2VuLCAmc2VjS2V5XSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW3NpZ25pbmdQYXJ0eSwgY29ubmVj
dGlvbiwgJmtleURhdGEsICZkb25lLCB1bmxpbmthYmxlVG9rZW4sIHRva2VuLCAmc2VjS2V5XSAo
VmVjdG9yPGNoYXI+JiYgcmVxdWVzdDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0My5kYXRhKCksICJHRVQgLyBIVFRQLzEuMVxy
XG4iLCByZXF1ZXN0My5zaXplKCkpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBFeGFtcGxlIHJlc3BvbnNlOiB7ICJ0b2tlbl9wdWJsaWNfa2V5IjogIkFCQ0QiIH0uICJB
QkNEIiBzaG91bGQgYmUgQmFzZTY0VVJMIGVuY29kZWQuCkBAIC0yNjcsMTAgKzMwOCwxMCBAQCBU
RVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBGcmF1ZFByZXZlbnRpb24pCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29u
XHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0
aDogIiwgMjQgKyBrZXlEYXRhLmxlbmd0aCgpLCAiXHJcblxyXG4iCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAie1widG9rZW5fcHVibGljX2tleVwiOiBcIiIsIGtleURhdGEs
ICJcIn0iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5k
KFdURk1vdmUocmVzcG9uc2UpLCBbY29ubmVjdGlvbiwgJmRvbmUsIHVubGlua2FibGVUb2tlbiwg
dG9rZW4sICZzZWNLZXldIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uLCAmZG9uZSwgdW5saW5rYWJs
ZVRva2VuLCB0b2tlbiwgJnNlY0tleV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3Q0KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKHJlc3Bv
bnNlKSwgW3NpZ25pbmdQYXJ0eSwgY29ubmVjdGlvbiwgJmRvbmUsIHVubGlua2FibGVUb2tlbiwg
dG9rZW4sICZzZWNLZXldIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtzaWduaW5nUGFydHksIGNvbm5lY3Rpb24sICZk
b25lLCB1bmxpbmthYmxlVG9rZW4sIHRva2VuLCAmc2VjS2V5XSAoVmVjdG9yPGNoYXI+JiYgcmVx
dWVzdDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShzdHJuc3RyKHJlcXVlc3Q0LmRhdGEoKSwgIlBPU1QgLyBIVFRQLzEuMVxyXG4iLCByZXF1
ZXN0NC5zaXplKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3Q0LmRhdGEoKSwgIntcInNvdXJjZV9lbmdhZ2VtZW50
X3R5cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwiMTI3LjAuMC4xXCIsXCJzb3VyY2Vf
aWRcIjo0MixcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5jb21cIixcInRyaWdnZXJf
ZGF0YVwiOjEyLFwidmVyc2lvblwiOjIsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3Q0LmRhdGEoKSwgIntcInNvdXJj
ZV9lbmdhZ2VtZW50X3R5cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwiMTI3LjAuMC4x
XCIsXCJzb3VyY2VfaWRcIjo0MixcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5jb21c
IixcInRyaWdnZXJfZGF0YVwiOjEyLFwidmVyc2lvblwiOjMsIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdDQuc2l6ZSgpKSk7CiAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RybnN0cihyZXF1
ZXN0NC5kYXRhKCksIHRva2VuLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3Q0LnNpemUoKSkpOwpAQCAt
Mjc4LDcgKzMxOSw3IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEZyYXVkUHJldmVu
dGlvbikKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVx
dWVzdDRTdHJpbmcgPSBTdHJpbmcocmVxdWVzdDQuZGF0YSgpLCByZXF1ZXN0NC5zaXplKCkpOwog
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBrZXkgPSBTdHJp
bmcoInNvdXJjZV9zZWNyZXRfdG9rZW4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdXRvIGtleSA9IHNpZ25pbmdQYXJ0eSA9PSBUb2tlblNpZ25pbmdQYXJ0eTo6
U291cmNlID8gU3RyaW5nKCJzb3VyY2Vfc2VjcmV0X3Rva2VuIikgOiBTdHJpbmcoImRlc3RpbmF0
aW9uX3NlY3JldF90b2tlbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gc3RhcnQgPSByZXF1ZXN0NFN0cmluZy5maW5kKGtleSk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgKz0ga2V5Lmxlbmd0aCgpICsgMzsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGVuZCA9IHJlcXVlc3Q0
U3RyaW5nLmZpbmQoJyInLCBzdGFydCk7CkBAIC0yODYsNyArMzI3LDcgQEAgVEVTVChQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCwgRnJhdWRQcmV2ZW50aW9uKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gdG9rZW5WZWN0b3IgPSBiYXNlNjRVUkxEZWNvZGUodG9r
ZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdG9rZW5E
YXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczp0b2tlblZlY3Rvci0+
ZGF0YSgpIGxlbmd0aDp0b2tlblZlY3Rvci0+c2l6ZSgpXSk7CiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrZXkgPSBTdHJpbmcoInNvdXJjZV9zZWNyZXRfdG9rZW5f
c2lnbmF0dXJlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5
ID0gc2lnbmluZ1BhcnR5ID09IFRva2VuU2lnbmluZ1BhcnR5OjpTb3VyY2UgPyBTdHJpbmcoInNv
dXJjZV9zZWNyZXRfdG9rZW5fc2lnbmF0dXJlIikgOiBTdHJpbmcoImRlc3RpbmF0aW9uX3NlY3Jl
dF90b2tlbl9zaWduYXR1cmUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGFydCA9IHJlcXVlc3Q0U3RyaW5nLmZpbmQoa2V5KTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGFydCArPSBrZXkubGVuZ3RoKCkgKyAzOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IHJlcXVlc3Q0U3RyaW5nLmZp
bmQoJyInLCBzdGFydCk7CkBAIC0zMDUsMjEgKzM0Niw5IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIEZyYXVkUHJldmVudGlvbikKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAg
IGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXSAoVmVjdG9yPGNoYXI+
JiYgcmVxdWVzdDEpIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVl
c3QxLmRhdGEoKSwgIkdFVCAvY29udmVyc2lvblJlcXVlc3RCZWZvcmVSZWRpcmVjdCBIVFRQLzEu
MVxyXG4iLCByZXF1ZXN0MS5zaXplKCkpKTsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBy
ZWRpcmVjdCA9ICJIVFRQLzEuMSAzMDIgRm91bmRcclxuIgotICAgICAgICAgICAgICAgICAgICAi
TG9jYXRpb246IC8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3RyaWdnZXIt
YXR0cmlidXRpb24vMTJcclxuIgotICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6
IDBcclxuXHJcbiI7Ci0gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKHJlZGlyZWN0LCBb
Y29ubmVjdGlvbl0gewotICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQ
UmVxdWVzdChbY29ubmVjdGlvbl0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QyKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QyLmRhdGEoKSwgIkdF
VCAvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0
aW9uLzEyIEhUVFAvMS4xXHJcbiIsIHJlcXVlc3QyLnNpemUoKSkpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciogcmVzcG9uc2UgPSAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuXHJcbiI7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQocmVzcG9uc2UpOwotICAgICAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwor
ICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShzaWduaW5nUGFydHkgPT0g
VG9rZW5TaWduaW5nUGFydHk6OlNvdXJjZSk7CisgICAgICAgICAgICB0cmlnZ2VyQXR0cmlidXRp
b25XaXRoU3VicmVzb3VyY2VSZWRpcmVjdChjb25uZWN0aW9uLCBlbXB0eVN0cmluZygpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6
Okh0dHBzKTsKQEAgLTMyNywyNCArMzU2LDI0IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsIEZyYXVkUHJldmVudGlvbikKIAogICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdXaXRob3V0
VXNpbmdEYWVtb24oKTsKICAgICB3ZWJWaWV3LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRl
bGVnYXRlQWxsb3dpbmdBbGxUTFMoKTsKLSAgICBbd2ViVmlldyBfYWRkRXZlbnRBdHRyaWJ1dGlv
bldpdGhTb3VyY2VJRDo0MiBkZXN0aW5hdGlvblVSTDpleGFtcGxlVVJMKCkgc291cmNlRGVzY3Jp
cHRpb246QCJ0ZXN0IHNvdXJjZSBkZXNjcmlwdGlvbiIgcHVyY2hhc2VyOkAidGVzdCBwdXJjaGFz
ZXIiIHJlcG9ydEVuZHBvaW50OnNlcnZlclVSTCBvcHRpb25hbE5vbmNlOkAiQUJDREVGYWJjZGVm
MDEyMzQ1Njc4OSIgYXBwbGljYXRpb25CdW5kbGVJRDpAInRlc3QuYnVuZGxlLmlkIiBlcGhlbWVy
YWw6Tk9dOworICAgIGF1dG8gY2xpY2tOb25jZSA9IHNpZ25pbmdQYXJ0eSA9PSBUb2tlblNpZ25p
bmdQYXJ0eTo6U291cmNlID8gQCJBQkNERUZhYmNkZWYwMTIzNDU2Nzg5IiA6IG5pbDsKKyAgICBb
d2ViVmlldyBfYWRkRXZlbnRBdHRyaWJ1dGlvbldpdGhTb3VyY2VJRDo0MiBkZXN0aW5hdGlvblVS
TDpleGFtcGxlVVJMKCkgc291cmNlRGVzY3JpcHRpb246QCJ0ZXN0IHNvdXJjZSBkZXNjcmlwdGlv
biIgcHVyY2hhc2VyOkAidGVzdCBwdXJjaGFzZXIiIHJlcG9ydEVuZHBvaW50OnNlcnZlclVSTCBv
cHRpb25hbE5vbmNlOmNsaWNrTm9uY2UgYXBwbGljYXRpb25CdW5kbGVJRDpAInRlc3QuYnVuZGxl
LmlkIiBlcGhlbWVyYWw6Tk9dOwogICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRl
RGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOwogICAgIFtb
d2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlIF90cnVzdFNlcnZlckZvckxv
Y2FsUENNVGVzdGluZzpzZWNUcnVzdEZyb21DZXJ0aWZpY2F0ZUNoYWluKEBbKGlkKXRlc3RDZXJ0
aWZpY2F0ZSgpLmdldCgpXSkuZ2V0KCldOwogCi0gICAgW3dlYlZpZXcgX3NldFByaXZhdGVDbGlj
a01lYXN1cmVtZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZzpzZXJ2ZXJVUkwgZGVz
dGluYXRpb25VUkw6ZXhhbXBsZVVSTCgpIGNvbXBsZXRpb25IYW5kbGVyOl57Ci0gICAgICAgIFt3
ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5n
OllFUyBjb21wbGV0aW9uSGFuZGxlcjpeewotICAgICAgICAgICAgW3dlYlZpZXcgX3NldFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25Ub2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc6
c2VydmVyVVJMIGNvbXBsZXRpb25IYW5kbGVyOl57Ci0gICAgICAgICAgICAgICAgW3dlYlZpZXcg
X3NldFByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25Ub2tlblNpZ25hdHVyZVVSTEZv
clRlc3Rpbmc6c2VydmVyVVJMIGNvbXBsZXRpb25IYW5kbGVyOl57Ci0gICAgICAgICAgICAgICAg
ICAgIFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRsZUlERm9yVGVz
dGluZzpAInRlc3QuYnVuZGxlLmlkIiBjb21wbGV0aW9uSGFuZGxlcjpeewotICAgICAgICAgICAg
ICAgICAgICAgICAgTlNTdHJpbmcgKmh0bWwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IjxzY3JpcHQ+c2V0VGltZW91dChmdW5jdGlvbigpeyBmZXRjaCgnJUBjb252ZXJzaW9uUmVxdWVz
dEJlZm9yZVJlZGlyZWN0Jyx7bW9kZTonbm8tY29ycyd9KTsgfSwgMTAwKTs8L3NjcmlwdD4iLCBz
ZXJ2ZXJVUkxdOwotICAgICAgICAgICAgICAgICAgICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6aHRtbCBiYXNlVVJMOmV4YW1wbGVVUkwoKV07Ci0gICAgICAgICAgICAgICAgICAgIH1dOwot
ICAgICAgICAgICAgICAgIH1dOwotICAgICAgICAgICAgfV07Ci0gICAgICAgIH1dOwotICAgIH1d
OworICAgIHJ1bkRlc3RpbmF0aW9uV2ViVmlldyh3ZWJWaWV3LCBzZXJ2ZXJVUkwpOwogICAgIFV0
aWw6OnJ1bigmZG9uZSk7CiB9CisKK1RFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFNvdXJj
ZUNsaWNrRnJhdWRQcmV2ZW50aW9uKQoreworICAgIHNpZ25VbmxpbmthYmxlVG9rZW5BbmRTZW5k
U2VjcmV0VG9rZW4oVG9rZW5TaWduaW5nUGFydHk6OlNvdXJjZSk7Cit9CisKK1RFU1QoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsIERlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZlbnRpb24pCit7Cisg
ICAgc2lnblVubGlua2FibGVUb2tlbkFuZFNlbmRTZWNyZXRUb2tlbihUb2tlblNpZ25pbmdQYXJ0
eTo6RGVzdGluYXRpb24pOworfQogI2VuZGlmCiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsIEJhc2ljKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDFjMDI4ODJhNTQ0OTk5OGZmMDc1MmRjMTNhMWVlNTQ4ODczYTk0
ZmUuLjA2NDBkZDZlOWUyN2IyOGY1YzVjZjAyZTEzNGQwMjM1OTI5YWEwYjYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAyMS0xMi0wMiAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNv
bT4KKworICAgICAgICBQQ006IFVubGlua2FibGUgdG9rZW5zIGZvciB0cmlnZ2VyaW5nIGV2ZW50
IHRvIHByZXZlbnQgZnJhdWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIzMzY3MworICAgICAgICA8cmRhcjovLzc5NDI2MzQ3PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIGNoYW5nZXMgYXJlIGEg
cmVwb3J0IHZlcnNpb24gYnVtcCAyLT4zLgorCisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtZmV0Y2gta2Vl
cGFsaXZlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2V4cGlyZWQtYXR0cmlidXRpb24tcmVwb3J0LWdldHMtc2VudC1vbi1zZXNzaW9u
LXN0YXJ0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01l
YXN1cmVtZW50L211bHRpcGxlLWFwcC1idW5kbGUtaWRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3NlbmQtYXR0cmlidXRpb24tY29u
dmVyc2lvbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1z
b3VyY2Utbm9uY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvdHJpZ2dlcmluZy1ldmVudC13aXRoLWF0dHJpYnV0aW9uLXNvdXJjZS10
aHJvdWdoLWZldGNoLWtlZXBhbGl2ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0v
aW9zL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmlidXRpb24tY29udmVy
c2lvbi10aHJvdWdoLWZldGNoLWtlZXBhbGl2ZS1leHBlY3RlZC50eHQ6CisKIDIwMjEtMTItMDIg
IE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS1h
ZGQgc3VwcG9ydCBvZiBpbWFnZSBjb250cm9sIG1lbnVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJz
aW9uLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmlidXRpb24tY29udmVyc2lvbi10
aHJvdWdoLWZldGNoLWtlZXBhbGl2ZS1leHBlY3RlZC50eHQKaW5kZXggMmQxYTE2MDViYTRhYzli
NjU1ZjEzYTM2NjhjNDY3ODFjMzEzZDEwNC4uN2E5ODhkNGI4MzE1ZjIyMDZhM2RjNGMzODdiMGY2
ZWQxOGI5NjlhMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtZmV0Y2gta2VlcGFs
aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1mZXRjaC1rZWVwYWxp
dmUtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBbUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2Ug
dGhlIFVSTCBwYXRoIGNvbnRhaW5lZCB1bnJlY29nbml6ZWQgcGFydHMuCitDT05TT0xFIE1FU1NB
R0U6IFtQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3Qg
YWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMIHBhdGggY29udGFpbmVkIHVucmVjb2duaXplZCBwYXJ0
cy4KIENPTlNPTEUgTUVTU0FHRTogT3JpZ2luIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCBpcyBub3Qg
YWxsb3dlZCBieSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4uIFN0YXR1cyBjb2RlOiA0MDQK
IENPTlNPTEUgTUVTU0FHRTogRmV0Y2ggQVBJIGNhbm5vdCBsb2FkIGh0dHBzOi8vMTI3LjAuMC4x
Ojg0NDMvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJp
YnV0aW9uL3doYXRldmVyIGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3MuCiBUZXN0cyB0cmln
Z2VyaW5nIG9mIHByaXZhdGUgY2xpY2sgbWVhc3VyZW1lbnQgYXR0cmlidXRpb25zIHdpdGggZmV0
Y2ggb24gcGFnZWhpZGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L2V4cGlyZWQtYXR0cmlidXRpb24tcmVwb3J0LWdldHMtc2VudC1v
bi1zZXNzaW9uLXN0YXJ0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvZXhwaXJlZC1hdHRyaWJ1dGlvbi1yZXBvcnQtZ2V0cy1zZW50
LW9uLXNlc3Npb24tc3RhcnQtZXhwZWN0ZWQudHh0CmluZGV4IGMzZDkyOWFhYzU2NjFjNjkxZDRj
MzVjZDk0YmFiZTc3YjdiYWU5ZDQuLjAwY2ZmZDk5NGE2MjA1ZTIzYWIwYzQ2YzU0ZTFhNjA0ODc0
ZjU3ZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvZXhwaXJlZC1hdHRyaWJ1dGlvbi1yZXBvcnQtZ2V0cy1zZW50LW9uLXNlc3Npb24t
c3RhcnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvZXhwaXJlZC1hdHRyaWJ1dGlvbi1yZXBvcnQtZ2V0cy1zZW50LW9uLXNl
c3Npb24tc3RhcnQtZXhwZWN0ZWQudHh0CkBAIC0xMSw3ICsxMSw3IEBAIENvbnRlbnQgdHlwZTog
YXBwbGljYXRpb24vanNvbgogUkVRVUVTVF9VUkk6IC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9y
ZXNvdXJjZXMvY29udmVyc2lvblJlcG9ydC5weQogTm8gY29va2llcyBpbiBhdHRyaWJ1dGlvbiBy
ZXF1ZXN0LgogUmVxdWVzdCBib2R5OgoteyJzb3VyY2VfZW5nYWdlbWVudF90eXBlIjoiY2xpY2si
LCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6MywiYXR0cmlidXRlZF9vbl9z
aXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwidmVyc2lvbiI6Mn0KK3sic291cmNl
X2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIxMjcuMC4wLjEiLCJzb3Vy
Y2VfaWQiOjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6
MTIsInZlcnNpb24iOjN9CiAKIAogTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQg
ZGF0YS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvbXVsdGlwbGUtYXBwLWJ1bmRsZS1pZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9tdWx0aXBsZS1hcHAtYnVuZGxl
LWlkcy1leHBlY3RlZC50eHQKaW5kZXggZmEzYTVmNDkwMjA4NGY5NDU2M2IwMzNmMjY5NzQyODcw
YTY5MjQyNy4uZTViN2YxNzhlYTRlNjM4Y2FjNjQwMGVhYzdjM2UxNDZjNmI2MGJlYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9tdWx0
aXBsZS1hcHAtYnVuZGxlLWlkcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9tdWx0aXBsZS1hcHAtYnVuZGxlLWlkcy1leHBl
Y3RlZC50eHQKQEAgLTEyLDcgKzEyLDcgQEAgQ29udGVudCB0eXBlOiBhcHBsaWNhdGlvbi9qc29u
CiBSRVFVRVNUX1VSSTogL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9jb252ZXJz
aW9uUmVwb3J0LnB5P3JlY2lwaWVudD1DbGlja1NvdXJjZQogTm8gY29va2llcyBpbiBhdHRyaWJ1
dGlvbiByZXF1ZXN0LgogUmVxdWVzdCBib2R5OgoteyJzb3VyY2VfZW5nYWdlbWVudF90eXBlIjoi
Y2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6MzMsImF0dHJpYnV0
ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZlcnNpb24iOjJ9Cit7
InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9zaXRlIjoiMTI3LjAuMC4x
Iiwic291cmNlX2lkIjozMywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dl
cl9kYXRhIjoxMiwidmVyc2lvbiI6M30KIAogCiAtLS0tLS0tLQpAQCAtMjQsNyArMjQsNyBAQCBD
b250ZW50IHR5cGU6IGFwcGxpY2F0aW9uL2pzb24KIFJFUVVFU1RfVVJJOiAvcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQucHk/cmVjaXBpZW50PUNsaWNr
RGVzdGluYXRpb24KIE5vIGNvb2tpZXMgaW4gYXR0cmlidXRpb24gcmVxdWVzdC4KIFJlcXVlc3Qg
Ym9keToKLXsic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIx
MjcuMC4wLjEiLCJzb3VyY2VfaWQiOjMzLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2NhbGhvc3Qi
LCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjoyfQoreyJzb3VyY2VfZW5nYWdlbWVudF90eXBl
IjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6MzMsImF0dHJp
YnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZlcnNpb24iOjN9
CiAKIFVuYXR0cmlidXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50czoKIFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50IDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJl
cXVlc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC1leHBlY3RlZC50
eHQKaW5kZXggZTZhZDkxMTczOGZhOGUxOTczMGNhOWI0M2VkYjlmMmYwMDNiZGVhNS4uMTI3MTNi
NjY5NmUwMjJlMWE2MWNmYTZkNWFlNTIyMzkxZTI0NWYzOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9zZW5kLWF0dHJpYnV0aW9uLWNv
bnZlcnNpb24tcmVxdWVzdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVx
dWVzdC1leHBlY3RlZC50eHQKQEAgLTE2LDcgKzE2LDcgQEAgQ29udGVudCB0eXBlOiBhcHBsaWNh
dGlvbi9qc29uCiBSRVFVRVNUX1VSSTogL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNl
cy9jb252ZXJzaW9uUmVwb3J0LnB5P3JlY2lwaWVudD1DbGlja1NvdXJjZQogTm8gY29va2llcyBp
biBhdHRyaWJ1dGlvbiByZXF1ZXN0LgogUmVxdWVzdCBib2R5OgoteyJzb3VyY2VfZW5nYWdlbWVu
dF90eXBlIjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6Mywi
YXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwidmVyc2lv
biI6Mn0KK3sic291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIx
MjcuMC4wLjEiLCJzb3VyY2VfaWQiOjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIs
InRyaWdnZXJfZGF0YSI6MTIsInZlcnNpb24iOjN9CiAKIAogLS0tLS0tLS0KQEAgLTI4LDcgKzI4
LDcgQEAgQ29udGVudCB0eXBlOiBhcHBsaWNhdGlvbi9qc29uCiBSRVFVRVNUX1VSSTogL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9jb252ZXJzaW9uUmVwb3J0LnB5P3JlY2lwaWVu
dD1DbGlja0Rlc3RpbmF0aW9uCiBObyBjb29raWVzIGluIGF0dHJpYnV0aW9uIHJlcXVlc3QuCiBS
ZXF1ZXN0IGJvZHk6Ci17InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9z
aXRlIjoiMTI3LjAuMC4xIiwic291cmNlX2lkIjozLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2Nh
bGhvc3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjoyfQoreyJzb3VyY2VfZW5nYWdlbWVu
dF90eXBlIjoiY2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6Mywi
YXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwidmVyc2lv
biI6M30KIAogCiAtLS0tLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9zdG9yZS1wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdp
dGgtc291cmNlLW5vbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRo
LXNvdXJjZS1ub25jZS1leHBlY3RlZC50eHQKaW5kZXggYWYwMTlkOGEwOTk1Y2IxYTg1NzJlYTQw
YTVlMGE4NjZlYzg0YTJmMC4uZDE3ZGU0NDg2MTE1NGExYmQzMzM3OWFmNjAzMGI2OWI1NjhmYjk5
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9zdG9yZS1wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1
cmVtZW50L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2Ut
ZXhwZWN0ZWQudHh0CkBAIC0xOCw3ICsxOCw3IEBAIENvbnRlbnQgdHlwZTogYXBwbGljYXRpb24v
anNvbgogUkVRVUVTVF9VUkk6IC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJh
dWRQcmV2ZW50aW9uVGVzdFVSTC5weQogTm8gY29va2llcyBpbiB0b2tlbiBzaWduaW5nIHJlcXVl
c3QuCiBSZXF1ZXN0IGJvZHk6Ci17InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNv
dXJjZV9ub25jZSI6IkFCQ0RFRmFiY2RlZjAxMjM0NTY3ODkiLCJzb3VyY2VfdW5saW5rYWJsZV90
b2tlbiI6InVubGlua2FibGVUb2tlbiIsInZlcnNpb24iOjJ9Cit7InNvdXJjZV9lbmdhZ2VtZW50
X3R5cGUiOiJjbGljayIsInNvdXJjZV9ub25jZSI6IkFCQ0RFRmFiY2RlZjAxMjM0NTY3ODkiLCJz
b3VyY2VfdW5saW5rYWJsZV90b2tlbiI6InVubGlua2FibGVUb2tlbiIsInZlcnNpb24iOjN9CiBS
RVFVRVNUX01FVEhPRDogR0VUCiBIVFRQX0hPU1Q6IDEyNy4wLjAuMTo4MDAwCiBSRVFVRVNUX1VS
STogL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9mcmF1ZFByZXZlbnRpb25UZXN0
VVJMLnB5CkBAIC0zMSw3ICszMSw3IEBAIENvbnRlbnQgdHlwZTogYXBwbGljYXRpb24vanNvbgog
UkVRVUVTVF9VUkk6IC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2
ZW50aW9uVGVzdFVSTC5weQogTm8gY29va2llcyBpbiB0b2tlbiBzaWduaW5nIHJlcXVlc3QuCiBS
ZXF1ZXN0IGJvZHk6Ci17InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9z
aXRlIjoiMTI3LjAuMC4xIiwic291cmNlX2lkIjozLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2Nh
bGhvc3QiLCJ0cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjoyLCJzb3VyY2Vfc2VjcmV0X3Rva2Vu
Ijoic2VjcmV0VG9rZW4iLCJzb3VyY2Vfc2VjcmV0X3Rva2VuX3NpZ25hdHVyZSI6InNpZ25hdHVy
ZSJ9Cit7InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9zaXRlIjoiMTI3
LjAuMC4xIiwic291cmNlX2lkIjozLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2NhbGhvc3QiLCJ0
cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjozLCJzb3VyY2Vfc2VjcmV0X3Rva2VuIjoic2VjcmV0
VG9rZW4iLCJzb3VyY2Vfc2VjcmV0X3Rva2VuX3NpZ25hdHVyZSI6InNpZ25hdHVyZSJ9CiAKIAog
Tm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvdHJpZ2dlcmluZy1l
dmVudC13aXRoLWF0dHJpYnV0aW9uLXNvdXJjZS10aHJvdWdoLWZldGNoLWtlZXBhbGl2ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50
L3RyaWdnZXJpbmctZXZlbnQtd2l0aC1hdHRyaWJ1dGlvbi1zb3VyY2UtdGhyb3VnaC1mZXRjaC1r
ZWVwYWxpdmUtZXhwZWN0ZWQudHh0CmluZGV4IDVhOWZkM2FiYzgxYTlmY2U4MTU2NGYyMjdhZTcy
OTdjOTIzNDBiMzEuLjAyODI0Nzk4OWI5OWZjZmIxYTY1ZWRmYWI0ODBhNDdhODIzMDUxNGEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
dHJpZ2dlcmluZy1ldmVudC13aXRoLWF0dHJpYnV0aW9uLXNvdXJjZS10aHJvdWdoLWZldGNoLWtl
ZXBhbGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC90cmlnZ2VyaW5nLWV2ZW50LXdpdGgtYXR0cmlidXRpb24tc291cmNl
LXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNP
TlNPTEUgTUVTU0FHRTogW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2Fz
IG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90IGJlIHBh
cnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAxNS4KK0NPTlNP
TEUgTUVTU0FHRTogW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQg
d2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90IGJl
IHBhcnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAxNS4KIENP
TlNPTEUgTUVTU0FHRTogT3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCBpcyBub3QgYWxsb3dl
ZCBieSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4uIFN0YXR1cyBjb2RlOiA0MDQKIENPTlNP
TEUgTUVTU0FHRTogRmV0Y2ggQVBJIGNhbm5vdCBsb2FkIGh0dHBzOi8vbG9jYWxob3N0Ojg0NDMv
LndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9u
L0R1bW15P2F0dHJpYnV0aW9uU291cmNlPWh0dHBzOi8vMTI3LjAuMC4xIGR1ZSB0byBhY2Nlc3Mg
Y29udHJvbCBjaGVja3MuCiBUZXN0cyB0cmlnZ2VyaW5nIG9mIHByaXZhdGUgY2xpY2sgbWVhc3Vy
ZW1lbnQgYXR0cmlidXRpb24gd2l0aCBzYW1lLXNpdGUgdHJpZ2dlcmluZyBldmVudCByZXF1ZXN0
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2h0dHAvdGVzdHMvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWZldGNoLWtl
ZXBhbGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvaHR0cC90ZXN0
cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gt
ZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4dAppbmRleCA3ZjlkOTBlNTc2ODJhYmQ3NjBhNmFj
OWI2NjFkYWVmMjc2Yjg4MDlhLi40OTg1NjI5MDdmMTY4MThhMzMyNTdiYmQ5ZGI0ZmQxZmU0OGU5
ZGIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvaHR0cC90ZXN0cy9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtZmV0Y2gt
a2VlcGFsaXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvaHR0
cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRo
cm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNP
TEUgTUVTU0FHRTogW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5v
dCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwgcGF0aCBjb250YWluZWQgdW5yZWNvZ25pemVkIHBh
cnRzLgorQ09OU09MRSBNRVNTQUdFOiBbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dl
cmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCBwYXRoIGNvbnRhaW5l
ZCB1bnJlY29nbml6ZWQgcGFydHMuCiBDT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBodHRwOi8vMTI3
LjAuMC4xOjgwMDAgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2lu
LiBTdGF0dXMgY29kZTogNDA0CiBDT05TT0xFIE1FU1NBR0U6IEZldGNoIEFQSSBjYW5ub3QgbG9h
ZCBodHRwczovLzEyNy4wLjAuMTo4NDQzLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3Vy
ZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi93aGF0ZXZlciBkdWUgdG8gYWNjZXNzIGNvbnRyb2wg
Y2hlY2tzLgogVGVzdHMgdHJpZ2dlcmluZyBvZiBwcml2YXRlIGNsaWNrIG1lYXN1cmVtZW50IGF0
dHJpYnV0aW9ucyB3aXRoIGZldGNoIG9uIHBhZ2VoaWRlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445902</attachid>
            <date>2021-12-03 14:39:02 -0800</date>
            <delta_ts>2021-12-03 16:02:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233673-20211203143902.patch</filename>
            <type>text/plain</type>
            <size>120125</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGM1YTYzYWEzNzI4ZjRm
ZTQ1MzFmZDI1YmYxNGQ2MjEzNmNkYWZiMS4uMjVmMTI0MWQxMjVmMmUwNDg2ZTUwY2Y3ZmYzOTE3
NDFjMTc3NTFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDIxLTEyLTAzICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFBDTTogVW5saW5rYWJs
ZSB0b2tlbnMgZm9yIHRyaWdnZXJpbmcgZXZlbnQgdG8gcHJldmVudCBmcmF1ZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzNjczCisgICAgICAgIDxy
ZGFyOi8vNzk0MjYzNDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhbGxvd3MgdHJpZ2dlcmluZyBldmVudHMgdG8gaGF2ZSBhbiBv
cHRpb25hbCBxdWVyeSBwYXJhbWV0ZXIgbGlrZSB0aGlzOgorICAgICAgICBodHRwczovL2Rlc3Rp
bmF0aW9uLmV4YW1wbGUvLndlbGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmln
Z2VyLWF0dHJpYnV0aW9uLzExP2F0dHJpYnV0aW9uRGVzdGluYXRpb25Ob25jZT1BQkNERUZhYmNk
ZWYwMTIzNDU2Nzg5CisKKyAgICAgICAgVGhlIHByZXNlbmNlIG9mIGFuIGF0dHJpYnV0aW9uRGVz
dGluYXRpb25Ob25jZSB0cmlnZ2VycyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIgdG8K
KyAgICAgICAgYXNrIHRoZSBzZXJ2ZXIgdG8gc2lnbiBhbiB1bmxpbmthYmxlIHRva2VuIGZvciB0
aGUgdHJpZ2dlcmluZyBldmVudCBhbmQgdGhlbiBzdG9yZXMgdGhlCisgICAgICAgIGNvcnJlc3Bv
bmRpbmcgc2VjcmV0IHRva2VuIHBsdXMgdGhlIHNpZ25hdHVyZSBmb3IgbGF0ZXIgaW5jbHVzaW9u
IGluIHRoZSBhdHRyaWJ1dGlvbiByZXBvcnQuCisKKyAgICAgICAgVGhlIFdlYkNvcmUgY2hhbmdl
cyBpbnRyb2R1Y2UgdGhlc2UgbmV3IHN0cnVjdHMgYW5kIGRhdGEgZmllbGRzIGluCisgICAgICAg
IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OgorICAgICAgICAtIEVwaGVtZXJhbERl
c3RpbmF0aW9uTm9uY2UKKyAgICAgICAgLSBVbmxpbmthYmxlVG9rZW4gKGJhc2UgY2xhc3MgZm9y
IHRoZSBzcGVjaWZpYyBvbmVzIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uKQorICAgICAgICAt
IFNvdXJjZVVubGlua2FibGVUb2tlbgorICAgICAgICAtIERlc3RpbmF0aW9uVW5saW5rYWJsZVRv
a2VuCisgICAgICAgIC0gU2VjcmV0VG9rZW4gKGJhc2UgY2xhc3MgZm9yIHRoZSBzcGVjaWZpYyBv
bmVzIGZvciBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uKQorICAgICAgICAtIFNvdXJjZVNlY3JldFRv
a2VuCisgICAgICAgIC0gRGVzdGluYXRpb25TZWNyZXRUb2tlbgorCisgICAgICAgIFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIG5vdyBoYXMg
dGhlc2Ugb3B0aW9uYWwgZmllbGRzOgorICAgICAgICAtIGVwaGVtZXJhbERlc3RpbmF0aW9uTm9u
Y2UKKyAgICAgICAgLSBkZXN0aW5hdGlvblVubGlua2FibGVUb2tlbgorICAgICAgICAtIGRlc3Rp
bmF0aW9uU2VjcmV0VG9rZW4KKyAgICAgICAgLSBkZXN0aW5hdGlvblNpdGUKKworICAgICAgICBU
aGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlIHNldHRlcnMvZ2V0dGVycyBhbmQgY3JlYXRvciBmdW5j
dGlvbnMgZm9yIHRob3NlIGRhdGEgZmllbGRzLgorCisgICAgICAgIE5ldyBBUEkvdW5pdCB0ZXN0
IFByaXZhdGVDbGlja01lYXN1cmVtZW50LkRlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZlbnRpb24u
CisKKyAgICAgICAgKiBodG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxBbmNob3JFbGVtZW50OjpwYXJzZVByaXZhdGVDbGlja01lYXN1cmVtZW50IGNvbnN0
KToKKyAgICAgICAgKiBsb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZVNlY3JldFRva2VuOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW46Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsTm9uY2U6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6VW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZVVubGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbjo6aXNv
bGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdFF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0dHJpYnV0aW9uUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6YXR0cmlidXRpb25SZXBvcnRKU09O
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhl
bWVyYWxOb25jZTo6aXNWYWxpZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6c2V0RXBoZW1lcmFsU291cmNlTm9uY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuUHVibGljS2V5VVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblB1YmxpY0tleVVSTCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWdu
YXR1cmVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRv
a2VuU2lnbmF0dXJlVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjp0b2tlblNpZ25hdHVyZUpTT04gY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRv
a2VuOjppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpzZXREZXN0aW5hdGlvblNlY3JldFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNvbGF0ZWRDb3B5
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNWYWxpZCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46
OmlzVmFsaWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRh
dGE6OnNldERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OnNldERl
c3RpbmF0aW9uU2VjcmV0VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6OnRva2VuUHVibGljS2V5VVJMIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlv
blRyaWdnZXJEYXRhOjp0b2tlblNpZ25hdHVyZVVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6ZXBoZW1lcmFsU291cmNlTm9uY2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnNvdXJjZVVubGlua2Fi
bGVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVy
YWxOb25jZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpFcGhlbWVyYWxOb25jZTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0
aW9uVHJpZ2dlckRhdGE6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291
cmNlTm9uY2U6OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL2NvY29hL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlU291cmNlVW5saW5rYWJsZVRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRV
cGRhdGVEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlVW5saW5rYWJsZVRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRV
cGRhdGVTb3VyY2VTZWNyZXRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlRGVzdGluYXRpb25TZWNyZXRUb2tlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBk
YXRlU2VjcmV0VG9rZW4pOgorCiAyMDIxLTEyLTAyICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2Fy
ZG5lckBhcHBsZS5jb20+CiAKICAgICAgICAgUmUtYWRkIHN1cHBvcnQgb2YgaW1hZ2UgY29udHJv
bCBtZW51cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggYzQxZDhjM2ZjZDUzMTQ1ZjkwN2ZlOWRhOTA1NzdiYmFkM2Vj
N2MzNS4uYTBkZjQzOGViZDUzZTNiYzRkOTQyNWRiNDZhY2E1MjgxNjY4ZWE3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1OCBAQAorMjAyMS0xMi0wMyAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFw
cGxlLmNvbT4KKworICAgICAgICBQQ006IFVubGlua2FibGUgdG9rZW5zIGZvciB0cmlnZ2VyaW5n
IGV2ZW50IHRvIHByZXZlbnQgZnJhdWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMzY3MworICAgICAgICA8cmRhcjovLzc5NDI2MzQ3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxs
b3dzIHRyaWdnZXJpbmcgZXZlbnRzIHRvIGhhdmUgYW4gb3B0aW9uYWwgcXVlcnkgcGFyYW1ldGVy
IGxpa2UgdGhpczoKKyAgICAgICAgaHR0cHM6Ly9kZXN0aW5hdGlvbi5leGFtcGxlLy53ZWxsLWtu
b3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJpZ2dlci1hdHRyaWJ1dGlvbi8xMT9hdHRy
aWJ1dGlvbkRlc3RpbmF0aW9uTm9uY2U9QUJDREVGYWJjZGVmMDEyMzQ1Njc4OQorCisgICAgICAg
IFRoZSBwcmVzZW5jZSBvZiBhbiBhdHRyaWJ1dGlvbkRlc3RpbmF0aW9uTm9uY2UgdHJpZ2dlcnMg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyIHRvCisgICAgICAgIGFzayB0aGUgc2VydmVy
IHRvIHNpZ24gYW4gdW5saW5rYWJsZSB0b2tlbiBmb3IgdGhlIHRyaWdnZXJpbmcgZXZlbnQgYW5k
IHRoZW4gc3RvcmVzIHRoZQorICAgICAgICBjb3JyZXNwb25kaW5nIHNlY3JldCB0b2tlbiBwbHVz
IHRoZSBzaWduYXR1cmUgZm9yIGxhdGVyIGluY2x1c2lvbiBpbiB0aGUgYXR0cmlidXRpb24gcmVw
b3J0LgorCisgICAgICAgIE5ldyBBUEkvdW5pdCB0ZXN0IFByaXZhdGVDbGlja01lYXN1cmVtZW50
LkRlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZlbnRpb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlVXRp
bGl0aWVzOjpidWlsZFByaXZhdGVDbGlja01lYXN1cmVtZW50RnJvbURhdGFiYXNlIGNvbnN0KToK
KyAgICAgICAgICAgIE5vdyBoYW5kbGVzIGRlc3RpbmF0aW9uIHRva2Vucy4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QpOgorICAg
ICAgICAgICAgTm93IHNldHMgZGVzdGluYXRpb25TaXRlIGluIFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0
YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpEYXRhYmFzZSk6Cisg
ICAgICAgICAgICBOb3cgY2FsbHMgYWRkRGVzdGluYXRpb25Ub2tlbkNvbHVtbnNJZk5lY2Vzc2Fy
eSgpLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjppbnNlcnRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCk6CisgICAgICAgICAgICBOb3cgZG9lcyBpbnNlcnRpb24gb2Ygb3B0aW9uYWwg
ZGVzdGluYXRpb24gdG9rZW5zLgorICAgICAgICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjphZGRE
ZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgICAgIERhdGFiYXNl
IG1pZ3JhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UENNOjpEYXRhYmFzZTo6YWRkQnVuZGxlSURD
b2x1bW5JZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgICAgICBUZW1wb3JhcnkgbWlncmF0
aW9uIGZ1bmN0aW9uIGZvciBub24tY3VzdG9tZXIgYnVpbGRzLiBObyBsb25nZXIgbmVlZGVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnN0b3JlVW5h
dHRyaWJ1dGVkKToKKyAgICAgICAgICAgIEp1c3QgbmFtZSBjaGFuZ2VzLgorICAgICAgICAoV2Vi
S2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmdldFRva2VuUHVibGljS2V5KToK
KyAgICAgICAgICAgIE5vdCBjaGFuZ2VkIGFmYWlrLiBTZWVtcyBsaWtlIHRoZSBkaWZmIGlzIGNv
bmZ1c2VkLgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6
OmNvbmZpZ3VyZUZvclRva2VuU2lnbmluZyk6CisgICAgICAgICAgICBOZXcgZnVuY3Rpb24gdG8g
ZXh0cmFjdCBzaGFyZWQgY29kZS4KKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyOjpnZXRTaWduYXR1cmVCYXNlNjRVUkxGcm9tVG9rZW5TaWduYXR1cmVSZXNw
b25zZSk6CisgICAgICAgICAgICBOZXcgZnVuY3Rpb24gdG8gZXh0cmFjdCBzaGFyZWQgY29kZS4K
KyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWdu
ZWRVbmxpbmthYmxlVG9rZW5Gb3JTb3VyY2UpOgorICAgICAgICAgICAgUmVuYW1lZCB0byBhZGQg
IkZvclNvdXJjZSIgYW5kIGFsbCBzaGFyZWQgY29kZSBleHRyYWN0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRv
a2VuRm9yRGVzdGluYXRpb24pOgorICAgICAgICAgICAgRGlmZmVyZW50IHRoYW4gZm9yIHRoZSBz
b3VyY2UgaW4gdGhhdCBpdCByZXN1bHRzIGluIGFuIGF0dHJpYnV0aW9uIGNhbGwuCisgICAgICAg
IChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmhhbmRsZUF0dHJpYnV0aW9uKToKKyAg
ICAgICAgICAgIE5vdyBkb2VzIHNpZ25pbmcgb2YgZGVzdGluYXRpb24gdG9rZW4gaWYgdGhlIG9w
dGlvbmFsIG5vbmNlIGlzIGluIHRoZSB0cmlnZ2VyaW5nIGV2ZW50LgorICAgICAgICAoUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3QpOgorICAgICAg
ICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnNldFBDTUZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3RpbmcpOgorICAgICAgICAgICAgQWRkZWQgZW1wdHkgaW5pdGlh
bGl6ZXIgc3RyaW5ncyBmb3IgdGhlIGRlc3RpbmF0aW9uIHRlc3QgdG9rZW4gdmFsdWVzIG5vdCBp
biB1c2UgeWV0LgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmdldFNpZ25lZFVubGlua2FibGVUb2tlbik6IERlbGV0ZWQuCisgICAgICAgICAgICBSZW5h
bWVkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJsZVRv
a2VuRm9yU291cmNlKCkuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmg6CisKIDIwMjEtMTItMDIg
IE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS1h
ZGQgc3VwcG9ydCBvZiBpbWFnZSBjb250cm9sIG1lbnVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBbmNob3JFbGVtZW50LmNwcAppbmRleCA5NjliM2FkZTYxZThjNzc3MmQ4OWEwNmIxMmQ3MDI3
MzA5YzA5ZDE3Li45MTRiOTNkNzk3YjFkMTdmYWYxNDNjZTBkOTk3ZTQ1ZDliN2RhMDZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcApAQCAtNDYzLDcgKzQ2Myw3
IEBAIHN0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ+IEhUTUxBbmNob3JFbGVt
ZW50OjpwYXJzZVByaXZhdGVDbGlja01lYXN1CiAKICAgICBhdXRvIGF0dHJpYnV0aW9uU291cmNl
Tm9uY2VBdHRyID0gYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhdHRyaWJ1dGlvbnNv
dXJjZW5vbmNlQXR0cik7CiAgICAgaWYgKCFhdHRyaWJ1dGlvblNvdXJjZU5vbmNlQXR0ci5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgYXV0byBlcGhlbWVyYWxOb25jZSA9IFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZSB7IGF0dHJpYnV0aW9uU291cmNlTm9uY2VBdHRy
IH07CisgICAgICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsTm9uY2UgeyBhdHRyaWJ1dGlvblNvdXJjZU5vbmNlQXR0ciB9OwogICAgICAg
ICBpZiAoIWVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSkgewogICAgICAgICAgICAgZG9jdW1lbnQo
KS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpX
YXJuaW5nLCAiYXR0cmlidXRpb25zb3VyY2Vub25jZSB3YXMgbm90IHZhbGlkLiJfcyk7CiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKaW5kZXggYjkyYWEwMjQzY2RkMWJhNmM2MzE1
ZDA3MDU3ZTRlYWNmYjg4ZWViZS4uNDIwYTM3MTg4Yzg5NTU0ZDM2Mzk2YzhjNDk1ZjZhNjVmNWM5
NDk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9rZW5QdWJsaWNLZXlQYXRoW10gPSAiLy53ZWxsLWtub3duL3ByCiBzdGF0
aWMgY29uc3QgY2hhciBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFJlcG9ydEF0dHJpYnV0aW9uUGF0
aFtdID0gIi8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3JlcG9ydC1hdHRy
aWJ1dGlvbi8iOwogY29uc3Qgc2l6ZV90IHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRp
b25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSA9IDI7CiBjb25zdCBzaXplX3QgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRQcmlvcml0eVBhdGhTZWdtZW50U2l6ZSA9IDI7Ci1jb25zdCB1aW50OF90
IHByaXZhdGVDbGlja01lYXN1cmVtZW50VmVyc2lvbiA9IDI7Citjb25zdCB1aW50OF90IHByaXZh
dGVDbGlja01lYXN1cmVtZW50VmVyc2lvbiA9IDM7CiAKIGNvbnN0IFNlY29uZHMgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6Om1heEFnZSgpCiB7CkBAIC02MCw3ICs2MCw3IEBAIGJvb2wgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OmlzVmFsaWQoKSBjb25zdAogICAgICAgICAmJiAobV90aW1lc1Rv
U2VuZC5zb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgfHwgbV90aW1lc1RvU2VuZC5kZXN0aW5hdGlv
bkVhcmxpZXN0VGltZVRvU2VuZCk7CiB9CiAKLVByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3Vy
Y2VTZWNyZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46
Omlzb2xhdGVkQ29weSgpIGNvbnN0CitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U2VjcmV0VG9r
ZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSBj
b25zdAogewogICAgIHJldHVybiB7CiAgICAgICAgIHRva2VuQmFzZTY0VVJMLmlzb2xhdGVkQ29w
eSgpLApAQCAtNjksMTIgKzY5LDIyIEBAIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VT
ZWNyZXRUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0CiAgICAgfTsK
IH0KIAotUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZTo6aXNvbGF0ZWRDb3B5KCkg
Y29uc3QKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTZWNyZXRUb2tlbiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHsgU2VjcmV0VG9rZW46Omlzb2xhdGVkQ29weSgpIH07Cit9CisKK1By
aXZhdGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSBjb25z
dAoreworICAgIHJldHVybiB7IFNlY3JldFRva2VuOjppc29sYXRlZENvcHkoKSB9OworfQorCitQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2UgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkVwaGVtZXJhbE5vbmNlOjppc29sYXRlZENvcHkoKSBjb25zdAogewogICAgIHJldHVy
biB7IG5vbmNlLmlzb2xhdGVkQ29weSgpIH07CiB9CiAKLVByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpTb3VyY2VVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVVu
bGlua2FibGVUb2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpVbmxpbmthYmxlVG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlVubGlua2FibGVU
b2tlbjo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICByZXR1cm4gewogI2lmIFBMQVRGT1JN
KENPQ09BKQpAQCAtODYsNiArOTYsMTYgQEAgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJj
ZVVubGlua2FibGVUb2tlbiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW4KICAgICB9
OwogfQogCitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlVW5saW5rYWJsZVRva2VuIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VVbmxpbmthYmxlVG9rZW46Omlzb2xhdGVkQ29w
eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgVW5saW5rYWJsZVRva2VuOjppc29sYXRlZENvcHko
KSB9OworfQorCitQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RGVzdGluYXRpb25VbmxpbmthYmxl
VG9rZW4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2Vu
Ojppc29sYXRlZENvcHkoKSBjb25zdAoreworICAgIHJldHVybiB7IFVubGlua2FibGVUb2tlbjo6
aXNvbGF0ZWRDb3B5KCkgfTsKK30KKwogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgY29weSB7CkBAIC0xMTEsMjYgKzEzMSw0NiBAQCBFeHBlY3RlZDxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgU3RyaW5nPiBQcml2YXRl
Q2xpY2tNZQogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gcXVlcnlQYXJhbWV0ZXJzKHJlZGlyZWN0
VVJMKTsKICAgICBpZiAoIXBhcmFtZXRlcnMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBDb252ZXJzaW9uIHdhcyBub3Qg
YWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMIGhhZCBhIHF1ZXJ5IHN0cmluZyBidXQgaXQgZGlkbid0
IGNvbnRhaW4gc3VwcG9ydGVkIHBhcmFtZXRlcnMuIl9zKTsKLQotICAgIGlmIChwYXJhbWV0ZXJz
LnNpemUoKSA+IDEpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xp
Y2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBV
UkwncyBxdWVyeSBzdHJpbmcgY29udGFpbmVkIHVuc3VwcG9ydGVkIHBhcmFtZXRlcnMuIl9zKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVu
dF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCBoYWQg
YSBxdWVyeSBzdHJpbmcgYnV0IGl0IGRpZG4ndCBjb250YWluIHN1cHBvcnRlZCBwYXJhbWV0ZXJz
LiJfcyk7CisKKyAgICBpZiAocGFyYW1ldGVycy5zaXplKCkgPiAyKQorICAgICAgICByZXR1cm4g
bWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2
ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgcXVlcnkgc3RyaW5nIGNvbnRh
aW5lZCB1bnN1cHBvcnRlZCBwYXJhbWV0ZXJzLiJfcyk7CisKKyAgICBFcGhlbWVyYWxOb25jZSBk
ZXN0aW5hdGlvbk5vbmNlOworICAgIFJlZ2lzdHJhYmxlRG9tYWluIHNvdXJjZURvbWFpbjsKKyAg
ICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IHBhcmFtZXRlcnMpIHsKKyAgICAgICAgaWYgKHBhcmFt
ZXRlci5rZXkgPT0gImF0dHJpYnV0aW9uU291cmNlIikgeworICAgICAgICAgICAgaWYgKHBhcmFt
ZXRlci52YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90
IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCdzIGF0dHJpYnV0aW9uU291cmNlIHF1ZXJ5IHBhcmFt
ZXRlciBoYWQgbm8gdmFsdWUuIl9zKTsKKyAgICAgICAgICAgIGlmICghc291cmNlRG9tYWluLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVj
YXVzZSB0aGUgVVJMIGhhZCBtdWx0aXBsZSBhdHRyaWJ1dGlvblNvdXJjZSBxdWVyeSBwYXJhbWV0
ZXJzLiJfcyk7CisKKyAgICAgICAgICAgIGF1dG8gYXR0cmlidXRpb25Tb3VyY2VVUkwgPSBVUkwo
VVJMKCksIHBhcmFtZXRlci52YWx1ZSk7CisgICAgICAgICAgICBpZiAoIWF0dHJpYnV0aW9uU291
cmNlVVJMLmlzVmFsaWQoKSB8fCAoYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFzUGF0aCgpICYmIGF0
dHJpYnV0aW9uU291cmNlVVJMLnBhdGgoKS5sZW5ndGgoKSA+IDEpIHx8IGF0dHJpYnV0aW9uU291
cmNlVVJMLmhhc0NyZWRlbnRpYWxzKCkgfHwgYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFzUXVlcnko
KSB8fCBhdHRyaWJ1dGlvblNvdXJjZVVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVt
ZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3Mg
YXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1ldGVyIHdhcyBub3QgYSB2YWxpZCBVUkwgb3Ig
d2FzIGEgVVJMIHdpdGggYSBwYXRoLCBjcmVkZW50aWFscywgcXVlcnkgc3RyaW5nLCBvciBmcmFn
bWVudC4iX3MpOworICAgICAgICAgICAgc291cmNlRG9tYWluID0gUmVnaXN0cmFibGVEb21haW4g
eyBhdHRyaWJ1dGlvblNvdXJjZVVSTCB9OworCisgICAgICAgICAgICBpZiAoc291cmNlRG9tYWlu
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQg
YmVjYXVzZSB0aGUgVVJMJ3MgYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1ldGVyIGhhZCBu
byByZWdpc3RyYWJsZSBkb21haW4uIl9zKTsKKyAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXIu
a2V5ID09ICJhdHRyaWJ1dGlvbkRlc3RpbmF0aW9uTm9uY2UiKSB7CisgICAgICAgICAgICBpZiAo
cGFyYW1ldGVyLnZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdh
cyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJMJ3MgYXR0cmlidXRpb25EZXN0aW5hdGlvbk5v
bmNlIHF1ZXJ5IHBhcmFtZXRlciBoYWQgbm8gdmFsdWUuIl9zKTsKKyAgICAgICAgICAgIGlmICgh
ZGVzdGluYXRpb25Ob25jZS5ub25jZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBl
dmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCBoYWQgbXVsdGlwbGUgYXR0cmli
dXRpb25EZXN0aW5hdGlvbk5vbmNlIHF1ZXJ5IHBhcmFtZXRlcnMuIl9zKTsKKworICAgICAgICAg
ICAgZGVzdGluYXRpb25Ob25jZS5ub25jZSA9IHBhcmFtZXRlci52YWx1ZTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1l
YXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUg
VVJMJ3MgcXVlcnkgc3RyaW5nIGNvbnRhaW5lZCB1bnN1cHBvcnRlZCBwYXJhbWV0ZXJzLiJfcyk7
CisgICAgfQogCi0gICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzLmZpcnN0KCk7Ci0gICAg
aWYgKHBhcmFtZXRlci5rZXkgPT0gImF0dHJpYnV0aW9uU291cmNlIikgewotICAgICAgICBpZiAo
cGFyYW1ldGVyLnZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2Nl
cHRlZCBiZWNhdXNlIHRoZSBVUkwncyBhdHRyaWJ1dGlvblNvdXJjZSBxdWVyeSBwYXJhbWV0ZXIg
aGFkIG5vIHZhbHVlLiJfcyk7CisgICAgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhOworICAgIGlmICghc291cmNlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAg
YXR0cmlidXRpb25UcmlnZ2VyRGF0YS5zb3VyY2VSZWdpc3RyYWJsZURvbWFpbiA9IFdURk1vdmUo
c291cmNlRG9tYWluKTsKIAotICAgICAgICBhdXRvIGF0dHJpYnV0aW9uU291cmNlVVJMID0gVVJM
KFVSTCgpLCBwYXJhbWV0ZXIudmFsdWUpOwotICAgICAgICBpZiAoIWF0dHJpYnV0aW9uU291cmNl
VVJMLmlzVmFsaWQoKSB8fCAoYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFzUGF0aCgpICYmIGF0dHJp
YnV0aW9uU291cmNlVVJMLnBhdGgoKS5sZW5ndGgoKSA+IDEpIHx8IGF0dHJpYnV0aW9uU291cmNl
VVJMLmhhc0NyZWRlbnRpYWxzKCkgfHwgYXR0cmlidXRpb25Tb3VyY2VVUkwuaGFzUXVlcnkoKSB8
fCBhdHRyaWJ1dGlvblNvdXJjZVVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSkKLSAgICAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENv
bnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBhdHRyaWJ1dGlvblNv
dXJjZSBxdWVyeSBwYXJhbWV0ZXIgd2FzIG5vdCBhIHZhbGlkIFVSTCBvciB3YXMgYSBVUkwgd2l0
aCBhIHBhdGgsIGNyZWRlbnRpYWxzLCBxdWVyeSBzdHJpbmcsIG9yIGZyYWdtZW50LiJfcyk7Cisg
ICAgaWYgKCFkZXN0aW5hdGlvbk5vbmNlLm5vbmNlLmlzRW1wdHkoKSkKKyAgICAgICAgYXR0cmli
dXRpb25UcmlnZ2VyRGF0YS5lcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlID0gV1RGTW92ZShkZXN0
aW5hdGlvbk5vbmNlKTsKIAotICAgICAgICBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIGF0dHJpYnV0
aW9uVHJpZ2dlckRhdGE7Ci0gICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuc291cmNlUmVn
aXN0cmFibGVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbiB7IGF0dHJpYnV0aW9uU291cmNlVVJM
IH07Ci0gICAgICAgIHJldHVybiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwotICAgIH0KLQotICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZl
cnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwgZGlkIG5vdCBjb250YWluIGFu
IGF0dHJpYnV0aW9uU291cmNlIHF1ZXJ5IHBhcmFtZXRlci4iX3MpOworICAgIHJldHVybiBhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhOwogfQogCiBFeHBlY3RlZDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSwgU3RyaW5nPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6cGFyc2VBdHRyaWJ1dGlvblJlcXVlc3QoY29uc3QgVVJMJiByZWRpcmVjdFVSTCkKQEAgLTE0
MCwxOCArMTgwLDIxIEBAIEV4cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhLCBTdHJpbmc+IFByaXZhdGVDbGlja01lCiAgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZChudWxsU3RyaW5nKCkpOwogCiAgICAgaWYgKCFyZWRpcmVjdFVSTC5wcm90
b2NvbElzKCJodHRwcyIpIHx8IHJlZGlyZWN0VVJMLmhhc0NyZWRlbnRpYWxzKCkgfHwgcmVkaXJl
Y3RVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2Nl
cHRlZCBiZWNhdXNlIHRoZSBVUkwncyBwcm90b2NvbCBpcyBub3QgSFRUUFMgb3IgdGhlIFVSTCBj
b250YWlucyBvbmUgb3IgbW9yZSBvZiB1c2VybmFtZSwgcGFzc3dvcmQsIGFuZCBmcmFnbWVudC4i
X3MpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIltQcml2YXRlIENsaWNrIE1lYXN1
cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUgVVJM
J3MgcHJvdG9jb2wgaXMgbm90IEhUVFBTIG9yIHRoZSBVUkwgY29udGFpbnMgb25lIG9yIG1vcmUg
b2YgdXNlcm5hbWUsIHBhc3N3b3JkLCBhbmQgZnJhZ21lbnQuIl9zKTsKIAogICAgIGF1dG8gcmVz
dWx0ID0gcGFyc2VBdHRyaWJ1dGlvblJlcXVlc3RRdWVyeShyZWRpcmVjdFVSTCk7Ci0gICAgaWYg
KCFyZXN1bHQgJiYgIXJlc3VsdC5lcnJvcigpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBpZiAoIXJlc3VsdC5lcnJvcigpLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQg
d2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwncyBxdWVyeSBzdHJpbmcgY291bGQgbm90
IGJlIHBhcnNlZC4iX3MpOworICAgIH0KICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEg
PSByZXN1bHQudmFsdWUoKTsKIAogICAgIGF1dG8gcHJlZml4TGVuZ3RoID0gc2l6ZW9mKHByaXZh
dGVDbGlja01lYXN1cmVtZW50VHJpZ2dlckF0dHJpYnV0aW9uUGF0aCkgLSAxOwogICAgIGlmIChw
YXRoLmxlbmd0aCgpID09IHByZWZpeExlbmd0aCArIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0
cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSkgewogICAgICAgICBhdXRvIGF0dHJp
YnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHBhdGguc3Vi
c3RyaW5nKHByZWZpeExlbmd0aCwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhUGF0aFNlZ21lbnRTaXplKSk7CiAgICAgICAgIGlmICghYXR0cmlidXRpb25Ucmln
Z2VyRGF0YVVJbnQ2NCB8fCAqYXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCA+IEF0dHJpYnV0
aW9uVHJpZ2dlckRhdGE6Ok1heEVudHJvcHkpCi0gICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhw
ZWN0ZWQobWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24g
d2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90IGJl
IHBhcnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAiX3MsIEF0
dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVudHJvcHksICIuIl9zKSk7CisgICAgICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQobWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1l
bnRdIFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBjb252ZXJz
aW9uIGRhdGEgY291bGQgbm90IGJlIHBhcnNlZCBvciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93
ZWQgbWF4aW11bSBvZiAiX3MsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGE6Ok1heEVudHJvcHksICIu
Il9zKSk7CiAKICAgICAgICAgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kYXRhID0gc3RhdGljX2Nh
c3Q8dWludDhfdD4oKmF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQpOwogICAgICAgICBhdHRy
aWJ1dGlvblRyaWdnZXJEYXRhLnByaW9yaXR5ID0gMDsKQEAgLTE2MSwxOCArMjA0LDE4IEBAIEV4
cGVjdGVkPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBT
dHJpbmc+IFByaXZhdGVDbGlja01lCiAgICAgaWYgKHBhdGgubGVuZ3RoKCkgPT0gcHJlZml4TGVu
Z3RoICsgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhUGF0aFNl
Z21lbnRTaXplICsgMSArIHByaXZhdGVDbGlja01lYXN1cmVtZW50UHJpb3JpdHlQYXRoU2VnbWVu
dFNpemUpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhVUludDY0ID0gcGFy
c2VJbnRlZ2VyPHVpbnQ2NF90PihwYXRoLnN1YnN0cmluZyhwcmVmaXhMZW5ndGgsIHByaXZhdGVD
bGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0YVBhdGhTZWdtZW50U2l6ZSkpOwog
ICAgICAgICBpZiAoIWF0dHJpYnV0aW9uVHJpZ2dlckRhdGFVSW50NjQgfHwgKmF0dHJpYnV0aW9u
VHJpZ2dlckRhdGFVSW50NjQgPiBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5KQot
ICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG1ha2VTdHJpbmcoIltQcml2YXRlIENs
aWNrIE1lYXN1cmVtZW50XSBDb252ZXJzaW9uIHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSB0aGUg
Y29udmVyc2lvbiBkYXRhIGNvdWxkIG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFuIHRo
ZSBhbGxvd2VkIG1heGltdW0gb2YgIl9zLCBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjpNYXhFbnRy
b3B5LCAiLiJfcykpOworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG1ha2VTdHJp
bmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3Qg
YWNjZXB0ZWQgYmVjYXVzZSB0aGUgY29udmVyc2lvbiBkYXRhIGNvdWxkIG5vdCBiZSBwYXJzZWQg
b3Igd2FzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gb2YgIl9zLCBBdHRyaWJ1dGlv
blRyaWdnZXJEYXRhOjpNYXhFbnRyb3B5LCAiLiJfcykpOwogCiAgICAgICAgIGF1dG8gYXR0cmli
dXRpb25Qcmlvcml0eVVJbnQ2NCA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4ocGF0aC5zdWJzdHJp
bmcocHJlZml4TGVuZ3RoICsgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhUGF0aFNlZ21lbnRTaXplICsgMSwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRQcmlvcml0
eVBhdGhTZWdtZW50U2l6ZSkpOwogICAgICAgICBpZiAoIWF0dHJpYnV0aW9uUHJpb3JpdHlVSW50
NjQgfHwgKmF0dHJpYnV0aW9uUHJpb3JpdHlVSW50NjQgPiBQcmlvcml0eTo6TWF4RW50cm9weSkK
LSAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJbUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhl
IHByaW9yaXR5IGNvdWxkIG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFuIHRoZSBhbGxv
d2VkIG1heGltdW0gb2YgIl9zLCBQcmlvcml0eTo6TWF4RW50cm9weSwgIi4iX3MpKTsKKyAgICAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhl
IHByaW9yaXR5IGNvdWxkIG5vdCBiZSBwYXJzZWQgb3Igd2FzIGhpZ2hlciB0aGFuIHRoZSBhbGxv
d2VkIG1heGltdW0gb2YgIl9zLCBQcmlvcml0eTo6TWF4RW50cm9weSwgIi4iX3MpKTsKIAogICAg
ICAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Pigq
YXR0cmlidXRpb25UcmlnZ2VyRGF0YVVJbnQ2NCk7CiAgICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEucHJpb3JpdHkgPSBzdGF0aWNfY2FzdDx1aW50OF90PigqYXR0cmlidXRpb25Qcmlvcml0
eVVJbnQ2NCk7CiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhOwogICAgIH0K
IAotICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRd
IENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIHRoZSBVUkwgcGF0aCBjb250YWlu
ZWQgdW5yZWNvZ25pemVkIHBhcnRzLiJfcyk7CisgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJb
UHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVudCB3YXMgbm90IGFjY2Vw
dGVkIGJlY2F1c2UgdGhlIFVSTCBwYXRoIGNvbnRhaW5lZCB1bnJlY29nbml6ZWQgcGFydHMuIl9z
KTsKIH0KIAogYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6aGFzUHJldmlvdXNseUJlZW5S
ZXBvcnRlZCgpCkBAIC0yNjIsNDEgKzMwNSw2MSBAQCBSZWY8SlNPTjo6T2JqZWN0PiBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6YXR0cmlidXRpb25SZXBvcnRKU09OKCkgY29uc3QKICAgICAgICAg
cmVwb3J0RGV0YWlscy0+c2V0U3RyaW5nKCJzb3VyY2Vfc2VjcmV0X3Rva2VuX3NpZ25hdHVyZSJf
cywgbV9zb3VyY2VTZWNyZXRUb2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJMKTsKICAgICB9CiAKKyAg
ICAvLyBUaGlzIHRva2VuIGhhcyBiZWVuIGtlcHQgc2VjcmV0IHRoaXMgZmFyIGFuZCBjYW5ub3Qg
YmUgbGlua2VkIHRvIHRoZSB1bmxpbmthYmxlIHRva2VuLgorICAgIGlmIChtX2F0dHJpYnV0aW9u
VHJpZ2dlckRhdGEtPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4pIHsKKyAgICAgICAgcmVwb3J0RGV0
YWlscy0+c2V0U3RyaW5nKCJkZXN0aW5hdGlvbl9zZWNyZXRfdG9rZW4iX3MsIG1fYXR0cmlidXRp
b25UcmlnZ2VyRGF0YS0+ZGVzdGluYXRpb25TZWNyZXRUb2tlbi0+dG9rZW5CYXNlNjRVUkwpOwor
ICAgICAgICByZXBvcnREZXRhaWxzLT5zZXRTdHJpbmcoImRlc3RpbmF0aW9uX3NlY3JldF90b2tl
bl9zaWduYXR1cmUiX3MsIG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+ZGVzdGluYXRpb25TZWNy
ZXRUb2tlbi0+c2lnbmF0dXJlQmFzZTY0VVJMKTsKKyAgICB9CisKICAgICByZXR1cm4gcmVwb3J0
RGV0YWlsczsKIH0KIAogLy8gTUFSSzogLSBGcmF1ZCBQcmV2ZW50aW9uCiAKLXN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgRXBoZW1lcmFsU291cmNlTm9uY2VSZXF1aXJlZE51bWJlck9mQnl0ZXMg
PSAxNjsKK3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgRXBoZW1lcmFsTm9uY2VSZXF1aXJlZE51
bWJlck9mQnl0ZXMgPSAxNjsKIAotYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1l
cmFsU291cmNlTm9uY2U6OmlzVmFsaWQoKSBjb25zdAorYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6RXBoZW1lcmFsTm9uY2U6OmlzVmFsaWQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBJ
bnZlc3RpZ2F0ZSBpZiB3ZSBjYW4gZG8gd2l0aCBhIHNpbXBsZSBsZW5ndGggY2hlY2sgaW5zdGVh
ZCBvZiBkZWNvZGluZy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIxOTQ1CiAgICAgYXV0byBkaWdlc3QgPSBiYXNlNjRVUkxEZWNvZGUobm9uY2UpOwog
ICAgIGlmICghZGlnZXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGRpZ2Vz
dC0+c2l6ZSgpID09IEVwaGVtZXJhbFNvdXJjZU5vbmNlUmVxdWlyZWROdW1iZXJPZkJ5dGVzOwor
ICAgIHJldHVybiBkaWdlc3QtPnNpemUoKSA9PSBFcGhlbWVyYWxOb25jZVJlcXVpcmVkTnVtYmVy
T2ZCeXRlczsKIH0KIAotdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6c2V0RXBoZW1lcmFs
U291cmNlTm9uY2UoRXBoZW1lcmFsU291cmNlTm9uY2UmJiBub25jZSkKK3ZvaWQgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OnNldEVwaGVtZXJhbFNvdXJjZU5vbmNlKEVwaGVtZXJhbE5vbmNlJiYg
bm9uY2UpCiB7CiAgICAgaWYgKCFub25jZS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlID0gV1RGTW92ZShub25jZSk7CiB9CiAKLVVSTCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1cmVVUkwoKSBjb25zdAorY29uc3Qgc3Rk
OjpvcHRpb25hbDxjb25zdCBVUkw+IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblB1Ymxp
Y0tleVVSTChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiB7Ci0g
ICAgaWYgKCFtX2VwaGVtZXJhbFNvdXJjZU5vbmNlIHx8ICFtX2VwaGVtZXJhbFNvdXJjZU5vbmNl
LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBVUkwoKTsKKyAgICBpZiAocmVnaXN0cmFibGVE
b21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVy
biBtYWtlVmFsaWRVUkwocmVnaXN0cmFibGVEb21haW4sIHByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9rZW5QdWJsaWNLZXlQYXRoKTsKK30KIAotICAgIHJldHVybiBtYWtlVmFsaWRVUkwobV9zb3Vy
Y2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluLCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRva2VuU2ln
bmF0dXJlUGF0aCk7Citjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OnRva2VuUHVibGljS2V5VVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9r
ZW5QdWJsaWNLZXlVUkwobV9zb3VyY2VTaXRlLnJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAotVVJM
IFByaXZhdGVDbGlja01lYXN1cmVtZW50Ojp0b2tlblB1YmxpY0tleVVSTCgpIGNvbnN0Citjb25z
dCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2Vu
U2lnbmF0dXJlVVJMKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikK
IHsKLSAgICByZXR1cm4gbWFrZVZhbGlkVVJMKG1fc291cmNlU2l0ZS5yZWdpc3RyYWJsZURvbWFp
biwgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb2tlblB1YmxpY0tleVBhdGgpOworICAgIGlmIChy
ZWdpc3RyYWJsZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgcmV0dXJuIG1ha2VWYWxpZFVSTChyZWdpc3RyYWJsZURvbWFpbiwgcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb2tlblNpZ25hdHVyZVBhdGgpOworfQorCitjb25zdCBzdGQ6Om9wdGlvbmFs
PGNvbnN0IFVSTD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2lnbmF0dXJlVVJMKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fZXBoZW1lcmFsU291cmNlTm9uY2UgfHwgIW1fZXBoZW1lcmFs
U291cmNlTm9uY2UtPmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHJldHVybiB0b2tlblNpZ25hdHVyZVVSTChtX3NvdXJjZVNpdGUucmVnaXN0cmFibGVEb21h
aW4pOwogfQogCiBSZWY8SlNPTjo6T2JqZWN0PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9r
ZW5TaWduYXR1cmVKU09OKCkgY29uc3QKQEAgLTMxNiw2ICszNzksMjggQEAgUmVmPEpTT046Ok9i
amVjdD4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OnRva2VuU2lnbmF0dXJlSlNPTigpIGNvbnN0
CiAgICAgcmV0dXJuIHJlcG9ydERldGFpbHM7CiB9CiAKK1JlZjxKU09OOjpPYmplY3Q+IFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjp0b2tlblNpZ25hdHVy
ZUpTT04oKSBjb25zdAoreworICAgIGF1dG8gcmVwb3J0RGV0YWlscyA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CisgICAgaWYgKCFlcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlIHx8ICFlcGhlbWVy
YWxEZXN0aW5hdGlvbk5vbmNlLT5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiByZXBvcnREZXRh
aWxzOworCisgICAgaWYgKCFkZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiB8fCBkZXN0aW5hdGlv
blVubGlua2FibGVUb2tlbi0+dmFsdWVCYXNlNjRVUkwuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gcmVwb3J0RGV0YWlsczsKKworICAgIHJlcG9ydERldGFpbHMtPnNldFN0cmluZygic291cmNl
X2VuZ2FnZW1lbnRfdHlwZSJfcywgImNsaWNrIl9zKTsKKyAgICByZXBvcnREZXRhaWxzLT5zZXRT
dHJpbmcoImRlc3RpbmF0aW9uX25vbmNlIl9zLCBlcGhlbWVyYWxEZXN0aW5hdGlvbk5vbmNlLT5u
b25jZSk7CisgICAgLy8gVGhpcyB0b2tlbiBjYW4gbm90IGJlIGxpbmtlZCB0byB0aGUgc2VjcmV0
IHRva2VuLgorICAgIHJlcG9ydERldGFpbHMtPnNldFN0cmluZygiZGVzdGluYXRpb25fdW5saW5r
YWJsZV90b2tlbiJfcywgZGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4tPnZhbHVlQmFzZTY0VVJM
KTsKKyAgICByZXBvcnREZXRhaWxzLT5zZXRJbnRlZ2VyKCJ2ZXJzaW9uIl9zLCBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFZlcnNpb24pOworICAgIHJldHVybiByZXBvcnREZXRhaWxzOworfQorCiti
b29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTZWNyZXRUb2tlbjo6aXNWYWxpZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuICEodG9rZW5CYXNlNjRVUkwuaXNFbXB0eSgpIHx8IHNpZ25hdHVyZUJh
c2U2NFVSTC5pc0VtcHR5KCkgfHwga2V5SURCYXNlNjRVUkwuaXNFbXB0eSgpKTsKK30KKwogdm9p
ZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6c2V0U291cmNlU2VjcmV0VG9rZW4oU291cmNlU2Vj
cmV0VG9rZW4mJiB0b2tlbikKIHsKICAgICBpZiAoIXRva2VuLmlzVmFsaWQoKSkKQEAgLTMyMyw5
ICs0MDgsMTEgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6c2V0U291cmNlU2VjcmV0
VG9rZW4oU291cmNlU2VjcmV0VG9rZW4mJiB0b2tlbikKICAgICBtX3NvdXJjZVNlY3JldFRva2Vu
ID0gV1RGTW92ZSh0b2tlbik7CiB9CiAKLWJvb2wgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNv
dXJjZVNlY3JldFRva2VuOjppc1ZhbGlkKCkgY29uc3QKK3ZvaWQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OnNldERlc3RpbmF0aW9uU2VjcmV0VG9rZW4oRGVzdGluYXRpb25TZWNyZXRUb2tlbiYm
IHRva2VuKQogewotICAgIHJldHVybiAhKHRva2VuQmFzZTY0VVJMLmlzRW1wdHkoKSB8fCBzaWdu
YXR1cmVCYXNlNjRVUkwuaXNFbXB0eSgpIHx8IGtleUlEQmFzZTY0VVJMLmlzRW1wdHkoKSk7Cisg
ICAgaWYgKCF0b2tlbi5pc1ZhbGlkKCkgfHwgIW1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fYXR0cmlidXRpb25UcmlnZ2VyRGF0YS0+ZGVzdGluYXRpb25T
ZWNyZXRUb2tlbiA9IFdURk1vdmUodG9rZW4pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCmlu
ZGV4IGZjYzNlOWJlNjE3MDA2ODRmMWM0Y2Q5ZTUzNDcwZTAxMGI3OWJjMTMuLjM4MWY2MjdhYzYz
NGM3Mjk1YjA5YTNmZTIwOTdjNDE2NmRkNzFlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oCkBAIC0xNjcsMTcgKzE2Nyw2NCBAQCBwdWJs
aWM6CiAgICAgICAgIAogICAgICAgICBQcmlvcml0eVZhbHVlIHZhbHVlOwogICAgIH07Ci0gICAg
CisKKyAgICBzdHJ1Y3QgRXBoZW1lcmFsTm9uY2UgeworICAgICAgICBTdHJpbmcgbm9uY2U7CisK
KyAgICAgICAgRXBoZW1lcmFsTm9uY2UgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKKyAgICAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisKKyAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxFcGhlbWVyYWxOb25jZT4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisgICAgc3RydWN0IFVubGlua2FibGVUb2tlbiB7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgIFJldGFpblB0cjxSU0FCU1NBVG9rZW5CbGlu
ZGVyPiBibGluZGVyOworICAgICAgICBSZXRhaW5QdHI8UlNBQlNTQVRva2VuV2FpdGluZ0FjdGl2
YXRpb24+IHdhaXRpbmdUb2tlbjsKKyAgICAgICAgUmV0YWluUHRyPFJTQUJTU0FUb2tlblJlYWR5
PiByZWFkeVRva2VuOworI2VuZGlmCisgICAgICAgIFN0cmluZyB2YWx1ZUJhc2U2NFVSTDsKKyAg
ICAgICAgCisgICAgICAgIFVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsKKyAg
ICB9OworCisgICAgc3RydWN0IFNvdXJjZVVubGlua2FibGVUb2tlbiA6IFVubGlua2FibGVUb2tl
biB7CisgICAgICAgIFNvdXJjZVVubGlua2FibGVUb2tlbiBpc29sYXRlZENvcHkoKSBjb25zdDsK
KyAgICB9OworCisgICAgc3RydWN0IERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuIDogVW5saW5r
YWJsZVRva2VuIHsKKyAgICAgICAgRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4gaXNvbGF0ZWRD
b3B5KCkgY29uc3Q7CisgICAgfTsKKworICAgIHN0cnVjdCBTZWNyZXRUb2tlbiB7CisgICAgICAg
IFN0cmluZyB0b2tlbkJhc2U2NFVSTDsKKyAgICAgICAgU3RyaW5nIHNpZ25hdHVyZUJhc2U2NFVS
TDsKKyAgICAgICAgU3RyaW5nIGtleUlEQmFzZTY0VVJMOworICAgICAgICBTZWNyZXRUb2tlbiBp
c29sYXRlZENvcHkoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisgICAg
fTsKKworICAgIHN0cnVjdCBTb3VyY2VTZWNyZXRUb2tlbiA6IFNlY3JldFRva2VuIHsKKyAgICAg
ICAgU291cmNlU2VjcmV0VG9rZW4gaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisgICAgfTsKKworICAg
IHN0cnVjdCBEZXN0aW5hdGlvblNlY3JldFRva2VuIDogU2VjcmV0VG9rZW4geworICAgICAgICBX
RUJDT1JFX0VYUE9SVCBEZXN0aW5hdGlvblNlY3JldFRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0
OworICAgIH07CisKICAgICBzdHJ1Y3QgQXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7CiAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgdWludDhfdCBNYXhFbnRyb3B5ID0gMTU7CiAKICAgICAgICAgZW51
bSBjbGFzcyBXYXNTZW50IDogYm9vbCB7IE5vLCBZZXMgfTsKIAogICAgICAgICBBdHRyaWJ1dGlv
blRyaWdnZXJEYXRhKCkgPSBkZWZhdWx0OwotICAgICAgICBBdHRyaWJ1dGlvblRyaWdnZXJEYXRh
KHVpbnQ4X3QgZGF0YSwgUHJpb3JpdHkgcHJpb3JpdHksIFdhc1NlbnQgd2FzU2VudCA9IFdhc1Nl
bnQ6Ok5vKQorICAgICAgICBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKHVpbnQ4X3QgZGF0YSwgUHJp
b3JpdHkgcHJpb3JpdHksIFdhc1NlbnQgd2FzU2VudCA9IFdhc1NlbnQ6Ok5vLCBzdGQ6Om9wdGlv
bmFsPEVwaGVtZXJhbE5vbmNlPiBub25jZSA9IHN0ZDo6bnVsbG9wdCkKICAgICAgICAgICAgIDog
ZGF0YSB7IGRhdGEgfQogICAgICAgICAgICAgLCBwcmlvcml0eSB7IHByaW9yaXR5LnZhbHVlIH0K
ICAgICAgICAgICAgICwgd2FzU2VudCB7IHdhc1NlbnQgfQorICAgICAgICAgICAgLCBlcGhlbWVy
YWxEZXN0aW5hdGlvbk5vbmNlIHsgbm9uY2UgfQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAt
MTg1LDExICsyMzIsMjYgQEAgcHVibGljOgogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
ZGF0YSA8PSBNYXhFbnRyb3B5ICYmIHByaW9yaXR5IDw9IFByaW9yaXR5OjpNYXhFbnRyb3B5Owog
ICAgICAgICB9Ci0gICAgICAgIAorCisgICAgICAgIHZvaWQgc2V0RGVzdGluYXRpb25Vbmxpbmth
YmxlVG9rZW5WYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIWRlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKQorICAgICAgICAgICAgICAgIGRlc3Rp
bmF0aW9uVW5saW5rYWJsZVRva2VuID0gRGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4geyB9Owor
ICAgICAgICAgICAgZGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4tPnZhbHVlQmFzZTY0VVJMID0g
dmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBzZXREZXN0aW5hdGlvblNlY3JldFRva2Vu
KGNvbnN0IERlc3RpbmF0aW9uU2VjcmV0VG9rZW4mIHRva2VuKSB7IGRlc3RpbmF0aW9uU2VjcmV0
VG9rZW4gPSB0b2tlbjsgfQorICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4g
dG9rZW5QdWJsaWNLZXlVUkwoKSBjb25zdCB7IHJldHVybiBkZXN0aW5hdGlvblNpdGUgPyBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6dG9rZW5QdWJsaWNLZXlVUkwoKmRlc3RpbmF0aW9uU2l0ZSkg
OiBVUkwoKTsgfQorICAgICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4gdG9rZW5T
aWduYXR1cmVVUkwoKSBjb25zdCB7IHJldHVybiBkZXN0aW5hdGlvblNpdGUgPyBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6dG9rZW5TaWduYXR1cmVVUkwoKmRlc3RpbmF0aW9uU2l0ZSkgOiBVUkwo
KTsgfQorICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZWY8SlNPTjo6T2JqZWN0PiB0b2tlblNpZ25h
dHVyZUpTT04oKSBjb25zdDsKKwogICAgICAgICB1aW50OF90IGRhdGEgeyAwIH07CiAgICAgICAg
IFByaW9yaXR5VmFsdWUgcHJpb3JpdHk7CiAgICAgICAgIFdhc1NlbnQgd2FzU2VudCA9IFdhc1Nl
bnQ6Ok5vOwogICAgICAgICBzdGQ6Om9wdGlvbmFsPFJlZ2lzdHJhYmxlRG9tYWluPiBzb3VyY2VS
ZWdpc3RyYWJsZURvbWFpbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxFcGhlbWVyYWxOb25jZT4g
ZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxEZXN0aW5h
dGlvblVubGlua2FibGVUb2tlbj4gZGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW47CisgICAgICAg
IHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25TZWNyZXRUb2tlbj4gZGVzdGluYXRpb25TZWNyZXRU
b2tlbjsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxSZWdpc3RyYWJsZURvbWFpbj4gZGVzdGluYXRp
b25TaXRlOwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gZGVjb2RlKERlY29kZXImKTsKQEAg
LTMzOCw0MyArNDAwLDMwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEVwaGVtZXJhbChBdHRyaWJ1
dGlvbkVwaGVtZXJhbCBpc0VwaGVtZXJhbCkgeyBtX2lzRXBoZW1lcmFsID0gaXNFcGhlbWVyYWw7
IH0KIAogICAgIC8vIE1BUks6IC0gRnJhdWQgUHJldmVudGlvbgotICAgIFdFQkNPUkVfRVhQT1JU
IFVSTCB0b2tlblB1YmxpY0tleVVSTCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFVSTCB0
b2tlblNpZ25hdHVyZVVSTCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8Y29uc3QgVVJMPiB0b2tlblB1YmxpY0tleVVSTCgpIGNvbnN0OworICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4gdG9rZW5QdWJs
aWNLZXlVUkwoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBj
b25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFVSTD4gdG9rZW5TaWduYXR1cmVVUkwoKSBjb25zdDsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3Qgc3RkOjpvcHRpb25hbDxjb25zdCBVUkw+
IHRva2VuU2lnbmF0dXJlVVJMKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBSZWY8SlNPTjo6T2JqZWN0PiB0b2tlblNpZ25hdHVyZUpTT04oKSBjb25zdDsK
IAotICAgIHN0cnVjdCBFcGhlbWVyYWxTb3VyY2VOb25jZSB7Ci0gICAgICAgIFN0cmluZyBub25j
ZTsKLQotICAgICAgICBFcGhlbWVyYWxTb3VyY2VOb25jZSBpc29sYXRlZENvcHkoKSBjb25zdDsK
LQotICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzVmFsaWQoKSBjb25zdDsKLQotICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEVwaGVt
ZXJhbFNvdXJjZU5vbmNlPiBkZWNvZGUoRGVjb2RlciYpOwotICAgIH07Ci0KLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldEVwaGVtZXJhbFNvdXJjZU5vbmNlKEVwaGVtZXJhbFNvdXJjZU5vbmNl
JiYpOwotICAgIHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsU291cmNlTm9uY2U+IGVwaGVtZXJhbFNv
dXJjZU5vbmNlKCkgY29uc3QgeyByZXR1cm4gbV9lcGhlbWVyYWxTb3VyY2VOb25jZTsgfTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVwaGVtZXJhbFNvdXJjZU5vbmNlKEVwaGVtZXJhbE5v
bmNlJiYpOworICAgIHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsTm9uY2U+IGVwaGVtZXJhbFNvdXJj
ZU5vbmNlKCkgY29uc3QgeyByZXR1cm4gbV9lcGhlbWVyYWxTb3VyY2VOb25jZTsgfTsKICAgICB2
b2lkIGNsZWFyRXBoZW1lcmFsU291cmNlTm9uY2UoKSB7IG1fZXBoZW1lcmFsU291cmNlTm9uY2Uu
cmVzZXQoKTsgfTsKIAotICAgIHN0cnVjdCBTb3VyY2VTZWNyZXRUb2tlbiB7Ci0gICAgICAgIFN0
cmluZyB0b2tlbkJhc2U2NFVSTDsKLSAgICAgICAgU3RyaW5nIHNpZ25hdHVyZUJhc2U2NFVSTDsK
LSAgICAgICAgU3RyaW5nIGtleUlEQmFzZTY0VVJMOwotCi0gICAgICAgIFNvdXJjZVNlY3JldFRv
a2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsK
LSAgICB9OwotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2FibGVUb2tlbihj
b25zdCBTdHJpbmcmIHNlcnZlclB1YmxpY0tleUJhc2U2NFVSTCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIEV4cGVjdGVkPERlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuLCBTdHJpbmc+IGNh
bGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uVW5saW5rYWJsZVRva2VuKGNvbnN0IFN0cmluZyYg
c2VydmVyUHVibGljS2V5QmFzZTY0VVJMKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4oY29uc3QgU3Ry
aW5nJiBzZXJ2ZXJSZXNwb25zZUJhc2U2NFVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IEV4cGVjdGVkPERlc3RpbmF0aW9uU2VjcmV0VG9rZW4sIFN0cmluZz4gY2FsY3VsYXRlQW5kVXBk
YXRlRGVzdGluYXRpb25TZWNyZXRUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclJlc3BvbnNlQmFz
ZTY0VVJMLCBEZXN0aW5hdGlvblVubGlua2FibGVUb2tlbiYpOwogI2VuZGlmCiAKKyAgICBTb3Vy
Y2VVbmxpbmthYmxlVG9rZW4mIHNvdXJjZVVubGlua2FibGVUb2tlbigpIHsgcmV0dXJuIG1fc291
cmNlVW5saW5rYWJsZVRva2VuOyB9CiAgICAgdm9pZCBzZXRTb3VyY2VVbmxpbmthYmxlVG9rZW5W
YWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKSB7IG1fc291cmNlVW5saW5rYWJsZVRva2VuLnZhbHVl
QmFzZTY0VVJMID0gdmFsdWU7IH0KICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFNvdXJjZVNlY3Jl
dFRva2VuPiYgc291cmNlU2VjcmV0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVNlY3Jl
dFRva2VuOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTb3VyY2VTZWNyZXRUb2tlbihT
b3VyY2VTZWNyZXRUb2tlbiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldERlc3RpbmF0
aW9uU2VjcmV0VG9rZW4oRGVzdGluYXRpb25TZWNyZXRUb2tlbiYmKTsKKwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1
cmVtZW50PiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtMzg1LDYgKzQzNCwxMSBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyBFeHBlY3RlZDxBdHRyaWJ1dGlvblRyaWdnZXJEYXRhLCBTdHJpbmc+IHBhcnNl
QXR0cmlidXRpb25SZXF1ZXN0UXVlcnkoY29uc3QgVVJMJik7CiAgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3Q7CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGNhbGN1bGF0ZUFuZFVwZGF0ZVVubGlua2FibGVUb2tlbihjb25zdCBTdHJpbmcmIHNl
cnZlclB1YmxpY0tleUJhc2U2NFVSTCwgVW5saW5rYWJsZVRva2VuJiwgY29uc3QgU3RyaW5nJiBj
b250ZXh0Rm9yTG9nTWVzc2FnZSk7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBj
YWxjdWxhdGVBbmRVcGRhdGVTZWNyZXRUb2tlbihjb25zdCBTdHJpbmcmIHNlcnZlclJlc3BvbnNl
QmFzZTY0VVJMLCBVbmxpbmthYmxlVG9rZW4mLCBTZWNyZXRUb2tlbiYsIGNvbnN0IFN0cmluZyYg
Y29udGV4dEZvckxvZ01lc3NhZ2UpOworI2VuZGlmCisKICAgICBTb3VyY2VJRCBtX3NvdXJjZUlE
OwogICAgIFNvdXJjZVNpdGUgbV9zb3VyY2VTaXRlOwogICAgIEF0dHJpYnV0aW9uRGVzdGluYXRp
b25TaXRlIG1fZGVzdGluYXRpb25TaXRlOwpAQCAtMzk0LDE4ICs0NDgsNyBAQCBwcml2YXRlOgog
ICAgIHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gbV9hdHRyaWJ1dGlvblRy
aWdnZXJEYXRhOwogICAgIEF0dHJpYnV0aW9uVGltZVRvU2VuZERhdGEgbV90aW1lc1RvU2VuZDsK
IAotICAgIHN0cnVjdCBTb3VyY2VVbmxpbmthYmxlVG9rZW4gewotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgICAgICBSZXRhaW5QdHI8UlNBQlNTQVRva2VuQmxpbmRlcj4gYmxpbmRlcjsKLSAgICAg
ICAgUmV0YWluUHRyPFJTQUJTU0FUb2tlbldhaXRpbmdBY3RpdmF0aW9uPiB3YWl0aW5nVG9rZW47
Ci0gICAgICAgIFJldGFpblB0cjxSU0FCU1NBVG9rZW5SZWFkeT4gcmVhZHlUb2tlbjsKLSNlbmRp
ZgotICAgICAgICBTdHJpbmcgdmFsdWVCYXNlNjRVUkw7Ci0KLSAgICAgICAgU291cmNlVW5saW5r
YWJsZVRva2VuIGlzb2xhdGVkQ29weSgpIGNvbnN0OwotICAgIH07Ci0KLSAgICBzdGQ6Om9wdGlv
bmFsPEVwaGVtZXJhbFNvdXJjZU5vbmNlPiBtX2VwaGVtZXJhbFNvdXJjZU5vbmNlOworICAgIHN0
ZDo6b3B0aW9uYWw8RXBoZW1lcmFsTm9uY2U+IG1fZXBoZW1lcmFsU291cmNlTm9uY2U7CiAgICAg
U291cmNlVW5saW5rYWJsZVRva2VuIG1fc291cmNlVW5saW5rYWJsZVRva2VuOwogICAgIHN0ZDo6
b3B0aW9uYWw8U291cmNlU2VjcmV0VG9rZW4+IG1fc291cmNlU2VjcmV0VG9rZW47CiAgICAgU3Ry
aW5nIG1fc291cmNlQXBwbGljYXRpb25CdW5kbGVJRDsKQEAgLTQ0OCw3ICs0OTEsNyBAQCBzdGQ6
Om9wdGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50PiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6ZGVjb2RlKERlY29kZXImCiAgICAgaWYgKCF0aW1lT2ZBZENsaWNrKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPEVwaGVt
ZXJhbFNvdXJjZU5vbmNlPj4gZXBoZW1lcmFsU291cmNlTm9uY2U7CisgICAgc3RkOjpvcHRpb25h
bDxzdGQ6Om9wdGlvbmFsPEVwaGVtZXJhbE5vbmNlPj4gZXBoZW1lcmFsU291cmNlTm9uY2U7CiAg
ICAgZGVjb2RlciA+PiBlcGhlbWVyYWxTb3VyY2VOb25jZTsKICAgICBpZiAoIWVwaGVtZXJhbFNv
dXJjZU5vbmNlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDg5LDI2ICs1MzIs
MjYgQEAgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OmRlY29kZShEZWNvZGVyJgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgotdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAordm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsTm9uY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAg
IGVuY29kZXIgPDwgbm9uY2U7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1zdGQ6Om9w
dGlvbmFsPFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZT4gUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlOjpkZWNvZGUoRGVjb2Rl
ciYgZGVjb2RlcikKK3N0ZDo6b3B0aW9uYWw8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVt
ZXJhbE5vbmNlPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2U6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBub25jZTsK
ICAgICBkZWNvZGVyID4+IG5vbmNlOwogICAgIGlmICghbm9uY2UpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIEVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgV1RG
TW92ZSgqbm9uY2UpIH07CisgICAgcmV0dXJuIEVwaGVtZXJhbE5vbmNlIHsgV1RGTW92ZSgqbm9u
Y2UpIH07CiB9CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGRhdGEgPDwgcHJpb3JpdHkgPDwgd2FzU2VudCA8
PCBzb3VyY2VSZWdpc3RyYWJsZURvbWFpbjsKKyAgICBlbmNvZGVyIDw8IGRhdGEgPDwgcHJpb3Jp
dHkgPDwgd2FzU2VudCA8PCBzb3VyY2VSZWdpc3RyYWJsZURvbWFpbiA8PCBlcGhlbWVyYWxEZXN0
aW5hdGlvbk5vbmNlIDw8IGRlc3RpbmF0aW9uU2l0ZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KQEAgLTUzMyw5ICs1NzYsMjEgQEAgc3RkOjpvcHRpb25hbDxQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YT4gUHJpdmF0ZUNsaWNrTWVhc3UKICAgICBk
ZWNvZGVyID4+IHNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluOwogICAgIGlmICghc291cmNlUmVnaXN0
cmFibGVEb21haW4pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgCisKKyAgICBz
dGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8RXBoZW1lcmFsTm9uY2U+PiBlcGhlbWVyYWxEZXN0
aW5hdGlvbk5vbmNlOworICAgIGRlY29kZXIgPj4gZXBoZW1lcmFsRGVzdGluYXRpb25Ob25jZTsK
KyAgICBpZiAoIWVwaGVtZXJhbERlc3RpbmF0aW9uTm9uY2UpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8UmVnaXN0cmFibGVE
b21haW4+PiBkZXN0aW5hdGlvblNpdGU7CisgICAgZGVjb2RlciA+PiBkZXN0aW5hdGlvblNpdGU7
CisgICAgaWYgKCFkZXN0aW5hdGlvblNpdGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKICAgICBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgeyBX
VEZNb3ZlKCpkYXRhKSwgUHJpb3JpdHkgeyAqcHJpb3JpdHkgfSwgKndhc1NlbnQgfTsKICAgICBh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhLnNvdXJjZVJlZ2lzdHJhYmxlRG9tYWluID0gV1RGTW92ZSgq
c291cmNlUmVnaXN0cmFibGVEb21haW4pOworICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZXBo
ZW1lcmFsRGVzdGluYXRpb25Ob25jZSA9IFdURk1vdmUoKmVwaGVtZXJhbERlc3RpbmF0aW9uTm9u
Y2UpOworICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZGVzdGluYXRpb25TaXRlID0gV1RGTW92
ZSgqZGVzdGluYXRpb25TaXRlKTsKICAgICByZXR1cm4gYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NvY29hL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQppbmRleCAyM2Q4N2MyN2FhMWI1YTFkM2IwNjBkOTg2
MThiZTg3NjUxZmE3ODkzLi5iZjdlZDhhMmE0YzNmMzc5NTFmYzFkZmUzMDdlZjcwM2M5NWQ3MmE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQpAQCAtMzEsNjYgKzMxLDEwMiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZVNvdXJjZVVubGlua2FibGVUb2tlbihjb25zdCBTdHJpbmcm
IHNlcnZlclB1YmxpY0tleUJhc2U2NFVSTCkKK3sKKyAgICByZXR1cm4gY2FsY3VsYXRlQW5kVXBk
YXRlVW5saW5rYWJsZVRva2VuKHNlcnZlclB1YmxpY0tleUJhc2U2NFVSTCwgbV9zb3VyY2VVbmxp
bmthYmxlVG9rZW4sICJzb3VyY2UiX3MpOworfQorCitFeHBlY3RlZDxQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6RGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW4sIFN0cmluZz4gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uVW5saW5rYWJsZVRva2Vu
KGNvbnN0IFN0cmluZyYgc2VydmVyUHVibGljS2V5QmFzZTY0VVJMKQoreworICAgIERlc3RpbmF0
aW9uVW5saW5rYWJsZVRva2VuIGRlc3RpbmF0aW9uVG9rZW47CisgICAgYXV0byBlcnJvck1lc3Nh
Z2UgPSBjYWxjdWxhdGVBbmRVcGRhdGVVbmxpbmthYmxlVG9rZW4oc2VydmVyUHVibGljS2V5QmFz
ZTY0VVJMLCBkZXN0aW5hdGlvblRva2VuLCAiZGVzdGluYXRpb24iX3MpOworICAgIGlmIChlcnJv
ck1lc3NhZ2UpCisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgqZXJyb3JNZXNzYWdlKTsK
KyAgICByZXR1cm4gZGVzdGluYXRpb25Ub2tlbjsKK30KKworc3RkOjpvcHRpb25hbDxTdHJpbmc+
IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRhdGVVbmxpbmthYmxlVG9r
ZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJQdWJsaWNLZXlCYXNlNjRVUkwsIFVubGlua2FibGVUb2tl
biYgdW5saW5rYWJsZVRva2VuLCBjb25zdCBTdHJpbmcmIGNvbnRleHRGb3JMb2dNZXNzYWdlKQog
ewogI2lmIEhBVkUoUlNBX0JTU0EpCiAgICAgewogICAgICAgICBhdXRvIHNlcnZlclB1YmxpY0tl
eURhdGEgPSBiYXNlNjRVUkxEZWNvZGUoc2VydmVyUHVibGljS2V5QmFzZTY0VVJMKTsKICAgICAg
ICAgaWYgKCFzZXJ2ZXJQdWJsaWNLZXlEYXRhKQotICAgICAgICAgICAgcmV0dXJuICJDb3VsZCBu
b3QgZGVjb2RlIHRoZSBzb3VyY2UncyBwdWJsaWMga2V5IGRhdGEuIl9zOworICAgICAgICAgICAg
cmV0dXJuIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBkZWNvZGUgdGhlICIsIGNvbnRleHRGb3JMb2dN
ZXNzYWdlLCAiJ3MgcHVibGljIGtleSBkYXRhLiIpOwogICAgICAgICBhdXRvIHNlcnZlclB1Ymxp
Y0tleSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6c2VydmVyUHVibGlj
S2V5RGF0YS0+ZGF0YSgpIGxlbmd0aDpzZXJ2ZXJQdWJsaWNLZXlEYXRhLT5zaXplKCldKTsKIAog
ICAgICAgICBOU0Vycm9yKiBuc0Vycm9yID0gMDsKLSAgICAgICAgbV9zb3VyY2VVbmxpbmthYmxl
VG9rZW4uYmxpbmRlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NSU0FCU1NBVG9rZW5CbGluZGVySW5z
dGFuY2UoKSBpbml0V2l0aFB1YmxpY0tleTpzZXJ2ZXJQdWJsaWNLZXkuZ2V0KCkgZXJyb3I6Jm5z
RXJyb3JdKTsKKyAgICAgICAgdW5saW5rYWJsZVRva2VuLmJsaW5kZXIgPSBhZG9wdE5TKFtQQUw6
OmFsbG9jUlNBQlNTQVRva2VuQmxpbmRlckluc3RhbmNlKCkgaW5pdFdpdGhQdWJsaWNLZXk6c2Vy
dmVyUHVibGljS2V5LmdldCgpIGVycm9yOiZuc0Vycm9yXSk7CiAgICAgICAgIGlmIChuc0Vycm9y
KQogICAgICAgICAgICAgcmV0dXJuIG5zRXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb247Ci0gICAg
ICAgIGlmICghbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4uYmxpbmRlcikKLSAgICAgICAgICAgIHJl
dHVybiAiRGlkIG5vdCBnZXQgYSBzb3VyY2UgdW5saW5rYWJsZSB0b2tlbiBibGluZGVyLiJfczsK
KyAgICAgICAgaWYgKCF1bmxpbmthYmxlVG9rZW4uYmxpbmRlcikKKyAgICAgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCJEaWQgbm90IGdldCBhICIsIGNvbnRleHRGb3JMb2dNZXNzYWdlLCAiIHVu
bGlua2FibGUgdG9rZW4gYmxpbmRlci4iKTsKICAgICB9CiAKICAgICBOU0Vycm9yKiBuc0Vycm9y
ID0gMDsKLSAgICBtX3NvdXJjZVVubGlua2FibGVUb2tlbi53YWl0aW5nVG9rZW4gPSBbbV9zb3Vy
Y2VVbmxpbmthYmxlVG9rZW4uYmxpbmRlciB0b2tlbldhaXRpbmdBY3RpdmF0aW9uV2l0aENvbnRl
bnQ6bnVsbHB0ciBlcnJvcjombnNFcnJvcl07CisgICAgdW5saW5rYWJsZVRva2VuLndhaXRpbmdU
b2tlbiA9IFt1bmxpbmthYmxlVG9rZW4uYmxpbmRlciB0b2tlbldhaXRpbmdBY3RpdmF0aW9uV2l0
aENvbnRlbnQ6bnVsbHB0ciBlcnJvcjombnNFcnJvcl07CiAgICAgaWYgKG5zRXJyb3IpCiAgICAg
ICAgIHJldHVybiBuc0Vycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uOwotICAgIGlmICghbV9zb3Vy
Y2VVbmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuKQotICAgICAgICByZXR1cm4gIkRpZCBub3Qg
Z2V0IGEgc291cmNlIHVubGlua2FibGUgdG9rZW4gd2FpdGluZyB0b2tlbi4iX3M7CisgICAgaWYg
KCF1bmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuKQorICAgICAgICByZXR1cm4gbWFrZVN0cmlu
ZygiRGlkIG5vdCBnZXQgYSAiLCBjb250ZXh0Rm9yTG9nTWVzc2FnZSwgIiB1bmxpbmthYmxlIHRv
a2VuIHdhaXRpbmcgdG9rZW4uIik7CiAKLSAgICBtX3NvdXJjZVVubGlua2FibGVUb2tlbi52YWx1
ZUJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFttX3NvdXJjZVVubGlua2FibGVU
b2tlbi53YWl0aW5nVG9rZW4gYmxpbmRlZE1lc3NhZ2VdLmJ5dGVzLCBbbV9zb3VyY2VVbmxpbmth
YmxlVG9rZW4ud2FpdGluZ1Rva2VuIGJsaW5kZWRNZXNzYWdlXS5sZW5ndGgpOworICAgIHVubGlu
a2FibGVUb2tlbi52YWx1ZUJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFt1bmxp
bmthYmxlVG9rZW4ud2FpdGluZ1Rva2VuIGJsaW5kZWRNZXNzYWdlXS5ieXRlcywgW3VubGlua2Fi
bGVUb2tlbi53YWl0aW5nVG9rZW4gYmxpbmRlZE1lc3NhZ2VdLmxlbmd0aCk7CiAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHNlcnZlclB1YmxpY0tleUJh
c2U2NFVSTCk7CisgICAgVU5VU0VEX1BBUkFNKHVubGlua2FibGVUb2tlbik7CisgICAgVU5VU0VE
X1BBUkFNKGNvbnRleHRGb3JMb2dNZXNzYWdlKTsKICAgICByZXR1cm4gIlVubGlua2FibGUgdG9r
ZW5zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcGxhdGZvcm0uIl9zOwogI2VuZGlmIC8vIEhB
VkUoUlNBX0JTU0EpCiB9CiAKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6Y2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4oY29uc3QgU3RyaW5n
JiBzZXJ2ZXJSZXNwb25zZUJhc2U2NFVSTCkKK3sKKyAgICBTb3VyY2VTZWNyZXRUb2tlbiBzZWNy
ZXRUb2tlbjsKKyAgICBpZiAoYXV0byBlcnJvck1lc3NhZ2UgPSBjYWxjdWxhdGVBbmRVcGRhdGVT
ZWNyZXRUb2tlbihzZXJ2ZXJSZXNwb25zZUJhc2U2NFVSTCwgbV9zb3VyY2VVbmxpbmthYmxlVG9r
ZW4sIHNlY3JldFRva2VuLCAic291cmNlIl9zKSkKKyAgICAgICAgcmV0dXJuIGVycm9yTWVzc2Fn
ZTsKKyAgICAKKyAgICBtX3NvdXJjZVNlY3JldFRva2VuID0gV1RGTW92ZShzZWNyZXRUb2tlbik7
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKworRXhwZWN0ZWQ8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OkRlc3RpbmF0aW9uU2VjcmV0VG9rZW4sIFN0cmluZz4gUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uU2VjcmV0VG9rZW4oY29uc3Qg
U3RyaW5nJiBzZXJ2ZXJSZXNwb25zZUJhc2U2NFVSTCwgRGVzdGluYXRpb25VbmxpbmthYmxlVG9r
ZW4mIHVubGlua2FibGVUb2tlbikKK3sKKyAgICBEZXN0aW5hdGlvblNlY3JldFRva2VuIHNlY3Jl
dFRva2VuOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gY2FsY3VsYXRlQW5kVXBkYXRlU2VjcmV0
VG9rZW4oc2VydmVyUmVzcG9uc2VCYXNlNjRVUkwsIHVubGlua2FibGVUb2tlbiwgc2VjcmV0VG9r
ZW4sICJzb3VyY2UiX3MpOworICAgIGlmIChlcnJvck1lc3NhZ2UpCisgICAgICAgIHJldHVybiBt
YWtlVW5leHBlY3RlZCgqZXJyb3JNZXNzYWdlKTsKKyAgICByZXR1cm4gc2VjcmV0VG9rZW47Cit9
CisKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6Y2FsY3Vs
YXRlQW5kVXBkYXRlU2VjcmV0VG9rZW4oY29uc3QgU3RyaW5nJiBzZXJ2ZXJSZXNwb25zZUJhc2U2
NFVSTCwgVW5saW5rYWJsZVRva2VuJiB1bmxpbmthYmxlVG9rZW4sIFNlY3JldFRva2VuJiBzZWNy
ZXRUb2tlbiwgY29uc3QgU3RyaW5nJiBjb250ZXh0Rm9yTG9nTWVzc2FnZSkKIHsKICNpZiBIQVZF
KFJTQV9CU1NBKQotICAgIGlmICghbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ud2FpdGluZ1Rva2Vu
KQotICAgICAgICByZXR1cm4gIkRpZCBub3QgZmluZCBhIHNvdXJjZSB1bmxpbmthYmxlIHRva2Vu
IHdhaXRpbmcgdG9rZW4uIl9zOworICAgIGlmICghdW5saW5rYWJsZVRva2VuLndhaXRpbmdUb2tl
bikKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkRpZCBub3QgZmluZCBhICIsIGNvbnRleHRG
b3JMb2dNZXNzYWdlLCAiIHVubGlua2FibGUgdG9rZW4gd2FpdGluZyB0b2tlbi4iKTsKIAogICAg
IHsKICAgICAgICAgYXV0byBzZXJ2ZXJSZXNwb25zZURhdGEgPSBiYXNlNjRVUkxEZWNvZGUoc2Vy
dmVyUmVzcG9uc2VCYXNlNjRVUkwpOwogICAgICAgICBpZiAoIXNlcnZlclJlc3BvbnNlRGF0YSkK
LSAgICAgICAgICAgIHJldHVybiAiQ291bGQgbm90IGRlY29kZSBzb3VyY2UgcmVzcG9uc2UgZGF0
YS4iX3M7CisgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiQ291bGQgbm90IGRlY29kZSAi
LCBjb250ZXh0Rm9yTG9nTWVzc2FnZSwgIiByZXNwb25zZSBkYXRhLiIpOwogICAgICAgICBhdXRv
IHNlcnZlclJlc3BvbnNlID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpz
ZXJ2ZXJSZXNwb25zZURhdGEtPmRhdGEoKSBsZW5ndGg6c2VydmVyUmVzcG9uc2VEYXRhLT5zaXpl
KCldKTsKIAogICAgICAgICBOU0Vycm9yKiBuc0Vycm9yID0gMDsKLSAgICAgICAgbV9zb3VyY2VV
bmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiA9IFttX3NvdXJjZVVubGlua2FibGVUb2tlbi53YWl0
aW5nVG9rZW4gYWN0aXZhdGVUb2tlbldpdGhTZXJ2ZXJSZXNwb25zZTpzZXJ2ZXJSZXNwb25zZS5n
ZXQoKSBlcnJvcjombnNFcnJvcl07CisgICAgICAgIHVubGlua2FibGVUb2tlbi5yZWFkeVRva2Vu
ID0gW3VubGlua2FibGVUb2tlbi53YWl0aW5nVG9rZW4gYWN0aXZhdGVUb2tlbldpdGhTZXJ2ZXJS
ZXNwb25zZTpzZXJ2ZXJSZXNwb25zZS5nZXQoKSBlcnJvcjombnNFcnJvcl07CiAgICAgICAgIGlm
IChuc0Vycm9yKQogICAgICAgICAgICAgcmV0dXJuIG5zRXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b247Ci0gICAgICAgIGlmICghbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbikKLSAg
ICAgICAgICAgIHJldHVybiAiRGlkIG5vdCBnZXQgYSBzb3VyY2UgdW5saW5rYWJsZSB0b2tlbiBy
ZWFkeSB0b2tlbi4iX3M7CisgICAgICAgIGlmICghdW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4p
CisgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiRGlkIG5vdCBnZXQgYSAiLCBjb250ZXh0
Rm9yTG9nTWVzc2FnZSwgIiB1bmxpbmthYmxlIHRva2VuIHJlYWR5IHRva2VuLiIpOwogICAgIH0K
IAotICAgIFNvdXJjZVNlY3JldFRva2VuIHRva2VuOwotICAgIHRva2VuLnRva2VuQmFzZTY0VVJM
ID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoW21fc291cmNlVW5saW5rYWJsZVRva2VuLnJlYWR5
VG9rZW4gdG9rZW5Db250ZW50XS5ieXRlcywgW21fc291cmNlVW5saW5rYWJsZVRva2VuLnJlYWR5
VG9rZW4gdG9rZW5Db250ZW50XS5sZW5ndGgpOwotICAgIHRva2VuLmtleUlEQmFzZTY0VVJMID0g
YmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcoW21fc291cmNlVW5saW5rYWJsZVRva2VuLnJlYWR5VG9r
ZW4ga2V5SWRdLmJ5dGVzLCBbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiBrZXlJ
ZF0ubGVuZ3RoKTsKLSAgICB0b2tlbi5zaWduYXR1cmVCYXNlNjRVUkwgPSBiYXNlNjRVUkxFbmNv
ZGVUb1N0cmluZyhbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiBzaWduYXR1cmVd
LmJ5dGVzLCBbbV9zb3VyY2VVbmxpbmthYmxlVG9rZW4ucmVhZHlUb2tlbiBzaWduYXR1cmVdLmxl
bmd0aCk7CisgICAgc2VjcmV0VG9rZW4udG9rZW5CYXNlNjRVUkwgPSBiYXNlNjRVUkxFbmNvZGVU
b1N0cmluZyhbdW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4gdG9rZW5Db250ZW50XS5ieXRlcywg
W3VubGlua2FibGVUb2tlbi5yZWFkeVRva2VuIHRva2VuQ29udGVudF0ubGVuZ3RoKTsKKyAgICBz
ZWNyZXRUb2tlbi5rZXlJREJhc2U2NFVSTCA9IGJhc2U2NFVSTEVuY29kZVRvU3RyaW5nKFt1bmxp
bmthYmxlVG9rZW4ucmVhZHlUb2tlbiBrZXlJZF0uYnl0ZXMsIFt1bmxpbmthYmxlVG9rZW4ucmVh
ZHlUb2tlbiBrZXlJZF0ubGVuZ3RoKTsKKyAgICBzZWNyZXRUb2tlbi5zaWduYXR1cmVCYXNlNjRV
UkwgPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhbdW5saW5rYWJsZVRva2VuLnJlYWR5VG9rZW4g
c2lnbmF0dXJlXS5ieXRlcywgW3VubGlua2FibGVUb2tlbi5yZWFkeVRva2VuIHNpZ25hdHVyZV0u
bGVuZ3RoKTsKIAotICAgIG1fc291cmNlU2VjcmV0VG9rZW4gPSBXVEZNb3ZlKHRva2VuKTsKICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc2VydmVyUmVz
cG9uc2VCYXNlNjRVUkwpOworICAgIFVOVVNFRF9QQVJBTSh1bmxpbmthYmxlVG9rZW4pOworICAg
IFVOVVNFRF9QQVJBTShzZWNyZXRUb2tlbik7CisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHRGb3JM
b2dNZXNzYWdlKTsKICAgICByZXR1cm4gIlVubGlua2FibGUgdG9rZW5zIGFyZSBub3Qgc3VwcG9y
dGVkIGJ5IHRoaXMgcGxhdGZvcm0uIl9zOwogI2VuZGlmIC8vIEhBVkUoUlNBX0JTU0EpCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3Bw
CmluZGV4IDE0ODZkNTIyOTZmNjc1MWYzMTBjNzk4MTY2YmY3ZWRiZWQyYWI0MzIuLjZlMzAyNTcx
NzgwNTVmNzEwMGRhNTJkYjkwY2I0YmExMGUxYmVjYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCkBAIC0xNjAsMTUgKzE2MCwy
NiBAQCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBEYXRhYmFzZVV0aWxpdGllczo6
YnVpbGRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudAogCiAgICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQgYXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlNvdXJjZUlEKHNvdXJjZUlEKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNv
dXJjZVNpdGUoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21S
ZWdpc3RyYWJsZURvbWFpblN0cmluZyhzb3VyY2VTaXRlRG9tYWluKSksIFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZShXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3Ry
aW5nKGRlc3RpbmF0aW9uU2l0ZURvbWFpbikpLCBidW5kbGVJRCwgV2FsbFRpbWU6OmZyb21SYXdT
ZWNvbmRzKHRpbWVPZkFkQ2xpY2spLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
QXR0cmlidXRpb25FcGhlbWVyYWw6Ok5vKTsKIAorICAgIC8vIFRoZXNlIGluZGljZXMgYXJlIHpl
cm8tYmFzZWQ6IGh0dHBzOi8vd3d3LnNxbGl0ZS5vcmcvYzNyZWYvY29sdW1uX2Jsb2IuaHRtbCAi
VGhlIGxlZnRtb3N0IGNvbHVtbiBvZiB0aGUgcmVzdWx0IHNldCBoYXMgdGhlIGluZGV4IDAiLgog
ICAgIGlmIChhdHRyaWJ1dGlvblR5cGUgPT0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1
dGlvblR5cGU6OkF0dHJpYnV0ZWQpIHsKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhID0gc3RhdGVtZW50LmNvbHVtbkludCgzKTsKICAgICAgICAgYXV0byBwcmlvcml0eSA9IHN0
YXRlbWVudC5jb2x1bW5JbnQoNCk7CiAgICAgICAgIGF1dG8gc291cmNlRWFybGllc3RUaW1lVG9T
ZW5kVmFsdWUgPSBzdGF0ZW1lbnQuY29sdW1uRG91YmxlKDYpOwogICAgICAgICBhdXRvIGRlc3Rp
bmF0aW9uRWFybGllc3RUaW1lVG9TZW5kVmFsdWUgPSBzdGF0ZW1lbnQuY29sdW1uRG91YmxlKDEw
KTsKKyAgICAgICAgYXV0byBkZXN0aW5hdGlvblRva2VuID0gc3RhdGVtZW50LmNvbHVtblRleHQo
MTIpOworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uU2lnbmF0dXJlID0gc3RhdGVtZW50LmNvbHVt
blRleHQoMTMpOworICAgICAgICBhdXRvIGRlc3RpbmF0aW9uS2V5SUQgPSBzdGF0ZW1lbnQuY29s
dW1uVGV4dCgxNCk7CiAKICAgICAgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEgIT0gLTEp
CiAgICAgICAgICAgICBhdHRyaWJ1dGlvbi5zZXRBdHRyaWJ1dGlvbihXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YSB7IHN0YXRpY19jYXN0PHVp
bnQ4X3Q+KGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6UHJpb3JpdHkocHJpb3JpdHkpIH0pOwogCisgICAgICAgIFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpEZXN0aW5hdGlvblNlY3JldFRva2VuIGRlc3RpbmF0aW9uU2Vj
cmV0VG9rZW47CisgICAgICAgIGRlc3RpbmF0aW9uU2VjcmV0VG9rZW4udG9rZW5CYXNlNjRVUkwg
PSBkZXN0aW5hdGlvblRva2VuOworICAgICAgICBkZXN0aW5hdGlvblNlY3JldFRva2VuLnNpZ25h
dHVyZUJhc2U2NFVSTCA9IGRlc3RpbmF0aW9uU2lnbmF0dXJlOworICAgICAgICBkZXN0aW5hdGlv
blNlY3JldFRva2VuLmtleUlEQmFzZTY0VVJMID0gZGVzdGluYXRpb25LZXlJRDsKKworICAgICAg
ICBhdHRyaWJ1dGlvbi5zZXREZXN0aW5hdGlvblNlY3JldFRva2VuKFdURk1vdmUoZGVzdGluYXRp
b25TZWNyZXRUb2tlbikpOworCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IHNvdXJj
ZUVhcmxpZXN0VGltZVRvU2VuZDsKICAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZGVz
dGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ7CiAKQEAgLTE4Miw3ICsxOTMsMTIgQEAgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgRGF0YWJhc2VVdGlsaXRpZXM6OmJ1aWxkUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQKICAgICAgICAgYXR0cmlidXRpb24uc2V0VGltZXNUb1NlbmQoeyBz
b3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kIH0p
OwogICAgIH0KIAotICAgIGF0dHJpYnV0aW9uLnNldFNvdXJjZVNlY3JldFRva2VuKHsgdG9rZW4s
IHNpZ25hdHVyZSwga2V5SUQgfSk7CisgICAgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OlNvdXJjZVNlY3JldFRva2VuIHNvdXJjZVNlY3JldFRva2VuOworICAgIHNvdXJjZVNlY3Jl
dFRva2VuLnRva2VuQmFzZTY0VVJMID0gdG9rZW47CisgICAgc291cmNlU2VjcmV0VG9rZW4uc2ln
bmF0dXJlQmFzZTY0VVJMID0gc2lnbmF0dXJlOworICAgIHNvdXJjZVNlY3JldFRva2VuLmtleUlE
QmFzZTY0VVJMID0ga2V5SUQ7CisKKyAgICBhdHRyaWJ1dGlvbi5zZXRTb3VyY2VTZWNyZXRUb2tl
bihXVEZNb3ZlKHNvdXJjZVNlY3JldFRva2VuKSk7CiAKICAgICByZXR1cm4gYXR0cmlidXRpb247
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAKaW5kZXggYmY4ZjM1N2Q3YTgzZWU1MDI4OTFkYjFlNWFiZDg0MTg0YzYz
MzZjOC4uZTUwY2Y0YWJiZTU2NGU0Y2EzZmI3MjZjYWE5ZDU2OWM1NGIwOWQ3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcApAQCAtMTAwNiw5ICsxMDA2LDExIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblRyaWdnZXJEYXRhPiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGE7CiAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKSB7Ci0gICAgICAgIGlm
IChhdXRvIHJlc3VsdCA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpwYXJzZUF0
dHJpYnV0aW9uUmVxdWVzdChyZWRpcmVjdFJlcXVlc3QudXJsKCkpKQorICAgICAgICBpZiAoYXV0
byByZXN1bHQgPSBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6cGFyc2VBdHRyaWJ1
dGlvblJlcXVlc3QocmVkaXJlY3RSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICAgICAgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gcmVzdWx0LnZhbHVlKCk7
Ci0gICAgICAgIGVsc2UgaWYgKCFyZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkpCisgICAgICAgICAg
ICBpZiAocHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQorICAg
ICAgICAgICAgICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UcmlnZ2VyRGF0
YS0+ZGVzdGluYXRpb25TaXRlID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0
LmZpcnN0UGFydHlGb3JDb29raWVzKCkgfTsKKyAgICAgICAgfSBlbHNlIGlmICghcmVzdWx0LmVy
cm9yKCkuaXNFbXB0eSgpKQogICAgICAgICAgICAgYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIHJlc3Vs
dC5lcnJvcigpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCmluZGV4IGJjYTdmNTE5
MzRjOGY2MzIyMzBiMjcxNDExOWJiMmU2NzNjZmE1ZjkuLjBjYWE4NzEyOWQ0ODg5Y2ZlNTU5ZDQ4
NmU3Y2ZiNGRiYmU5NzExMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcApAQCAtNDAsNyArNDAs
NyBAQCBjb25zdGV4cHIgYXV0byBzZXRVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dEFzRXhwaXJlZFF1ZXJ5ID0gIlVQREFURSBVbgogY29uc3RleHByIGF1dG8gaW5zZXJ0VW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRRdWVyeSA9ICJJTlNFUlQgT1IgUkVQTEFDRSBJ
TlRPIFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9tYWlu
SUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCiAgICAgInNvdXJjZUlELCB0aW1lT2ZBZENs
aWNrLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCkg
VkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfczsKIGNvbnN0ZXhwciBhdXRvIGluc2Vy
dEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFF1ZXJ5ID0gIklOU0VSVCBPUiBSRVBM
QUNFIElOVE8gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50IChzb3VyY2VTaXRlRG9t
YWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklELCAiCi0gICAgInNvdXJjZUlELCBhdHRyaWJ1
dGlvblRyaWdnZXJEYXRhLCBwcmlvcml0eSwgdGltZU9mQWRDbGljaywgZWFybGllc3RUaW1lVG9T
ZW5kVG9Tb3VyY2UsIHRva2VuLCBzaWduYXR1cmUsIGtleUlELCBlYXJsaWVzdFRpbWVUb1NlbmRU
b0Rlc3RpbmF0aW9uLCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEKSBWQUxVRVMgKD8sID8sID8s
ID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zOworICAgICJzb3VyY2VJRCwgYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSwgcHJpb3JpdHksIHRpbWVPZkFkQ2xpY2ssIGVhcmxpZXN0VGltZVRvU2Vu
ZFRvU291cmNlLCB0b2tlbiwgc2lnbmF0dXJlLCBrZXlJRCwgZWFybGllc3RUaW1lVG9TZW5kVG9E
ZXN0aW5hdGlvbiwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCwgZGVzdGluYXRpb25Ub2tlbiwg
ZGVzdGluYXRpb25TaWduYXR1cmUsIGRlc3RpbmF0aW9uS2V5SUQpIFZBTFVFUyAoPywgPywgPywg
PywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3M7CiBjb25zdGV4cHIgYXV0byBm
aW5kVW5hdHRyaWJ1dGVkUXVlcnkgPSAiU0VMRUNUICogRlJPTSBVbmF0dHJpYnV0ZWRQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQgPSA/IEFORCBkZXN0aW5h
dGlvblNpdGVEb21haW5JRCA9ID8gQU5EIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgPSA/Il9z
OwogY29uc3RleHByIGF1dG8gZmluZEF0dHJpYnV0ZWRRdWVyeSA9ICJTRUxFQ1QgKiBGUk9NIEF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBXSEVSRSBzb3VyY2VTaXRlRG9tYWluSUQg
PSA/IEFORCBkZXN0aW5hdGlvblNpdGVEb21haW5JRCA9ID8gQU5EIHNvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSUQgPSA/Il9zOwogY29uc3RleHByIGF1dG8gcmVtb3ZlVW5hdHRyaWJ1dGVkUXVlcnkg
PSAiREVMRVRFIEZST00gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgV0hFUkUg
c291cmNlU2l0ZURvbWFpbklEID0gPyBBTkQgZGVzdGluYXRpb25TaXRlRG9tYWluSUQgPSA/IEFO
RCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEID0gPyJfczsKQEAgLTY0LDYgKzY0LDcgQEAgY29u
c3RleHByIGF1dG8gY3JlYXRlQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gIkNS
RUFURSBUQUJMRSBBdHRyaWJ1dGUKICAgICAic291cmNlU2l0ZURvbWFpbklEIElOVEVHRVIgTk9U
IE5VTEwsIGRlc3RpbmF0aW9uU2l0ZURvbWFpbklEIElOVEVHRVIgTk9UIE5VTEwsIHNvdXJjZUlE
IElOVEVHRVIgTk9UIE5VTEwsICIKICAgICAiYXR0cmlidXRpb25UcmlnZ2VyRGF0YSBJTlRFR0VS
IE5PVCBOVUxMLCBwcmlvcml0eSBJTlRFR0VSIE5PVCBOVUxMLCB0aW1lT2ZBZENsaWNrIFJFQUwg
Tk9UIE5VTEwsICIKICAgICAiZWFybGllc3RUaW1lVG9TZW5kVG9Tb3VyY2UgUkVBTCwgdG9rZW4g
VEVYVCwgc2lnbmF0dXJlIFRFWFQsIGtleUlEIFRFWFQsIGVhcmxpZXN0VGltZVRvU2VuZFRvRGVz
dGluYXRpb24gUkVBTCwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRCBURVhULCAiCisgICAgImRl
c3RpbmF0aW9uVG9rZW4gVEVYVCwgZGVzdGluYXRpb25TaWduYXR1cmUgVEVYVCwgZGVzdGluYXRp
b25LZXlJRCBURVhULCAiCiAgICAgIkZPUkVJR04gS0VZKHNvdXJjZVNpdGVEb21haW5JRCkgUkVG
RVJFTkNFUyBQQ01PYnNlcnZlZERvbWFpbnMoZG9tYWluSUQpIE9OIERFTEVURSBDQVNDQURFLCBG
T1JFSUdOIEtFWShkZXN0aW5hdGlvblNpdGVEb21haW5JRCkgUkVGRVJFTkNFUyAiCiAgICAgIlBD
TU9ic2VydmVkRG9tYWlucyhkb21haW5JRCkgT04gREVMRVRFIENBU0NBREUpIl9zOwogY29uc3Rl
eHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgVW5hdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRfc291cmNlU2l0ZURvbWFpbklEX2Rlc3RpbmF0aW9uU2l0ZURv
bWFpbklEX3NvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQgb24gVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQgKCBzb3VyY2VTaXRlRG9tYWluSUQsIGRlc3RpbmF0aW9uU2l0ZURvbWFp
bklELCBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlEICkiX3M7CkBAIC04Niw3ICs4Nyw3IEBAIERh
dGFiYXNlOjpEYXRhYmFzZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgb3BlbkRhdGFiYXNlQW5kQ3JlYXRlU2NoZW1h
SWZOZWNlc3NhcnkoKTsKICAgICBlbmFibGVGb3JlaWduS2V5cygpOwotICAgIGFkZEJ1bmRsZUlE
Q29sdW1uSWZOZWNlc3NhcnkoKTsKKyAgICBhZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVj
ZXNzYXJ5KCk7CiAgICAgbWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCk7CiAgICAg
YWxsRGF0YWJhc2VzKCkuYWRkKHRoaXMpOwogfQpAQCAtMTgwLDYgKzE4MSw3IEBAIHZvaWQgRGF0
YWJhc2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50JiYKICAgICAgICAgYXV0byBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gYXR0
cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpID8gYXR0cmlidXRpb24uYXR0cmlidXRp
b25UcmlnZ2VyRGF0YSgpLnZhbHVlKCkuZGF0YSA6IC0xOwogICAgICAgICBhdXRvIHByaW9yaXR5
ID0gYXR0cmlidXRpb24uYXR0cmlidXRpb25UcmlnZ2VyRGF0YSgpID8gYXR0cmlidXRpb24uYXR0
cmlidXRpb25UcmlnZ2VyRGF0YSgpLnZhbHVlKCkucHJpb3JpdHkgOiAtMTsKICAgICAgICAgYXV0
byBzb3VyY2VFYXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1lc1RvU2VuZCgpLnNv
dXJjZUVhcmxpZXN0VGltZVRvU2VuZCA/IGF0dHJpYnV0aW9uLnRpbWVzVG9TZW5kKCkuc291cmNl
RWFybGllc3RUaW1lVG9TZW5kLnZhbHVlKCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpIDog
LTE7CisgICAgICAgIGF1dG8gZGVzdGluYXRpb25TZWNyZXRUb2tlbiA9IGF0dHJpYnV0aW9uLmF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEoKSA/IGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRh
dGEoKS52YWx1ZSgpLmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gOiBzdGQ6Om51bGxvcHQ7CiAgICAg
ICAgIGF1dG8gZGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQgPSBhdHRyaWJ1dGlvbi50aW1l
c1RvU2VuZCgpLmRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5kID8gYXR0cmlidXRpb24udGlt
ZXNUb1NlbmQoKS5kZXN0aW5hdGlvbkVhcmxpZXN0VGltZVRvU2VuZC52YWx1ZSgpLnNlY29uZHNT
aW5jZUVwb2NoKCkudmFsdWUoKSA6IC0xOwogCiAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBi
ZSBpbnNlcnRpbmcgYW4gYXR0cmlidXRlZCBwcml2YXRlIGNsaWNrIG1lYXN1cmVtZW50IHZhbHVl
IGludG8gdGhlIGRhdGFiYXNlIHdpdGhvdXQgdmFsaWQgcmVwb3J0IHRpbWVzLgpAQCAtMTk5LDYg
KzIwMSw5IEBAIHZvaWQgRGF0YWJhc2U6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdl
YkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50JiYKICAgICAgICAgICAgIHx8IHN0YXRlbWVu
dC0+YmluZFRleHQoMTAsIHNvdXJjZVNlY3JldFRva2VuID8gc291cmNlU2VjcmV0VG9rZW4tPmtl
eUlEQmFzZTY0VVJMIDogZW1wdHlTdHJpbmcoKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICB8
fCBzdGF0ZW1lbnQtPmJpbmREb3VibGUoMTEsIGRlc3RpbmF0aW9uRWFybGllc3RUaW1lVG9TZW5k
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoMTIsIGF0
dHJpYnV0aW9uLnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQoKSkgIT0gU1FMSVRFX09LCisgICAg
ICAgICAgICB8fCBzdGF0ZW1lbnQtPmJpbmRUZXh0KDEzLCBkZXN0aW5hdGlvblNlY3JldFRva2Vu
ID8gZGVzdGluYXRpb25TZWNyZXRUb2tlbi0+dG9rZW5CYXNlNjRVUkwgOiBlbXB0eVN0cmluZygp
KSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0YXRlbWVudC0+YmluZFRleHQoMTQsIGRl
c3RpbmF0aW9uU2VjcmV0VG9rZW4gPyBkZXN0aW5hdGlvblNlY3JldFRva2VuLT5zaWduYXR1cmVC
YXNlNjRVUkwgOiBlbXB0eVN0cmluZygpKSAhPSBTUUxJVEVfT0sKKyAgICAgICAgICAgIHx8IHN0
YXRlbWVudC0+YmluZFRleHQoMTUsIGRlc3RpbmF0aW9uU2VjcmV0VG9rZW4gPyBkZXN0aW5hdGlv
blNlY3JldFRva2VuLT5rZXlJREJhc2U2NFVSTCA6IGVtcHR5U3RyaW5nKCkpICE9IFNRTElURV9P
SwogICAgICAgICAgICAgfHwgc3RhdGVtZW50LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiJXAg
LSBEYXRhYmFzZTo6aW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgaW5zZXJ0QXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50UXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBSSVZBVEVf
TE9HX1NUUklORywgdGhpcywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTY5OSwyMCArNzA0LDE4IEBAIHZvaWQgRGF0YWJh
c2U6OmRlc3Ryb3lTdGF0ZW1lbnRzKCkKICAgICBtX2luc2VydE9ic2VydmVkRG9tYWluU3RhdGVt
ZW50ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBEYXRhYmFzZTo6YWRkQnVuZGxlSURDb2x1bW5JZk5l
Y2Vzc2FyeSgpCit2b2lkIERhdGFiYXNlOjphZGREZXN0aW5hdGlvblRva2VuQ29sdW1uc0lmTmVj
ZXNzYXJ5KCkKIHsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYXQgdGhlIGVuZCBvZiAyMDIx
LiBObyBwdWJsaWMgcmVsZWFzZSB3YXMgbWFkZSB3aXRoIHRoZSBzY2hlbWEgbWlzc2luZyBzb3Vy
Y2VBcHBsaWNhdGlvbkJ1bmRsZUlELCBzbyB0aGlzIGlzIG9ubHkgbmVlZGVkIHRvIG1pZ3JhdGUg
aW50ZXJuYWwgdXNlcnMgd2hvIHVwZGF0ZWQgaW4gU2VwdGVtYmVyIDIwMjEuCi0gICAgU3RyaW5n
IGF0dHJpYnV0ZWRUYWJsZU5hbWUoIkF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCIp
OwotICAgIFN0cmluZyB1bmF0dHJpYnV0ZWRUYWJsZU5hbWUoIlVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50Il9zKTsKLSAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25CdW5kbGVJ
RENvbHVtbk5hbWUoInNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSUQiX3MpOwotICAgIGF1dG8gY2hl
Y2tDb2x1bW5zID0gWyZdIChjb25zdCBTdHJpbmcmIHRhYmxlTmFtZSkgewotICAgICAgICBhdXRv
IGNvbHVtbnMgPSBjb2x1bW5zRm9yVGFibGUodGFibGVOYW1lKTsKLSAgICAgICAgaWYgKCFjb2x1
bW5zLnNpemUoKSB8fCBjb2x1bW5zLmxhc3QoKSAhPSBzb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlE
Q29sdW1uTmFtZSkKLSAgICAgICAgICAgIGFkZE1pc3NpbmdDb2x1bW5Ub1RhYmxlKHRhYmxlTmFt
ZSwgc291cmNlQXBwbGljYXRpb25CdW5kbGVJRENvbHVtbk5hbWUpOwotICAgIH07Ci0gICAgY2hl
Y2tDb2x1bW5zKGF0dHJpYnV0ZWRUYWJsZU5hbWUpOwotICAgIGNoZWNrQ29sdW1ucyh1bmF0dHJp
YnV0ZWRUYWJsZU5hbWUpOworICAgIFN0cmluZyBhdHRyaWJ1dGVkVGFibGVOYW1lKCJBdHRyaWJ1
dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MpOworICAgIFN0cmluZyBkZXN0aW5hdGlvbktl
eUlEQ29sdW1uTmFtZSgiZGVzdGluYXRpb25LZXlJRCJfcyk7CisgICAgYXV0byBjb2x1bW5zID0g
Y29sdW1uc0ZvclRhYmxlKGF0dHJpYnV0ZWRUYWJsZU5hbWUpOworICAgIGlmICghY29sdW1ucy5z
aXplKCkgfHwgY29sdW1ucy5sYXN0KCkgIT0gZGVzdGluYXRpb25LZXlJRENvbHVtbk5hbWUpIHsK
KyAgICAgICAgYWRkTWlzc2luZ0NvbHVtblRvVGFibGUoYXR0cmlidXRlZFRhYmxlTmFtZSwgImRl
c3RpbmF0aW9uVG9rZW4iX3MpOworICAgICAgICBhZGRNaXNzaW5nQ29sdW1uVG9UYWJsZShhdHRy
aWJ1dGVkVGFibGVOYW1lLCAiZGVzdGluYXRpb25TaWduYXR1cmUiX3MpOworICAgICAgICBhZGRN
aXNzaW5nQ29sdW1uVG9UYWJsZShhdHRyaWJ1dGVkVGFibGVOYW1lLCBkZXN0aW5hdGlvbktleUlE
Q29sdW1uTmFtZSk7CisgICAgfQogfQorCiBib29sIERhdGFiYXNlOjpuZWVkc1VwZGF0ZWRTY2hl
bWEoKQogewogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBhdCB0aGUgZW5kIG9mIDIwMjEuIE5v
IHB1YmxpYyByZWxlYXNlIHdhcyBtYWRlIHdpdGggdGhlIHNjaGVtYSBtaXNzaW5nIHNvdXJjZUFw
cGxpY2F0aW9uQnVuZGxlSUQsIHNvIHRoaXMgaXMgb25seSBuZWVkZWQgdG8gbWlncmF0ZSBpbnRl
cm5hbCB1c2VycyB3aG8gdXBkYXRlZCBpbiBTZXB0ZW1iZXIgMjAyMS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmgKaW5kZXggYTUwMzczNzgwZjIxN2IzNjM2NDRlMGJlNGUyYjI2MjM5NTk0MjgyMS4uMWZjZTY1
YWRhY2Y3NWVhNWVjNWFlYmE3ZTIxZWM1ZDkzOThkYWU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmgK
QEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6Om9wdGlvbmFsPERvbWFpbklEPiBk
b21haW5JRChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIFN0cmluZyBn
ZXREb21haW5TdHJpbmdGcm9tRG9tYWluSUQoRG9tYWluSUQpIGNvbnN0IGZpbmFsOwogCi0gICAg
dm9pZCBhZGRCdW5kbGVJRENvbHVtbklmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBhZGREZXN0aW5h
dGlvblRva2VuQ29sdW1uc0lmTmVjZXNzYXJ5KCk7CiAgICAgYm9vbCBuZWVkc1VwZGF0ZWRTY2hl
bWEoKSBmaW5hbDsKICAgICBib29sIGNyZWF0ZVVuaXF1ZUluZGljZXMoKSBmaW5hbDsKICAgICBj
b25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBUYWJs
ZUFuZEluZGV4UGFpcj4mIGV4cGVjdGVkVGFibGVBbmRJbmRleFF1ZXJpZXMoKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyLmNwcAppbmRleCBkZmRlN2M4MzQxNGJmOWMyZTFkODkxNGYxZjZhZjk2NDMx
M2EzNjNlLi4wOTQyNzk2ODc3YWIzOTViMzk5OGY0YTg4MzljNWE4M2M5M2VjMDk3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogdXNpbmcgU291cmNlU2l0ZSA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRl
OwogdXNpbmcgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgPSBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU7CiB1c2luZyBBdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7
Ci11c2luZyBFcGhlbWVyYWxTb3VyY2VOb25jZSA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpF
cGhlbWVyYWxTb3VyY2VOb25jZTsKK3VzaW5nIEVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNlOwogCiBjb25zdGV4cHIgU2Vjb25kcyBkZWJ1Z01v
ZGVTZWNvbmRzVW50aWxTZW5kIHsgMTBfcyB9OwogCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCYmCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBp
ZiAobV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKQotICAgICAgICAgICAgICAgIG1l
YXN1cmVtZW50LnNldFNvdXJjZVVubGlua2FibGVUb2tlblZhbHVlKG1fZnJhdWRQcmV2ZW50aW9u
VmFsdWVzRm9yVGVzdGluZy0+dW5saW5rYWJsZVRva2VuKTsKKyAgICAgICAgICAgICAgICBtZWFz
dXJlbWVudC5zZXRTb3VyY2VVbmxpbmthYmxlVG9rZW5WYWx1ZShtX2ZyYXVkUHJldmVudGlvblZh
bHVlc0ZvclRlc3RpbmctPnVubGlua2FibGVUb2tlbkZvclNvdXJjZSk7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byBlcnJv
ck1lc3NhZ2UgPSBtZWFzdXJlbWVudC5jYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VVbmxpbmthYmxl
VG9rZW4ocHVibGljS2V5QmFzZTY0VVJMKSkgewpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZVVuYXR0cmlidXRlZChQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudCYmCiAgICAgICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICAgICAgZ2V0
U2lnbmVkVW5saW5rYWJsZVRva2VuKFdURk1vdmUobWVhc3VyZW1lbnQpKTsKKyAgICAgICAgICAg
IGdldFNpZ25lZFVubGlua2FibGVUb2tlbkZvclNvdXJjZShXVEZNb3ZlKG1lYXN1cmVtZW50KSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTExOCwxMyArMTE4
LDE4IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRUb2tlblB1Ymxp
Y0tleShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmCiAgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHRva2VuUHVibGljS2V5VVJMID0gYXR0cmli
dXRpb24udG9rZW5QdWJsaWNLZXlVUkwoKTsKKyAgICBVUkwgdG9rZW5QdWJsaWNLZXlVUkw7CiAg
ICAgaWYgKG1fdG9rZW5QdWJsaWNLZXlVUkxGb3JUZXN0aW5nKSB7CiAgICAgICAgIGlmIChhdHRy
aWJ1dGlvblJlcG9ydEVuZHBvaW50ID09IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblJlcG9ydEVuZHBvaW50OjpEZXN0aW5hdGlvbikKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgdG9rZW5QdWJsaWNLZXlVUkwgPSAqbV90b2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc7
CiAgICAgICAgIC8vIEZJWE1FKDIyNTM2NCkKICAgICAgICAgcGNtRGF0YUNhcnJpZWQgPSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6Ok5vblBlcnNvbmFsbHlJZGVudGlm
aWFibGU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGF1dG8gb3B0VVJMID0gYXR0cmlidXRp
b24udG9rZW5QdWJsaWNLZXlVUkwoKSkKKyAgICAgICAgICAgIHRva2VuUHVibGljS2V5VVJMID0g
Km9wdFVSTDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGlmICh0b2tlblB1YmxpY0tleVVSTC5pc0VtcHR5KCkgfHwgIXRva2VuUHVibGljS2V5VVJMLmlz
VmFsaWQoKSkKQEAgLTE1Niw2MCArMTYxLDEyNiBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcjo6Z2V0VG9rZW5QdWJsaWNLZXkoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJgog
ICAgIH0pOwogfQogCi12b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2ln
bmVkVW5saW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgbWVhc3VyZW1lbnQp
Cit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0VG9rZW5QdWJsaWNLZXko
QXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9uUmVw
b3J0RW5kcG9pbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZCBwY21E
YXRhQ2FycmllZCwgRnVuY3Rpb248dm9pZChBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYgYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSwgY29uc3QgU3RyaW5nJiBwdWJsaWNLZXlCYXNlNjRVUkwpPiYmIGNh
bGxiYWNrKQogewogICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgLy8gVGhpcyBpcyBndWFyYW50ZWVkIHRvIGJlIGNsb3NlIGluIHRpbWUgdG8gdGhlIG5h
dmlnYXRpb25hbCBjbGljayB3aGljaCBtYWtlcyBpdCBsaWtlbHkgdG8gYmUgcGVyc29uYWxseSBp
ZGVudGlmaWFibGUuCi0gICAgYXV0byBwY21EYXRhQ2FycmllZCA9IFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpQY21EYXRhQ2FycmllZDo6UGVyc29uYWxseUlkZW50aWZpYWJsZTsKLSAgICBhdXRv
IHRva2VuU2lnbmF0dXJlVVJMID0gbWVhc3VyZW1lbnQudG9rZW5TaWduYXR1cmVVUkwoKTsKLSAg
ICBpZiAobV90b2tlblNpZ25hdHVyZVVSTEZvclRlc3RpbmcpIHsKLSAgICAgICAgdG9rZW5TaWdu
YXR1cmVVUkwgPSAqbV90b2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc7CisgICAgVVJMIHRva2Vu
UHVibGljS2V5VVJMOworICAgIGlmIChtX3Rva2VuUHVibGljS2V5VVJMRm9yVGVzdGluZykgewor
ICAgICAgICBpZiAoYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCA9PSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludDo6U291cmNlKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB0b2tlblB1YmxpY0tleVVSTCA9ICptX3Rva2VuUHVibGljS2V5VVJM
Rm9yVGVzdGluZzsKICAgICAgICAgLy8gRklYTUUoMjI1MzY0KQogICAgICAgICBwY21EYXRhQ2Fy
cmllZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6Tm9uUGVyc29u
YWxseUlkZW50aWZpYWJsZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYXV0byBvcHRVUkwg
PSBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnRva2VuUHVibGljS2V5VVJMKCkpCisgICAgICAgICAg
ICB0b2tlblB1YmxpY0tleVVSTCA9ICpvcHRVUkw7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAodG9rZW5TaWduYXR1cmVVUkwuaXNFbXB0eSgpIHx8
ICF0b2tlblNpZ25hdHVyZVVSTC5pc1ZhbGlkKCkpCisgICAgaWYgKHRva2VuUHVibGljS2V5VVJM
LmlzRW1wdHkoKSB8fCAhdG9rZW5QdWJsaWNLZXlVUkwuaXNWYWxpZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAoZGVidWdNb2RlRW5hYmxlZCgpKQogICAgICAgICBwY21EYXRhQ2Fycmll
ZCA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2FycmllZDo6UGVyc29uYWxseUlk
ZW50aWZpYWJsZTsKIAotICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQsICJBYm91dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIik7
Ci0gICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6TG9n
LCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEFib3V0IHRvIGZpcmUgYSB1bmxpbmthYmxl
IHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iX3MpOworICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsICJBYm91dCB0byBmaXJlIGEgdG9rZW4gcHVibGljIGtleSByZXF1
ZXN0LiIpOworICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2
ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGEgdG9r
ZW4gcHVibGljIGtleSByZXF1ZXN0LiJfcyk7CiAKLSAgICBQQ006Ok5ldHdvcmtMb2FkZXI6OnN0
YXJ0KFdURk1vdmUodG9rZW5TaWduYXR1cmVVUkwpLCBtZWFzdXJlbWVudC50b2tlblNpZ25hdHVy
ZUpTT04oKSwgcGNtRGF0YUNhcnJpZWQsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0
aGlzLCBtZWFzdXJlbWVudCA9IFdURk1vdmUobWVhc3VyZW1lbnQpXSAoYXV0byYgZXJyb3JEZXNj
cmlwdGlvbiwgYXV0byYganNvbk9iamVjdCkgbXV0YWJsZSB7CisgICAgUENNOjpOZXR3b3JrTG9h
ZGVyOjpzdGFydChXVEZNb3ZlKHRva2VuUHVibGljS2V5VVJMKSwgbnVsbHB0ciwgcGNtRGF0YUNh
cnJpZWQsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlzLCBhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0gKGF1dG8mIGVycm9yRGVzY3JpcHRpb24sIGF1dG8mIGpzb25PYmpl
Y3QpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIGlmICghZXJyb3JEZXNjcmlwdGlvbi5pc051bGwoKSkgewotICAgICAgICAg
ICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBSZWNlaXZlZCBlcnJvcjog
JyJfcywgZXJyb3JEZXNjcmlwdGlvbiwgIicgZm9yIHNlY3JldCB0b2tlbiBzaWduaW5nIHJlcXVl
c3QuIl9zKSk7CisgICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2Uo
TWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1l
bnRdIFJlY2VpdmVkIGVycm9yOiAnIl9zLCBlcnJvckRlc2NyaXB0aW9uLCAiJyBmb3IgdG9rZW4g
cHVibGljIGtleSByZXF1ZXN0LiJfcykpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFqc29uT2JqZWN0KSB7Ci0gICAgICAgICAgICBtX2NsaWVudC0+YnJv
YWRjYXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpFcnJvciwgbWFrZVN0cmluZygiW1By
aXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIEpTT04gcmVzcG9uc2UgaXMgZW1wdHkgZm9yIHRva2Vu
IHNpZ25pbmcgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RD
b25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBD
bGljayBNZWFzdXJlbWVudF0gSlNPTiByZXNwb25zZSBpcyBlbXB0eSBmb3IgdG9rZW4gcHVibGlj
IGtleSByZXF1ZXN0LiJfcykpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgYXV0byBzaWduYXR1cmVCYXNlNjRVUkwgPSBqc29uT2JqZWN0LT5nZXRTdHJpbmcoInVu
bGlua2FibGVfdG9rZW4iX3MpOwotICAgICAgICBpZiAoc2lnbmF0dXJlQmFzZTY0VVJMLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50
XSBKU09OIHJlc3BvbnNlIGRvZXNuJ3QgaGF2ZSB0aGUga2V5ICd1bmxpbmthYmxlX3Rva2VuJyBm
b3IgdG9rZW4gc2lnbmluZyByZXF1ZXN0LiJfcykpOworICAgICAgICBtX2NsaWVudC0+YnJvYWRj
YXN0Q29uc29sZU1lc3NhZ2UoTWVzc2FnZUxldmVsOjpMb2csIG1ha2VTdHJpbmcoIltQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBHb3QgSlNPTiByZXNwb25zZSBmb3IgdG9rZW4gcHVibGljIGtl
eSByZXF1ZXN0LiJfcykpOworCisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUoYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSksIGpzb25PYmplY3QtPmdldFN0cmluZygidG9rZW5fcHVibGljX2tleSJfcykp
OworICAgIH0pOworfQorCit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y29u
ZmlndXJlRm9yVG9rZW5TaWduaW5nKFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fy
cmllZCYgcGNtRGF0YUNhcnJpZWQsIFVSTCYgdG9rZW5TaWduYXR1cmVVUkwsIHN0ZDo6b3B0aW9u
YWw8VVJMPiBnaXZlblRva2VuU2lnbmF0dXJlVVJMKQoreworICAgIC8vIFRoaXMgaXMgZ3VhcmFu
dGVlZCB0byBiZSBjbG9zZSBpbiB0aW1lIHRvIGEgcGFnZSBsb2FkIHdoaWNoIGNhbiBpZGVudGlm
eSB0aGUgdXNlciwgZWl0aGVyIHRoZSBzb3VyY2Ugb3IgdGhlIGRlc3RpbmF0aW9uLgorICAgIHBj
bURhdGFDYXJyaWVkID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpQ
ZXJzb25hbGx5SWRlbnRpZmlhYmxlOworICAgIGlmIChtX3Rva2VuU2lnbmF0dXJlVVJMRm9yVGVz
dGluZykgeworICAgICAgICB0b2tlblNpZ25hdHVyZVVSTCA9ICptX3Rva2VuU2lnbmF0dXJlVVJM
Rm9yVGVzdGluZzsKKyAgICAgICAgLy8gRklYTUUoMjI1MzY0KQorICAgICAgICBpZiAoIWRlYnVn
TW9kZUVuYWJsZWQoKSkKKyAgICAgICAgICAgIHBjbURhdGFDYXJyaWVkID0gUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25hbGx5SWRlbnRpZmlhYmxlOwor
ICAgIH0gZWxzZSBpZiAoZ2l2ZW5Ub2tlblNpZ25hdHVyZVVSTCkKKyAgICAgICAgdG9rZW5TaWdu
YXR1cmVVUkwgPSAqZ2l2ZW5Ub2tlblNpZ25hdHVyZVVSTDsKK30KKworc3RkOjpvcHRpb25hbDxT
dHJpbmc+IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmF0dXJlQmFzZTY0
VVJMRnJvbVRva2VuU2lnbmF0dXJlUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBlcnJvckRlc2NyaXB0
aW9uLCBjb25zdCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYganNvbk9iamVjdCkKK3sKKyAgICBpZiAo
IWVycm9yRGVzY3JpcHRpb24uaXNOdWxsKCkpIHsKKyAgICAgICAgbV9jbGllbnQtPmJyb2FkY2Fz
dENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRl
IENsaWNrIE1lYXN1cmVtZW50XSBSZWNlaXZlZCBlcnJvcjogJyJfcywgZXJyb3JEZXNjcmlwdGlv
biwgIicgZm9yIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBpZiAoIWpzb25PYmplY3QpIHsKKyAgICAgICAgbV9j
bGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VT
dHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBKU09OIHJlc3BvbnNlIGlzIGVtcHR5
IGZvciB0b2tlbiBzaWduaW5nIHJlcXVlc3QuIl9zKSk7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfQorCisgICAgYXV0byBzaWduYXR1cmVCYXNlNjRVUkwgPSBqc29uT2JqZWN0
LT5nZXRTdHJpbmcoInVubGlua2FibGVfdG9rZW4iX3MpOworICAgIGlmIChzaWduYXR1cmVCYXNl
NjRVUkwuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVz
c2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFz
dXJlbWVudF0gSlNPTiByZXNwb25zZSBkb2Vzbid0IGhhdmUgdGhlIGtleSAndW5saW5rYWJsZV90
b2tlbicgZm9yIHRva2VuIHNpZ25pbmcgcmVxdWVzdC4iX3MpKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICB9CisKKyAgICByZXR1cm4gc2lnbmF0dXJlQmFzZTY0VVJMOworfQor
Cit2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2lnbmVkVW5saW5rYWJs
ZVRva2VuRm9yU291cmNlKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgbWVhc3VyZW1lbnQpCit7
CisgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQgcGNtRGF0YUNhcnJpZWQ7CisgICAg
VVJMIHRva2VuU2lnbmF0dXJlVVJMOworICAgIGNvbmZpZ3VyZUZvclRva2VuU2lnbmluZyhwY21E
YXRhQ2FycmllZCwgdG9rZW5TaWduYXR1cmVVUkwsIG1lYXN1cmVtZW50LnRva2VuU2lnbmF0dXJl
VVJMKCkpOworCisgICAgaWYgKHRva2VuU2lnbmF0dXJlVVJMLmlzRW1wdHkoKSB8fCAhdG9rZW5T
aWduYXR1cmVVUkwuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSRUxFQVNFX0xP
R19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiQWJvdXQgdG8gZmlyZSBhIHVubGlua2Fi
bGUgdG9rZW4gc2lnbmluZyByZXF1ZXN0IGZvciB0aGUgY2xpY2sgc291cmNlLiIpOworICAgIG1f
Y2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50XSBBYm91dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBz
aWduaW5nIHJlcXVlc3QgZm9yIHRoZSBjbGljayBzb3VyY2UuIl9zKTsKKworICAgIFBDTTo6TmV0
d29ya0xvYWRlcjo6c3RhcnQoV1RGTW92ZSh0b2tlblNpZ25hdHVyZVVSTCksIG1lYXN1cmVtZW50
LnRva2VuU2lnbmF0dXJlSlNPTigpLCBwY21EYXRhQ2FycmllZCwgW3dlYWtUaGlzID0gV2Vha1B0
ciB7ICp0aGlzIH0sIHRoaXMsIG1lYXN1cmVtZW50ID0gV1RGTW92ZShtZWFzdXJlbWVudCldIChh
dXRvJiBlcnJvckRlc2NyaXB0aW9uLCBhdXRvJiBqc29uT2JqZWN0KSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICAvLyBGSVggTk9XIQotICAgICAgICBpZiAobV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0
aW5nKQotICAgICAgICAgICAgbWVhc3VyZW1lbnQuc2V0U291cmNlU2VjcmV0VG9rZW4oeyBtX2Zy
YXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnNlY3JldFRva2VuLCBtX2ZyYXVkUHJldmVu
dGlvblZhbHVlc0ZvclRlc3RpbmctPnNpZ25hdHVyZSwgbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNG
b3JUZXN0aW5nLT5rZXlJRCB9KTsKKworICAgICAgICBhdXRvIHNpZ25hdHVyZUJhc2U2NFVSTCA9
IGdldFNpZ25hdHVyZUJhc2U2NFVSTEZyb21Ub2tlblNpZ25hdHVyZVJlc3BvbnNlKGVycm9yRGVz
Y3JpcHRpb24sIGpzb25PYmplY3QpOworICAgICAgICBpZiAoIXNpZ25hdHVyZUJhc2U2NFVSTCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobV9mcmF1ZFByZXZlbnRpb25WYWx1
ZXNGb3JUZXN0aW5nKSB7CisgICAgICAgICAgICBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291
cmNlU2VjcmV0VG9rZW4gc291cmNlU2VjcmV0VG9rZW47CisgICAgICAgICAgICBzb3VyY2VTZWNy
ZXRUb2tlbi50b2tlbkJhc2U2NFVSTCA9IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGlu
Zy0+c2VjcmV0VG9rZW5Gb3JTb3VyY2U7CisgICAgICAgICAgICBzb3VyY2VTZWNyZXRUb2tlbi5z
aWduYXR1cmVCYXNlNjRVUkwgPSBtX2ZyYXVkUHJldmVudGlvblZhbHVlc0ZvclRlc3RpbmctPnNp
Z25hdHVyZUZvclNvdXJjZTsKKyAgICAgICAgICAgIHNvdXJjZVNlY3JldFRva2VuLmtleUlEQmFz
ZTY0VVJMID0gbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nLT5rZXlJREZvclNvdXJj
ZTsKKyAgICAgICAgICAgIG1lYXN1cmVtZW50LnNldFNvdXJjZVNlY3JldFRva2VuKFdURk1vdmUo
c291cmNlU2VjcmV0VG9rZW4pKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBpZiAoYXV0byBlcnJvck1lc3NhZ2UgPSBtZWFzdXJlbWVudC5jYWxjdWxh
dGVBbmRVcGRhdGVTb3VyY2VTZWNyZXRUb2tlbihzaWduYXR1cmVCYXNlNjRVUkwpKSB7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoYXV0byBlcnJvck1lc3NhZ2UgPSBtZWFzdXJl
bWVudC5jYWxjdWxhdGVBbmRVcGRhdGVTb3VyY2VTZWNyZXRUb2tlbigqc2lnbmF0dXJlQmFzZTY0
VVJMKSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsICJHb3QgdGhlIGZvbGxvd2luZyBlcnJvciBpbiBjYWxjdWxhdGVBbmRVcGRhdGVT
b3VyY2VTZWNyZXRUb2tlbigpOiAnJXtwdWJsaWN9cyIsIGVycm9yTWVzc2FnZS0+dXRmOCgpLmRh
dGEoKSk7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVt
ZW50XSAiX3MsICplcnJvck1lc3NhZ2UpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0KICNlbmRpZgorICAgICAgICB9CiAKICAgICAgICAgbV9jbGll
bnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6TG9nLCAiW1ByaXZhdGUg
Q2xpY2sgTWVhc3VyZW1lbnRdIFN0b3JpbmcgYSBzZWNyZXQgdG9rZW4uIl9zKTsKIApAQCAtMjE4
LDYgKzI4OSw1MiBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Z2V0U2ln
bmVkVW5saW5rYWJsZVRva2VuKFByaXZhdGVDbGlja01lYXN1cgogCiB9CiAKK3ZvaWQgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpnZXRTaWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0
aW5hdGlvbihTb3VyY2VTaXRlJiYgc291cmNlU2l0ZSwgQXR0cmlidXRpb25EZXN0aW5hdGlvblNp
dGUmJiBkZXN0aW5hdGlvblNpdGUsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlv
blRyaWdnZXJEYXRhLCBjb25zdCBBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXImIGFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcikKK3sKKyAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRhQ2Fycmll
ZCBwY21EYXRhQ2FycmllZDsKKyAgICBVUkwgdG9rZW5TaWduYXR1cmVVUkw7CisgICAgY29uZmln
dXJlRm9yVG9rZW5TaWduaW5nKHBjbURhdGFDYXJyaWVkLCB0b2tlblNpZ25hdHVyZVVSTCwgYXR0
cmlidXRpb25UcmlnZ2VyRGF0YS50b2tlblNpZ25hdHVyZVVSTCgpKTsKKworICAgIGlmICh0b2tl
blNpZ25hdHVyZVVSTC5pc0VtcHR5KCkgfHwgIXRva2VuU2lnbmF0dXJlVVJMLmlzVmFsaWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgIkFib3V0IHRvIGZpcmUgYSB1bmxpbmthYmxlIHRva2VuIHNpZ25pbmcgcmVxdWVz
dCBmb3IgdGhlIGNsaWNrIGRlc3RpbmF0aW9uLiIpOworICAgIG1fY2xpZW50LT5icm9hZGNhc3RD
b25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVt
ZW50XSBBYm91dCB0byBmaXJlIGEgdW5saW5rYWJsZSB0b2tlbiBzaWduaW5nIHJlcXVlc3QgZm9y
IHRoZSBjbGljayBkZXN0aW5hdGlvbi4iX3MpOworCisgICAgUENNOjpOZXR3b3JrTG9hZGVyOjpz
dGFydChXVEZNb3ZlKHRva2VuU2lnbmF0dXJlVVJMKSwgYXR0cmlidXRpb25UcmlnZ2VyRGF0YS50
b2tlblNpZ25hdHVyZUpTT04oKSwgcGNtRGF0YUNhcnJpZWQsIFt3ZWFrVGhpcyA9IFdlYWtQdHIg
eyAqdGhpcyB9LCB0aGlzLCBzb3VyY2VTaXRlID0gV1RGTW92ZShzb3VyY2VTaXRlKSwgZGVzdGlu
YXRpb25TaXRlID0gV1RGTW92ZShkZXN0aW5hdGlvblNpdGUpLCBhdHRyaWJ1dGlvblRyaWdnZXJE
YXRhID0gV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKSwgYXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyID0gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmlzb2xhdGVkQ29weSgpXSAo
YXV0byYgZXJyb3JEZXNjcmlwdGlvbiwgYXV0byYganNvbk9iamVjdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBz
aWduYXR1cmVCYXNlNjRVUkwgPSBnZXRTaWduYXR1cmVCYXNlNjRVUkxGcm9tVG9rZW5TaWduYXR1
cmVSZXNwb25zZShlcnJvckRlc2NyaXB0aW9uLCBqc29uT2JqZWN0KTsKKyAgICAgICAgaWYgKCFz
aWduYXR1cmVCYXNlNjRVUkwpCisgICAgICAgICAgICByZXR1cm47CisKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgICAgIGlmICghYXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kZXN0aW5hdGlv
blVubGlua2FibGVUb2tlbikgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lORk8oUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJEZXN0aW5hdGlvbiB1bmxpbmthYmxlIHRva2VuIGlzIG1p
c3NpbmcuIik7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gRGVz
dGluYXRpb24gdW5saW5rYWJsZSB0b2tlbiBpcyBtaXNzaW5nLiJfcyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IFBy
aXZhdGVDbGlja01lYXN1cmVtZW50OjpjYWxjdWxhdGVBbmRVcGRhdGVEZXN0aW5hdGlvblNlY3Jl
dFRva2VuKCpzaWduYXR1cmVCYXNlNjRVUkwsICphdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmRlc3Rp
bmF0aW9uVW5saW5rYWJsZVRva2VuKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAg
ICAgICAgICAgICAgYXV0byBlcnJvck1lc3NhZ2UgPSByZXN1bHQuZXJyb3IoKS5pc0VtcHR5KCkg
PyAiVW5rbm93biIgOiByZXN1bHQuZXJyb3IoKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xP
R19JTkZPKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCAiR290IHRoZSBmb2xsb3dpbmcgZXJyb3Ig
aW4gY2FsY3VsYXRlQW5kVXBkYXRlU291cmNlU2VjcmV0VG9rZW4oKTogJyV7cHVibGljfXMiLCBl
cnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQtPmJy
b2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6RXJyb3IsIG1ha2VTdHJpbmcoIltQ
cml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSAiX3MsIGVycm9yTWVzc2FnZSkpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbV9jbGllbnQtPmJy
b2FkY2FzdENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VMZXZlbDo6TG9nLCAiW1ByaXZhdGUgQ2xpY2sg
TWVhc3VyZW1lbnRdIFN0b3JpbmcgYSBzZWNyZXQgdG9rZW4uIl9zKTsKKworICAgICAgICAgICAg
YXR0cmlidXRpb25UcmlnZ2VyRGF0YS5kZXN0aW5hdGlvblNlY3JldFRva2VuID0gcmVzdWx0LnZh
bHVlKCk7CisgICAgICAgICAgICBhdHRyaWJ1dGUoV1RGTW92ZShzb3VyY2VTaXRlKSwgV1RGTW92
ZShkZXN0aW5hdGlvblNpdGUpLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBtX3By
aXZhdGVDbGlja01lYXN1cmVtZW50QXBwQnVuZGxlSURGb3JUZXN0aW5nID8gKm1fcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBcHBCdW5kbGVJREZvclRlc3RpbmcgOiBhcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIpOworI2VuZGlmCisgICAgfSk7Cit9CisKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyOjppbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCYmIG1lYXN1cmVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0
aW9uVHlwZSB0eXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgc3RvcmUoKS5pbnNlcnRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChXVEZNb3Zl
KG1lYXN1cmVtZW50KSwgdHlwZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtMjUx
LDcgKzM2OCw3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpoYW5kbGVB
dHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKICAgICBSZWdpc3RyYWJsZURvbWFp
biBzb3VyY2VEb21haW47CiAgICAgaWYgKHJlZGlyZWN0RG9tYWluLm1hdGNoZXMoZmlyc3RQYXJ0
eVVSTCkpIHsKICAgICAgICAgaWYgKCFhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLnNvdXJjZVJlZ2lz
dHJhYmxlRG9tYWluKSB7Ci0gICAgICAgICAgICBtX2NsaWVudC0+YnJvYWRjYXN0Q29uc29sZU1l
c3NhZ2UoTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRd
IFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBhY2NlcHRlZCBiZWNhdXNlIGl0IHdhcyByZXF1ZXN0
ZWQgaW4gYW4gSFRUUCByZWRpcmVjdCB0aGF0IGlzIHNhbWUtc2l0ZSBhcyB0aGUgICBmaXJzdC1w
YXJ0eSBhbmQgbm8gYXR0cmlidXRpb25Tb3VyY2UgcXVlcnkgcGFyYW1ldGVyIHdhcyBwcm92aWRl
ZC4iX3MpOworICAgICAgICAgICAgbV9jbGllbnQtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2Vy
aW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQgYmVjYXVzZSBpdCB3YXMgcmVxdWVzdGVkIGluIGFu
IEhUVFAgcmVkaXJlY3QgdGhhdCBpcyBzYW1lLXNpdGUgYXMgdGhlIGZpcnN0LXBhcnR5IGFuZCBu
byBhdHRyaWJ1dGlvblNvdXJjZSBxdWVyeSBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkLiJfcyk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc291cmNlRG9tYWluID0gKmF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEuc291cmNlUmVnaXN0cmFibGVEb21haW47CkBAIC0yNjMsNiAr
MzgwLDQxIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpoYW5kbGVBdHRy
aWJ1dGlvbihBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYKIAogICAgIG1fY2xpZW50LT5icm9hZGNh
c3RDb25zb2xlTWVzc2FnZShNZXNzYWdlTGV2ZWw6OkxvZywgIltQcml2YXRlIENsaWNrIE1lYXN1
cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IGFjY2VwdGVkLiJfcyk7CiAKKyAgICAvLyBTaWduaW5n
IG9mIGEgZGVzdGluYXRpb24gdG9rZW4gbXVzdCBiZSBkb25lIHVuY29uZGl0aW9uYWxseS4gT3Ro
ZXJ3aXNlIGl0IGJlY29tZXMgYSB3YXkgdG8gZGlzY292ZXIgdGhhdCB0aGVyZSBpcyBhIHBlbmRp
bmcgYXR0cmlidXRpb24uCisgICAgaWYgKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuZXBoZW1lcmFs
RGVzdGluYXRpb25Ob25jZSkgeworICAgICAgICBhdXRvIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFD
b3B5ID0gYXR0cmlidXRpb25UcmlnZ2VyRGF0YTsKKyAgICAgICAgLy8gVGhpcyBpcyBndWFyYW50
ZWVkIHRvIGJlIGNsb3NlIGluIHRpbWUgdG8gdGhlIHRyaWdnZXJpbmcgZXZlbnQgd2hpY2ggbWFr
ZXMgaXQgbGlrZWx5IHRvIGJlIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlLgorICAgICAgICBnZXRU
b2tlblB1YmxpY0tleShXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGFDb3B5KSwgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQ6OkRlc3RpbmF0aW9u
LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6OlBlcnNvbmFsbHlJZGVu
dGlmaWFibGUsIFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlzLCBzb3VyY2VTaXRl
ID0gU291cmNlU2l0ZSB7IFdURk1vdmUoc291cmNlRG9tYWluKSB9LCBkZXN0aW5hdGlvblNpdGUg
PSBBdHRyaWJ1dGlvbkRlc3RpbmF0aW9uU2l0ZSB7IGZpcnN0UGFydHlVUkwgfSwgYXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyID0gYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyLmlzb2xhdGVk
Q29weSgpXSAoQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEs
IGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
IGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBp
ZiAocHVibGljS2V5QmFzZTY0VVJMLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lORk8oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsICJUaGUgcHVibGljIGtleSBVUkwg
d2FzIGVtcHR5LiIpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xl
TWVzc2FnZShNZXNzYWdlTGV2ZWw6OkVycm9yLCAiW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRd
IFRoZSBwdWJsaWMga2V5IFVSTCB3YXMgZW1wdHkuIik7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9mcmF1ZFByZXZlbnRpb25WYWx1
ZXNGb3JUZXN0aW5nKQorICAgICAgICAgICAgICAgIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEuc2V0
RGVzdGluYXRpb25VbmxpbmthYmxlVG9rZW5WYWx1ZShtX2ZyYXVkUHJldmVudGlvblZhbHVlc0Zv
clRlc3RpbmctPnVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0g
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OmNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uVW5s
aW5rYWJsZVRva2VuKHB1YmxpY0tleUJhc2U2NFVSTCk7CisgICAgICAgICAgICAgICAgaWYgKHJl
c3VsdCkgeworICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhLmRlc3Rp
bmF0aW9uVW5saW5rYWJsZVRva2VuID0gcmVzdWx0LnZhbHVlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGdldFNpZ25lZFVubGlua2FibGVUb2tlbkZvckRlc3RpbmF0aW9uKFdURk1vdmUoc291cmNl
U2l0ZSksIFdURk1vdmUoZGVzdGluYXRpb25TaXRlKSwgV1RGTW92ZShhdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhKSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRsZUlERm9yVGVzdGluZyA/
ICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50QXBwQnVuZGxlSURGb3JUZXN0aW5nIDogYXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gcmVz
dWx0LmVycm9yKCkuaXNFbXB0eSgpID8gIlVua25vd24iIDogcmVzdWx0LmVycm9yKCk7CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSU5GTyhQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgIkdv
dCB0aGUgZm9sbG93aW5nIGVycm9yIGluIGNhbGN1bGF0ZUFuZFVwZGF0ZURlc3RpbmF0aW9uVW5s
aW5rYWJsZVRva2VuKCk6ICcle3B1YmxpY31zIiwgZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShNZXNz
YWdlTGV2ZWw6OkVycm9yLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0g
Il9zLCBlcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisjZW5kaWYKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBh
dHRyaWJ1dGUoU291cmNlU2l0ZSB7IFdURk1vdmUoc291cmNlRG9tYWluKSB9LCBBdHRyaWJ1dGlv
bkRlc3RpbmF0aW9uU2l0ZSB7IGZpcnN0UGFydHlVUkwgfSwgV1RGTW92ZShhdHRyaWJ1dGlvblRy
aWdnZXJEYXRhKSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRsZUlERm9yVGVzdGlu
ZyA/ICptX3ByaXZhdGVDbGlja01lYXN1cmVtZW50QXBwQnVuZGxlSURGb3JUZXN0aW5nIDogYXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKTsKIH0KIApAQCAtMzI0LDE2ICs0NzYsNjMgQEAgdm9p
ZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZShTb3VyY2VTaXRlJiYg
c291cmNlU2l0ZSwgQXR0cmlidXQKIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdChjb25zdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYg
YXR0cmlidXRpb24sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVu
ZHBvaW50IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpCiB7Ci0gICAgaWYgKCFmZWF0dXJlRW5h
YmxlZCgpKQorICAgIGlmICghZmVhdHVyZUVuYWJsZWQoKSB8fCAhYXR0cmlidXRpb24uYXR0cmli
dXRpb25UcmlnZ2VyRGF0YSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWF0dHJpYnV0
aW9uLnNvdXJjZVNlY3JldFRva2VuKCkpIHsKKyAgICBpZiAoIWF0dHJpYnV0aW9uLnNvdXJjZVNl
Y3JldFRva2VuKCkgJiYgIWF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKS0+ZGVz
dGluYXRpb25TZWNyZXRUb2tlbikgewogICAgICAgICBmaXJlQ29udmVyc2lvblJlcXVlc3RJbXBs
KGF0dHJpYnV0aW9uLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGF1dG8gYXR0cmlidXRpb25Db3B5ID0gYXR0cmlidXRpb247CiAgICAg
Ly8gVGhpcyBoYXBwZW5zIG91dCBvZiB3ZWJwYWdlIGNvbnRleHQgYW5kIHdpdGggYSBsb25nIGRl
bGF5IGFuZCBpcyB0aHVzIHVubGlrZWx5IHRvIGJlIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlLgor
ICAgIGlmIChhdHRyaWJ1dGlvbi5zb3VyY2VTZWNyZXRUb2tlbigpKSB7CisgICAgICAgIGdldFRv
a2VuUHVibGljS2V5KFdURk1vdmUoYXR0cmlidXRpb25Db3B5KSwgYXR0cmlidXRpb25SZXBvcnRF
bmRwb2ludCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJz
b25hbGx5SWRlbnRpZmlhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdGhpcywg
YXR0cmlidXRpb25SZXBvcnRFbmRwb2ludF0gKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0
cmlidXRpb24sIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSB7CisgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
YXV0byBwdWJsaWNLZXlEYXRhID0gYmFzZTY0VVJMRGVjb2RlKHB1YmxpY0tleUJhc2U2NFVSTCk7
CisgICAgICAgICAgICBpZiAoIXB1YmxpY0tleURhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUo
UEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgICAgICAgICBjcnlw
dG8tPmFkZEJ5dGVzKHB1YmxpY0tleURhdGEtPmRhdGEoKSwgcHVibGljS2V5RGF0YS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgIGF1dG8gcHVibGljS2V5RGF0YUhhc2ggPSBjcnlwdG8tPmNvbXB1dGVI
YXNoKCk7CisKKyAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmlu
ZyhwdWJsaWNLZXlEYXRhSGFzaC5kYXRhKCksIHB1YmxpY0tleURhdGFIYXNoLnNpemUoKSk7Cisg
ICAgICAgICAgICBpZiAoa2V5SUQgIT0gYXR0cmlidXRpb24uc291cmNlU2VjcmV0VG9rZW4oKS0+
a2V5SURCYXNlNjRVUkwpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBp
ZiAoIWF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uVHJpZ2dlckRhdGEoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdn
ZXJEYXRhKCktPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4pIHsKKyAgICAgICAgICAgICAgICBnZXRU
b2tlblB1YmxpY0tleShXVEZNb3ZlKGF0dHJpYnV0aW9uKSwgYXR0cmlidXRpb25SZXBvcnRFbmRw
b2ludCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkOjpOb25QZXJzb25h
bGx5SWRlbnRpZmlhYmxlLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgdGhpcywgYXR0
cmlidXRpb25SZXBvcnRFbmRwb2ludF0gKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgYXR0cmli
dXRpb24sIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBwdWJsaWNLZXlEYXRhID0gYmFzZTY0VVJMRGVjb2Rl
KHB1YmxpY0tleUJhc2U2NFVSTCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghcHVibGljS2V5
RGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAg
ICAgICBhdXRvIGNyeXB0byA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9E
aWdlc3Q6OkFsZ29yaXRobTo6U0hBXzI1Nik7CisgICAgICAgICAgICAgICAgICAgIGNyeXB0by0+
YWRkQnl0ZXMocHVibGljS2V5RGF0YS0+ZGF0YSgpLCBwdWJsaWNLZXlEYXRhLT5zaXplKCkpOwor
ICAgICAgICAgICAgICAgICAgICBhdXRvIHB1YmxpY0tleURhdGFIYXNoID0gY3J5cHRvLT5jb21w
dXRlSGFzaCgpOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8ga2V5SUQgPSBiYXNlNjRVUkxF
bmNvZGVUb1N0cmluZyhwdWJsaWNLZXlEYXRhSGFzaC5kYXRhKCksIHB1YmxpY0tleURhdGFIYXNo
LnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChrZXlJRCAhPSBhdHRyaWJ1dGlvbi5h
dHRyaWJ1dGlvblRyaWdnZXJEYXRhKCktPmRlc3RpbmF0aW9uU2VjcmV0VG9rZW4tPmtleUlEQmFz
ZTY0VVJMKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgICAgIGZpcmVDb252ZXJzaW9uUmVxdWVzdEltcGwoYXR0cmlidXRpb24sIGF0dHJpYnV0aW9u
UmVwb3J0RW5kcG9pbnQpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmlyZUNvbnZlcnNpb25SZXF1ZXN0
SW1wbChhdHRyaWJ1dGlvbiwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CisgICAgICAgIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgZ2V0VG9rZW5QdWJsaWNLZXkoV1RGTW92
ZShhdHRyaWJ1dGlvbkNvcHkpLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50LCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQ6Ok5vblBlcnNvbmFsbHlJZGVudGlmaWFibGUs
IFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCB0aGlzLCBhdHRyaWJ1dGlvblJlcG9ydEVu
ZHBvaW50XSAoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgY29uc3QgU3Ry
aW5nJiBwdWJsaWNLZXlCYXNlNjRVUkwpIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM0Nyw3ICs1NDYsNyBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlcjo6ZmlyZUNvbnZlcnNpb25SZXF1ZXN0KGNvbnN0IFByaXZhdGVDbGlja01l
YQogICAgICAgICBhdXRvIHB1YmxpY0tleURhdGFIYXNoID0gY3J5cHRvLT5jb21wdXRlSGFzaCgp
OwogCiAgICAgICAgIGF1dG8ga2V5SUQgPSBiYXNlNjRVUkxFbmNvZGVUb1N0cmluZyhwdWJsaWNL
ZXlEYXRhSGFzaC5kYXRhKCksIHB1YmxpY0tleURhdGFIYXNoLnNpemUoKSk7Ci0gICAgICAgIGlm
IChrZXlJRCAhPSBhdHRyaWJ1dGlvbi5zb3VyY2VTZWNyZXRUb2tlbigpLT5rZXlJREJhc2U2NFVS
TCkKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCktPmRl
c3RpbmF0aW9uU2VjcmV0VG9rZW4gfHwga2V5SUQgIT0gYXR0cmlidXRpb24uYXR0cmlidXRpb25U
cmlnZ2VyRGF0YSgpLT5kZXN0aW5hdGlvblNlY3JldFRva2VuLT5rZXlJREJhc2U2NFVSTCkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBmaXJlQ29udmVyc2lvblJlcXVlc3RJbXBsKGF0
dHJpYnV0aW9uLCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKQEAgLTUyNyw3ICs3MjYsNyBA
QCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c2V0UENNRnJhdWRQcmV2ZW50
aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbgogewogICAgIGlmICh1bmxpbmthYmxlVG9rZW4uaXNF
bXB0eSgpIHx8IHNlY3JldFRva2VuLmlzRW1wdHkoKSB8fCBzaWduYXR1cmUuaXNFbXB0eSgpIHx8
IGtleUlELmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZnJhdWRQcmV2ZW50aW9u
VmFsdWVzRm9yVGVzdGluZyA9IFRlc3RpbmdGcmF1ZFByZXZlbnRpb25WYWx1ZXMgeyBXVEZNb3Zl
KHVubGlua2FibGVUb2tlbiksIFdURk1vdmUoc2VjcmV0VG9rZW4pLCBXVEZNb3ZlKHNpZ25hdHVy
ZSksIFdURk1vdmUoa2V5SUQpIH07CisgICAgbV9mcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0
aW5nID0gVGVzdGluZ0ZyYXVkUHJldmVudGlvblZhbHVlcyB7IFdURk1vdmUodW5saW5rYWJsZVRv
a2VuKSwgV1RGTW92ZShzZWNyZXRUb2tlbiksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShr
ZXlJRCksIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIGVtcHR5
U3RyaW5nKCkgfTsKIH0KIAogYm9vbCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZl
YXR1cmVFbmFibGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCmluZGV4IGM2NzNhZjg0ODgzMmZk
MWI3YzA5YjI5MGVhOTdlMTEzYzAyYTI1NjMuLjExNzgyZDIzNDBlNTI1NWY2NjVjMjFjNzA5NjM3
NzUxZmYxYmY5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApAQCAtNzMsNyArNzMsMTEgQEAgcHJpdmF0
ZToKICAgICBjb25zdCBQQ006OlN0b3JlJiBzdG9yZSgpIGNvbnN0OwogICAgIHZvaWQgc3RhcnRU
aW1lcihTZWNvbmRzKTsKICAgICB2b2lkIGdldFRva2VuUHVibGljS2V5KFByaXZhdGVDbGlja01l
YXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVu
ZHBvaW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQsIEZ1bmN0aW9u
PHZvaWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgY29uc3QgU3RyaW5n
JiBwdWJsaWNLZXlCYXNlNjRVUkwpPiYmKTsKLSAgICB2b2lkIGdldFNpZ25lZFVubGlua2FibGVU
b2tlbihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKKyAgICB2b2lkIGdldFRva2VuUHVibGlj
S2V5KEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0
dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQY21EYXRh
Q2FycmllZCwgRnVuY3Rpb248dm9pZChBdHRyaWJ1dGlvblRyaWdnZXJEYXRhJiYsIGNvbnN0IFN0
cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKT4mJik7CisgICAgdm9pZCBjb25maWd1cmVGb3JUb2tl
blNpZ25pbmcoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlBjbURhdGFDYXJyaWVkJiwgVVJMJiB0
b2tlblNpZ25hdHVyZVVSTCwgc3RkOjpvcHRpb25hbDxVUkw+IGdpdmVuVG9rZW5TaWduYXR1cmVV
UkwpOworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBnZXRTaWduYXR1cmVCYXNlNjRVUkxGcm9t
VG9rZW5TaWduYXR1cmVSZXNwb25zZShjb25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24sIGNv
bnN0IFJlZlB0cjxKU09OOjpPYmplY3Q+Jik7CisgICAgdm9pZCBnZXRTaWduZWRVbmxpbmthYmxl
VG9rZW5Gb3JTb3VyY2UoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7CisgICAgdm9pZCBnZXRT
aWduZWRVbmxpbmthYmxlVG9rZW5Gb3JEZXN0aW5hdGlvbihTb3VyY2VTaXRlJiYsIEF0dHJpYnV0
aW9uRGVzdGluYXRpb25TaXRlJiYsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyJik7CiAgICAgdm9pZCBpbnNlcnRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudEF0dHJpYnV0aW9uVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIGNsZWFyU2VudEF0dHJpYnV0aW9uKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYsIFByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KTsKICAgICB2b2lk
IGF0dHJpYnV0ZShTb3VyY2VTaXRlJiYsIEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiYsIEF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
Jik7CkBAIC0xMDEsMTAgKzEwNSwxNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8QXR0
cmlidXRpb25SZXBvcnRUZXN0Q29uZmlnPiBtX2F0dHJpYnV0aW9uUmVwb3J0VGVzdENvbmZpZzsK
IAogICAgIHN0cnVjdCBUZXN0aW5nRnJhdWRQcmV2ZW50aW9uVmFsdWVzIHsKLSAgICAgICAgU3Ry
aW5nIHVubGlua2FibGVUb2tlbjsKLSAgICAgICAgU3RyaW5nIHNlY3JldFRva2VuOwotICAgICAg
ICBTdHJpbmcgc2lnbmF0dXJlOwotICAgICAgICBTdHJpbmcga2V5SUQ7CisgICAgICAgIFN0cmlu
ZyB1bmxpbmthYmxlVG9rZW5Gb3JTb3VyY2U7CisgICAgICAgIFN0cmluZyBzZWNyZXRUb2tlbkZv
clNvdXJjZTsKKyAgICAgICAgU3RyaW5nIHNpZ25hdHVyZUZvclNvdXJjZTsKKyAgICAgICAgU3Ry
aW5nIGtleUlERm9yU291cmNlOworICAgICAgICBTdHJpbmcgdW5saW5rYWJsZVRva2VuRm9yRGVz
dGluYXRpb247CisgICAgICAgIFN0cmluZyBzZWNyZXRUb2tlbkZvckRlc3RpbmF0aW9uOworICAg
ICAgICBTdHJpbmcgc2lnbmF0dXJlRm9yRGVzdGluYXRpb247CisgICAgICAgIFN0cmluZyBrZXlJ
REZvckRlc3RpbmF0aW9uOwogICAgIH07CiAKICAgICBzdGQ6Om9wdGlvbmFsPFRlc3RpbmdGcmF1
ZFByZXZlbnRpb25WYWx1ZXM+IG1fZnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZzsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMjM2YmFl
YTQwNDhlYjcwOWYwMzVjZDdiMWE4MWIzMzAyNjI3MDI1Li44ZTJmYzU5MTE4ZmQyZWYyNDFmMWM1
MGMzYmRkNDg1MmQ2MDIzYWU2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjEtMTItMDMgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgUENNOiBVbmxpbmthYmxlIHRva2VucyBm
b3IgdHJpZ2dlcmluZyBldmVudCB0byBwcmV2ZW50IGZyYXVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM2NzMKKyAgICAgICAgPHJkYXI6Ly83OTQy
NjM0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
ZXcgdGVzdCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5EZXN0aW5hdGlvbkNsaWNrRnJhdWRQcmV2
ZW50aW9uLgorICAgICAgICBUaGUgb3RoZXIgY2hhbmdlcyBhcmUgYSByZXBvcnQgdmVyc2lvbiBi
dW1wIDItPjMgYW5kIGEgbmFtZSBjaGFuZ2UKKyAgICAgICAgRnJhdWRQcmV2ZW50aW9u4oCTPlNv
dXJjZUNsaWNrRnJhdWRQcmV2ZW50aW9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1ByaXZhdGVDbGlja01lYXN1cmVtZW50LmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jb2Nv
YS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvY29hLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9FdmVu
dEF0dHJpYnV0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cnVuQmFzaWNQQ01UZXN0
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRyaWdnZXJBdHRyaWJ1dGlvbldpdGhTdWJyZXNv
dXJjZVJlZGlyZWN0KToKKyAgICAgICAgICAgIEV4dHJhY3RlZCBzaGFyZWQgY29kZS4KKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OnJ1bkRlc3RpbmF0aW9uV2ViVmlldyk6CisgICAgICAgICAgICBF
eHRyYWN0ZWQgc2hhcmVkIGNvZGUuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzaWduVW5saW5r
YWJsZVRva2VuQW5kU2VuZFNlY3JldFRva2VuKToKKyAgICAgICAgICAgIEV4dHJhY3RlZCBzaGFy
ZWQgY29kZS4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAgICAgTmV3
IHRlc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQuRGVzdGluYXRpb25DbGlja0ZyYXVkUHJldmVu
dGlvbi4KKyAgICAgICAgICAgIEV4dHJhY3RlZCBzaGFyZWQgY29kZSBmcm9tIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50LlNvdXJjZUNsaWNrRnJhdWRQcmV2ZW50aW9uLgorCiAyMDIxLTEyLTAyICBE
ZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbY3NzLXZhbHVlcy00
XSBTdXBwb3J0IGAqdmlgIChpbmxpbmUpIGFuZCBgKnZiYCAoYmxvY2spIHZpZXdwb3J0IHVuaXRz
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1By
aXZhdGVDbGlja01lYXN1cmVtZW50LmNwcAppbmRleCA3MTRhZmNhYjRjNWVkN2Y2ODcyMDhjZTJl
NzIzNGE5MWFjN2U4OWMzLi41ZTc3NzY2YmFkOWE3MDQyNWFhYjM5Y2NjZDIxYjBhODE4NGZkNTg3
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgVEVTVChQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFsaWRNaW5WYWx1ZXMpCiAgICAgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQgYXR0cmlidXRpb24geyBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlSUQo
bWluNkJpdFZhbHVlKSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUgeyB3ZWJL
aXRVUkwgfSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25T
aXRlIHsgZXhhbXBsZVVSTCB9LCAidGVzdC5idW5kbGUuaWRlbnRpZmllciIsIFdhbGxUaW1lOjpu
b3coKSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRXBoZW1l
cmFsOjpObyB9OwogICAgIGF0dHJpYnV0aW9uLmF0dHJpYnV0ZUFuZEdldEVhcmxpZXN0VGltZVRv
U2VuZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YShtaW42
Qml0VmFsdWUsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQcmlvcml0eShtaW42Qml0VmFsdWUp
KSwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OklzUnVubmluZ0xheW91dFRlc3Q6
Ok5vKTsKIAotICAgIEFTU0VSVF9FUShhdHRyaWJ1dGlvbi5hdHRyaWJ1dGlvblJlcG9ydEpTT04o
KS0+dG9KU09OU3RyaW5nKCksICJ7XCJzb3VyY2VfZW5nYWdlbWVudF90eXBlXCI6XCJjbGlja1wi
LFwic291cmNlX3NpdGVcIjpcIndlYmtpdC5vcmdcIixcInNvdXJjZV9pZFwiOjAsXCJhdHRyaWJ1
dGVkX29uX3NpdGVcIjpcImV4YW1wbGUuY29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjowLFwidmVyc2lv
blwiOjJ9Iik7CisgICAgQVNTRVJUX0VRKGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uUmVwb3J0SlNP
TigpLT50b0pTT05TdHJpbmcoKSwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5cGVcIjpcImNsaWNr
XCIsXCJzb3VyY2Vfc2l0ZVwiOlwid2Via2l0Lm9yZ1wiLFwic291cmNlX2lkXCI6MCxcImF0dHJp
YnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5jb21cIixcInRyaWdnZXJfZGF0YVwiOjAsXCJ2ZXJz
aW9uXCI6M30iKTsKIH0KIAogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFsaWRNaWRW
YWx1ZXMpCkBAIC02Niw3ICs2Niw3IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFZh
bGlkTWlkVmFsdWVzKQogICAgIFByaXZhdGVDbGlja01lYXN1cmVtZW50IGF0dHJpYnV0aW9uIHsg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZUlEKCh1aW50MzJfdCkxOTIpLCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZSB7IHdlYktpdFVSTCB9LCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgeyBleGFtcGxlVVJMIH0sICJ0
ZXN0LmJ1bmRsZS5pZGVudGlmaWVyIiwgV2FsbFRpbWU6Om5vdygpLCBXZWJDb3JlOjpQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25FcGhlbWVyYWw6Ok5vIH07CiAgICAgYXR0cmli
dXRpb24uYXR0cmlidXRlQW5kR2V0RWFybGllc3RUaW1lVG9TZW5kKFByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpBdHRyaWJ1dGlvblRyaWdnZXJEYXRhKCh1aW50MzJfdCk5LCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6UHJpb3JpdHkoKHVpbnQzMl90KTIyKSksIFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50OjpJc1J1bm5pbmdMYXlvdXRUZXN0OjpObyk7CiAKLSAgICBBU1NFUlRfRVEo
YXR0cmlidXRpb24uYXR0cmlidXRpb25SZXBvcnRKU09OKCktPnRvSlNPTlN0cmluZygpLCAie1wi
c291cmNlX2VuZ2FnZW1lbnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCJ3ZWJr
aXQub3JnXCIsXCJzb3VyY2VfaWRcIjoxOTIsXCJhdHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1w
bGUuY29tXCIsXCJ0cmlnZ2VyX2RhdGFcIjo5LFwidmVyc2lvblwiOjJ9Iik7CisgICAgQVNTRVJU
X0VRKGF0dHJpYnV0aW9uLmF0dHJpYnV0aW9uUmVwb3J0SlNPTigpLT50b0pTT05TdHJpbmcoKSwg
IntcInNvdXJjZV9lbmdhZ2VtZW50X3R5cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwi
d2Via2l0Lm9yZ1wiLFwic291cmNlX2lkXCI6MTkyLFwiYXR0cmlidXRlZF9vbl9zaXRlXCI6XCJl
eGFtcGxlLmNvbVwiLFwidHJpZ2dlcl9kYXRhXCI6OSxcInZlcnNpb25cIjozfSIpOwogfQogCiBU
RVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBWYWxpZE1heFZhbHVlcykKQEAgLTc0LDcgKzc0
LDcgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgVmFsaWRNYXhWYWx1ZXMpCiAgICAg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgYXR0cmlidXRpb24geyBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6U291cmNlSUQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZUlEOjpNYXhFbnRy
b3B5KSwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGUgeyB3ZWJLaXRVUkwgfSwg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlIHsgZXhh
bXBsZVVSTCB9LCAidGVzdC5idW5kbGUuaWRlbnRpZmllciIsIFdhbGxUaW1lOjpub3coKSwgV2Vi
Q29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRXBoZW1lcmFsOjpObyB9
OwogICAgIGF0dHJpYnV0aW9uLmF0dHJpYnV0ZUFuZEdldEVhcmxpZXN0VGltZVRvU2VuZChQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YShQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDo6QXR0cmlidXRpb25UcmlnZ2VyRGF0YTo6TWF4RW50cm9weSwgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OlByaW9yaXR5KFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpQcmlvcml0
eTo6TWF4RW50cm9weSkpLCBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6SXNSdW5u
aW5nTGF5b3V0VGVzdDo6Tm8pOwogCi0gICAgQVNTRVJUX0VRKGF0dHJpYnV0aW9uLmF0dHJpYnV0
aW9uUmVwb3J0SlNPTigpLT50b0pTT05TdHJpbmcoKSwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5
cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwid2Via2l0Lm9yZ1wiLFwic291cmNlX2lk
XCI6MjU1LFwiYXR0cmlidXRlZF9vbl9zaXRlXCI6XCJleGFtcGxlLmNvbVwiLFwidHJpZ2dlcl9k
YXRhXCI6MTUsXCJ2ZXJzaW9uXCI6Mn0iKTsKKyAgICBBU1NFUlRfRVEoYXR0cmlidXRpb24uYXR0
cmlidXRpb25SZXBvcnRKU09OKCktPnRvSlNPTlN0cmluZygpLCAie1wic291cmNlX2VuZ2FnZW1l
bnRfdHlwZVwiOlwiY2xpY2tcIixcInNvdXJjZV9zaXRlXCI6XCJ3ZWJraXQub3JnXCIsXCJzb3Vy
Y2VfaWRcIjoyNTUsXCJhdHRyaWJ1dGVkX29uX3NpdGVcIjpcImV4YW1wbGUuY29tXCIsXCJ0cmln
Z2VyX2RhdGFcIjoxNSxcInZlcnNpb25cIjozfSIpOwogfQogCiBURVNUKFByaXZhdGVDbGlja01l
YXN1cmVtZW50LCBFYXJsaWVzdFRpbWVUb1NlbmRBdHRyaWJ1dGlvbk1pbmltdW1EZWxheSkKQEAg
LTEyNiw3ICsxMjYsNyBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBWYWxpZENvbnZl
cnNpb25VUkxzKQogCiBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBWYWxpZFNvdXJjZU5v
bmNlKQogewotICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyAiQUJDREVGYWJjZGVmMDEyMzQ1Njc4OSJfcyB9Owor
ICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1l
cmFsTm9uY2UgeyAiQUJDREVGYWJjZGVmMDEyMzQ1Njc4OSJfcyB9OwogICAgIEFTU0VSVF9UUlVF
KGVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSk7CiB9CiAKQEAgLTI4MiwxOSArMjgyLDE5IEBAIFRF
U1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEludmFsaWRDb252ZXJzaW9uV2l0aERpc2FsbG93
ZWRVUkxDb21wb25lbnRzKQogVEVTVChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgSW52YWxpZFNv
dXJjZU5vbmNlKQogewogICAgIC8vIEZld2VyIHRoYW4gdGhlIHJlcXVyaWVkIG51bWJlciBvZiBi
eXRlcy4KLSAgICBhdXRvIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgIkFCQ0RhYmNkMDEyMzQ1Njc4OSJfcyB9OworICAgIGF1
dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9u
Y2UgeyAiQUJDRGFiY2QwMTIzNDU2Nzg5Il9zIH07CiAgICAgQVNTRVJUX0ZBTFNFKGVwaGVtZXJh
bE5vbmNlLmlzVmFsaWQoKSk7CiAgICAgLy8gTW9yZSB0aGFuIHRoZSByZXF1cmllZCBudW1iZXIg
b2YgYnl0ZXMuCi0gICAgZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
RXBoZW1lcmFsU291cmNlTm9uY2UgeyAiQUJDREVGR0hJYWJjZGVmZ2hpMDEyMzQ1Njc4OSJfcyB9
OworICAgIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJh
bE5vbmNlIHsgIkFCQ0RFRkdISWFiY2RlZmdoaTAxMjM0NTY3ODkiX3MgfTsKICAgICBBU1NFUlRf
RkFMU0UoZXBoZW1lcmFsTm9uY2UuaXNWYWxpZCgpKTsKICAgICAvLyBJbGxlZ2FsLCBBU0NJSSBj
aGFyYWN0ZXIgJy8nLgotICAgIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQ6OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgIkFCQ0RFRmFiY2RlLzAxMjM0NTY3ODkiX3MgfTsK
KyAgICBlcGhlbWVyYWxOb25jZSA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxO
b25jZSB7ICJBQkNERUZhYmNkZS8wMTIzNDU2Nzg5Il9zIH07CiAgICAgQVNTRVJUX0ZBTFNFKGVw
aGVtZXJhbE5vbmNlLmlzVmFsaWQoKSk7CiAgICAgLy8gSWxsZWdhbCwgbm9uLUFTQ0lJIGNoYXJh
Y3RlciAnw6UnLgotICAgIGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkVwaGVtZXJhbFNvdXJjZU5vbmNlIHsgIkFCQ0RFRmFiY2Rlw6UwMTIzNDU2Nzg5IiB9OworICAg
IGVwaGVtZXJhbE5vbmNlID0gUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkVwaGVtZXJhbE5vbmNl
IHsgIkFCQ0RFRmFiY2Rlw6UwMTIzNDU2Nzg5IiB9OwogICAgIEFTU0VSVF9GQUxTRShlcGhlbWVy
YWxOb25jZS5pc1ZhbGlkKCkpOwogICAgIC8vIEVtcHR5IHN0cmluZy4KLSAgICBlcGhlbWVyYWxO
b25jZSA9IFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpFcGhlbWVyYWxTb3VyY2VOb25jZSB7IFN0
cmluZ0ltcGw6OmVtcHR5KCkgfTsKKyAgICBlcGhlbWVyYWxOb25jZSA9IFByaXZhdGVDbGlja01l
YXN1cmVtZW50OjpFcGhlbWVyYWxOb25jZSB7IFN0cmluZ0ltcGw6OmVtcHR5KCkgfTsKICAgICBB
U1NFUlRfRkFMU0UoZXBoZW1lcmFsTm9uY2UuaXNWYWxpZCgpKTsKIH0KIApAQCAtMzE4LDcgKzMx
OCw3IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEludmFsaWRCbGluZGVkU2VjcmV0
KQogICAgIGF1dG8gc291cmNlVW5saW5rYWJsZVRva2VuID0gcGNtLnRva2VuU2lnbmF0dXJlSlNP
TigpOwogICAgIEVYUEVDVF9FUShzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmFzT2JqZWN0KCktPnNp
emUoKSwgMHVsKTsKIAotICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyAiQUJDREVGYWJjZGVmMDEyMzQ1Njc4OSJf
cyB9OworICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6
RXBoZW1lcmFsTm9uY2UgeyAiQUJDREVGYWJjZGVmMDEyMzQ1Njc4OSJfcyB9OwogICAgIEVYUEVD
VF9UUlVFKGVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSk7CiAgICAgcGNtLnNldEVwaGVtZXJhbFNv
dXJjZU5vbmNlKFdURk1vdmUoZXBoZW1lcmFsTm9uY2UpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
Q29jb2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQppbmRleCAwN2I1NjJlMWFmNjI5NDY2NDA2OGJjOWZi
M2MwMjY3YWQ1YzU0MGMwLi40YTljNzI5OWVjMzg4YTdhZjA0M2ZiNTYzMzI0ZjI2MzBlNmJiMjA0
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY29jb2EvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb2NvYS5tbQpAQCAtMzgs
NyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogVEVTVChQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudCwgVmFsaWRCbGluZGVkU2VjcmV0KQogewotICAgIGF1dG8gZXBoZW1lcmFsTm9u
Y2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2UgeyAiQUJD
REVGYWJjZGVmMDEyMzQ1Njc4OSJfcyB9OworICAgIGF1dG8gZXBoZW1lcmFsTm9uY2UgPSBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsTm9uY2UgeyAiQUJDREVGYWJjZGVmMDEyMzQ1
Njc4OSJfcyB9OwogICAgIEVYUEVDVF9UUlVFKGVwaGVtZXJhbE5vbmNlLmlzVmFsaWQoKSk7CiAK
ICAgICBXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCBwY20oCkBAIC04Myw3ICs4Myw3
IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFZhbGlkQmxpbmRlZFNlY3JldCkKICAg
ICBFWFBFQ1RfU1RSRVEoc291cmNlVW5saW5rYWJsZVRva2VuLT5nZXRTdHJpbmcoInNvdXJjZV9l
bmdhZ2VtZW50X3R5cGUiX3MpLnV0ZjgoKS5kYXRhKCksICJjbGljayIpOwogICAgIEVYUEVDVF9T
VFJFUShzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmdldFN0cmluZygic291cmNlX25vbmNlIl9zKS51
dGY4KCkuZGF0YSgpLCAiQUJDREVGYWJjZGVmMDEyMzQ1Njc4OSIpOwogICAgIEVYUEVDVF9GQUxT
RShzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmdldFN0cmluZygic291cmNlX3VubGlua2FibGVfdG9r
ZW4iX3MpLmlzRW1wdHkoKSk7Ci0gICAgRVhQRUNUX0VRKHNvdXJjZVVubGlua2FibGVUb2tlbi0+
Z2V0SW50ZWdlcigidmVyc2lvbiJfcyksIDIpOworICAgIEVYUEVDVF9FUShzb3VyY2VVbmxpbmth
YmxlVG9rZW4tPmdldEludGVnZXIoInZlcnNpb24iX3MpLCAzKTsKIAogICAgIC8vIEdlbmVyYXRl
IHRoZSBzaWduYXR1cmUuCiAgICAgYXV0byBibGluZGVkTWVzc2FnZSA9IGJhc2U2NFVSTERlY29k
ZShzb3VyY2VVbmxpbmthYmxlVG9rZW4tPmdldFN0cmluZygic291cmNlX3VubGlua2FibGVfdG9r
ZW4iX3MpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRXZlbnRBdHRyaWJ1dGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRXZlbnRBdHRyaWJ1dGlvbi5tbQppbmRleCBkMDY5NWQ0YTA3MmY0MDZhNmIzZThhNmQz
NzdkODEyMzJhYWU1Y2RjLi40NTFmOTRiZWY0OTQxMzY3MDQxNTdkNjAzNzQ3YWE3ZDJiYWUyYzAy
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0V2ZW50
QXR0cmlidXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9FdmVudEF0dHJpYnV0aW9uLm1tCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBydW5CYXNpY1BD
TVRlc3QoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiwgRnVuY3Rpb248dm9p
ZChXS1dlYlYKICAgICAgICAgICAgICAgICByZXF1ZXN0My5hcHBlbmQoJ1wwJyk7CiAgICAgICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0My5kYXRhKCksICJQT1NUIC8gSFRU
UC8xLjFcclxuIiwgcmVxdWVzdDMuc2l6ZSgpKSk7CiAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYm9keUJlZ2luID0gc3RybnN0cihyZXF1ZXN0My5kYXRhKCksICJcclxuXHJcbiIsIHJlcXVl
c3QzLnNpemUoKSkgKyBzdHJsZW4oIlxyXG5cclxuIik7Ci0gICAgICAgICAgICAgICAgRVhQRUNU
X1NUUkVRKGJvZHlCZWdpbiwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5cGVcIjpcImNsaWNrXCIs
XCJzb3VyY2Vfc2l0ZVwiOlwiMTI3LjAuMC4xXCIsXCJzb3VyY2VfaWRcIjo0MixcImF0dHJpYnV0
ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5jb21cIixcInRyaWdnZXJfZGF0YVwiOjEyLFwidmVyc2lv
blwiOjJ9Iik7CisgICAgICAgICAgICAgICAgRVhQRUNUX1NUUkVRKGJvZHlCZWdpbiwgIntcInNv
dXJjZV9lbmdhZ2VtZW50X3R5cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwiMTI3LjAu
MC4xXCIsXCJzb3VyY2VfaWRcIjo0MixcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5j
b21cIixcInRyaWdnZXJfZGF0YVwiOjEyLFwidmVyc2lvblwiOjN9Iik7CiAgICAgICAgICAgICAg
ICAgZG9uZSA9IHRydWU7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTkyLDcgKzE5Miw0NSBAQCB2b2lkIHJ1bkJhc2ljUENNVGVzdChXS1dlYlZpZXdDb25maWd1cmF0
aW9uICpjb25maWd1cmF0aW9uLCBGdW5jdGlvbjx2b2lkKFdLV2ViVgogfQogCiAjaWYgSEFWRShS
U0FfQlNTQSkKLVRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEZyYXVkUHJldmVudGlvbikK
KworZW51bSBjbGFzcyBUb2tlblNpZ25pbmdQYXJ0eSA6IGJvb2wgeyBTb3VyY2UsIERlc3RpbmF0
aW9uIH07CisKK3N0YXRpYyB2b2lkIHRyaWdnZXJBdHRyaWJ1dGlvbldpdGhTdWJyZXNvdXJjZVJl
ZGlyZWN0KENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgYXR0cmlidXRpb25E
ZXN0aW5hdGlvbk5vbmNlKQoreworICAgIGF1dG8gb3B0aW9uYWxRdWVyeVN0cmluZyA9IGF0dHJp
YnV0aW9uRGVzdGluYXRpb25Ob25jZS5pc0VtcHR5KCkgPyBhdHRyaWJ1dGlvbkRlc3RpbmF0aW9u
Tm9uY2UgOiBtYWtlU3RyaW5nKCI/YXR0cmlidXRpb25EZXN0aW5hdGlvbk5vbmNlPSIsIGF0dHJp
YnV0aW9uRGVzdGluYXRpb25Ob25jZSk7CisgICAgYXV0byBsb2NhdGlvbiA9IG1ha2VTdHJpbmco
Ii8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3RyaWdnZXItYXR0cmlidXRp
b24vMTIiLCBvcHRpb25hbFF1ZXJ5U3RyaW5nKTsKKyAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQ
UmVxdWVzdChbY29ubmVjdGlvbiwgbG9jYXRpb25dIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0MSkg
eworICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QxLmRhdGEoKSwgIkdFVCAvY29u
dmVyc2lvblJlcXVlc3RCZWZvcmVSZWRpcmVjdCBIVFRQLzEuMVxyXG4iLCByZXF1ZXN0MS5zaXpl
KCkpKTsKKyAgICAgICAgYXV0byByZWRpcmVjdCA9IG1ha2VTdHJpbmcoIkhUVFAvMS4xIDMwMiBG
b3VuZFxyXG5Mb2NhdGlvbjogIiwgbG9jYXRpb24sICJcclxuQ29udGVudC1MZW5ndGg6IDBcclxu
XHJcbiIpLnV0ZjgoKS5kYXRhKCk7CisgICAgICAgIGNvbm5lY3Rpb24uc2VuZChyZWRpcmVjdCwg
W2Nvbm5lY3Rpb24sIGxvY2F0aW9uXSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVI
VFRQUmVxdWVzdChbY29ubmVjdGlvbiwgbG9jYXRpb25dIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0
MikgeworICAgICAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWRIdHRwR2V0U3RyaW5nID0gbWFrZVN0
cmluZygiR0VUICIsIGxvY2F0aW9uLCAiIEhUVFAvMS4xXHJcbiIpLnV0ZjgoKS5kYXRhKCk7Cisg
ICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0Mi5kYXRhKCksIGV4cGVj
dGVkSHR0cEdldFN0cmluZywgcmVxdWVzdDIuc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgY29u
c3QgY2hhciogcmVzcG9uc2UgPSAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAwXHJcblxyXG4iOworICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb24uc2VuZChyZXNwb25zZSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fSk7Cit9CisKK3N0YXRpYyB2b2lkIHJ1bkRlc3RpbmF0aW9uV2ViVmlldyhSZXRhaW5QdHI8V0tX
ZWJWaWV3PiB3ZWJWaWV3LCBOU1VSTCAqc2VydmVyVVJMKQoreworICAgIFt3ZWJWaWV3IF9zZXRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uUmVwb3J0VVJMc0ZvclRlc3Rpbmc6c2Vy
dmVyVVJMIGRlc3RpbmF0aW9uVVJMOmV4YW1wbGVVUkwoKSBjb21wbGV0aW9uSGFuZGxlcjpeewor
ICAgICAgICBbd2ViVmlldyBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRPdmVycmlkZVRpbWVy
Rm9yVGVzdGluZzpZRVMgY29tcGxldGlvbkhhbmRsZXI6XnsKKyAgICAgICAgICAgIFt3ZWJWaWV3
IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVG9rZW5QdWJsaWNLZXlVUkxG
b3JUZXN0aW5nOnNlcnZlclVSTCBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAgICAgICAgICAg
IFt3ZWJWaWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVG9rZW5TaWdu
YXR1cmVVUkxGb3JUZXN0aW5nOnNlcnZlclVSTCBjb21wbGV0aW9uSGFuZGxlcjpeeworICAgICAg
ICAgICAgICAgICAgICBbd2ViVmlldyBfc2V0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBcHBCdW5k
bGVJREZvclRlc3Rpbmc6QCJ0ZXN0LmJ1bmRsZS5pZCIgY29tcGxldGlvbkhhbmRsZXI6XnsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIE5TU3RyaW5nICpodG1sID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCI8c2NyaXB0PnNldFRpbWVvdXQoZnVuY3Rpb24oKXsgZmV0Y2goJyVAY29udmVy
c2lvblJlcXVlc3RCZWZvcmVSZWRpcmVjdCcse21vZGU6J25vLWNvcnMnfSk7IH0sIDEwMCk7PC9z
Y3JpcHQ+Iiwgc2VydmVyVVJMXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpleGFtcGxlVVJMKCldOworICAgICAgICAgICAgICAg
ICAgICB9XTsKKyAgICAgICAgICAgICAgICB9XTsKKyAgICAgICAgICAgIH1dOworICAgICAgICB9
XTsKKyAgICB9XTsKK30KKworc3RhdGljIHZvaWQgc2lnblVubGlua2FibGVUb2tlbkFuZFNlbmRT
ZWNyZXRUb2tlbihUb2tlblNpZ25pbmdQYXJ0eSBzaWduaW5nUGFydHkpCiB7CiAgICAgW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfc2V0TmV0d29ya1Byb2Nlc3NTdXNwZW5zaW9uQWxsb3dlZEZvclRlc3Rp
bmc6Tk9dOwogICAgIGJvb2wgZG9uZSA9IGZhbHNlOwpAQCAtMjIyLDEyICsyNjAsMTUgQEAgVEVT
VChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgRnJhdWRQcmV2ZW50aW9uKQogICAgIGF1dG8gd3Jh
cHBlZEtleUJ5dGVzID0gd3JhcFB1YmxpY0tleVdpdGhSU0FQU1NPSUQoV1RGTW92ZShyYXdLZXlC
eXRlcykpOwogCiAgICAgYXV0byBrZXlEYXRhID0gYmFzZTY0VVJMRW5jb2RlVG9TdHJpbmcod3Jh
cHBlZEtleUJ5dGVzLmRhdGEoKSwgd3JhcHBlZEtleUJ5dGVzLnNpemUoKSk7Ci0KICAgICAvLyBU
aGUgc2VydmVyLgotICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFsmZG9uZSwgY29ubmVjdGlvbkNvdW50
ID0gMCwgJnJzYVByaXZhdGVLZXksICZtb2R1bHVzTkJ5dGVzLCAmcm5nLCAma2V5RGF0YSwgJnNl
Y0tleV0gKENvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgSFRUUFNlcnZlciBz
ZXJ2ZXIoW3NpZ25pbmdQYXJ0eSwgJmRvbmUsIGNvbm5lY3Rpb25Db3VudCA9IHNpZ25pbmdQYXJ0
eSA9PSBUb2tlblNpZ25pbmdQYXJ0eTo6U291cmNlID8gMSA6IDAsICZyc2FQcml2YXRlS2V5LCAm
bW9kdWx1c05CeXRlcywgJnJuZywgJmtleURhdGEsICZzZWNLZXldIChDb25uZWN0aW9uIGNvbm5l
Y3Rpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CiAg
ICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0
KFtjb25uZWN0aW9uLCAmcnNhUHJpdmF0ZUtleSwgJm1vZHVsdXNOQnl0ZXMsICZybmcsICZrZXlE
YXRhLCAmZG9uZSwgJnNlY0tleV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QxKSB7CisgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShzaWduaW5nUGFydHkgPT0gVG9rZW5TaWduaW5nUGFydHk6OkRlc3Rp
bmF0aW9uKTsKKyAgICAgICAgICAgIHRyaWdnZXJBdHRyaWJ1dGlvbldpdGhTdWJyZXNvdXJjZVJl
ZGlyZWN0KGNvbm5lY3Rpb24sICJBQkNERUZhYmNkZWYwMTIzNDU2Nzg5Iik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZl
SFRUUFJlcXVlc3QoW3NpZ25pbmdQYXJ0eSwgY29ubmVjdGlvbiwgJnJzYVByaXZhdGVLZXksICZt
b2R1bHVzTkJ5dGVzLCAmcm5nLCAma2V5RGF0YSwgJmRvbmUsICZzZWNLZXldIChWZWN0b3I8Y2hh
cj4mJiByZXF1ZXN0MSkgewogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVx
dWVzdDEuZGF0YSgpLCAiR0VUIC8gSFRUUC8xLjFcclxuIiwgcmVxdWVzdDEuc2l6ZSgpKSk7CiAK
ICAgICAgICAgICAgICAgICAvLyBFeGFtcGxlIHJlc3BvbnNlOiB7ICJ0b2tlbl9wdWJsaWNfa2V5
IjogIkFCQ0QiIH0uICJBQkNEIiBzaG91bGQgYmUgQmFzZTY0VVJMIGVuY29kZWQuCkBAIC0yMzUs
MTIgKzI3NiwxMiBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBGcmF1ZFByZXZlbnRp
b24pCiAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25c
clxuIgogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6ICIsIDI0ICsga2V5RGF0
YS5sZW5ndGgoKSwgIlxyXG5cclxuIgogICAgICAgICAgICAgICAgICAgICAie1widG9rZW5fcHVi
bGljX2tleVwiOiBcIiIsIGtleURhdGEsICJcIn0iKTsKLSAgICAgICAgICAgICAgICBjb25uZWN0
aW9uLnNlbmQoV1RGTW92ZShyZXNwb25zZSksIFtjb25uZWN0aW9uLCAmcnNhUHJpdmF0ZUtleSwg
Jm1vZHVsdXNOQnl0ZXMsICZybmcsICZrZXlEYXRhLCAmZG9uZSwgJnNlY0tleV0gewotICAgICAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbiwg
JnJzYVByaXZhdGVLZXksICZtb2R1bHVzTkJ5dGVzLCAmcm5nLCAma2V5RGF0YSwgJmRvbmUsICZz
ZWNLZXldIChWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0MikgeworICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb24uc2VuZChXVEZNb3ZlKHJlc3BvbnNlKSwgW3NpZ25pbmdQYXJ0eSwgY29ubmVjdGlvbiwg
JnJzYVByaXZhdGVLZXksICZtb2R1bHVzTkJ5dGVzLCAmcm5nLCAma2V5RGF0YSwgJmRvbmUsICZz
ZWNLZXldIHsKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVl
c3QoW3NpZ25pbmdQYXJ0eSwgY29ubmVjdGlvbiwgJnJzYVByaXZhdGVLZXksICZtb2R1bHVzTkJ5
dGVzLCAmcm5nLCAma2V5RGF0YSwgJmRvbmUsICZzZWNLZXldIChWZWN0b3I8Y2hhcj4mJiByZXF1
ZXN0MikgewogICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1
ZXN0Mi5kYXRhKCksICJQT1NUIC8gSFRUUC8xLjFcclxuIiwgcmVxdWVzdDIuc2l6ZSgpKSk7CiAK
ICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVxdWVzdDJTdHJpbmcgPSBTdHJpbmcocmVx
dWVzdDIuZGF0YSgpLCByZXF1ZXN0Mi5zaXplKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YXV0byBrZXkgPSBTdHJpbmcoInNvdXJjZV91bmxpbmthYmxlX3Rva2VuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhdXRvIGtleSA9IHNpZ25pbmdQYXJ0eSA9PSBUb2tlblNpZ25pbmdQYXJ0
eTo6U291cmNlID8gU3RyaW5nKCJzb3VyY2VfdW5saW5rYWJsZV90b2tlbiIpIDogU3RyaW5nKCJk
ZXN0aW5hdGlvbl91bmxpbmthYmxlX3Rva2VuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBh
dXRvIHN0YXJ0ID0gcmVxdWVzdDJTdHJpbmcuZmluZChrZXkpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhcnQgKz0ga2V5Lmxlbmd0aCgpICsgMzsKICAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gZW5kID0gcmVxdWVzdDJTdHJpbmcuZmluZCgnIicsIHN0YXJ0KTsKQEAgLTI1OCw4ICsy
OTksOCBAQCBURVNUKFByaXZhdGVDbGlja01lYXN1cmVtZW50LCBGcmF1ZFByZXZlbnRpb24pCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNv
blxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAiLCAy
NCArIHVubGlua2FibGVUb2tlbi5sZW5ndGgoKSwgIlxyXG5cclxuIgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ7XCJ1bmxpbmthYmxlX3Rva2VuXCI6IFwiIiwgdW5saW5rYWJsZVRva2Vu
LCAiXCJ9Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92
ZShyZXNwb25zZSksIFtjb25uZWN0aW9uLCAma2V5RGF0YSwgJmRvbmUsIHVubGlua2FibGVUb2tl
biwgdG9rZW4sICZzZWNLZXldIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0
aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbiwgJmtleURhdGEsICZkb25lLCB1bmxp
bmthYmxlVG9rZW4sIHRva2VuLCAmc2VjS2V5XSAoVmVjdG9yPGNoYXI+JiYgcmVxdWVzdDMpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKHJlc3BvbnNl
KSwgW3NpZ25pbmdQYXJ0eSwgY29ubmVjdGlvbiwgJmtleURhdGEsICZkb25lLCB1bmxpbmthYmxl
VG9rZW4sIHRva2VuLCAmc2VjS2V5XSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
bmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW3NpZ25pbmdQYXJ0eSwgY29ubmVjdGlvbiwgJmtl
eURhdGEsICZkb25lLCB1bmxpbmthYmxlVG9rZW4sIHRva2VuLCAmc2VjS2V5XSAoVmVjdG9yPGNo
YXI+JiYgcmVxdWVzdDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhQRUNU
X1RSVUUoc3RybnN0cihyZXF1ZXN0My5kYXRhKCksICJHRVQgLyBIVFRQLzEuMVxyXG4iLCByZXF1
ZXN0My5zaXplKCkpKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFeGFt
cGxlIHJlc3BvbnNlOiB7ICJ0b2tlbl9wdWJsaWNfa2V5IjogIkFCQ0QiIH0uICJBQkNEIiBzaG91
bGQgYmUgQmFzZTY0VVJMIGVuY29kZWQuCkBAIC0yNjcsMTAgKzMwOCwxMCBAQCBURVNUKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCBGcmF1ZFByZXZlbnRpb24pCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXHJcbiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogIiwgMjQg
KyBrZXlEYXRhLmxlbmd0aCgpLCAiXHJcblxyXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAie1widG9rZW5fcHVibGljX2tleVwiOiBcIiIsIGtleURhdGEsICJcIn0iKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKFdURk1vdmUo
cmVzcG9uc2UpLCBbY29ubmVjdGlvbiwgJmRvbmUsIHVubGlua2FibGVUb2tlbiwgdG9rZW4sICZz
ZWNLZXldIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uLCAmZG9uZSwgdW5saW5rYWJsZVRva2VuLCB0
b2tlbiwgJnNlY0tleV0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3Q0KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKHJlc3BvbnNlKSwgW3Np
Z25pbmdQYXJ0eSwgY29ubmVjdGlvbiwgJmRvbmUsIHVubGlua2FibGVUb2tlbiwgdG9rZW4sICZz
ZWNLZXldIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZUhUVFBSZXF1ZXN0KFtzaWduaW5nUGFydHksIGNvbm5lY3Rpb24sICZkb25lLCB1bmxp
bmthYmxlVG9rZW4sIHRva2VuLCAmc2VjS2V5XSAoVmVjdG9yPGNoYXI+JiYgcmVxdWVzdDQpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJu
c3RyKHJlcXVlc3Q0LmRhdGEoKSwgIlBPU1QgLyBIVFRQLzEuMVxyXG4iLCByZXF1ZXN0NC5zaXpl
KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJV
RShzdHJuc3RyKHJlcXVlc3Q0LmRhdGEoKSwgIntcInNvdXJjZV9lbmdhZ2VtZW50X3R5cGVcIjpc
ImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwiMTI3LjAuMC4xXCIsXCJzb3VyY2VfaWRcIjo0Mixc
ImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5jb21cIixcInRyaWdnZXJfZGF0YVwiOjEy
LFwidmVyc2lvblwiOjIsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3Q0LmRhdGEoKSwgIntcInNvdXJjZV9lbmdhZ2Vt
ZW50X3R5cGVcIjpcImNsaWNrXCIsXCJzb3VyY2Vfc2l0ZVwiOlwiMTI3LjAuMC4xXCIsXCJzb3Vy
Y2VfaWRcIjo0MixcImF0dHJpYnV0ZWRfb25fc2l0ZVwiOlwiZXhhbXBsZS5jb21cIixcInRyaWdn
ZXJfZGF0YVwiOjEyLFwidmVyc2lvblwiOjMsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdDQuc2l6ZSgpKSk7CiAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RybnN0cihyZXF1ZXN0NC5kYXRh
KCksIHRva2VuLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3Q0LnNpemUoKSkpOwpAQCAtMjc4LDcgKzMx
OSw3IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEZyYXVkUHJldmVudGlvbikKIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcmVxdWVzdDRTdHJp
bmcgPSBTdHJpbmcocmVxdWVzdDQuZGF0YSgpLCByZXF1ZXN0NC5zaXplKCkpOwogCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBrZXkgPSBTdHJpbmcoInNvdXJj
ZV9zZWNyZXRfdG9rZW4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdXRvIGtleSA9IHNpZ25pbmdQYXJ0eSA9PSBUb2tlblNpZ25pbmdQYXJ0eTo6U291cmNlID8g
U3RyaW5nKCJzb3VyY2Vfc2VjcmV0X3Rva2VuIikgOiBTdHJpbmcoImRlc3RpbmF0aW9uX3NlY3Jl
dF90b2tlbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8g
c3RhcnQgPSByZXF1ZXN0NFN0cmluZy5maW5kKGtleSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhcnQgKz0ga2V5Lmxlbmd0aCgpICsgMzsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIGVuZCA9IHJlcXVlc3Q0U3RyaW5nLmZp
bmQoJyInLCBzdGFydCk7CkBAIC0yODYsNyArMzI3LDcgQEAgVEVTVChQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudCwgRnJhdWRQcmV2ZW50aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gdG9rZW5WZWN0b3IgPSBiYXNlNjRVUkxEZWNvZGUodG9rZW4pOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gdG9rZW5EYXRhID0gYWRv
cHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczp0b2tlblZlY3Rvci0+ZGF0YSgpIGxl
bmd0aDp0b2tlblZlY3Rvci0+c2l6ZSgpXSk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrZXkgPSBTdHJpbmcoInNvdXJjZV9zZWNyZXRfdG9rZW5fc2lnbmF0dXJl
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gc2lnbmlu
Z1BhcnR5ID09IFRva2VuU2lnbmluZ1BhcnR5OjpTb3VyY2UgPyBTdHJpbmcoInNvdXJjZV9zZWNy
ZXRfdG9rZW5fc2lnbmF0dXJlIikgOiBTdHJpbmcoImRlc3RpbmF0aW9uX3NlY3JldF90b2tlbl9z
aWduYXR1cmUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFy
dCA9IHJlcXVlc3Q0U3RyaW5nLmZpbmQoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGFydCArPSBrZXkubGVuZ3RoKCkgKyAzOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IHJlcXVlc3Q0U3RyaW5nLmZpbmQoJyInLCBz
dGFydCk7CkBAIC0zMDUsMjEgKzM0Niw5IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQs
IEZyYXVkUHJldmVudGlvbikKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGNvbm5lY3Rp
b24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXSAoVmVjdG9yPGNoYXI+JiYgcmVxdWVz
dDEpIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QxLmRhdGEo
KSwgIkdFVCAvY29udmVyc2lvblJlcXVlc3RCZWZvcmVSZWRpcmVjdCBIVFRQLzEuMVxyXG4iLCBy
ZXF1ZXN0MS5zaXplKCkpKTsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWRpcmVjdCA9
ICJIVFRQLzEuMSAzMDIgRm91bmRcclxuIgotICAgICAgICAgICAgICAgICAgICAiTG9jYXRpb246
IC8ud2VsbC1rbm93bi9wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50L3RyaWdnZXItYXR0cmlidXRp
b24vMTJcclxuIgotICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuXHJc
biI7Ci0gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKHJlZGlyZWN0LCBbY29ubmVjdGlv
bl0gewotICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChb
Y29ubmVjdGlvbl0gKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QyKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QyLmRhdGEoKSwgIkdFVCAvLndlbGwt
a25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9uLzEyIEhU
VFAvMS4xXHJcbiIsIHJlcXVlc3QyLnNpemUoKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciogcmVzcG9uc2UgPSAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDBcclxuXHJcbiI7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQocmVzcG9uc2UpOwotICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOworICAgICAgICBj
YXNlIDM6CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShzaWduaW5nUGFydHkgPT0gVG9rZW5TaWdu
aW5nUGFydHk6OlNvdXJjZSk7CisgICAgICAgICAgICB0cmlnZ2VyQXR0cmlidXRpb25XaXRoU3Vi
cmVzb3VyY2VSZWRpcmVjdChjb25uZWN0aW9uLCBlbXB0eVN0cmluZygpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsK
QEAgLTMyNywyNCArMzU2LDI0IEBAIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEZyYXVk
UHJldmVudGlvbikKIAogICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdXaXRob3V0VXNpbmdEYWVt
b24oKTsKICAgICB3ZWJWaWV3LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlQWxs
b3dpbmdBbGxUTFMoKTsKLSAgICBbd2ViVmlldyBfYWRkRXZlbnRBdHRyaWJ1dGlvbldpdGhTb3Vy
Y2VJRDo0MiBkZXN0aW5hdGlvblVSTDpleGFtcGxlVVJMKCkgc291cmNlRGVzY3JpcHRpb246QCJ0
ZXN0IHNvdXJjZSBkZXNjcmlwdGlvbiIgcHVyY2hhc2VyOkAidGVzdCBwdXJjaGFzZXIiIHJlcG9y
dEVuZHBvaW50OnNlcnZlclVSTCBvcHRpb25hbE5vbmNlOkAiQUJDREVGYWJjZGVmMDEyMzQ1Njc4
OSIgYXBwbGljYXRpb25CdW5kbGVJRDpAInRlc3QuYnVuZGxlLmlkIiBlcGhlbWVyYWw6Tk9dOwor
ICAgIGF1dG8gY2xpY2tOb25jZSA9IHNpZ25pbmdQYXJ0eSA9PSBUb2tlblNpZ25pbmdQYXJ0eTo6
U291cmNlID8gQCJBQkNERUZhYmNkZWYwMTIzNDU2Nzg5IiA6IG5pbDsKKyAgICBbd2ViVmlldyBf
YWRkRXZlbnRBdHRyaWJ1dGlvbldpdGhTb3VyY2VJRDo0MiBkZXN0aW5hdGlvblVSTDpleGFtcGxl
VVJMKCkgc291cmNlRGVzY3JpcHRpb246QCJ0ZXN0IHNvdXJjZSBkZXNjcmlwdGlvbiIgcHVyY2hh
c2VyOkAidGVzdCBwdXJjaGFzZXIiIHJlcG9ydEVuZHBvaW50OnNlcnZlclVSTCBvcHRpb25hbE5v
bmNlOmNsaWNrTm9uY2UgYXBwbGljYXRpb25CdW5kbGVJRDpAInRlc3QuYnVuZGxlLmlkIiBlcGhl
bWVyYWw6Tk9dOwogICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3Jl
IF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOwogICAgIFtbd2ViVmlldyBj
b25maWd1cmF0aW9uXS53ZWJzaXRlRGF0YVN0b3JlIF90cnVzdFNlcnZlckZvckxvY2FsUENNVGVz
dGluZzpzZWNUcnVzdEZyb21DZXJ0aWZpY2F0ZUNoYWluKEBbKGlkKXRlc3RDZXJ0aWZpY2F0ZSgp
LmdldCgpXSkuZ2V0KCldOwogCi0gICAgW3dlYlZpZXcgX3NldFByaXZhdGVDbGlja01lYXN1cmVt
ZW50QXR0cmlidXRpb25SZXBvcnRVUkxzRm9yVGVzdGluZzpzZXJ2ZXJVUkwgZGVzdGluYXRpb25V
Ukw6ZXhhbXBsZVVSTCgpIGNvbXBsZXRpb25IYW5kbGVyOl57Ci0gICAgICAgIFt3ZWJWaWV3IF9z
ZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nOllFUyBjb21w
bGV0aW9uSGFuZGxlcjpeewotICAgICAgICAgICAgW3dlYlZpZXcgX3NldFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXR0cmlidXRpb25Ub2tlblB1YmxpY0tleVVSTEZvclRlc3Rpbmc6c2VydmVyVVJM
IGNvbXBsZXRpb25IYW5kbGVyOl57Ci0gICAgICAgICAgICAgICAgW3dlYlZpZXcgX3NldFByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25Ub2tlblNpZ25hdHVyZVVSTEZvclRlc3Rpbmc6
c2VydmVyVVJMIGNvbXBsZXRpb25IYW5kbGVyOl57Ci0gICAgICAgICAgICAgICAgICAgIFt3ZWJW
aWV3IF9zZXRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFwcEJ1bmRsZUlERm9yVGVzdGluZzpAInRl
c3QuYnVuZGxlLmlkIiBjb21wbGV0aW9uSGFuZGxlcjpeewotICAgICAgICAgICAgICAgICAgICAg
ICAgTlNTdHJpbmcgKmh0bWwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+
c2V0VGltZW91dChmdW5jdGlvbigpeyBmZXRjaCgnJUBjb252ZXJzaW9uUmVxdWVzdEJlZm9yZVJl
ZGlyZWN0Jyx7bW9kZTonbm8tY29ycyd9KTsgfSwgMTAwKTs8L3NjcmlwdD4iLCBzZXJ2ZXJVUkxd
OwotICAgICAgICAgICAgICAgICAgICAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbCBi
YXNlVVJMOmV4YW1wbGVVUkwoKV07Ci0gICAgICAgICAgICAgICAgICAgIH1dOwotICAgICAgICAg
ICAgICAgIH1dOwotICAgICAgICAgICAgfV07Ci0gICAgICAgIH1dOwotICAgIH1dOworICAgIHJ1
bkRlc3RpbmF0aW9uV2ViVmlldyh3ZWJWaWV3LCBzZXJ2ZXJVUkwpOwogICAgIFV0aWw6OnJ1bigm
ZG9uZSk7CiB9CisKK1RFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIFNvdXJjZUNsaWNrRnJh
dWRQcmV2ZW50aW9uKQoreworICAgIHNpZ25VbmxpbmthYmxlVG9rZW5BbmRTZW5kU2VjcmV0VG9r
ZW4oVG9rZW5TaWduaW5nUGFydHk6OlNvdXJjZSk7Cit9CisKK1RFU1QoUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIERlc3RpbmF0aW9uQ2xpY2tGcmF1ZFByZXZlbnRpb24pCit7CisgICAgc2lnblVu
bGlua2FibGVUb2tlbkFuZFNlbmRTZWNyZXRUb2tlbihUb2tlblNpZ25pbmdQYXJ0eTo6RGVzdGlu
YXRpb24pOworfQogI2VuZGlmCiAKIFRFU1QoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIEJhc2lj
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDFjMDI4ODJhNTQ0OTk5OGZmMDc1MmRjMTNhMWVlNTQ4ODczYTk0ZmUuLmY4MjNi
NzJmYjFmODZmMmY0ZmI2MGQ0Y2I4NzJlNjBiNjJkOWI0MDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAyMS0xMi0wMyAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBQQ006IFVubGlua2FibGUgdG9rZW5zIGZvciB0cmlnZ2VyaW5nIGV2ZW50IHRvIHByZXZl
bnQgZnJhdWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMzY3MworICAgICAgICA8cmRhcjovLzc5NDI2MzQ3PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIGNoYW5nZXMgYXJlIGEgcmVwb3J0IHZl
cnNpb24gYnVtcCAyLT4zLgorCisgICAgICAgICogaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50
L2V4cGlyZWQtYXR0cmlidXRpb24tcmVwb3J0LWdldHMtc2VudC1vbi1zZXNzaW9uLXN0YXJ0LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50
L211bHRpcGxlLWFwcC1idW5kbGUtaWRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3NlbmQtYXR0cmlidXRpb24tY29udmVyc2lvbi1y
ZXF1ZXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3ByaXZhdGVDbGlja01l
YXN1cmVtZW50L3N0b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9u
Y2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvdHJpZ2dlcmluZy1ldmVudC13aXRoLWF0dHJpYnV0aW9uLXNvdXJjZS10aHJvdWdoLWZl
dGNoLWtlZXBhbGl2ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vaW9zL2h0dHAv
dGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJv
dWdoLWZldGNoLWtlZXBhbGl2ZS1leHBlY3RlZC50eHQ6CisKIDIwMjEtMTItMDIgIE1lZ2FuIEdh
cmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZS1hZGQgc3VwcG9y
dCBvZiBpbWFnZSBjb250cm9sIG1lbnVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91
Z2gtZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWZl
dGNoLWtlZXBhbGl2ZS1leHBlY3RlZC50eHQKaW5kZXggMmQxYTE2MDViYTRhYzliNjU1ZjEzYTM2
NjhjNDY3ODFjMzEzZDEwNC4uN2E5ODhkNGI4MzE1ZjIyMDZhM2RjNGMzODdiMGY2ZWQxOGI5Njlh
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L2F0dHJpYnV0aW9uLWNvbnZlcnNpb24tdGhyb3VnaC1mZXRjaC1rZWVwYWxpdmUtZXhwZWN0
ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBbUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudF0gQ29udmVyc2lvbiB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCBw
YXRoIGNvbnRhaW5lZCB1bnJlY29nbml6ZWQgcGFydHMuCitDT05TT0xFIE1FU1NBR0U6IFtQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50XSBUcmlnZ2VyaW5nIGV2ZW50IHdhcyBub3QgYWNjZXB0ZWQg
YmVjYXVzZSB0aGUgVVJMIHBhdGggY29udGFpbmVkIHVucmVjb2duaXplZCBwYXJ0cy4KIENPTlNP
TEUgTUVTU0FHRTogT3JpZ2luIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMCBpcyBub3QgYWxsb3dlZCBi
eSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4uIFN0YXR1cyBjb2RlOiA0MDQKIENPTlNPTEUg
TUVTU0FHRTogRmV0Y2ggQVBJIGNhbm5vdCBsb2FkIGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvLndl
bGwta25vd24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9uL3do
YXRldmVyIGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3MuCiBUZXN0cyB0cmlnZ2VyaW5nIG9m
IHByaXZhdGUgY2xpY2sgbWVhc3VyZW1lbnQgYXR0cmlidXRpb25zIHdpdGggZmV0Y2ggb24gcGFn
ZWhpZGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2V4cGlyZWQtYXR0cmlidXRpb24tcmVwb3J0LWdldHMtc2VudC1vbi1zZXNzaW9u
LXN0YXJ0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvZXhwaXJlZC1hdHRyaWJ1dGlvbi1yZXBvcnQtZ2V0cy1zZW50LW9uLXNlc3Np
b24tc3RhcnQtZXhwZWN0ZWQudHh0CmluZGV4IGMzZDkyOWFhYzU2NjFjNjkxZDRjMzVjZDk0YmFi
ZTc3YjdiYWU5ZDQuLjAwY2ZmZDk5NGE2MjA1ZTIzYWIwYzQ2YzU0ZTFhNjA0ODc0ZjU3ZjYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
ZXhwaXJlZC1hdHRyaWJ1dGlvbi1yZXBvcnQtZ2V0cy1zZW50LW9uLXNlc3Npb24tc3RhcnQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQvZXhwaXJlZC1hdHRyaWJ1dGlvbi1yZXBvcnQtZ2V0cy1zZW50LW9uLXNlc3Npb24tc3Rh
cnQtZXhwZWN0ZWQudHh0CkBAIC0xMSw3ICsxMSw3IEBAIENvbnRlbnQgdHlwZTogYXBwbGljYXRp
b24vanNvbgogUkVRVUVTVF9VUkk6IC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMv
Y29udmVyc2lvblJlcG9ydC5weQogTm8gY29va2llcyBpbiBhdHRyaWJ1dGlvbiByZXF1ZXN0Lgog
UmVxdWVzdCBib2R5OgoteyJzb3VyY2VfZW5nYWdlbWVudF90eXBlIjoiY2xpY2siLCJzb3VyY2Vf
c2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6MywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9j
YWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwidmVyc2lvbiI6Mn0KK3sic291cmNlX2VuZ2FnZW1l
bnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIxMjcuMC4wLjEiLCJzb3VyY2VfaWQiOjMs
ImF0dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZlcnNp
b24iOjN9CiAKIAogTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQv
bXVsdGlwbGUtYXBwLWJ1bmRsZS1pZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9tdWx0aXBsZS1hcHAtYnVuZGxlLWlkcy1leHBl
Y3RlZC50eHQKaW5kZXggZmEzYTVmNDkwMjA4NGY5NDU2M2IwMzNmMjY5NzQyODcwYTY5MjQyNy4u
ZTViN2YxNzhlYTRlNjM4Y2FjNjQwMGVhYzdjM2UxNDZjNmI2MGJlYiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9tdWx0aXBsZS1hcHAt
YnVuZGxlLWlkcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9tdWx0aXBsZS1hcHAtYnVuZGxlLWlkcy1leHBlY3RlZC50eHQK
QEAgLTEyLDcgKzEyLDcgQEAgQ29udGVudCB0eXBlOiBhcHBsaWNhdGlvbi9qc29uCiBSRVFVRVNU
X1VSSTogL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9jb252ZXJzaW9uUmVwb3J0
LnB5P3JlY2lwaWVudD1DbGlja1NvdXJjZQogTm8gY29va2llcyBpbiBhdHRyaWJ1dGlvbiByZXF1
ZXN0LgogUmVxdWVzdCBib2R5OgoteyJzb3VyY2VfZW5nYWdlbWVudF90eXBlIjoiY2xpY2siLCJz
b3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6MzMsImF0dHJpYnV0ZWRfb25fc2l0
ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZlcnNpb24iOjJ9Cit7InNvdXJjZV9l
bmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9zaXRlIjoiMTI3LjAuMC4xIiwic291cmNl
X2lkIjozMywiYXR0cmlidXRlZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRhIjox
MiwidmVyc2lvbiI6M30KIAogCiAtLS0tLS0tLQpAQCAtMjQsNyArMjQsNyBAQCBDb250ZW50IHR5
cGU6IGFwcGxpY2F0aW9uL2pzb24KIFJFUVVFU1RfVVJJOiAvcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvcmVzb3VyY2VzL2NvbnZlcnNpb25SZXBvcnQucHk/cmVjaXBpZW50PUNsaWNrRGVzdGluYXRp
b24KIE5vIGNvb2tpZXMgaW4gYXR0cmlidXRpb24gcmVxdWVzdC4KIFJlcXVlc3QgYm9keToKLXsi
c291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIxMjcuMC4wLjEi
LCJzb3VyY2VfaWQiOjMzLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2NhbGhvc3QiLCJ0cmlnZ2Vy
X2RhdGEiOjEyLCJ2ZXJzaW9uIjoyfQoreyJzb3VyY2VfZW5nYWdlbWVudF90eXBlIjoiY2xpY2si
LCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6MzMsImF0dHJpYnV0ZWRfb25f
c2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJfZGF0YSI6MTIsInZlcnNpb24iOjN9CiAKIFVuYXR0
cmlidXRlZCBQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50czoKIFdlYkNvcmU6OlByaXZhdGVDbGlj
a01lYXN1cmVtZW50IDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvc2VuZC1hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXJlcXVlc3QtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC1leHBlY3RlZC50eHQKaW5kZXgg
ZTZhZDkxMTczOGZhOGUxOTczMGNhOWI0M2VkYjlmMmYwMDNiZGVhNS4uMTI3MTNiNjY5NmUwMjJl
MWE2MWNmYTZkNWFlNTIyMzkxZTI0NWYzOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24t
cmVxdWVzdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9zZW5kLWF0dHJpYnV0aW9uLWNvbnZlcnNpb24tcmVxdWVzdC1leHBl
Y3RlZC50eHQKQEAgLTE2LDcgKzE2LDcgQEAgQ29udGVudCB0eXBlOiBhcHBsaWNhdGlvbi9qc29u
CiBSRVFVRVNUX1VSSTogL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9jb252ZXJz
aW9uUmVwb3J0LnB5P3JlY2lwaWVudD1DbGlja1NvdXJjZQogTm8gY29va2llcyBpbiBhdHRyaWJ1
dGlvbiByZXF1ZXN0LgogUmVxdWVzdCBib2R5OgoteyJzb3VyY2VfZW5nYWdlbWVudF90eXBlIjoi
Y2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6MywiYXR0cmlidXRl
ZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwidmVyc2lvbiI6Mn0KK3si
c291cmNlX2VuZ2FnZW1lbnRfdHlwZSI6ImNsaWNrIiwic291cmNlX3NpdGUiOiIxMjcuMC4wLjEi
LCJzb3VyY2VfaWQiOjMsImF0dHJpYnV0ZWRfb25fc2l0ZSI6ImxvY2FsaG9zdCIsInRyaWdnZXJf
ZGF0YSI6MTIsInZlcnNpb24iOjN9CiAKIAogLS0tLS0tLS0KQEAgLTI4LDcgKzI4LDcgQEAgQ29u
dGVudCB0eXBlOiBhcHBsaWNhdGlvbi9qc29uCiBSRVFVRVNUX1VSSTogL3ByaXZhdGVDbGlja01l
YXN1cmVtZW50L3Jlc291cmNlcy9jb252ZXJzaW9uUmVwb3J0LnB5P3JlY2lwaWVudD1DbGlja0Rl
c3RpbmF0aW9uCiBObyBjb29raWVzIGluIGF0dHJpYnV0aW9uIHJlcXVlc3QuCiBSZXF1ZXN0IGJv
ZHk6Ci17InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9zaXRlIjoiMTI3
LjAuMC4xIiwic291cmNlX2lkIjozLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2NhbGhvc3QiLCJ0
cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjoyfQoreyJzb3VyY2VfZW5nYWdlbWVudF90eXBlIjoi
Y2xpY2siLCJzb3VyY2Vfc2l0ZSI6IjEyNy4wLjAuMSIsInNvdXJjZV9pZCI6MywiYXR0cmlidXRl
ZF9vbl9zaXRlIjoibG9jYWxob3N0IiwidHJpZ2dlcl9kYXRhIjoxMiwidmVyc2lvbiI6M30KIAog
CiAtLS0tLS0tLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudC9zdG9yZS1wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNl
LW5vbmNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvc3RvcmUtcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC13aXRoLXNvdXJjZS1u
b25jZS1leHBlY3RlZC50eHQKaW5kZXggYWYwMTlkOGEwOTk1Y2IxYTg1NzJlYTQwYTVlMGE4NjZl
Yzg0YTJmMC4uZDE3ZGU0NDg2MTE1NGExYmQzMzM3OWFmNjAzMGI2OWI1NjhmYjk5YiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9zdG9y
ZS1wcml2YXRlLWNsaWNrLW1lYXN1cmVtZW50LXdpdGgtc291cmNlLW5vbmNlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3N0
b3JlLXByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQtd2l0aC1zb3VyY2Utbm9uY2UtZXhwZWN0ZWQu
dHh0CkBAIC0xOCw3ICsxOCw3IEBAIENvbnRlbnQgdHlwZTogYXBwbGljYXRpb24vanNvbgogUkVR
VUVTVF9VUkk6IC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2ZW50
aW9uVGVzdFVSTC5weQogTm8gY29va2llcyBpbiB0b2tlbiBzaWduaW5nIHJlcXVlc3QuCiBSZXF1
ZXN0IGJvZHk6Ci17InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9ub25j
ZSI6IkFCQ0RFRmFiY2RlZjAxMjM0NTY3ODkiLCJzb3VyY2VfdW5saW5rYWJsZV90b2tlbiI6InVu
bGlua2FibGVUb2tlbiIsInZlcnNpb24iOjJ9Cit7InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJj
bGljayIsInNvdXJjZV9ub25jZSI6IkFCQ0RFRmFiY2RlZjAxMjM0NTY3ODkiLCJzb3VyY2VfdW5s
aW5rYWJsZV90b2tlbiI6InVubGlua2FibGVUb2tlbiIsInZlcnNpb24iOjN9CiBSRVFVRVNUX01F
VEhPRDogR0VUCiBIVFRQX0hPU1Q6IDEyNy4wLjAuMTo4MDAwCiBSRVFVRVNUX1VSSTogL3ByaXZh
dGVDbGlja01lYXN1cmVtZW50L3Jlc291cmNlcy9mcmF1ZFByZXZlbnRpb25UZXN0VVJMLnB5CkBA
IC0zMSw3ICszMSw3IEBAIENvbnRlbnQgdHlwZTogYXBwbGljYXRpb24vanNvbgogUkVRVUVTVF9V
Ukk6IC9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9yZXNvdXJjZXMvZnJhdWRQcmV2ZW50aW9uVGVz
dFVSTC5weQogTm8gY29va2llcyBpbiB0b2tlbiBzaWduaW5nIHJlcXVlc3QuCiBSZXF1ZXN0IGJv
ZHk6Ci17InNvdXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9zaXRlIjoiMTI3
LjAuMC4xIiwic291cmNlX2lkIjozLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2NhbGhvc3QiLCJ0
cmlnZ2VyX2RhdGEiOjEyLCJ2ZXJzaW9uIjoyLCJzb3VyY2Vfc2VjcmV0X3Rva2VuIjoic2VjcmV0
VG9rZW4iLCJzb3VyY2Vfc2VjcmV0X3Rva2VuX3NpZ25hdHVyZSI6InNpZ25hdHVyZSJ9Cit7InNv
dXJjZV9lbmdhZ2VtZW50X3R5cGUiOiJjbGljayIsInNvdXJjZV9zaXRlIjoiMTI3LjAuMC4xIiwi
c291cmNlX2lkIjozLCJhdHRyaWJ1dGVkX29uX3NpdGUiOiJsb2NhbGhvc3QiLCJ0cmlnZ2VyX2Rh
dGEiOjEyLCJ2ZXJzaW9uIjozLCJzb3VyY2Vfc2VjcmV0X3Rva2VuIjoic2VjcmV0VG9rZW4iLCJz
b3VyY2Vfc2VjcmV0X3Rva2VuX3NpZ25hdHVyZSI6InNpZ25hdHVyZSJ9CiAKIAogTm8gc3RvcmVk
IFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvdHJpZ2dlcmluZy1ldmVudC13aXRo
LWF0dHJpYnV0aW9uLXNvdXJjZS10aHJvdWdoLWZldGNoLWtlZXBhbGl2ZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ByaXZhdGVDbGlja01lYXN1cmVtZW50L3RyaWdnZXJp
bmctZXZlbnQtd2l0aC1hdHRyaWJ1dGlvbi1zb3VyY2UtdGhyb3VnaC1mZXRjaC1rZWVwYWxpdmUt
ZXhwZWN0ZWQudHh0CmluZGV4IDVhOWZkM2FiYzgxYTlmY2U4MTU2NGYyMjdhZTcyOTdjOTIzNDBi
MzEuLjAyODI0Nzk4OWI5OWZjZmIxYTY1ZWRmYWI0ODBhNDdhODIzMDUxNGEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvdHJpZ2dlcmlu
Zy1ldmVudC13aXRoLWF0dHJpYnV0aW9uLXNvdXJjZS10aHJvdWdoLWZldGNoLWtlZXBhbGl2ZS1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tNZWFz
dXJlbWVudC90cmlnZ2VyaW5nLWV2ZW50LXdpdGgtYXR0cmlidXRpb24tc291cmNlLXRocm91Z2gt
ZmV0Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVT
U0FHRTogW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2Nl
cHRlZCBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90IGJlIHBhcnNlZCBvciB3
YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAxNS4KK0NPTlNPTEUgTUVTU0FH
RTogW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIFRyaWdnZXJpbmcgZXZlbnQgd2FzIG5vdCBh
Y2NlcHRlZCBiZWNhdXNlIHRoZSBjb252ZXJzaW9uIGRhdGEgY291bGQgbm90IGJlIHBhcnNlZCBv
ciB3YXMgaGlnaGVyIHRoYW4gdGhlIGFsbG93ZWQgbWF4aW11bSBvZiAxNS4KIENPTlNPTEUgTUVT
U0FHRTogT3JpZ2luIGh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCBpcyBub3QgYWxsb3dlZCBieSBBY2Nl
c3MtQ29udHJvbC1BbGxvdy1PcmlnaW4uIFN0YXR1cyBjb2RlOiA0MDQKIENPTlNPTEUgTUVTU0FH
RTogRmV0Y2ggQVBJIGNhbm5vdCBsb2FkIGh0dHBzOi8vbG9jYWxob3N0Ojg0NDMvLndlbGwta25v
d24vcHJpdmF0ZS1jbGljay1tZWFzdXJlbWVudC90cmlnZ2VyLWF0dHJpYnV0aW9uL0R1bW15P2F0
dHJpYnV0aW9uU291cmNlPWh0dHBzOi8vMTI3LjAuMC4xIGR1ZSB0byBhY2Nlc3MgY29udHJvbCBj
aGVja3MuCiBUZXN0cyB0cmlnZ2VyaW5nIG9mIHByaXZhdGUgY2xpY2sgbWVhc3VyZW1lbnQgYXR0
cmlidXRpb24gd2l0aCBzYW1lLXNpdGUgdHJpZ2dlcmluZyBldmVudCByZXF1ZXN0LgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2h0dHAvdGVzdHMvcHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvYXR0cmlidXRpb24tY29udmVyc2lvbi10aHJvdWdoLWZldGNoLWtlZXBhbGl2ZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvaHR0cC90ZXN0cy9wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtZmV0Y2gta2Vl
cGFsaXZlLWV4cGVjdGVkLnR4dAppbmRleCA3ZjlkOTBlNTc2ODJhYmQ3NjBhNmFjOWI2NjFkYWVm
Mjc2Yjg4MDlhLi40OTg1NjI5MDdmMTY4MThhMzMyNTdiYmQ5ZGI0ZmQxZmU0OGU5ZGIwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvaHR0cC90ZXN0cy9wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtZmV0Y2gta2VlcGFsaXZl
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvaHR0cC90ZXN0cy9w
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9hdHRyaWJ1dGlvbi1jb252ZXJzaW9uLXRocm91Z2gtZmV0
Y2gta2VlcGFsaXZlLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FH
RTogW1ByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnRdIENvbnZlcnNpb24gd2FzIG5vdCBhY2NlcHRl
ZCBiZWNhdXNlIHRoZSBVUkwgcGF0aCBjb250YWluZWQgdW5yZWNvZ25pemVkIHBhcnRzLgorQ09O
U09MRSBNRVNTQUdFOiBbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gVHJpZ2dlcmluZyBldmVu
dCB3YXMgbm90IGFjY2VwdGVkIGJlY2F1c2UgdGhlIFVSTCBwYXRoIGNvbnRhaW5lZCB1bnJlY29n
bml6ZWQgcGFydHMuCiBDT05TT0xFIE1FU1NBR0U6IE9yaWdpbiBodHRwOi8vMTI3LjAuMC4xOjgw
MDAgaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luLiBTdGF0dXMg
Y29kZTogNDA0CiBDT05TT0xFIE1FU1NBR0U6IEZldGNoIEFQSSBjYW5ub3QgbG9hZCBodHRwczov
LzEyNy4wLjAuMTo4NDQzLy53ZWxsLWtub3duL3ByaXZhdGUtY2xpY2stbWVhc3VyZW1lbnQvdHJp
Z2dlci1hdHRyaWJ1dGlvbi93aGF0ZXZlciBkdWUgdG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLgog
VGVzdHMgdHJpZ2dlcmluZyBvZiBwcml2YXRlIGNsaWNrIG1lYXN1cmVtZW50IGF0dHJpYnV0aW9u
cyB3aXRoIGZldGNoIG9uIHBhZ2VoaWRlLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>