<?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>205359</bug_id>
          
          <creation_ts>2019-12-17 14:08:04 -0800</creation_ts>
          <short_desc>Port service worker code to the HTML5 event loop</short_desc>
          <delta_ts>2019-12-18 08:46:42 -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>Service Workers</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>https://github.com/web-platform-tests/wpt/pull/20655</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>205397</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1599562</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-17 14:08:04 -0800</bug_when>
    <thetext>Port service worker code to the HTML5 event loop. We&apos;re currently mixing using the HTML5 event loop and Document::postTask(), which is causing test flakiness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599576</commentid>
    <comment_count>1</comment_count>
      <attachid>385922</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-17 15:14:07 -0800</bug_when>
    <thetext>Created attachment 385922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599654</commentid>
    <comment_count>2</comment_count>
      <attachid>385922</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-17 18:35:02 -0800</bug_when>
    <thetext>Comment on attachment 385922
Patch

Clearing flags on attachment: 385922

Committed r253667: &lt;https://trac.webkit.org/changeset/253667&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599655</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-17 18:35:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599658</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-17 18:36:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/58029357&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599818</commentid>
    <comment_count>5</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-12-18 08:25:39 -0800</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/253667/webkit
caused 32 test crashes, tracking in https://bugs.webkit.org/show_bug.cgi?id=205397</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599824</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-18 08:38:46 -0800</bug_when>
    <thetext>(In reply to Truitt Savell from comment #5)
&gt; It looks like the changes in https://trac.webkit.org/changeset/253667/webkit
&gt; caused 32 test crashes, tracking in
&gt; https://bugs.webkit.org/show_bug.cgi?id=205397

I am working on it, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1599829</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-18 08:46:42 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Truitt Savell from comment #5)
&gt; &gt; It looks like the changes in https://trac.webkit.org/changeset/253667/webkit
&gt; &gt; caused 32 test crashes, tracking in
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=205397
&gt; 
&gt; I am working on it, thanks.

Follow-up landed in &lt;https://trac.webkit.org/changeset/253688&gt; to address the debug assertions.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385922</attachid>
            <date>2019-12-17 15:14:07 -0800</date>
            <delta_ts>2019-12-17 18:35:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205359-20191217151406.patch</filename>
            <type>text/plain</type>
            <size>37834</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjU4ZDJkMjAxMWNhYzA5
ZGZhMjFkZjcxOWU0ZmI5YTBiY2I0NjcyMS4uMTRkMmE4ZDIxMjQxMzllOThlYzIxYTNiZWJjODcz
MGQwNWViNGViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE5LTEyLTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUG9ydCBzZXJ2aWNlIHdvcmtl
ciBjb2RlIHRvIHRoZSBIVE1MNSBldmVudCBsb29wCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUzNTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQb3J0IHNlcnZpY2Ugd29ya2VyIGNvZGUgdG8gdGhlIEhU
TUw1IGV2ZW50IGxvb3AuIFdlIHdlcmUgbWl4aW5nIHVzaW5nIHRoZSBIVE1MNSBldmVudCBsb29w
IGFuZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFzaygpLgorICAgICAgICBUaGlzIHdv
dWxkIGNhdXNlIHRlc3QgZmxha2luZXNzIGJlY2F1c2UgdGFza3MgcG9zdGVkIHZpYSB0aHNzZSAy
IG1lY2hhbmlzbXMgY291bGQgZ2V0IHByb2Nlc3NlZCBvdXQgb2Ygb3JkZXIsIGV2ZW4gdGhvdWdo
IHRoZQorICAgICAgICBzZXJ2aWNlIHdvcmtlciBzcGVjaWZpY2F0aW9uIGd1YXJhbnRlZXMgYSBz
cGVjaWZpYyBvcmRlcmluZy4KKworICAgICAgICBUaGUgbmV3IHBhdHRlcm4gaXMgdGhhdCB3ZSBv
bmx5IHVzZSBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzaygpIHRvIGhvcCB0byB0aGUgd29ya2VyIHRo
cmVhZCBmcm9tIHRoZSBtYWluIHRocmVhZCwgYW5kIG5vdCBmb3IgYW55IHdvcmsKKyAgICAgICAg
c3BlY2lmaWVkIGluIHRoZSBzZXJ2aWNlIHdvcmtlcnMgc3BlY2lmaWNhdGlvbi4gV2hlbmV2ZXIg
dGhlIHNlcnZpY2Ugd29ya2VycyBzcGVjaWZpY2F0aW9ucyB0byAicXVldWUgYSB0YXNrIiwgd2Ug
bm93IHF1ZXVlIGEgdGFzaworICAgICAgICBvbiB0aGUgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCdz
IGV2ZW50IGxvb3AsIHdpdGggdGhlIHNwZWNpZmllZCBUYXNrU291cmNlLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgdXBkYXRlZCBleGlzdGluZyB0ZXN0LgorCisgICAgICAgICogZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaFRvQ29udGV4dFRocmVhZElmTmVjZXNzYXJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdFRhc2tGb3JKb2IpOgor
ICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25T
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVdvcmtl
clN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVwZGF0
ZUZvdW5kRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpub3Rp
ZnlDbGllbnRzT2ZDb250cm9sbGVyQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50
Q29ubmVjdGlvbjo6Y2xlYXJQZW5kaW5nSm9icyk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlcjo6dXBk
YXRlU3RhdGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmg6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9u
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRl
V29ya2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cXVldWVUYXNrVG9GaXJlVXBkYXRlRm91bmRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpxdWV1ZVRhc2tUb0Rpc3BhdGNoQ29udHJvbGxlckNoYW5nZUV2
ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5o
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnF1ZXVlVGFz
a1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5h
Z2VyOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpTV0Nv
bnRleHRNYW5hZ2VyOjpmaXJlSW5zdGFsbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29u
dGV4dE1hbmFnZXI6OmZpcmVBY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9Qb3N0TWVzc2FnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVJbnN0
YWxsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVU
YXNrVG9GaXJlQWN0aXZhdGVFdmVudCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2gpOgorCiAyMDE5
LTEyLTE3ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRh
dGUgc2Vzc2lvbiBjYXRlZ29yeSBpbiBNb2NrQXVkaW9TaGFyZWRVbml0IGFzIGRvbmUgaW4gQ29y
ZUF1ZGlvU2hhcmVkVW5pdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCmluZGV4IGZhNjhlYjg2NjRkM2M0MzA3NzZjMTIxNzExODI2NmNiYmU0OWYzMzku
LjEzNWY1N2IyMWNjMjlkNDgxODAxOGRmMzczOTY1YjM2YjMxZTBlY2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTU5OCwyNyArNTk4LDYg
QEAgU2VydmljZVdvcmtlckNvbnRhaW5lciogU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5zdXJl
U2VydmljZVdvcmtlckNvbnRhaW5lcigpCiAgICAgcmV0dXJuIG5hdmlnYXRvciA/ICZuYXZpZ2F0
b3ItPnNlcnZpY2VXb3JrZXIoKSA6IG51bGxwdHI7CiB9CiAKLWJvb2wgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6cG9zdFRhc2tUbyhjb25zdCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciYgY29u
dGV4dElkZW50aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
Jik+JiYgdGFzaykKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCi0gICAgYm9vbCB3
YXNQb3N0ZWQgPSBmYWxzZTsKLSAgICBzd2l0Y2hPbihjb250ZXh0SWRlbnRpZmllciwgWyZdIChE
b2N1bWVudElkZW50aWZpZXIgaWRlbnRpZmllcikgewotICAgICAgICBhdXRvKiBkb2N1bWVudCA9
IERvY3VtZW50OjphbGxEb2N1bWVudHNNYXAoKS5nZXQoaWRlbnRpZmllcik7Ci0gICAgICAgIGlm
ICghZG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGRvY3VtZW50LT5wb3N0
VGFzayhbdGFzayA9IFdURk1vdmUodGFzayldKGF1dG8mIHNjb3BlKSB7Ci0gICAgICAgICAgICB0
YXNrKHNjb3BlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHdhc1Bvc3RlZD0gdHJ1ZTsKLSAgICB9
LCBbJl0oU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikgewotICAgICAgICB3YXNQ
b3N0ZWQgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdv
cmtlcihpZGVudGlmaWVyLCBbdGFzayA9IFdURk1vdmUodGFzayldKGF1dG8mIHNjb3BlKSB7Ci0g
ICAgICAgICAgICB0YXNrKHNjb3BlKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJu
IHdhc1Bvc3RlZDsKLX0KLQogI2VuZGlmCiAKIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cG9zdFRhc2tUbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBpZGVudGlmaWVyLCBU
YXNrJiYgdGFzaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
CmluZGV4IDc4N2QyZTkxYWI4YjMwZTZkZTUxNjE4MmI3OTRlYmU5NTNiNmJkMjAuLmNlYmQzNzli
MjdkNmRhNWVjZjc5ODlkM2IxMTFiYzY0NWY2OGNhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMjUzLDggKzI1Myw2IEBAIHB1YmxpYzoKIAog
ICAgIFNlcnZpY2VXb3JrZXJDb250YWluZXIqIHNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKICAg
ICBTZXJ2aWNlV29ya2VyQ29udGFpbmVyKiBlbnN1cmVTZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7
Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBwb3N0VGFza1RvKGNvbnN0IERvY3Vt
ZW50T3JXb3JrZXJJZGVudGlmaWVyJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmKT4mJik7CiAjZW5kaWYKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBw
b3N0VGFza1RvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBUYXNrJiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rp
b24uY3BwCmluZGV4IDEzZmQ5OTBlZjg1MzNlN2JjNDY0MTQ0YTBhMzgyNzgwOTkwMWI4MjcuLjlk
YTUxZDRhMzA2MTQ2ZDRiZjZmNmYyYWMxMWE1MWFlMDMzM2ExOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC00
MCw2ICs0MCwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBib29sIGRpc3Bh
dGNoVG9Db250ZXh0VGhyZWFkSWZOZWNlc3NhcnkoY29uc3QgRG9jdW1lbnRPcldvcmtlcklkZW50
aWZpZXImIGNvbnRleHRJZGVudGlmaWVyLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpPiYmIHRhc2spCit7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIGJvb2wgd2FzUG9zdGVkID0gZmFsc2U7CisgICAgc3dpdGNoT24oY29udGV4dElk
ZW50aWZpZXIsIFsmXSAoRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsKKyAgICAgICAg
YXV0byogZG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGlkZW50aWZp
ZXIpOworICAgICAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB0YXNrKCpkb2N1bWVudCk7CisgICAgICAgIHdhc1Bvc3RlZCA9IHRydWU7CisgICAgfSwgWyZd
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsKKyAgICAgICAgd2FzUG9zdGVk
ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIo
aWRlbnRpZmllciwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShhdXRvJiBzY29wZSkgbXV0YWJsZSB7
CisgICAgICAgICAgICB0YXNrKHNjb3BlKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgcmV0
dXJuIHdhc1Bvc3RlZDsKK30KKwogU1dDbGllbnRDb25uZWN0aW9uOjpTV0NsaWVudENvbm5lY3Rp
b24oKSA9IGRlZmF1bHQ7CiAKIFNXQ2xpZW50Q29ubmVjdGlvbjo6flNXQ2xpZW50Q29ubmVjdGlv
bigpID0gZGVmYXVsdDsKQEAgLTYxLDcgKzc5LDcgQEAgYm9vbCBTV0NsaWVudENvbm5lY3Rpb246
OnBvc3RUYXNrRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyIGpvYklkZW50aWZpZXIK
ICAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMgd2FzIG5vdCBmb3VuZCIsIGpvYklkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIGF1dG8gaXNQb3N0ZWQgPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFz
a1RvKGl0ZXJhdG9yLT52YWx1ZSwgW2pvYklkZW50aWZpZXIsIHRhc2sgPSBXVEZNb3ZlKHRhc2sp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgYXV0byBp
c1Bvc3RlZCA9IGRpc3BhdGNoVG9Db250ZXh0VGhyZWFkSWZOZWNlc3NhcnkoaXRlcmF0b3ItPnZh
bHVlLCBbam9iSWRlbnRpZmllciwgdGFzayA9IFdURk1vdmUodGFzayldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRhaW5l
ciA9IGNvbnRleHQuc2VydmljZVdvcmtlckNvbnRhaW5lcigpKSB7CiAgICAgICAgICAgICBpZiAo
YXV0byogam9iID0gY29udGFpbmVyLT5qb2Ioam9iSWRlbnRpZmllcikpCiAgICAgICAgICAgICAg
ICAgdGFzaygqam9iKTsKQEAgLTEzMSwxMCArMTQ5LDggQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rp
b246OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVu
dGkKICAgICB9KTsKIAogICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9j
dW1lbnRzKCkpIHsKLSAgICAgICAgZG9jdW1lbnQtPnBvc3RUYXNrKFtpZGVudGlmaWVyLCBzdGF0
ZSwgc2VydmljZVdvcmtlckRhdGEsIGRvY3VtZW50XShhdXRvJikgewotICAgICAgICAgICAgaWYg
KGF1dG8qIGNvbnRhaW5lciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCi0g
ICAgICAgICAgICAgICAgY29udGFpbmVyLT51cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShpZGVudGlm
aWVyLCBzdGF0ZSwgc2VydmljZVdvcmtlckRhdGEpOwotICAgICAgICB9KTsKKyAgICAgICAgaWYg
KGF1dG8qIGNvbnRhaW5lciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCisg
ICAgICAgICAgICBjb250YWluZXItPnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKGlkZW50aWZpZXIs
IHN0YXRlLCBzZXJ2aWNlV29ya2VyRGF0YSk7CiAgICAgfQogfQogCkBAIC0xNDQsMTYgKzE2MCwx
NCBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlV29ya2VyU3RhdGUoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgUwogCiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuZm9yRWFjaFNlcnZpY2VXb3JrZXJUaHJlYWQoW2lkZW50aWZpZXIsIHN0YXRlXSAo
YXV0byYgd29ya2VyVGhyZWFkKSB7CiAgICAgICAgIHdvcmtlclRocmVhZC50aHJlYWQoKS5ydW5M
b29wKCkucG9zdFRhc2soW2lkZW50aWZpZXIsIHN0YXRlXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IGNvbnRl
eHQuc2VydmljZVdvcmtlcihpZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICBzZXJ2aWNlV29y
a2VyLT51cGRhdGVTdGF0ZShzdGF0ZSk7CisgICAgICAgICAgICBpZiAoYXV0byogY29udGFpbmVy
ID0gY29udGV4dC5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkpCisgICAgICAgICAgICAgICAgY29u
dGFpbmVyLT51cGRhdGVXb3JrZXJTdGF0ZShpZGVudGlmaWVyLCBzdGF0ZSk7CiAgICAgICAgIH0p
OwogICAgIH0pOwogCiAgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1
bWVudHMoKSkgewotICAgICAgICBkb2N1bWVudC0+cG9zdFRhc2soW2lkZW50aWZpZXIsIGRvY3Vt
ZW50LCBzdGF0ZV0oYXV0byYpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2Vy
ID0gZG9jdW1lbnQtPnNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAg
c2VydmljZVdvcmtlci0+dXBkYXRlU3RhdGUoc3RhdGUpOwotICAgICAgICB9KTsKKyAgICAgICAg
aWYgKGF1dG8qIGNvbnRhaW5lciA9IGRvY3VtZW50LT5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkp
CisgICAgICAgICAgICBjb250YWluZXItPnVwZGF0ZVdvcmtlclN0YXRlKGlkZW50aWZpZXIsIHN0
YXRlKTsKICAgICB9CiB9CiAKQEAgLTE2NCwxNSArMTc4LDEzIEBAIHZvaWQgU1dDbGllbnRDb25u
ZWN0aW9uOjpmaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllCiAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuZm9yRWFjaFNlcnZpY2VX
b3JrZXJUaHJlYWQoW2lkZW50aWZpZXJdIChhdXRvJiB3b3JrZXJUaHJlYWQpIHsKICAgICAgICAg
d29ya2VyVGhyZWFkLnRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbaWRlbnRpZmllcl0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgaWYgKGF1dG8qIGNv
bnRhaW5lciA9IGNvbnRleHQuc2VydmljZVdvcmtlckNvbnRhaW5lcigpKQotICAgICAgICAgICAg
ICAgIGNvbnRhaW5lci0+ZmlyZVVwZGF0ZUZvdW5kRXZlbnQoaWRlbnRpZmllcik7CisgICAgICAg
ICAgICAgICAgY29udGFpbmVyLT5xdWV1ZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50KGlkZW50
aWZpZXIpOwogICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIGZvciAoYXV0byogZG9jdW1lbnQg
OiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpIHsKLSAgICAgICAgZG9jdW1lbnQtPnBvc3RUYXNr
KFtkb2N1bWVudCwgaWRlbnRpZmllcl0oYXV0byYpIHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBj
b250YWluZXIgPSBkb2N1bWVudC0+c2VydmljZVdvcmtlckNvbnRhaW5lcigpKQotICAgICAgICAg
ICAgICAgIGNvbnRhaW5lci0+ZmlyZVVwZGF0ZUZvdW5kRXZlbnQoaWRlbnRpZmllcik7Ci0gICAg
ICAgIH0pOworICAgICAgICBpZiAoYXV0byogY29udGFpbmVyID0gZG9jdW1lbnQtPnNlcnZpY2VX
b3JrZXJDb250YWluZXIoKSkKKyAgICAgICAgICAgIGNvbnRhaW5lci0+cXVldWVUYXNrVG9GaXJl
VXBkYXRlRm91bmRFdmVudChpZGVudGlmaWVyKTsKICAgICB9CiB9CiAKQEAgLTIyOSwxMiArMjQx
LDkgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246Om5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJD
aGFuZ2UoY29uc3QgSGFzaFNldDxEb2N1bWVudEkKICAgICAgICAgaWYgKCFjbGllbnQpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBjbGllbnQtPnBvc3RUYXNrKFtjbGllbnQsIGNv
bnRleHRJZGVudGlmaWVycywgbmV3Q29udHJvbGxlcl0oYXV0byYpIG11dGFibGUgewotICAgICAg
ICAgICAgQVNTRVJUKCFjbGllbnQtPmFjdGl2ZVNlcnZpY2VXb3JrZXIoKSB8fCBjbGllbnQtPmFj
dGl2ZVNlcnZpY2VXb3JrZXIoKS0+aWRlbnRpZmllcigpICE9IG5ld0NvbnRyb2xsZXIuaWRlbnRp
Zmllcik7Ci0gICAgICAgICAgICBjbGllbnQtPnNldEFjdGl2ZVNlcnZpY2VXb3JrZXIoU2Vydmlj
ZVdvcmtlcjo6Z2V0T3JDcmVhdGUoKmNsaWVudCwgV1RGTW92ZShuZXdDb250cm9sbGVyKSkpOwot
ICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRhaW5lciA9IGNsaWVudC0+c2VydmljZVdvcmtlckNv
bnRhaW5lcigpKQotICAgICAgICAgICAgICAgIGNvbnRhaW5lci0+ZmlyZUNvbnRyb2xsZXJDaGFu
Z2VFdmVudCgpOwotICAgICAgICB9KTsKKyAgICAgICAgY2xpZW50LT5zZXRBY3RpdmVTZXJ2aWNl
V29ya2VyKFNlcnZpY2VXb3JrZXI6OmdldE9yQ3JlYXRlKCpjbGllbnQsIFdURk1vdmUobmV3Q29u
dHJvbGxlcikpKTsKKyAgICAgICAgaWYgKGF1dG8qIGNvbnRhaW5lciA9IGNsaWVudC0+c2Vydmlj
ZVdvcmtlckNvbnRhaW5lcigpKQorICAgICAgICAgICAgY29udGFpbmVyLT5xdWV1ZVRhc2tUb0Rp
c3BhdGNoQ29udHJvbGxlckNoYW5nZUV2ZW50KCk7CiAgICAgfQogfQogCkBAIC0yNDQsNyArMjUz
LDcgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmNsZWFyUGVuZGluZ0pvYnMoKQogCiAgICAg
YXV0byBqb2JTb3VyY2VzID0gV1RGTW92ZShtX3NjaGVkdWxlZEpvYlNvdXJjZXMpOwogICAgIGZv
ciAoYXV0byYga2V5VmFsdWUgOiBqb2JTb3VyY2VzKSB7Ci0gICAgICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnBvc3RUYXNrVG8oa2V5VmFsdWUudmFsdWUsIFtpZGVudGlmaWVyID0ga2V5VmFs
dWUua2V5XSAoYXV0byYgY29udGV4dCkgeworICAgICAgICBkaXNwYXRjaFRvQ29udGV4dFRocmVh
ZElmTmVjZXNzYXJ5KGtleVZhbHVlLnZhbHVlLCBbaWRlbnRpZmllciA9IGtleVZhbHVlLmtleV0g
KGF1dG8mIGNvbnRleHQpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBjb250
ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBqb2IgPSBjb250YWluZXItPmpvYihpZGVudGlmaWVyKSkKICAgICAgICAgICAgICAgICAgICAg
am9iLT5mYWlsZWRXaXRoRXhjZXB0aW9uKEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIkludGVybmFs
IGVycm9yIl9zIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXIuY3BwCmluZGV4IGUzYjgwZDQ5MGM2ZTY5NzlkNjE5YzdmNzEyMGVkYmU0NmY3YzZk
ZGEuLjAxY2RkYjQxYjUwYmQ1NjljMzg1ZjI2ODhhMTNiNjNiY2EyOGViNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAKQEAgLTgxLDEx
ICs4MSw2IEBAIFNlcnZpY2VXb3JrZXI6On5TZXJ2aWNlV29ya2VyKCkKIAogdm9pZCBTZXJ2aWNl
V29ya2VyOjp1cGRhdGVTdGF0ZShTdGF0ZSBzdGF0ZSkKIHsKLSAgICBpZiAobV9pc1N1c3BlbmRl
ZCkgewotICAgICAgICBtX3BlbmRpbmdTdGF0ZUNoYW5nZXMuYXBwZW5kKHN0YXRlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQogICAgIFdPUktFUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ1
cGRhdGVTdGF0ZTogVXBkYXRpbmcgc2VydmljZSB3b3JrZXIgJWxsdSBzdGF0ZSBmcm9tICVoaHUg
dG8gJWhodS4gUmVnaXN0cmF0aW9uIElEOiAlbGx1IiwgaWRlbnRpZmllcigpLnRvVUludDY0KCks
IG1fZGF0YS5zdGF0ZSwgc3RhdGUsIHJlZ2lzdHJhdGlvbklkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKICAgICBtX2RhdGEuc3RhdGUgPSBzdGF0ZTsKICAgICBpZiAoc3RhdGUgIT0gU3RhdGU6Oklu
c3RhbGxpbmcgJiYgIW1faXNTdG9wcGVkKSB7CkBAIC0xNTAsMjIgKzE0NSw2IEBAIGNvbnN0IGNo
YXIqIFNlcnZpY2VXb3JrZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVy
biAiU2VydmljZVdvcmtlciI7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlcjo6c3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uKQotewotICAgIG1faXNTdXNwZW5kZWQgPSB0cnVlOwotfQotCi12b2lk
IFNlcnZpY2VXb3JrZXI6OnJlc3VtZSgpCi17Ci0gICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOwot
ICAgIGlmICghbV9wZW5kaW5nU3RhdGVDaGFuZ2VzLmlzRW1wdHkoKSkgewotICAgICAgICBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyldKGF1dG8mKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8gcGVuZGluZ1N0YXRl
Q2hhbmdlIDogc3RkOjpleGNoYW5nZShtX3BlbmRpbmdTdGF0ZUNoYW5nZXMsIHsgfSkpCi0gICAg
ICAgICAgICAgICAgdXBkYXRlU3RhdGUocGVuZGluZ1N0YXRlQ2hhbmdlKTsKLSAgICAgICAgfSk7
Ci0gICAgfQotfQotCiB2b2lkIFNlcnZpY2VXb3JrZXI6OnN0b3AoKQogewogICAgIG1faXNTdG9w
cGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlci5oCmluZGV4IGY4YjU3MjU3ZTE2NWU1NmI0OTNlYjhhNWQ2MTUxNjk4NzkyYzQzOTEuLjBi
NDFmMGZkYjBmYWJlNTc4OWVmZDIxOTEzMzIwODg1MmQ4NDdiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuaApAQCAtNzgsOCArNzgsNiBAQCBw
cml2YXRlOgogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2
ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9y
U3VzcGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICB2b2lkIHN0
b3AoKSBmaW5hbDsKIAogICAgIGJvb2wgaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgY29uc3Q7
CkBAIC04OCw5ICs4Niw3IEBAIHByaXZhdGU6CiAKICAgICBTZXJ2aWNlV29ya2VyRGF0YSBtX2Rh
dGE7CiAgICAgYm9vbCBtX2lzU3RvcHBlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzU3VzcGVu
ZGVkIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3JrZXI+
PiBtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2g7Ci0gICAgVmVjdG9yPFN0YXRlPiBt
X3BlbmRpbmdTdGF0ZUNoYW5nZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAKaW5kZXggNjkxMWM2NWJlODQxNjM4ZmJhYjU5ZmNkMTViNWMyMWUxYTM1Zjhj
Mi4uOWQ3MzU4NTUzYjhhNDM3MGNjOTZiYzA5Y2VkYzEyMzI3N2UwYzc5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcApAQCAtMjg1LDEyICsyODUsMjUgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWQKICAg
ICBpZiAobV9pc1N0b3BwZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxTZXJ2aWNl
V29ya2VyPiBzZXJ2aWNlV29ya2VyOwotICAgIGlmIChzZXJ2aWNlV29ya2VyRGF0YSkKLSAgICAg
ICAgc2VydmljZVdvcmtlciA9IFNlcnZpY2VXb3JrZXI6OmdldE9yQ3JlYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIFNlcnZpY2VXb3JrZXJEYXRhIHsgKnNlcnZpY2VXb3JrZXJEYXRhIH0p
OworICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6RE9N
TWFuaXB1bGF0aW9uLCBbdGhpcywgaWRlbnRpZmllciwgc3RhdGUsIHNlcnZpY2VXb3JrZXJEYXRh
ID0gT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+IHsgc2VydmljZVdvcmtlckRhdGEgfV0oKSBt
dXRhYmxlIHsKKyAgICAgICAgUmVmUHRyPFNlcnZpY2VXb3JrZXI+IHNlcnZpY2VXb3JrZXI7Cisg
ICAgICAgIGlmIChzZXJ2aWNlV29ya2VyRGF0YSkKKyAgICAgICAgICAgIHNlcnZpY2VXb3JrZXIg
PSBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBX
VEZNb3ZlKCpzZXJ2aWNlV29ya2VyRGF0YSkpOwogCi0gICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlv
biA9IG1fcmVnaXN0cmF0aW9ucy5nZXQoaWRlbnRpZmllcikpCi0gICAgICAgIHJlZ2lzdHJhdGlv
bi0+dXBkYXRlU3RhdGVGcm9tU2VydmVyKHN0YXRlLCBXVEZNb3ZlKHNlcnZpY2VXb3JrZXIpKTsK
KyAgICAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQoaWRl
bnRpZmllcikpCisgICAgICAgICAgICByZWdpc3RyYXRpb24tPnVwZGF0ZVN0YXRlRnJvbVNlcnZl
cihzdGF0ZSwgV1RGTW92ZShzZXJ2aWNlV29ya2VyKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlV29ya2VyU3RhdGUoU2VydmljZVdvcmtlcklkZW50
aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdvcmtlclN0YXRlIHN0YXRlKQoreworICAgIGlmICht
X2lzU3RvcHBlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt0aGlzLCBpZGVudGlm
aWVyLCBzdGF0ZV0geworICAgICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlciA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+c2VydmljZVdvcmtlcihpZGVudGlmaWVyKSkKKyAgICAgICAgICAg
IHNlcnZpY2VXb3JrZXItPnVwZGF0ZVN0YXRlKHN0YXRlKTsKKyAgICB9KTsKIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb25zKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKQEAgLTM0MiwxNCArMzU1LDE0IEBAIHZvaWQgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNv
bnN0CiAgICAgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZmlyZVVwZGF0
ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
cikKK3ZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cXVldWVUYXNrVG9GaXJlVXBkYXRlRm91
bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKQog
ewogI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwogI2VuZGlmCiAKICAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9u
ID0gbV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKSkKLSAgICAgICAgcmVnaXN0cmF0aW9u
LT5maXJlVXBkYXRlRm91bmRFdmVudCgpOworICAgICAgICByZWdpc3RyYXRpb24tPnF1ZXVlVGFz
a1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIGRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNv
bHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCkBAIC01NTAsNyArNTYzLDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbiYgcmVnaXMKICAgICBtX3JlZ2lzdHJhdGlvbnMucmVtb3ZlKHJlZ2lzdHJhdGlv
bi5pZGVudGlmaWVyKCkpOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmZpcmVD
b250cm9sbGVyQ2hhbmdlRXZlbnQoKQordm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpxdWV1
ZVRhc2tUb0Rpc3BhdGNoQ29udHJvbGxlckNoYW5nZUV2ZW50KCkKIHsKICNpZm5kZWYgTkRFQlVH
CiAgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQucHRyKCkgPT0gJlRocmVhZDo6Y3VycmVudCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5oCmluZGV4IDhjNDE5YmRkYzk5NGMzOGZmNzQxZDVhNzg5N2RjYTE5Mjc4
ZTRkZDQuLjQxODI1NTgzOGRkZjk2NDZhYjlhZDBmNzFmZTEzN2ZmMzVlZTUzN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuaApAQCAtNjgsOCArNjgsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGdldFJlZ2lzdHJh
dGlvbihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAg
ICAgdm9pZCB1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlLCBjb25zdCBPcHRpb25h
bDxTZXJ2aWNlV29ya2VyRGF0YT4mKTsKLSAgICB2b2lkIGZpcmVVcGRhdGVGb3VuZEV2ZW50KFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKLSAgICB2b2lkIGZpcmVDb250cm9s
bGVyQ2hhbmdlRXZlbnQoKTsKKyAgICB2b2lkIHVwZGF0ZVdvcmtlclN0YXRlKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyU3RhdGUpOworICAgIHZvaWQgcXVldWVUYXNrVG9G
aXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7
CisgICAgdm9pZCBxdWV1ZVRhc2tUb0Rpc3BhdGNoQ29udHJvbGxlckNoYW5nZUV2ZW50KCk7CiAK
ICAgICB2b2lkIHBvc3RNZXNzYWdlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIFNlcnZpY2VX
b3JrZXJEYXRhJiYgc291cmNlRGF0YSwgU3RyaW5nJiYgc291cmNlT3JpZ2luKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb24uY3BwCmluZGV4IDExNmJiYjRmZjc5Y2FjZWVmZDc5MDI1YmQzY2M4YTcyMDMz
OTY4ZWYuLjBiOWE1NjUzZjhmY2M3M2ViMmI5NTI4ZWJiMmQyMjEyZjFlMzMwNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5jcHAKQEAgLTE4MiwyMCArMTgyLDE1IEBAIHZvaWQgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbjo6dXBkYXRlU3RhdGVGcm9tU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25TCiAgICAgdXBkYXRlUGVuZGluZ0FjdGl2aXR5Rm9yRXZlbnREaXNwYXRjaCgpOwogfQog
Ci12b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmZpcmVVcGRhdGVGb3VuZEV2ZW50KCkK
K3ZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6cXVldWVUYXNrVG9GaXJlVXBkYXRlRm91
bmRFdmVudCgpCiB7CiAgICAgaWYgKG1faXNTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAobV9pc1N1c3BlbmRlZCkgewotICAgICAgICBtX3Nob3VsZEZpcmVVcGRhdGVGb3VuZEV2
ZW50VXBvblJlc3VtaW5nID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIFJF
R0lTVFJBVElPTl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJmaXJlVXBkYXRlRm91bmRFdmVudDog
RmlyaW5nIHVwZGF0ZWZvdW5kIGV2ZW50IGZvciByZWdpc3RyYXRpb24gJWxsdSIsIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKIAogICAgIEFTU0VSVChtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50
RGlzcGF0Y2gpOwotICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
dXBkYXRlZm91bmRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFi
bGU6Ok5vKSk7CisgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNl
OjpET01NYW5pcHVsYXRpb24sIEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnVwZGF0ZWZvdW5k
RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObykpOwog
fQogCiBFdmVudFRhcmdldEludGVyZmFjZSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpldmVu
dFRhcmdldEludGVyZmFjZSgpIGNvbnN0CkBAIC0yMTMsMjIgKzIwOCw2IEBAIGNvbnN0IGNoYXIq
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAog
ICAgIHJldHVybiAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiI7CiB9CiAKLXZvaWQgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQotewotICAg
IG1faXNTdXNwZW5kZWQgPSB0cnVlOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b246OnJlc3VtZSgpCi17Ci0gICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOwotICAgIGlmIChtX3No
b3VsZEZpcmVVcGRhdGVGb3VuZEV2ZW50VXBvblJlc3VtaW5nKSB7Ci0gICAgICAgIG1fc2hvdWxk
RmlyZVVwZGF0ZUZvdW5kRXZlbnRVcG9uUmVzdW1pbmcgPSBmYWxzZTsKLSAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXShhdXRvJikgewotICAgICAgICAgICAgZmlyZVVwZGF0ZUZvdW5kRXZlbnQoKTsK
LSAgICAgICAgfSk7Ci0gICAgfQotfQotCiB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246
OnN0b3AoKQogewogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCmlu
ZGV4IDZiODA2OGVkNTQ4ZjJiODg1MmI3MmUxNzM0MjQwN2YzNGQyMGMyYjEuLmI0OWFiYTBlZGNi
NmQ4YjQ0Mjk3ZWEwYTZjNDFhZjQyMWMyZDVkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaApAQCAt
NzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbkRhdGE7IH0KIAogICAg
IHZvaWQgdXBkYXRlU3RhdGVGcm9tU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0
ZSwgUmVmUHRyPFNlcnZpY2VXb3JrZXI+JiYpOwotICAgIHZvaWQgZmlyZVVwZGF0ZUZvdW5kRXZl
bnQoKTsKKyAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoKTsKIAogcHJp
dmF0ZToKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBSZWY8U2VydmljZVdvcmtlckNvbnRhaW5lcj4mJiwgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbkRhdGEmJik7CkBAIC04Nyw4ICs4Nyw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBBY3RpdmVE
T01PYmplY3QuCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKLSAgICB2
b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogCiAgICAgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgbV9yZWdpc3RyYXRpb25EYXRhOwpAQCAtOTksOCArOTcs
NiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTZXJ2aWNlV29ya2VyPiBtX2FjdGl2ZVdvcmtlcjsK
IAogICAgIGJvb2wgbV9pc1N0b3BwZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc1N1c3BlbmRl
ZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3Nob3VsZEZpcmVVcGRhdGVGb3VuZEV2ZW50VXBvblJl
c3VtaW5nIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24+PiBtX3BlbmRpbmdBY3Rpdml0eUZvckV2ZW50RGlzcGF0Y2g7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0Nv
bnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IDgyZDNlNjliYjBlZTIxMjFjMmNhNzc0OWQ5MDg1
NjA3NjZiYTAzOWQuLmEzODVkYWE4OWRkYzYzYTBkNzZmYzY1MDNjODViMjFlNjA4NDE3NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBAIC04Nyw3ICs4Nyw5IEBAIHZvaWQgU1dDb250ZXh0TWFu
YWdlcjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
ZGVzdGluCiAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyLT5pc1Rlcm1pbmF0aW5nT3JUZXJtaW5h
dGVkKCkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHZhbGlkIE1lc3NhZ2VQb3J0
Q2hhbm5lbHMuCi0gICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXIoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShzb3VyY2VEYXRhKSk7CisgICAgc2Vy
dmljZVdvcmtlci0+dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtzZXJ2aWNlV29ya2VyID0g
bWFrZVJlZigqc2VydmljZVdvcmtlciksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3Vy
Y2VEYXRhID0gV1RGTW92ZShzb3VyY2VEYXRhKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBz
ZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5xdWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKFdURk1vdmUobWVz
c2FnZSksIFdURk1vdmUoc291cmNlRGF0YSkpOworICAgIH0pOwogfQogCiB2b2lkIFNXQ29udGV4
dE1hbmFnZXI6OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKQEAgLTk2LDcgKzk4LDkgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpmaXJlSW5zdGFs
bEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgaWYgKCFzZXJ2
aWNlV29ya2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQo
KS5maXJlSW5zdGFsbEV2ZW50KCk7CisgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucnVuTG9v
cCgpLnBvc3RUYXNrKFtzZXJ2aWNlV29ya2VyID0gbWFrZVJlZigqc2VydmljZVdvcmtlcildKGF1
dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucXVldWVUYXNr
VG9GaXJlSW5zdGFsbEV2ZW50KCk7CisgICAgfSk7CiB9CiAKIHZvaWQgU1dDb250ZXh0TWFuYWdl
cjo6ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikK
QEAgLTEwNSw3ICsxMDksOSBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZpcmVBY3RpdmF0ZUV2
ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgaWYgKCFzZXJ2aWNl
V29ya2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5m
aXJlQWN0aXZhdGVFdmVudCgpOworICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnJ1bkxvb3Ao
KS5wb3N0VGFzayhbc2VydmljZVdvcmtlciA9IG1ha2VSZWYoKnNlcnZpY2VXb3JrZXIpXShhdXRv
JikgbXV0YWJsZSB7CisgICAgICAgIHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnF1ZXVlVGFza1Rv
RmlyZUFjdGl2YXRlRXZlbnQoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTV0NvbnRleHRNYW5hZ2Vy
Ojp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vj
b25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDA0ZTljODg0ZWE1ZjBhNDFlZmNhYzQ4MGVhNjdm
MjNjZWMxMmViOGMuLmU5OGU3MWYyN2RkZjY2MDU4YjBhNjk4YmQ1ODUzMzkzYmQzNDE3YzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eVJlc3BvbnNlSGVhZGVycy5oIgorI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiSlNET01Qcm9taXNlLmgiCkBAIC05MywxMyArOTQsMTIgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpydW5FdmVudExvb3AoKQogICAgIFdvcmtlclRocmVhZDo6cnVuRXZlbnRMb29wKCk7
CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cG9zdEZldGNoVGFzayhSZWY8U2Vydmlj
ZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50LCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllcj4mJiBjbGllbnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3Ry
aW5nJiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMpCit2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoUmVmPFNlcnZpY2VXb3JrZXJGZXRj
aDo6Q2xpZW50PiYmIGNsaWVudCwgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXI+JiYgY2xpZW50SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYmIHJlZmVy
cmVyLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zKQogewotICAgIC8vIEZJWE1FOiBpbnN0ZWFkIG9m
IGRpcmVjdGx5IHVzaW5nIHJ1bkxvb3AoKSwgd2Ugc2hvdWxkIGJlIHVzaW5nIHNvbWV0aGluZyBs
aWtlIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuCi0gICAgLy8gRklYTUU6IHJlcXVlc3QgYW5kIG9w
dGlvbnMgY29tZSBzdHJhaWd0aCBmcm9tIElQQyBzbyBhcmUgYWxyZWFkeSBpc29sYXRlZC4gV2Ug
c2hvdWxkIGJlIGFibGUgdG8gdGFrZSBiZW5lZml0IG9mIHRoYXQuCi0gICAgcnVuTG9vcCgpLnBv
c3RUYXNrRm9yTW9kZShbY2xpZW50ID0gV1RGTW92ZShjbGllbnQpLCBjbGllbnRJZCwgcmVxdWVz
dCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIuaXNvbGF0ZWRD
b3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgIFNlcnZpY2VXb3JrZXJGZXRjaDo6
ZGlzcGF0Y2hGZXRjaEV2ZW50KFdURk1vdmUoY2xpZW50KSwgZG93bmNhc3Q8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KSwgY2xpZW50SWQsIFdURk1vdmUocmVxdWVzdCksIFdURk1v
dmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKLSAgICB9LCBXb3JrZXJSdW5Mb29wOjpk
ZWZhdWx0TW9kZSgpKTsKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IG1ha2VS
ZWYoZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqd29ya2VyR2xvYmFsU2NvcGUo
KSkpOworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVldWVUYXNr
KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9
IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jb3B5UmVmKCksIGNsaWVudCA9IFdURk1vdmUoY2xp
ZW50KSwgY2xpZW50SWQsIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZWZlcnJlciA9IFdU
Rk1vdmUocmVmZXJyZXIpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgU2VydmljZVdvcmtlckZldGNoOjpkaXNwYXRjaEZldGNoRXZlbnQoV1RGTW92ZShj
bGllbnQpLCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIGNsaWVudElkLCBXVEZNb3ZlKHJlcXVl
c3QpLCBXVEZNb3ZlKHJlZmVycmVyKSwgV1RGTW92ZShvcHRpb25zKSk7CisgICAgfSk7CiB9CiAK
IHN0YXRpYyB2b2lkIGZpcmVNZXNzYWdlRXZlbnQoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBz
Y29wZSwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50U291cmNlJiYgc291cmNlLCBjb25zdCBVUkwmIHNvdXJjZVVSTCkKQEAgLTExMSwyMyAr
MTExLDIzIEBAIHN0YXRpYyB2b2lkIGZpcmVNZXNzYWdlRXZlbnQoU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlJiBzY29wZSwgTWVzc2FnZVdpdGhNZXNzYWdlCiAgICAgc2NvcGUudXBkYXRlRXh0ZW5k
ZWRFdmVudHNTZXQobWVzc2FnZUV2ZW50LnB0cigpKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKQordm9p
ZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydmljZVdvcmtlck9yQ2xpZW50RGF0YSYmIHNvdXJj
ZURhdGEpCiB7Ci0gICAgcnVuTG9vcCgpLnBvc3RUYXNrKFttZXNzYWdlID0gV1RGTW92ZShtZXNz
YWdlKSwgc291cmNlRGF0YSA9IFdURk1vdmUoc291cmNlRGF0YSldIChhdXRvJiBjb250ZXh0KSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNh
c3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKKyAgICBhdXRvIHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZSA9IG1ha2VSZWYoZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPigqd29ya2VyR2xvYmFsU2NvcGUoKSkpOworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jb3B5UmVm
KCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VEYXRhID0gV1RGTW92ZShzb3Vy
Y2VEYXRhKV0oKSBtdXRhYmxlIHsKICAgICAgICAgVVJMIHNvdXJjZVVSTDsKICAgICAgICAgRXh0
ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2U7CiAgICAgICAgIGlmIChXVEY6OmhvbGRz
X2FsdGVybmF0aXZlPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPihzb3VyY2VEYXRhKSkgewogICAg
ICAgICAgICAgUmVmUHRyPFNlcnZpY2VXb3JrZXJDbGllbnQ+IHNvdXJjZUNsaWVudCA9IFNlcnZp
Y2VXb3JrZXJDbGllbnQ6OmdldE9yQ3JlYXRlKHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgV1RG
TW92ZShXVEY6OmdldDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4oc291cmNlRGF0YSkpKTsKIAot
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXNvdXJjZUNsaWVudC0+dXJsKCkucHJvdG9jb2xJ
c0luSFRUUEZhbWlseSgpIHx8ICFzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUudXJsKCkucHJvdG9j
b2xJc0luSFRUUEZhbWlseSgpIHx8IHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUudXJsKCksIHNvdXJjZUNsaWVudC0+dXJsKCkpKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKCFzb3VyY2VDbGllbnQtPnVybCgpLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSB8fCAhc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT51cmwoKS5wcm90b2NvbElzSW5I
VFRQRmFtaWx5KCkgfHwgcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS0+dXJsKCksIHNvdXJjZUNsaWVudC0+dXJsKCkpKTsKIAogICAgICAgICAgICAg
c291cmNlVVJMID0gc291cmNlQ2xpZW50LT51cmwoKTsKICAgICAgICAgICAgIHNvdXJjZSA9IFdU
Rk1vdmUoc291cmNlQ2xpZW50KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0
cjxTZXJ2aWNlV29ya2VyPiBzb3VyY2VXb3JrZXIgPSBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0
ZShzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUsIFdURk1vdmUoV1RGOjpnZXQ8U2VydmljZVdvcmtl
ckRhdGE+KHNvdXJjZURhdGEpKSk7CiAKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFzb3Vy
Y2VXb3JrZXItPnNjcmlwdFVSTCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCAhc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlLnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCBwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnVybCgpLCBz
b3VyY2VXb3JrZXItPnNjcmlwdFVSTCgpKSk7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
c291cmNlV29ya2VyLT5zY3JpcHRVUkwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgIXNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+dXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8
IHByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnVy
bCgpLCBzb3VyY2VXb3JrZXItPnNjcmlwdFVSTCgpKSk7CiAKICAgICAgICAgICAgIHNvdXJjZVVS
TCA9IHNvdXJjZVdvcmtlci0+c2NyaXB0VVJMKCk7CiAgICAgICAgICAgICBzb3VyY2UgPSBXVEZN
b3ZlKHNvdXJjZVdvcmtlcik7CkBAIC0xMzYsMTIgKzEzNiwxMiBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzJiYgbQogICAgIH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpcmVJbnN0
YWxsRXZlbnQoKQordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVJbnN0
YWxsRXZlbnQoKQogewotICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhbam9iRGF0YUlkZW50aWZpZXIg
PSBtX2RhdGEuam9iRGF0YUlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gdGhp
cy0+aWRlbnRpZmllcigpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CisgICAgYXV0byBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUgPSBtYWtlUmVmKGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4o
Kndvcmtlckdsb2JhbFNjb3BlKCkpKTsKKyAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmV2
ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFtzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUgPSBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY29weVJlZigpLCBq
b2JEYXRhSWRlbnRpZmllciA9IG1fZGF0YS5qb2JEYXRhSWRlbnRpZmllciwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIgPSB0aGlzLT5pZGVudGlmaWVyKCldIHsKICAgICAgICAgYXV0byBpbnN0YWxs
RXZlbnQgPSBFeHRlbmRhYmxlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW5zdGFsbEV2ZW50
LCB7IH0sIEV4dGVuZGFibGVFdmVudDo6SXNUcnVzdGVkOjpZZXMpOwotICAgICAgICBzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChpbnN0YWxsRXZlbnQpOworICAgICAgICBz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQoaW5zdGFsbEV2ZW50KTsKIAog
ICAgICAgICBpbnN0YWxsRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0
dGxlZChbam9iRGF0YUlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXShIYXNoU2V0
PFJlZjxET01Qcm9taXNlPj4mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSB7CiAgICAgICAgICAg
ICBib29sIGhhc1JlamVjdGVkQW55UHJvbWlzZSA9IGZhbHNlOwpAQCAtMTU5LDEyICsxNTksMTIg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaXJlSW5zdGFsbEV2ZW50KCkKICAgICB9KTsK
IH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaXJlQWN0aXZhdGVFdmVudCgpCit2b2lk
IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUFjdGl2YXRlRXZlbnQoKQogewot
ICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhbc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSB0aGlzLT5p
ZGVudGlmaWVyKCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
LSAgICAgICAgYXV0byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSA9IG1ha2VSZWYoZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqd29y
a2VyR2xvYmFsU2NvcGUoKSkpOworICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRM
b29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSA9IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jb3B5UmVmKCksIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyID0gdGhpcy0+aWRlbnRpZmllcigpXSgpIG11dGFibGUgewogICAg
ICAgICBhdXRvIGFjdGl2YXRlRXZlbnQgPSBFeHRlbmRhYmxlRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuYWN0aXZhdGVFdmVudCwgeyB9LCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVz
KTsKLSAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoYWN0aXZh
dGVFdmVudCk7CisgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVu
dChhY3RpdmF0ZUV2ZW50KTsKIAogICAgICAgICBhY3RpdmF0ZUV2ZW50LT53aGVuQWxsRXh0ZW5k
TGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyXShIYXNo
U2V0PFJlZjxET01Qcm9taXNlPj4mJikgewogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
c2VydmljZVdvcmtlcklkZW50aWZpZXJdICgpIG11dGFibGUgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oCmluZGV4IGE0MjU3OWZkOGRlNTFlOTRkZjA0OGYzYWZmYmY0YTgwZDU2YzMzMTguLmQxYTY1
NzY2MDRhODExYThhODJiNjAyNGE2NThlNDE2ZWY4ZjM5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmgKQEAgLTU2LDExICs1NiwxMSBAQCBwdWJsaWM6CiAgICAgV29ya2VyT2JqZWN0UHJveHkm
IHdvcmtlck9iamVjdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsg
fQogCiAgICAgdm9pZCBzdGFydChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGJvb2wpPiYm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RGZXRjaFRhc2soUmVmPFNlcnZpY2VXb3Jr
ZXJGZXRjaDo6Q2xpZW50PiYmLCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmll
cj4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlvbnMm
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291
cmNlRGF0YSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2
ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6OkNsaWVudD4mJiwgT3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudElkZW50aWZpZXI+JiYsIFJlc291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZl
cnJlciwgRmV0Y2hPcHRpb25zJiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcXVldWVUYXNr
VG9Qb3N0TWVzc2FnZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29ya2VyT3JD
bGllbnREYXRhJiYgc291cmNlRGF0YSk7CiAKLSAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoKTsK
LSAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KCk7CisgICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVJ
bnN0YWxsRXZlbnQoKTsKKyAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUFjdGl2YXRlRXZlbnQoKTsK
IAogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEoKSBjb25z
dCB7IHJldHVybiBtX2RhdGE7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5j
cHAKaW5kZXggNDAwNjlhOTljZDI0YTlkZjc2NTE3Yzc5ZDgxYmMxYzQ1N2M4Y2YyMS4uN2E5ODVi
YTRiOGVhNjAzNTRjZmU2NWUwYWY2Y2ZjY2RiODcwNDJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xODYsNyArMTg2LDkgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25saW5lKQogICAg
IHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW2lzT25saW5lXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBhdXRvJiBnbG9iYWxTY29wZSA9IGRv
d25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgZ2xvYmFsU2NvcGUu
c2V0SXNPbmxpbmUoaXNPbmxpbmUpOwotICAgICAgICBnbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoaXNPbmxpbmUgPyBldmVudE5hbWVzKCkub25saW5lRXZlbnQgOiBldmVu
dE5hbWVzKCkub2ZmbGluZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgZ2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNr
KFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW2dsb2JhbFNjb3BlID0gbWFrZVJlZihnbG9i
YWxTY29wZSksIGlzT25saW5lXSB7CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+ZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGlzT25saW5lID8gZXZlbnROYW1lcygpLm9ubGluZUV2ZW50IDog
ZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKSk7CisgICAgICAgIH0pOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRl
ZmF1bHRNb2RlKCkpOwogfQogCkBAIC0xOTYsNyArMTk4LDkgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25u
ZWN0aW8KIAogICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hUYXNrcy5jb250YWlucyhrZXkpKTsK
ICAgICBtX29uZ29pbmdGZXRjaFRhc2tzLmFkZChrZXksIGNsaWVudC5jb3B5UmVmKCkpOwotICAg
IHRocmVhZCgpLnBvc3RGZXRjaFRhc2soV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKGNsaWVudElk
KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucykp
OworICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2xpZW50ID0gV1RGTW92ZShjbGllbnQpLCBjbGllbnRJ
ZCwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVmZXJyZXIu
aXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpXShhdXRvJikg
bXV0YWJsZSB7CisgICAgICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmlyZUZldGNoRXZlbnQoV1RG
TW92ZShjbGllbnQpLCBXVEZNb3ZlKGNsaWVudElkKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucykpOworICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRl
ZmF1bHRNb2RlKCkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y2FuY2Vs
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwg
RmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZTA5ZmQ0ZDA3OTMyODIw
YzEwMzU3ZDAxZDEwYjRhMTZhYjYzYjRhLi5iNmJjMzYzNDMzMWUxNjA1ZjJkOWYwNjNhNzg2MTcy
YTBiOGU5MTkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTktMTItMTcgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBQb3J0IHNlcnZpY2Ugd29ya2VyIGNvZGUg
dG8gdGhlIEhUTUw1IGV2ZW50IGxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNTM1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL29ubGluZS13b3JrZXIu
anM6CisgICAgICAgIERyb3AgcHJvY2VzcyBuYW1lIGNoZWNrIGFzIGl0IGNhdXNlcyBmbGFraW5l
c3MgZGVwZW5kaW5nIG9uIHdoZXRoZXIgb3Igbm90IHRoZSBzZXJ2aWNlIHdvcmtlciBydW5zIGlu
IHByb2Nlc3MuCisKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVhZHkuaHR0
cHMud2luZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvcmVhZHkuaHR0cHMud2luZG93LmpzOgorICAgICAgICBJbmNsdWRlIGFsbCBzdWJ0ZXN0cyBm
cm9tIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L3B1bGwvMjA2NTUg
bm93IHRoYXQgdGhleSBhcmUgbm8gbG9uZ2VyCisgICAgICAgIGZsYWt5LgorCiAyMDE5LTEyLTE3
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUmUtc3luYyB3ZWIt
cGxhdGZvcm0tdGVzdHMvcmVzb3VyY2VzIGZyb20gdXBzdHJlYW0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9vbmxpbmUtd29ya2VyLmpzIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL29ubGluZS13b3JrZXIuanMKaW5kZXggM2Nl
MGNhODMzMTRkNzVkMjVhMzUyMTljOTgzNGEyOTJjYWQ2ZWVlMC4uMTY1Y2UzZmEzOTk2MDcyMjll
MmZlYzI0MTRlOGEzZTFiMjJlZmIxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
c2VydmljZS13b3JrZXJzL29ubGluZS13b3JrZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL29ubGluZS13b3JrZXIuanMKQEAgLTI3LDExICsyNyw2IEBAIGFz
eW5jIGZ1bmN0aW9uIGRvVGVzdChldmVudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGlmIChzZWxmLmludGVybmFscy5wcm9jZXNzTmFtZSAhPT0gIm5vbmUiICYm
IHNlbGYuaW50ZXJuYWxzLnByb2Nlc3NOYW1lICE9PSAiV2ViS2l0VGVzdFJ1bm5lciBTZXJ2aWNl
IFdvcmtlciAobG9jYWxob3N0KSIpIHsKLSAgICAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVz
c2FnZSgiRkFJTDogd3Jvbmcgc2VydmljZSB3b3JrZXIgcHJvY2VzcyBuYW1lOiAiICsgc2VsZi5p
bnRlcm5hbHMucHJvY2Vzc05hbWUgKyAiJyIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KICAgICAgICAgaW50ZXJuYWxzLnNldE9ubGluZSh0cnVlKTsKICAgICAgICAgdmFyIGV2
ZW50TmFtZSA9IGF3YWl0IHdhaXRGb3JPbmxpbmVFdmVudCgpOwogICAgICAgICBpZiAoIW5hdmln
YXRvci5vbkxpbmUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvcmVhZHkuaHR0cHMud2luZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9yZWFkeS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CmluZGV4
IDQ0Nzk5NTc4OWQyMDJjMTEyZDIwNzUzOWQ3YTgwNTVjNjUyYzM2YTYuLjhkYTQxMTVjY2NkMDM2
ZWNhMmE0YWY5MzNlN2E4ZDM4OWE4YWI0NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9yZWFkeS5odHRwcy53aW5kb3ctZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZWFkeS5odHRwcy53aW5kb3ct
ZXhwZWN0ZWQudHh0CkBAIC03LDQgKzcsNSBAQCBQQVNTIHJlYWR5IG9uIGFuIGlmcmFtZSB3aG9z
ZSBwYXJlbnQgcmVnaXN0ZXJzIGEgbmV3IHNlcnZpY2Ugd29ya2VyCiBQQVNTIHJlYWR5IG9uIGFu
IGlmcmFtZSB0aGF0IGluc3RhbGxzIGEgbmV3IHNlcnZpY2Ugd29ya2VyIAogUEFTUyByZWFkeSBh
ZnRlciBhIGxvbmdlciBtYXRjaGVkIHJlZ2lzdHJhdGlvbiByZWdpc3RlcmVkIAogUEFTUyBhY2Nl
c3MgcmVhZHkgYWZ0ZXIgaXQgaGFzIGJlZW4gcmVzb2x2ZWQgCitQQVNTIHJlc29sdmUgcmVhZHkg
YWZ0ZXIgdW5yZWdpc3RlcmluZyAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
c2VydmljZS13b3JrZXJzL3JlYWR5Lmh0dHBzLndpbmRvdy5qcyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9yZWFkeS5odHRwcy53aW5kb3cuanMKaW5kZXggYjAxMDNhMjcx
OWRjNmQxMWM3NmU4ZmVhNjk2N2FlNzFjNGNkMTlmOC4uMDIwM2NlNmNiZTMwODkyMTM2ZjM5OTM2
OTMyNmJjMGQ4ZDVjNjk0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3JlYWR5Lmh0dHBzLndpbmRvdy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9zZXJ2aWNlLXdvcmtlcnMvcmVhZHkuaHR0cHMud2luZG93LmpzCkBAIC0xOTMsMyArMTkzLDI5
IEBAIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgKTsKIH0sICdhY2Nlc3MgcmVhZHkgYWZ0
ZXIgaXQgaGFzIGJlZW4gcmVzb2x2ZWQnKTsKIAorcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewor
ICBjb25zdCB1cmwxID0gJ3Jlc291cmNlcy9lbXB0eS13b3JrZXIuanMnOworICBjb25zdCB1cmwy
ID0gdXJsMSArICc/Mic7CisgIGNvbnN0IG1hdGNoZWRTY29wZSA9ICdyZXNvdXJjZXMvYmxhbmsu
aHRtbD9yZWFkeS1hZnRlci11bnJlZ2lzdGVyJzsKKyAgY29uc3QgcmVnMSA9IGF3YWl0IHNlcnZp
Y2Vfd29ya2VyX3VucmVnaXN0ZXJfYW5kX3JlZ2lzdGVyKHQsIHVybDEsIG1hdGNoZWRTY29wZSk7
CisgIHQuYWRkX2NsZWFudXAoKCkgPT4gcmVnMS51bnJlZ2lzdGVyKCkpOworCisgIGF3YWl0IHdh
aXRfZm9yX3N0YXRlKHQsIHJlZzEuaW5zdGFsbGluZywgJ2FjdGl2YXRpbmcnKTsKKworICBjb25z
dCBmcmFtZSA9IGF3YWl0IHdpdGhfaWZyYW1lKG1hdGNoZWRTY29wZSk7CisgIHQuYWRkX2NsZWFu
dXAoKCkgPT4gZnJhbWUucmVtb3ZlKCkpOworCisgIGF3YWl0IHJlZzEudW5yZWdpc3RlcigpOwor
CisgIC8vIFJlYWR5IHByb21pc2Ugc2hvdWxkIGJlIHBlbmRpbmcsIHdhaXRpbmcgZm9yIGEgbmV3
IHJlZ2lzdHJhdGlvbiB0byBhcnJpdmUKKyAgY29uc3QgcmVhZHlQcm9taXNlID0gZnJhbWUuY29u
dGVudFdpbmRvdy5uYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeTsKKworICBjb25zdCByZWcy
ID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIodXJsMiwgeyBzY29wZTog
bWF0Y2hlZFNjb3BlIH0pOworICB0LmFkZF9jbGVhbnVwKCgpID0+IHJlZzIudW5yZWdpc3Rlcigp
KTsKKworICBjb25zdCByZWFkeVJlZyA9IGF3YWl0IHJlYWR5UHJvbWlzZTsKKworICBhc3NlcnRf
bm90X2VxdWFscyhyZWcxLCByZWcyLCAnUmVnaXN0cmF0aW9ucyBzaG91bGQgYmUgZGlmZmVyZW50
Jyk7CisgIGFzc2VydF9lcXVhbHMocmVhZHlSZWcuYWN0aXZlLnNjcmlwdFVSTCwgcmVnMi5hY3Rp
dmUuc2NyaXB0VVJMLCAnUmVzb2x2ZXMgd2l0aCB0aGUgc2Vjb25kIHJlZ2lzdHJhdGlvbicpOwor
fSwgJ3Jlc29sdmUgcmVhZHkgYWZ0ZXIgdW5yZWdpc3RlcmluZycpOworCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>