<?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>234112</bug_id>
          
          <creation_ts>2021-12-09 17:01:16 -0800</creation_ts>
          <short_desc>[WebAuthn] Provide SPI to export/import local credentials</short_desc>
          <delta_ts>2022-01-31 08:57:00 -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="pascoe@apple.com">pascoe</reporter>
          <assigned_to name="pascoe@apple.com">pascoe</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1822434</commentid>
    <comment_count>0</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-12-09 17:01:16 -0800</bug_when>
    <thetext>Provide SPI to export/import local credentials.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822436</commentid>
    <comment_count>1</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-12-09 17:01:32 -0800</bug_when>
    <thetext>rdar://84822000</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822687</commentid>
    <comment_count>2</comment_count>
      <attachid>446722</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2021-12-10 07:10:28 -0800</bug_when>
    <thetext>Created attachment 446722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832834</commentid>
    <comment_count>3</comment_count>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-01-21 12:00:20 -0800</bug_when>
    <thetext>Reminder to make these SPIs synchronous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833918</commentid>
    <comment_count>4</comment_count>
      <attachid>449981</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-01-25 16:20:13 -0800</bug_when>
    <thetext>Created attachment 449981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833941</commentid>
    <comment_count>5</comment_count>
      <attachid>449981</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-25 17:05:36 -0800</bug_when>
    <thetext>Comment on attachment 449981
Patch

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

&gt; Source/WebCore/Modules/webauthn/WebAuthenticationConstants.h:80
&gt;  const char LocalAuthenticatiorAccessGroup[] = &quot;com.apple.webkit.webauthn&quot;;

Misspelled word &quot;authenticator&quot; here.

&gt; Source/WebCore/Modules/webauthn/WebAuthenticationConstants.h:87
&gt; +const char privateKeyKey[] = &quot;priv&quot;;
&gt; +const char keyTypeKey[] = &quot;key_type&quot;;
&gt; +const char keySizeKey[] = &quot;key_size&quot;;
&gt; +const char relyingPartyKey[] = &quot;rp&quot;;
&gt; +const char applicationTagKey[] = &quot;tag&quot;;

constexpr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1833960</commentid>
    <comment_count>6</comment_count>
      <attachid>449987</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-01-25 17:41:11 -0800</bug_when>
    <thetext>Created attachment 449987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834330</commentid>
    <comment_count>7</comment_count>
      <attachid>449987</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-01-26 15:45:08 -0800</bug_when>
    <thetext>Comment on attachment 449987
Patch

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

r=me

&gt; Source/WebCore/Modules/webauthn/WebAuthenticationConstants.h:80
&gt; +constexpr const char LocalAuthenticatorAccessGroup[] = &quot;com.apple.webkit.webauthn&quot;;

Thank you for fixing that typo!

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:397
&gt; +            *error = [NSError errorWithDomain:WKErrorDomain code:WKErrorMalformedCredential userInfo:nil];

This little check and assignment is repeated so many times it might be nice as a static function:

static void createMalformedCredentialErrorIfNecessary(NSError **error)

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm:488
&gt; +            *error = [NSError errorWithDomain:WKErrorDomain code:WKErrorDuplicateCredential userInfo:nil];

... or, perhaps a helper that takes the WKError type:

