<?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>269315</bug_id>
          
          <creation_ts>2024-02-13 12:32:57 -0800</creation_ts>
          <short_desc>REGRESSION(274530@main): [Win]: ASSERTION FAILED: (m_client &amp;amp;&amp;amp; !client) || (!m_client &amp;amp;&amp;amp; client) in Inspector::RemoteInspector::setClient</short_desc>
          <delta_ts>2024-02-13 12:39:25 -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>New Bugs</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>
          
          <blocked>198055</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>fujii</cc>
    
    <cc>haruhisa.shin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2013260</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-02-13 12:32:57 -0800</bug_when>
    <thetext>https://commits.webkit.org/274530@main introduced a regression:
[Win]: ASSERTION FAILED: (m_client &amp;amp;&amp;amp; !client) || (!m_client &amp;amp;&amp;amp; client) in Inspector::RemoteInspector::setClient

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2013261</commentid>
    <comment_count>1</comment_count>
      <attachid>469853</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2024-02-13 12:33:01 -0800</bug_when>
    <thetext>Created attachment 469853
[fast-cq] REVERT of 274530@main

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2013264</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-02-13 12:38:38 -0800</bug_when>
    <thetext>Committed 274569@main (20d2a669fc79): &lt;https://commits.webkit.org/274569@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 469853.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2013265</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-02-13 12:39:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/122904538&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469853</attachid>
            <date>2024-02-13 12:33:01 -0800</date>
            <delta_ts>2024-02-13 12:38:39 -0800</delta_ts>
            <desc>[fast-cq] REVERT of 274530@main</desc>
            <filename>bug-269315-20240213203300.patch</filename>
            <type>text/plain</type>
            <size>33024</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSBhNWI1OTE5ZTZmYzUzZDQwOGVkOGExOTIxZGU1NDMyMTU1ZDlmMzRjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBUdWUsIDEzIEZlYiAyMDI0IDIwOjMyOjU4ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI3NDUzMEBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2OTMxNQoKW1dpbl06IEFTU0VSVElPTiBGQUlMRUQ6IChtX2Ns
aWVudCAmYW1wOyZhbXA7ICFjbGllbnQpIHx8ICghbV9jbGllbnQgJmFtcDsmYW1wOyBjbGllbnQp
IGluIEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzZXRDbGllbnQKClJldmVydGVkIGNoYW5n
ZXNldDoKCiJbV2luXSBFbmFibGUgV2ViRHJpdmVyIGF1dG9tYXRpb24gd2l0aCB3aW5jYWlybyBh
cyBjbGllbnQiCmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgwNTUK
aHR0cHM6Ly9jb21taXRzLndlYmtpdC5vcmcvMjc0NTMwQG1haW4KLS0tCiBTb3VyY2UvV2ViRHJp
dmVyL3NvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAgfCAgIDQgLQogU291cmNlL1dlYktpdC9Q
bGF0Zm9ybVdpbi5jbWFrZSAgICAgICAgICAgICAgIHwgICAzIC0KIC4uLi9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmNwcCAgICAgICB8ICAgNSAtCiAuLi4vd2luL1dlYkF1dG9tYXRp
b25TZXNzaW9uV2luLmNwcCAgICAgICAgICAgfCAzNjUgLS0tLS0tLS0tLS0tLS0tLS0tCiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgICAgfCAgMTIgLQogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCAgICAgIHwgICA2IC0KIC4uLi9VSVBy
b2Nlc3Mvd2luL0F1dG9tYXRpb25DbGllbnRXaW4uY3BwICAgICB8IDEyMCAtLS0tLS0KIC4uLi9V
SVByb2Nlc3Mvd2luL0F1dG9tYXRpb25DbGllbnRXaW4uaCAgICAgICB8ICA4MCAtLS0tCiAuLi4v
VUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgICAgICAgfCAgIDMgLQogU291cmNl
L2NtYWtlL09wdGlvbnNXaW4uY21ha2UgICAgICAgICAgICAgICAgIHwgICA0IC0KIFRvb2xzL01p
bmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNwcCB8ICAxNiAtCiBUb29scy9NaW5p
QnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5oICAgfCAgIDIgLQogMTIgZmlsZXMgY2hh
bmdlZCwgNjIwIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vd2luL1dlYkF1dG9tYXRpb25TZXNzaW9uV2luLmNwcAogZGVs
ZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9BdXRvbWF0aW9uQ2xp
ZW50V2luLmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9BdXRvbWF0aW9uQ2xpZW50V2luLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3Nv
Y2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNz
aW9uSG9zdFNvY2tldC5jcHAKaW5kZXggOTJjYzg4MmY1MzM4Li5jODZiNmQ0ZGRjNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L1Nlc3Npb25Ib3N0U29ja2V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9TZXNzaW9uSG9zdFNvY2tldC5jcHAKQEAgLTE3Miwx
MCArMTcyLDYgQEAgdm9pZCBTZXNzaW9uSG9zdDo6c2V0VGFyZ2V0TGlzdCh1aW50NjRfdCBjb25u
ZWN0aW9uSUQsIFZlY3RvcjxUYXJnZXQ+JiYgdGFyZ2V0TGkKICAgICAgICAgLy8gRGlzY29ubmVj
dGVkIGZyb20gYmFja2VuZAogICAgICAgICBtX2NsaWVudElEID0gc3RkOjpudWxsb3B0OwogICAg
ICAgICBpbnNwZWN0b3JEaXNjb25uZWN0ZWQoKTsKLSAgICAgICAgaWYgKG1fc3RhcnRTZXNzaW9u
Q29tcGxldGlvbkhhbmRsZXIpIHsKLSAgICAgICAgICAgIGF1dG8gc3RhcnRTZXNzaW9uQ29tcGxl
dGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKG1fc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRs
ZXIsIG51bGxwdHIpOwotICAgICAgICAgICAgc3RhcnRTZXNzaW9uQ29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSwgInJlY2VpdmVkIGVtcHR5IHRhcmdldCBsaXN0Il9zKTsKLSAgICAgICAgfQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2lu
LmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBlYTYzNjM2MjUw
YzEuLjE2NzkzOTllMTFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCkBAIC02Nyw4ICs2Nyw2
IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQXV0b21hdGlv
bi9jYWlyby9XZWJBdXRvbWF0aW9uU2Vzc2lvbkNhaXJvLmNwcAogCi0gICAgVUlQcm9jZXNzL0F1
dG9tYXRpb24vd2luL1dlYkF1dG9tYXRpb25TZXNzaW9uV2luLmNwcAotCiAgICAgVUlQcm9jZXNz
L0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKICAgICBVSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0
YXRlQ29kaW5nTm9uZS5jcHAKICAgICBVSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKQEAg
LTg4LDcgKzg2LDYgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKIAogICAgIFVJUHJvY2Vz
cy93Yy9EcmF3aW5nQXJlYVByb3h5V0MuY3BwCiAKLSAgICBVSVByb2Nlc3Mvd2luL0F1dG9tYXRp
b25DbGllbnRXaW4uY3BwCiAgICAgVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKICAg
ICBVSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwCiAgICAgVUlQcm9jZXNz
L3dpbi9XZWJQYWdlUHJveHlXaW4uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDFmZjZm
YzZmZDVmZS4uMjU1Y2Y2OTkxOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMzY1LDEy
ICszNjUsNyBAQCBJbnNwZWN0b3I6OlByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IFdlYkF1
dG9tYXRpb25TZXNzaW9uOjpjbG9zZUJyb3dzaW5nQ29udAogICAgIGlmICghcGFnZSkKICAgICAg
ICAgU1lOQ19GQUlMX1dJVEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAKLSNp
ZiBQTEFURk9STShXSU4pIC8vIEZJWE1FOiBhbHNvIFBMQVRGT1JNKFBMQVlTVEFUSU9OKSBzaG91
bGQgYmUgYWRkZWQKLSAgICAvLyBXZSBkb24ndCBoYXZlIHRvIGNsb3NlIHBhZ2Uvd2luZG93L2Fw
cGxpY2F0aW9uLCBidXQgd2FudCB0byBkaXNjb25uZWN0IHRvIGF1dG9tYXRpb24gZnJvbnRlbmQu
Ci0gICAgdGVybWluYXRlKCk7Ci0jZWxzZQogICAgIHBhZ2UtPmNsb3NlUGFnZSgpOwotI2VuZGlm
CiAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi93aW4vV2ViQXV0b21hdGlvblNlc3Npb25XaW4uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi93aW4vV2ViQXV0b21hdGlvblNlc3Npb25XaW4uY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTgyMGI5NTNlYmMuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL3dpbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvbldpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNjUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyNCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViQXV0b21hdGlvblNl
c3Npb24uaCIKLQotI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKLSNpbmNsdWRl
ICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiV2ViRXZlbnRGYWN0b3J5LmgiCi0j
aW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dzS2V5Ym9h
cmRDb2Rlcy5oPgotI2luY2x1ZGUgPFdlYktpdC9XS0V2ZW50Lmg+Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLXN0YXRpYyB2b2lkIGRvTW91c2VCdXR0
b25FdmVudChXZWJQYWdlUHJveHkmIHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb24gaW50ZXJhY3Rpb24s
IE1vdXNlQnV0dG9uIGJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGxvY2F0aW9uSW5W
aWV3LCBPcHRpb25TZXQ8V2ViRXZlbnRNb2RpZmllcj4ga2V5TW9kaWZpZXJzKQotewotICAgIEFT
U0VSVChpbnRlcmFjdGlvbiAhPSBNb3VzZUludGVyYWN0aW9uOjpTaW5nbGVDbGljayk7Ci0KLSAg
ICBVSU5UIG1lc3NhZ2U7Ci0gICAgV1BBUkFNIHdwYXJhbSA9IDA7Ci0gICAgTFBBUkFNIGxwYXJh
bSA9IE1BS0VMUEFSQU0obG9jYXRpb25JblZpZXcueCgpLCBsb2NhdGlvbkluVmlldy55KCkpOwot
Ci0gICAgaWYgKGtleU1vZGlmaWVycy5jb250YWlucyhXZWJFdmVudE1vZGlmaWVyOjpTaGlmdEtl
eSkpCi0gICAgICAgIHdwYXJhbSB8PSBNS19TSElGVDsKLSAgICBpZiAoa2V5TW9kaWZpZXJzLmNv
bnRhaW5zKFdlYkV2ZW50TW9kaWZpZXI6OkNvbnRyb2xLZXkpKQotICAgICAgICB3cGFyYW0gfD0g
TUtfQ09OVFJPTDsKLQotICAgIHN3aXRjaCAoaW50ZXJhY3Rpb24pIHsKLSAgICBjYXNlIE1vdXNl
SW50ZXJhY3Rpb246Ok1vdmU6Ci0gICAgICAgIG1lc3NhZ2UgPSBXTV9NT1VTRU1PVkU7Ci0gICAg
ICAgIHN3aXRjaCAoYnV0dG9uKSB7Ci0gICAgICAgIGNhc2UgTW91c2VCdXR0b246OlJpZ2h0Ogot
ICAgICAgICAgICAgd3BhcmFtIHw9IE1LX1JCVVRUT047Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBNb3VzZUJ1dHRvbjo6TWlkZGxlOgotICAgICAgICAgICAgd3BhcmFtIHw9IE1L
X01CVVRUT047Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIHdwYXJhbSB8PSBNS19MQlVUVE9OOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpEb3duOgotICAgICAg
ICBzd2l0Y2ggKGJ1dHRvbikgewotICAgICAgICBjYXNlIE1vdXNlQnV0dG9uOjpSaWdodDoKLSAg
ICAgICAgICAgIG1lc3NhZ2UgPSBXTV9SQlVUVE9ORE9XTjsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIE1vdXNlQnV0dG9uOjpNaWRkbGU6Ci0gICAgICAgICAgICBtZXNzYWdlID0g
V01fTUJVVFRPTkRPV047Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIG1lc3NhZ2UgPSBXTV9MQlVUVE9ORE9XTjsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTW91c2VJbnRlcmFjdGlvbjo6VXA6
Ci0gICAgICAgIHN3aXRjaCAoYnV0dG9uKSB7Ci0gICAgICAgIGNhc2UgTW91c2VCdXR0b246OlJp
Z2h0OgotICAgICAgICAgICAgbWVzc2FnZSA9IFdNX1JCVVRUT05VUDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIE1vdXNlQnV0dG9uOjpNaWRkbGU6Ci0gICAgICAgICAgICBtZXNz
YWdlID0gV01fTUJVVFRPTlVQOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBtZXNzYWdlID0gV01fTEJVVFRPTlVQOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNb3VzZUludGVyYWN0aW9uOjpE
b3VibGVDbGljazoKLSAgICAgICAgc3dpdGNoIChidXR0b24pIHsKLSAgICAgICAgY2FzZSBNb3Vz
ZUJ1dHRvbjo6UmlnaHQ6Ci0gICAgICAgICAgICBtZXNzYWdlID0gV01fUkJVVFRPTkRCTENMSzsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1vdXNlQnV0dG9uOjpNaWRkbGU6Ci0g
ICAgICAgICAgICBtZXNzYWdlID0gV01fTUJVVFRPTkRCTENMSzsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgbWVzc2FnZSA9IFdNX0xCVVRUT05EQkxD
TEs7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBk
ZWZhdWx0OgotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0KLSAgICBhdXRvIGh3bmQgPSByZWludGVycHJldF9jYXN0PEhXTkQ+KHBh
Z2Uudmlld1dpZGdldCgpKTsKLSAgICBwYWdlLmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91
c2VFdmVudChod25kLCBtZXNzYWdlLCB3cGFyYW0sIGxwYXJhbSwgeyB9KSk7Ci19Ci0KLXZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVNb3VzZUludGVyYWN0aW9uKFdl
YlBhZ2VQcm94eSYgcGFnZSwgTW91c2VJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgTW91c2VCdXR0
b24gYnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgbG9jYXRpb25JblZpZXcsIE9wdGlv
blNldDxXZWJFdmVudE1vZGlmaWVyPiBrZXlNb2RpZmllcnMsIGNvbnN0IFN0cmluZyYgcG9pbnRl
clR5cGUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHBvaW50ZXJUeXBlKTsKLQotICAgIC8vIFNpbmNl
IHRoZXJlIGlzIG5vIGRlZmluaXRpb24gZm9yICJTaW5nbGVDbGljayIgaW4gV2luZG93TWVzc2Fn
ZSwgcmVwbGFjZSBpdCB3aXRoIE1vdXNlRG93biBhbmQgTW91c2VVcC4KLSAgICBpZiAoaW50ZXJh
Y3Rpb24gPT0gTW91c2VJbnRlcmFjdGlvbjo6U2luZ2xlQ2xpY2spIHsKLSAgICAgICAgZG9Nb3Vz
ZUJ1dHRvbkV2ZW50KHBhZ2UsIE1vdXNlSW50ZXJhY3Rpb246OkRvd24sIGJ1dHRvbiwgbG9jYXRp
b25JblZpZXcsIGtleU1vZGlmaWVycyk7Ci0gICAgICAgIGRvTW91c2VCdXR0b25FdmVudChwYWdl
LCBNb3VzZUludGVyYWN0aW9uOjpVcCwgYnV0dG9uLCBsb2NhdGlvbkluVmlldywga2V5TW9kaWZp
ZXJzKTsKLSAgICB9IGVsc2UKLSAgICAgICAgZG9Nb3VzZUJ1dHRvbkV2ZW50KHBhZ2UsIGludGVy
YWN0aW9uLCBidXR0b24sIGxvY2F0aW9uSW5WaWV3LCBrZXlNb2RpZmllcnMpOwotfQotCi1zdGF0
aWMgaW50IGtleUNvZGVGb3JWaXJ0dWFsS2V5KEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXkga2V5KQotewotICAgIHN3aXRjaCAoa2V5KSB7Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpTaGlmdDoKLSAgICAgICAg
cmV0dXJuIFZLX0xTSElGVDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OlNoaWZ0UmlnaHQ6Ci0gICAgICAgIHJldHVybiBWS19SU0hJRlQ7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb250
cm9sOgotICAgICAgICByZXR1cm4gVktfTENPTlRST0w7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDb250cm9sUmlnaHQ6Ci0gICAgICAgIHJl
dHVybiBWS19SQ09OVFJPTDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OkFsdGVybmF0ZToKLSAgICAgICAgcmV0dXJuIFZLX0xNRU5VOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6QWx0ZXJu
YXRlUmlnaHQ6Ci0gICAgICAgIHJldHVybiBWS19STUVOVTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok1ldGE6Ci0gICAgICAgIHJldHVybiBW
S19MTUVOVTsgICAvKiBGSVhNRTogaXMgdGhpcyB2YWxpZD8gKi8KLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok1ldGFSaWdodDoKLSAgICAgICAg
cmV0dXJuIFZLX1JNRU5VOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlv
bjo6VmlydHVhbEtleTo6Q29tbWFuZDoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1
dG9tYXRpb246OlZpcnR1YWxLZXk6OkNvbW1hbmRSaWdodDoKLSAgICAgICAgcmV0dXJuIFZLX0VY
RUNVVEU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpIZWxwOgotICAgICAgICByZXR1cm4gVktfSEVMUDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkJhY2tzcGFjZToKLSAgICAgICAgcmV0
dXJuIFZLX0JBQ0s7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpW
aXJ0dWFsS2V5OjpUYWI6Ci0gICAgICAgIHJldHVybiBWS19UQUI7Ci0gICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpDbGVhcjoKLSAgICAgICAgcmV0
dXJuIFZLX0NMRUFSOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6RW50ZXI6Ci0gICAgICAgIHJldHVybiBWS19SRVRVUk47Ci0gICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpQYXVzZToKLSAgICAg
ICAgcmV0dXJuIFZLX1BBVVNFOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6Q2FuY2VsOgotICAgICAgICByZXR1cm4gVktfQ0FOQ0VMOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RXNjYXBl
OgotICAgICAgICByZXR1cm4gVktfRVNDQVBFOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGFnZVVwOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UGFnZVVwUmlnaHQ6Ci0gICAgICAgIHJl
dHVybiBWS19QUklPUjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246
OlZpcnR1YWxLZXk6OlBhZ2VEb3duOgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6UGFnZURvd25SaWdodDoKLSAgICAgICAgcmV0dXJuIFZLX05F
WFQ7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5
OjpFbmQ6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFs
S2V5OjpFbmRSaWdodDoKLSAgICAgICAgcmV0dXJuIFZLX0VORDsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkhvbWU6Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpIb21lUmlnaHQ6Ci0gICAg
ICAgIHJldHVybiBWS19IT01FOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21h
dGlvbjo6VmlydHVhbEtleTo6TGVmdEFycm93OgotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6TGVmdEFycm93UmlnaHQ6Ci0gICAgICAgIHJldHVy
biBWS19MRUZUOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6Vmly
dHVhbEtleTo6VXBBcnJvdzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlZpcnR1YWxLZXk6OlVwQXJyb3dSaWdodDoKLSAgICAgICAgcmV0dXJuIFZLX1VQOwotICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6UmlnaHRB
cnJvdzoKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6OlJpZ2h0QXJyb3dSaWdodDoKLSAgICAgICAgcmV0dXJuIFZLX1JJR0hUOwotICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RG93bkFycm93Ogot
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RG93
bkFycm93UmlnaHQ6Ci0gICAgICAgIHJldHVybiBWS19ET1dOOwotICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SW5zZXJ0OgotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6SW5zZXJ0UmlnaHQ6Ci0g
ICAgICAgIHJldHVybiBWS19JTlNFUlQ7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpEZWxldGU6Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpEZWxldGVSaWdodDoKLSAgICAgICAgcmV0dXJu
IFZLX0RFTEVURTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OlNwYWNlOgotICAgICAgICByZXR1cm4gVktfU1BBQ0U7Ci0gICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpTZW1pY29sb246Ci0gICAg
ICAgIHJldHVybiBWS19PRU1fMTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9t
YXRpb246OlZpcnR1YWxLZXk6OkVxdWFsczoKLSAgICAgICAgcmV0dXJuIFZLX09FTV9NSU5VUzsK
LSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OlJl
dHVybjoKLSAgICAgICAgcmV0dXJuIFZLX1JFVFVSTjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDA6Ci0gICAgICAgIHJldHVy
biBWS19OVU1QQUQwOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6TnVtYmVyUGFkMToKLSAgICAgICAgcmV0dXJuIFZLX05VTVBBRDE7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWQyOgotICAgICAgICByZXR1cm4gVktfTlVNUEFEMjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDM6Ci0gICAgICAgIHJldHVy
biBWS19OVU1QQUQzOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6TnVtYmVyUGFkNDoKLSAgICAgICAgcmV0dXJuIFZLX05VTVBBRDQ7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWQ1OgotICAgICAgICByZXR1cm4gVktfTlVNUEFENTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDY6Ci0gICAgICAgIHJldHVy
biBWS19OVU1QQUQ2OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6TnVtYmVyUGFkNzoKLSAgICAgICAgcmV0dXJuIFZLX05VTVBBRDc7Ci0gICAg
Y2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQ
YWQ4OgotICAgICAgICByZXR1cm4gVktfTlVNUEFEODsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZDk6Ci0gICAgICAgIHJldHVy
biBWS19OVU1QQUQ5OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
VmlydHVhbEtleTo6TnVtYmVyUGFkTXVsdGlwbHk6Ci0gICAgICAgIHJldHVybiBWS19NVUxUSVBM
WTsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6
Ok51bWJlclBhZEFkZDoKLSAgICAgICAgcmV0dXJuIFZLX0FERDsKLSAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6Ok51bWJlclBhZFN1YnRyYWN0Ogot
ICAgICAgICByZXR1cm4gVktfU1VCVFJBQ1Q7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWRTZXBhcmF0b3I6Ci0gICAgICAgIHJl
dHVybiBWS19TRVBBUkFUT1I7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpOdW1iZXJQYWREZWNpbWFsOgotICAgICAgICByZXR1cm4gVktfREVD
SU1BTDsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxL
ZXk6Ok51bWJlclBhZERpdmlkZToKLSAgICAgICAgcmV0dXJuIFZLX0RJVklERTsKLSAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uMToK
LSAgICAgICAgcmV0dXJuIFZLX0YxOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb24yOgotICAgICAgICByZXR1cm4gVktfRjI7Ci0g
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5j
dGlvbjM6Ci0gICAgICAgIHJldHVybiBWS19GMzsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9uNDoKLSAgICAgICAgcmV0dXJuIFZL
X0Y0OwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6RnVuY3Rpb241OgotICAgICAgICByZXR1cm4gVktfRjU7Ci0gICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjY6Ci0gICAgICAgIHJl
dHVybiBWS19GNjsKLSAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZp
cnR1YWxLZXk6OkZ1bmN0aW9uNzoKLSAgICAgICAgcmV0dXJuIFZLX0Y3OwotICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtleTo6RnVuY3Rpb244OgotICAg
ICAgICByZXR1cm4gVktfRjg7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0
aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjk6Ci0gICAgICAgIHJldHVybiBWS19GOTsKLSAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlZpcnR1YWxLZXk6OkZ1bmN0aW9u
MTA6Ci0gICAgICAgIHJldHVybiBWS19GMTA7Ci0gICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29s
OjpBdXRvbWF0aW9uOjpWaXJ0dWFsS2V5OjpGdW5jdGlvbjExOgotICAgICAgICByZXR1cm4gVktf
RjExOwotICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6VmlydHVhbEtl
eTo6RnVuY3Rpb24xMjoKLSAgICAgICAgcmV0dXJuIFZLX0YxMjsKLSAgICB9Ci0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBrZXlDb2Rl
Rm9yQ2hhcktleShDaGFyS2V5IGNoYXJLZXkpCi17Ci0gICAgaWYgKCdBJyA8PSBjaGFyS2V5ICYm
IGNoYXJLZXkgPD0gJ1onKQotICAgICAgICByZXR1cm4gVktfQSArIChjaGFyS2V5IC0gJ0EnKTsK
LSAgICBpZiAoJ2EnIDw9IGNoYXJLZXkgJiYgY2hhcktleSA8PSAneicpCi0gICAgICAgIHJldHVy
biBWS19BICsgKGNoYXJLZXkgLSAnYScpOwotICAgIGlmICgnMCcgPD0gY2hhcktleSAmJiBjaGFy
S2V5IDw9ICc5JykKLSAgICAgICAgcmV0dXJuIFZLXzAgKyAoY2hhcktleSAtICcwJyk7Ci0KLSAg
ICAvLyBGSVhNRTogd2Ugc2hvdWxkIGFkZCBzdXBwb3J0IGZvciBvdGhlciBzeW1ib2xzICghIiMk
JSYnKCk9fnxgQFtdKyo7Ojw+LC4vXD9fIGV0Yy4uLikKLSAgICAvLyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHVuc2lnbmVkIG1vZGlmaWVyc0Zvcktl
eUNvZGUodW5zaWduZWQga2V5Q29kZSkKLXsKLSAgICBzd2l0Y2ggKGtleUNvZGUpIHsKLSAgICBj
YXNlIFZLX1NISUZUOiAvLyBqdXN0IGluIGNhc2UKLSAgICBjYXNlIFZLX0xTSElGVDoKLSAgICBj
YXNlIFZLX1JTSElGVDoKLSAgICAgICAgcmV0dXJuIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXk7
Ci0gICAgY2FzZSBWS19DT05UUk9MOiAvLyBqdXN0IGluIGNhc2UKLSAgICBjYXNlIFZLX0xDT05U
Uk9MOgotICAgIGNhc2UgVktfUkNPTlRST0w6Ci0gICAgICAgIHJldHVybiBrV0tFdmVudE1vZGlm
aWVyc0NvbnRyb2xLZXk7Ci0gICAgY2FzZSBWS19NRU5VOiAvLyBqdXN0IGluIGNhc2UKLSAgICBj
YXNlIFZLX0xNRU5VOgotICAgIGNhc2UgVktfUk1FTlU6Ci0gICAgICAgIHJldHVybiBrV0tFdmVu
dE1vZGlmaWVyc0FsdEtleTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnBsYXRmb3JtU2ltdWxhdGVLZXlib2FyZEludGVyYWN0aW9uKFdlYlBh
Z2VQcm94eSYgcGFnZSwgS2V5Ym9hcmRJbnRlcmFjdGlvbiBpbnRlcmFjdGlvbiwgc3RkOjp2YXJp
YW50PFZpcnR1YWxLZXksIENoYXJLZXk+JiYga2V5KQotewotICAgIGludCBrZXlDb2RlOwotICAg
IFdURjo6c3dpdGNoT24oa2V5LAotICAgICAgICBbJl0oVmlydHVhbEtleSB2aXJ0dWFsS2V5KSB7
Ci0gICAgICAgICAgICBrZXlDb2RlID0ga2V5Q29kZUZvclZpcnR1YWxLZXkodmlydHVhbEtleSk7
Ci0gICAgICAgIH0sCi0gICAgICAgIFsmXShDaGFyS2V5IGNoYXJLZXkpIHsKLSAgICAgICAgICAg
IGtleUNvZGUgPSBrZXlDb2RlRm9yQ2hhcktleShjaGFyS2V5KTsKLSAgICAgICAgfQotICAgICk7
Ci0KLSAgICB1bnNpZ25lZCBtb2RpZmllcnMgPSBtb2RpZmllcnNGb3JLZXlDb2RlKGtleUNvZGUp
OwotCi0gICAgVUlOVCBtZXNzYWdlOwotICAgIFdQQVJBTSB3cGFyYW0gPSBrZXlDb2RlOwotICAg
IExQQVJBTSBscGFyYW0gPSAwOyAvLyBGSVhNRQotCi0gICAgc3dpdGNoIChpbnRlcmFjdGlvbikg
ewotICAgIGNhc2UgS2V5Ym9hcmRJbnRlcmFjdGlvbjo6S2V5UHJlc3M6Ci0gICAgICAgIG1fY3Vy
cmVudE1vZGlmaWVycyB8PSBtb2RpZmllcnM7Ci0gICAgICAgIG1lc3NhZ2UgPSBXTV9LRVlET1dO
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEtleWJvYXJkSW50ZXJhY3Rpb246OktleVJlbGVh
c2U6Ci0gICAgICAgIG1fY3VycmVudE1vZGlmaWVycyAmPSB+bW9kaWZpZXJzOwotICAgICAgICBt
ZXNzYWdlID0gV01fS0VZVVA7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgS2V5Ym9hcmRJbnRl
cmFjdGlvbjo6SW5zZXJ0QnlLZXk6Ci0gICAgICAgIG1lc3NhZ2UgPSBXTV9LRVlET1dOOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBhdXRvIGh3bmQgPSByZWludGVycHJldF9jYXN0PEhX
TkQ+KHBhZ2Uudmlld1dpZGdldCgpKTsKLSAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50IGV2ZW50
KGh3bmQsIG1lc3NhZ2UsIHdwYXJhbSwgbHBhcmFtLCB7IH0pOwotICAgIHBhZ2UuaGFuZGxlS2V5
Ym9hcmRFdmVudChldmVudCk7Ci19Ci0KLU9wdGlvblNldDxXZWJFdmVudE1vZGlmaWVyPiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cGxhdGZvcm1XZWJNb2RpZmllcnNGcm9tUmF3KHVuc2lnbmVkIG1v
ZGlmaWVycykKLXsKLSAgICBPcHRpb25TZXQ8V2ViRXZlbnRNb2RpZmllcj4gd2ViTW9kaWZpZXJz
OwotCi0gICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQWx0S2V5KQotICAgICAg
ICB3ZWJNb2RpZmllcnMuYWRkKFdlYkV2ZW50TW9kaWZpZXI6OkFsdEtleSk7Ci0gICAgaWYgKG1v
ZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleSkKLSAgICAgICAgd2ViTW9kaWZp
ZXJzLmFkZChXZWJFdmVudE1vZGlmaWVyOjpDb250cm9sS2V5KTsKLSAgICBpZiAobW9kaWZpZXJz
ICYga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSkKLSAgICAgICAgd2ViTW9kaWZpZXJzLmFkZChX
ZWJFdmVudE1vZGlmaWVyOjpTaGlmdEtleSk7Ci0KLSAgICByZXR1cm4gd2ViTW9kaWZpZXJzOwot
fQotCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpwbGF0Zm9ybVNpbXVsYXRlS2V5U2VxdWVu
Y2UoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIGtleVNlcXVlbmNlKQotewotICAg
IC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi91aWV2ZW50cy1jb2RlLyNrZXktYWxwaGFudW1lcmlj
LXdyaXRpbmctc3lzdGVtCi0gICAgU3RyaW5nIGtleUlkZW50aWZpZXIgPSAiS2V5Il9zICsga2V5
U2VxdWVuY2UuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsKLQotICAgIGF1dG8gaHduZCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8SFdORD4ocGFnZS52aWV3V2lkZ2V0KCkpOwotICAgIFN0cmluZyBrZXkg
PSAobV9jdXJyZW50TW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmllcnNTaGlmdEtleSkgPyBrZXlT
ZXF1ZW5jZS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIDoga2V5U2VxdWVuY2U7Ci0KLSAgICAv
LyBGSVhNRTogVGhlIExQQVJBTSBvZiBXTV9DSEFSIGlzIHVzZWQgYXMga2V5IHN0cm9rZSBtZXNz
YWdlIGZsYWcuCi0gICAgLy8gICAgICAgIElmIHdlIG5lZWQgdGhhdCBpbmZvcm1hdGlvbiwgdGhl
IDR0aCBhcmd1bWVudCBzaG91bGQgYmUgc2V0IHRvIGFuIGFwcHJvcHJpYXRlIHZhbHVlLCBub3Qg
MC4KLSAgICAvLyBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4z
Mi9pbnB1dGRldi93bS1jaGFyCi0gICAgLy8gaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2Vu
LXVzL3dpbmRvd3Mvd2luMzIvaW5wdXRkZXYvYWJvdXQta2V5Ym9hcmQtaW5wdXQja2V5c3Ryb2tl
LW1lc3NhZ2UtZmxhZ3MKLSAgICBOYXRpdmVXZWJLZXlib2FyZEV2ZW50IGV2ZW50KGh3bmQsIFdN
X0NIQVIsIGtleVNlcXVlbmNlLmNoYXJhY3RlckF0KDApLCAwLCB7IH0pOwotICAgIHBhZ2UuaGFu
ZGxlS2V5Ym9hcmRFdmVudChldmVudCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDk4YzA3N2Y4MzFi
OS4uNGEzYjE1YzM2MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC0yNDE5LDE2ICsyNDE5LDQgQEAgdm9pZCBzZXRMb2NrZG93bk1vZGVFbmFibGVk
R2xvYmFsbHlGb3JUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8Ym9vbD4pCiB9CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKFdJTikgLy8gRklYTUU6IHJlbW92ZSB0aGlzIGxpbmUgd2hlbiB0aGlzIGZlYXR1
cmUgaXMgZW5hYmxlZCBmb3IgcGxheXN0YXRpb24gcG9ydC4KLSNpZiBFTkFCTEUoUkVNT1RFX0lO
U1BFQ1RPUikKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFBhZ2VzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbihib29sIGNvbnRyb2xsZWQpCi17Ci0gICAgZm9yIChhdXRvJiBwcm9jZXNzIDogbV9wcm9j
ZXNzZXMpIHsKLSAgICAgICAgZm9yIChhdXRvJiBwYWdlIDogcHJvY2Vzcy0+cGFnZXMoKSkKLSAg
ICAgICAgICAgIHBhZ2UtPnNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJvbGxlZCk7Ci0g
ICAgfQotfQotI2VuZGlmCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA0YTNlZTEyNjM1ZjUuLjAyYTk2
OWYwNTJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC01
MzIsMTIgKzUzMiw2IEBAIHB1YmxpYzoKICAgICBpbnQzMl90IHVzZXJJZCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXNlcklkOyB9CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKFdJTikgLy8gRklYTUU6IHJl
bW92ZSB0aGlzIGxpbmUgd2hlbiB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZCBmb3IgcGxheXN0YXRp
b24gcG9ydC4KLSNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICB2b2lkIHNldFBhZ2Vz
Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sKTsKLSNlbmRpZgotI2VuZGlmCi0KICAgICBzdGF0
aWMgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVz
V2l0aEN1c3RvbVByb3RvY29sSGFuZGxlcnMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL0F1dG9tYXRpb25DbGllbnRXaW4uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL0F1dG9tYXRpb25DbGllbnRXaW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwNzZlNjZkYjZmNzIuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy93aW4vQXV0b21hdGlvbkNsaWVudFdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxMjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyNCBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiQXV0b21hdGlvbkNsaWVudFdpbi5oIgotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0jaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKLSNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0KLS8vIEF1dG9tYXRpb25T
ZXNzaW9uQ2xpZW50Ci1BdXRvbWF0aW9uU2Vzc2lvbkNsaWVudDo6QXV0b21hdGlvblNlc3Npb25D
bGllbnQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikKLXsKLSAgICBtX3Nlc3Npb25J
ZGVudGlmaWVyID0gc2Vzc2lvbklkZW50aWZpZXI7Ci19Ci0KLXZvaWQgQXV0b21hdGlvblNlc3Np
b25DbGllbnQ6OnJlcXVlc3ROZXdQYWdlV2l0aE9wdGlvbnMoV2ViS2l0OjpXZWJBdXRvbWF0aW9u
U2Vzc2lvbiYgc2Vzc2lvbiwgQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkJyb3dzaW5nQ29udGV4dE9w
dGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJQYWdlUHJveHkqKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgYXV0byBw
cm9jZXNzUG9vbCA9IHNlc3Npb24ucHJvdGVjdGVkUHJvY2Vzc1Bvb2woKTsKLSAgICBpZiAocHJv
Y2Vzc1Bvb2wgJiYgcHJvY2Vzc1Bvb2wtPnByb2Nlc3NlcygpLnNpemUoKSkgewotICAgICAgICAv
LyBTZXQgY29udHJvbGxlZEJ5QXV0b21hdGlvbiBmbGFnIHRvIGFsbCBwYWdlcyBpbiBhbGwgcHJv
Y2Vzc2VzCi0gICAgICAgIHByb2Nlc3NQb29sLT5zZXRQYWdlc0NvbnRyb2xsZWRCeUF1dG9tYXRp
b24odHJ1ZSk7Ci0gICAgICAgIC8vIFRoZSBkZWZhdWx0IHBhZ2UgZm9yIGF1dG9tYXRpb24gdGFy
Z2V0IGlzIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBmaXJzdCBwcm9jZXNzCi0gICAgICAgIGF1dG8m
IHByb2Nlc3NQcm94eSA9IHByb2Nlc3NQb29sLT5wcm9jZXNzZXMoKVswXTsKLSAgICAgICAgaWYg
KHByb2Nlc3NQcm94eS0+cGFnZUNvdW50KCkpIHsKLSAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsK
LSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHByb2Nlc3NQcm94eS0+cGFnZXMoKVswXS5w
dHIoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCFmb3VuZCkKLSAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobnVsbHB0cik7Ci19Ci0KLXZvaWQgQXV0b21hdGlvblNlc3Npb25DbGllbnQ6
OmRpZERpc2Nvbm5lY3RGcm9tUmVtb3RlKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb24mIHNl
c3Npb24pCi17Ci0gICAgc2Vzc2lvbi5zZXRDbGllbnQobnVsbHB0cik7Ci0KLSAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goWyZzZXNzaW9uXSB7Ci0gICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wg
PSBzZXNzaW9uLnByb3RlY3RlZFByb2Nlc3NQb29sKCk7Ci0gICAgICAgIGlmIChwcm9jZXNzUG9v
bCkgewotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25TZXNzaW9uKG51bGxw
dHIpOwotICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPnNldFBhZ2VzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbihmYWxzZSk7Ci0gICAgICAgIH0KLSAgICB9KTsKLX0KLQotLy8gQXV0b21hdGlvbkNsaWVu
dAotQXV0b21hdGlvbkNsaWVudDo6QXV0b21hdGlvbkNsaWVudChXZWJQcm9jZXNzUG9vbCYgcHJv
Y2Vzc1Bvb2wpCi0gICAgOiBtX3Byb2Nlc3NQb29sKHByb2Nlc3NQb29sKQotewotICAgIEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzaW5nbGV0b24oKS5zZXRDbGllbnQodGhpcyk7Ci19Ci0K
LUF1dG9tYXRpb25DbGllbnQ6On5BdXRvbWF0aW9uQ2xpZW50KCkKLXsKLSAgICBJbnNwZWN0b3I6
OlJlbW90ZUluc3BlY3Rvcjo6c2luZ2xldG9uKCkuc2V0Q2xpZW50KG51bGxwdHIpOwotfQotCi1S
ZWZQdHI8V2ViUHJvY2Vzc1Bvb2w+IEF1dG9tYXRpb25DbGllbnQ6OnByb3RlY3RlZFByb2Nlc3NQ
b29sKCkgY29uc3QKLXsKLSAgICBpZiAoUmVmUHRyIHByb2Nlc3NQb29sID0gbV9wcm9jZXNzUG9v
bC5nZXQoKSkKLSAgICAgICAgcmV0dXJuIHByb2Nlc3NQb29sOwotCi0gICAgcmV0dXJuIG51bGxw
dHI7Ci19Ci0KLXZvaWQgQXV0b21hdGlvbkNsaWVudDo6cmVxdWVzdEF1dG9tYXRpb25TZXNzaW9u
KGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkZW50aWZpZXIsIGNvbnN0IEluc3BlY3Rvcjo6UmVtb3Rl
SW5zcGVjdG9yOjpDbGllbnQ6OlNlc3Npb25DYXBhYmlsaXRpZXMmKQotewotICAgIEFTU0VSVChp
c01haW5SdW5Mb29wKCkpOwotCi0gICAgYXV0byBzZXNzaW9uID0gYWRvcHRSZWYobmV3IFdlYkF1
dG9tYXRpb25TZXNzaW9uKCkpOwotICAgIHNlc3Npb24tPnNldFNlc3Npb25JZGVudGlmaWVyKHNl
c3Npb25JZGVudGlmaWVyKTsKLSAgICBzZXNzaW9uLT5zZXRDbGllbnQoV1RGOjptYWtlVW5pcXVl
PEF1dG9tYXRpb25TZXNzaW9uQ2xpZW50PihzZXNzaW9uSWRlbnRpZmllcikpOwotICAgIG1fcHJv
Y2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25TZXNzaW9uKFdURk1vdmUoc2Vzc2lvbikpOwotfQotCi12
b2lkIEF1dG9tYXRpb25DbGllbnQ6OmNsb3NlQXV0b21hdGlvblNlc3Npb24oKQotewotICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpc10gewotICAgICAgICBhdXRvIHByb2Nlc3NQb29s
ID0gcHJvdGVjdGVkUHJvY2Vzc1Bvb2woKTsKLSAgICAgICAgaWYgKCFwcm9jZXNzUG9vbCB8fCAh
cHJvY2Vzc1Bvb2wtPmF1dG9tYXRpb25TZXNzaW9uKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgcHJvY2Vzc1Bvb2wtPmF1dG9tYXRpb25TZXNzaW9uKCktPnNldENsaWVudChudWxs
cHRyKTsKLSAgICAgICAgcHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25TZXNzaW9uKG51bGxwdHIp
OwotICAgIH0pOwotfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vQXV0b21hdGlvbkNsaWVudFdpbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0F1dG9tYXRpb25DbGllbnRXaW4uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY2ZDZjZjA0ODU5Li4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL0F1dG9tYXRpb25DbGllbnRXaW4uaAorKysgL2Rl
di9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjQgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotCi0jaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNU
T1IpCi0jaW5jbHVkZSAiQVBJQXV0b21hdGlvbkNsaWVudC5oIgotI2luY2x1ZGUgIkFQSUF1dG9t
YXRpb25TZXNzaW9uQ2xpZW50LmgiCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5z
cGVjdG9yU2VydmVyLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKLQotY2xhc3MgQXV0b21hdGlvblNlc3Npb25DbGllbnQgZmlu
YWwgOiBwdWJsaWMgQVBJOjpBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudCB7Ci1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgQXV0b21hdGlvblNlc3Npb25DbGllbnQoY29uc3QgU3RyaW5nJik7Ci0KLSAgICBT
dHJpbmcgc2Vzc2lvbklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Np
b25JZGVudGlmaWVyOyB9Ci0KLSAgICB2b2lkIHJlcXVlc3ROZXdQYWdlV2l0aE9wdGlvbnMoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYsIEFQSTo6QXV0b21hdGlvblNlc3Npb25Ccm93c2lu
Z0NvbnRleHRPcHRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViUGFnZVBy
b3h5Kik+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkRGlzY29ubmVjdEZyb21SZW1vdGUoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbiYpIG92ZXJyaWRlOwotCi1wcml2YXRlOgotICAgIFN0
cmluZyBtX3Nlc3Npb25JZGVudGlmaWVyOwotfTsKLQotY2xhc3MgQXV0b21hdGlvbkNsaWVudCBm
aW5hbCA6IHB1YmxpYyBBUEk6OkF1dG9tYXRpb25DbGllbnQsIEluc3BlY3Rvcjo6UmVtb3RlSW5z
cGVjdG9yOjpDbGllbnQgewotcHVibGljOgotICAgIGV4cGxpY2l0IEF1dG9tYXRpb25DbGllbnQo
V2ViUHJvY2Vzc1Bvb2wmKTsKLSAgICB+QXV0b21hdGlvbkNsaWVudCgpOwotCi1wcml2YXRlOgot
ICAgIC8vIEFQSTo6QXV0b21hdGlvbkNsaWVudAotICAgIGJvb2wgYWxsb3dzUmVtb3RlQXV0b21h
dGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sKikgZmluYWwgeyByZXR1cm4gcmVtb3RlQXV0b21h
dGlvbkFsbG93ZWQoKTsgfQotICAgIHZvaWQgZGlkUmVxdWVzdEF1dG9tYXRpb25TZXNzaW9uKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZGVudGlmaWVyKSBm
aW5hbCB7IH0KLQotICAgIC8vIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50Ci0gICAgYm9vbCByZW1v
dGVBdXRvbWF0aW9uQWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLQot
ICAgIC8vIEZJWE1FOiBzaG91bGQgdXNlIHZhbGlkIHZhbHVlCi0gICAgU3RyaW5nIGJyb3dzZXJO
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk1pbmlCcm93c2VyIl9zOyB9Ci0gICAgU3Ry
aW5nIGJyb3dzZXJWZXJzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIjEuMCJfczsgfQot
Ci0gICAgUmVmUHRyPFdlYlByb2Nlc3NQb29sPiBwcm90ZWN0ZWRQcm9jZXNzUG9vbCgpIGNvbnN0
OwotCi0gICAgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNlc3Npb24oY29uc3QgU3RyaW5nJiwgY29u
c3QgSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6OkNsaWVudDo6U2Vzc2lvbkNhcGFiaWxpdGll
cyYpIG92ZXJyaWRlOwotICAgIHZvaWQgY2xvc2VBdXRvbWF0aW9uU2Vzc2lvbigpIG92ZXJyaWRl
OwotCi0gICAgV2Vha1B0cjxXZWJQcm9jZXNzUG9vbD4gbV9wcm9jZXNzUG9vbDsKLX07Ci0KLSNl
bmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGViYjc4ZjBiM2MxMy4uNTliMTIy
ZTUzOTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vz
c1Bvb2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNz
UG9vbFdpbi5jcHAKQEAgLTMxLDggKzMxLDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSNpbmNsdWRlICJBdXRv
bWF0aW9uQ2xpZW50V2luLmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yU2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9XZWJDb3JlQnVuZGxlV2luLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2Vy
Q29udmVyc2lvbi5oPgpAQCAtNjYsNyArNjQsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybUluaXRpYWxpemUoTmVlZHNHbG9iYWxTdGF0aWNJbml0aWFsaXphdGlvbikKICNpZiBFTkFC
TEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBpZiAoY29uc3QgY2hhciogYWRkcmVzcyA9IGdldGVu
digiV0VCS0lUX0lOU1BFQ1RPUl9TRVJWRVIiKSkKICAgICAgICAgaW5pdGlhbGl6ZVJlbW90ZUlu
c3BlY3RvclNlcnZlcihTdHJpbmdWaWV3Ojpmcm9tTGF0aW4xKGFkZHJlc3MpKTsKLSAgICBzZXRB
dXRvbWF0aW9uQ2xpZW50KFdURjo6bWFrZVVuaXF1ZTxBdXRvbWF0aW9uQ2xpZW50PigqdGhpcykp
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtl
IGIvU291cmNlL2NtYWtlL09wdGlvbnNXaW4uY21ha2UKaW5kZXggZTYwZDAxMzEyNWY2Li5iY2Zj
YWY5NDAzYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCisrKyBi
L1NvdXJjZS9jbWFrZS9PcHRpb25zV2luLmNtYWtlCkBAIC0xNTksMTAgKzE1OSw2IEBAIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJEUklWRVIgUFJJVkFURSAke0VO
QUJMRV9FWFBFUklNRU5UQUxfCiAjIE5vIHN1cHBvcnQgcGxhbm5lZAogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZUUERJUiBQUklWQVRFIE9GRikKIAotIyBXZWJEcml2
ZXIgb3B0aW9ucwotU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoRU5BQkxFX1dFQkRSSVZFUl9LRVlC
T0FSRF9JTlRFUkFDVElPTlMgT04pCi1TRVRfQU5EX0VYUE9TRV9UT19CVUlMRChFTkFCTEVfV0VC
RFJJVkVSX01PVVNFX0lOVEVSQUNUSU9OUyBPTikKLQogV0VCS0lUX09QVElPTl9FTkQoKQogCiBz
ZXQoVVNFX0FOR0xFX0VHTCBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9X
ZWJLaXRCcm93c2VyV2luZG93LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93
c2VyV2luZG93LmNwcAppbmRleCBkNWNiODI0OTg0YzMuLjM2NTdlZjJlMWZhMCAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuY3BwCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNwcApAQCAtMTgxLDkgKzE4
MSw3IEBAIFdlYktpdEJyb3dzZXJXaW5kb3c6OldlYktpdEJyb3dzZXJXaW5kb3coQnJvd3Nlcldp
bmRvd0NsaWVudCYgY2xpZW50LCBXS1BhZ2VDb25mCiAgICAgdWlDbGllbnQuYmFzZS52ZXJzaW9u
ID0gMTM7CiAgICAgdWlDbGllbnQuYmFzZS5jbGllbnRJbmZvID0gdGhpczsKICAgICB1aUNsaWVu
dC5jcmVhdGVOZXdQYWdlID0gY3JlYXRlTmV3UGFnZTsKLSAgICB1aUNsaWVudC5jbG9zZSA9IGNs
b3NlOwogICAgIHVpQ2xpZW50LmRpZE5vdEhhbmRsZUtleUV2ZW50ID0gZGlkTm90SGFuZGxlS2V5
RXZlbnQ7Ci0gICAgdWlDbGllbnQuZ2V0V2luZG93RnJhbWUgPSBnZXRXaW5kb3dGcmFtZTsKICAg
ICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQgPSBydW5KYXZhU2NyaXB0QWxlcnQ7CiAgICAg
dWlDbGllbnQucnVuSmF2YVNjcmlwdENvbmZpcm0gPSBydW5KYXZhU2NyaXB0Q29uZmlybTsKICAg
ICB1aUNsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0ID0gcnVuSmF2YVNjcmlwdFByb21wdDsKQEAg
LTY1OSwxMiArNjU3LDYgQEAgdm9pZCBXZWJLaXRCcm93c2VyV2luZG93Ojpkb3dubG9hZERpZEZh
aWxXaXRoRXJyb3IoV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiBlcnIKICAgICBNZXNzYWdlQm94
KHRoaXNXaW5kb3cuaHduZCgpLCB0ZXh0LnN0cigpLmNfc3RyKCksIEwiRG93bmxvYWQgRmFpbHVy
ZSIsIE1CX09LIHwgTUJfSUNPTldBUk5JTkcpOwogfQogCi12b2lkIFdlYktpdEJyb3dzZXJXaW5k
b3c6OmNsb3NlKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBhdXRv
JiB0aGlzV2luZG93ID0gdG9XZWJLaXRCcm93c2VyV2luZG93KGNsaWVudEluZm8pOwotICAgIFBv
c3RNZXNzYWdlKHRoaXNXaW5kb3cuaHduZCgpLCBXTV9DTE9TRSwgMCwgMCk7Ci19Ci0KIFdLUGFn
ZVJlZiBXZWJLaXRCcm93c2VyV2luZG93OjpjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiwgV0tQYWdl
Q29uZmlndXJhdGlvblJlZiBwYWdlQ29uZiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS1dpbmRv
d0ZlYXR1cmVzUmVmLCBjb25zdCB2b2lkKikKIHsKICAgICBhdXRvJiBuZXdXaW5kb3cgPSBNYWlu
V2luZG93OjpjcmVhdGUoKS5sZWFrUmVmKCk7CkBAIC02ODYsMTQgKzY3OCw2IEBAIHZvaWQgV2Vi
S2l0QnJvd3NlcldpbmRvdzo6ZGlkTm90SGFuZGxlS2V5RXZlbnQoV0tQYWdlUmVmLCBXS05hdGl2
ZUV2ZW50UHRyIGV2ZW50CiAgICAgUG9zdE1lc3NhZ2UodGhpc1dpbmRvdy5tX2hNYWluV25kLCBl
dmVudC0+bWVzc2FnZSwgZXZlbnQtPndQYXJhbSwgZXZlbnQtPmxQYXJhbSk7CiB9CiAKLVdLUmVj
dCBXZWJLaXRCcm93c2VyV2luZG93OjpnZXRXaW5kb3dGcmFtZShXS1BhZ2VSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCi17Ci0gICAgYXV0byYgdGhpc1dpbmRvdyA9IHRvV2ViS2l0QnJvd3Nl
cldpbmRvdyhjbGllbnRJbmZvKTsKLSAgICBSRUNUIHJlY3Q7Ci0gICAgR2V0V2luZG93UmVjdCh0
aGlzV2luZG93Lmh3bmQoKSwgJnJlY3QpOwotICAgIHJldHVybiBXS1JlY3RNYWtlKHJlY3QubGVm
dCwgcmVjdC50b3AsIHJlY3QucmlnaHQgLSByZWN0LmxlZnQsIHJlY3QuYm90dG9tIC0gcmVjdC50
b3ApOwotfQotCiB2b2lkIFdlYktpdEJyb3dzZXJXaW5kb3c6OnJ1bkphdmFTY3JpcHRBbGVydChX
S1BhZ2VSZWYsIFdLU3RyaW5nUmVmIGFsZXJ0VGV4dCwgV0tGcmFtZVJlZiwgV0tTZWN1cml0eU9y
aWdpblJlZiBzZWN1cml0eU9yaWdpbiwgV0tQYWdlUnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlz
dGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgYXV0byYg
dGhpc1dpbmRvdyA9IHRvV2ViS2l0QnJvd3NlcldpbmRvdyhjbGllbnRJbmZvKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmggYi9Ub29scy9N
aW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5oCmluZGV4IDM3M2Q2MjgzNTA1OC4u
YTg2Nzk4OWQ4MTYzIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJv
d3NlcldpbmRvdy5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2lu
ZG93LmgKQEAgLTg0LDEwICs4NCw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFdLU3RyaW5nUmVm
IGRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UoV0tEb3dubG9hZFJlZiwgV0tV
UkxSZXNwb25zZVJlZiwgV0tTdHJpbmdSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9p
ZCBkb3dubG9hZERpZEZpbmlzaChXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3Rh
dGljIHZvaWQgZG93bmxvYWREaWRGYWlsV2l0aEVycm9yKFdLRG93bmxvYWRSZWYsIFdLRXJyb3JS
ZWYsIFdLRGF0YVJlZiwgY29uc3Qgdm9pZCopOwotICAgIHN0YXRpYyB2b2lkIGNsb3NlKFdLUGFn
ZVJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShX
S1BhZ2VSZWYsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIFdLTmF2aWdhdGlvbkFjdGlvblJlZiwg
V0tXaW5kb3dGZWF0dXJlc1JlZiwgY29uc3Qgdm9pZCAqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRO
b3RIYW5kbGVLZXlFdmVudChXS1BhZ2VSZWYsIFdLTmF0aXZlRXZlbnRQdHIsIGNvbnN0IHZvaWQq
KTsKLSAgICBzdGF0aWMgV0tSZWN0IGdldFdpbmRvd0ZyYW1lKFdLUGFnZVJlZiwgY29uc3Qgdm9p
ZCopOwogICAgIHN0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXS1BhZ2VSZWYsIFdLU3Ry
aW5nUmVmLCBXS0ZyYW1lUmVmLCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1BhZ2VSdW5KYXZhU2Ny
aXB0QWxlcnRSZXN1bHRMaXN0ZW5lclJlZiwgY29uc3Qgdm9pZCAqKTsKICAgICBzdGF0aWMgdm9p
ZCBydW5KYXZhU2NyaXB0Q29uZmlybShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCBXS0ZyYW1lUmVm
LCBXS1NlY3VyaXR5T3JpZ2luUmVmLCBXS1BhZ2VSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExp
c3RlbmVyUmVmLCBjb25zdCB2b2lkICopOwogICAgIHN0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRQ
cm9tcHQoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiwgV0tTdHJpbmdSZWYsIFdLRnJhbWVSZWYsIFdL
U2VjdXJpdHlPcmlnaW5SZWYsIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5l
clJlZiwgY29uc3Qgdm9pZCAqKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>