static void createNSErrorFromWKErrorIfNecessary(NSError **error, WKErrorCode errorCode)
{
    if (error)
         *error = [NSError errorWithDomain:WKErrorDomain code: errorCode userInfo:nil];
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834371</commentid>
    <comment_count>8</comment_count>
      <attachid>450088</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-01-26 17:26:32 -0800</bug_when>
    <thetext>Created attachment 450088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834373</commentid>
    <comment_count>9</comment_count>
      <attachid>450089</attachid>
    <who name="pascoe@apple.com">pascoe</who>
    <bug_when>2022-01-26 17:32:33 -0800</bug_when>
    <thetext>Created attachment 450089
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835545</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-31 08:56:58 -0800</bug_when>
    <thetext>Committed r288816 (246592@main): &lt;https://commits.webkit.org/246592@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450089.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446722</attachid>
            <date>2021-12-10 07:10:28 -0800</date>
            <delta_ts>2022-01-25 16:20:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234112-20211210071028.patch</filename>
            <type>text/plain</type>
            <size>18234</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2Nzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRjNzY4MjdkNzg1NzAw
NTQ4ZTAwYTI5ZWY4ZTA0YzQ1NGI0NTY2OC4uYjA0OGIxZjdmZTkyZTgzYzA0YmY2NWM3MTE2NDMx
NWQ3ZDRlMjExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTEyLTA5ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFByb3ZpZGUg
U1BJIHRvIGV4cG9ydC9pbXBvcnQgbG9jYWwgY3JlZGVudGlhbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDExMgorICAgICAgICByZGFyOi8vODQ4
MjIwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBhZGRzIFNQSSB0byBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIHRvIHByb3Zp
ZGUgdGhlIGFiaWxpdHkKKyAgICAgICAgdG8gaW1wb3J0IC8gZXhwb3J0IGxvY2FsIGNyZWRlbnRp
YWxzLiBDb25zdGFudHMgYXJlIHVzZWQgZHVyaW5nIHNlcmlhbGl6YXRpb24KKyAgICAgICAgYXMg
a2V5cy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25z
dGFudHMuaDogY29uc3RhbnRzIGZvciBjcmVkZW50aWFsIHNlcmlhbGl6YXRpb24KKwogMjAyMS0x
Mi0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BV
IFByb2Nlc3NdIFtGaWx0ZXJzXSBBZGQgdGhlIGVuY29kaW5nIGFuZCBkZWNvZGluZyBmb3IgTGln
aHRTb3VyY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggOWIzMWU0OTdkNTQ0YWRmOGFkYTY0OTNiMjRhMjk5NTJjMzZh
NWRiMC4uOTRjODEzMzFhYjY3Njk1OTI3ZDFjNmQ0NjRhZTgzZmEyOGI4OGJjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNSBAQAorMjAyMS0xMi0wOSAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBQcm92aWRlIFNQSSB0byBleHBvcnQvaW1wb3J0IGxv
Y2FsIGNyZWRlbnRpYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzQxMTIKKyAgICAgICAgcmRhcjovLzg0ODIyMDAwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJIHRlc3Rz
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBuZXcgU1BJIHRvIF9XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuaCB0byBpbXBvcnQgYW5kIGV4cG9ydCBsb2NhbAorICAgICAgICB3ZWJhdXRobiBj
cmVkZW50aWFscy4gQ0JPUiBpcyB1c2VkIGZvciBzZXJpYWxpemF0aW9uLiBXS0Vycm9ycyBhcmUg
dXNlZCB0byBkaWZmZXJlbnRpYXRlCisgICAgICAgIGJldHdlZW4gbWFsZm9ybWVkIHZzIGR1cGxp
Y2F0ZSBrZXlzIGR1cmluZyBpbXBvcnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLRXJyb3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IubW06Cisg
ICAgICAgIChsb2NhbGl6ZWREZXNjcmlwdGlvbkZvckVycm9yQ29kZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAg
ICAoK1tfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGltcG9ydExvY2FsQXV0aGVudGljYXRvckNy
ZWRlbnRpYWw6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgrW19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgZXhwb3J0TG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbFdpdGhJRDpdKToK
KwogMjAyMS0xMi0wOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkIGFiaWxpdHkgdG8gaW5qZWN0IG1lc3NhZ2VzIGludG8gd2VicHVzaGQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25z
dGFudHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRp
b25Db25zdGFudHMuaAppbmRleCA0NTFmZjMzYjI4ZWQ1MGI1YmFmN2I5YTM5Y2VhODIwNzdlNTMx
MTUxLi5kYWU3ZmViNTNiY2FiMDI4MDAzMThlZjBmZWU0NzNmZjM2Y2FkNTgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3Rh
bnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNh
dGlvbkNvbnN0YW50cy5oCkBAIC03OSw0ICs3OSwxMSBAQCBlbnVtIGNsYXNzIENsaWVudERhdGFU
eXBlIDogYm9vbCB7CiAKIGNvbnN0IGNoYXIgTG9jYWxBdXRoZW50aWNhdGlvckFjY2Vzc0dyb3Vw
W10gPSAiY29tLmFwcGxlLndlYmtpdC53ZWJhdXRobiI7CiAKKy8vIENyZWRlbnRpYWwgc2VyaWFs
aXphdGlvbgorY29uc3QgY2hhciBwcml2YXRlS2V5S2V5W10gPSAicHJpdiI7Citjb25zdCBjaGFy
IGtleVR5cGVLZXlbXSA9ICJrZXlfdHlwZSI7Citjb25zdCBjaGFyIGtleVNpemVLZXlbXSA9ICJr
ZXlfc2l6ZSI7Citjb25zdCBjaGFyIHJlbHlpbmdQYXJ0eUtleVtdID0gInJwIjsKK2NvbnN0IGNo
YXIgYXBwbGljYXRpb25UYWdLZXlbXSA9ICJ0YWciOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IuaAppbmRleCAzZmMw
NmUzNTEyNDAwMzUzYmRkMDZlOWIzN2E3MmY2NjNiMzkzN2Y4Li5hMjRjM2IxOGZmOWNmNjk1M2Zj
ZGU4YzhhMmIyOWNiMzhiNDA5ZGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Vycm9yLmgKQEAgLTYzLDYgKzYzLDggQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgV0tFcnJvckNvZGUpIHsKICAgICBXS0Vycm9ySmF2YVNjcmlwdEludmFsaWRGcmFtZVRhcmdl
dCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpLAogICAgIFdLRXJyb3JO
YXZpZ2F0aW9uQXBwQm91bmREb21haW4gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9z
KDE0LjApKSwKICAgICBXS0Vycm9ySmF2YVNjcmlwdEFwcEJvdW5kRG9tYWluIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSksCisgICAgV0tFcnJvckR1cGxpY2F0ZUNyZWRl
bnRpYWwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KSwKKyAgICBXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEwKSwgaW9zKDguMCkpOwogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IubW0KaW5kZXggZWYwNWUwYWIxNDcyODE3
MWMzOTkwNzBlZDY0MjllMzNhNWE2OGEzNi4uOGZlMjEwYjVhYzZiYzc0ZjllOWYwYjk3ZjQ0Zjg1
MDViZTRlMDA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRXJyb3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJy
b3IubW0KQEAgLTgyLDYgKzgyLDEyIEBAIE5TU3RyaW5nICpsb2NhbGl6ZWREZXNjcmlwdGlvbkZv
ckVycm9yQ29kZShXS0Vycm9yQ29kZSBlcnJvckNvZGUpCiAKICAgICBjYXNlIFdLRXJyb3JKYXZh
U2NyaXB0QXBwQm91bmREb21haW46CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJKYXZh
U2NyaXB0IGV4ZWN1dGlvbiB0YXJnZXRlZCBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1i
b3VuZCBkb21haW4iLCAiV0tFcnJvckphdmFTY3JpcHRBcHBCb3VuZERvbWFpbiBkZXNjcmlwdGlv
biIpOworCisgICAgY2FzZSBXS0Vycm9yRHVwbGljYXRlQ3JlZGVudGlhbDoKKyAgICAgICAgcmV0
dXJuIFdFQl9VSV9TVFJJTkcoIlRoaXMgY3JlZGVudGlhbCBpcyBhbHJlYWR5IHByZXNlbnQiLCAi
V0tFcnJvckR1cGxpY2F0ZUNyZWRlbnRpYWwgZGVzY3JpcHRpb24iKTsKKworICAgIGNhc2UgV0tF
cnJvck1hbGZvcm1lZENyZWRlbnRpYWw6CisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJU
aGlzIGNyZWRlbnRpYWwgaXMgbWFsZm9ybWVkIiwgIldLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFs
IGRlc2NyaXB0aW9uIik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAppbmRl
eCAyYjE0MzcyNTQyNjk2YmNkMGNjZGExNjkyNzY2YWRhYTFhNTJhZGQ2Li5mOGFiZDY2MzBkYjgw
YTA2NjQ3YjI1NTgyMmJkNzBiZDljMDZlNjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgK
QEAgLTExNyw2ICsxMTcsOSBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlv
cygxMy40KSkKICsgKHZvaWQpY2xlYXJBbGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFscyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogKyAodm9pZClzZXRVc2Vy
bmFtZUZvckxvY2FsQ3JlZGVudGlhbFdpdGhJRDooTlNEYXRhICopY3JlZGVudGlhbElEIHVzZXJu
YW1lOiAoTlNTdHJpbmcgKil1c2VybmFtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBp
b3MoMTUuMCkpOwogCisrIChOU0RhdGEgKilleHBvcnRMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50
aWFsV2l0aElEOihOU0RhdGEgKiljcmVkZW50aWFsSUQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKysgKHZvaWQpaW1wb3J0TG9jYWxBdXRoZW50
aWNhdG9yQ3JlZGVudGlhbDooTlNEYXRhICopY3JlZGVudGlhbEJsb2IgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogKyAoQk9PTClpc1VzZXJW
ZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIAogKyAoTlNEYXRhICopZ2V0Q2xpZW50RGF0YUpTT05G
b3JBdXRoZW50aWNhdGlvblR5cGU6KF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSl0eXBlIGNoYWxs
ZW5nZTooTlNEYXRhICopY2hhbGxlbmdlIG9yaWdpbjooTlNTdHJpbmcgKilvcmlnaW4gV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW0KaW5kZXggZTVmOWQ2ZTRmNzExY2ZhZDAxODEzZjU0YTI0ODEyMGU3
Y2NmMzBmNi4uNDk1ZjBlM2QwNmNhMzg4M2RkYWRkYjIwMDUzZDdmOTkxMmZiYWNlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTM4OCw2ICszODgsMTgyIEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNBcnJheT4gZ2V0QWxsTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbHNJbXBsKE5T
U3RyaW5nICphY2NlCiAjZW5kaWYKIH0KIAorKyAodm9pZClpbXBvcnRMb2NhbEF1dGhlbnRpY2F0
b3JDcmVkZW50aWFsOihOU0RhdGEgKiljcmVkZW50aWFsQmxvYiBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoTlNEYXRhICosIE5TRXJyb3IgKikpaGFuZGxlcgoreworI2lmIEVOQUJMRShXRUJf
QVVUSE4pCisgICAgYXV0byBjcmVkZW50aWFsID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZCh2ZWN0
b3JGcm9tTlNEYXRhKGNyZWRlbnRpYWxCbG9iKSk7CisgICAgaWYgKCFjcmVkZW50aWFsIHx8ICFj
cmVkZW50aWFsLT5pc01hcCgpKSB7CisgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJv
cldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFs
IHVzZXJJbmZvOm5pbF0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byYgY3Jl
ZGVudGlhbE1hcCA9IGNyZWRlbnRpYWwtPmdldE1hcCgpOworICAgIGF1dG8gaXQgPSBjcmVkZW50
aWFsTWFwLmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKFdlYkNvcmU6OnByaXZhdGVLZXlLZXkpKTsKKyAg
ICBpZiAoaXQgPT0gY3JlZGVudGlhbE1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc0J5dGVTdHJp
bmcoKSkgeworICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldL
RXJyb3JEb21haW4gY29kZTpXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCB1c2VySW5mbzpuaWxd
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvIHByaXZhdGVLZXkgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOml0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygp
LmRhdGEoKSBsZW5ndGg6aXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCkuc2l6ZSgpXSk7CisKKyAg
ICBpdCA9IGNyZWRlbnRpYWxNYXAuZmluZChjYm9yOjpDQk9SVmFsdWUoV2ViQ29yZTo6a2V5VHlw
ZUtleSkpOworICAgIGlmIChpdCA9PSBjcmVkZW50aWFsTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25k
LmlzSW50ZWdlcigpKSB7CisgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhE
b21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsIHVzZXJJ
bmZvOm5pbF0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8ga2V5VHlwZSA9IGl0
LT5zZWNvbmQuZ2V0SW50ZWdlcigpOworCisgICAgaXQgPSBjcmVkZW50aWFsTWFwLmZpbmQoY2Jv
cjo6Q0JPUlZhbHVlKFdlYkNvcmU6OmtleVNpemVLZXkpKTsKKyAgICBpZiAoaXQgPT0gY3JlZGVu
dGlhbE1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc0ludGVnZXIoKSkgeworICAgICAgICBoYW5k
bGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9yTWFsZm9ybWVkQ3JlZGVudGlhbCB1c2VySW5mbzpuaWxdKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBhdXRvIGtleVNpemUgPSBpdC0+c2Vjb25kLmdldEludGVnZXIoKTsKKworICAg
IGl0ID0gY3JlZGVudGlhbE1hcC5maW5kKGNib3I6OkNCT1JWYWx1ZShXZWJDb3JlOjpyZWx5aW5n
UGFydHlLZXkpKTsKKyAgICBpZiAoaXQgPT0gY3JlZGVudGlhbE1hcC5lbmQoKSB8fCAhaXQtPnNl
Y29uZC5pc1N0cmluZygpKSB7CisgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldp
dGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsIHVz
ZXJJbmZvOm5pbF0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8gcnAgPSBpdC0+
c2Vjb25kLmdldFN0cmluZygpOworCisgICAgaXQgPSBjcmVkZW50aWFsTWFwLmZpbmQoY2Jvcjo6
Q0JPUlZhbHVlKFdlYkNvcmU6OmFwcGxpY2F0aW9uVGFnS2V5KSk7CisgICAgaWYgKGl0ID09IGNy
ZWRlbnRpYWxNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNNYXAoKSkgeworICAgICAgICBoYW5k
bGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vy
cm9yTWFsZm9ybWVkQ3JlZGVudGlhbCB1c2VySW5mbzpuaWxdKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICBhdXRvIGtleVRhZyA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKGNib3I6OkNC
T1JWYWx1ZShpdC0+c2Vjb25kLmdldE1hcCgpKSk7CisKKyAgICBOU0RpY3Rpb25hcnkgKm9wdGlv
bnMgPSBAeworICAgICAgICAvLyBLZXkgdHlwZSB2YWx1ZXMgYXJlIHN0cmluZyB2YWx1ZXMgb2Yg
bnVtYmVycywgc3RvcmVkIGFzIGtDRk51bWJlclNJbnQ2NFR5cGUgaW4gYXR0cmlidXRlcywgYnV0
IG11c3QgYmUgcGFzc2VkIGFzIHN0cmluZyBoZXJlCisgICAgICAgIChpZClrU2VjQXR0cktleVR5
cGU6IChpZClbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVpIiwgKGludClrZXlUeXBlXSwK
KyAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0
ZSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5U2l6ZUluQml0czogQChrZXlTaXplKSwKKyAgICB9
OworICAgIENGRXJyb3JSZWYgZXJyb3JSZWYgPSBudWxscHRyOworICAgIGF1dG8ga2V5ID0gYWRv
cHRDRihTZWNLZXlDcmVhdGVXaXRoRGF0YSgKKyAgICAgICAgYnJpZGdlX2Nhc3QocHJpdmF0ZUtl
eS5nZXQoKSksCisgICAgICAgIGJyaWRnZV9jYXN0KG9wdGlvbnMpLAorICAgICAgICAmZXJyb3JS
ZWYKKyAgICApKTsKKyAgICBpZiAoZXJyb3JSZWYpIHsKKyAgICAgICAgaGFuZGxlcihuaWwsIFtO
U0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvck1hbGZvcm1l
ZENyZWRlbnRpYWwgdXNlckluZm86bmlsXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBhdXRvIHB1YmxpY0tleSA9IGFkb3B0Q0YoU2VjS2V5Q29weVB1YmxpY0tleShrZXkuZ2V0KCkp
KTsKKyAgICBhdXRvIHB1YmxpY0tleURhdGFSZXAgPSBhZG9wdENGKFNlY0tleUNvcHlFeHRlcm5h
bFJlcHJlc2VudGF0aW9uKHB1YmxpY0tleS5nZXQoKSwgJmVycm9yUmVmKSk7CisgICAgaWYgKGVy
cm9yUmVmKSB7CisgICAgICAgIGhhbmRsZXIobmlsLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46
V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsIHVzZXJJbmZvOm5p
bF0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTlNEYXRhICpuc1B1YmxpY0tleURh
dGEgPSAoTlNEYXRhICopcHVibGljS2V5RGF0YVJlcC5nZXQoKTsKKyAgICBhdXRvIGRpZ2VzdCA9
IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6
U0hBXzEpOworICAgIGRpZ2VzdC0+YWRkQnl0ZXMobnNQdWJsaWNLZXlEYXRhLmJ5dGVzLCBuc1B1
YmxpY0tleURhdGEubGVuZ3RoKTsKKyAgICBhdXRvIGNyZWRlbnRpYWxJZCA9IGRpZ2VzdC0+Y29t
cHV0ZUhhc2goKTsKKyAgICBhdXRvIG5zQ3JlZGVudGlhbElkID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlczpjcmVkZW50aWFsSWQuZGF0YSgpIGxlbmd0aDpjcmVkZW50aWFs
SWQuc2l6ZSgpXSk7CisKKyAgICBhdXRvIHF1ZXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rp
b25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgIChpZClrU2VjQ2xh
c3NLZXksIChpZClrU2VjQ2xhc3MsCisgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0
ZSwgKGlkKWtTZWNBdHRyS2V5Q2xhc3MsCisgICAgICAgIChpZClycCwgKGlkKWtTZWNBdHRyTGFi
ZWwsCisgICAgICAgIG5zQ3JlZGVudGlhbElkLmdldCgpLCAoaWQpa1NlY0F0dHJBcHBsaWNhdGlv
bkxhYmVsLAorICAgICAgICBAWUVTLCAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW4s
CisgICAgICAgIG5pbAorICAgIF0pOworICAgIHVwZGF0ZVF1ZXJ5SWZOZWNlc3NhcnkocXVlcnku
Z2V0KCkpOworCisgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZyhicmlk
Z2VfY2FzdChxdWVyeS5nZXQoKSksIG51bGxwdHIpOworICAgIGlmICghc3RhdHVzKSB7CisgICAg
ICAgIC8vIENyZWRlbnRpYWwgd2l0aCBzYW1lIGlkIGFscmVhZHkgZXhpc3RzLCBkdXBsaWNhdGUg
a2V5LgorICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yRHVwbGljYXRlQ3JlZGVudGlhbCB1c2VySW5mbzpuaWxdKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gc2VjQXR0ckFwcGxpY2F0aW9uVGFn
ID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczprZXlUYWctPmRhdGEoKSBs
ZW5ndGg6a2V5VGFnLT5zaXplKCldKTsKKyAgICBOU0RpY3Rpb25hcnkgKmFkZFF1ZXJ5ID0gQHsK
KyAgICAgICAgKGlkKWtTZWNWYWx1ZVJlZjogKGlkKWtleS5nZXQoKSwKKyAgICAgICAgKGlkKWtT
ZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKKyAgICAgICAgKGlk
KWtTZWNBdHRyTGFiZWw6IHJwLAorICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzog
c2VjQXR0ckFwcGxpY2F0aW9uVGFnLmdldCgpLAorICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90
ZWN0aW9uS2V5Y2hhaW46IEBZRVMsCisgICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc2libGU6IChp
ZClrU2VjQXR0ckFjY2Vzc2libGVBZnRlckZpcnN0VW5sb2NrCisgICAgfTsKKyAgICBzdGF0dXMg
PSBTZWNJdGVtQWRkKGJyaWRnZV9jYXN0KGFkZFF1ZXJ5KSwgTlVMTCk7CisgICAgaWYgKHN0YXR1
cykgeworICAgICAgICBoYW5kbGVyKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpuaWxdKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIGhhbmRsZXIobnNDcmVkZW50aWFsSWQuZ2V0KCksIG5pbCk7Cisj
ZW5kaWYKK30KKworKyAoTlNEYXRhICopZXhwb3J0TG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlh
bFdpdGhJRDooTlNEYXRhICopY3JlZGVudGlhbElECit7CisjaWYgRU5BQkxFKFdFQl9BVVRITikK
KyAgICBhdXRvIHF1ZXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgIChpZClrU2VjQ2xhc3NLZXksIChpZClrU2Vj
Q2xhc3MsCisgICAgICAgIGNyZWRlbnRpYWxJRCwgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJl
bCwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLCAoaWQpa1NlY0F0dHJLZXlD
bGFzcywKKyAgICAgICAgQFlFUywgKGlkKWtTZWNSZXR1cm5SZWYsCisgICAgICAgIEBZRVMsIChp
ZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFpbiwKKyAgICAgICAgbmlsCisgICAgXSk7Cisg
ICAgdXBkYXRlUXVlcnlJZk5lY2Vzc2FyeShxdWVyeS5nZXQoKSk7CisgICAgQ0ZUeXBlUmVmIHBy
aXZhdGVLZXlSZWYgPSBudWxscHRyOworICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5
TWF0Y2hpbmcoYnJpZGdlX2Nhc3QocXVlcnkuZ2V0KCkpLCAmcHJpdmF0ZUtleVJlZik7CisgICAg
aWYgKHN0YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKSB7CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAg
YXV0byBwcml2YXRlS2V5ID0gYWRvcHRDRihwcml2YXRlS2V5UmVmKTsKKyAgICBDRkVycm9yUmVm
IGVycm9yUmVmID0gbnVsbHB0cjsKKyAgICBhdXRvIHByaXZhdGVLZXlSZXAgPSBhZG9wdENGKFNl
Y0tleUNvcHlFeHRlcm5hbFJlcHJlc2VudGF0aW9uKChfX2JyaWRnZSBTZWNLZXlSZWYpKChpZClw
cml2YXRlS2V5UmVmKSwgJmVycm9yUmVmKSk7CisgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0
Q0YoZXJyb3JSZWYpOworICAgIGlmIChlcnJvclJlZikgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgICAgICAKKyAgICBb
cXVlcnkgcmVtb3ZlT2JqZWN0Rm9yS2V5OihpZClrU2VjUmV0dXJuUmVmXTsKKyAgICBbcXVlcnkg
c2V0T2JqZWN0OiBAWUVTIGZvcktleTooaWQpa1NlY1JldHVybkF0dHJpYnV0ZXNdOworICAgIENG
VHlwZVJlZiBhdHRyaWJ1dGVzQXJyYXlSZWYgPSBudWxscHRyOworICAgIHN0YXR1cyA9IFNlY0l0
ZW1Db3B5TWF0Y2hpbmcoYnJpZGdlX2Nhc3QocXVlcnkuZ2V0KCkpLCAmYXR0cmlidXRlc0FycmF5
UmVmKTsKKyAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKyAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSAoX19icmlkZ2UgTlNEaWN0aW9u
YXJ5ICopYXR0cmlidXRlc0FycmF5UmVmOworCisgICAgaW50NjRfdCBrZXlUeXBlLCBrZXlTaXpl
OworICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZSgoX19icmlkZ2UgQ0ZOdW1iZXJSZWYpYXR0cmli
dXRlc1ticmlkZ2VfaWRfY2FzdChrU2VjQXR0cktleVR5cGUpXSwga0NGTnVtYmVyU0ludDY0VHlw
ZSwgJmtleVR5cGUpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKCFDRk51bWJlckdldFZhbHVlKChfX2JyaWRn
ZSBDRk51bWJlclJlZilhdHRyaWJ1dGVzW2JyaWRnZV9pZF9jYXN0KGtTZWNBdHRyS2V5U2l6ZUlu
Qml0cyldLCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAma2V5U2l6ZSkpIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAKKyAg
ICBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGNyZWRlbnRpYWxNYXA7CisgICAgY3JlZGVudGlh
bE1hcFtjYm9yOjpDQk9SVmFsdWUoV2ViQ29yZTo6cHJpdmF0ZUtleUtleSldID0gY2Jvcjo6Q0JP
UlZhbHVlKFdlYkNvcmU6OnRvQnVmZmVyU291cmNlKGJyaWRnZV9pZF9jYXN0KHByaXZhdGVLZXlS
ZXAuZ2V0KCkpKSk7CisgICAgY3JlZGVudGlhbE1hcFtjYm9yOjpDQk9SVmFsdWUoV2ViQ29yZTo6
a2V5VHlwZUtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGtleVR5cGUpOworICAgIGNyZWRlbnRpYWxN
YXBbY2Jvcjo6Q0JPUlZhbHVlKFdlYkNvcmU6OmtleVNpemVLZXkpXSA9IGNib3I6OkNCT1JWYWx1
ZShrZXlTaXplKTsKKyAgICBjcmVkZW50aWFsTWFwW2Nib3I6OkNCT1JWYWx1ZShXZWJDb3JlOjpy
ZWx5aW5nUGFydHlLZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShTdHJpbmcoYXR0cmlidXRlc1ticmlk
Z2VfaWRfY2FzdChrU2VjQXR0ckxhYmVsKV0pKTsKKyAgICBhdXRvIGRlY29kZWRSZXNwb25zZSA9
IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQodmVjdG9yRnJvbU5TRGF0YShhdHRyaWJ1dGVzW2JyaWRn
ZV9pZF9jYXN0KGtTZWNBdHRyQXBwbGljYXRpb25UYWcpXSkpOworICAgIGlmICghZGVjb2RlZFJl
c3BvbnNlIHx8ICFkZWNvZGVkUmVzcG9uc2UtPmlzTWFwKCkpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBjcmVkZW50
aWFsTWFwW2Nib3I6OkNCT1JWYWx1ZShXZWJDb3JlOjphcHBsaWNhdGlvblRhZ0tleSldID0gY2Jv
cjo6Q0JPUlZhbHVlKFdURk1vdmUoKmRlY29kZWRSZXNwb25zZSkpOworICAgIGF1dG8gc2VyaWFs
aXplZENyZWRlbnRpYWwgPSBjYm9yOjpDQk9SV3JpdGVyOjp3cml0ZShjYm9yOjpDQk9SVmFsdWUo
V1RGTW92ZShjcmVkZW50aWFsTWFwKSkpOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJ5dGVzOnNlcmlhbGl6ZWRDcmVkZW50aWFsLnZhbHVlKCkuZGF0YSgpIGxl
bmd0aDpzZXJpYWxpemVkQ3JlZGVudGlhbC52YWx1ZSgpLnNpemUoKV0pLmF1dG9yZWxlYXNlKCk7
CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKIC0gKHZvaWQpY2FuY2Vs
CiB7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0YTIyZWMyMzM4YTg5YjZlZjQzNDY2M2VjYzM5ODA3MmM3
ZWEyMjAxLi5iYTU1MTE4N2Q5NDQ1MDE1NGY1N2Q2YTkwMzE4YWUxMTI1OWU1MjU3IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjEtMTItMDkgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAg
IFtXZWJBdXRobl0gUHJvdmlkZSBTUEkgdG8gZXhwb3J0L2ltcG9ydCBsb2NhbCBjcmVkZW50aWFs
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTEy
CisgICAgICAgIHJkYXI6Ly84NDgyMjAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgU1BJIHRvIGltcG9ydCAvIGV4cG9ydCBs
b2NhbCB3ZWJhdXRobiBjcmVkZW50aWFscy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOiBOZXcgdGVzdHMgZm9yIGltcG9ydC9leHBvcnQKKwogMjAyMS0x
Mi0wOSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBCcmlu
ZyB1cCBhbm90aGVyIGlPUyBHUFUgUHJvY2Vzc2VzIHRlc3RlcgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCmluZGV4IGRjZmE4MzQzMTY2NzhiNmNkOWJmNmZhYjg5YmM0OGI0NjAy
MjFkZjIuLjY3MjkyYzhlYzBiMWVmMzk2MDM2YWRmYWNlOGU2NWVlNDQ2OTUyNGMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTIyNDQsNiArMjI0NCw2MyBAQCBURVNU
KFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFVwZGF0ZUNyZWRlbnRpYWxVc2VybmFtZSkKICAgICBj
bGVhblVwS2V5Y2hhaW4oImV4YW1wbGUuY29tIik7CiB9CiAKK1RFU1QoV2ViQXV0aGVudGljYXRp
b25QYW5lbCwgRXhwb3J0SW1wb3J0Q3JlZGVudGlhbCkKK3sKKyAgICByZXNldCgpOworCisgICAg
YWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0LCAiZXhhbXBsZS5jb20i
LCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisKKyAgICBhdXRvICpjcmVkZW50aWFscyA9
IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGdldEFsbExvY2FsQXV0aGVudGljYXRvckNyZWRl
bnRpYWxzV2l0aEFjY2Vzc0dyb3VwOkAiY29tLmFwcGxlLlRlc3RXZWJLaXRBUEkiXTsKKyAgICBF
WFBFQ1RfTk9UX05VTEwoY3JlZGVudGlhbHMpOworICAgIEVYUEVDVF9FUShbY3JlZGVudGlhbHMg
Y291bnRdLCAxbHUpOworCisgICAgRVhQRUNUX05PVF9OVUxMKFtjcmVkZW50aWFscyBmaXJzdE9i
amVjdF0pOworCisgICAgYXV0byBleHBvcnRlZEtleSA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsIGV4cG9ydExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxXaXRoSUQ6W2NyZWRlbnRpYWxz
IGZpcnN0T2JqZWN0XVtfV0tMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsSURLZXldXTsKKyAg
ICAKKyAgICBjbGVhblVwS2V5Y2hhaW4oImV4YW1wbGUuY29tIik7CisKKyAgICBbX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbCBpbXBvcnRMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsOmV4cG9y
dGVkS2V5IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNEYXRhICpyZXNwb25zZSwgTlNFcnJvciAqZXJy
b3IpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLCBuaWwpOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoW1tjcmVkZW50aWFscyBmaXJzdE9iamVjdF1bX1dLTG9jYWxBdXRoZW50aWNhdG9yQ3Jl
ZGVudGlhbElES2V5XSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0sIFtyZXNwb25z
ZSBiYXNlNjRFbmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0pOworICAgIH1dOworCisgICAgY2xl
YW5VcEtleWNoYWluKCJleGFtcGxlLmNvbSIpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwsIEV4cG9ydEltcG9ydER1cGxpY2F0ZUNyZWRlbnRpYWwpCit7CisgICAgcmVzZXQoKTsK
KyAgICBjbGVhblVwS2V5Y2hhaW4oIiIpOworCisgICAgYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMy
NTZQcml2YXRlS2V5QmFzZTY0LCAiZXhhbXBsZS5jb20iLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJh
c2U2NCk7CisKKyAgICBhdXRvICpjcmVkZW50aWFscyA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsIGdldEFsbExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxzV2l0aEFjY2Vzc0dyb3VwOkAi
Y29tLmFwcGxlLlRlc3RXZWJLaXRBUEkiXTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoY3JlZGVudGlh
bHMpOworICAgIEVYUEVDVF9FUShbY3JlZGVudGlhbHMgY291bnRdLCAxbHUpOworCisgICAgRVhQ
RUNUX05PVF9OVUxMKFtjcmVkZW50aWFscyBmaXJzdE9iamVjdF0pOworCisgICAgYXV0byBleHBv
cnRlZEtleSA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGV4cG9ydExvY2FsQXV0aGVudGlj
YXRvckNyZWRlbnRpYWxXaXRoSUQ6W2NyZWRlbnRpYWxzIGZpcnN0T2JqZWN0XVtfV0tMb2NhbEF1
dGhlbnRpY2F0b3JDcmVkZW50aWFsSURLZXldXTsKKworICAgIFtfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsIGltcG9ydExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWw6ZXhwb3J0ZWRLZXkgY29t
cGxldGlvbkhhbmRsZXI6XihOU0RhdGEgKnJlc3BvbnNlLCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgV0tFcnJvckR1cGxpY2F0ZUNyZWRlbnRpYWwpOwor
ICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2UsIG5pbCk7CisgICAgfV07CisKKyAgICBjbGVhblVw
S2V5Y2hhaW4oImV4YW1wbGUuY29tIik7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5l
bCwgSW1wb3J0TWFsZm9ybWVkQ3JlZGVudGlhbCkKK3sKKyAgICByZXNldCgpOworICAgIAorICAg
IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGltcG9ydExvY2FsQXV0aGVudGljYXRvckNyZWRl
bnRpYWw6YWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5n
OnRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0IG9wdGlvbnM6MF0pLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOl4oTlNEYXRhICpyZXNwb25zZSwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX0VRKGVycm9yLmNvZGUsIFdLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsKTsKKyAgICAgICAg
RVhQRUNUX0VRKHJlc3BvbnNlLCBuaWwpOworICAgIH1dOworfQorCiBURVNUKFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiB7CiAgICAgcmVzZXQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449981</attachid>
            <date>2022-01-25 16:20:13 -0800</date>
            <delta_ts>2022-01-25 17:41:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234112-20220125162012.patch</filename>
            <type>text/plain</type>
            <size>19452</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI4MTNjYjEzZGQ0N2Qy
MDVmODUzNDQxMDQ3NDJjNmU0MzM5Y2IzNS4uYWVhZjE2ZWZiMzQzZDNkNmE1ZWEyNDQwNDBkZmRl
MWM3MTBhZWEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAxLTI1ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFByb3ZpZGUg
U1BJIHRvIGV4cG9ydC9pbXBvcnQgbG9jYWwgY3JlZGVudGlhbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDExMgorICAgICAgICByZGFyOi8vODQ4
MjIwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBhZGRzIFNQSSB0byBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIHRvIHByb3Zp
ZGUgdGhlIGFiaWxpdHkKKyAgICAgICAgdG8gaW1wb3J0IC8gZXhwb3J0IGxvY2FsIGNyZWRlbnRp
YWxzLiBDb25zdGFudHMgYXJlIHVzZWQgZHVyaW5nIHNlcmlhbGl6YXRpb24KKyAgICAgICAgYXMg
a2V5cy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25z
dGFudHMuaDogY29uc3RhbnRzIGZvciBjcmVkZW50aWFsIHNlcmlhbGl6YXRpb24KKwogMjAyMi0w
MS0yNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBD
b250YWluZXIgUXVlcmllc10gUGFyc2luZyBzdXBwb3J0IGZvciBjb250YWluZXIgc2hvcnRoYW5k
IHByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNkOTkxNmFiNDdlNTA0ZWNhMmU5Mjc2MjAxODhhNTU0YTZh
ZmJlN2EuLjUwZWM2MmY4MmMzZDJiNThiNzJhOTkxNzM4YjZmNTYyY2U5ZjM4ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMjItMDEtMjUgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUu
Y29tPgorCisgICAgICAgIFtXZWJBdXRobl0gUHJvdmlkZSBTUEkgdG8gZXhwb3J0L2ltcG9ydCBs
b2NhbCBjcmVkZW50aWFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM0MTEyCisgICAgICAgIHJkYXI6Ly84NDgyMjAwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQSSB0ZXN0
cy4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgbmV3IFNQSSB0byBfV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLmggdG8gaW1wb3J0IGFuZCBleHBvcnQgbG9jYWwKKyAgICAgICAgd2ViYXV0aG4g
Y3JlZGVudGlhbHMuIENCT1IgaXMgdXNlZCBmb3Igc2VyaWFsaXphdGlvbi4gV0tFcnJvcnMgYXJl
IHVzZWQgdG8gZGlmZmVyZW50aWF0ZQorICAgICAgICBiZXR3ZWVuIG1hbGZvcm1lZCB2cyBkdXBs
aWNhdGUga2V5cyBkdXJpbmcgaW1wb3J0LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Vycm9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1tOgor
ICAgICAgICAobG9jYWxpemVkRGVzY3JpcHRpb25Gb3JFcnJvckNvZGUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAg
ICAgKCtbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBpbXBvcnRMb2NhbEF1dGhlbnRpY2F0b3JD
cmVkZW50aWFsOmVycm9yOl0pOgorICAgICAgICAoK1tfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
IGV4cG9ydExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxXaXRoSUQ6ZXJyb3I6XSk6CisKIDIw
MjItMDEtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgVUlXS0RvY3VtZW50UmVxdWVzdFNwYXRpYWxBbmRDdXJyZW50U2VsZWN0aW9uIHNob3VsZCBs
aW1pdCBjb250ZXh0IHRvIHRoZSBlZGl0YWJsZSByb290IG9mIHRoZSBjdXJyZW50IHNlbGVjdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50
aWNhdGlvbkNvbnN0YW50cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJB
dXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCmluZGV4IDg0YTc3YmVjN2JhMmEzYzk5YTcwYzMwNDM0
MmQ5MWE0ZjE5NzkxYTQuLmE3YTFlOGQ5M2FhYzk4Mzg5MDg0Zjk0NmQyMTdlNzBiYTk0ZjAwMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGlj
YXRpb25Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dl
YkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKQEAgLTc5LDYgKzc5LDEzIEBAIGVudW0gY2xhc3Mg
Q2xpZW50RGF0YVR5cGUgOiBib29sIHsKIAogY29uc3QgY2hhciBMb2NhbEF1dGhlbnRpY2F0aW9y
QWNjZXNzR3JvdXBbXSA9ICJjb20uYXBwbGUud2Via2l0LndlYmF1dGhuIjsKIAorLy8gQ3JlZGVu
dGlhbCBzZXJpYWxpemF0aW9uCitjb25zdCBjaGFyIHByaXZhdGVLZXlLZXlbXSA9ICJwcml2IjsK
K2NvbnN0IGNoYXIga2V5VHlwZUtleVtdID0gImtleV90eXBlIjsKK2NvbnN0IGNoYXIga2V5U2l6
ZUtleVtdID0gImtleV9zaXplIjsKK2NvbnN0IGNoYXIgcmVseWluZ1BhcnR5S2V5W10gPSAicnAi
OworY29uc3QgY2hhciBhcHBsaWNhdGlvblRhZ0tleVtdID0gInRhZyI7CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdlYkF1dGhuIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5oCmluZGV4IDNmYzA2ZTM1MTI0MDAzNTNiZGQwNmU5YjM3
YTcyZjY2M2IzOTM3ZjguLjc0MzAxNzY5MzcyZTZlY2E4NTA3OWQ1M2E5MzA3N2U4ODNmYjFmZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IuaApAQCAtNjMs
NiArNjMsOSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0Vycm9yQ29kZSkgewogICAg
IFdLRXJyb3JKYXZhU2NyaXB0SW52YWxpZEZyYW1lVGFyZ2V0IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTEuMCksIGlvcygxNC4wKSksCiAgICAgV0tFcnJvck5hdmlnYXRpb25BcHBCb3VuZERvbWFp
biBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpLAogICAgIFdLRXJyb3JK
YXZhU2NyaXB0QXBwQm91bmREb21haW4gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9z
KDE0LjApKSwKKyAgICBXS0Vycm9yRHVwbGljYXRlQ3JlZGVudGlhbCBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAorICAgIFdLRXJyb3JNYWxmb3Jt
ZWRDcmVkZW50aWFsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSksCisgICAgV0tFcnJvckNyZWRlbnRpYWxOb3RGb3VuZCBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAogfSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEwKSwgaW9zKDguMCkpOwogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IubW0KaW5kZXggZWYwNWUwYWIx
NDcyODE3MWMzOTkwNzBlZDY0MjllMzNhNWE2OGEzNi4uMWM3NmNlNmFiYTFiODFiODM3NmVhMGU3
NmE1Nzk1ZWViNDE1OWY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLRXJyb3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRXJyb3IubW0KQEAgLTgyLDYgKzgyLDE1IEBAIE5TU3RyaW5nICpsb2NhbGl6ZWREZXNjcmlw
dGlvbkZvckVycm9yQ29kZShXS0Vycm9yQ29kZSBlcnJvckNvZGUpCiAKICAgICBjYXNlIFdLRXJy
b3JKYXZhU2NyaXB0QXBwQm91bmREb21haW46CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
KCJKYXZhU2NyaXB0IGV4ZWN1dGlvbiB0YXJnZXRlZCBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFu
IGFwcC1ib3VuZCBkb21haW4iLCAiV0tFcnJvckphdmFTY3JpcHRBcHBCb3VuZERvbWFpbiBkZXNj
cmlwdGlvbiIpOworCisgICAgY2FzZSBXS0Vycm9yRHVwbGljYXRlQ3JlZGVudGlhbDoKKyAgICAg
ICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIlRoaXMgY3JlZGVudGlhbCBpcyBhbHJlYWR5IHByZXNl
bnQiLCAiV0tFcnJvckR1cGxpY2F0ZUNyZWRlbnRpYWwgZGVzY3JpcHRpb24iKTsKKworICAgIGNh
c2UgV0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWw6CisgICAgICAgIHJldHVybiBXRUJfVUlfU1RS
SU5HKCJUaGlzIGNyZWRlbnRpYWwgaXMgbWFsZm9ybWVkIiwgIldLRXJyb3JNYWxmb3JtZWRDcmVk
ZW50aWFsIGRlc2NyaXB0aW9uIik7CisgICAgICAgICAgICAKKyAgICBjYXNlIFdLRXJyb3JDcmVk
ZW50aWFsTm90Rm91bmQ6CisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJDcmVkZW50aWFs
IGNvdWxkIG5vdCBiZSBmb3VuZCIsICJXS0Vycm9yQ3JlZGVudGlhbE5vdEZvdW5kIGRlc2NyaXB0
aW9uIik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAppbmRleCA2YmZhNDg4
YjIwZjNkNjE3Mzc4ODE0ZmZmYjQ4NjY1MjFkOGVjZTJiLi5iNjg5ZGFjMmQ4N2IwOGE3MDJjZjli
YTZhZmFhYTYzZTlkZDU3NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKQEAgLTExNyw2
ICsxMTcsOSBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSkK
ICsgKHZvaWQpY2xlYXJBbGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFscyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogKyAodm9pZClzZXRVc2VybmFtZUZvckxv
Y2FsQ3JlZGVudGlhbFdpdGhJRDooTlNEYXRhICopY3JlZGVudGlhbElEIHVzZXJuYW1lOiAoTlNT
dHJpbmcgKil1c2VybmFtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkp
OwogCisrIChOU0RhdGEgKilleHBvcnRMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsV2l0aElE
OihOU0RhdGEgKiljcmVkZW50aWFsSUQgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3IgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKysgKE5TRGF0YSAq
KWltcG9ydExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWw6KE5TRGF0YSAqKWNyZWRlbnRpYWxC
bG9iIGVycm9yOihOU0Vycm9yICoqKWVycm9yIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKICsgKEJPT0wpaXNVc2VyVmVyaWZ5aW5nUGxhdGZv
cm1BdXRoZW50aWNhdG9yQXZhaWxhYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlv
cygxNS4wKSk7CiAKICsgKE5TRGF0YSAqKWdldENsaWVudERhdGFKU09ORm9yQXV0aGVudGljYXRp
b25UeXBlOihfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpdHlwZSBjaGFsbGVuZ2U6KE5TRGF0YSAq
KWNoYWxsZW5nZSBvcmlnaW46KE5TU3RyaW5nICopb3JpZ2luIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCmluZGV4IGJiNmE4ZGVmM2RjZTQ0MjQ5MjYwMjMzNmZlM2QyY2I4YTEyYmEwMzQuLmM2NGE1
OWI0ZTIxN2UyMmIxMzFhYjIxZTA5MjlhZTE2MzJmYTk3ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tCkBAIC0zODgsNiArMzg4LDE5OCBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+
IGdldEFsbExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxzSW1wbChOU1N0cmluZyAqYWNjZQog
I2VuZGlmCiB9CiAKKysgKE5TRGF0YSAqKWltcG9ydExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRp
YWw6KE5TRGF0YSAqKWNyZWRlbnRpYWxCbG9iIGVycm9yOihOU0Vycm9yICoqKWVycm9yCit7Cisj
aWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBhdXRvIGNyZWRlbnRpYWwgPSBjYm9yOjpDQk9SUmVh
ZGVyOjpyZWFkKHZlY3RvckZyb21OU0RhdGEoY3JlZGVudGlhbEJsb2IpKTsKKyAgICBpZiAoIWNy
ZWRlbnRpYWwgfHwgIWNyZWRlbnRpYWwtPmlzTWFwKCkpIHsKKyAgICAgICAgaWYgKGVycm9yKQor
ICAgICAgICAgICAgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21h
aW4gY29kZTpXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCB1c2VySW5mbzpuaWxdOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvJiBjcmVkZW50aWFsTWFwID0gY3Jl
ZGVudGlhbC0+Z2V0TWFwKCk7CisgICAgYXV0byBpdCA9IGNyZWRlbnRpYWxNYXAuZmluZChjYm9y
OjpDQk9SVmFsdWUoV2ViQ29yZTo6cHJpdmF0ZUtleUtleSkpOworICAgIGlmIChpdCA9PSBjcmVk
ZW50aWFsTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKSB7CisgICAgICAg
IGlmIChlcnJvcikKKyAgICAgICAgICAgICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWwgdXNlckluZm86
bmlsXTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGF1dG8gcHJpdmF0ZUtl
eSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6aXQtPnNlY29uZC5nZXRC
eXRlU3RyaW5nKCkuZGF0YSgpIGxlbmd0aDppdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKS5zaXpl
KCldKTsKKworICAgIGl0ID0gY3JlZGVudGlhbE1hcC5maW5kKGNib3I6OkNCT1JWYWx1ZShXZWJD
b3JlOjprZXlUeXBlS2V5KSk7CisgICAgaWYgKGl0ID09IGNyZWRlbnRpYWxNYXAuZW5kKCkgfHwg
IWl0LT5zZWNvbmQuaXNJbnRlZ2VyKCkpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAg
ICAgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpX
S0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCB1c2VySW5mbzpuaWxdOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisgICAgYXV0byBrZXlUeXBlID0gaXQtPnNlY29uZC5nZXRJbnRlZ2Vy
KCk7CisKKyAgICBpdCA9IGNyZWRlbnRpYWxNYXAuZmluZChjYm9yOjpDQk9SVmFsdWUoV2ViQ29y
ZTo6a2V5U2l6ZUtleSkpOworICAgIGlmIChpdCA9PSBjcmVkZW50aWFsTWFwLmVuZCgpIHx8ICFp
dC0+c2Vjb25kLmlzSW50ZWdlcigpKSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAg
ICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tF
cnJvck1hbGZvcm1lZENyZWRlbnRpYWwgdXNlckluZm86bmlsXTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorICAgIGF1dG8ga2V5U2l6ZSA9IGl0LT5zZWNvbmQuZ2V0SW50ZWdlcigp
OworCisgICAgaXQgPSBjcmVkZW50aWFsTWFwLmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKFdlYkNvcmU6
OnJlbHlpbmdQYXJ0eUtleSkpOworICAgIGlmIChpdCA9PSBjcmVkZW50aWFsTWFwLmVuZCgpIHx8
ICFpdC0+c2Vjb25kLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAg
ICAgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpX
S0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCB1c2VySW5mbzpuaWxdOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9CisgICAgYXV0byBycCA9IGl0LT5zZWNvbmQuZ2V0U3RyaW5nKCk7CisK
KyAgICBpdCA9IGNyZWRlbnRpYWxNYXAuZmluZChjYm9yOjpDQk9SVmFsdWUoV2ViQ29yZTo6YXBw
bGljYXRpb25UYWdLZXkpKTsKKyAgICBpZiAoaXQgPT0gY3JlZGVudGlhbE1hcC5lbmQoKSB8fCAh
aXQtPnNlY29uZC5pc01hcCgpKSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICpl
cnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJv
ck1hbGZvcm1lZENyZWRlbnRpYWwgdXNlckluZm86bmlsXTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIGF1dG8ga2V5VGFnID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jv
cjo6Q0JPUlZhbHVlKGl0LT5zZWNvbmQuZ2V0TWFwKCkpKTsKKworICAgIE5TRGljdGlvbmFyeSAq
b3B0aW9ucyA9IEB7CisgICAgICAgIC8vIEtleSB0eXBlIHZhbHVlcyBhcmUgc3RyaW5nIHZhbHVl
cyBvZiBudW1iZXJzLCBzdG9yZWQgYXMga0NGTnVtYmVyU0ludDY0VHlwZSBpbiBhdHRyaWJ1dGVz
LCBidXQgbXVzdCBiZSBwYXNzZWQgYXMgc3RyaW5nIGhlcmUKKyAgICAgICAgKGlkKWtTZWNBdHRy
S2V5VHlwZTogKGlkKVtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJWkiLCAoaW50KWtleVR5
cGVdLAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQ
cml2YXRlLAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlTaXplSW5CaXRzOiBAKGtleVNpemUpLAor
ICAgIH07CisgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7CisgICAgYXV0byBrZXkg
PSBhZG9wdENGKFNlY0tleUNyZWF0ZVdpdGhEYXRhKAorICAgICAgICBicmlkZ2VfY2FzdChwcml2
YXRlS2V5LmdldCgpKSwKKyAgICAgICAgYnJpZGdlX2Nhc3Qob3B0aW9ucyksCisgICAgICAgICZl
cnJvclJlZgorICAgICkpOworICAgIGlmIChlcnJvclJlZikgeworICAgICAgICBpZiAoZXJyb3Ip
CisgICAgICAgICAgICAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRv
bWFpbiBjb2RlOldLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsIHVzZXJJbmZvOm5pbF07CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8gcHVibGljS2V5ID0gYWRvcHRD
RihTZWNLZXlDb3B5UHVibGljS2V5KGtleS5nZXQoKSkpOworICAgIGF1dG8gcHVibGljS2V5RGF0
YVJlcCA9IGFkb3B0Q0YoU2VjS2V5Q29weUV4dGVybmFsUmVwcmVzZW50YXRpb24ocHVibGljS2V5
LmdldCgpLCAmZXJyb3JSZWYpKTsKKyAgICBpZiAoZXJyb3JSZWYpIHsKKyAgICAgICAgaWYgKGVy
cm9yKQorICAgICAgICAgICAgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldLRXJy
b3JEb21haW4gY29kZTpXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCB1c2VySW5mbzpuaWxdOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBOU0RhdGEgKm5zUHVibGljS2V5
RGF0YSA9IChOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVwLmdldCgpOworICAgIGF1dG8gZGlnZXN0
ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGht
OjpTSEFfMSk7CisgICAgZGlnZXN0LT5hZGRCeXRlcyhuc1B1YmxpY0tleURhdGEuYnl0ZXMsIG5z
UHVibGljS2V5RGF0YS5sZW5ndGgpOworICAgIGF1dG8gY3JlZGVudGlhbElkID0gZGlnZXN0LT5j
b21wdXRlSGFzaCgpOworICAgIGF1dG8gbnNDcmVkZW50aWFsSWQgPSBhZG9wdE5TKFtbTlNEYXRh
IGFsbG9jXSBpbml0V2l0aEJ5dGVzOmNyZWRlbnRpYWxJZC5kYXRhKCkgbGVuZ3RoOmNyZWRlbnRp
YWxJZC5zaXplKCldKTsKKworICAgIGF1dG8gcXVlcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgKGlkKWtTZWND
bGFzc0tleSwgKGlkKWtTZWNDbGFzcywKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2
YXRlLCAoaWQpa1NlY0F0dHJLZXlDbGFzcywKKyAgICAgICAgKGlkKXJwLCAoaWQpa1NlY0F0dHJM
YWJlbCwKKyAgICAgICAgbnNDcmVkZW50aWFsSWQuZ2V0KCksIChpZClrU2VjQXR0ckFwcGxpY2F0
aW9uTGFiZWwsCisgICAgICAgIEBZRVMsIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFp
biwKKyAgICAgICAgbmlsCisgICAgXSk7CisgICAgdXBkYXRlUXVlcnlJZk5lY2Vzc2FyeShxdWVy
eS5nZXQoKSk7CisKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKGJy
aWRnZV9jYXN0KHF1ZXJ5LmdldCgpKSwgbnVsbHB0cik7CisgICAgaWYgKCFzdGF0dXMpIHsKKyAg
ICAgICAgLy8gQ3JlZGVudGlhbCB3aXRoIHNhbWUgaWQgYWxyZWFkeSBleGlzdHMsIGR1cGxpY2F0
ZSBrZXkuCisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICplcnJvciA9IFtOU0Vycm9y
IGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckR1cGxpY2F0ZUNyZWRl
bnRpYWwgdXNlckluZm86bmlsXTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisg
ICAgYXV0byBzZWNBdHRyQXBwbGljYXRpb25UYWcgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBp
bml0V2l0aEJ5dGVzOmtleVRhZy0+ZGF0YSgpIGxlbmd0aDprZXlUYWctPnNpemUoKV0pOworICAg
IE5TRGljdGlvbmFyeSAqYWRkUXVlcnkgPSBAeworICAgICAgICAoaWQpa1NlY1ZhbHVlUmVmOiAo
aWQpa2V5LmdldCgpLAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRy
S2V5Q2xhc3NQcml2YXRlLAorICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogcnAsCisgICAgICAg
IChpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBzZWNBdHRyQXBwbGljYXRpb25UYWcuZ2V0KCks
CisgICAgICAgIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFpbjogQFlFUywKKyAgICAg
ICAgKGlkKWtTZWNBdHRyQWNjZXNzaWJsZTogKGlkKWtTZWNBdHRyQWNjZXNzaWJsZUFmdGVyRmly
c3RVbmxvY2sKKyAgICB9OworICAgIHN0YXR1cyA9IFNlY0l0ZW1BZGQoYnJpZGdlX2Nhc3QoYWRk
UXVlcnkpLCBOVUxMKTsKKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIGlmIChlcnJvcikKKyAg
ICAgICAgICAgICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWlu
IGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgcmV0dXJuIG5zQ3JlZGVudGlhbElkLmF1dG9yZWxlYXNlKCk7Cisj
ZW5kaWYKK30KKworKyAoTlNEYXRhICopZXhwb3J0TG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlh
bFdpdGhJRDooTlNEYXRhICopY3JlZGVudGlhbElEIGVycm9yOihOU0Vycm9yICoqKWVycm9yCit7
CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBhdXRvIHF1ZXJ5ID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgIChp
ZClrU2VjQ2xhc3NLZXksIChpZClrU2VjQ2xhc3MsCisgICAgICAgIGNyZWRlbnRpYWxJRCwgKGlk
KWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbCwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3NQ
cml2YXRlLCAoaWQpa1NlY0F0dHJLZXlDbGFzcywKKyAgICAgICAgQFlFUywgKGlkKWtTZWNSZXR1
cm5SZWYsCisgICAgICAgIEBZRVMsIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFpbiwK
KyAgICAgICAgbmlsCisgICAgXSk7CisgICAgdXBkYXRlUXVlcnlJZk5lY2Vzc2FyeShxdWVyeS5n
ZXQoKSk7CisgICAgQ0ZUeXBlUmVmIHByaXZhdGVLZXlSZWYgPSBudWxscHRyOworICAgIE9TU3Rh
dHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoYnJpZGdlX2Nhc3QocXVlcnkuZ2V0KCkp
LCAmcHJpdmF0ZUtleVJlZik7CisgICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRl
bU5vdEZvdW5kKSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICplcnJvciA9IFtO
U0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckNyZWRlbnRp
YWxOb3RGb3VuZCB1c2VySW5mbzpuaWxdOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisgICAgYXV0byBwcml2YXRlS2V5ID0gYWRvcHRDRihwcml2YXRlS2V5UmVmKTsKKyAgICBDRkVy
cm9yUmVmIGVycm9yUmVmID0gbnVsbHB0cjsKKyAgICBhdXRvIHByaXZhdGVLZXlSZXAgPSBhZG9w
dENGKFNlY0tleUNvcHlFeHRlcm5hbFJlcHJlc2VudGF0aW9uKChfX2JyaWRnZSBTZWNLZXlSZWYp
KChpZClwcml2YXRlS2V5UmVmKSwgJmVycm9yUmVmKSk7CisgICAgYXV0byByZXRhaW5FcnJvciA9
IGFkb3B0Q0YoZXJyb3JSZWYpOworICAgIGlmIChlcnJvclJlZikgeworICAgICAgICBpZiAoZXJy
b3IpCisgICAgICAgICAgICAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJv
ckRvbWFpbiBjb2RlOldLRXJyb3JDcmVkZW50aWFsTm90Rm91bmQgdXNlckluZm86bmlsXTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgICAgICAKKyAgICBbcXVlcnkgcmVtb3Zl
T2JqZWN0Rm9yS2V5OihpZClrU2VjUmV0dXJuUmVmXTsKKyAgICBbcXVlcnkgc2V0T2JqZWN0OiBA
WUVTIGZvcktleTooaWQpa1NlY1JldHVybkF0dHJpYnV0ZXNdOworICAgIENGVHlwZVJlZiBhdHRy
aWJ1dGVzQXJyYXlSZWYgPSBudWxscHRyOworICAgIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hp
bmcoYnJpZGdlX2Nhc3QocXVlcnkuZ2V0KCkpLCAmYXR0cmlidXRlc0FycmF5UmVmKTsKKyAgICBp
ZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKKyAgICAgICAgaWYg
KGVycm9yKQorICAgICAgICAgICAgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldL
RXJyb3JEb21haW4gY29kZTpXS0Vycm9yQ3JlZGVudGlhbE5vdEZvdW5kIHVzZXJJbmZvOm5pbF07
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBOU0RpY3Rpb25hcnkgKmF0dHJp
YnV0ZXMgPSAoX19icmlkZ2UgTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlc0FycmF5UmVmOworCisg
ICAgaW50NjRfdCBrZXlUeXBlLCBrZXlTaXplOworICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZSgo
X19icmlkZ2UgQ0ZOdW1iZXJSZWYpYXR0cmlidXRlc1ticmlkZ2VfaWRfY2FzdChrU2VjQXR0cktl
eVR5cGUpXSwga0NGTnVtYmVyU0ludDY0VHlwZSwgJmtleVR5cGUpKSB7CisgICAgICAgIGlmIChl
cnJvcikKKyAgICAgICAgICAgICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vy
cm9yRG9tYWluIGNvZGU6V0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWwgdXNlckluZm86bmlsXTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1
ZSgoX19icmlkZ2UgQ0ZOdW1iZXJSZWYpYXR0cmlidXRlc1ticmlkZ2VfaWRfY2FzdChrU2VjQXR0
cktleVNpemVJbkJpdHMpXSwga0NGTnVtYmVyU0ludDY0VHlwZSwgJmtleVNpemUpKSB7CisgICAg
ICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERv
bWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWwgdXNlcklu
Zm86bmlsXTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAorICAgIGNib3I6
OkNCT1JWYWx1ZTo6TWFwVmFsdWUgY3JlZGVudGlhbE1hcDsKKyAgICBjcmVkZW50aWFsTWFwW2Ni
b3I6OkNCT1JWYWx1ZShXZWJDb3JlOjpwcml2YXRlS2V5S2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUo
V2ViQ29yZTo6dG9CdWZmZXJTb3VyY2UoYnJpZGdlX2lkX2Nhc3QocHJpdmF0ZUtleVJlcC5nZXQo
KSkpKTsKKyAgICBjcmVkZW50aWFsTWFwW2Nib3I6OkNCT1JWYWx1ZShXZWJDb3JlOjprZXlUeXBl
S2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUoa2V5VHlwZSk7CisgICAgY3JlZGVudGlhbE1hcFtjYm9y
OjpDQk9SVmFsdWUoV2ViQ29yZTo6a2V5U2l6ZUtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGtleVNp
emUpOworICAgIGNyZWRlbnRpYWxNYXBbY2Jvcjo6Q0JPUlZhbHVlKFdlYkNvcmU6OnJlbHlpbmdQ
YXJ0eUtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKFN0cmluZyhhdHRyaWJ1dGVzW2JyaWRnZV9pZF9j
YXN0KGtTZWNBdHRyTGFiZWwpXSkpOworICAgIGF1dG8gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6
Q0JPUlJlYWRlcjo6cmVhZCh2ZWN0b3JGcm9tTlNEYXRhKGF0dHJpYnV0ZXNbYnJpZGdlX2lkX2Nh
c3Qoa1NlY0F0dHJBcHBsaWNhdGlvblRhZyldKSk7CisgICAgaWYgKCFkZWNvZGVkUmVzcG9uc2Ug
fHwgIWRlY29kZWRSZXNwb25zZS0+aXNNYXAoKSkgeworICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgICAgICAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBj
b2RlOldLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsIHVzZXJJbmZvOm5pbF07CisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIH0KKyAgICBjcmVkZW50aWFsTWFwW2Nib3I6OkNCT1JWYWx1ZShX
ZWJDb3JlOjphcHBsaWNhdGlvblRhZ0tleSldID0gY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoKmRl
Y29kZWRSZXNwb25zZSkpOworICAgIGF1dG8gc2VyaWFsaXplZENyZWRlbnRpYWwgPSBjYm9yOjpD
Qk9SV3JpdGVyOjp3cml0ZShjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZShjcmVkZW50aWFsTWFwKSkp
OworICAgIHJldHVybiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnNlcmlh
bGl6ZWRDcmVkZW50aWFsLnZhbHVlKCkuZGF0YSgpIGxlbmd0aDpzZXJpYWxpemVkQ3JlZGVudGlh
bC52YWx1ZSgpLnNpemUoKV0pLmF1dG9yZWxlYXNlKCk7CisjZWxzZQorICAgIHJldHVybiBudWxs
cHRyOworI2VuZGlmCit9CisKIC0gKHZvaWQpY2FuY2VsCiB7CiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBm
Njk4NGU0OTEzYWE3NTU0ODgyODc0MTU2NGM0ODY3YWY1NWQxNWE4Li5lMDI5MDI1NzJlZjM3ODUy
YjM1NTYzMzU4MzRlMTRjMjQzMWQzNDQ4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjItMDEtMjUgIEogUGFzY29l
ICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gUHJvdmlkZSBTUEkg
dG8gZXhwb3J0L2ltcG9ydCBsb2NhbCBjcmVkZW50aWFscworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTEyCisgICAgICAgIHJkYXI6Ly84NDgyMjAw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0
ZXN0cyBmb3IgU1BJIHRvIGltcG9ydCAvIGV4cG9ydCBsb2NhbCB3ZWJhdXRobiBjcmVkZW50aWFs
cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOiBOZXcg
dGVzdHMgZm9yIGltcG9ydC9leHBvcnQKKwogMjAyMi0wMS0yNSAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBVSVdLRG9jdW1lbnRSZXF1ZXN0U3BhdGlh
bEFuZEN1cnJlbnRTZWxlY3Rpb24gc2hvdWxkIGxpbWl0IGNvbnRleHQgdG8gdGhlIGVkaXRhYmxl
IHJvb3Qgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW0KaW5kZXggMzM3NjZlMDlmZDVmOTdkYjRmMzU2MWQzOTRmNGY4ZjcyZjIwODhkOS4u
ODhjMGFmOWI3NDQ0YzAwYjI5ZTU5OThmMDBhNDdlNmJlMDY3OGJkNCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjIyOCw2ICsyMjI4LDYxIEBAIFRFU1QoV2ViQXV0
aGVudGljYXRpb25QYW5lbCwgVXBkYXRlQ3JlZGVudGlhbFVzZXJuYW1lKQogICAgIGNsZWFuVXBL
ZXljaGFpbigiZXhhbXBsZS5jb20iKTsKIH0KIAorVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBFeHBvcnRJbXBvcnRDcmVkZW50aWFsKQoreworICAgIHJlc2V0KCk7CisKKyAgICBhZGRLZXlU
b0tleWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICJleGFtcGxlLmNvbSIsIHRlc3RV
c2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKworICAgIGF1dG8gKmNyZWRlbnRpYWxzID0gW19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwgZ2V0QWxsTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbHNX
aXRoQWNjZXNzR3JvdXA6QCJjb20uYXBwbGUuVGVzdFdlYktpdEFQSSJdOworICAgIEVYUEVDVF9O
T1RfTlVMTChjcmVkZW50aWFscyk7CisgICAgRVhQRUNUX0VRKFtjcmVkZW50aWFscyBjb3VudF0s
IDFsdSk7CisKKyAgICBFWFBFQ1RfTk9UX05VTEwoW2NyZWRlbnRpYWxzIGZpcnN0T2JqZWN0XSk7
CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byBleHBvcnRlZEtleSA9IFtfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsIGV4cG9ydExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxX
aXRoSUQ6W2NyZWRlbnRpYWxzIGZpcnN0T2JqZWN0XVtfV0tMb2NhbEF1dGhlbnRpY2F0b3JDcmVk
ZW50aWFsSURLZXldIGVycm9yOiZlcnJvcl07CisgICAgCisgICAgY2xlYW5VcEtleWNoYWluKCJl
eGFtcGxlLmNvbSIpOworCisgICAgYXV0byBjcmVkZW50aWFsSWQgPSBbX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbCBpbXBvcnRMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsOmV4cG9ydGVkS2V5
IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX1dLX1NUUkVRKFtbY3JlZGVudGlhbHMgZmlyc3RP
YmplY3RdW19XS0xvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxJREtleV0gYmFzZTY0RW5jb2Rl
ZFN0cmluZ1dpdGhPcHRpb25zOjBdLCBbY3JlZGVudGlhbElkIGJhc2U2NEVuY29kZWRTdHJpbmdX
aXRoT3B0aW9uczowXSk7CisKKyAgICBjbGVhblVwS2V5Y2hhaW4oImV4YW1wbGUuY29tIik7Cit9
CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgRXhwb3J0SW1wb3J0RHVwbGljYXRlQ3Jl
ZGVudGlhbCkKK3sKKyAgICByZXNldCgpOworICAgIGNsZWFuVXBLZXljaGFpbigiIik7CisKKyAg
ICBhZGRLZXlUb0tleWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICJleGFtcGxlLmNv
bSIsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKworICAgIGF1dG8gKmNyZWRlbnRpYWxz
ID0gW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZ2V0QWxsTG9jYWxBdXRoZW50aWNhdG9yQ3Jl
ZGVudGlhbHNXaXRoQWNjZXNzR3JvdXA6QCJjb20uYXBwbGUuVGVzdFdlYktpdEFQSSJdOworICAg
IEVYUEVDVF9OT1RfTlVMTChjcmVkZW50aWFscyk7CisgICAgRVhQRUNUX0VRKFtjcmVkZW50aWFs
cyBjb3VudF0sIDFsdSk7CisKKyAgICBFWFBFQ1RfTk9UX05VTEwoW2NyZWRlbnRpYWxzIGZpcnN0
T2JqZWN0XSk7CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byBleHBvcnRlZEtl
eSA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGV4cG9ydExvY2FsQXV0aGVudGljYXRvckNy
ZWRlbnRpYWxXaXRoSUQ6W2NyZWRlbnRpYWxzIGZpcnN0T2JqZWN0XVtfV0tMb2NhbEF1dGhlbnRp
Y2F0b3JDcmVkZW50aWFsSURLZXldIGVycm9yOiZlcnJvcl07CisKKyAgICBhdXRvIGNyZWRlbnRp
YWxJZCA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGltcG9ydExvY2FsQXV0aGVudGljYXRv
ckNyZWRlbnRpYWw6ZXhwb3J0ZWRLZXkgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfRVEoY3Jl
ZGVudGlhbElkLCBuaWwpOworICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBXS0Vycm9yRHVwbGlj
YXRlQ3JlZGVudGlhbCk7CisKKyAgICBjbGVhblVwS2V5Y2hhaW4oImV4YW1wbGUuY29tIik7Cit9
CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgSW1wb3J0TWFsZm9ybWVkQ3JlZGVudGlh
bCkKK3sKKyAgICByZXNldCgpOworCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgYXV0
byBjcmVkZW50aWFsSWQgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBpbXBvcnRMb2NhbEF1
dGhlbnRpY2F0b3JDcmVkZW50aWFsOmFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFz
ZTY0RW5jb2RlZFN0cmluZzp0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCBvcHRpb25zOjBdKS5n
ZXQoKSBlcnJvcjomZXJyb3JdOworCisgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIFdLRXJyb3JN
YWxmb3JtZWRDcmVkZW50aWFsKTsKKyAgICBFWFBFQ1RfRVEoY3JlZGVudGlhbElkLCBuaWwpOwor
fQorCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiB7
CiAgICAgcmVzZXQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449987</attachid>
            <date>2022-01-25 17:41:11 -0800</date>
            <delta_ts>2022-01-26 17:26:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234112-20220125174110.patch</filename>
            <type>text/plain</type>
            <size>21732</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTU2YTNlNWQ0ZWI2Y2Zj
ZmM3ZjllODQ5Mjc5NmFlNTQ0MjVjMDgyMC4uYmQzYTM0MDMyMzI1MDZlZjgwZGM2NDI2ZjUwZmQx
Mjk3NWVlNGU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAxLTI1ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFByb3ZpZGUg
U1BJIHRvIGV4cG9ydC9pbXBvcnQgbG9jYWwgY3JlZGVudGlhbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDExMgorICAgICAgICByZGFyOi8vODQ4
MjIwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIGNoYW5nZSBhZGRzIFNQSSB0byBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIHRvIHByb3Zp
ZGUgdGhlIGFiaWxpdHkKKyAgICAgICAgdG8gaW1wb3J0IC8gZXhwb3J0IGxvY2FsIGNyZWRlbnRp
YWxzLiBDb25zdGFudHMgYXJlIHVzZWQgZHVyaW5nIHNlcmlhbGl6YXRpb24KKyAgICAgICAgYXMg
a2V5cy4KKworICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25z
dGFudHMuaDogY29uc3RhbnRzIGZvciBjcmVkZW50aWFsIHNlcmlhbGl6YXRpb24KKwogMjAyMi0w
MS0yNSAgQWxleGV5IFNodmF5a2EgIDxhc2h2YXlrYUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dl
YklETF0gQmxvYi1yZWxhdGVkIG1ldGhvZHMgc2hvdWxkIHVzZSBfcmVsZXZhbnRfIGNvbnRleHQg
aW5zdGVhZCBvZiBfY3VycmVudF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWRkODU2NzdlOGQxZjRmOTA3NzcyY2Ri
YjhjNWFkNjE0ZjU1OGZkNS4uZjBjY2Q4NmU2MzY5YzFmN2IxYmYzYmJlZWU0ZmVlOTJmOTRhYTk4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wMS0yNSAgSiBQYXNjb2UgIDxqX3Bh
c2NvZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBQcm92aWRlIFNQSSB0byBleHBv
cnQvaW1wb3J0IGxvY2FsIGNyZWRlbnRpYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxMTIKKyAgICAgICAgcmRhcjovLzg0ODIyMDAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBu
ZXcgQVBJIHRlc3RzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBuZXcgU1BJIHRvIF9XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwuaCB0byBpbXBvcnQgYW5kIGV4cG9ydCBsb2NhbAorICAgICAg
ICB3ZWJhdXRobiBjcmVkZW50aWFscy4gQ0JPUiBpcyB1c2VkIGZvciBzZXJpYWxpemF0aW9uLiBX
S0Vycm9ycyBhcmUgdXNlZCB0byBkaWZmZXJlbnRpYXRlCisgICAgICAgIGJldHdlZW4gbWFsZm9y
bWVkIHZzIGR1cGxpY2F0ZSBrZXlzIGR1cmluZyBpbXBvcnQuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLRXJyb3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
RXJyb3IubW06CisgICAgICAgIChsb2NhbGl6ZWREZXNjcmlwdGlvbkZvckVycm9yQ29kZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tOgorICAgICAgICAoK1tfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGltcG9ydExvY2FsQXV0
aGVudGljYXRvckNyZWRlbnRpYWw6ZXJyb3I6XSk6CisgICAgICAgICgrW19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwgZXhwb3J0TG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbFdpdGhJRDplcnJv
cjpdKToKKwogMjAyMi0wMS0yNSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbnN0YWxsIGJ1aWxkIGZhaWx1cmUgd2hlbiB1c2luZyBTWVNURU1fQ09OVEVO
VF9QQVRICmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1dlYkF1
dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKaW5kZXggODRhNzdiZWM3YmEyYTNjOTlhNzBj
MzA0MzQyZDkxYTRmMTk3OTFhNC4uMjgwNmE2YTgyNjFlY2YwMWY0NGU0Y2NiMjk4ZTY0OWNkNDkx
MGFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRo
ZW50aWNhdGlvbkNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaApAQCAtNzcsNyArNzcsMTQgQEAgZW51bSBj
bGFzcyBDbGllbnREYXRhVHlwZSA6IGJvb2wgewogICAgIEdldAogfTsKIAotY29uc3QgY2hhciBM
b2NhbEF1dGhlbnRpY2F0aW9yQWNjZXNzR3JvdXBbXSA9ICJjb20uYXBwbGUud2Via2l0LndlYmF1
dGhuIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFyIExvY2FsQXV0aGVudGljYXRvckFjY2Vzc0dyb3Vw
W10gPSAiY29tLmFwcGxlLndlYmtpdC53ZWJhdXRobiI7CisKKy8vIENyZWRlbnRpYWwgc2VyaWFs
aXphdGlvbgorY29uc3RleHByIGNvbnN0IGNoYXIgcHJpdmF0ZUtleUtleVtdID0gInByaXYiOwor
Y29uc3RleHByIGNvbnN0IGNoYXIga2V5VHlwZUtleVtdID0gImtleV90eXBlIjsKK2NvbnN0ZXhw
ciBjb25zdCBjaGFyIGtleVNpemVLZXlbXSA9ICJrZXlfc2l6ZSI7Citjb25zdGV4cHIgY29uc3Qg
Y2hhciByZWx5aW5nUGFydHlLZXlbXSA9ICJycCI7Citjb25zdGV4cHIgY29uc3QgY2hhciBhcHBs
aWNhdGlvblRhZ0tleVtdID0gInRhZyI7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmgKaW5kZXggM2ZjMDZlMzUx
MjQwMDM1M2JkZDA2ZTliMzdhNzJmNjYzYjM5MzdmOC4uNzQzMDE3NjkzNzJlNmVjYTg1MDc5ZDUz
YTkzMDc3ZTg4M2ZiMWZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tFcnJvci5oCkBAIC02Myw2ICs2Myw5IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdL
RXJyb3JDb2RlKSB7CiAgICAgV0tFcnJvckphdmFTY3JpcHRJbnZhbGlkRnJhbWVUYXJnZXQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKSwKICAgICBXS0Vycm9yTmF2aWdh
dGlvbkFwcEJvdW5kRG9tYWluIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4w
KSksCiAgICAgV0tFcnJvckphdmFTY3JpcHRBcHBCb3VuZERvbWFpbiBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDExLjApLCBpb3MoMTQuMCkpLAorICAgIFdLRXJyb3JEdXBsaWNhdGVDcmVkZW50aWFs
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSksCisg
ICAgV0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKSwKKyAgICBXS0Vycm9yQ3JlZGVudGlhbE5vdEZvdW5k
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSksCiB9
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSk7CiAKIE5TX0FTU1VNRV9O
T05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRXJyb3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5t
bQppbmRleCBlZjA1ZTBhYjE0NzI4MTcxYzM5OTA3MGVkNjQyOWUzM2E1YTY4YTM2Li4xYzc2Y2U2
YWJhMWI4MWI4Mzc2ZWEwZTc2YTU3OTVlZWI0MTU5ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5tbQpAQCAtODIsNiArODIsMTUgQEAgTlNTdHJpbmcg
KmxvY2FsaXplZERlc2NyaXB0aW9uRm9yRXJyb3JDb2RlKFdLRXJyb3JDb2RlIGVycm9yQ29kZSkK
IAogICAgIGNhc2UgV0tFcnJvckphdmFTY3JpcHRBcHBCb3VuZERvbWFpbjoKICAgICAgICAgcmV0
dXJuIFdFQl9VSV9TVFJJTkcoIkphdmFTY3JpcHQgZXhlY3V0aW9uIHRhcmdldGVkIGEgZnJhbWUg
dGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiIsICJXS0Vycm9ySmF2YVNjcmlwdEFw
cEJvdW5kRG9tYWluIGRlc2NyaXB0aW9uIik7CisKKyAgICBjYXNlIFdLRXJyb3JEdXBsaWNhdGVD
cmVkZW50aWFsOgorICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiVGhpcyBjcmVkZW50aWFs
IGlzIGFscmVhZHkgcHJlc2VudCIsICJXS0Vycm9yRHVwbGljYXRlQ3JlZGVudGlhbCBkZXNjcmlw
dGlvbiIpOworCisgICAgY2FzZSBXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbDoKKyAgICAgICAg
cmV0dXJuIFdFQl9VSV9TVFJJTkcoIlRoaXMgY3JlZGVudGlhbCBpcyBtYWxmb3JtZWQiLCAiV0tF
cnJvck1hbGZvcm1lZENyZWRlbnRpYWwgZGVzY3JpcHRpb24iKTsKKyAgICAgICAgICAgIAorICAg
IGNhc2UgV0tFcnJvckNyZWRlbnRpYWxOb3RGb3VuZDoKKyAgICAgICAgcmV0dXJuIFdFQl9VSV9T
VFJJTkcoIkNyZWRlbnRpYWwgY291bGQgbm90IGJlIGZvdW5kIiwgIldLRXJyb3JDcmVkZW50aWFs
Tm90Rm91bmQgZGVzY3JpcHRpb24iKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5oCmluZGV4IDZiZmE0ODhiMjBmM2Q2MTczNzg4MTRmZmZiNDg2NjUyMWQ4ZWNlMmIuLmI2ODlk
YWMyZDg3YjA4YTcwMmNmOWJhNmFmYWFhNjNlOWRkNTc1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwuaApAQCAtMTE3LDYgKzExNyw5IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4x
NS40KSwgaW9zKDEzLjQpKQogKyAodm9pZCljbGVhckFsbExvY2FsQXV0aGVudGljYXRvckNyZWRl
bnRpYWxzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygxNS4wKSk7CiArICh2b2lk
KXNldFVzZXJuYW1lRm9yTG9jYWxDcmVkZW50aWFsV2l0aElEOihOU0RhdGEgKiljcmVkZW50aWFs
SUQgdXNlcm5hbWU6IChOU1N0cmluZyAqKXVzZXJuYW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTIuMCksIGlvcygxNS4wKSk7CiAKKysgKE5TRGF0YSAqKWV4cG9ydExvY2FsQXV0aGVudGljYXRv
ckNyZWRlbnRpYWxXaXRoSUQ6KE5TRGF0YSAqKWNyZWRlbnRpYWxJRCBlcnJvcjooTlNFcnJvciAq
KillcnJvciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworKyAoTlNEYXRhICopaW1wb3J0TG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbDooTlNE
YXRhICopY3JlZGVudGlhbEJsb2IgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3IgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogKyAoQk9PTClpc1Vz
ZXJWZXJpZnlpbmdQbGF0Zm9ybUF1dGhlbnRpY2F0b3JBdmFpbGFibGUgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMi4wKSwgaW9zKDE1LjApKTsKIAogKyAoTlNEYXRhICopZ2V0Q2xpZW50RGF0YUpT
T05Gb3JBdXRoZW50aWNhdGlvblR5cGU6KF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZSl0eXBlIGNo
YWxsZW5nZTooTlNEYXRhICopY2hhbGxlbmdlIG9yaWdpbjooTlNTdHJpbmcgKilvcmlnaW4gV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggYmI2YThkZWYzZGNlNDQyNDkyNjAyMzM2ZmUzZDJj
YjhhMTJiYTAzNC4uYWEwNmZjODU5ODU5MTU5YjNlY2FjNzQ1NjdiMTg1ZDZkZjg1MGUzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTI4OSw3ICsyODksNyBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TQXJyYXk+IGdldEFsbExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxzSW1wbChO
U1N0cmluZyAqYWNjZQogKyAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilnZXRBbGxMb2NhbEF1
dGhlbnRpY2F0b3JDcmVkZW50aWFscwogewogI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0gICAgcmV0
dXJuIGdldEFsbExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxzSW1wbChTdHJpbmcoV2ViQ29y
ZTo6TG9jYWxBdXRoZW50aWNhdGlvckFjY2Vzc0dyb3VwKSkuYXV0b3JlbGVhc2UoKTsKKyAgICBy
ZXR1cm4gZ2V0QWxsTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbHNJbXBsKFN0cmluZyhXZWJD
b3JlOjpMb2NhbEF1dGhlbnRpY2F0b3JBY2Nlc3NHcm91cCkpLmF1dG9yZWxlYXNlKCk7CiAjZWxz
ZQogICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmCkBAIC0zODgsNiArMzg4LDIwMCBAQCBzdGF0
aWMgUmV0YWluUHRyPE5TQXJyYXk+IGdldEFsbExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxz
SW1wbChOU1N0cmluZyAqYWNjZQogI2VuZGlmCiB9CiAKKysgKE5TRGF0YSAqKWltcG9ydExvY2Fs
QXV0aGVudGljYXRvckNyZWRlbnRpYWw6KE5TRGF0YSAqKWNyZWRlbnRpYWxCbG9iIGVycm9yOihO
U0Vycm9yICoqKWVycm9yCit7CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBhdXRvIGNyZWRl
bnRpYWwgPSBjYm9yOjpDQk9SUmVhZGVyOjpyZWFkKHZlY3RvckZyb21OU0RhdGEoY3JlZGVudGlh
bEJsb2IpKTsKKyAgICBpZiAoIWNyZWRlbnRpYWwgfHwgIWNyZWRlbnRpYWwtPmlzTWFwKCkpIHsK
KyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgKmVycm9yID0gW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCB1
c2VySW5mbzpuaWxdOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRv
JiBjcmVkZW50aWFsTWFwID0gY3JlZGVudGlhbC0+Z2V0TWFwKCk7CisgICAgYXV0byBpdCA9IGNy
ZWRlbnRpYWxNYXAuZmluZChjYm9yOjpDQk9SVmFsdWUoV2ViQ29yZTo6cHJpdmF0ZUtleUtleSkp
OworICAgIGlmIChpdCA9PSBjcmVkZW50aWFsTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzQnl0
ZVN0cmluZygpKSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICplcnJvciA9IFtO
U0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvck1hbGZvcm1l
ZENyZWRlbnRpYWwgdXNlckluZm86bmlsXTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
fQorICAgIGF1dG8gcHJpdmF0ZUtleSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
Qnl0ZXM6aXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCkuZGF0YSgpIGxlbmd0aDppdC0+c2Vjb25k
LmdldEJ5dGVTdHJpbmcoKS5zaXplKCldKTsKKworICAgIGl0ID0gY3JlZGVudGlhbE1hcC5maW5k
KGNib3I6OkNCT1JWYWx1ZShXZWJDb3JlOjprZXlUeXBlS2V5KSk7CisgICAgaWYgKGl0ID09IGNy
ZWRlbnRpYWxNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNJbnRlZ2VyKCkpIHsKKyAgICAgICAg
aWYgKGVycm9yKQorICAgICAgICAgICAgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWlu
OldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCB1c2VySW5mbzpu
aWxdOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgYXV0byBrZXlUeXBlID0g
aXQtPnNlY29uZC5nZXRJbnRlZ2VyKCk7CisKKyAgICBpdCA9IGNyZWRlbnRpYWxNYXAuZmluZChj
Ym9yOjpDQk9SVmFsdWUoV2ViQ29yZTo6a2V5U2l6ZUtleSkpOworICAgIGlmIChpdCA9PSBjcmVk
ZW50aWFsTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzSW50ZWdlcigpKSB7CisgICAgICAgIGlm
IChlcnJvcikKKyAgICAgICAgICAgICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpX
S0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWwgdXNlckluZm86bmls
XTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGF1dG8ga2V5U2l6ZSA9IGl0
LT5zZWNvbmQuZ2V0SW50ZWdlcigpOworCisgICAgaXQgPSBjcmVkZW50aWFsTWFwLmZpbmQoY2Jv
cjo6Q0JPUlZhbHVlKFdlYkNvcmU6OnJlbHlpbmdQYXJ0eUtleSkpOworICAgIGlmIChpdCA9PSBj
cmVkZW50aWFsTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzU3RyaW5nKCkpIHsKKyAgICAgICAg
aWYgKGVycm9yKQorICAgICAgICAgICAgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWlu
OldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCB1c2VySW5mbzpu
aWxdOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgYXV0byBycCA9IGl0LT5z
ZWNvbmQuZ2V0U3RyaW5nKCk7CisKKyAgICBpdCA9IGNyZWRlbnRpYWxNYXAuZmluZChjYm9yOjpD
Qk9SVmFsdWUoV2ViQ29yZTo6YXBwbGljYXRpb25UYWdLZXkpKTsKKyAgICBpZiAoaXQgPT0gY3Jl
ZGVudGlhbE1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc01hcCgpKSB7CisgICAgICAgIGlmIChl
cnJvcikKKyAgICAgICAgICAgICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vy
cm9yRG9tYWluIGNvZGU6V0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWwgdXNlckluZm86bmlsXTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGF1dG8ga2V5VGFnID0gY2Jvcjo6
Q0JPUldyaXRlcjo6d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKGl0LT5zZWNvbmQuZ2V0TWFwKCkpKTsK
KworICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IEB7CisgICAgICAgIC8vIEtleSB0eXBlIHZh
bHVlcyBhcmUgc3RyaW5nIHZhbHVlcyBvZiBudW1iZXJzLCBzdG9yZWQgYXMga0NGTnVtYmVyU0lu
dDY0VHlwZSBpbiBhdHRyaWJ1dGVzLCBidXQgbXVzdCBiZSBwYXNzZWQgYXMgc3RyaW5nIGhlcmUK
KyAgICAgICAgKGlkKWtTZWNBdHRyS2V5VHlwZTogKGlkKVtOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiJWkiLCAoaW50KWtleVR5cGVdLAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczog
KGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlTaXpl
SW5CaXRzOiBAKGtleVNpemUpLAorICAgIH07CisgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51
bGxwdHI7CisgICAgYXV0byBrZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVdpdGhEYXRhKAorICAg
ICAgICBicmlkZ2VfY2FzdChwcml2YXRlS2V5LmdldCgpKSwKKyAgICAgICAgYnJpZGdlX2Nhc3Qo
b3B0aW9ucyksCisgICAgICAgICZlcnJvclJlZgorICAgICkpOworICAgIGlmIChlcnJvclJlZikg
eworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAqZXJyb3IgPSBbTlNFcnJvciBlcnJv
cldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFs
IHVzZXJJbmZvOm5pbF07CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1
dG8gcHVibGljS2V5ID0gYWRvcHRDRihTZWNLZXlDb3B5UHVibGljS2V5KGtleS5nZXQoKSkpOwor
ICAgIGF1dG8gcHVibGljS2V5RGF0YVJlcCA9IGFkb3B0Q0YoU2VjS2V5Q29weUV4dGVybmFsUmVw
cmVzZW50YXRpb24ocHVibGljS2V5LmdldCgpLCAmZXJyb3JSZWYpKTsKKyAgICBpZiAoZXJyb3JS
ZWYpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgKmVycm9yID0gW05TRXJyb3Ig
ZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yTWFsZm9ybWVkQ3JlZGVu
dGlhbCB1c2VySW5mbzpuaWxdOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAg
ICBOU0RhdGEgKm5zUHVibGljS2V5RGF0YSA9IChOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVwLmdl
dCgpOworICAgIGF1dG8gZGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNy
eXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpTSEFfMSk7CisgICAgZGlnZXN0LT5hZGRCeXRlcyhuc1B1
YmxpY0tleURhdGEuYnl0ZXMsIG5zUHVibGljS2V5RGF0YS5sZW5ndGgpOworICAgIGF1dG8gY3Jl
ZGVudGlhbElkID0gZGlnZXN0LT5jb21wdXRlSGFzaCgpOworICAgIGF1dG8gbnNDcmVkZW50aWFs
SWQgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmNyZWRlbnRpYWxJZC5k
YXRhKCkgbGVuZ3RoOmNyZWRlbnRpYWxJZC5zaXplKCldKTsKKworICAgIGF1dG8gcXVlcnkgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5
czoKKyAgICAgICAgKGlkKWtTZWNDbGFzc0tleSwgKGlkKWtTZWNDbGFzcywKKyAgICAgICAgKGlk
KWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLCAoaWQpa1NlY0F0dHJLZXlDbGFzcywKKyAgICAgICAg
KGlkKXJwLCAoaWQpa1NlY0F0dHJMYWJlbCwKKyAgICAgICAgbnNDcmVkZW50aWFsSWQuZ2V0KCks
IChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWwsCisgICAgICAgIEBZRVMsIChpZClrU2VjVXNl
RGF0YVByb3RlY3Rpb25LZXljaGFpbiwKKyAgICAgICAgbmlsCisgICAgXSk7CisgICAgdXBkYXRl
UXVlcnlJZk5lY2Vzc2FyeShxdWVyeS5nZXQoKSk7CisKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBT
ZWNJdGVtQ29weU1hdGNoaW5nKGJyaWRnZV9jYXN0KHF1ZXJ5LmdldCgpKSwgbnVsbHB0cik7Cisg
ICAgaWYgKCFzdGF0dXMpIHsKKyAgICAgICAgLy8gQ3JlZGVudGlhbCB3aXRoIHNhbWUgaWQgYWxy
ZWFkeSBleGlzdHMsIGR1cGxpY2F0ZSBrZXkuCisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAg
ICAgICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6
V0tFcnJvckR1cGxpY2F0ZUNyZWRlbnRpYWwgdXNlckluZm86bmlsXTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBzZWNBdHRyQXBwbGljYXRpb25UYWcgPSBhZG9w
dE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOmtleVRhZy0+ZGF0YSgpIGxlbmd0aDpr
ZXlUYWctPnNpemUoKV0pOworICAgIE5TRGljdGlvbmFyeSAqYWRkUXVlcnkgPSBAeworICAgICAg
ICAoaWQpa1NlY1ZhbHVlUmVmOiAoaWQpa2V5LmdldCgpLAorICAgICAgICAoaWQpa1NlY0F0dHJL
ZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAorICAgICAgICAoaWQpa1NlY0F0
dHJMYWJlbDogcnAsCisgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBzZWNBdHRy
QXBwbGljYXRpb25UYWcuZ2V0KCksCisgICAgICAgIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25L
ZXljaGFpbjogQFlFUywKKyAgICAgICAgKGlkKWtTZWNBdHRyQWNjZXNzaWJsZTogKGlkKWtTZWNB
dHRyQWNjZXNzaWJsZUFmdGVyRmlyc3RVbmxvY2sKKyAgICB9OworICAgIHN0YXR1cyA9IFNlY0l0
ZW1BZGQoYnJpZGdlX2Nhc3QoYWRkUXVlcnkpLCBOVUxMKTsKKyAgICBpZiAoc3RhdHVzKSB7Cisg
ICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86bmlsXTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIG5zQ3JlZGVudGlh
bElkLmF1dG9yZWxlYXNlKCk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmIC8v
IEVOQUJMRShXRUJfQVVUSE4pCit9CisKKysgKE5TRGF0YSAqKWV4cG9ydExvY2FsQXV0aGVudGlj
YXRvckNyZWRlbnRpYWxXaXRoSUQ6KE5TRGF0YSAqKWNyZWRlbnRpYWxJRCBlcnJvcjooTlNFcnJv
ciAqKillcnJvcgoreworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgYXV0byBxdWVyeSA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlz
OgorICAgICAgICAoaWQpa1NlY0NsYXNzS2V5LCAoaWQpa1NlY0NsYXNzLAorICAgICAgICBjcmVk
ZW50aWFsSUQsIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWwsCisgICAgICAgIChpZClrU2Vj
QXR0cktleUNsYXNzUHJpdmF0ZSwgKGlkKWtTZWNBdHRyS2V5Q2xhc3MsCisgICAgICAgIEBZRVMs
IChpZClrU2VjUmV0dXJuUmVmLAorICAgICAgICBAWUVTLCAoaWQpa1NlY1VzZURhdGFQcm90ZWN0
aW9uS2V5Y2hhaW4sCisgICAgICAgIG5pbAorICAgIF0pOworICAgIHVwZGF0ZVF1ZXJ5SWZOZWNl
c3NhcnkocXVlcnkuZ2V0KCkpOworICAgIENGVHlwZVJlZiBwcml2YXRlS2V5UmVmID0gbnVsbHB0
cjsKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKGJyaWRnZV9jYXN0
KHF1ZXJ5LmdldCgpKSwgJnByaXZhdGVLZXlSZWYpOworICAgIGlmIChzdGF0dXMgJiYgc3RhdHVz
ICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkgeworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAg
ICAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldL
RXJyb3JDcmVkZW50aWFsTm90Rm91bmQgdXNlckluZm86bmlsXTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorICAgIGF1dG8gcHJpdmF0ZUtleSA9IGFkb3B0Q0YocHJpdmF0ZUtleVJl
Zik7CisgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7CisgICAgYXV0byBwcml2YXRl
S2V5UmVwID0gYWRvcHRDRihTZWNLZXlDb3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbigoX19icmlk
Z2UgU2VjS2V5UmVmKSgoaWQpcHJpdmF0ZUtleVJlZiksICZlcnJvclJlZikpOworICAgIGF1dG8g
cmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKKyAgICBpZiAoZXJyb3JSZWYpIHsKKyAg
ICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRo
RG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yQ3JlZGVudGlhbE5vdEZvdW5kIHVzZXJJ
bmZvOm5pbF07CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICAgICAgCisgICAg
W3F1ZXJ5IHJlbW92ZU9iamVjdEZvcktleTooaWQpa1NlY1JldHVyblJlZl07CisgICAgW3F1ZXJ5
IHNldE9iamVjdDogQFlFUyBmb3JLZXk6KGlkKWtTZWNSZXR1cm5BdHRyaWJ1dGVzXTsKKyAgICBD
RlR5cGVSZWYgYXR0cmlidXRlc0FycmF5UmVmID0gbnVsbHB0cjsKKyAgICBzdGF0dXMgPSBTZWNJ
dGVtQ29weU1hdGNoaW5nKGJyaWRnZV9jYXN0KHF1ZXJ5LmdldCgpKSwgJmF0dHJpYnV0ZXNBcnJh
eVJlZik7CisgICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKSB7
CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgICplcnJvciA9IFtOU0Vycm9yIGVycm9y
V2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tFcnJvckNyZWRlbnRpYWxOb3RGb3VuZCB1
c2VySW5mbzpuaWxdOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgTlNEaWN0
aW9uYXJ5ICphdHRyaWJ1dGVzID0gKF9fYnJpZGdlIE5TRGljdGlvbmFyeSAqKWF0dHJpYnV0ZXNB
cnJheVJlZjsKKworICAgIGludDY0X3Qga2V5VHlwZSwga2V5U2l6ZTsKKyAgICBpZiAoIUNGTnVt
YmVyR2V0VmFsdWUoKF9fYnJpZGdlIENGTnVtYmVyUmVmKWF0dHJpYnV0ZXNbYnJpZGdlX2lkX2Nh
c3Qoa1NlY0F0dHJLZXlUeXBlKV0sIGtDRk51bWJlclNJbnQ2NFR5cGUsICZrZXlUeXBlKSkgewor
ICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldp
dGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsIHVz
ZXJJbmZvOm5pbF07CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBpZiAoIUNG
TnVtYmVyR2V0VmFsdWUoKF9fYnJpZGdlIENGTnVtYmVyUmVmKWF0dHJpYnV0ZXNbYnJpZGdlX2lk
X2Nhc3Qoa1NlY0F0dHJLZXlTaXplSW5CaXRzKV0sIGtDRk51bWJlclNJbnQ2NFR5cGUsICZrZXlT
aXplKSkgeworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAqZXJyb3IgPSBbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOldLRXJyb3JNYWxmb3JtZWRDcmVk
ZW50aWFsIHVzZXJJbmZvOm5pbF07CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAg
ICAKKyAgICBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGNyZWRlbnRpYWxNYXA7CisgICAgY3Jl
ZGVudGlhbE1hcFtjYm9yOjpDQk9SVmFsdWUoV2ViQ29yZTo6cHJpdmF0ZUtleUtleSldID0gY2Jv
cjo6Q0JPUlZhbHVlKFdlYkNvcmU6OnRvQnVmZmVyU291cmNlKGJyaWRnZV9pZF9jYXN0KHByaXZh
dGVLZXlSZXAuZ2V0KCkpKSk7CisgICAgY3JlZGVudGlhbE1hcFtjYm9yOjpDQk9SVmFsdWUoV2Vi
Q29yZTo6a2V5VHlwZUtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGtleVR5cGUpOworICAgIGNyZWRl
bnRpYWxNYXBbY2Jvcjo6Q0JPUlZhbHVlKFdlYkNvcmU6OmtleVNpemVLZXkpXSA9IGNib3I6OkNC
T1JWYWx1ZShrZXlTaXplKTsKKyAgICBjcmVkZW50aWFsTWFwW2Nib3I6OkNCT1JWYWx1ZShXZWJD
b3JlOjpyZWx5aW5nUGFydHlLZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShTdHJpbmcoYXR0cmlidXRl
c1ticmlkZ2VfaWRfY2FzdChrU2VjQXR0ckxhYmVsKV0pKTsKKyAgICBhdXRvIGRlY29kZWRSZXNw
b25zZSA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQodmVjdG9yRnJvbU5TRGF0YShhdHRyaWJ1dGVz
W2JyaWRnZV9pZF9jYXN0KGtTZWNBdHRyQXBwbGljYXRpb25UYWcpXSkpOworICAgIGlmICghZGVj
b2RlZFJlc3BvbnNlIHx8ICFkZWNvZGVkUmVzcG9uc2UtPmlzTWFwKCkpIHsKKyAgICAgICAgaWYg
KGVycm9yKQorICAgICAgICAgICAgKmVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOldL
RXJyb3JEb21haW4gY29kZTpXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCB1c2VySW5mbzpuaWxd
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY3JlZGVudGlhbE1hcFtjYm9y
OjpDQk9SVmFsdWUoV2ViQ29yZTo6YXBwbGljYXRpb25UYWdLZXkpXSA9IGNib3I6OkNCT1JWYWx1
ZShXVEZNb3ZlKCpkZWNvZGVkUmVzcG9uc2UpKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRDcmVkZW50
aWFsID0gY2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoY3Jl
ZGVudGlhbE1hcCkpKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdp
dGhCeXRlczpzZXJpYWxpemVkQ3JlZGVudGlhbC52YWx1ZSgpLmRhdGEoKSBsZW5ndGg6c2VyaWFs
aXplZENyZWRlbnRpYWwudmFsdWUoKS5zaXplKCldKS5hdXRvcmVsZWFzZSgpOworI2Vsc2UKKyAg
ICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQorfQorCiAtICh2
b2lkKWNhbmNlbAogewogI2lmIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0
b3IubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbEF1dGhlbnRpY2F0b3IubW0KaW5kZXggNDZkMDAwMzJjN2JkZjBjMjk0ZGFjNjJkYjQyYTk3
YzBkMjc4ZGI4OC4uZDIyYTJhZjFiOWM3Y2FlNzc4YTM0NDY4NTI1YjM1YjcxYjhlNTY1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtMTc3LDcgKzE3Nyw3
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjbGVhckFsbENyZWRlbnRpYWxzKCkKICAgICBh
dXRvIHF1ZXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsK
ICAgICBbcXVlcnkgc2V0RGljdGlvbmFyeTpAewogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQp
a1NlY0NsYXNzS2V5LAotICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NHcm91cDogKGlkKVN0cmlu
ZyhMb2NhbEF1dGhlbnRpY2F0aW9yQWNjZXNzR3JvdXApLAorICAgICAgICAoaWQpa1NlY0F0dHJB
Y2Nlc3NHcm91cDogKGlkKVN0cmluZyhMb2NhbEF1dGhlbnRpY2F0b3JBY2Nlc3NHcm91cCksCiAg
ICAgICAgIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFpbjogQFlFUwogICAgIH1dOwog
ICAgIHVwZGF0ZVF1ZXJ5SWZOZWNlc3NhcnkocXVlcnkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IGEwNWYzMDUyMjI5OTM4ZTNmMWIwYTkyZjE3NDM3ZWYz
OWVhYmZjNTAuLmU0ZTk3OWY0OWRhODhlZjkyY2MyZDYyMjY2MTM1ZTkxOTA0OTA4ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50
aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KQEAgLTE3MCw3ICsxNzAsNyBAQCBSZXRh
aW5QdHI8U2VjS2V5UmVmPiBMb2NhbENvbm5lY3Rpb246OmNyZWF0ZUNyZWRlbnRpYWxQcml2YXRl
S2V5KExBQ29udGV4dCAqY29udAogICAgIFJldGFpblB0ciBwcml2YXRlS2V5QXR0cmlidXRlcyA9
IEB7CiAgICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc0NvbnRyb2w6IChpZClhY2Nlc3NDb250cm9s
UmVmLAogICAgICAgICAoaWQpa1NlY0F0dHJJc1Blcm1hbmVudDogQFlFUywKLSAgICAgICAgKGlk
KWtTZWNBdHRyQWNjZXNzR3JvdXA6IChpZClTdHJpbmcoTG9jYWxBdXRoZW50aWNhdGlvckFjY2Vz
c0dyb3VwKSwKKyAgICAgICAgKGlkKWtTZWNBdHRyQWNjZXNzR3JvdXA6IChpZClTdHJpbmcoTG9j
YWxBdXRoZW50aWNhdG9yQWNjZXNzR3JvdXApLAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDog
c2VjQXR0ckxhYmVsLAogICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogc2VjQXR0
ckFwcGxpY2F0aW9uVGFnLAogICAgIH07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZjExMDhhNzNmYmY1NGU0NmQ4YzEyM2U4ZDQ5NWY3NTM3ZTkz
YjEzZi4uNjM0MTg3MDc4MGNlMjdiYTlmYmU0ZWMyYjM2YjM4MDE2NzU5N2EwMCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDIyLTAxLTI1ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBb
V2ViQXV0aG5dIFByb3ZpZGUgU1BJIHRvIGV4cG9ydC9pbXBvcnQgbG9jYWwgY3JlZGVudGlhbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDExMgor
ICAgICAgICByZGFyOi8vODQ4MjIwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIFNQSSB0byBpbXBvcnQgLyBleHBvcnQgbG9j
YWwgd2ViYXV0aG4gY3JlZGVudGlhbHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKTogTmV3IHRlc3RzIGZvciBpbXBvcnQvZXhwb3J0CisKIDIwMjItMDEt
MjUgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIERpc2Fi
bGUgaW5wdXQtc2VjdXJpdHkgQ1NTIHByb3BlcnR5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW0KaW5kZXggMzM3NjZlMDlmZDVmOTdkYjRmMzU2MWQzOTRmNGY4ZjcyZjIwODhkOS4u
ODhjMGFmOWI3NDQ0YzAwYjI5ZTU5OThmMDBhNDdlNmJlMDY3OGJkNCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjIyOCw2ICsyMjI4LDYxIEBAIFRFU1QoV2ViQXV0
aGVudGljYXRpb25QYW5lbCwgVXBkYXRlQ3JlZGVudGlhbFVzZXJuYW1lKQogICAgIGNsZWFuVXBL
ZXljaGFpbigiZXhhbXBsZS5jb20iKTsKIH0KIAorVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBFeHBvcnRJbXBvcnRDcmVkZW50aWFsKQoreworICAgIHJlc2V0KCk7CisKKyAgICBhZGRLZXlU
b0tleWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICJleGFtcGxlLmNvbSIsIHRlc3RV
c2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKworICAgIGF1dG8gKmNyZWRlbnRpYWxzID0gW19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwgZ2V0QWxsTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbHNX
aXRoQWNjZXNzR3JvdXA6QCJjb20uYXBwbGUuVGVzdFdlYktpdEFQSSJdOworICAgIEVYUEVDVF9O
T1RfTlVMTChjcmVkZW50aWFscyk7CisgICAgRVhQRUNUX0VRKFtjcmVkZW50aWFscyBjb3VudF0s
IDFsdSk7CisKKyAgICBFWFBFQ1RfTk9UX05VTEwoW2NyZWRlbnRpYWxzIGZpcnN0T2JqZWN0XSk7
CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byBleHBvcnRlZEtleSA9IFtfV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsIGV4cG9ydExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxX
aXRoSUQ6W2NyZWRlbnRpYWxzIGZpcnN0T2JqZWN0XVtfV0tMb2NhbEF1dGhlbnRpY2F0b3JDcmVk
ZW50aWFsSURLZXldIGVycm9yOiZlcnJvcl07CisgICAgCisgICAgY2xlYW5VcEtleWNoYWluKCJl
eGFtcGxlLmNvbSIpOworCisgICAgYXV0byBjcmVkZW50aWFsSWQgPSBbX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbCBpbXBvcnRMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsOmV4cG9ydGVkS2V5
IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX1dLX1NUUkVRKFtbY3JlZGVudGlhbHMgZmlyc3RP
YmplY3RdW19XS0xvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxJREtleV0gYmFzZTY0RW5jb2Rl
ZFN0cmluZ1dpdGhPcHRpb25zOjBdLCBbY3JlZGVudGlhbElkIGJhc2U2NEVuY29kZWRTdHJpbmdX
aXRoT3B0aW9uczowXSk7CisKKyAgICBjbGVhblVwS2V5Y2hhaW4oImV4YW1wbGUuY29tIik7Cit9
CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgRXhwb3J0SW1wb3J0RHVwbGljYXRlQ3Jl
ZGVudGlhbCkKK3sKKyAgICByZXNldCgpOworICAgIGNsZWFuVXBLZXljaGFpbigiIik7CisKKyAg
ICBhZGRLZXlUb0tleWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICJleGFtcGxlLmNv
bSIsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKworICAgIGF1dG8gKmNyZWRlbnRpYWxz
ID0gW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZ2V0QWxsTG9jYWxBdXRoZW50aWNhdG9yQ3Jl
ZGVudGlhbHNXaXRoQWNjZXNzR3JvdXA6QCJjb20uYXBwbGUuVGVzdFdlYktpdEFQSSJdOworICAg
IEVYUEVDVF9OT1RfTlVMTChjcmVkZW50aWFscyk7CisgICAgRVhQRUNUX0VRKFtjcmVkZW50aWFs
cyBjb3VudF0sIDFsdSk7CisKKyAgICBFWFBFQ1RfTk9UX05VTEwoW2NyZWRlbnRpYWxzIGZpcnN0
T2JqZWN0XSk7CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byBleHBvcnRlZEtl
eSA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGV4cG9ydExvY2FsQXV0aGVudGljYXRvckNy
ZWRlbnRpYWxXaXRoSUQ6W2NyZWRlbnRpYWxzIGZpcnN0T2JqZWN0XVtfV0tMb2NhbEF1dGhlbnRp
Y2F0b3JDcmVkZW50aWFsSURLZXldIGVycm9yOiZlcnJvcl07CisKKyAgICBhdXRvIGNyZWRlbnRp
YWxJZCA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGltcG9ydExvY2FsQXV0aGVudGljYXRv
ckNyZWRlbnRpYWw6ZXhwb3J0ZWRLZXkgZXJyb3I6JmVycm9yXTsKKyAgICBFWFBFQ1RfRVEoY3Jl
ZGVudGlhbElkLCBuaWwpOworICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBXS0Vycm9yRHVwbGlj
YXRlQ3JlZGVudGlhbCk7CisKKyAgICBjbGVhblVwS2V5Y2hhaW4oImV4YW1wbGUuY29tIik7Cit9
CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgSW1wb3J0TWFsZm9ybWVkQ3JlZGVudGlh
bCkKK3sKKyAgICByZXNldCgpOworCisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgYXV0
byBjcmVkZW50aWFsSWQgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBpbXBvcnRMb2NhbEF1
dGhlbnRpY2F0b3JDcmVkZW50aWFsOmFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFz
ZTY0RW5jb2RlZFN0cmluZzp0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCBvcHRpb25zOjBdKS5n
ZXQoKSBlcnJvcjomZXJyb3JdOworCisgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIFdLRXJyb3JN
YWxmb3JtZWRDcmVkZW50aWFsKTsKKyAgICBFWFBFQ1RfRVEoY3JlZGVudGlhbElkLCBuaWwpOwor
fQorCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiB7
CiAgICAgcmVzZXQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450088</attachid>
            <date>2022-01-26 17:26:32 -0800</date>
            <delta_ts>2022-01-26 17:46:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234112-20220126172632.patch</filename>
            <type>text/plain</type>
            <size>21294</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhlOGJkNDUwYThkODM2
NmFhMmIzNTc3NmVhNDVjZDhiOWVmNDQ4My4uMWI3YjEwYTM4ZDAzMTBhYzE0MjM4YzNiMWU2OTgz
YjRlNTE4NTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAxLTI2ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFByb3ZpZGUg
U1BJIHRvIGV4cG9ydC9pbXBvcnQgbG9jYWwgY3JlZGVudGlhbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDExMgorICAgICAgICByZGFyOi8vODQ4
MjIwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGFkZHMgU1BJIHRvIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgdG8gcHJvdmlk
ZSB0aGUgYWJpbGl0eQorICAgICAgICB0byBpbXBvcnQgLyBleHBvcnQgbG9jYWwgY3JlZGVudGlh
bHMuIENvbnN0YW50cyBhcmUgdXNlZCBkdXJpbmcgc2VyaWFsaXphdGlvbgorICAgICAgICBhcyBr
ZXlzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0
YW50cy5oOiBjb25zdGFudHMgZm9yIGNyZWRlbnRpYWwgc2VyaWFsaXphdGlvbgorCiAyMDIyLTAx
LTI2ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyMjgxMzA2KTogTm9uLWJyZWFraW5nIHNwYWNlIGluY29ycmVjdGx5IGNvbGxhcHNlZCB3aGVu
IHdlYmtpdC1uYnNwLW1vZGUgaXMgc2V0IHRvICJzcGFjZSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjlhZGY0MzU0
ODNmMTRjOGYwZjkxMmFlOTAxMmFkYmFkYTZiNzBiZC4uZTExOWIwNGNmM2JhNGVlNWYwYTg2ODY3
MDgzMDIxMDM5MmFiYWUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wMS0yNiAg
SiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBQcm92
aWRlIFNQSSB0byBleHBvcnQvaW1wb3J0IGxvY2FsIGNyZWRlbnRpYWxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxMTIKKyAgICAgICAgcmRhcjov
Lzg0ODIyMDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIG5l
dyBTUEkgdG8gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIHRvIGltcG9ydCBhbmQgZXhwb3J0
IGxvY2FsCisgICAgICAgIHdlYmF1dGhuIGNyZWRlbnRpYWxzLiBDQk9SIGlzIHVzZWQgZm9yIHNl
cmlhbGl6YXRpb24uIFdLRXJyb3JzIGFyZSB1c2VkIHRvIGRpZmZlcmVudGlhdGUKKyAgICAgICAg
YmV0d2VlbiBtYWxmb3JtZWQgdnMgZHVwbGljYXRlIGtleXMgZHVyaW5nIGltcG9ydC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tFcnJvci5tbToKKyAgICAgICAgKGxvY2FsaXplZERlc2NyaXB0aW9uRm9y
RXJyb3JDb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgICgrW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwg
aW1wb3J0TG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbDplcnJvcjpdKToKKyAgICAgICAgKCtb
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBleHBvcnRMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50
aWFsV2l0aElEOmVycm9yOl0pOgorCiAyMDIyLTAxLTI2ICBBbGV4YW5kZXIgTWlraGF5bGVua28g
IDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUSzNdIFBpbmNoIHpvb21pbmcgZnJvbSBh
IGxpbmsgYWN0aXZhdGVzIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKaW5kZXggODRhNzdiZWM3
YmEyYTNjOTlhNzBjMzA0MzQyZDkxYTRmMTk3OTFhNC4uOTYyNjFlMjc1MjhiZGEwZmJjYTkzZGQz
ZjQ3OTBmYzEzMjNlOGYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaApAQCAtNzcsOCArNzcs
MTggQEAgZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSA6IGJvb2wgewogICAgIEdldAogfTsKIAor
Ly8gcmRhcjovLzg4MTA0MDQ1IC0gUmVtb3ZlIG9uY2Ugc3RhZ2VkIGNoYW5nZSBjb21wbGV0ZWQK
IGNvbnN0IGNoYXIgTG9jYWxBdXRoZW50aWNhdGlvckFjY2Vzc0dyb3VwW10gPSAiY29tLmFwcGxl
LndlYmtpdC53ZWJhdXRobiI7CiAKK2NvbnN0ZXhwciBjb25zdCBjaGFyIExvY2FsQXV0aGVudGlj
YXRvckFjY2Vzc0dyb3VwW10gPSAiY29tLmFwcGxlLndlYmtpdC53ZWJhdXRobiI7CisKKy8vIENy
ZWRlbnRpYWwgc2VyaWFsaXphdGlvbgorY29uc3RleHByIGNvbnN0IGNoYXIgcHJpdmF0ZUtleUtl
eVtdID0gInByaXYiOworY29uc3RleHByIGNvbnN0IGNoYXIga2V5VHlwZUtleVtdID0gImtleV90
eXBlIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFyIGtleVNpemVLZXlbXSA9ICJrZXlfc2l6ZSI7Citj
b25zdGV4cHIgY29uc3QgY2hhciByZWx5aW5nUGFydHlLZXlbXSA9ICJycCI7Citjb25zdGV4cHIg
Y29uc3QgY2hhciBhcHBsaWNhdGlvblRhZ0tleVtdID0gInRhZyI7CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogbmFtZXNwYWNlIFdlYkF1dGhuIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tFcnJvci5oCmluZGV4IDNmYzA2ZTM1MTI0MDAzNTNiZGQwNmU5YjM3YTcy
ZjY2M2IzOTM3ZjguLjc0MzAxNzY5MzcyZTZlY2E4NTA3OWQ1M2E5MzA3N2U4ODNmYjFmZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IuaApAQCAtNjMsNiAr
NjMsOSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0Vycm9yQ29kZSkgewogICAgIFdL
RXJyb3JKYXZhU2NyaXB0SW52YWxpZEZyYW1lVGFyZ2V0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTEuMCksIGlvcygxNC4wKSksCiAgICAgV0tFcnJvck5hdmlnYXRpb25BcHBCb3VuZERvbWFpbiBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpLAogICAgIFdLRXJyb3JKYXZh
U2NyaXB0QXBwQm91bmREb21haW4gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0
LjApKSwKKyAgICBXS0Vycm9yRHVwbGljYXRlQ3JlZGVudGlhbCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAorICAgIFdLRXJyb3JNYWxmb3JtZWRD
cmVkZW50aWFsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSksCisgICAgV0tFcnJvckNyZWRlbnRpYWxOb3RGb3VuZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAogfSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEwKSwgaW9zKDguMCkpOwogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IubW0KaW5kZXggZWYwNWUwYWIxNDcy
ODE3MWMzOTkwNzBlZDY0MjllMzNhNWE2OGEzNi4uMWM3NmNlNmFiYTFiODFiODM3NmVhMGU3NmE1
Nzk1ZWViNDE1OWY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRXJyb3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
RXJyb3IubW0KQEAgLTgyLDYgKzgyLDE1IEBAIE5TU3RyaW5nICpsb2NhbGl6ZWREZXNjcmlwdGlv
bkZvckVycm9yQ29kZShXS0Vycm9yQ29kZSBlcnJvckNvZGUpCiAKICAgICBjYXNlIFdLRXJyb3JK
YXZhU2NyaXB0QXBwQm91bmREb21haW46CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJK
YXZhU2NyaXB0IGV4ZWN1dGlvbiB0YXJnZXRlZCBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFw
cC1ib3VuZCBkb21haW4iLCAiV0tFcnJvckphdmFTY3JpcHRBcHBCb3VuZERvbWFpbiBkZXNjcmlw
dGlvbiIpOworCisgICAgY2FzZSBXS0Vycm9yRHVwbGljYXRlQ3JlZGVudGlhbDoKKyAgICAgICAg
cmV0dXJuIFdFQl9VSV9TVFJJTkcoIlRoaXMgY3JlZGVudGlhbCBpcyBhbHJlYWR5IHByZXNlbnQi
LCAiV0tFcnJvckR1cGxpY2F0ZUNyZWRlbnRpYWwgZGVzY3JpcHRpb24iKTsKKworICAgIGNhc2Ug
V0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWw6CisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
KCJUaGlzIGNyZWRlbnRpYWwgaXMgbWFsZm9ybWVkIiwgIldLRXJyb3JNYWxmb3JtZWRDcmVkZW50
aWFsIGRlc2NyaXB0aW9uIik7CisgICAgICAgICAgICAKKyAgICBjYXNlIFdLRXJyb3JDcmVkZW50
aWFsTm90Rm91bmQ6CisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJDcmVkZW50aWFsIGNv
dWxkIG5vdCBiZSBmb3VuZCIsICJXS0Vycm9yQ3JlZGVudGlhbE5vdEZvdW5kIGRlc2NyaXB0aW9u
Iik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAppbmRleCA2YmZhNDg4YjIw
ZjNkNjE3Mzc4ODE0ZmZmYjQ4NjY1MjFkOGVjZTJiLi5iNjg5ZGFjMmQ4N2IwOGE3MDJjZjliYTZh
ZmFhYTYzZTlkZDU3NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKQEAgLTExNyw2ICsx
MTcsOSBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSkKICsg
KHZvaWQpY2xlYXJBbGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFscyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogKyAodm9pZClzZXRVc2VybmFtZUZvckxvY2Fs
Q3JlZGVudGlhbFdpdGhJRDooTlNEYXRhICopY3JlZGVudGlhbElEIHVzZXJuYW1lOiAoTlNTdHJp
bmcgKil1c2VybmFtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwog
CisrIChOU0RhdGEgKilleHBvcnRMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsV2l0aElEOihO
U0RhdGEgKiljcmVkZW50aWFsSUQgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3IgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKysgKE5TRGF0YSAqKWlt
cG9ydExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWw6KE5TRGF0YSAqKWNyZWRlbnRpYWxCbG9i
IGVycm9yOihOU0Vycm9yICoqKWVycm9yIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKICsgKEJPT0wpaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygx
NS4wKSk7CiAKICsgKE5TRGF0YSAqKWdldENsaWVudERhdGFKU09ORm9yQXV0aGVudGljYXRpb25U
eXBlOihfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpdHlwZSBjaGFsbGVuZ2U6KE5TRGF0YSAqKWNo
YWxsZW5nZSBvcmlnaW46KE5TU3RyaW5nICopb3JpZ2luIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CmluZGV4IGJiNmE4ZGVmM2RjZTQ0MjQ5MjYwMjMzNmZlM2QyY2I4YTEyYmEwMzQuLjc3ZWE4ZDNm
ZTY2Nzc0NmVkYTBkMTJlOTVkMTkyYzBmNzQ4ZGVjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCkBAIC0yODksNyArMjg5LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBnZXRB
bGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsc0ltcGwoTlNTdHJpbmcgKmFjY2UKICsgKE5T
QXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopZ2V0QWxsTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlh
bHMKIHsKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIHJldHVybiBnZXRBbGxMb2NhbEF1dGhl
bnRpY2F0b3JDcmVkZW50aWFsc0ltcGwoU3RyaW5nKFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRp
b3JBY2Nlc3NHcm91cCkpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGdldEFsbExvY2FsQXV0
aGVudGljYXRvckNyZWRlbnRpYWxzSW1wbChTdHJpbmcoV2ViQ29yZTo6TG9jYWxBdXRoZW50aWNh
dG9yQWNjZXNzR3JvdXApKS5hdXRvcmVsZWFzZSgpOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0
cjsKICNlbmRpZgpAQCAtMzg4LDYgKzM4OCwxOTAgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5
PiBnZXRBbGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsc0ltcGwoTlNTdHJpbmcgKmFjY2UK
ICNlbmRpZgogfQogCitzdGF0aWMgdm9pZCBjcmVhdGVOU0Vycm9yRnJvbVdLRXJyb3JJZk5lY2Vz
c2FyeShOU0Vycm9yICoqZXJyb3IsIFdLRXJyb3JDb2RlIGVycm9yQ29kZSkKK3sKKyAgICBpZiAo
ZXJyb3IpCisgICAgICAgICplcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9y
RG9tYWluIGNvZGU6IGVycm9yQ29kZSB1c2VySW5mbzpuaWxdOworfQorCisrIChOU0RhdGEgKilp
bXBvcnRMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsOihOU0RhdGEgKiljcmVkZW50aWFsQmxv
YiBlcnJvcjooTlNFcnJvciAqKillcnJvcgoreworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAg
YXV0byBjcmVkZW50aWFsID0gY2Jvcjo6Q0JPUlJlYWRlcjo6cmVhZCh2ZWN0b3JGcm9tTlNEYXRh
KGNyZWRlbnRpYWxCbG9iKSk7CisgICAgaWYgKCFjcmVkZW50aWFsIHx8ICFjcmVkZW50aWFsLT5p
c01hcCgpKSB7CisgICAgICAgIGNyZWF0ZU5TRXJyb3JGcm9tV0tFcnJvcklmTmVjZXNzYXJ5KGVy
cm9yLCBXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIGF1dG8mIGNyZWRlbnRpYWxNYXAgPSBjcmVkZW50aWFsLT5nZXRNYXAo
KTsKKyAgICBhdXRvIGl0ID0gY3JlZGVudGlhbE1hcC5maW5kKGNib3I6OkNCT1JWYWx1ZShXZWJD
b3JlOjpwcml2YXRlS2V5S2V5KSk7CisgICAgaWYgKGl0ID09IGNyZWRlbnRpYWxNYXAuZW5kKCkg
fHwgIWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkpIHsKKyAgICAgICAgY3JlYXRlTlNFcnJvckZy
b21XS0Vycm9ySWZOZWNlc3NhcnkoZXJyb3IsIFdLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsKTsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGF1dG8gcHJpdmF0ZUtleSA9IGFk
b3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6aXQtPnNlY29uZC5nZXRCeXRlU3Ry
aW5nKCkuZGF0YSgpIGxlbmd0aDppdC0+c2Vjb25kLmdldEJ5dGVTdHJpbmcoKS5zaXplKCldKTsK
KworICAgIGl0ID0gY3JlZGVudGlhbE1hcC5maW5kKGNib3I6OkNCT1JWYWx1ZShXZWJDb3JlOjpr
ZXlUeXBlS2V5KSk7CisgICAgaWYgKGl0ID09IGNyZWRlbnRpYWxNYXAuZW5kKCkgfHwgIWl0LT5z
ZWNvbmQuaXNJbnRlZ2VyKCkpIHsKKyAgICAgICAgY3JlYXRlTlNFcnJvckZyb21XS0Vycm9ySWZO
ZWNlc3NhcnkoZXJyb3IsIFdLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIGF1dG8ga2V5VHlwZSA9IGl0LT5zZWNvbmQuZ2V0SW50
ZWdlcigpOworCisgICAgaXQgPSBjcmVkZW50aWFsTWFwLmZpbmQoY2Jvcjo6Q0JPUlZhbHVlKFdl
YkNvcmU6OmtleVNpemVLZXkpKTsKKyAgICBpZiAoaXQgPT0gY3JlZGVudGlhbE1hcC5lbmQoKSB8
fCAhaXQtPnNlY29uZC5pc0ludGVnZXIoKSkgeworICAgICAgICBjcmVhdGVOU0Vycm9yRnJvbVdL
RXJyb3JJZk5lY2Vzc2FyeShlcnJvciwgV0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWwpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgYXV0byBrZXlTaXplID0gaXQtPnNlY29u
ZC5nZXRJbnRlZ2VyKCk7CisKKyAgICBpdCA9IGNyZWRlbnRpYWxNYXAuZmluZChjYm9yOjpDQk9S
VmFsdWUoV2ViQ29yZTo6cmVseWluZ1BhcnR5S2V5KSk7CisgICAgaWYgKGl0ID09IGNyZWRlbnRp
YWxNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNTdHJpbmcoKSkgeworICAgICAgICBjcmVhdGVO
U0Vycm9yRnJvbVdLRXJyb3JJZk5lY2Vzc2FyeShlcnJvciwgV0tFcnJvck1hbGZvcm1lZENyZWRl
bnRpYWwpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgYXV0byBycCA9IGl0
LT5zZWNvbmQuZ2V0U3RyaW5nKCk7CisKKyAgICBpdCA9IGNyZWRlbnRpYWxNYXAuZmluZChjYm9y
OjpDQk9SVmFsdWUoV2ViQ29yZTo6YXBwbGljYXRpb25UYWdLZXkpKTsKKyAgICBpZiAoaXQgPT0g
Y3JlZGVudGlhbE1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc01hcCgpKSB7CisgICAgICAgIGNy
ZWF0ZU5TRXJyb3JGcm9tV0tFcnJvcklmTmVjZXNzYXJ5KGVycm9yLCBXS0Vycm9yTWFsZm9ybWVk
Q3JlZGVudGlhbCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBhdXRvIGtl
eVRhZyA9IGNib3I6OkNCT1JXcml0ZXI6OndyaXRlKGNib3I6OkNCT1JWYWx1ZShpdC0+c2Vjb25k
LmdldE1hcCgpKSk7CisKKyAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMgPSBAeworICAgICAgICAv
LyBLZXkgdHlwZSB2YWx1ZXMgYXJlIHN0cmluZyB2YWx1ZXMgb2YgbnVtYmVycywgc3RvcmVkIGFz
IGtDRk51bWJlclNJbnQ2NFR5cGUgaW4gYXR0cmlidXRlcywgYnV0IG11c3QgYmUgcGFzc2VkIGFz
IHN0cmluZyBoZXJlCisgICAgICAgIChpZClrU2VjQXR0cktleVR5cGU6IChpZClbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiVpIiwgKGludClrZXlUeXBlXSwKKyAgICAgICAgKGlkKWtTZWNB
dHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKKyAgICAgICAgKGlkKWtT
ZWNBdHRyS2V5U2l6ZUluQml0czogQChrZXlTaXplKSwKKyAgICB9OworICAgIENGRXJyb3JSZWYg
ZXJyb3JSZWYgPSBudWxscHRyOworICAgIGF1dG8ga2V5ID0gYWRvcHRDRihTZWNLZXlDcmVhdGVX
aXRoRGF0YSgKKyAgICAgICAgYnJpZGdlX2Nhc3QocHJpdmF0ZUtleS5nZXQoKSksCisgICAgICAg
IGJyaWRnZV9jYXN0KG9wdGlvbnMpLAorICAgICAgICAmZXJyb3JSZWYKKyAgICApKTsKKyAgICBp
ZiAoZXJyb3JSZWYpIHsKKyAgICAgICAgY3JlYXRlTlNFcnJvckZyb21XS0Vycm9ySWZOZWNlc3Nh
cnkoZXJyb3IsIFdLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgYXV0byBwdWJsaWNLZXkgPSBhZG9wdENGKFNlY0tleUNvcHlQ
dWJsaWNLZXkoa2V5LmdldCgpKSk7CisgICAgYXV0byBwdWJsaWNLZXlEYXRhUmVwID0gYWRvcHRD
RihTZWNLZXlDb3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihwdWJsaWNLZXkuZ2V0KCksICZlcnJv
clJlZikpOworICAgIGlmIChlcnJvclJlZikgeworICAgICAgICBjcmVhdGVOU0Vycm9yRnJvbVdL
RXJyb3JJZk5lY2Vzc2FyeShlcnJvciwgV0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWwpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBOU0RhdGEgKm5zUHVibGljS2V5RGF0
YSA9IChOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVwLmdldCgpOworICAgIGF1dG8gZGlnZXN0ID0g
UEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZShQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtOjpT
SEFfMSk7CisgICAgZGlnZXN0LT5hZGRCeXRlcyhuc1B1YmxpY0tleURhdGEuYnl0ZXMsIG5zUHVi
bGljS2V5RGF0YS5sZW5ndGgpOworICAgIGF1dG8gY3JlZGVudGlhbElkID0gZGlnZXN0LT5jb21w
dXRlSGFzaCgpOworICAgIGF1dG8gbnNDcmVkZW50aWFsSWQgPSBhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJ5dGVzOmNyZWRlbnRpYWxJZC5kYXRhKCkgbGVuZ3RoOmNyZWRlbnRpYWxJ
ZC5zaXplKCldKTsKKworICAgIGF1dG8gcXVlcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlv
bmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKKyAgICAgICAgKGlkKWtTZWNDbGFz
c0tleSwgKGlkKWtTZWNDbGFzcywKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRl
LCAoaWQpa1NlY0F0dHJLZXlDbGFzcywKKyAgICAgICAgKGlkKXJwLCAoaWQpa1NlY0F0dHJMYWJl
bCwKKyAgICAgICAgbnNDcmVkZW50aWFsSWQuZ2V0KCksIChpZClrU2VjQXR0ckFwcGxpY2F0aW9u
TGFiZWwsCisgICAgICAgIEBZRVMsIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFpbiwK
KyAgICAgICAgbmlsCisgICAgXSk7CisgICAgdXBkYXRlUXVlcnlJZk5lY2Vzc2FyeShxdWVyeS5n
ZXQoKSk7CisKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKGJyaWRn
ZV9jYXN0KHF1ZXJ5LmdldCgpKSwgbnVsbHB0cik7CisgICAgaWYgKCFzdGF0dXMpIHsKKyAgICAg
ICAgLy8gQ3JlZGVudGlhbCB3aXRoIHNhbWUgaWQgYWxyZWFkeSBleGlzdHMsIGR1cGxpY2F0ZSBr
ZXkuCisgICAgICAgIGNyZWF0ZU5TRXJyb3JGcm9tV0tFcnJvcklmTmVjZXNzYXJ5KGVycm9yLCBX
S0Vycm9yRHVwbGljYXRlQ3JlZGVudGlhbCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIGF1dG8gc2VjQXR0ckFwcGxpY2F0aW9uVGFnID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlczprZXlUYWctPmRhdGEoKSBsZW5ndGg6a2V5VGFnLT5zaXplKCld
KTsKKyAgICBOU0RpY3Rpb25hcnkgKmFkZFF1ZXJ5ID0gQHsKKyAgICAgICAgKGlkKWtTZWNWYWx1
ZVJlZjogKGlkKWtleS5nZXQoKSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClr
U2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKKyAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHJwLAor
ICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogc2VjQXR0ckFwcGxpY2F0aW9uVGFn
LmdldCgpLAorICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMs
CisgICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc2libGU6IChpZClrU2VjQXR0ckFjY2Vzc2libGVB
ZnRlckZpcnN0VW5sb2NrCisgICAgfTsKKyAgICBzdGF0dXMgPSBTZWNJdGVtQWRkKGJyaWRnZV9j
YXN0KGFkZFF1ZXJ5KSwgTlVMTCk7CisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBjcmVhdGVO
U0Vycm9yRnJvbVdLRXJyb3JJZk5lY2Vzc2FyeShlcnJvciwgV0tFcnJvclVua25vd24pOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICByZXR1cm4gbnNDcmVkZW50aWFsSWQu
YXV0b3JlbGVhc2UoKTsKKyNlbHNlCisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikKK30KKworKyAoTlNEYXRhICopZXhwb3J0TG9jYWxBdXRoZW50aWNhdG9y
Q3JlZGVudGlhbFdpdGhJRDooTlNEYXRhICopY3JlZGVudGlhbElEIGVycm9yOihOU0Vycm9yICoq
KWVycm9yCit7CisjaWYgRU5BQkxFKFdFQl9BVVRITikKKyAgICBhdXRvIHF1ZXJ5ID0gYWRvcHRO
UyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6Cisg
ICAgICAgIChpZClrU2VjQ2xhc3NLZXksIChpZClrU2VjQ2xhc3MsCisgICAgICAgIGNyZWRlbnRp
YWxJRCwgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbCwKKyAgICAgICAgKGlkKWtTZWNBdHRy
S2V5Q2xhc3NQcml2YXRlLCAoaWQpa1NlY0F0dHJLZXlDbGFzcywKKyAgICAgICAgQFlFUywgKGlk
KWtTZWNSZXR1cm5SZWYsCisgICAgICAgIEBZRVMsIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25L
ZXljaGFpbiwKKyAgICAgICAgbmlsCisgICAgXSk7CisgICAgdXBkYXRlUXVlcnlJZk5lY2Vzc2Fy
eShxdWVyeS5nZXQoKSk7CisgICAgQ0ZUeXBlUmVmIHByaXZhdGVLZXlSZWYgPSBudWxscHRyOwor
ICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoYnJpZGdlX2Nhc3QocXVl
cnkuZ2V0KCkpLCAmcHJpdmF0ZUtleVJlZik7CisgICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMgIT0g
ZXJyU2VjSXRlbU5vdEZvdW5kKSB7CisgICAgICAgIGNyZWF0ZU5TRXJyb3JGcm9tV0tFcnJvcklm
TmVjZXNzYXJ5KGVycm9yLCBXS0Vycm9yQ3JlZGVudGlhbE5vdEZvdW5kKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorICAgIGF1dG8gcHJpdmF0ZUtleSA9IGFkb3B0Q0YocHJpdmF0
ZUtleVJlZik7CisgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7CisgICAgYXV0byBw
cml2YXRlS2V5UmVwID0gYWRvcHRDRihTZWNLZXlDb3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbigo
X19icmlkZ2UgU2VjS2V5UmVmKSgoaWQpcHJpdmF0ZUtleVJlZiksICZlcnJvclJlZikpOworICAg
IGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKKyAgICBpZiAoZXJyb3JSZWYp
IHsKKyAgICAgICAgY3JlYXRlTlNFcnJvckZyb21XS0Vycm9ySWZOZWNlc3NhcnkoZXJyb3IsIFdL
RXJyb3JDcmVkZW50aWFsTm90Rm91bmQpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9
CisgICAgICAgIAorICAgIFtxdWVyeSByZW1vdmVPYmplY3RGb3JLZXk6KGlkKWtTZWNSZXR1cm5S
ZWZdOworICAgIFtxdWVyeSBzZXRPYmplY3Q6IEBZRVMgZm9yS2V5OihpZClrU2VjUmV0dXJuQXR0
cmlidXRlc107CisgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51bGxwdHI7Cisg
ICAgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZyhicmlkZ2VfY2FzdChxdWVyeS5nZXQoKSks
ICZhdHRyaWJ1dGVzQXJyYXlSZWYpOworICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNl
Y0l0ZW1Ob3RGb3VuZCkgeworICAgICAgICBjcmVhdGVOU0Vycm9yRnJvbVdLRXJyb3JJZk5lY2Vz
c2FyeShlcnJvciwgV0tFcnJvckNyZWRlbnRpYWxOb3RGb3VuZCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKyAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSAoX19icmlkZ2Ug
TlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlc0FycmF5UmVmOworCisgICAgaW50NjRfdCBrZXlUeXBl
LCBrZXlTaXplOworICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZSgoX19icmlkZ2UgQ0ZOdW1iZXJS
ZWYpYXR0cmlidXRlc1ticmlkZ2VfaWRfY2FzdChrU2VjQXR0cktleVR5cGUpXSwga0NGTnVtYmVy
U0ludDY0VHlwZSwgJmtleVR5cGUpKSB7CisgICAgICAgIGNyZWF0ZU5TRXJyb3JGcm9tV0tFcnJv
cklmTmVjZXNzYXJ5KGVycm9yLCBXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCk7CisgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBpZiAoIUNGTnVtYmVyR2V0VmFsdWUoKF9fYnJp
ZGdlIENGTnVtYmVyUmVmKWF0dHJpYnV0ZXNbYnJpZGdlX2lkX2Nhc3Qoa1NlY0F0dHJLZXlTaXpl
SW5CaXRzKV0sIGtDRk51bWJlclNJbnQ2NFR5cGUsICZrZXlTaXplKSkgeworICAgICAgICBjcmVh
dGVOU0Vycm9yRnJvbVdLRXJyb3JJZk5lY2Vzc2FyeShlcnJvciwgV0tFcnJvck1hbGZvcm1lZENy
ZWRlbnRpYWwpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgCisgICAgY2Jv
cjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSBjcmVkZW50aWFsTWFwOworICAgIGNyZWRlbnRpYWxNYXBb
Y2Jvcjo6Q0JPUlZhbHVlKFdlYkNvcmU6OnByaXZhdGVLZXlLZXkpXSA9IGNib3I6OkNCT1JWYWx1
ZShXZWJDb3JlOjp0b0J1ZmZlclNvdXJjZShicmlkZ2VfaWRfY2FzdChwcml2YXRlS2V5UmVwLmdl
dCgpKSkpOworICAgIGNyZWRlbnRpYWxNYXBbY2Jvcjo6Q0JPUlZhbHVlKFdlYkNvcmU6OmtleVR5
cGVLZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShrZXlUeXBlKTsKKyAgICBjcmVkZW50aWFsTWFwW2Ni
b3I6OkNCT1JWYWx1ZShXZWJDb3JlOjprZXlTaXplS2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUoa2V5
U2l6ZSk7CisgICAgY3JlZGVudGlhbE1hcFtjYm9yOjpDQk9SVmFsdWUoV2ViQ29yZTo6cmVseWlu
Z1BhcnR5S2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUoU3RyaW5nKGF0dHJpYnV0ZXNbYnJpZGdlX2lk
X2Nhc3Qoa1NlY0F0dHJMYWJlbCldKSk7CisgICAgYXV0byBkZWNvZGVkUmVzcG9uc2UgPSBjYm9y
OjpDQk9SUmVhZGVyOjpyZWFkKHZlY3RvckZyb21OU0RhdGEoYXR0cmlidXRlc1ticmlkZ2VfaWRf
Y2FzdChrU2VjQXR0ckFwcGxpY2F0aW9uVGFnKV0pKTsKKyAgICBpZiAoIWRlY29kZWRSZXNwb25z
ZSB8fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgpKSB7CisgICAgICAgIGNyZWF0ZU5TRXJyb3JG
cm9tV0tFcnJvcklmTmVjZXNzYXJ5KGVycm9yLCBXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBjcmVkZW50aWFsTWFwW2Nib3I6
OkNCT1JWYWx1ZShXZWJDb3JlOjphcHBsaWNhdGlvblRhZ0tleSldID0gY2Jvcjo6Q0JPUlZhbHVl
KFdURk1vdmUoKmRlY29kZWRSZXNwb25zZSkpOworICAgIGF1dG8gc2VyaWFsaXplZENyZWRlbnRp
YWwgPSBjYm9yOjpDQk9SV3JpdGVyOjp3cml0ZShjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZShjcmVk
ZW50aWFsTWFwKSkpOworICAgIHJldHVybiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJ5dGVzOnNlcmlhbGl6ZWRDcmVkZW50aWFsLnZhbHVlKCkuZGF0YSgpIGxlbmd0aDpzZXJpYWxp
emVkQ3JlZGVudGlhbC52YWx1ZSgpLnNpemUoKV0pLmF1dG9yZWxlYXNlKCk7CisjZWxzZQorICAg
IHJldHVybiBudWxscHRyOworI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCit9CisKIC0gKHZv
aWQpY2FuY2VsCiB7CiAjaWYgRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRv
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xv
Y2FsQXV0aGVudGljYXRvci5tbQppbmRleCA0NmQwMDAzMmM3YmRmMGMyOTRkYWM2MmRiNDJhOTdj
MGQyNzhkYjg4Li5kMjJhMmFmMWI5YzdjYWU3NzhhMzQ0Njg1MjViMzViNzFiOGU1NjVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbEF1dGhlbnRpY2F0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCkBAIC0xNzcsNyArMTc3LDcg
QEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNsZWFyQWxsQ3JlZGVudGlhbHMoKQogICAgIGF1
dG8gcXVlcnkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwog
ICAgIFtxdWVyeSBzZXREaWN0aW9uYXJ5OkB7CiAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClr
U2VjQ2xhc3NLZXksCi0gICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc0dyb3VwOiAoaWQpU3RyaW5n
KExvY2FsQXV0aGVudGljYXRpb3JBY2Nlc3NHcm91cCksCisgICAgICAgIChpZClrU2VjQXR0ckFj
Y2Vzc0dyb3VwOiAoaWQpU3RyaW5nKExvY2FsQXV0aGVudGljYXRvckFjY2Vzc0dyb3VwKSwKICAg
ICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCiAgICAgfV07CiAg
ICAgdXBkYXRlUXVlcnlJZk5lY2Vzc2FyeShxdWVyeS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbENvbm5lY3Rpb24ubW0KaW5kZXggYTA1ZjMwNTIyMjk5MzhlM2YxYjBhOTJmMTc0MzdlZjM5
ZWFiZmM1MC4uZTRlOTc5ZjQ5ZGE4OGVmOTJjYzJkNjIyNjYxMzVlOTE5MDQ5MDhmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQpAQCAtMTcwLDcgKzE3MCw3IEBAIFJldGFp
blB0cjxTZWNLZXlSZWY+IExvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVL
ZXkoTEFDb250ZXh0ICpjb250CiAgICAgUmV0YWluUHRyIHByaXZhdGVLZXlBdHRyaWJ1dGVzID0g
QHsKICAgICAgICAgKGlkKWtTZWNBdHRyQWNjZXNzQ29udHJvbDogKGlkKWFjY2Vzc0NvbnRyb2xS
ZWYsCiAgICAgICAgIChpZClrU2VjQXR0cklzUGVybWFuZW50OiBAWUVTLAotICAgICAgICAoaWQp
a1NlY0F0dHJBY2Nlc3NHcm91cDogKGlkKVN0cmluZyhMb2NhbEF1dGhlbnRpY2F0aW9yQWNjZXNz
R3JvdXApLAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NHcm91cDogKGlkKVN0cmluZyhMb2Nh
bEF1dGhlbnRpY2F0b3JBY2Nlc3NHcm91cCksCiAgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBz
ZWNBdHRyTGFiZWwsCiAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBzZWNBdHRy
QXBwbGljYXRpb25UYWcsCiAgICAgfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA0NjAxMjQ5OWJlMTBkM2U5MWU4NThiNzFmMTQwODIxZjJlOGM4
MmYxLi4xODc0ZjJjZjYxMzZjYTJjNTMxNDFiMjY5MmJiZjZlODk4ZTFlOGQzIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMjItMDEtMjYgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgorCisgICAgICAgIFtX
ZWJBdXRobl0gUHJvdmlkZSBTUEkgdG8gZXhwb3J0L2ltcG9ydCBsb2NhbCBjcmVkZW50aWFscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MTEyCisg
ICAgICAgIHJkYXI6Ly84NDgyMjAwMAorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdo
YW0uCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBTUEkgdG8gaW1wb3J0IC8gZXhwb3J0IGxvY2Fs
IHdlYmF1dGhuIGNyZWRlbnRpYWxzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6IE5ldyB0ZXN0cyBmb3IgaW1wb3J0L2V4cG9ydAorCiAyMDIyLTAxLTI1
ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbRVdTXSBT
dXBwb3J0IHB1bGwgcmVxdWVzdHMgaW4gYnVpbHQgcHJvZHVjdCBtYW5hZ2VtZW50CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggMzM3NjZlMDlmZDVmOTdkYjRmMzU2MWQz
OTRmNGY4ZjcyZjIwODhkOS4uODhjMGFmOWI3NDQ0YzAwYjI5ZTU5OThmMDBhNDdlNmJlMDY3OGJk
NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjIyOCw2ICsyMjI4
LDYxIEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgVXBkYXRlQ3JlZGVudGlhbFVzZXJu
YW1lKQogICAgIGNsZWFuVXBLZXljaGFpbigiZXhhbXBsZS5jb20iKTsKIH0KIAorVEVTVChXZWJB
dXRoZW50aWNhdGlvblBhbmVsLCBFeHBvcnRJbXBvcnRDcmVkZW50aWFsKQoreworICAgIHJlc2V0
KCk7CisKKyAgICBhZGRLZXlUb0tleWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICJl
eGFtcGxlLmNvbSIsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKworICAgIGF1dG8gKmNy
ZWRlbnRpYWxzID0gW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZ2V0QWxsTG9jYWxBdXRoZW50
aWNhdG9yQ3JlZGVudGlhbHNXaXRoQWNjZXNzR3JvdXA6QCJjb20uYXBwbGUuVGVzdFdlYktpdEFQ
SSJdOworICAgIEVYUEVDVF9OT1RfTlVMTChjcmVkZW50aWFscyk7CisgICAgRVhQRUNUX0VRKFtj
cmVkZW50aWFscyBjb3VudF0sIDFsdSk7CisKKyAgICBFWFBFQ1RfTk9UX05VTEwoW2NyZWRlbnRp
YWxzIGZpcnN0T2JqZWN0XSk7CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgYXV0byBl
eHBvcnRlZEtleSA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGV4cG9ydExvY2FsQXV0aGVu
dGljYXRvckNyZWRlbnRpYWxXaXRoSUQ6W2NyZWRlbnRpYWxzIGZpcnN0T2JqZWN0XVtfV0tMb2Nh
bEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsSURLZXldIGVycm9yOiZlcnJvcl07CisgICAgCisgICAg
Y2xlYW5VcEtleWNoYWluKCJleGFtcGxlLmNvbSIpOworCisgICAgYXV0byBjcmVkZW50aWFsSWQg
PSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBpbXBvcnRMb2NhbEF1dGhlbnRpY2F0b3JDcmVk
ZW50aWFsOmV4cG9ydGVkS2V5IGVycm9yOiZlcnJvcl07CisgICAgRVhQRUNUX1dLX1NUUkVRKFtb
Y3JlZGVudGlhbHMgZmlyc3RPYmplY3RdW19XS0xvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxJ
REtleV0gYmFzZTY0RW5jb2RlZFN0cmluZ1dpdGhPcHRpb25zOjBdLCBbY3JlZGVudGlhbElkIGJh
c2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9uczowXSk7CisKKyAgICBjbGVhblVwS2V5Y2hhaW4o
ImV4YW1wbGUuY29tIik7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgRXhwb3J0
SW1wb3J0RHVwbGljYXRlQ3JlZGVudGlhbCkKK3sKKyAgICByZXNldCgpOworICAgIGNsZWFuVXBL
ZXljaGFpbigiIik7CisKKyAgICBhZGRLZXlUb0tleWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlC
YXNlNjQsICJleGFtcGxlLmNvbSIsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKworICAg
IGF1dG8gKmNyZWRlbnRpYWxzID0gW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgZ2V0QWxsTG9j
YWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbHNXaXRoQWNjZXNzR3JvdXA6QCJjb20uYXBwbGUuVGVz
dFdlYktpdEFQSSJdOworICAgIEVYUEVDVF9OT1RfTlVMTChjcmVkZW50aWFscyk7CisgICAgRVhQ
RUNUX0VRKFtjcmVkZW50aWFscyBjb3VudF0sIDFsdSk7CisKKyAgICBFWFBFQ1RfTk9UX05VTEwo
W2NyZWRlbnRpYWxzIGZpcnN0T2JqZWN0XSk7CisgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Cisg
ICAgYXV0byBleHBvcnRlZEtleSA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGV4cG9ydExv
Y2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWxXaXRoSUQ6W2NyZWRlbnRpYWxzIGZpcnN0T2JqZWN0
XVtfV0tMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsSURLZXldIGVycm9yOiZlcnJvcl07CisK
KyAgICBhdXRvIGNyZWRlbnRpYWxJZCA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGltcG9y
dExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWw6ZXhwb3J0ZWRLZXkgZXJyb3I6JmVycm9yXTsK
KyAgICBFWFBFQ1RfRVEoY3JlZGVudGlhbElkLCBuaWwpOworICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBXS0Vycm9yRHVwbGljYXRlQ3JlZGVudGlhbCk7CisKKyAgICBjbGVhblVwS2V5Y2hhaW4o
ImV4YW1wbGUuY29tIik7Cit9CisKK1RFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgSW1wb3J0
TWFsZm9ybWVkQ3JlZGVudGlhbCkKK3sKKyAgICByZXNldCgpOworCisgICAgTlNFcnJvciAqZXJy
b3IgPSBuaWw7CisgICAgYXV0byBjcmVkZW50aWFsSWQgPSBbX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbCBpbXBvcnRMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsOmFkb3B0TlMoW1tOU0RhdGEg
YWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzp0ZXN0VXNlckVudGl0eUJ1bmRsZUJh
c2U2NCBvcHRpb25zOjBdKS5nZXQoKSBlcnJvcjomZXJyb3JdOworCisgICAgRVhQRUNUX0VRKGVy
cm9yLmNvZGUsIFdLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsKTsKKyAgICBFWFBFQ1RfRVEoY3Jl
ZGVudGlhbElkLCBuaWwpOworfQorCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0
ZU9uZUNyZWRlbnRpYWwpCiB7CiAgICAgcmVzZXQoKTsK
</data>
<flag name="commit-queue"
          id="476378"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450089</attachid>
            <date>2022-01-26 17:32:33 -0800</date>
            <delta_ts>2022-01-31 08:56:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-234112-20220126173233.patch</filename>
            <type>text/plain</type>
            <size>21346</size>
            <attacher name="pascoe@apple.com">pascoe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4NjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhlOGJkNDUwYThkODM2
NmFhMmIzNTc3NmVhNDVjZDhiOWVmNDQ4My4uMWI3YjEwYTM4ZDAzMTBhYzE0MjM4YzNiMWU2OTgz
YjRlNTE4NTBkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAxLTI2ICBKIFBh
c2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFByb3ZpZGUg
U1BJIHRvIGV4cG9ydC9pbXBvcnQgbG9jYWwgY3JlZGVudGlhbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDExMgorICAgICAgICByZGFyOi8vODQ4
MjIwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIFRo
aXMgY2hhbmdlIGFkZHMgU1BJIHRvIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgdG8gcHJvdmlk
ZSB0aGUgYWJpbGl0eQorICAgICAgICB0byBpbXBvcnQgLyBleHBvcnQgbG9jYWwgY3JlZGVudGlh
bHMuIENvbnN0YW50cyBhcmUgdXNlZCBkdXJpbmcgc2VyaWFsaXphdGlvbgorICAgICAgICBhcyBr
ZXlzLgorCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0
YW50cy5oOiBjb25zdGFudHMgZm9yIGNyZWRlbnRpYWwgc2VyaWFsaXphdGlvbgorCiAyMDIyLTAx
LTI2ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyMjgxMzA2KTogTm9uLWJyZWFraW5nIHNwYWNlIGluY29ycmVjdGx5IGNvbGxhcHNlZCB3aGVu
IHdlYmtpdC1uYnNwLW1vZGUgaXMgc2V0IHRvICJzcGFjZSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZjlhZGY0MzU0
ODNmMTRjOGYwZjkxMmFlOTAxMmFkYmFkYTZiNzBiZC4uZTExOWIwNGNmM2JhNGVlNWYwYTg2ODY3
MDgzMDIxMDM5MmFiYWUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wMS0yNiAg
SiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBQcm92
aWRlIFNQSSB0byBleHBvcnQvaW1wb3J0IGxvY2FsIGNyZWRlbnRpYWxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxMTIKKyAgICAgICAgcmRhcjov
Lzg0ODIyMDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIG5l
dyBTUEkgdG8gX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIHRvIGltcG9ydCBhbmQgZXhwb3J0
IGxvY2FsCisgICAgICAgIHdlYmF1dGhuIGNyZWRlbnRpYWxzLiBDQk9SIGlzIHVzZWQgZm9yIHNl
cmlhbGl6YXRpb24uIFdLRXJyb3JzIGFyZSB1c2VkIHRvIGRpZmZlcmVudGlhdGUKKyAgICAgICAg
YmV0d2VlbiBtYWxmb3JtZWQgdnMgZHVwbGljYXRlIGtleXMgZHVyaW5nIGltcG9ydC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tFcnJvci5tbToKKyAgICAgICAgKGxvY2FsaXplZERlc2NyaXB0aW9uRm9y
RXJyb3JDb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgICgrW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwg
aW1wb3J0TG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbDplcnJvcjpdKToKKyAgICAgICAgKCtb
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBleHBvcnRMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50
aWFsV2l0aElEOmVycm9yOl0pOgorCiAyMDIyLTAxLTI2ICBBbGV4YW5kZXIgTWlraGF5bGVua28g
IDxhbGV4bUBnbm9tZS5vcmc+CiAKICAgICAgICAgW0dUSzNdIFBpbmNoIHpvb21pbmcgZnJvbSBh
IGxpbmsgYWN0aXZhdGVzIGl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL1dlYkF1dGhlbnRpY2F0aW9uQ29uc3RhbnRzLmgKaW5kZXggODRhNzdiZWM3
YmEyYTNjOTlhNzBjMzA0MzQyZDkxYTRmMTk3OTFhNC4uOTYyNjFlMjc1MjhiZGEwZmJjYTkzZGQz
ZjQ3OTBmYzEzMjNlOGYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9XZWJBdXRoZW50aWNhdGlvbkNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vV2ViQXV0aGVudGljYXRpb25Db25zdGFudHMuaApAQCAtNzcsOCArNzcs
MTggQEAgZW51bSBjbGFzcyBDbGllbnREYXRhVHlwZSA6IGJvb2wgewogICAgIEdldAogfTsKIAor
Ly8gcmRhcjovLzg4MTA0MDQ1IC0gUmVtb3ZlIG9uY2Ugc3RhZ2VkIGNoYW5nZSBjb21wbGV0ZWQK
IGNvbnN0IGNoYXIgTG9jYWxBdXRoZW50aWNhdGlvckFjY2Vzc0dyb3VwW10gPSAiY29tLmFwcGxl
LndlYmtpdC53ZWJhdXRobiI7CiAKK2NvbnN0ZXhwciBjb25zdCBjaGFyIExvY2FsQXV0aGVudGlj
YXRvckFjY2Vzc0dyb3VwW10gPSAiY29tLmFwcGxlLndlYmtpdC53ZWJhdXRobiI7CisKKy8vIENy
ZWRlbnRpYWwgc2VyaWFsaXphdGlvbgorY29uc3RleHByIGNvbnN0IGNoYXIgcHJpdmF0ZUtleUtl
eVtdID0gInByaXYiOworY29uc3RleHByIGNvbnN0IGNoYXIga2V5VHlwZUtleVtdID0gImtleV90
eXBlIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFyIGtleVNpemVLZXlbXSA9ICJrZXlfc2l6ZSI7Citj
b25zdGV4cHIgY29uc3QgY2hhciByZWx5aW5nUGFydHlLZXlbXSA9ICJycCI7Citjb25zdGV4cHIg
Y29uc3QgY2hhciBhcHBsaWNhdGlvblRhZ0tleVtdID0gInRhZyI7CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogbmFtZXNwYWNlIFdlYkF1dGhuIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tFcnJvci5oCmluZGV4IDNmYzA2ZTM1MTI0MDAzNTNiZGQwNmU5YjM3YTcy
ZjY2M2IzOTM3ZjguLjc0MzAxNzY5MzcyZTZlY2E4NTA3OWQ1M2E5MzA3N2U4ODNmYjFmZmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IuaApAQCAtNjMsNiAr
NjMsOSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0Vycm9yQ29kZSkgewogICAgIFdL
RXJyb3JKYXZhU2NyaXB0SW52YWxpZEZyYW1lVGFyZ2V0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTEuMCksIGlvcygxNC4wKSksCiAgICAgV0tFcnJvck5hdmlnYXRpb25BcHBCb3VuZERvbWFpbiBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpLAogICAgIFdLRXJyb3JKYXZh
U2NyaXB0QXBwQm91bmREb21haW4gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0
LjApKSwKKyAgICBXS0Vycm9yRHVwbGljYXRlQ3JlZGVudGlhbCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAorICAgIFdLRXJyb3JNYWxmb3JtZWRD
cmVkZW50aWFsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSksCisgICAgV0tFcnJvckNyZWRlbnRpYWxOb3RGb3VuZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAogfSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEwKSwgaW9zKDguMCkpOwogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IubW0KaW5kZXggZWYwNWUwYWIxNDcy
ODE3MWMzOTkwNzBlZDY0MjllMzNhNWE2OGEzNi4uMWM3NmNlNmFiYTFiODFiODM3NmVhMGU3NmE1
Nzk1ZWViNDE1OWY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRXJyb3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
RXJyb3IubW0KQEAgLTgyLDYgKzgyLDE1IEBAIE5TU3RyaW5nICpsb2NhbGl6ZWREZXNjcmlwdGlv
bkZvckVycm9yQ29kZShXS0Vycm9yQ29kZSBlcnJvckNvZGUpCiAKICAgICBjYXNlIFdLRXJyb3JK
YXZhU2NyaXB0QXBwQm91bmREb21haW46CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJK
YXZhU2NyaXB0IGV4ZWN1dGlvbiB0YXJnZXRlZCBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFw
cC1ib3VuZCBkb21haW4iLCAiV0tFcnJvckphdmFTY3JpcHRBcHBCb3VuZERvbWFpbiBkZXNjcmlw
dGlvbiIpOworCisgICAgY2FzZSBXS0Vycm9yRHVwbGljYXRlQ3JlZGVudGlhbDoKKyAgICAgICAg
cmV0dXJuIFdFQl9VSV9TVFJJTkcoIlRoaXMgY3JlZGVudGlhbCBpcyBhbHJlYWR5IHByZXNlbnQi
LCAiV0tFcnJvckR1cGxpY2F0ZUNyZWRlbnRpYWwgZGVzY3JpcHRpb24iKTsKKworICAgIGNhc2Ug
V0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWw6CisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
KCJUaGlzIGNyZWRlbnRpYWwgaXMgbWFsZm9ybWVkIiwgIldLRXJyb3JNYWxmb3JtZWRDcmVkZW50
aWFsIGRlc2NyaXB0aW9uIik7CisgICAgICAgICAgICAKKyAgICBjYXNlIFdLRXJyb3JDcmVkZW50
aWFsTm90Rm91bmQ6CisgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJDcmVkZW50aWFsIGNv
dWxkIG5vdCBiZSBmb3VuZCIsICJXS0Vycm9yQ3JlZGVudGlhbE5vdEZvdW5kIGRlc2NyaXB0aW9u
Iik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAppbmRleCA2YmZhNDg4YjIw
ZjNkNjE3Mzc4ODE0ZmZmYjQ4NjY1MjFkOGVjZTJiLi5iNjg5ZGFjMmQ4N2IwOGE3MDJjZjliYTZh
ZmFhYTYzZTlkZDU3NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLmgKQEAgLTExNyw2ICsx
MTcsOSBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSkKICsg
KHZvaWQpY2xlYXJBbGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFscyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwogKyAodm9pZClzZXRVc2VybmFtZUZvckxvY2Fs
Q3JlZGVudGlhbFdpdGhJRDooTlNEYXRhICopY3JlZGVudGlhbElEIHVzZXJuYW1lOiAoTlNTdHJp
bmcgKil1c2VybmFtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEyLjApLCBpb3MoMTUuMCkpOwog
CisrIChOU0RhdGEgKilleHBvcnRMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsV2l0aElEOihO
U0RhdGEgKiljcmVkZW50aWFsSUQgZXJyb3I6KE5TRXJyb3IgKiopZXJyb3IgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKysgKE5TRGF0YSAqKWlt
cG9ydExvY2FsQXV0aGVudGljYXRvckNyZWRlbnRpYWw6KE5TRGF0YSAqKWNyZWRlbnRpYWxCbG9i
IGVycm9yOihOU0Vycm9yICoqKWVycm9yIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKICsgKEJPT0wpaXNVc2VyVmVyaWZ5aW5nUGxhdGZvcm1B
dXRoZW50aWNhdG9yQXZhaWxhYmxlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTIuMCksIGlvcygx
NS4wKSk7CiAKICsgKE5TRGF0YSAqKWdldENsaWVudERhdGFKU09ORm9yQXV0aGVudGljYXRpb25U
eXBlOihfV0tXZWJBdXRoZW50aWNhdGlvblR5cGUpdHlwZSBjaGFsbGVuZ2U6KE5TRGF0YSAqKWNo
YWxsZW5nZSBvcmlnaW46KE5TU3RyaW5nICopb3JpZ2luIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CmluZGV4IGJiNmE4ZGVmM2RjZTQ0MjQ5MjYwMjMzNmZlM2QyY2I4YTEyYmEwMzQuLmUxODNmNTM1
MDVlODM1NDJhYjU3ZjA4ZWY3OWM3NzUwZjZmYmYxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCkBAIC0yODksNyArMjg5LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBnZXRB
bGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsc0ltcGwoTlNTdHJpbmcgKmFjY2UKICsgKE5T
QXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopZ2V0QWxsTG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlh
bHMKIHsKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIHJldHVybiBnZXRBbGxMb2NhbEF1dGhl
bnRpY2F0b3JDcmVkZW50aWFsc0ltcGwoU3RyaW5nKFdlYkNvcmU6OkxvY2FsQXV0aGVudGljYXRp
b3JBY2Nlc3NHcm91cCkpLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuIGdldEFsbExvY2FsQXV0
aGVudGljYXRvckNyZWRlbnRpYWxzSW1wbChTdHJpbmcoV2ViQ29yZTo6TG9jYWxBdXRoZW50aWNh
dG9yQWNjZXNzR3JvdXApKS5hdXRvcmVsZWFzZSgpOwogI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0
cjsKICNlbmRpZgpAQCAtMzg4LDYgKzM4OCwxOTIgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5
PiBnZXRBbGxMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsc0ltcGwoTlNTdHJpbmcgKmFjY2UK
ICNlbmRpZgogfQogCisjaWYgRU5BQkxFKFdFQl9BVVRITikKK3N0YXRpYyB2b2lkIGNyZWF0ZU5T
RXJyb3JGcm9tV0tFcnJvcklmTmVjZXNzYXJ5KE5TRXJyb3IgKiplcnJvciwgV0tFcnJvckNvZGUg
ZXJyb3JDb2RlKQoreworICAgIGlmIChlcnJvcikKKyAgICAgICAgKmVycm9yID0gW05TRXJyb3Ig
ZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTogZXJyb3JDb2RlIHVzZXJJbmZvOm5p
bF07Cit9CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKKworKyAoTlNEYXRhICopaW1wb3J0
TG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbDooTlNEYXRhICopY3JlZGVudGlhbEJsb2IgZXJy
b3I6KE5TRXJyb3IgKiopZXJyb3IKK3sKKyNpZiBFTkFCTEUoV0VCX0FVVEhOKQorICAgIGF1dG8g
Y3JlZGVudGlhbCA9IGNib3I6OkNCT1JSZWFkZXI6OnJlYWQodmVjdG9yRnJvbU5TRGF0YShjcmVk
ZW50aWFsQmxvYikpOworICAgIGlmICghY3JlZGVudGlhbCB8fCAhY3JlZGVudGlhbC0+aXNNYXAo
KSkgeworICAgICAgICBjcmVhdGVOU0Vycm9yRnJvbVdLRXJyb3JJZk5lY2Vzc2FyeShlcnJvciwg
V0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWwpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBhdXRvJiBjcmVkZW50aWFsTWFwID0gY3JlZGVudGlhbC0+Z2V0TWFwKCk7Cisg
ICAgYXV0byBpdCA9IGNyZWRlbnRpYWxNYXAuZmluZChjYm9yOjpDQk9SVmFsdWUoV2ViQ29yZTo6
cHJpdmF0ZUtleUtleSkpOworICAgIGlmIChpdCA9PSBjcmVkZW50aWFsTWFwLmVuZCgpIHx8ICFp
dC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKSB7CisgICAgICAgIGNyZWF0ZU5TRXJyb3JGcm9tV0tF
cnJvcklmTmVjZXNzYXJ5KGVycm9yLCBXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCk7CisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBhdXRvIHByaXZhdGVLZXkgPSBhZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOml0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygp
LmRhdGEoKSBsZW5ndGg6aXQtPnNlY29uZC5nZXRCeXRlU3RyaW5nKCkuc2l6ZSgpXSk7CisKKyAg
ICBpdCA9IGNyZWRlbnRpYWxNYXAuZmluZChjYm9yOjpDQk9SVmFsdWUoV2ViQ29yZTo6a2V5VHlw
ZUtleSkpOworICAgIGlmIChpdCA9PSBjcmVkZW50aWFsTWFwLmVuZCgpIHx8ICFpdC0+c2Vjb25k
LmlzSW50ZWdlcigpKSB7CisgICAgICAgIGNyZWF0ZU5TRXJyb3JGcm9tV0tFcnJvcklmTmVjZXNz
YXJ5KGVycm9yLCBXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKyAgICBhdXRvIGtleVR5cGUgPSBpdC0+c2Vjb25kLmdldEludGVnZXIo
KTsKKworICAgIGl0ID0gY3JlZGVudGlhbE1hcC5maW5kKGNib3I6OkNCT1JWYWx1ZShXZWJDb3Jl
OjprZXlTaXplS2V5KSk7CisgICAgaWYgKGl0ID09IGNyZWRlbnRpYWxNYXAuZW5kKCkgfHwgIWl0
LT5zZWNvbmQuaXNJbnRlZ2VyKCkpIHsKKyAgICAgICAgY3JlYXRlTlNFcnJvckZyb21XS0Vycm9y
SWZOZWNlc3NhcnkoZXJyb3IsIFdLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGF1dG8ga2V5U2l6ZSA9IGl0LT5zZWNvbmQuZ2V0
SW50ZWdlcigpOworCisgICAgaXQgPSBjcmVkZW50aWFsTWFwLmZpbmQoY2Jvcjo6Q0JPUlZhbHVl
KFdlYkNvcmU6OnJlbHlpbmdQYXJ0eUtleSkpOworICAgIGlmIChpdCA9PSBjcmVkZW50aWFsTWFw
LmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgY3JlYXRlTlNFcnJv
ckZyb21XS0Vycm9ySWZOZWNlc3NhcnkoZXJyb3IsIFdLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFs
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIGF1dG8gcnAgPSBpdC0+c2Vj
b25kLmdldFN0cmluZygpOworCisgICAgaXQgPSBjcmVkZW50aWFsTWFwLmZpbmQoY2Jvcjo6Q0JP
UlZhbHVlKFdlYkNvcmU6OmFwcGxpY2F0aW9uVGFnS2V5KSk7CisgICAgaWYgKGl0ID09IGNyZWRl
bnRpYWxNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNNYXAoKSkgeworICAgICAgICBjcmVhdGVO
U0Vycm9yRnJvbVdLRXJyb3JJZk5lY2Vzc2FyeShlcnJvciwgV0tFcnJvck1hbGZvcm1lZENyZWRl
bnRpYWwpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgYXV0byBrZXlUYWcg
PSBjYm9yOjpDQk9SV3JpdGVyOjp3cml0ZShjYm9yOjpDQk9SVmFsdWUoaXQtPnNlY29uZC5nZXRN
YXAoKSkpOworCisgICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gQHsKKyAgICAgICAgLy8gS2V5
IHR5cGUgdmFsdWVzIGFyZSBzdHJpbmcgdmFsdWVzIG9mIG51bWJlcnMsIHN0b3JlZCBhcyBrQ0ZO
dW1iZXJTSW50NjRUeXBlIGluIGF0dHJpYnV0ZXMsIGJ1dCBtdXN0IGJlIHBhc3NlZCBhcyBzdHJp
bmcgaGVyZQorICAgICAgICAoaWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCIlaSIsIChpbnQpa2V5VHlwZV0sCisgICAgICAgIChpZClrU2VjQXR0cktl
eUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCisgICAgICAgIChpZClrU2VjQXR0
cktleVNpemVJbkJpdHM6IEAoa2V5U2l6ZSksCisgICAgfTsKKyAgICBDRkVycm9yUmVmIGVycm9y
UmVmID0gbnVsbHB0cjsKKyAgICBhdXRvIGtleSA9IGFkb3B0Q0YoU2VjS2V5Q3JlYXRlV2l0aERh
dGEoCisgICAgICAgIGJyaWRnZV9jYXN0KHByaXZhdGVLZXkuZ2V0KCkpLAorICAgICAgICBicmlk
Z2VfY2FzdChvcHRpb25zKSwKKyAgICAgICAgJmVycm9yUmVmCisgICAgKSk7CisgICAgaWYgKGVy
cm9yUmVmKSB7CisgICAgICAgIGNyZWF0ZU5TRXJyb3JGcm9tV0tFcnJvcklmTmVjZXNzYXJ5KGVy
cm9yLCBXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCk7CisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIH0KKworICAgIGF1dG8gcHVibGljS2V5ID0gYWRvcHRDRihTZWNLZXlDb3B5UHVibGlj
S2V5KGtleS5nZXQoKSkpOworICAgIGF1dG8gcHVibGljS2V5RGF0YVJlcCA9IGFkb3B0Q0YoU2Vj
S2V5Q29weUV4dGVybmFsUmVwcmVzZW50YXRpb24ocHVibGljS2V5LmdldCgpLCAmZXJyb3JSZWYp
KTsKKyAgICBpZiAoZXJyb3JSZWYpIHsKKyAgICAgICAgY3JlYXRlTlNFcnJvckZyb21XS0Vycm9y
SWZOZWNlc3NhcnkoZXJyb3IsIFdLRXJyb3JNYWxmb3JtZWRDcmVkZW50aWFsKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgTlNEYXRhICpuc1B1YmxpY0tleURhdGEgPSAo
TlNEYXRhICopcHVibGljS2V5RGF0YVJlcC5nZXQoKTsKKyAgICBhdXRvIGRpZ2VzdCA9IFBBTDo6
Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRobTo6U0hBXzEp
OworICAgIGRpZ2VzdC0+YWRkQnl0ZXMobnNQdWJsaWNLZXlEYXRhLmJ5dGVzLCBuc1B1YmxpY0tl
eURhdGEubGVuZ3RoKTsKKyAgICBhdXRvIGNyZWRlbnRpYWxJZCA9IGRpZ2VzdC0+Y29tcHV0ZUhh
c2goKTsKKyAgICBhdXRvIG5zQ3JlZGVudGlhbElkID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCeXRlczpjcmVkZW50aWFsSWQuZGF0YSgpIGxlbmd0aDpjcmVkZW50aWFsSWQuc2l6
ZSgpXSk7CisKKyAgICBhdXRvIHF1ZXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgIChpZClrU2VjQ2xhc3NLZXks
IChpZClrU2VjQ2xhc3MsCisgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwgKGlk
KWtTZWNBdHRyS2V5Q2xhc3MsCisgICAgICAgIChpZClycCwgKGlkKWtTZWNBdHRyTGFiZWwsCisg
ICAgICAgIG5zQ3JlZGVudGlhbElkLmdldCgpLCAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVs
LAorICAgICAgICBAWUVTLCAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW4sCisgICAg
ICAgIG5pbAorICAgIF0pOworICAgIHVwZGF0ZVF1ZXJ5SWZOZWNlc3NhcnkocXVlcnkuZ2V0KCkp
OworCisgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZyhicmlkZ2VfY2Fz
dChxdWVyeS5nZXQoKSksIG51bGxwdHIpOworICAgIGlmICghc3RhdHVzKSB7CisgICAgICAgIC8v
IENyZWRlbnRpYWwgd2l0aCBzYW1lIGlkIGFscmVhZHkgZXhpc3RzLCBkdXBsaWNhdGUga2V5Lgor
ICAgICAgICBjcmVhdGVOU0Vycm9yRnJvbVdLRXJyb3JJZk5lY2Vzc2FyeShlcnJvciwgV0tFcnJv
ckR1cGxpY2F0ZUNyZWRlbnRpYWwpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBhdXRvIHNlY0F0dHJBcHBsaWNhdGlvblRhZyA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQnl0ZXM6a2V5VGFnLT5kYXRhKCkgbGVuZ3RoOmtleVRhZy0+c2l6ZSgpXSk7Cisg
ICAgTlNEaWN0aW9uYXJ5ICphZGRRdWVyeSA9IEB7CisgICAgICAgIChpZClrU2VjVmFsdWVSZWY6
IChpZClrZXkuZ2V0KCksCisgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0
dHJLZXlDbGFzc1ByaXZhdGUsCisgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBycCwKKyAgICAg
ICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IHNlY0F0dHJBcHBsaWNhdGlvblRhZy5nZXQo
KSwKKyAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTLAorICAg
ICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlOiAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlQWZ0ZXJG
aXJzdFVubG9jaworICAgIH07CisgICAgc3RhdHVzID0gU2VjSXRlbUFkZChicmlkZ2VfY2FzdChh
ZGRRdWVyeSksIE5VTEwpOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgY3JlYXRlTlNFcnJv
ckZyb21XS0Vycm9ySWZOZWNlc3NhcnkoZXJyb3IsIFdLRXJyb3JVbmtub3duKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIG5zQ3JlZGVudGlhbElkLmF1dG9y
ZWxlYXNlKCk7CisjZWxzZQorICAgIHJldHVybiBudWxscHRyOworI2VuZGlmIC8vIEVOQUJMRShX
RUJfQVVUSE4pCit9CisKKysgKE5TRGF0YSAqKWV4cG9ydExvY2FsQXV0aGVudGljYXRvckNyZWRl
bnRpYWxXaXRoSUQ6KE5TRGF0YSAqKWNyZWRlbnRpYWxJRCBlcnJvcjooTlNFcnJvciAqKillcnJv
cgoreworI2lmIEVOQUJMRShXRUJfQVVUSE4pCisgICAgYXV0byBxdWVyeSA9IGFkb3B0TlMoW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAg
ICAoaWQpa1NlY0NsYXNzS2V5LCAoaWQpa1NlY0NsYXNzLAorICAgICAgICBjcmVkZW50aWFsSUQs
IChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWwsCisgICAgICAgIChpZClrU2VjQXR0cktleUNs
YXNzUHJpdmF0ZSwgKGlkKWtTZWNBdHRyS2V5Q2xhc3MsCisgICAgICAgIEBZRVMsIChpZClrU2Vj
UmV0dXJuUmVmLAorICAgICAgICBAWUVTLCAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hh
aW4sCisgICAgICAgIG5pbAorICAgIF0pOworICAgIHVwZGF0ZVF1ZXJ5SWZOZWNlc3NhcnkocXVl
cnkuZ2V0KCkpOworICAgIENGVHlwZVJlZiBwcml2YXRlS2V5UmVmID0gbnVsbHB0cjsKKyAgICBP
U1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKGJyaWRnZV9jYXN0KHF1ZXJ5Lmdl
dCgpKSwgJnByaXZhdGVLZXlSZWYpOworICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNl
Y0l0ZW1Ob3RGb3VuZCkgeworICAgICAgICBjcmVhdGVOU0Vycm9yRnJvbVdLRXJyb3JJZk5lY2Vz
c2FyeShlcnJvciwgV0tFcnJvckNyZWRlbnRpYWxOb3RGb3VuZCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKyAgICBhdXRvIHByaXZhdGVLZXkgPSBhZG9wdENGKHByaXZhdGVLZXlS
ZWYpOworICAgIENGRXJyb3JSZWYgZXJyb3JSZWYgPSBudWxscHRyOworICAgIGF1dG8gcHJpdmF0
ZUtleVJlcCA9IGFkb3B0Q0YoU2VjS2V5Q29weUV4dGVybmFsUmVwcmVzZW50YXRpb24oKF9fYnJp
ZGdlIFNlY0tleVJlZikoKGlkKXByaXZhdGVLZXlSZWYpLCAmZXJyb3JSZWYpKTsKKyAgICBhdXRv
IHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJvclJlZik7CisgICAgaWYgKGVycm9yUmVmKSB7Cisg
ICAgICAgIGNyZWF0ZU5TRXJyb3JGcm9tV0tFcnJvcklmTmVjZXNzYXJ5KGVycm9yLCBXS0Vycm9y
Q3JlZGVudGlhbE5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAg
ICAgICAKKyAgICBbcXVlcnkgcmVtb3ZlT2JqZWN0Rm9yS2V5OihpZClrU2VjUmV0dXJuUmVmXTsK
KyAgICBbcXVlcnkgc2V0T2JqZWN0OiBAWUVTIGZvcktleTooaWQpa1NlY1JldHVybkF0dHJpYnV0
ZXNdOworICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzQXJyYXlSZWYgPSBudWxscHRyOworICAgIHN0
YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoYnJpZGdlX2Nhc3QocXVlcnkuZ2V0KCkpLCAmYXR0
cmlidXRlc0FycmF5UmVmKTsKKyAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVt
Tm90Rm91bmQpIHsKKyAgICAgICAgY3JlYXRlTlNFcnJvckZyb21XS0Vycm9ySWZOZWNlc3Nhcnko
ZXJyb3IsIFdLRXJyb3JDcmVkZW50aWFsTm90Rm91bmQpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICB9CisgICAgTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzID0gKF9fYnJpZGdlIE5TRGlj
dGlvbmFyeSAqKWF0dHJpYnV0ZXNBcnJheVJlZjsKKworICAgIGludDY0X3Qga2V5VHlwZSwga2V5
U2l6ZTsKKyAgICBpZiAoIUNGTnVtYmVyR2V0VmFsdWUoKF9fYnJpZGdlIENGTnVtYmVyUmVmKWF0
dHJpYnV0ZXNbYnJpZGdlX2lkX2Nhc3Qoa1NlY0F0dHJLZXlUeXBlKV0sIGtDRk51bWJlclNJbnQ2
NFR5cGUsICZrZXlUeXBlKSkgeworICAgICAgICBjcmVhdGVOU0Vycm9yRnJvbVdLRXJyb3JJZk5l
Y2Vzc2FyeShlcnJvciwgV0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWwpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisgICAgaWYgKCFDRk51bWJlckdldFZhbHVlKChfX2JyaWRnZSBD
Rk51bWJlclJlZilhdHRyaWJ1dGVzW2JyaWRnZV9pZF9jYXN0KGtTZWNBdHRyS2V5U2l6ZUluQml0
cyldLCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAma2V5U2l6ZSkpIHsKKyAgICAgICAgY3JlYXRlTlNF
cnJvckZyb21XS0Vycm9ySWZOZWNlc3NhcnkoZXJyb3IsIFdLRXJyb3JNYWxmb3JtZWRDcmVkZW50
aWFsKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIAorICAgIGNib3I6OkNC
T1JWYWx1ZTo6TWFwVmFsdWUgY3JlZGVudGlhbE1hcDsKKyAgICBjcmVkZW50aWFsTWFwW2Nib3I6
OkNCT1JWYWx1ZShXZWJDb3JlOjpwcml2YXRlS2V5S2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUoV2Vi
Q29yZTo6dG9CdWZmZXJTb3VyY2UoYnJpZGdlX2lkX2Nhc3QocHJpdmF0ZUtleVJlcC5nZXQoKSkp
KTsKKyAgICBjcmVkZW50aWFsTWFwW2Nib3I6OkNCT1JWYWx1ZShXZWJDb3JlOjprZXlUeXBlS2V5
KV0gPSBjYm9yOjpDQk9SVmFsdWUoa2V5VHlwZSk7CisgICAgY3JlZGVudGlhbE1hcFtjYm9yOjpD
Qk9SVmFsdWUoV2ViQ29yZTo6a2V5U2l6ZUtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGtleVNpemUp
OworICAgIGNyZWRlbnRpYWxNYXBbY2Jvcjo6Q0JPUlZhbHVlKFdlYkNvcmU6OnJlbHlpbmdQYXJ0
eUtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKFN0cmluZyhhdHRyaWJ1dGVzW2JyaWRnZV9pZF9jYXN0
KGtTZWNBdHRyTGFiZWwpXSkpOworICAgIGF1dG8gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JP
UlJlYWRlcjo6cmVhZCh2ZWN0b3JGcm9tTlNEYXRhKGF0dHJpYnV0ZXNbYnJpZGdlX2lkX2Nhc3Qo
a1NlY0F0dHJBcHBsaWNhdGlvblRhZyldKSk7CisgICAgaWYgKCFkZWNvZGVkUmVzcG9uc2UgfHwg
IWRlY29kZWRSZXNwb25zZS0+aXNNYXAoKSkgeworICAgICAgICBjcmVhdGVOU0Vycm9yRnJvbVdL
RXJyb3JJZk5lY2Vzc2FyeShlcnJvciwgV0tFcnJvck1hbGZvcm1lZENyZWRlbnRpYWwpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisgICAgY3JlZGVudGlhbE1hcFtjYm9yOjpDQk9S
VmFsdWUoV2ViQ29yZTo6YXBwbGljYXRpb25UYWdLZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShXVEZN
b3ZlKCpkZWNvZGVkUmVzcG9uc2UpKTsKKyAgICBhdXRvIHNlcmlhbGl6ZWRDcmVkZW50aWFsID0g
Y2Jvcjo6Q0JPUldyaXRlcjo6d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUoY3JlZGVudGlh
bE1hcCkpKTsKKyAgICByZXR1cm4gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRl
czpzZXJpYWxpemVkQ3JlZGVudGlhbC52YWx1ZSgpLmRhdGEoKSBsZW5ndGg6c2VyaWFsaXplZENy
ZWRlbnRpYWwudmFsdWUoKS5zaXplKCldKS5hdXRvcmVsZWFzZSgpOworI2Vsc2UKKyAgICByZXR1
cm4gbnVsbHB0cjsKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQorfQorCiAtICh2b2lkKWNh
bmNlbAogewogI2lmIEVOQUJMRShXRUJfQVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1
dGhlbnRpY2F0b3IubW0KaW5kZXggNDZkMDAwMzJjN2JkZjBjMjk0ZGFjNjJkYjQyYTk3YzBkMjc4
ZGI4OC4uZDIyYTJhZjFiOWM3Y2FlNzc4YTM0NDY4NTI1YjM1YjcxYjhlNTY1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjbGVhckFsbENyZWRlbnRpYWxzKCkKICAgICBhdXRvIHF1
ZXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBb
cXVlcnkgc2V0RGljdGlvbmFyeTpAewogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0Ns
YXNzS2V5LAotICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NHcm91cDogKGlkKVN0cmluZyhMb2Nh
bEF1dGhlbnRpY2F0aW9yQWNjZXNzR3JvdXApLAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3NH
cm91cDogKGlkKVN0cmluZyhMb2NhbEF1dGhlbnRpY2F0b3JBY2Nlc3NHcm91cCksCiAgICAgICAg
IChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFpbjogQFlFUwogICAgIH1dOwogICAgIHVw
ZGF0ZVF1ZXJ5SWZOZWNlc3NhcnkocXVlcnkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxD
b25uZWN0aW9uLm1tCmluZGV4IGEwNWYzMDUyMjI5OTM4ZTNmMWIwYTkyZjE3NDM3ZWYzOWVhYmZj
NTAuLmU0ZTk3OWY0OWRhODhlZjkyY2MyZDYyMjY2MTM1ZTkxOTA0OTA4ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29u
bmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KQEAgLTE3MCw3ICsxNzAsNyBAQCBSZXRhaW5QdHI8
U2VjS2V5UmVmPiBMb2NhbENvbm5lY3Rpb246OmNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExB
Q29udGV4dCAqY29udAogICAgIFJldGFpblB0ciBwcml2YXRlS2V5QXR0cmlidXRlcyA9IEB7CiAg
ICAgICAgIChpZClrU2VjQXR0ckFjY2Vzc0NvbnRyb2w6IChpZClhY2Nlc3NDb250cm9sUmVmLAog
ICAgICAgICAoaWQpa1NlY0F0dHJJc1Blcm1hbmVudDogQFlFUywKLSAgICAgICAgKGlkKWtTZWNB
dHRyQWNjZXNzR3JvdXA6IChpZClTdHJpbmcoTG9jYWxBdXRoZW50aWNhdGlvckFjY2Vzc0dyb3Vw
KSwKKyAgICAgICAgKGlkKWtTZWNBdHRyQWNjZXNzR3JvdXA6IChpZClTdHJpbmcoTG9jYWxBdXRo
ZW50aWNhdG9yQWNjZXNzR3JvdXApLAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogc2VjQXR0
ckxhYmVsLAogICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogc2VjQXR0ckFwcGxp
Y2F0aW9uVGFnLAogICAgIH07CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNDYwMTI0OTliZTEwZDNlOTFlODU4YjcxZjE0MDgyMWYyZThjODJmMS4u
MTg3NGYyY2Y2MTM2Y2EyYzUzMTQxYjI2OTJiYmY2ZTg5OGUxZThkMyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIy
LTAxLTI2ICBKIFBhc2NvZSAgPGpfcGFzY29lQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0
aG5dIFByb3ZpZGUgU1BJIHRvIGV4cG9ydC9pbXBvcnQgbG9jYWwgY3JlZGVudGlhbHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDExMgorICAgICAg
ICByZGFyOi8vODQ4MjIwMDAKKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgor
CisgICAgICAgIEFkZCB0ZXN0cyBmb3IgU1BJIHRvIGltcG9ydCAvIGV4cG9ydCBsb2NhbCB3ZWJh
dXRobiBjcmVkZW50aWFscy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOiBOZXcgdGVzdHMgZm9yIGltcG9ydC9leHBvcnQKKwogMjAyMi0wMS0yNSAgSm9u
YXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW0VXU10gU3VwcG9y
dCBwdWxsIHJlcXVlc3RzIGluIGJ1aWx0IHByb2R1Y3QgbWFuYWdlbWVudApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzNzY2ZTA5ZmQ1Zjk3ZGI0ZjM1NjFkMzk0ZjRm
OGY3MmYyMDg4ZDkuLjg4YzBhZjliNzQ0NGMwMGIyOWU1OTk4ZjAwYTQ3ZTZiZTA2NzhiZDQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTIyMjgsNiArMjIyOCw2MSBA
QCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFVwZGF0ZUNyZWRlbnRpYWxVc2VybmFtZSkK
ICAgICBjbGVhblVwS2V5Y2hhaW4oImV4YW1wbGUuY29tIik7CiB9CiAKK1RFU1QoV2ViQXV0aGVu
dGljYXRpb25QYW5lbCwgRXhwb3J0SW1wb3J0Q3JlZGVudGlhbCkKK3sKKyAgICByZXNldCgpOwor
CisgICAgYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0LCAiZXhhbXBs
ZS5jb20iLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisKKyAgICBhdXRvICpjcmVkZW50
aWFscyA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGdldEFsbExvY2FsQXV0aGVudGljYXRv
ckNyZWRlbnRpYWxzV2l0aEFjY2Vzc0dyb3VwOkAiY29tLmFwcGxlLlRlc3RXZWJLaXRBUEkiXTsK
KyAgICBFWFBFQ1RfTk9UX05VTEwoY3JlZGVudGlhbHMpOworICAgIEVYUEVDVF9FUShbY3JlZGVu
dGlhbHMgY291bnRdLCAxbHUpOworCisgICAgRVhQRUNUX05PVF9OVUxMKFtjcmVkZW50aWFscyBm
aXJzdE9iamVjdF0pOworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIGF1dG8gZXhwb3J0
ZWRLZXkgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBleHBvcnRMb2NhbEF1dGhlbnRpY2F0
b3JDcmVkZW50aWFsV2l0aElEOltjcmVkZW50aWFscyBmaXJzdE9iamVjdF1bX1dLTG9jYWxBdXRo
ZW50aWNhdG9yQ3JlZGVudGlhbElES2V5XSBlcnJvcjomZXJyb3JdOworICAgIAorICAgIGNsZWFu
VXBLZXljaGFpbigiZXhhbXBsZS5jb20iKTsKKworICAgIGF1dG8gY3JlZGVudGlhbElkID0gW19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwgaW1wb3J0TG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlh
bDpleHBvcnRlZEtleSBlcnJvcjomZXJyb3JdOworICAgIEVYUEVDVF9XS19TVFJFUShbW2NyZWRl
bnRpYWxzIGZpcnN0T2JqZWN0XVtfV0tMb2NhbEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsSURLZXld
IGJhc2U2NEVuY29kZWRTdHJpbmdXaXRoT3B0aW9uczowXSwgW2NyZWRlbnRpYWxJZCBiYXNlNjRF
bmNvZGVkU3RyaW5nV2l0aE9wdGlvbnM6MF0pOworCisgICAgY2xlYW5VcEtleWNoYWluKCJleGFt
cGxlLmNvbSIpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIEV4cG9ydEltcG9y
dER1cGxpY2F0ZUNyZWRlbnRpYWwpCit7CisgICAgcmVzZXQoKTsKKyAgICBjbGVhblVwS2V5Y2hh
aW4oIiIpOworCisgICAgYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0
LCAiZXhhbXBsZS5jb20iLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisKKyAgICBhdXRv
ICpjcmVkZW50aWFscyA9IFtfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsIGdldEFsbExvY2FsQXV0
aGVudGljYXRvckNyZWRlbnRpYWxzV2l0aEFjY2Vzc0dyb3VwOkAiY29tLmFwcGxlLlRlc3RXZWJL
aXRBUEkiXTsKKyAgICBFWFBFQ1RfTk9UX05VTEwoY3JlZGVudGlhbHMpOworICAgIEVYUEVDVF9F
UShbY3JlZGVudGlhbHMgY291bnRdLCAxbHUpOworCisgICAgRVhQRUNUX05PVF9OVUxMKFtjcmVk
ZW50aWFscyBmaXJzdE9iamVjdF0pOworICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgIGF1
dG8gZXhwb3J0ZWRLZXkgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBleHBvcnRMb2NhbEF1
dGhlbnRpY2F0b3JDcmVkZW50aWFsV2l0aElEOltjcmVkZW50aWFscyBmaXJzdE9iamVjdF1bX1dL
TG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbElES2V5XSBlcnJvcjomZXJyb3JdOworCisgICAg
YXV0byBjcmVkZW50aWFsSWQgPSBbX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbCBpbXBvcnRMb2Nh
bEF1dGhlbnRpY2F0b3JDcmVkZW50aWFsOmV4cG9ydGVkS2V5IGVycm9yOiZlcnJvcl07CisgICAg
RVhQRUNUX0VRKGNyZWRlbnRpYWxJZCwgbmlsKTsKKyAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwg
V0tFcnJvckR1cGxpY2F0ZUNyZWRlbnRpYWwpOworCisgICAgY2xlYW5VcEtleWNoYWluKCJleGFt
cGxlLmNvbSIpOworfQorCitURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIEltcG9ydE1hbGZv
cm1lZENyZWRlbnRpYWwpCit7CisgICAgcmVzZXQoKTsKKworICAgIE5TRXJyb3IgKmVycm9yID0g
bmlsOworICAgIGF1dG8gY3JlZGVudGlhbElkID0gW19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwg
aW1wb3J0TG9jYWxBdXRoZW50aWNhdG9yQ3JlZGVudGlhbDphZG9wdE5TKFtbTlNEYXRhIGFsbG9j
XSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6dGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQg
b3B0aW9uczowXSkuZ2V0KCkgZXJyb3I6JmVycm9yXTsKKworICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBXS0Vycm9yTWFsZm9ybWVkQ3JlZGVudGlhbCk7CisgICAgRVhQRUNUX0VRKGNyZWRlbnRp
YWxJZCwgbmlsKTsKK30KKwogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVD
cmVkZW50aWFsKQogewogICAgIHJlc2V0KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>