<?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>224015</bug_id>
          
          <creation_ts>2021-03-31 13:54:58 -0700</creation_ts>
          <short_desc>Have the ServiceWorker process hold on to a file mapped version of the service worker scripts to save dirty memory</short_desc>
          <delta_ts>2021-04-02 13:24:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=223808</see_also>
          <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>224092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>mkwst</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1745764</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-31 13:54:58 -0700</bug_when>
    <thetext>Once saved to disk, then mmap&apos;d data of service worker scripts back to the ServiceWorker process, in order to save dirty memory. This is similar to what we do in the network cache implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745771</commentid>
    <comment_count>1</comment_count>
      <attachid>424818</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-31 14:06:12 -0700</bug_when>
    <thetext>Created attachment 424818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745897</commentid>
    <comment_count>2</comment_count>
      <attachid>424855</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-31 18:25:32 -0700</bug_when>
    <thetext>Created attachment 424855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745902</commentid>
    <comment_count>3</comment_count>
      <attachid>424857</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-03-31 18:38:04 -0700</bug_when>
    <thetext>Created attachment 424857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746058</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-01 09:24:06 -0700</bug_when>
    <thetext>&lt;rdar://75637679&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746059</commentid>
    <comment_count>5</comment_count>
      <attachid>424857</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-01 09:24:22 -0700</bug_when>
    <thetext>Comment on attachment 424857
Patch

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

&gt; Source/WebCore/platform/SharedBuffer.cpp:224
&gt; +    unsigned count = 0;
&gt; +    for (auto it = begin(); it != end(); ++it)
&gt; +        ++count;
&gt; +    return count;

This can be written like this:

    return std::count(begin(), end());

But also, not sure we want this function. I think hasOneSegment would be a better function to add. It would be something like this:

    auto it = begin();
    return it != end() &amp;&amp; ++it == end();

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:117
&gt; +        if (buffer.numberOfSegments() != 1)

This is an inefficient way to check If there is exactly one segment if we have a buffer with a lot segments in it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746061</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-01 09:26:03 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 424857 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=424857&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/SharedBuffer.cpp:224
&gt; &gt; +    unsigned count = 0;
&gt; &gt; +    for (auto it = begin(); it != end(); ++it)
&gt; &gt; +        ++count;
&gt; &gt; +    return count;
&gt; 
&gt; This can be written like this:
&gt; 
&gt;     return std::count(begin(), end());
&gt; 
&gt; But also, not sure we want this function. I think hasOneSegment would be a
&gt; better function to add. It would be something like this:
&gt; 
&gt;     auto it = begin();
&gt;     return it != end() &amp;&amp; ++it == end();
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:117
&gt; &gt; +        if (buffer.numberOfSegments() != 1)
&gt; 
&gt; This is an inefficient way to check If there is exactly one segment if we
&gt; have a buffer with a lot segments in it!

Ok. Will address. Please don&apos;t review this iteration further. This patch is very outdated and I will upload a fresh version shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746063</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-01 09:27:26 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; Please don&apos;t review this iteration further. This patch is
&gt; very outdated and I will upload a fresh version shortly.

No worries, I won’t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746072</commentid>
    <comment_count>8</comment_count>
      <attachid>424908</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-01 09:51:07 -0700</bug_when>
    <thetext>Created attachment 424908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746151</commentid>
    <comment_count>9</comment_count>
      <attachid>424908</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-04-01 12:02:14 -0700</bug_when>
    <thetext>Comment on attachment 424908
Patch

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

r=me

&gt; Source/WebCore/ChangeLog:13
&gt; +        scripts to the ServiceWorker processes as ShareableResource handles so that the dirty memory usage

so that =&gt; in order to reduce

&gt; Source/WebCore/ChangeLog:16
&gt; +        No new tests, no Web-facing behavior change, just a decrease dirty memory use in the ServiceWorker

decrease =&gt; decrease in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746154</commentid>
    <comment_count>10</comment_count>
      <attachid>424908</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-04-01 12:03:11 -0700</bug_when>
    <thetext>Comment on attachment 424908
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        memory usage goes from ~440MB to ~230MB in both the cold and warm cases (&quot;Cold&quot; meaning that the

I wonder if, in the cold case, executing the service worker script causes JavaScriptCore to retain a large dirty memory string. Maybe that explains the remaining 230MB?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746155</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-01 12:05:18 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #10)
&gt; Comment on attachment 424908 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=424908&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:19
&gt; &gt; +        memory usage goes from ~440MB to ~230MB in both the cold and warm cases (&quot;Cold&quot; meaning that the
&gt; 
&gt; I wonder if, in the cold case, executing the service worker script causes
&gt; JavaScriptCore to retain a large dirty memory string. Maybe that explains
&gt; the remaining 230MB?

230MB remain in the WebProcess in both the cold and warm cases. This seems to indicate both 100MB scripts are still kept in memory in the WebProcess in one place. Looking at the code, I *think* it must in JavaScriptCore indeed. I can try and find out why in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746159</commentid>
    <comment_count>12</comment_count>
      <attachid>424927</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-01 12:10:25 -0700</bug_when>
    <thetext>Created attachment 424927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746162</commentid>
    <comment_count>13</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-01 12:12:27 -0700</bug_when>
    <thetext>Maybe a garbage-collectable string that just hasn’t been collected yet?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746164</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-01 12:13:36 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; Maybe a garbage-collectable string that just hasn’t been collected yet?

Maybe but I did send a memory pressure warning before collecting memory measurements. The memory pressure warning *should* have triggered a sync GC I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746166</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-01 12:15:06 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; (In reply to Darin Adler from comment #13)
&gt; &gt; Maybe a garbage-collectable string that just hasn’t been collected yet?
&gt; 
&gt; Maybe but I did send a memory pressure warning before collecting memory
&gt; measurements. The memory pressure warning *should* have triggered a sync GC
&gt; I think.

Note that the scripts I used are very simple:
large.js:
```
importScripts(&apos;large-sub.js&apos;);
a = 1;
/* a 100MB comment */
```

large-sub.js:
```
b = 2;
/* a 100 MB comment */
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746211</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-01 13:05:54 -0700</bug_when>
    <thetext>Committed r275375: &lt;https://commits.webkit.org/r275375&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424927.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746631</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 13:24:04 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #13)
&gt; Maybe a garbage-collectable string that just hasn’t been collected yet?

Turns out we were not clearing the JS code cache or doing GC in worker threads on memory pressure. I followed up in Bug 224110.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424818</attachid>
            <date>2021-03-31 14:06:12 -0700</date>
            <delta_ts>2021-03-31 18:25:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224015-20210331140611.patch</filename>
            <type>text/plain</type>
            <size>24309</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNkMDkwYjE4NmEzMjhm
YjM5NjRmMTYzZDljOTIzYjkzZmFlYTlmNC4uOTZlYTg4MWI3YjU3Y2I4MGNkYzEzNDcwMTgwYjMz
NjUxMWU3M2ZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTAzLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT25jZSBzYXZlZCB0byBkaXNr
LCBzZW5kIG1tYXAnZCBkYXRhIG9mIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgYmFjayB0byB0aGUg
U2VydmljZVdvcmtlciBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjQwMTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbiB0aGUgY29sZCBjYXNlIHdoZXJlIGEgc2VydmljZSB3b3JrZXIgd2Fz
IGp1c3QgcmVnaXN0ZXJlZCwgdGhlIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyBmZXRjaGVzIHRoZQor
ICAgICAgICBzY3JpcHQgYW5kIHRoZW4gc2VuZHMgdGhlbSB0byB0aGUgTmV0d29yayBwcm9jZXNz
IHRvIHNhdmUgdGhlbSB0byBkaXNrLiBPbmNlIHNhdmVkIHRvIGRpc2ssIHRoZQorICAgICAgICBO
ZXR3b3JrIHByb2Nlc3Mgd2FzIGhvbGRpbmcgb24gdG8gYSBtbWFwJ2QgdmVyc2lvbiBvZiB0aGUg
c2NyaXB0cyBpbiBvcmRlciB0byBzYXZlIG1lbW9yeS4gSG93ZXZlciwKKyAgICAgICAgd2Ugd291
bGQgbm90IHNlbmQgdGhlIG1tYXAnZCB2ZXJzaW9uIG9mIHRoZSBzY3JpcHQgYmFjayB0byBXZWJQ
cm9jZXNzIHNvIHRoYXQgd2UgY2FuIGRlY3JlYXNlIGRpcnR5CisgICAgICAgIG1lbW9yeSB1c2Ug
aW4gdGhlIFdlYlByb2Nlc3MgdG9vLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGlzLiBUaGUgYXBw
cm9hY2ggaXMgdmVyeSBzaW1pbGFyIHRvIHdoYXQKKyAgICAgICAgd2UgYWxyZWFkeSBkbyBpbiB0
aGUgbmV0d29yayBjYWNoZSBpbXBsZW1lbnRhdGlvbiAod2UgY2FjaGUgdGhlIHJlc291cmNlIG9u
IGRpc2ssIG1tYXAgaXQgdGhlbiBzZW5kCisgICAgICAgIGl0IGJhY2sgdG8gdGhlIFdlYlByb2Nl
c3Mgc28gdGhhdCBpdCBjYW4gdXBkYXRlIHRoZSBjb3B5IG9mIHRoZSBkYXRhIGluIHRoZSBtZW1v
cnkgY2FjaGUpLgorCisgICAgICAgIFRvIHZhbGlkYXRlIHRoaXMsIEkgY3JlYXRlZCBhIGxhcmdl
IHNlcnZpY2Ugd29ya2VyIHdpdGggYSB+MTAwTUIgbWFpbiBzY3JpcHQsIGltcG9ydGluZyBhbm90
aGVyCisgICAgICAgIH4xMDBNQiBzdWJzY3JpcHQuIEJlZm9yZSBteSBjaGFuZ2UsIGEgY29sZCBs
b2FkIG9mIG15IHRlc3QgcGFnZSB3b3VsZCByZXN1bHQgaW4gdGhlIFdlYlByb2Nlc3MgdXNpbmcK
KyAgICAgICAgNDQwTUIgb2YgZGlydHkgbWVtb3J5LiBBZnRlciBteSBjaGFuZ2UsIHRoZSBtZW1v
cnkgdXNhZ2UgZ29lcyBkb3duIHRvIDIzMk1CLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgbWVt
b3J5IHVzYWdlIGZvciBhIHdhcm0gbGF1bmNoIChzZXJ2aWNlIHdvcmtlciB3YXMgbG9hZGVkIHN0
cmFpZ2h0IGZyb20gZGlzaykgZG9lcyBub3QKKyAgICAgICAgZ28gZG93biB3aXRoIHRoaXMgcGF0
Y2ggYW5kIHN0YXlzIGFyb3VuZCA0NDBNQi4gSSBhZGRlZCBhIEZJWE1FIGNvbW1lbnQgaW4gdGhl
IGNvZGUgdG8gYWRkcmVzcyB0aGlzLgorICAgICAgICBUaGUgaXNzdWUgaXMgdGhhdCB3ZSdyZSB1
c2luZyBTaGFyZWRCdWZmZXIgdHlwZSB3aGVuIElQQydpbmcgdGhlIHNjcmlwdHMgb3ZlciB0byB0
aGUgV2ViUHJvY2VzcyBhbmQKKyAgICAgICAgdGhlIFNoYXJlZEJ1ZmZlciBkZWNvZGVyIGRvZXMg
YSBjb3B5IG9mIHRoZSBkYXRhLCBldmVuIGlmIGl0IGlzIG1tYXAnZC4KKworICAgICAgICAqIHBs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
Om51bWJlck9mU2VnbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0Nv
bnRleHRNYW5hZ2VyOjpkaWRTYXZlU2NyaXB0c1RvRGlzayk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
aDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRz
VG9EaXNrKToKKwogMjAyMS0wMy0zMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFVzZSBNQUNIX1BPUlRfVkFMSUQoKSB3aGVuIHdhbnRpbmcgdG8gY2hlY2sgaWYg
YSBtYWNoIHBvcnQgaXMgdmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzNkMDBlMmJjMTZmMGI0YzQyYjM3YTZl
MjEwYmJhZjY3ZTg3NzE3Ny4uYzkzNjdkYmVjNGQ0NjA1NzcyNTc3MmE4NjEwMzFmYjIzZjA3ZjYw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wMy0zMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE9uY2Ugc2F2ZWQgdG8gZGlzaywgdGhlbiBtbWFw
J2QgZGF0YSBvZiBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGJhY2sgdG8gdGhlIFNlcnZpY2VXb3Jr
ZXIgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI0MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlzayk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkU2F2
ZVNjcmlwdHNUb0Rpc2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKwogMjAyMS0wMy0zMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSBzaG91bGQgbm90IGJlIHNhdmVkIGJvdGggb24gU2VydmljZVdvcmtlclRocmVhZCAm
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAKaW5kZXggNTg3YmFlYjExZTQzNDdiYzYwZWEyMzI5ODI1NWUzOTU4ZjFjODdjMC4u
NzI3ZDU5YjE2M2ZkMjMyYzEwMzA1YTlmYWQzNzg0Yzk2MjM4NjhmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0yMTYsNiArMjE2LDE0IEBAIFJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGNsb25lOwog
fQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpudW1iZXJPZlNlZ21lbnRzKCkgY29uc3QKK3sKKyAg
ICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgZm9yIChhdXRvIGl0ID0gYmVnaW4oKTsgaXQgIT0g
ZW5kKCk7ICsraXQpCisgICAgICAgICsrY291bnQ7CisgICAgcmV0dXJuIGNvdW50OworfQorCiAj
aWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVu
dCgpIGNvbnN0CiB7CkBAIC0yNDcsNiArMjU1LDExIEBAIGNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKK2Jvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0
YSk7Cit9CisKICNpZiAhVVNFKENGKQogdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3RO
ZWVkZWRTb29uKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
aW5kZXggM2MyMjNhMmZmMzk2OWU2OTM2ODYzMmM4MDhhMjczOTdkOWYyNzRkMy4uODFkNjAyZjU3
NGRhZTE4OWZhYzE3MWY5NWNkNmExZGMxYzUwZDYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICAgICAgYm9v
bCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAgICAg
ICBEYXRhU2VnbWVudChWZWN0b3I8Y2hhcj4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CkBAIC0xODUsNiArMTg3LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50
cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9
CisgICAgc2l6ZV90IG51bWJlck9mU2VnbWVudHMoKSBjb25zdDsKICAgICAKICAgICAvLyBiZWdp
biBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgogICAg
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGEyZTYyOTFlNGI3MDQ1MDY4N2Q0ZWY5MTAxYzI1
YTIwNDc5MGE5YzguLmIwM2YzZGFjYjkzOTMyMzJlMWM4NWMwNTVkOTllYWZlMzRlMTIyMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xNTUsNiArMTU1LDIyIEBAIHZvaWQgU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlOjpzZXRTY3JpcHRSZXNvdXJjZShjb25zdCBVUkwmIHVybCwgU2Vydmlj
ZVdvcmtlckNvCiAgICAgbV9jb250ZXh0RGF0YS5zY3JpcHRSZXNvdXJjZU1hcC5zZXQodXJsLCBX
VEZNb3ZlKHNjcmlwdCkpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZGlk
U2F2ZVNjcmlwdHNUb0Rpc2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBzY3JpcHQsIEhhc2hNYXA8
VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpCit7CisgICAgLy8g
VGhlc2Ugc2NyaXB0cyBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIHRoZSBvbmVzIHdlIGhhdmUuIEhv
d2V2ZXIsIHRoZXNlIGFyZSBtbWFwJ2Qgc28gdXNpbmcgdGhlbSBoZWxwcyByZWR1Y2UgZGlydHkg
bWVtb3J5IHVzYWdlLgorICAgIGlmIChzY3JpcHQpIHsKKyAgICAgICAgQVNTRVJUKG1fY29udGV4
dERhdGEuc2NyaXB0LmdldCgpID09ICpzY3JpcHQpOworICAgICAgICBtX2NvbnRleHREYXRhLnNj
cmlwdCA9IHNjcmlwdC5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKyAgICBmb3IgKGF1dG8mIHBh
aXIgOiBpbXBvcnRlZFNjcmlwdHMpIHsKKyAgICAgICAgYXV0byBpdCA9IG1fY29udGV4dERhdGEu
c2NyaXB0UmVzb3VyY2VNYXAuZmluZChwYWlyLmtleSk7CisgICAgICAgIGlmIChpdCA9PSBtX2Nv
bnRleHREYXRhLnNjcmlwdFJlc291cmNlTWFwLmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIEFTU0VSVCgqaXQtPnZhbHVlLnNjcmlwdCA9PSAqcGFpci52YWx1ZSk7IC8vIERv
IGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBhcmUgaWRlbnRpY2FsLgorICAgICAg
ICBpdC0+dmFsdWUuc2NyaXB0ID0gV1RGTW92ZShwYWlyLnZhbHVlKTsKKyAgICB9Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuaAppbmRleCAxZWNmMTE1ZTViNWYwMzNkNmU0NjhmZmE0NWFmMTgzMGNk
YjA1NjZhLi5lZTc1ZWU5ZWQxYTMyOTdjMzMyNjllOTNmZDA2ZTc4ZWUzYTBjNWI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0KiBzY3JpcHRSZXNvdXJjZShjb25zdCBV
UkwmKSBjb25zdDsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKGNvbnN0IFVSTCYsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJik7CiAKKyAgICB2b2lkIGRpZFNh
dmVTY3JpcHRzVG9EaXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVS
TCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKKwogICAgIGNvbnN0
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRleHREYXRhOyB9CiAgICAgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHREYXRhLmNlcnRpZmljYXRlSW5mbzsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuY3BwCmluZGV4IDZkYTliYTgzZjEyZjc1Mjk2NTZhMWJiM2ViZTgzNjJh
OWNmNTBiYmYuLmNjM2E1OTNkZGE4NDQ5YTRkYmI1NGEwYzc0MjJiNmY2ODhkZGJjYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuY3BwCkBAIC0xMjAsNiArMTIwLDEyIEBAIHZvaWQgU1dDb250ZXh0TWFu
YWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFNlY29uCiAgICAgc3RvcFdvcmtlcigqc2VydmljZVdvcmtlciwgdGltZW91dCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmRpZFNhdmVT
Y3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIGlmIChhdXRvIHNlcnZpY2VXb3JrZXIgPSBtX3dv
cmtlck1hcC50YWtlKGlkZW50aWZpZXIpKQorICAgICAgICBzZXJ2aWNlV29ya2VyLT5kaWRTYXZl
U2NyaXB0c1RvRGlzayhXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7
Cit9CisKIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6c3RvcFdvcmtlcihTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkmIHNlcnZpY2VXb3JrZXIsIFNlY29uZHMgdGltZW91dCwgRnVuY3Rpb248dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gaWRlbnRpZmllciA9IHNlcnZpY2VX
b3JrZXIuaWRlbnRpZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IDgyOWI5ZTQwODFjNmFi
YjU0ZWQ0MGExOWRhODdhMDc4YTc3YzFmMTEuLmRkYmViNTg1NGFjMjE5YzE5OGM2YjY3ZDEzZmE1
OGU4OTk2OGJiOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0ZXJtaW5h
dGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNlY29uZHMgdGltZW91dCwgRnVuY3Rp
b248dm9pZCgpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFNhdmVTY3JpcHRzVG9E
aXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHNjcmlw
dCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cyk7
CiAKICAgICB2b2lkIGZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKGNvbnN0IFdURjo6RnVuY3Rp
b248dm9pZChTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkmKT4mKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggOTBkN2ZmNjUzOWUyY2MxNTljZTIyYmQ0OTZjZjg3
MDViYzIxNGRkYS4uYjU3NDgzNTg0YzA1MTk5ODk5Y2Y2NzU1ZTk3YzkzYmZiMDg2ZTJlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0yODEsNiArMjgxLDEzIEBA
IHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpmaXJlQWN0aXZhdGVFdmVudCgpCiAgICAg
fSk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpkaWRTYXZlU2NyaXB0c1Rv
RGlzayhSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKK3sKKyAgICB0aHJlYWQoKS5ydW5Mb29w
KCkucG9zdFRhc2soW3NjcmlwdCA9IFdURk1vdmUoc2NyaXB0KSwgaW1wb3J0ZWRTY3JpcHRzID0g
V1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpXShhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICAg
ICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5kaWRTYXZlU2Ny
aXB0c1RvRGlzayhXVEZNb3ZlKHNjcmlwdCksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7Cisg
ICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKaW5kZXggN2Vj
N2I4ZTRlZjFkOGFhMWI1YzVjZmQ5NTE3MzA3OTU4NWI4YmU4NS4uODVkOGNkZTc2MjFiODdiODIz
OTZkZDhiMjJjNTIyNWFiOWE0N2EyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmgKQEAgLTc4LDYgKzc4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXIoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2VydmljZVdvcmtlck9yQ2xpZW50
RGF0YSYmKTsKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIGZpcmVBY3Rp
dmF0ZUV2ZW50KCk7CisgICAgdm9pZCBkaWRTYXZlU2NyaXB0c1RvRGlzayhSZWZQdHI8U2hhcmVk
QnVmZmVyPiYmIHNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGlt
cG9ydGVkU2NyaXB0cyk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExhc3ROYXZpZ2F0
aW9uV2FzQXBwQm91bmQoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCmluZGV4IDliZTM0NDQ5MWYwNjEzZmFlMTQwZTc5ODUxYjcxMGEzYjMyYjJiMjUuLmUxOGEy
ZDFiYjkxMjk5ZmM2MGYwY2UzNjNkYTBjYzJhYjU0YTVlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaApAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3QgSGFzaE1hcDxV
UkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgaW1wb3J0ZWRTY3JpcHRzKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJv
b2wgaGFzU2VjdXJpdHlFcnJvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBtYXRjaEFsbENvbXBs
ZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiYpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAppbmRleCA2MTNiYjcyYzU4OGQ4
YTE3MGIxZTRiYjJiNzkwYzAzMDBiZTFmNDRlLi5mOTBiOGYyNzkyMGM0OTAzMWExN2I0OGY2YTMz
OWE1OTFiMTQyYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApAQCAtMjQwLDcgKzI0MCwxMSBAQCB2b2lk
IFNXU2VydmVyV29ya2VyOjpzZXRTY3JpcHRSZXNvdXJjZShVUkwmJiB1cmwsIFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YTo6SW1wbwogCiB2b2lkIFNXU2VydmVyV29ya2VyOjpkaWRTYXZlU2NyaXB0
c1RvRGlzayhSZWY8U2hhcmVkQnVmZmVyPiYmIG1haW5TY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpCiB7Ci0gICAgLy8gVGhlIHNjcmlw
dHMgd2VyZSBzYXZlZCB0byBkaXNrLCByZXBsYWNlIG91ciBzY3JpcHRzIHdpdGggdGhlIG1tYXAn
ZCB2ZXJzaW9uIHRvIHNhdmUgbWVtb3J5LgorICAgIC8vIFNlbmQgbW1hcCdkIHZlcnNpb24gb2Yg
dGhlIHNjcmlwdHMgdG8gdGhlIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyBzbyB3ZSBjYW4gc2F2ZSBk
aXJ0eSBtZW1vcnkuCisgICAgaWYgKGF1dG8qIGNvbnRleHRDb25uZWN0aW9uID0gdGhpcy0+Y29u
dGV4dENvbm5lY3Rpb24oKSkKKyAgICAgICAgY29udGV4dENvbm5lY3Rpb24tPmRpZFNhdmVTY3Jp
cHRzVG9EaXNrKGlkZW50aWZpZXIoKSwgbWFpblNjcmlwdCwgaW1wb3J0ZWRTY3JpcHRzKTsKKwor
ICAgIC8vIFRoZSBzY3JpcHRzIHdlcmUgc2F2ZWQgdG8gZGlzaywgcmVwbGFjZSBvdXIgc2NyaXB0
cyB3aXRoIHRoZSBtbWFwJ2QgdmVyc2lvbiB0byBzYXZlIGRpcnR5IG1lbW9yeS4KICAgICBBU1NF
UlQobWFpblNjcmlwdC5nZXQoKSA9PSBtX3NjcmlwdC5nZXQoKSk7IC8vIERvIGEgbWVtY21wIHRv
IG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBhcmUgaWRlbnRpY2FsLgogICAgIG1fc2NyaXB0ID0gV1RG
TW92ZShtYWluU2NyaXB0KTsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiBpbXBvcnRlZFNjcmlwdHMp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAKaW5kZXggOThkOTJkMWI1YzU1NDQyY2U2MmJmYjZiZDU1ZmVmNWFjYmUyMzFiNS4uZTI5MjNm
ODEzYTYwYjRlNDllZjEzNjgzOWZjZDYwYjllNDE0ODNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoVGFza01l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCkBAIC04
OSw2ICs5MCw4IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2CiAKIHZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsK
KyAgICAvLyBGSVhNRTogVGhlIHNjcmlwdHMgY29udGFpbmVkIGluIHRoZSBTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEgd2lsbCBiZSBjb3BpZWQgb25jZSBkZWNvZGVkIGZyb20gSVBDLiBXZSBzaG91
bGQgdXNlIFNoYXJlYWJsZVJlc291cmNlCisgICAgLy8gd2hlbmV2ZXIgcG9zc2libGUgdG8gc2F2
ZSBtZW1vcnkgKGxpa2Ugd2UgZG8gaW4gZGlkU2F2ZVNjcmlwdHNUb0Rpc2soKSkuCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Okluc3RhbGxTZXJ2aWNl
V29ya2VyIHsgZGF0YSwgdXNlckFnZW50IH0pOwogfQogCkBAIC0xMDcsNiArMTEwLDQ2IEBAIHZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VyCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OlRlcm1pbmF0ZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllcikp
OwogfQogCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkU2F2ZVNjcmlw
dHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBIYXNoTWFwPFVSTCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiBpbXBvcnRlZFNjcmlwdHMpCit7CisjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKKyAgICBhdXRvIHRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUgPSBbXShTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikgeworICAgICAgICBpZiAoYnVmZmVyLm51bWJlck9mU2VnbWVudHMo
KSAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9
OworCisgICAgICAgIC8vIElmIHRoaXMgaXMgbm90IGZpbGUgbWFwcGVkIGRhdGEsIHRoZW4gdGhl
cmUgaXMgbm8gcG9pbnQgc2VuZGluZyBpdCBvdmVyLgorICAgICAgICBhdXRvJiBzZWdtZW50ID0g
YnVmZmVyLmJlZ2luKCktPnNlZ21lbnQ7CisgICAgICAgIGlmICghc2VnbWVudC0+Y29udGFpbnNN
YXBwZWRGaWxlRGF0YSgpKQorICAgICAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGUgeyB9OworCisgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5Ojp3
cmFwTWFwKGNvbnN0X2Nhc3Q8Y2hhcio+KHNlZ21lbnQtPmRhdGEoKSksIHNlZ21lbnQtPnNpemUo
KSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CisgICAgICAgIGlmICghc2hh
cmVkTWVtb3J5KQorICAgICAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUg
eyB9OworCisgICAgICAgIGF1dG8gc2hhcmVhYmxlUmVzb3VyY2UgPSBTaGFyZWFibGVSZXNvdXJj
ZTo6Y3JlYXRlKHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgpLCAwLCBzZWdtZW50LT5zaXpl
KCkpOworICAgICAgICBpZiAoIXNoYXJlYWJsZVJlc291cmNlKQorICAgICAgICAgICAgcmV0dXJu
IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9OworCisgICAgICAgIFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGUgc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7CisgICAgICAgIHNoYXJlYWJsZVJl
c291cmNlLT5jcmVhdGVIYW5kbGUoc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUpOworICAgICAgICBy
ZXR1cm4gc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7CisgICAgfTsKKyAgICBhdXRvIHNjcmlwdEhh
bmRsZSA9IHRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoc2NyaXB0KTsKKyAgICBIYXNoTWFwPFVS
TCwgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZT4gaW1wb3J0ZWRTY3JpcHRIYW5kbGVzOworICAg
IGZvciAoYXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykgeworICAgICAgICBhdXRvIGhhbmRs
ZSA9IHRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKnBhaXIudmFsdWUpOworICAgICAgICBpZiAo
aGFuZGxlLmlzTnVsbCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGltcG9ydGVk
U2NyaXB0SGFuZGxlcy5hZGQocGFpci5rZXksIFdURk1vdmUoaGFuZGxlKSk7CisgICAgfQorICAg
IGlmICghc2NyaXB0SGFuZGxlLmlzTnVsbCgpIHx8ICFpbXBvcnRlZFNjcmlwdEhhbmRsZXMuaXNF
bXB0eSgpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6RGlkU2F2ZVNjcmlwdHNUb0Rpc2sgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgc2Ny
aXB0SGFuZGxlLCBpbXBvcnRlZFNjcmlwdEhhbmRsZXMgfSk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShzY3JpcHQpOworICAgIFVOVVNFRF9QQVJBTShpbXBvcnRlZFNjcmlwdHMpOworI2VuZGlm
Cit9CisKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVEdWVU
b1VucmVzcG9uc2l2ZW5lc3MoKQogewogICAgIG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OlRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMgeyB3ZWJQ
cm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGIzZGJmNGNjMTIzMjYxZDY1NTllMjlkNjJkNzAz
MzIyMzI3MGYyMmMuLjY4Zjc5MjUzNjdkMjVmYzkzZTc1OGY0YjAwN2Y1ODA0M2JjNzEyMjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgZmlyZUFjdGl2YXRl
RXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQg
dGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsK
KyAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHNjcmlwdCwgY29uc3QgSGFzaE1hcDxVUkws
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgaW1wb3J0ZWRTY3JpcHRzKSBmaW5hbDsK
ICAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWludDY0X3QgcmVxdWVz
dElkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikgZmluYWw7CiAgICAgdm9pZCBtYXRjaEFsbENv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
U2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCA3ODZjOTA1NGE5ZTZjZTQyOTJmN2Q3Y2FmMjFkMGM5
ZjNlMTBiZjY0Li41Mzc0ZDdiOTZjZjIyMTlhNzY2YmI3MGFiNjBhYzg4NzM2NmMxZjQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTYwLDggKzYwLDggQEAg
cHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CiAKICAgICAg
ICAgbXV0YWJsZSBTaGFyZWRNZW1vcnk6OkhhbmRsZSBtX2hhbmRsZTsKLSAgICAgICAgdW5zaWdu
ZWQgbV9vZmZzZXQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICAgICAgdW5zaWduZWQg
bV9vZmZzZXQgeyAwIH07CisgICAgICAgIHVuc2lnbmVkIG1fc2l6ZSB7IDAgfTsKICAgICB9Owog
CiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIHJlc291cmNlIHRoYXQgdXNlcyBtYWxsb2NlZCBt
ZW1vcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggOTBhMmQ4Y2Zj
NjBmZGFhNTdjM2E3ODkwOTI0YTRiODVmZTFkMzE3NC4uNzJiYjJjMTVhNWY5M2VjOWFlMDBiNWM5
MDNjYzUzZWNjYjllODRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApA
QCAtMjYyLDYgKzI2MiwyNiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp0
ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbgogICAgIFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0NvbnRl
eHRNYW5hZ2VyOjp3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIG51bGxwdHIpOwogfQogCisjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIHNjcmlwdEhh
bmRsZSwgY29uc3QgSGFzaE1hcDxVUkwsIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU+JiBpbXBv
cnRlZFNjcmlwdEhhbmRsZXMpCit7CisgICAgYXV0byB0b1NoYXJlZEJ1ZmZlciA9IFtdKGNvbnN0
IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSkgLT4gUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4geworICAgICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJblNoYXJl
ZEJ1ZmZlcigpOworICAgICAgICBpZiAoIXNoYXJlZEJ1ZmZlcikKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2s6IEZhaWxlZCB0byB3cmFwIFNoYXJlYWJsZVJlc291cmNl
IGhhbmRsZSBpbiBhIFNoYXJlZEJ1ZmZlciIpOworICAgICAgICByZXR1cm4gc2hhcmVkQnVmZmVy
OworICAgIH07CisgICAgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiBpbXBvcnRl
ZFNjcmlwdHM7CisgICAgZm9yIChhdXRvJiBwYWlyIDogaW1wb3J0ZWRTY3JpcHRIYW5kbGVzKSB7
CisgICAgICAgIGlmIChhdXRvIHNoYXJlZEJ1ZmZlciA9IHRvU2hhcmVkQnVmZmVyKHBhaXIudmFs
dWUpKQorICAgICAgICAgICAgaW1wb3J0ZWRTY3JpcHRzLmFkZChwYWlyLmtleSwgV1RGTW92ZShz
aGFyZWRCdWZmZXIpKTsKKyAgICB9CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soaWRlbnRpZmllciwgdG9TaGFyZWRCdWZmZXIoc2NyaXB0SGFu
ZGxlKSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKK30KKyNlbmRpZgorCiB2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlm
aWVyLCBjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIgc291cmNlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
CiB7CiAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNs
aWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIHNv
dXJjZU9yaWdpbiksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggOWNh
NGMxZjE3MjQ5NGVhNGM5YzI2NmMxY2MwNWZkOGJlMjRkYTdlYi4uMGMyNTdiZjBiNDY3MmM5YTkw
OGE1ZWRjNGYxMWUyZmY3ZjgwYWM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNs
dWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXNSZXBsaWVzLmgiCkBAIC05MCw2ICs5MSw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAg
ICB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKICAgICB2b2lkIHRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcik7CisjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKKyAgICB2b2lkIGRpZFNhdmVT
Y3JpcHRzVG9EaXNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTaGFy
ZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBzY3JpcHQsIGNvbnN0IEhhc2hNYXA8VVJMLCBTaGFyZWFi
bGVSZXNvdXJjZTo6SGFuZGxlPiYgaW1wb3J0ZWRTY3JpcHRzKTsKKyNlbmRpZgogICAgIHZvaWQg
ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYsIGJvb2wgaGFz
U2VjdXJpdHlFcnJvcik7CiAgICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRj
aEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVu
dERhdGE+JiYpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDUy
ODRjZDRhNWZmY2E1NzYyNDk4YWJhMzJkMTE3NzM4NmQ2NDNiZmUuLmNmZDIyYTA1YTI0MmYwNTg1
NGQ5NTUyMDJjMTJkMmNjNDc2NTI0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMSw2ICszMSw5IEBAIG1lc3NhZ2VzIC0+IFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIEZpcmVJbnN0YWxs
RXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBG
aXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIFRlcm1pbmF0ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyKQorI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCisgICAgRGlkU2F2
ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBzY3JpcHQs
IEhhc2hNYXA8VVJMLCBXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU+IGltcG9ydGVk
U2NyaXB0cyk7CisjZW5kaWYKICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVp
bnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiBkYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCiAgICAgTWF0
Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9y
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnRzRGF0YSkKICAgICBTZXRV
c2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424855</attachid>
            <date>2021-03-31 18:25:32 -0700</date>
            <delta_ts>2021-03-31 18:40:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224015-20210331182531.patch</filename>
            <type>text/plain</type>
            <size>24308</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNkMDkwYjE4NmEzMjhm
YjM5NjRmMTYzZDljOTIzYjkzZmFlYTlmNC4uOTZlYTg4MWI3YjU3Y2I4MGNkYzEzNDcwMTgwYjMz
NjUxMWU3M2ZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTAzLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT25jZSBzYXZlZCB0byBkaXNr
LCBzZW5kIG1tYXAnZCBkYXRhIG9mIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgYmFjayB0byB0aGUg
U2VydmljZVdvcmtlciBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjQwMTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbiB0aGUgY29sZCBjYXNlIHdoZXJlIGEgc2VydmljZSB3b3JrZXIgd2Fz
IGp1c3QgcmVnaXN0ZXJlZCwgdGhlIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyBmZXRjaGVzIHRoZQor
ICAgICAgICBzY3JpcHQgYW5kIHRoZW4gc2VuZHMgdGhlbSB0byB0aGUgTmV0d29yayBwcm9jZXNz
IHRvIHNhdmUgdGhlbSB0byBkaXNrLiBPbmNlIHNhdmVkIHRvIGRpc2ssIHRoZQorICAgICAgICBO
ZXR3b3JrIHByb2Nlc3Mgd2FzIGhvbGRpbmcgb24gdG8gYSBtbWFwJ2QgdmVyc2lvbiBvZiB0aGUg
c2NyaXB0cyBpbiBvcmRlciB0byBzYXZlIG1lbW9yeS4gSG93ZXZlciwKKyAgICAgICAgd2Ugd291
bGQgbm90IHNlbmQgdGhlIG1tYXAnZCB2ZXJzaW9uIG9mIHRoZSBzY3JpcHQgYmFjayB0byBXZWJQ
cm9jZXNzIHNvIHRoYXQgd2UgY2FuIGRlY3JlYXNlIGRpcnR5CisgICAgICAgIG1lbW9yeSB1c2Ug
aW4gdGhlIFdlYlByb2Nlc3MgdG9vLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGlzLiBUaGUgYXBw
cm9hY2ggaXMgdmVyeSBzaW1pbGFyIHRvIHdoYXQKKyAgICAgICAgd2UgYWxyZWFkeSBkbyBpbiB0
aGUgbmV0d29yayBjYWNoZSBpbXBsZW1lbnRhdGlvbiAod2UgY2FjaGUgdGhlIHJlc291cmNlIG9u
IGRpc2ssIG1tYXAgaXQgdGhlbiBzZW5kCisgICAgICAgIGl0IGJhY2sgdG8gdGhlIFdlYlByb2Nl
c3Mgc28gdGhhdCBpdCBjYW4gdXBkYXRlIHRoZSBjb3B5IG9mIHRoZSBkYXRhIGluIHRoZSBtZW1v
cnkgY2FjaGUpLgorCisgICAgICAgIFRvIHZhbGlkYXRlIHRoaXMsIEkgY3JlYXRlZCBhIGxhcmdl
IHNlcnZpY2Ugd29ya2VyIHdpdGggYSB+MTAwTUIgbWFpbiBzY3JpcHQsIGltcG9ydGluZyBhbm90
aGVyCisgICAgICAgIH4xMDBNQiBzdWJzY3JpcHQuIEJlZm9yZSBteSBjaGFuZ2UsIGEgY29sZCBs
b2FkIG9mIG15IHRlc3QgcGFnZSB3b3VsZCByZXN1bHQgaW4gdGhlIFdlYlByb2Nlc3MgdXNpbmcK
KyAgICAgICAgNDQwTUIgb2YgZGlydHkgbWVtb3J5LiBBZnRlciBteSBjaGFuZ2UsIHRoZSBtZW1v
cnkgdXNhZ2UgZ29lcyBkb3duIHRvIDIzMk1CLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgbWVt
b3J5IHVzYWdlIGZvciBhIHdhcm0gbGF1bmNoIChzZXJ2aWNlIHdvcmtlciB3YXMgbG9hZGVkIHN0
cmFpZ2h0IGZyb20gZGlzaykgZG9lcyBub3QKKyAgICAgICAgZ28gZG93biB3aXRoIHRoaXMgcGF0
Y2ggYW5kIHN0YXlzIGFyb3VuZCA0NDBNQi4gSSBhZGRlZCBhIEZJWE1FIGNvbW1lbnQgaW4gdGhl
IGNvZGUgdG8gYWRkcmVzcyB0aGlzLgorICAgICAgICBUaGUgaXNzdWUgaXMgdGhhdCB3ZSdyZSB1
c2luZyBTaGFyZWRCdWZmZXIgdHlwZSB3aGVuIElQQydpbmcgdGhlIHNjcmlwdHMgb3ZlciB0byB0
aGUgV2ViUHJvY2VzcyBhbmQKKyAgICAgICAgdGhlIFNoYXJlZEJ1ZmZlciBkZWNvZGVyIGRvZXMg
YSBjb3B5IG9mIHRoZSBkYXRhLCBldmVuIGlmIGl0IGlzIG1tYXAnZC4KKworICAgICAgICAqIHBs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
Om51bWJlck9mU2VnbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0Nv
bnRleHRNYW5hZ2VyOjpkaWRTYXZlU2NyaXB0c1RvRGlzayk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
aDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRz
VG9EaXNrKToKKwogMjAyMS0wMy0zMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFVzZSBNQUNIX1BPUlRfVkFMSUQoKSB3aGVuIHdhbnRpbmcgdG8gY2hlY2sgaWYg
YSBtYWNoIHBvcnQgaXMgdmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzNkMDBlMmJjMTZmMGI0YzQyYjM3YTZl
MjEwYmJhZjY3ZTg3NzE3Ny4uYzkzNjdkYmVjNGQ0NjA1NzcyNTc3MmE4NjEwMzFmYjIzZjA3ZjYw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wMy0zMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE9uY2Ugc2F2ZWQgdG8gZGlzaywgdGhlbiBtbWFw
J2QgZGF0YSBvZiBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGJhY2sgdG8gdGhlIFNlcnZpY2VXb3Jr
ZXIgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI0MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlzayk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkU2F2
ZVNjcmlwdHNUb0Rpc2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKwogMjAyMS0wMy0zMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSBzaG91bGQgbm90IGJlIHNhdmVkIGJvdGggb24gU2VydmljZVdvcmtlclRocmVhZCAm
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAKaW5kZXggNTg3YmFlYjExZTQzNDdiYzYwZWEyMzI5ODI1NWUzOTU4ZjFjODdjMC4u
NzI3ZDU5YjE2M2ZkMjMyYzEwMzA1YTlmYWQzNzg0Yzk2MjM4NjhmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0yMTYsNiArMjE2LDE0IEBAIFJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGNsb25lOwog
fQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpudW1iZXJPZlNlZ21lbnRzKCkgY29uc3QKK3sKKyAg
ICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgZm9yIChhdXRvIGl0ID0gYmVnaW4oKTsgaXQgIT0g
ZW5kKCk7ICsraXQpCisgICAgICAgICsrY291bnQ7CisgICAgcmV0dXJuIGNvdW50OworfQorCiAj
aWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVu
dCgpIGNvbnN0CiB7CkBAIC0yNDcsNiArMjU1LDExIEBAIGNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKK2Jvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0
YSk7Cit9CisKICNpZiAhVVNFKENGKQogdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3RO
ZWVkZWRTb29uKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
aW5kZXggM2MyMjNhMmZmMzk2OWU2OTM2ODYzMmM4MDhhMjczOTdkOWYyNzRkMy4uODFkNjAyZjU3
NGRhZTE4OWZhYzE3MWY5NWNkNmExZGMxYzUwZDYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICAgICAgYm9v
bCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAgICAg
ICBEYXRhU2VnbWVudChWZWN0b3I8Y2hhcj4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CkBAIC0xODUsNiArMTg3LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50
cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9
CisgICAgc2l6ZV90IG51bWJlck9mU2VnbWVudHMoKSBjb25zdDsKICAgICAKICAgICAvLyBiZWdp
biBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgogICAg
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGEyZTYyOTFlNGI3MDQ1MDY4N2Q0ZWY5MTAxYzI1
YTIwNDc5MGE5YzguLmIwM2YzZGFjYjkzOTMyMzJlMWM4NWMwNTVkOTllYWZlMzRlMTIyMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xNTUsNiArMTU1LDIyIEBAIHZvaWQgU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlOjpzZXRTY3JpcHRSZXNvdXJjZShjb25zdCBVUkwmIHVybCwgU2Vydmlj
ZVdvcmtlckNvCiAgICAgbV9jb250ZXh0RGF0YS5zY3JpcHRSZXNvdXJjZU1hcC5zZXQodXJsLCBX
VEZNb3ZlKHNjcmlwdCkpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZGlk
U2F2ZVNjcmlwdHNUb0Rpc2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBzY3JpcHQsIEhhc2hNYXA8
VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpCit7CisgICAgLy8g
VGhlc2Ugc2NyaXB0cyBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIHRoZSBvbmVzIHdlIGhhdmUuIEhv
d2V2ZXIsIHRoZXNlIGFyZSBtbWFwJ2Qgc28gdXNpbmcgdGhlbSBoZWxwcyByZWR1Y2UgZGlydHkg
bWVtb3J5IHVzYWdlLgorICAgIGlmIChzY3JpcHQpIHsKKyAgICAgICAgQVNTRVJUKG1fY29udGV4
dERhdGEuc2NyaXB0LmdldCgpID09ICpzY3JpcHQpOworICAgICAgICBtX2NvbnRleHREYXRhLnNj
cmlwdCA9IHNjcmlwdC5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKyAgICBmb3IgKGF1dG8mIHBh
aXIgOiBpbXBvcnRlZFNjcmlwdHMpIHsKKyAgICAgICAgYXV0byBpdCA9IG1fY29udGV4dERhdGEu
c2NyaXB0UmVzb3VyY2VNYXAuZmluZChwYWlyLmtleSk7CisgICAgICAgIGlmIChpdCA9PSBtX2Nv
bnRleHREYXRhLnNjcmlwdFJlc291cmNlTWFwLmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIEFTU0VSVCgqaXQtPnZhbHVlLnNjcmlwdCA9PSAqcGFpci52YWx1ZSk7IC8vIERv
IGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBhcmUgaWRlbnRpY2FsLgorICAgICAg
ICBpdC0+dmFsdWUuc2NyaXB0ID0gV1RGTW92ZShwYWlyLnZhbHVlKTsKKyAgICB9Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuaAppbmRleCAxZWNmMTE1ZTViNWYwMzNkNmU0NjhmZmE0NWFmMTgzMGNk
YjA1NjZhLi5lZTc1ZWU5ZWQxYTMyOTdjMzMyNjllOTNmZDA2ZTc4ZWUzYTBjNWI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0KiBzY3JpcHRSZXNvdXJjZShjb25zdCBV
UkwmKSBjb25zdDsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKGNvbnN0IFVSTCYsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJik7CiAKKyAgICB2b2lkIGRpZFNh
dmVTY3JpcHRzVG9EaXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVS
TCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKKwogICAgIGNvbnN0
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRleHREYXRhOyB9CiAgICAgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHREYXRhLmNlcnRpZmljYXRlSW5mbzsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuY3BwCmluZGV4IDZkYTliYTgzZjEyZjc1Mjk2NTZhMWJiM2ViZTgzNjJh
OWNmNTBiYmYuLjg4MTNhYjY5YTE2ZDU3NGYwMTUxYWI1OGQxYmUwMjFhZmI4N2U4ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuY3BwCkBAIC0xMjAsNiArMTIwLDEyIEBAIHZvaWQgU1dDb250ZXh0TWFu
YWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFNlY29uCiAgICAgc3RvcFdvcmtlcigqc2VydmljZVdvcmtlciwgdGltZW91dCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmRpZFNhdmVT
Y3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIGlmIChhdXRvIHNlcnZpY2VXb3JrZXIgPSBtX3dv
cmtlck1hcC5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHNlcnZpY2VXb3JrZXItPmRpZFNhdmVT
Y3JpcHRzVG9EaXNrKFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsK
K30KKwogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzdG9wV29ya2VyKFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eSYgc2VydmljZVdvcmtlciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gc2VydmljZVdv
cmtlci5pZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggODI5YjllNDA4MWM2YWJi
NTRlZDQwYTE5ZGE4N2EwNzhhNzdjMWYxMS4uZGRiZWI1ODU0YWMyMTljMTk4YzZiNjdkMTNmYTU4
ZTg5OTY4YmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtOTAsNiArOTAsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0
ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlv
bjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rp
c2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0
LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsK
IAogICAgIHZvaWQgZm9yRWFjaFNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYpPiYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmNwcAppbmRleCA5MGQ3ZmY2NTM5ZTJjYzE1OWNlMjJiZDQ5NmNmODcw
NWJjMjE0ZGRhLi5iNTc0ODM1ODRjMDUxOTk4OTljZjY3NTVlOTdjOTNiZmIwODZlMmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTI4MSw2ICsyODEsMTMgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVBY3RpdmF0ZUV2ZW50KCkKICAgICB9
KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmRpZFNhdmVTY3JpcHRzVG9E
aXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIHRocmVhZCgpLnJ1bkxvb3Ao
KS5wb3N0VGFzayhbc2NyaXB0ID0gV1RGTW92ZShzY3JpcHQpLCBpbXBvcnRlZFNjcmlwdHMgPSBX
VEZNb3ZlKGltcG9ydGVkU2NyaXB0cyldKGF1dG8mIGNvbnRleHQpIG11dGFibGUgeworICAgICAg
ICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmRpZFNhdmVTY3Jp
cHRzVG9EaXNrKFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKKyAg
ICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCA3ZWM3
YjhlNGVmMWQ4YWExYjVjNWNmZDk1MTczMDc5NTg1YjhiZTg1Li44NWQ4Y2RlNzYyMWI4N2I4MjM5
NmRkOGIyMmM1MjI1YWI5YTQ3YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
aApAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlcihNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29ya2VyT3JDbGllbnRE
YXRhJiYpOwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZvaWQgZmlyZUFjdGl2
YXRlRXZlbnQoKTsKKyAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1w
b3J0ZWRTY3JpcHRzKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggOWJlMzQ0NDkxZjA2MTNmYWUxNDBlNzk4NTFiNzEwYTNiMzJiMmIyNS4uZTE4YTJk
MWJiOTEyOTlmYzYwZjBjZTM2M2RhMGNjMmFiNTRhNWVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50
aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBIYXNoTWFwPFVS
TCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBpbXBvcnRlZFNjcmlwdHMpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9v
bCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsQ29tcGxl
dGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDYxM2JiNzJjNTg4ZDhh
MTcwYjFlNGJiMmI3OTBjMDMwMGJlMWY0NGUuLmY5MGI4ZjI3OTIwYzQ5MDMxYTE3YjQ4ZjZhMzM5
YTU5MWIxNDJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC0yNDAsNyArMjQwLDExIEBAIHZvaWQg
U1dTZXJ2ZXJXb3JrZXI6OnNldFNjcmlwdFJlc291cmNlKFVSTCYmIHVybCwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvCiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRz
VG9EaXNrKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKIHsKLSAgICAvLyBUaGUgc2NyaXB0
cyB3ZXJlIHNhdmVkIHRvIGRpc2ssIHJlcGxhY2Ugb3VyIHNjcmlwdHMgd2l0aCB0aGUgbW1hcCdk
IHZlcnNpb24gdG8gc2F2ZSBtZW1vcnkuCisgICAgLy8gU2VuZCBtbWFwJ2QgdmVyc2lvbiBvZiB0
aGUgc2NyaXB0cyB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzIHNvIHdlIGNhbiBzYXZlIGRp
cnR5IG1lbW9yeS4KKyAgICBpZiAoYXV0byogY29udGV4dENvbm5lY3Rpb24gPSB0aGlzLT5jb250
ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+ZGlkU2F2ZVNjcmlw
dHNUb0Rpc2soaWRlbnRpZmllcigpLCBtYWluU2NyaXB0LCBpbXBvcnRlZFNjcmlwdHMpOworCisg
ICAgLy8gVGhlIHNjcmlwdHMgd2VyZSBzYXZlZCB0byBkaXNrLCByZXBsYWNlIG91ciBzY3JpcHRz
IHdpdGggdGhlIG1tYXAnZCB2ZXJzaW9uIHRvIHNhdmUgZGlydHkgbWVtb3J5LgogICAgIEFTU0VS
VChtYWluU2NyaXB0LmdldCgpID09IG1fc2NyaXB0LmdldCgpKTsgLy8gRG8gYSBtZW1jbXAgdG8g
bWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFyZSBpZGVudGljYWwuCiAgICAgbV9zY3JpcHQgPSBXVEZN
b3ZlKG1haW5TY3JpcHQpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cAppbmRleCA5OGQ5MmQxYjVjNTU0NDJjZTYyYmZiNmJkNTVmZWY1YWNiZTIzMWI1Li5lMjkyM2Y4
MTNhNjBiNGU0OWVmMTM2ODM5ZmNkNjBiOWU0MTQ4M2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKQEAgLTg5
LDYgKzkwLDggQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnYKIAogdm9pZCBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewor
ICAgIC8vIEZJWE1FOiBUaGUgc2NyaXB0cyBjb250YWluZWQgaW4gdGhlIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB3aWxsIGJlIGNvcGllZCBvbmNlIGRlY29kZWQgZnJvbSBJUEMuIFdlIHNob3Vs
ZCB1c2UgU2hhcmVhYmxlUmVzb3VyY2UKKyAgICAvLyB3aGVuZXZlciBwb3NzaWJsZSB0byBzYXZl
IG1lbW9yeSAobGlrZSB3ZSBkbyBpbiBkaWRTYXZlU2NyaXB0c1RvRGlzaygpKS4KICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6SW5zdGFsbFNlcnZpY2VX
b3JrZXIgeyBkYXRhLCB1c2VyQWdlbnQgfSk7CiB9CiAKQEAgLTEwNyw2ICsxMTAsNDYgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXIKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6VGVybWluYXRlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7
CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0
c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IEhhc2hNYXA8VVJMLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIGltcG9ydGVkU2NyaXB0cykKK3sKKyNpZiBFTkFCTEUoU0hBUkVBQkxF
X1JFU09VUkNFKQorICAgIGF1dG8gdG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZSA9IFtdKFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyKSB7CisgICAgICAgIGlmIChidWZmZXIubnVtYmVyT2ZTZWdtZW50cygp
ICE9IDEpCisgICAgICAgICAgICByZXR1cm4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB7IH07
CisKKyAgICAgICAgLy8gSWYgdGhpcyBpcyBub3QgZmlsZSBtYXBwZWQgZGF0YSwgdGhlbiB0aGVy
ZSBpcyBubyBwb2ludCBzZW5kaW5nIGl0IG92ZXIuCisgICAgICAgIGF1dG8mIHNlZ21lbnQgPSBi
dWZmZXIuYmVnaW4oKS0+c2VnbWVudDsKKyAgICAgICAgaWYgKCFzZWdtZW50LT5jb250YWluc01h
cHBlZEZpbGVEYXRhKCkpCisgICAgICAgICAgICByZXR1cm4gU2hhcmVhYmxlUmVzb3VyY2U6Okhh
bmRsZSB7IH07CisKKyAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Ondy
YXBNYXAoY29uc3RfY2FzdDxjaGFyKj4oc2VnbWVudC0+ZGF0YSgpKSwgc2VnbWVudC0+c2l6ZSgp
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICAgICAgaWYgKCFzaGFy
ZWRNZW1vcnkpCisgICAgICAgICAgICByZXR1cm4gU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB7
IH07CisKKyAgICAgICAgYXV0byBzaGFyZWFibGVSZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNl
OjpjcmVhdGUoc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCksIDAsIHNlZ21lbnQtPnNpemUo
KSk7CisgICAgICAgIGlmICghc2hhcmVhYmxlUmVzb3VyY2UpCisgICAgICAgICAgICByZXR1cm4g
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB7IH07CisKKyAgICAgICAgU2hhcmVhYmxlUmVzb3Vy
Y2U6OkhhbmRsZSBzaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKKyAgICAgICAgc2hhcmVhYmxlUmVz
b3VyY2UtPmNyZWF0ZUhhbmRsZShzaGFyZWFibGVSZXNvdXJjZUhhbmRsZSk7CisgICAgICAgIHJl
dHVybiBzaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKKyAgICB9OworICAgIGF1dG8gc2NyaXB0SGFu
ZGxlID0gdG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZShzY3JpcHQpOworICAgIEhhc2hNYXA8VVJM
LCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlPiBpbXBvcnRlZFNjcmlwdEhhbmRsZXM7CisgICAg
Zm9yIChhdXRvJiBwYWlyIDogaW1wb3J0ZWRTY3JpcHRzKSB7CisgICAgICAgIGF1dG8gaGFuZGxl
ID0gdG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgqcGFpci52YWx1ZSk7CisgICAgICAgIGlmICho
YW5kbGUuaXNOdWxsKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaW1wb3J0ZWRT
Y3JpcHRIYW5kbGVzLmFkZChwYWlyLmtleSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICB9CisgICAg
aWYgKCFzY3JpcHRIYW5kbGUuaXNOdWxsKCkgfHwgIWltcG9ydGVkU2NyaXB0SGFuZGxlcy5pc0Vt
cHR5KCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpEaWRTYXZlU2NyaXB0c1RvRGlzayB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzY3Jp
cHRIYW5kbGUsIGltcG9ydGVkU2NyaXB0SGFuZGxlcyB9KTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHNjcmlwdCk7CisgICAgVU5VU0VEX1BBUkFNKGltcG9ydGVkU2NyaXB0cyk7CisjZW5kaWYK
K30KKwogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZUR1ZVRv
VW5yZXNwb25zaXZlbmVzcygpCiB7CiAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQ
cm94eTo6VGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyB7IHdlYlBy
b2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggYjNkYmY0Y2MxMjMyNjFkNjU1OWUyOWQ2MmQ3MDMz
MjIzMjcwZjIyYy4uNjhmNzkyNTM2N2QyNWZjOTNlNzU4ZjRiMDA3ZjU4MDQzYmM3MTIyMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAt
ODgsNiArODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0
ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwor
ICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBIYXNoTWFwPFVSTCwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBpbXBvcnRlZFNjcmlwdHMpIGZpbmFsOwog
ICAgIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERh
dGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKICAgICB2b2lkIG1hdGNoQWxsQ29t
cGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5oCmluZGV4IDc4NmM5MDU0YTllNmNlNDI5MmY3ZDdjYWYyMWQwYzlm
M2UxMGJmNjQuLjUzNzRkN2I5NmNmMjIxOWE3NjZiYjcwYWI2MGFjODg3MzY2YzFmNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaApAQCAtNjAsOCArNjAsOCBAQCBw
dWJsaWM6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWFibGVSZXNvdXJjZTsKIAogICAgICAg
ICBtdXRhYmxlIFNoYXJlZE1lbW9yeTo6SGFuZGxlIG1faGFuZGxlOwotICAgICAgICB1bnNpZ25l
ZCBtX29mZnNldDsKLSAgICAgICAgdW5zaWduZWQgbV9zaXplOworICAgICAgICB1bnNpZ25lZCBt
X29mZnNldCB7IDAgfTsKKyAgICAgICAgdW5zaWduZWQgbV9zaXplIHsgMCB9OwogICAgIH07CiAK
ICAgICAvLyBDcmVhdGUgYSBzaGFyZWFibGUgcmVzb3VyY2UgdGhhdCB1c2VzIG1hbGxvY2VkIG1l
bW9yeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA5MGEyZDhjZmM2
MGZkYWE1N2MzYTc4OTA5MjRhNGI4NWZlMWQzMTc0Li43MmJiMmMxNWE1ZjkzZWM5YWUwMGI1Yzkw
M2NjNTNlY2NiOWU4NGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBA
IC0yNjIsNiArMjYyLDI2IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnRl
cm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVuCiAgICAgU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkudGVybWluYXRlV29ya2VyKGlkZW50aWZpZXIsIFNXQ29udGV4
dE1hbmFnZXI6OndvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgbnVsbHB0cik7CiB9CiAKKyNpZiBF
TkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgc2NyaXB0SGFu
ZGxlLCBjb25zdCBIYXNoTWFwPFVSTCwgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZT4mIGltcG9y
dGVkU2NyaXB0SGFuZGxlcykKK3sKKyAgICBhdXRvIHRvU2hhcmVkQnVmZmVyID0gW10oY29uc3Qg
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlKSAtPiBSZWZQdHI8U2hhcmVkQnVmZmVy
PiB7CisgICAgICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCk7CisgICAgICAgIGlmICghc2hhcmVkQnVmZmVyKQorICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoU2VydmljZVdvcmtlciwgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpkaWRTYXZlU2NyaXB0c1RvRGlzazogRmFpbGVkIHRvIHdyYXAgU2hhcmVhYmxlUmVzb3VyY2Ug
aGFuZGxlIGluIGEgU2hhcmVkQnVmZmVyIik7CisgICAgICAgIHJldHVybiBzaGFyZWRCdWZmZXI7
CisgICAgfTsKKyAgICBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+IGltcG9ydGVk
U2NyaXB0czsKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBpbXBvcnRlZFNjcmlwdEhhbmRsZXMpIHsK
KyAgICAgICAgaWYgKGF1dG8gc2hhcmVkQnVmZmVyID0gdG9TaGFyZWRCdWZmZXIocGFpci52YWx1
ZSkpCisgICAgICAgICAgICBpbXBvcnRlZFNjcmlwdHMuYWRkKHBhaXIua2V5LCBXVEZNb3ZlKHNo
YXJlZEJ1ZmZlcikpOworICAgIH0KKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5k
aWRTYXZlU2NyaXB0c1RvRGlzayhpZGVudGlmaWVyLCB0b1NoYXJlZEJ1ZmZlcihzY3JpcHRIYW5k
bGUpLCBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cykpOworfQorI2VuZGlmCisKIHZvaWQgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlvbklkZW50aWZp
ZXIsIGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
IHsKICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllciwgbWVzc2FnZSwgc291cmNlSWRlbnRpZmllciwgc291
cmNlT3JpZ2luKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCA5Y2E0
YzFmMTcyNDk0ZWE0YzljMjY2YzFjYzA1ZmQ4YmUyNGRhN2ViLi4wYzI1N2JmMGI0NjcyYzlhOTA4
YTVlZGM0ZjExZTJmZjdmODBhYzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgogI2luY2x1
ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b25NZXNzYWdlc1JlcGxpZXMuaCIKQEAgLTkwLDYgKzkxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGZpcmVJbnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAg
IHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKKyNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQorICAgIHZvaWQgZGlkU2F2ZVNj
cmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGUmIHNjcmlwdCwgY29uc3QgSGFzaE1hcDxVUkwsIFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGU+JiBpbXBvcnRlZFNjcmlwdHMpOworI2VuZGlmCiAgICAgdm9pZCBm
aW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNT
ZWN1cml0eUVycm9yKTsKICAgICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IG1hdGNo
QWxsUmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4mJik7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNTI4
NGNkNGE1ZmZjYTU3NjI0OThhYmEzMmQxMTc3Mzg2ZDY0M2JmZS4uY2ZkMjJhMDVhMjQyZjA1ODU0
ZDk1NTIwMmMxMmQyY2M0NzY1MjRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDkgQEAgbWVzc2FnZXMgLT4gV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgRmlyZUluc3RhbGxF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEZp
cmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCisjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKKyAgICBEaWRTYXZl
U2NyaXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgV2ViS2l0OjpTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHNjcmlwdCwg
SGFzaE1hcDxVUkwsIFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZT4gaW1wb3J0ZWRT
Y3JpcHRzKTsKKyNlbmRpZgogICAgIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0ZWQodWlu
dDY0X3QgY2xpZW50SWRSZXF1ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE+IGRhdGEsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikKICAgICBNYXRj
aEFsbENvbXBsZXRlZCh1aW50NjRfdCBtYXRjaEFsbFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+IGNsaWVudHNEYXRhKQogICAgIFNldFVz
ZXJBZ2VudChTdHJpbmcgdXNlckFnZW50KQo=
</data>
<flag name="commit-queue"
          id="444637"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424857</attachid>
            <date>2021-03-31 18:38:04 -0700</date>
            <delta_ts>2021-04-01 09:30:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224015-20210331183803.patch</filename>
            <type>text/plain</type>
            <size>24384</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNkMDkwYjE4NmEzMjhm
YjM5NjRmMTYzZDljOTIzYjkzZmFlYTlmNC4uOTZlYTg4MWI3YjU3Y2I4MGNkYzEzNDcwMTgwYjMz
NjUxMWU3M2ZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIxLTAzLTMxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgT25jZSBzYXZlZCB0byBkaXNr
LCBzZW5kIG1tYXAnZCBkYXRhIG9mIHNlcnZpY2Ugd29ya2VyIHNjcmlwdHMgYmFjayB0byB0aGUg
U2VydmljZVdvcmtlciBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjQwMTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbiB0aGUgY29sZCBjYXNlIHdoZXJlIGEgc2VydmljZSB3b3JrZXIgd2Fz
IGp1c3QgcmVnaXN0ZXJlZCwgdGhlIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyBmZXRjaGVzIHRoZQor
ICAgICAgICBzY3JpcHQgYW5kIHRoZW4gc2VuZHMgdGhlbSB0byB0aGUgTmV0d29yayBwcm9jZXNz
IHRvIHNhdmUgdGhlbSB0byBkaXNrLiBPbmNlIHNhdmVkIHRvIGRpc2ssIHRoZQorICAgICAgICBO
ZXR3b3JrIHByb2Nlc3Mgd2FzIGhvbGRpbmcgb24gdG8gYSBtbWFwJ2QgdmVyc2lvbiBvZiB0aGUg
c2NyaXB0cyBpbiBvcmRlciB0byBzYXZlIG1lbW9yeS4gSG93ZXZlciwKKyAgICAgICAgd2Ugd291
bGQgbm90IHNlbmQgdGhlIG1tYXAnZCB2ZXJzaW9uIG9mIHRoZSBzY3JpcHQgYmFjayB0byBXZWJQ
cm9jZXNzIHNvIHRoYXQgd2UgY2FuIGRlY3JlYXNlIGRpcnR5CisgICAgICAgIG1lbW9yeSB1c2Ug
aW4gdGhlIFdlYlByb2Nlc3MgdG9vLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyB0aGlzLiBUaGUgYXBw
cm9hY2ggaXMgdmVyeSBzaW1pbGFyIHRvIHdoYXQKKyAgICAgICAgd2UgYWxyZWFkeSBkbyBpbiB0
aGUgbmV0d29yayBjYWNoZSBpbXBsZW1lbnRhdGlvbiAod2UgY2FjaGUgdGhlIHJlc291cmNlIG9u
IGRpc2ssIG1tYXAgaXQgdGhlbiBzZW5kCisgICAgICAgIGl0IGJhY2sgdG8gdGhlIFdlYlByb2Nl
c3Mgc28gdGhhdCBpdCBjYW4gdXBkYXRlIHRoZSBjb3B5IG9mIHRoZSBkYXRhIGluIHRoZSBtZW1v
cnkgY2FjaGUpLgorCisgICAgICAgIFRvIHZhbGlkYXRlIHRoaXMsIEkgY3JlYXRlZCBhIGxhcmdl
IHNlcnZpY2Ugd29ya2VyIHdpdGggYSB+MTAwTUIgbWFpbiBzY3JpcHQsIGltcG9ydGluZyBhbm90
aGVyCisgICAgICAgIH4xMDBNQiBzdWJzY3JpcHQuIEJlZm9yZSBteSBjaGFuZ2UsIGEgY29sZCBs
b2FkIG9mIG15IHRlc3QgcGFnZSB3b3VsZCByZXN1bHQgaW4gdGhlIFdlYlByb2Nlc3MgdXNpbmcK
KyAgICAgICAgNDQwTUIgb2YgZGlydHkgbWVtb3J5LiBBZnRlciBteSBjaGFuZ2UsIHRoZSBtZW1v
cnkgdXNhZ2UgZ29lcyBkb3duIHRvIDIzMk1CLgorCisgICAgICAgIE5vdGUgdGhhdCB0aGUgbWVt
b3J5IHVzYWdlIGZvciBhIHdhcm0gbGF1bmNoIChzZXJ2aWNlIHdvcmtlciB3YXMgbG9hZGVkIHN0
cmFpZ2h0IGZyb20gZGlzaykgZG9lcyBub3QKKyAgICAgICAgZ28gZG93biB3aXRoIHRoaXMgcGF0
Y2ggYW5kIHN0YXlzIGFyb3VuZCA0NDBNQi4gSSBhZGRlZCBhIEZJWE1FIGNvbW1lbnQgaW4gdGhl
IGNvZGUgdG8gYWRkcmVzcyB0aGlzLgorICAgICAgICBUaGUgaXNzdWUgaXMgdGhhdCB3ZSdyZSB1
c2luZyBTaGFyZWRCdWZmZXIgdHlwZSB3aGVuIElQQydpbmcgdGhlIHNjcmlwdHMgb3ZlciB0byB0
aGUgV2ViUHJvY2VzcyBhbmQKKyAgICAgICAgdGhlIFNoYXJlZEJ1ZmZlciBkZWNvZGVyIGRvZXMg
YSBjb3B5IG9mIHRoZSBkYXRhLCBldmVuIGlmIGl0IGlzIG1tYXAnZC4KKworICAgICAgICAqIHBs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
Om51bWJlck9mU2VnbWVudHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVy
OjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6CisgICAgICAgICog
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0Nv
bnRleHRNYW5hZ2VyOjpkaWRTYXZlU2NyaXB0c1RvRGlzayk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
aDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRz
VG9EaXNrKToKKwogMjAyMS0wMy0zMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgog
CiAgICAgICAgIFVzZSBNQUNIX1BPUlRfVkFMSUQoKSB3aGVuIHdhbnRpbmcgdG8gY2hlY2sgaWYg
YSBtYWNoIHBvcnQgaXMgdmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzNkMDBlMmJjMTZmMGI0YzQyYjM3YTZl
MjEwYmJhZjY3ZTg3NzE3Ny4uYzkzNjdkYmVjNGQ0NjA1NzcyNTc3MmE4NjEwMzFmYjIzZjA3ZjYw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wMy0zMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE9uY2Ugc2F2ZWQgdG8gZGlzaywgdGhlbiBtbWFw
J2QgZGF0YSBvZiBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIGJhY2sgdG8gdGhlIFNlcnZpY2VXb3Jr
ZXIgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI0MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlzayk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkU2F2
ZVNjcmlwdHNUb0Rpc2spOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKwogMjAyMS0wMy0zMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSBzaG91bGQgbm90IGJlIHNhdmVkIGJvdGggb24gU2VydmljZVdvcmtlclRocmVhZCAm
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlci5jcHAKaW5kZXggNTg3YmFlYjExZTQzNDdiYzYwZWEyMzI5ODI1NWUzOTU4ZjFjODdjMC4u
NzI3ZDU5YjE2M2ZkMjMyYzEwMzA1YTlmYWQzNzg0Yzk2MjM4NjhmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0yMTYsNiArMjE2LDE0IEBAIFJlZjxTaGFy
ZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGNsb25lOwog
fQogCitzaXplX3QgU2hhcmVkQnVmZmVyOjpudW1iZXJPZlNlZ21lbnRzKCkgY29uc3QKK3sKKyAg
ICB1bnNpZ25lZCBjb3VudCA9IDA7CisgICAgZm9yIChhdXRvIGl0ID0gYmVnaW4oKTsgaXQgIT0g
ZW5kKCk7ICsraXQpCisgICAgICAgICsrY291bnQ7CisgICAgcmV0dXJuIGNvdW50OworfQorCiAj
aWYgQVNTRVJUX0VOQUJMRUQKIGJvb2wgU2hhcmVkQnVmZmVyOjppbnRlcm5hbGx5Q29uc2lzdGVu
dCgpIGNvbnN0CiB7CkBAIC0yNDcsNiArMjU1LDExIEBAIGNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZl
cjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogICAgIHJldHVybiBXVEY6OnZpc2l0KHZpc2l0
b3IsIG1faW1tdXRhYmxlRGF0YSk7CiB9CiAKK2Jvb2wgU2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVu
dDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8RmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGE+KG1faW1tdXRhYmxlRGF0
YSk7Cit9CisKICNpZiAhVVNFKENGKQogdm9pZCBTaGFyZWRCdWZmZXI6OmhpbnRNZW1vcnlOb3RO
ZWVkZWRTb29uKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgK
aW5kZXggM2MyMjNhMmZmMzk2OWU2OTM2ODYzMmM4MDhhMjczOTdkOWYyNzRkMy4uODFkNjAyZjU3
NGRhZTE4OWZhYzE3MWY5NWNkNmExZGMxYzUwZDYyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmgKQEAgLTE0Niw2ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAgICAgIFJldGFp
blB0cjxOU0RhdGE+IGNyZWF0ZU5TRGF0YSgpIGNvbnN0OwogI2VuZGlmCiAKKyAgICAgICAgYm9v
bCBjb250YWluc01hcHBlZEZpbGVEYXRhKCkgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAgICAg
ICBEYXRhU2VnbWVudChWZWN0b3I8Y2hhcj4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0
YWJsZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CkBAIC0xODUsNiArMTg3LDcgQEAgcHVibGljOgog
ICAgIHVzaW5nIERhdGFTZWdtZW50VmVjdG9yID0gVmVjdG9yPERhdGFTZWdtZW50VmVjdG9yRW50
cnksIDE+OwogICAgIERhdGFTZWdtZW50VmVjdG9yOjpjb25zdF9pdGVyYXRvciBiZWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2VnbWVudHMuYmVnaW4oKTsgfQogICAgIERhdGFTZWdtZW50VmVjdG9y
Ojpjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmVuZCgpOyB9
CisgICAgc2l6ZV90IG51bWJlck9mU2VnbWVudHMoKSBjb25zdDsKICAgICAKICAgICAvLyBiZWdp
biBhbmQgZW5kIHRha2UgTygxKSB0aW1lLCB0aGlzIHRha2VzIE8obG9nKE4pKSB0aW1lLgogICAg
IFNoYXJlZEJ1ZmZlckRhdGFWaWV3IGdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGEyZTYyOTFlNGI3MDQ1MDY4N2Q0ZWY5MTAxYzI1
YTIwNDc5MGE5YzguLmIwM2YzZGFjYjkzOTMyMzJlMWM4NWMwNTVkOTllYWZlMzRlMTIyMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xNTUsNiArMTU1LDIyIEBAIHZvaWQgU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlOjpzZXRTY3JpcHRSZXNvdXJjZShjb25zdCBVUkwmIHVybCwgU2Vydmlj
ZVdvcmtlckNvCiAgICAgbV9jb250ZXh0RGF0YS5zY3JpcHRSZXNvdXJjZU1hcC5zZXQodXJsLCBX
VEZNb3ZlKHNjcmlwdCkpOwogfQogCit2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZGlk
U2F2ZVNjcmlwdHNUb0Rpc2soUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBzY3JpcHQsIEhhc2hNYXA8
VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRlZFNjcmlwdHMpCit7CisgICAgLy8g
VGhlc2Ugc2NyaXB0cyBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIHRoZSBvbmVzIHdlIGhhdmUuIEhv
d2V2ZXIsIHRoZXNlIGFyZSBtbWFwJ2Qgc28gdXNpbmcgdGhlbSBoZWxwcyByZWR1Y2UgZGlydHkg
bWVtb3J5IHVzYWdlLgorICAgIGlmIChzY3JpcHQpIHsKKyAgICAgICAgQVNTRVJUKG1fY29udGV4
dERhdGEuc2NyaXB0LmdldCgpID09ICpzY3JpcHQpOworICAgICAgICBtX2NvbnRleHREYXRhLnNj
cmlwdCA9IHNjcmlwdC5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKyAgICBmb3IgKGF1dG8mIHBh
aXIgOiBpbXBvcnRlZFNjcmlwdHMpIHsKKyAgICAgICAgYXV0byBpdCA9IG1fY29udGV4dERhdGEu
c2NyaXB0UmVzb3VyY2VNYXAuZmluZChwYWlyLmtleSk7CisgICAgICAgIGlmIChpdCA9PSBtX2Nv
bnRleHREYXRhLnNjcmlwdFJlc291cmNlTWFwLmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIEFTU0VSVCgqaXQtPnZhbHVlLnNjcmlwdCA9PSAqcGFpci52YWx1ZSk7IC8vIERv
IGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBhcmUgaWRlbnRpY2FsLgorICAgICAg
ICBpdC0+dmFsdWUuc2NyaXB0ID0gV1RGTW92ZShwYWlyLnZhbHVlKTsKKyAgICB9Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuaAppbmRleCAxZWNmMTE1ZTViNWYwMzNkNmU0NjhmZmE0NWFmMTgzMGNk
YjA1NjZhLi5lZTc1ZWU5ZWQxYTMyOTdjMzMyNjllOTNmZDA2ZTc4ZWUzYTBjNWI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0KiBzY3JpcHRSZXNvdXJjZShjb25zdCBV
UkwmKSBjb25zdDsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNlKGNvbnN0IFVSTCYsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmJik7CiAKKyAgICB2b2lkIGRpZFNh
dmVTY3JpcHRzVG9EaXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVS
TCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKKwogICAgIGNvbnN0
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRleHREYXRhOyB9CiAgICAgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUlu
Zm8oKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHREYXRhLmNlcnRpZmljYXRlSW5mbzsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRl
eHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuY3BwCmluZGV4IDZkYTliYTgzZjEyZjc1Mjk2NTZhMWJiM2ViZTgzNjJh
OWNmNTBiYmYuLjg4MTNhYjY5YTE2ZDU3NGYwMTUxYWI1OGQxYmUwMjFhZmI4N2U4ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NX
Q29udGV4dE1hbmFnZXIuY3BwCkBAIC0xMjAsNiArMTIwLDEyIEBAIHZvaWQgU1dDb250ZXh0TWFu
YWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IFNlY29uCiAgICAgc3RvcFdvcmtlcigqc2VydmljZVdvcmtlciwgdGltZW91dCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmRpZFNhdmVT
Y3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIGlmIChhdXRvIHNlcnZpY2VXb3JrZXIgPSBtX3dv
cmtlck1hcC5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHNlcnZpY2VXb3JrZXItPmRpZFNhdmVT
Y3JpcHRzVG9EaXNrKFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsK
K30KKwogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzdG9wV29ya2VyKFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eSYgc2VydmljZVdvcmtlciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBpZGVudGlmaWVyID0gc2VydmljZVdv
cmtlci5pZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggODI5YjllNDA4MWM2YWJi
NTRlZDQwYTE5ZGE4N2EwNzhhNzdjMWYxMS4uZGRiZWI1ODU0YWMyMTljMTk4YzZiNjdkMTNmYTU4
ZTg5OTY4YmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtOTAsNiArOTAsNyBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0
ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlv
bjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rp
c2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0
LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsK
IAogICAgIHZvaWQgZm9yRWFjaFNlcnZpY2VXb3JrZXJUaHJlYWQoY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYpPiYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmNwcAppbmRleCA5MGQ3ZmY2NTM5ZTJjYzE1OWNlMjJiZDQ5NmNmODcw
NWJjMjE0ZGRhLi5iNTc0ODM1ODRjMDUxOTk4OTljZjY3NTVlOTdjOTNiZmIwODZlMmU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTI4MSw2ICsyODEsMTMgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVBY3RpdmF0ZUV2ZW50KCkKICAgICB9
KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmRpZFNhdmVTY3JpcHRzVG9E
aXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIHRocmVhZCgpLnJ1bkxvb3Ao
KS5wb3N0VGFzayhbc2NyaXB0ID0gV1RGTW92ZShzY3JpcHQpLCBpbXBvcnRlZFNjcmlwdHMgPSBX
VEZNb3ZlKGltcG9ydGVkU2NyaXB0cyldKGF1dG8mIGNvbnRleHQpIG11dGFibGUgeworICAgICAg
ICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmRpZFNhdmVTY3Jp
cHRzVG9EaXNrKFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKKyAg
ICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAppbmRleCA3ZWM3
YjhlNGVmMWQ4YWExYjVjNWNmZDk1MTczMDc5NTg1YjhiZTg1Li44NWQ4Y2RlNzYyMWI4N2I4MjM5
NmRkOGIyMmM1MjI1YWI5YTQ3YTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
aApAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2Vydmlj
ZVdvcmtlcihNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBTZXJ2aWNlV29ya2VyT3JDbGllbnRE
YXRhJiYpOwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCgpOwogICAgIHZvaWQgZmlyZUFjdGl2
YXRlRXZlbnQoKTsKKyAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1w
b3J0ZWRTY3JpcHRzKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGFzdE5hdmlnYXRp
b25XYXNBcHBCb3VuZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggOWJlMzQ0NDkxZjA2MTNmYWUxNDBlNzk4NTFiNzEwYTNiMzJiMmIyNS4uZTE4YTJk
MWJiOTEyOTlmYzYwZjBjZTM2M2RhMGNjMmFiNTRhNWVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50
aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBIYXNoTWFwPFVS
TCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBpbXBvcnRlZFNjcmlwdHMpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0
SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9v
bCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsQ29tcGxl
dGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtl
ckNsaWVudERhdGE+JikgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCmluZGV4IDYxM2JiNzJjNTg4ZDhh
MTcwYjFlNGJiMmI3OTBjMDMwMGJlMWY0NGUuLmY5MGI4ZjI3OTIwYzQ5MDMxYTE3YjQ4ZjZhMzM5
YTU5MWIxNDJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC0yNDAsNyArMjQwLDExIEBAIHZvaWQg
U1dTZXJ2ZXJXb3JrZXI6OnNldFNjcmlwdFJlc291cmNlKFVSTCYmIHVybCwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOjpJbXBvCiAKIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRz
VG9EaXNrKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0
cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykKIHsKLSAgICAvLyBUaGUgc2NyaXB0
cyB3ZXJlIHNhdmVkIHRvIGRpc2ssIHJlcGxhY2Ugb3VyIHNjcmlwdHMgd2l0aCB0aGUgbW1hcCdk
IHZlcnNpb24gdG8gc2F2ZSBtZW1vcnkuCisgICAgLy8gU2VuZCBtbWFwJ2QgdmVyc2lvbiBvZiB0
aGUgc2NyaXB0cyB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzIHNvIHdlIGNhbiBzYXZlIGRp
cnR5IG1lbW9yeS4KKyAgICBpZiAoYXV0byogY29udGV4dENvbm5lY3Rpb24gPSB0aGlzLT5jb250
ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICBjb250ZXh0Q29ubmVjdGlvbi0+ZGlkU2F2ZVNjcmlw
dHNUb0Rpc2soaWRlbnRpZmllcigpLCBtYWluU2NyaXB0LCBpbXBvcnRlZFNjcmlwdHMpOworCisg
ICAgLy8gVGhlIHNjcmlwdHMgd2VyZSBzYXZlZCB0byBkaXNrLCByZXBsYWNlIG91ciBzY3JpcHRz
IHdpdGggdGhlIG1tYXAnZCB2ZXJzaW9uIHRvIHNhdmUgZGlydHkgbWVtb3J5LgogICAgIEFTU0VS
VChtYWluU2NyaXB0LmdldCgpID09IG1fc2NyaXB0LmdldCgpKTsgLy8gRG8gYSBtZW1jbXAgdG8g
bWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFyZSBpZGVudGljYWwuCiAgICAgbV9zY3JpcHQgPSBXVEZN
b3ZlKG1haW5TY3JpcHQpOwogICAgIGZvciAoYXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cAppbmRleCA5OGQ5MmQxYjVjNTU0NDJjZTYyYmZiNmJkNTVmZWY1YWNiZTIzMWI1Li4zMTMyODY0
N2MwM2UxODYwMDk0YzMyMGI4ZjZiNTI4ZjVmZGMxZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrTWVz
c2FnZXMuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb24uaCIKQEAgLTg5
LDYgKzkwLDggQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnN0IFNlcnYKIAogdm9pZCBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2
aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewor
ICAgIC8vIEZJWE1FOiBUaGUgc2NyaXB0cyBjb250YWluZWQgaW4gdGhlIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSB3aWxsIGJlIGNvcGllZCBvbmNlIGRlY29kZWQgZnJvbSBJUEMuIFdlIHNob3Vs
ZCB1c2UgU2hhcmVhYmxlUmVzb3VyY2UKKyAgICAvLyB3aGVuZXZlciBwb3NzaWJsZSB0byBzYXZl
IG1lbW9yeSAobGlrZSB3ZSBkbyBpbiBkaWRTYXZlU2NyaXB0c1RvRGlzaygpKS4KICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6SW5zdGFsbFNlcnZpY2VX
b3JrZXIgeyBkYXRhLCB1c2VyQWdlbnQgfSk7CiB9CiAKQEAgLTEwNyw2ICsxMTAsNDYgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBzZXIKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6VGVybWluYXRlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7
CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0
c1RvRGlzayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBzY3JpcHQsIGNvbnN0IEhhc2hNYXA8VVJMLCBSZWZQdHI8
U2hhcmVkQnVmZmVyPj4mIGltcG9ydGVkU2NyaXB0cykKK3sKKyNpZiBFTkFCTEUoU0hBUkVBQkxF
X1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvIHRvU2hhcmVhYmxlUmVzb3Vy
Y2VIYW5kbGUgPSBbXShTaGFyZWRCdWZmZXImIGJ1ZmZlcikgeworICAgICAgICBpZiAoYnVmZmVy
Lm51bWJlck9mU2VnbWVudHMoKSAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJl
c291cmNlOjpIYW5kbGUgeyB9OworCisgICAgICAgIC8vIElmIHRoaXMgaXMgbm90IGZpbGUgbWFw
cGVkIGRhdGEsIHRoZW4gdGhlcmUgaXMgbm8gcG9pbnQgc2VuZGluZyBpdCBvdmVyLgorICAgICAg
ICBhdXRvJiBzZWdtZW50ID0gYnVmZmVyLmJlZ2luKCktPnNlZ21lbnQ7CisgICAgICAgIGlmICgh
c2VnbWVudC0+Y29udGFpbnNNYXBwZWRGaWxlRGF0YSgpKQorICAgICAgICAgICAgcmV0dXJuIFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9OworCisgICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5
ID0gU2hhcmVkTWVtb3J5Ojp3cmFwTWFwKGNvbnN0X2Nhc3Q8Y2hhcio+KHNlZ21lbnQtPmRhdGEo
KSksIHNlZ21lbnQtPnNpemUoKSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CisgICAgICAgIGlmICghc2hhcmVkTWVtb3J5KQorICAgICAgICAgICAgcmV0dXJuIFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUgeyB9OworCisgICAgICAgIGF1dG8gc2hhcmVhYmxlUmVzb3VyY2Ug
PSBTaGFyZWFibGVSZXNvdXJjZTo6Y3JlYXRlKHNoYXJlZE1lbW9yeS5yZWxlYXNlTm9uTnVsbCgp
LCAwLCBzZWdtZW50LT5zaXplKCkpOworICAgICAgICBpZiAoIXNoYXJlYWJsZVJlc291cmNlKQor
ICAgICAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9OworCisgICAg
ICAgIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7Cisg
ICAgICAgIHNoYXJlYWJsZVJlc291cmNlLT5jcmVhdGVIYW5kbGUoc2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUpOworICAgICAgICByZXR1cm4gc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7CisgICAgfTsK
KyAgICBhdXRvIHNjcmlwdEhhbmRsZSA9IHRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoc2NyaXB0
KTsKKyAgICBIYXNoTWFwPFVSTCwgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZT4gaW1wb3J0ZWRT
Y3JpcHRIYW5kbGVzOworICAgIGZvciAoYXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykgewor
ICAgICAgICBhdXRvIGhhbmRsZSA9IHRvU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUoKnBhaXIudmFs
dWUpOworICAgICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGltcG9ydGVkU2NyaXB0SGFuZGxlcy5hZGQocGFpci5rZXksIFdURk1vdmUoaGFu
ZGxlKSk7CisgICAgfQorICAgIGlmICghc2NyaXB0SGFuZGxlLmlzTnVsbCgpIHx8ICFpbXBvcnRl
ZFNjcmlwdEhhbmRsZXMuaXNFbXB0eSgpKQorICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6RGlkU2F2ZVNjcmlwdHNUb0Rpc2sgeyBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgc2NyaXB0SGFuZGxlLCBpbXBvcnRlZFNjcmlwdEhhbmRsZXMgfSk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzY3JpcHQpOworICAgIFVOVVNFRF9QQVJBTShpbXBvcnRl
ZFNjcmlwdHMpOworI2VuZGlmCit9CisKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjp0ZXJtaW5hdGVEdWVUb1VucmVzcG9uc2l2ZW5lc3MoKQogewogICAgIG1fY29ubmVjdGlv
bi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3Jr
ZXJQcm9jZXNzZXMgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGIzZGJmNGNjMTIz
MjYxZDY1NTllMjlkNjJkNzAzMzIyMzI3MGYyMmMuLjY4Zjc5MjUzNjdkMjVmYzkzZTc1OGY0YjAw
N2Y1ODA0M2JjNzEyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLmgKQEAgLTg4LDYgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZpcmVJ
bnN0YWxsRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAg
IHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIp
IGZpbmFsOwogICAgIHZvaWQgdGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHNjcmlwdCwg
Y29uc3QgSGFzaE1hcDxVUkwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgaW1wb3J0
ZWRTY3JpcHRzKSBmaW5hbDsKICAgICB2b2lkIGZpbmRDbGllbnRCeUlkZW50aWZpZXJDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiYsIGJvb2wgaGFzU2VjdXJpdHlFcnJvcikgZmluYWw7CiAg
ICAgdm9pZCBtYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYpIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCA3ODZjOTA1NGE5ZTZj
ZTQyOTJmN2Q3Y2FmMjFkMGM5ZjNlMTBiZjY0Li41Mzc0ZDdiOTZjZjIyMTlhNzY2YmI3MGFiNjBh
Yzg4NzM2NmMxZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVS
ZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgK
QEAgLTYwLDggKzYwLDggQEAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxl
UmVzb3VyY2U7CiAKICAgICAgICAgbXV0YWJsZSBTaGFyZWRNZW1vcnk6OkhhbmRsZSBtX2hhbmRs
ZTsKLSAgICAgICAgdW5zaWduZWQgbV9vZmZzZXQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsK
KyAgICAgICAgdW5zaWduZWQgbV9vZmZzZXQgeyAwIH07CisgICAgICAgIHVuc2lnbmVkIG1fc2l6
ZSB7IDAgfTsKICAgICB9OwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIHJlc291cmNlIHRo
YXQgdXNlcyBtYWxsb2NlZCBtZW1vcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKaW5kZXggOTBhMmQ4Y2ZjNjBmZGFhNTdjM2E3ODkwOTI0YTRiODVmZTFkMzE3NC4uYTRmMzQy
YjFlZWVmZDUwOGE4Y2E3NmI0NmMwZTYzOWMxZTBiOGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcApAQCAtMjYyLDYgKzI2MiwyNiBAQCB2b2lkIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjp0ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbgogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihp
ZGVudGlmaWVyLCBTV0NvbnRleHRNYW5hZ2VyOjp3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIG51
bGxwdHIpOwogfQogCisjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0o
Q09DT0EpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0
c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25z
dCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBzY3JpcHRIYW5kbGUsIGNvbnN0IEhhc2hNYXA8
VVJMLCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlPiYgaW1wb3J0ZWRTY3JpcHRIYW5kbGVzKQor
eworICAgIGF1dG8gdG9TaGFyZWRCdWZmZXIgPSBbXShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlJiBoYW5kbGUpIC0+IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsKKyAgICAgICAgaWYgKGhh
bmRsZS5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICAgICAg
aWYgKCFzaGFyZWRCdWZmZXIpCisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNl
V29ya2VyLCAiV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZFNhdmVTY3JpcHRzVG9E
aXNrOiBGYWlsZWQgdG8gd3JhcCBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgaW4gYSBTaGFyZWRC
dWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIHNoYXJlZEJ1ZmZlcjsKKyAgICB9OworICAgIEhhc2hN
YXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4gaW1wb3J0ZWRTY3JpcHRzOworICAgIGZvciAo
YXV0byYgcGFpciA6IGltcG9ydGVkU2NyaXB0SGFuZGxlcykgeworICAgICAgICBpZiAoYXV0byBz
aGFyZWRCdWZmZXIgPSB0b1NoYXJlZEJ1ZmZlcihwYWlyLnZhbHVlKSkKKyAgICAgICAgICAgIGlt
cG9ydGVkU2NyaXB0cy5hZGQocGFpci5rZXksIFdURk1vdmUoc2hhcmVkQnVmZmVyKSk7CisgICAg
fQorICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmRpZFNhdmVTY3JpcHRzVG9EaXNr
KGlkZW50aWZpZXIsIHRvU2hhcmVkQnVmZmVyKHNjcmlwdEhhbmRsZSksIFdURk1vdmUoaW1wb3J0
ZWRTY3JpcHRzKSk7Cit9CisjZW5kaWYKKwogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtl
ckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewogICAgIG1fY29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDljYTRjMWYxNzI0OTRlYTRjOWMyNjZj
MWNjMDVmZDhiZTI0ZGE3ZWIuLjExZjllMDlmZDMzZDU5MGZmMTM3M2I2MmYzM2JjMGNkMGU5Njlh
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtMjksNiArMjksNyBAQAog
CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgor
I2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIK
ICNpbmNsdWRlICJXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5o
IgpAQCAtOTAsNiArOTEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5h
dGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworI2lmIEVOQUJMRShT
SEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgZGlkU2F2ZVNj
cmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGUmIHNjcmlwdCwgY29uc3QgSGFzaE1hcDxVUkwsIFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGU+JiBpbXBvcnRlZFNjcmlwdHMpOworI2VuZGlmCiAgICAgdm9pZCBm
aW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNT
ZWN1cml0eUVycm9yKTsKICAgICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IG1hdGNo
QWxsUmVxdWVzdElkZW50aWZpZXIsIFZlY3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4mJik7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNTI4
NGNkNGE1ZmZjYTU3NjI0OThhYmEzMmQxMTc3Mzg2ZDY0M2JmZS4uYWU1NzE2YjlhZjIxNGVjOTBm
ZDg5MzcwZmNmZGU5YmVhOGVkYWQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDkgQEAgbWVzc2FnZXMgLT4gV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgRmlyZUluc3RhbGxF
dmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEZp
cmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCiAgICAgVGVybWluYXRlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIpCisjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0o
Q09DT0EpCisgICAgRGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlUmVzb3Vy
Y2U6OkhhbmRsZSBzY3JpcHQsIEhhc2hNYXA8VVJMLCBXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGU+IGltcG9ydGVkU2NyaXB0cyk7CisjZW5kaWYKICAgICBGaW5kQ2xpZW50QnlJZGVu
dGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIE9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBkYXRhLCBib29sIGhhc1NlY3Vy
aXR5RXJyb3IpCiAgICAgTWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0
SWRlbnRpZmllciwgVmVjdG9yPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGll
bnRzRGF0YSkKICAgICBTZXRVc2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkK
</data>
<flag name="commit-queue"
          id="444668"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424908</attachid>
            <date>2021-04-01 09:51:07 -0700</date>
            <delta_ts>2021-04-01 12:10:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224015-20210401095106.patch</filename>
            <type>text/plain</type>
            <size>38502</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWNkMDkwYjE4NmEzMjhm
YjM5NjRmMTYzZDljOTIzYjkzZmFlYTlmNC4uYWJiM2VmYzZjZjBlYmYxODg5Zjc0ZmE3MmMzMWVh
ODM4NDMwMTM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTA0LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSB0aGUgU2VydmljZVdv
cmtlciBwcm9jZXNzIGhvbGQgb24gdG8gYSBmaWxlIG1hcHBlZCB2ZXJzaW9uIG9mIHRoZSBzZXJ2
aWNlIHdvcmtlciBzY3JpcHRzIHRvIHNhdmUgZGlydHkgbWVtb3J5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwMTUKKyAgICAgICAgPHJkYXI6Ly83
NTYzNzY3OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTaW5jZSByMjc1MjY3LCB0aGUgTmV0d29yayBwcm9jZXNzIGhvbGRzIG9uIHRoZSBmaWxlIG1h
cHBlZCAobW1hcCdkKSB2ZXJzaW9ucyBvZiB0aGUgc2VydmljZSB3b3JrZXIKKyAgICAgICAgc2Ny
aXB0cyBpbnN0ZWFkIG9mIGhlYXAgYWxsb2NhdGVkIHZlcnNpb25zLCBpbiBvcmRlciB0byBkZWNy
ZWFzZSBpdHMgZGlydHkgbWVtb3J5IHVzZS4gSG93ZXZlciwgdGhlCisgICAgICAgIFNlcnZpY2VX
b3JrZXIgcHJvY2VzcyAod2hpY2ggaXMgb2Z0ZW4gYSByZWd1bGFyIFdlYlByb2Nlc3MpIHdhcyBz
dGlsbCB1c2luZyBoZWFwIGFsbG9jYXRlZCBzZXJ2aWNlCisgICAgICAgIHdvcmtlciBzY3JpcHRz
LiBUaGlzIHBhdGNoIGlzIGEgZm9sbG93LXVwIHRvIG1ha2Ugc3VyZSB0aGUgTmV0d29ya1Byb2Nl
c3Mgc2VuZHMgaXRzIGZpbGUgbWFwcGVkCisgICAgICAgIHNjcmlwdHMgdG8gdGhlIFNlcnZpY2VX
b3JrZXIgcHJvY2Vzc2VzIGFzIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZXMgc28gdGhhdCB0aGUg
ZGlydHkgbWVtb3J5IHVzYWdlCisgICAgICAgIG9mIHRoZSBTZXJ2aWNlV29ya2VyIHByb2Nlc3Nl
cyBhcyB3ZWxsLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gV2ViLWZhY2luZyBiZWhhdmlv
ciBjaGFuZ2UsIGp1c3QgYSBkZWNyZWFzZSBkaXJ0eSBtZW1vcnkgdXNlIGluIHRoZSBTZXJ2aWNl
V29ya2VyCisgICAgICAgIHByb2Nlc3NlcyAod2hpY2ggbWF5IGJlIFdlYlByb2Nlc3NlcykuIEkg
aGF2ZSBkb25lIGxvY2FsIHRlc3Rpbmcgd2l0aCBhIHZlcnkgbGFyZ2Ugc2VydmljZSB3b3JrZXIK
KyAgICAgICAgdGhhdCB1c2VzIGEgfjEwME1CIG1haW4gc2NyaXB0LCB3aGljaCBpbXBvcnRzIGFu
b3RoZXIgfjEwME1CIHN1Yi1zY3JpcHQuIFdpdGggbXkgY2hhbmdlLCBkaXJ0eQorICAgICAgICBt
ZW1vcnkgdXNhZ2UgZ29lcyBmcm9tIH40NDBNQiB0byB+MjMwTUIgaW4gYm90aCB0aGUgY29sZCBh
bmQgd2FybSBjYXNlcyAoIkNvbGQiIG1lYW5pbmcgdGhhdCB0aGUKKyAgICAgICAgc2VydmljZSB3
b3JrZXIgd2FzIGp1c3QgcmVnaXN0ZWQgYW5kIGRvd25sb2FkZWQgZnJvbSB0aGUgbmV0d29yayBh
bmQgIldhcm0iIG1lYW5pbmcgdGhhdCB0aGUKKyAgICAgICAgc2VydmljZSB3b3JrZXIgaGFkIGJl
ZW4gcHJldmlvdXNseSByZWdpc3RlZCBhbmQgd2FzIGxvYWRlZCBzdHJhaWdodCBmcm9tIHRoZSBT
V1NjcmlwdFN0b3JhZ2UpLgorCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCBjb25zdCk6Cisg
ICAgICAgIEFkZCBhIHV0aWxpdHkgZnVuY3Rpb24gdG8gU2hhcmVkQnVmZmVyIHRvIGNoZWNrIGlm
IGl0IGNvbnRhaW5zIGEgc2luZ2xlIGRhdGEgc2VnbWVudC4KKworICAgICAgICAoV2ViQ29yZTo6
U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6Y29udGFpbnNNYXBwZWRGaWxlRGF0YSBjb25zdCk6
CisgICAgICAgIEFkZCBhIHV0aWxpdHkgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYSBTaGFyZWRCdWZm
ZXIgRGF0YVNlZ21lbnQgY29udGFpbnMgYSBNYXBwZWRGaWxlRGF0YSBvYmplY3QuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaDoKKworICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ6Omlzb2xhdGVkQ29weSBjb25zdCk6Cisg
ICAgICAgIE1vdmUgSVBDIGVuY29kZXJzIC8gZGVjb2RlcnMgZm9yIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSBhbmQgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdAorICAg
ICAgICB0byB0aGUgV2ViS2l0IGxheWVyLCBpbiBXZWJDb3JlQXJndW1lbnRDb2RlcnMuIFRoaXMg
YWxsb3dzIHVzIHRvIGVuY29kZSAvIGRlY29kZSB0aGUgc2NyaXB0cyBhcworICAgICAgICBXZWJL
aXQ6OlNoYXJlYWJsZUhhbmRsZSB3aGVuZXZlciBwb3NzaWJsZS4gVGhpcyB3YXksIHdoZW4gdGhl
IE5ldHdvcmtQcm9jZXNzIHNlbmRzIGEKKyAgICAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRh
IHRvIHRoZSBTZXJ2aWNlV29ya2VyIHByb2Nlc3MgdG8gbGF1bmNoIGEgc2VydmljZSB3b3JrZXIs
IGJvdGggdGhlCisgICAgICAgIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyBhbmQgdGhlIE5ldHdvcmsg
cHJvY2VzcyBzaGFyZSB0aGUgc2FtZSBtbWFwJ2QgdmVyc2lvbnMgb2YgdGhlIHNjcmlwdHMgYW5k
IHdlCisgICAgICAgIHNhdmUgb24gZGlydHkgbWVtb3J5IHVzZS4gVGhpcyBoZWxwcyByZWR1Y2Ug
ZGlydHkgbWVtb3J5IHVzZSBpbiB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzIGluIHRoZQorICAg
ICAgICB3YXJtIGNhc2UsIHdoZXJlIHRoZSBzY3JpcHRzIGFyZSBsb2FkZWQgc3RyYWlnaHQgZnJv
bSB0aGUgZGlzayAodmlhIFNXU2NyaXB0U3RvcmFnZSkuCisKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2spOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6ZGlkU2F2ZVNjcmlwdHNU
b0Rpc2spOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlcldvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcldvcmtlcjo6ZGlk
U2F2ZVNjcmlwdHNUb0Rpc2spOgorICAgICAgICBJbiB0aGUgY29sZCBjYXNlLCBvbmNlIHRoZSBO
ZXR3b3JrUHJvY2VzcyBpcyBkb25lIHNhdmluZyB0aGUgc2NyaXB0cyB0byBkaXNrLCBpdCBub3cg
c2VuZHMgdGhlCisgICAgICAgIGZpbGUgbWFwcGVkIHZlcnNpb24gb2YgdGhlIHNjcmlwdHMgdG8g
dGhlIFNlcnZpY2VXb3JrZXIgcHJvY2Vzcywgc28gdGhhdCBpdCBjYW4gYWxzbyByZXBsYWNlCisg
ICAgICAgIGl0cyBoZWFwLWFsbG9jYXRlZCBjb3BpZXMgYW5kIHNhdmUgb24gZGlydHkgbWVtb3J5
IHVzZS4KKwogMjAyMS0wMy0zMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVzZSBNQUNIX1BPUlRfVkFMSUQoKSB3aGVuIHdhbnRpbmcgdG8gY2hlY2sgaWYgYSBt
YWNoIHBvcnQgaXMgdmFsaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzNkMDBlMmJjMTZmMGI0YzQyYjM3YTZlMjEw
YmJhZjY3ZTg3NzE3Ny4uZGQ0ZGQ1MGNhNmNjNzM0YzFiNzZlMTIwZjBmMWQwNTAxZWY3YzRlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMS0wNC0wMSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgdGhlIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyBo
b2xkIG9uIHRvIGEgZmlsZSBtYXBwZWQgdmVyc2lvbiBvZiB0aGUgc2VydmljZSB3b3JrZXIgc2Ny
aXB0cyB0byBzYXZlIGRpcnR5IG1lbW9yeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MDE1CisgICAgICAgIDxyZGFyOi8vNzU2Mzc2Nzk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkU2F2ZVNj
cmlwdHNUb0Rpc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIFdoZW4gdGhlIE5ldHdvcmtQcm9jZXNzIGlzIGRv
bmUgc2F2aW5nIHRoZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIHRvIGRpc2sgYW5kIGl0IGdldHMK
KyAgICAgICAgYSBmaWxlIG1hcHBlZCB2ZXJzaW9uLCBpdCBub3cgc2VuZHMgdGhlbSB0byB0aGUg
U2VydmljZVdvcmtlciBwcm9jZXNzIGFzIFNoYXJlYWJsZVJlc291cmNlCisgICAgICAgIGhhbmRs
ZXMgdmlhIElQQy4gVGhpcyBhbGxvd3MgdGhlIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyB0byByZXBs
YWNlIGl0cyBoZWFwLWFsbG9jYXRlZAorICAgICAgICB2ZXJzaW9ucyBvZiB0aGUgc2NyaXB0IGFu
ZCBzYXZlIG9uIGRpcnR5IG1lbW9yeSB1c2UgKGluIHRoZSBjb2xkIGNhc2UpLgorCisgICAgICAg
ICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAgIEZpeCBidWcgd2hlcmUgMiBv
ZiBTaGFyZWFibGVSZXNvdXJjZSBkYXRhIG1lbWJlcnMgd2VyZSBub3QgcHJvcGVybHkgaW5pdGlh
bGl6ZWQgYnkgdGhlIGRlZmF1bHQKKyAgICAgICAgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBT
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6ZW5jb2RlU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhU2NyaXB0KToKKyAgICAgICAgKElQQzo6ZGVjb2RlU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhU2NyaXB0KToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0Pjo6ZW5jb2RlKToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVk
U2NyaXB0Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZXJ2aWNlV29y
a2VyQ29udGV4dERhdGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJUEM6OnRyeUNvbnZl
cnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgIE1vdmVkIElQQyBlbmNvZGVycyAvIGRlY29kZXJzIGZv
ciBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgYW5kIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6
SW1wb3J0ZWRTY3JpcHQKKyAgICAgICAgdG8gdGhlIFdlYktpdCBsYXllciwgaW4gV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLiBUaGlzIGFsbG93cyB1cyB0byBlbmNvZGUgLyBkZWNvZGUgdGhlIHNjcmlw
dHMgYXMKKyAgICAgICAgV2ViS2l0OjpTaGFyZWFibGVIYW5kbGUgd2hlbmV2ZXIgcG9zc2libGUu
IFRoaXMgd2F5LCB3aGVuIHRoZSBOZXR3b3JrUHJvY2VzcyBzZW5kcyBhCisgICAgICAgIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzIHRvIGxhdW5j
aCBhIHNlcnZpY2Ugd29ya2VyLCBib3RoIHRoZQorICAgICAgICBTZXJ2aWNlV29ya2VyIHByb2Nl
c3MgYW5kIHRoZSBOZXR3b3JrIHByb2Nlc3Mgc2hhcmUgdGhlIHNhbWUgbW1hcCdkIHZlcnNpb25z
IG9mIHRoZSBzY3JpcHRzIGFuZCB3ZQorICAgICAgICBzYXZlIG9uIGRpcnR5IG1lbW9yeSB1c2Uu
IFRoaXMgaGVscHMgcmVkdWNlIGRpcnR5IG1lbW9yeSB1c2UgaW4gdGhlIFNlcnZpY2VXb3JrZXIg
cHJvY2VzcyBpbiB0aGUKKyAgICAgICAgd2FybSBjYXNlLCB3aGVyZSB0aGUgc2NyaXB0cyBhcmUg
bG9hZGVkIHN0cmFpZ2h0IGZyb20gdGhlIGRpc2sgKHZpYSBTV1NjcmlwdFN0b3JhZ2UpLgorCiAy
MDIxLTAzLTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhIHNob3VsZCBub3QgYmUgc2F2ZWQgYm90aCBvbiBTZXJ2aWNl
V29ya2VyVGhyZWFkICYgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCA1ODdiYWViMTFlNDM0N2JjNjBlYTIzMjk4MjU1
ZTM5NThmMWM4N2MwLi5hNjAxOGI1OTM5MWEwMTk3YzA0YWY3ZmU3NTgwNTA4NzBmZGE2MTIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTIxNiw2ICsyMTYs
MTIgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICBy
ZXR1cm4gY2xvbmU7CiB9CiAKK2Jvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29u
c3QKK3sKKyAgICBhdXRvIGl0ID0gYmVnaW4oKTsKKyAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYg
KytpdCA9PSBlbmQoKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIFNoYXJlZEJ1ZmZl
cjo6aW50ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewpAQCAtMjQ3LDYgKzI1MywxMSBAQCBj
b25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICAgICBy
ZXR1cm4gV1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCitib29sIFNo
YXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAor
eworICAgIHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZp
bGVEYXRhPihtX2ltbXV0YWJsZURhdGEpOworfQorCiAjaWYgIVVTRShDRikKIHZvaWQgU2hhcmVk
QnVmZmVyOjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDNjMjIzYTJmZjM5NjllNjkzNjg2MzJjODA4YTI3
Mzk3ZDlmMjc0ZDMuLjVlZTZkOThlZmQ0Nzc3NTMwZTYwZWI2MDhjMGI5YWE2ZTc1NGVjYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xNDYsNiArMTQ2LDggQEAg
cHVibGljOgogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsK
ICNlbmRpZgogCisgICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0Owor
CiAgICAgcHJpdmF0ZToKICAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYgZGF0YSkK
ICAgICAgICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQpAQCAtMTg1
LDYgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3Rv
cjxEYXRhU2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29u
c3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0K
ICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9zZWdtZW50cy5lbmQoKTsgfQorICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0Owog
ICAgIAogICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhs
b2coTikpIHRpbWUuCiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90
IHBvc2l0aW9uKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRleCA4NDU0MWQ0NjJhOGI3MGE0
YjMzZDNhMjM2NzBhYmIyNDYwZTU5MmEwLi5hMTYwNDg5MDIzOTRmZTU5NmNjY2RjZjNiMTk4ZmE4
MTFhNWNmMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC01MCwzNSArNTAsNiBAQCBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNvbnRleHREYXRhIHsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwogCiAg
ICAgICAgIEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2Ny
aXB0LT5jb3B5KCksIHJlc3BvbnNlVVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRl
ZENvcHkoKSB9OyB9Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgZW5jb2Rl
ciA8PCBzY3JpcHQgPDwgcmVzcG9uc2VVUkwgPDwgbWltZVR5cGU7Ci0gICAgICAgIH0KLQotICAg
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1wb3J0ZWRTY3Jp
cHQ+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBPcHRp
b25hbDxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwotICAgICAgICAgICAgZGVjb2RlciA+
PiBzY3JpcHQ7Ci0gICAgICAgICAgICBpZiAoIXNjcmlwdCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBPcHRpb25hbDxVUkw+
IHJlc3BvbnNlVVJMOwotICAgICAgICAgICAgZGVjb2RlciA+PiByZXNwb25zZVVSTDsKLSAgICAg
ICAgICAgIGlmICghcmVzcG9uc2VVUkwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlw
ZTsKLSAgICAgICAgICAgIGRlY29kZXIgPj4gbWltZVR5cGU7Ci0gICAgICAgICAgICBpZiAoIW1p
bWVUeXBlKQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIHJldHVybiB7ewotICAgICAgICAgICAgICAgIFdURk1vdmUoKnNjcmlw
dCksCi0gICAgICAgICAgICAgICAgV1RGTW92ZSgqcmVzcG9uc2VVUkwpLAotICAgICAgICAgICAg
ICAgIFdURk1vdmUoKm1pbWVUeXBlKQotICAgICAgICAgICAgfX07Ci0gICAgICAgIH0KICAgICB9
OwogCiAgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRh
SWRlbnRpZmllcjsKQEAgLTkzLDg2ICs2NCw5IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEgewogICAgIGJvb2wgbG9hZGVkRnJvbURpc2s7CiAgICAgSGFzaE1hcDxVUkwsIEltcG9y
dGVkU2NyaXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKIAotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBkZWNvZGUoRGVj
b2RlciYpOwotCiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIGlzb2xhdGVkQ29weSgpIGNv
bnN0OwogfTsKIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgU2VydmljZVdvcmtlckNv
bnRleHREYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVy
IDw8IGpvYkRhdGFJZGVudGlmaWVyIDw8IHJlZ2lzdHJhdGlvbiA8PCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciA8PCBzY3JpcHQgPDwgY29udGVudFNlY3VyaXR5UG9saWN5IDw8IHJlZmVycmVyUG9s
aWN5IDw8IHNjcmlwdFVSTCA8PCB3b3JrZXJUeXBlIDw8IGxvYWRlZEZyb21EaXNrOwotICAgIGVu
Y29kZXIgPDwgc2NyaXB0UmVzb3VyY2VNYXA7Ci0gICAgZW5jb2RlciA8PCBjZXJ0aWZpY2F0ZUlu
Zm87Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCi17Ci0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyPj4gam9iRGF0YUlkZW50aWZpZXI7Ci0gICAgZGVjb2RlciA+PiBqb2JEYXRhSWRlbnRp
ZmllcjsKLSAgICBpZiAoIWpvYkRhdGFJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotCi0gICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+IHJl
Z2lzdHJhdGlvbjsKLSAgICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlvbjsKLSAgICBpZiAoIXJlZ2lz
dHJhdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGF1dG8gc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6ZGVjb2RlKGRlY29k
ZXIpOwotICAgIGlmICghc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gc2NyaXB0Owot
ICAgIGRlY29kZXIgPj4gc2NyaXB0OwotICAgIGlmICghc2NyaXB0KQotICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwotCi0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJz
IGNvbnRlbnRTZWN1cml0eVBvbGljeTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRlbnRT
ZWN1cml0eVBvbGljeSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBTdHJp
bmcgcmVmZXJyZXJQb2xpY3k7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZWZlcnJlclBvbGlj
eSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBVUkwgc2NyaXB0VVJMOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0VVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICAKLSAgICBXb3JrZXJUeXBlIHdvcmtlclR5cGU7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZSh3b3JrZXJUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQot
ICAgIGJvb2wgbG9hZGVkRnJvbURpc2s7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShsb2FkZWRG
cm9tRGlzaykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBIYXNoTWFwPFVS
TCwgSW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc2NyaXB0UmVzb3VyY2VNYXApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
Ci0gICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87Ci0gICAgZGVj
b2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87Ci0gICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCi0gICAgcmV0dXJuIHt7Ci0gICAgICAgIFdU
Rk1vdmUoKmpvYkRhdGFJZGVudGlmaWVyKSwKLSAgICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9u
KSwKLSAgICAgICAgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLAotICAgICAgICBX
VEZNb3ZlKCpzY3JpcHQpLAotICAgICAgICBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLAotICAg
ICAgICBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSksCi0gICAgICAgIFdURk1vdmUocmVm
ZXJyZXJQb2xpY3kpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdFVSTCksCi0gICAgICAgIHdvcmtl
clR5cGUsCi0gICAgICAgIGxvYWRlZEZyb21EaXNrLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdFJl
c291cmNlTWFwKQotICAgIH19OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGEy
ZTYyOTFlNGI3MDQ1MDY4N2Q0ZWY5MTAxYzI1YTIwNDc5MGE5YzguLmIwM2YzZGFjYjkzOTMyMzJl
MWM4NWMwNTVkOTllYWZlMzRlMTIyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xNTUs
NiArMTU1LDIyIEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpzZXRTY3JpcHRSZXNv
dXJjZShjb25zdCBVUkwmIHVybCwgU2VydmljZVdvcmtlckNvCiAgICAgbV9jb250ZXh0RGF0YS5z
Y3JpcHRSZXNvdXJjZU1hcC5zZXQodXJsLCBXVEZNb3ZlKHNjcmlwdCkpOwogfQogCit2b2lkIFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBzY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBp
bXBvcnRlZFNjcmlwdHMpCit7CisgICAgLy8gVGhlc2Ugc2NyaXB0cyBzaG91bGQgYmUgaWRlbnRp
Y2FsIHRvIHRoZSBvbmVzIHdlIGhhdmUuIEhvd2V2ZXIsIHRoZXNlIGFyZSBtbWFwJ2Qgc28gdXNp
bmcgdGhlbSBoZWxwcyByZWR1Y2UgZGlydHkgbWVtb3J5IHVzYWdlLgorICAgIGlmIChzY3JpcHQp
IHsKKyAgICAgICAgQVNTRVJUKG1fY29udGV4dERhdGEuc2NyaXB0LmdldCgpID09ICpzY3JpcHQp
OworICAgICAgICBtX2NvbnRleHREYXRhLnNjcmlwdCA9IHNjcmlwdC5yZWxlYXNlTm9uTnVsbCgp
OworICAgIH0KKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBpbXBvcnRlZFNjcmlwdHMpIHsKKyAgICAg
ICAgYXV0byBpdCA9IG1fY29udGV4dERhdGEuc2NyaXB0UmVzb3VyY2VNYXAuZmluZChwYWlyLmtl
eSk7CisgICAgICAgIGlmIChpdCA9PSBtX2NvbnRleHREYXRhLnNjcmlwdFJlc291cmNlTWFwLmVu
ZCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEFTU0VSVCgqaXQtPnZhbHVlLnNj
cmlwdCA9PSAqcGFpci52YWx1ZSk7IC8vIERvIGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2Ny
aXB0cyBhcmUgaWRlbnRpY2FsLgorICAgICAgICBpdC0+dmFsdWUuc2NyaXB0ID0gV1RGTW92ZShw
YWlyLnZhbHVlKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAxZWNmMTE1
ZTViNWYwMzNkNmU0NjhmZmE0NWFmMTgzMGNkYjA1NjZhLi5lZTc1ZWU5ZWQxYTMyOTdjMzMyNjll
OTNmZDA2ZTc4ZWUzYTBjNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC02OCw2ICs2OCw4IEBA
IHB1YmxpYzoKICAgICBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2Ny
aXB0KiBzY3JpcHRSZXNvdXJjZShjb25zdCBVUkwmKSBjb25zdDsKICAgICB2b2lkIHNldFNjcmlw
dFJlc291cmNlKGNvbnN0IFVSTCYsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRT
Y3JpcHQmJik7CiAKKyAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1w
b3J0ZWRTY3JpcHRzKTsKKwogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29u
dGV4dERhdGEoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHREYXRhOyB9CiAgICAgY29uc3QgQ2Vy
dGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRE
YXRhLmNlcnRpZmljYXRlSW5mbzsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IDZkYTli
YTgzZjEyZjc1Mjk2NTZhMWJiM2ViZTgzNjJhOWNmNTBiYmYuLjg4MTNhYjY5YTE2ZDU3NGYwMTUx
YWI1OGQxYmUwMjFhZmI4N2U4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0xMjAsNiAr
MTIwLDEyIEBAIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uCiAgICAgc3RvcFdvcmtlcigqc2Vydmlj
ZVdvcmtlciwgdGltZW91dCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lk
IFNXQ29udGV4dE1hbmFnZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFw
PFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIGlm
IChhdXRvIHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcikpCisgICAg
ICAgIHNlcnZpY2VXb3JrZXItPmRpZFNhdmVTY3JpcHRzVG9EaXNrKFdURk1vdmUoc2NyaXB0KSwg
V1RGTW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKK30KKwogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpz
dG9wV29ya2VyKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYgc2VydmljZVdvcmtlciwgU2Vjb25k
cyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byBpZGVudGlmaWVyID0gc2VydmljZVdvcmtlci5pZGVudGlmaWVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5h
Z2VyLmgKaW5kZXggODI5YjllNDA4MWM2YWJiNTRlZDQwYTE5ZGE4N2EwNzhhNzdjMWYxMS4uZGRi
ZWI1ODU0YWMyMTljMTk4YzZiNjdkMTNmYTU4ZTg5OTY4YmI4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
aApAQCAtOTAsNiArOTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJl
SW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgU2Vjb25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIHZvaWQgZm9yRWFjaFNlcnZpY2VXb3Jr
ZXJUaHJlYWQoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSYpPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA5MGQ3
ZmY2NTM5ZTJjYzE1OWNlMjJiZDQ5NmNmODcwNWJjMjE0ZGRhLi5iNTc0ODM1ODRjMDUxOTk4OTlj
ZjY3NTVlOTdjOTNiZmIwODZlMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAKQEAgLTI4MSw2ICsyODEsMTMgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OmZpcmVBY3RpdmF0ZUV2ZW50KCkKICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2Ny
aXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRz
KQoreworICAgIHRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbc2NyaXB0ID0gV1RGTW92ZShz
Y3JpcHQpLCBpbXBvcnRlZFNjcmlwdHMgPSBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cyldKGF1dG8m
IGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpLmRpZFNhdmVTY3JpcHRzVG9EaXNrKFdURk1vdmUoc2NyaXB0KSwgV1RG
TW92ZShpbXBvcnRlZFNjcmlwdHMpKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkuaAppbmRleCA3ZWM3YjhlNGVmMWQ4YWExYjVjNWNmZDk1MTczMDc5NTg1
YjhiZTg1Li44NWQ4Y2RlNzYyMWI4N2I4MjM5NmRkOGIyMmM1MjI1YWI5YTQ3YTIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaApAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmLCBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYpOwogICAgIHZvaWQgZmlyZUluc3RhbGxF
dmVudCgpOwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoKTsKKyAgICB2b2lkIGRpZFNhdmVT
Y3JpcHRzVG9EaXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChib29sKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggOWJlMzQ0NDkxZjA2MTNmYWUxNDBl
Nzk4NTFiNzEwYTNiMzJiMmIyNS4uZTE4YTJkMWJiOTEyOTlmYzYwZjBjZTM2M2RhMGNjMmFiNTRh
NWVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01NCw2ICs1
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNl
V29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVu
dChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5h
dGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNoYXJlZEJ1ZmZl
ciYgc2NyaXB0LCBjb25zdCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBpbXBv
cnRlZFNjcmlwdHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmll
ckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuY3BwCmluZGV4IDYxM2JiNzJjNTg4ZDhhMTcwYjFlNGJiMmI3OTBjMDMwMGJlMWY0NGUuLmY5
MGI4ZjI3OTIwYzQ5MDMxYTE3YjQ4ZjZhMzM5YTU5MWIxNDJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CkBAIC0yNDAsNyArMjQwLDExIEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNldFNjcmlwdFJlc291
cmNlKFVSTCYmIHVybCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvCiAKIHZvaWQgU1dT
ZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFp
blNjcmlwdCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2Ny
aXB0cykKIHsKLSAgICAvLyBUaGUgc2NyaXB0cyB3ZXJlIHNhdmVkIHRvIGRpc2ssIHJlcGxhY2Ug
b3VyIHNjcmlwdHMgd2l0aCB0aGUgbW1hcCdkIHZlcnNpb24gdG8gc2F2ZSBtZW1vcnkuCisgICAg
Ly8gU2VuZCBtbWFwJ2QgdmVyc2lvbiBvZiB0aGUgc2NyaXB0cyB0byB0aGUgU2VydmljZVdvcmtl
ciBwcm9jZXNzIHNvIHdlIGNhbiBzYXZlIGRpcnR5IG1lbW9yeS4KKyAgICBpZiAoYXV0byogY29u
dGV4dENvbm5lY3Rpb24gPSB0aGlzLT5jb250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICBjb250
ZXh0Q29ubmVjdGlvbi0+ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soaWRlbnRpZmllcigpLCBtYWluU2Ny
aXB0LCBpbXBvcnRlZFNjcmlwdHMpOworCisgICAgLy8gVGhlIHNjcmlwdHMgd2VyZSBzYXZlZCB0
byBkaXNrLCByZXBsYWNlIG91ciBzY3JpcHRzIHdpdGggdGhlIG1tYXAnZCB2ZXJzaW9uIHRvIHNh
dmUgZGlydHkgbWVtb3J5LgogICAgIEFTU0VSVChtYWluU2NyaXB0LmdldCgpID09IG1fc2NyaXB0
LmdldCgpKTsgLy8gRG8gYSBtZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFyZSBpZGVu
dGljYWwuCiAgICAgbV9zY3JpcHQgPSBXVEZNb3ZlKG1haW5TY3JpcHQpOwogICAgIGZvciAoYXV0
byYgcGFpciA6IGltcG9ydGVkU2NyaXB0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA5OGQ5MmQxYjVjNTU0NDJjZTYyYmZi
NmJkNTVmZWY1YWNiZTIzMWI1Li41NTM0YjhkOWI0NGZhOWRjNjA5ZDlmNGM3YjQzYjUzMWQxNTA5
ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcApAQCAtMTA3LDYgKzEwNywyNSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcgogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVX
b3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHNj
cmlwdCwgY29uc3QgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgaW1wb3J0ZWRT
Y3JpcHRzKQoreworI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENP
Q09BKQorICAgIGF1dG8gc2NyaXB0SGFuZGxlID0gSVBDOjp0cnlDb252ZXJ0VG9TaGFyZWFibGVS
ZXNvdXJjZUhhbmRsZShzY3JpcHQpOworICAgIEhhc2hNYXA8VVJMLCBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlPiBpbXBvcnRlZFNjcmlwdEhhbmRsZXM7CisgICAgZm9yIChhdXRvJiBwYWlyIDog
aW1wb3J0ZWRTY3JpcHRzKSB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gSVBDOjp0cnlDb252ZXJ0
VG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZSgqcGFpci52YWx1ZSk7CisgICAgICAgIGlmIChoYW5k
bGUuaXNOdWxsKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaW1wb3J0ZWRTY3Jp
cHRIYW5kbGVzLmFkZChwYWlyLmtleSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICB9CisgICAgaWYg
KCFzY3JpcHRIYW5kbGUuaXNOdWxsKCkgfHwgIWltcG9ydGVkU2NyaXB0SGFuZGxlcy5pc0VtcHR5
KCkpCisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpEaWRTYXZlU2NyaXB0c1RvRGlzayB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzY3JpcHRI
YW5kbGUsIGltcG9ydGVkU2NyaXB0SGFuZGxlcyB9KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFN
KHNjcmlwdCk7CisgICAgVU5VU0VEX1BBUkFNKGltcG9ydGVkU2NyaXB0cyk7CisjZW5kaWYKK30K
Kwogdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZUR1ZVRvVW5y
ZXNwb25zaXZlbmVzcygpCiB7CiAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6VGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyB7IHdlYlByb2Nl
c3NJZGVudGlmaWVyKCkgfSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKaW5kZXggYjNkYmY0Y2MxMjMyNjFkNjU1OWUyOWQ2MmQ3MDMzMjIz
MjcwZjIyYy4uNjhmNzkyNTM2N2QyNWZjOTNlNzU4ZjRiMDA3ZjU4MDQzYmM3MTIyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtODgs
NiArODgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVu
dChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0ZXJt
aW5hdGVXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOworICAg
IHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBIYXNoTWFwPFVSTCwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBpbXBvcnRlZFNjcmlwdHMpIGZpbmFsOwogICAg
IHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRl
bnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+
JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKICAgICB2b2lkIG1hdGNoQWxsQ29tcGxl
dGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1No
YXJlYWJsZVJlc291cmNlLmNwcAppbmRleCA2Y2VmODdmM2M0NjQxNzlkZjc2NjJmZGMzOTkyM2Ew
NjEzZTIxZDgwLi5hNDczYWJmMDk4YzU2YTE0ZmZlNWM4MmQyOTY0ODA3ODQyZTAxNzQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC0zNCw5ICszNCw3
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1TaGFy
ZWFibGVSZXNvdXJjZTo6SGFuZGxlOjpIYW5kbGUoKQotewotfQorU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZTo6SGFuZGxlKCkgPSBkZWZhdWx0OwogCiB2b2lkIFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCA3ODZjOTA1NGE5ZTZjZTQyOTJmN2Q3
Y2FmMjFkMGM5ZjNlMTBiZjY0Li41Mzc0ZDdiOTZjZjIyMTlhNzY2YmI3MGFiNjBhYzg4NzM2NmMx
ZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTYwLDgg
KzYwLDggQEAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7
CiAKICAgICAgICAgbXV0YWJsZSBTaGFyZWRNZW1vcnk6OkhhbmRsZSBtX2hhbmRsZTsKLSAgICAg
ICAgdW5zaWduZWQgbV9vZmZzZXQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICAgICAg
dW5zaWduZWQgbV9vZmZzZXQgeyAwIH07CisgICAgICAgIHVuc2lnbmVkIG1fc2l6ZSB7IDAgfTsK
ICAgICB9OwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIHJlc291cmNlIHRoYXQgdXNlcyBt
YWxsb2NlZCBtZW1vcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCBmNmMxNGI1YzM3ZWUwYzIyOGZhNTg2MjUyNTlmZTg3MDYwODk4OWEy
Li4xMzc0ZTE1OGMyZWUwZjkwZmJkZTJiZDdkMTg4YzRjMDUyMjk0NmQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI4MjgsNiArMjgy
OCwxNDMgQEAgYm9vbCBBcmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZp
ZXI+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2UKICAgICB9CiAgICAgcmV0dXJuIHRydWU7
CiB9CisKK3N0YXRpYyB2b2lkIGVuY29kZVNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YVNjcmlwdChF
bmNvZGVyJiBlbmNvZGVyLCBTaGFyZWRCdWZmZXImIHNjcmlwdCkKK3sKKyNpZiBFTkFCTEUoU0hB
UkVBQkxFX1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvIGhhbmRsZSA9IHRy
eUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKHNjcmlwdCk7CisgICAgYm9vbCBpc1No
YXJlYWJsZVJlc291cmNlSGFuZGxlID0gIWhhbmRsZS5pc051bGwoKTsKKyAgICBlbmNvZGVyIDw8
IGlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7CisgICAgaWYgKGlzU2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGUpIHsKKyAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKyAgICBlbmNvZGVyIDw8IG1ha2VSZWYoc2NyaXB0KTsKK30KKworc3RhdGlj
IE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBkZWNvZGVTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGFTY3JpcHQoRGVjb2RlciYgZGVjb2RlcikKK3sKKyNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09V
UkNFKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25hbDxib29sPiBpc1NoYXJlYWJsZVJl
c291cmNlSGFuZGxlOworICAgIGRlY29kZXIgPj4gaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsK
KyAgICBpZiAoIWlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgaWYgKCppc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKSB7CisgICAgICAg
IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgaGFuZGxlOworICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGhhbmRsZSkgfHwgaGFuZGxlLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICAgICAgYXV0byBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVk
QnVmZmVyKCk7CisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0K
KyNlbmRpZgorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7CisgICAgZGVj
b2RlciA+PiBzY3JpcHQ7CisgICAgcmV0dXJuIHNjcmlwdDsKK30KKwordm9pZCBBcmd1bWVudENv
ZGVyPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+OjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCYgaW1wb3J0ZWRTY3JpcHQpCit7CisgICAgZW5jb2RlU2VydmljZVdvcmtlckNvbnRleHRE
YXRhU2NyaXB0KGVuY29kZXIsICppbXBvcnRlZFNjcmlwdC5zY3JpcHQpOworICAgIGVuY29kZXIg
PDwgaW1wb3J0ZWRTY3JpcHQucmVzcG9uc2VVUkwgPDwgaW1wb3J0ZWRTY3JpcHQubWltZVR5cGU7
Cit9CisKK09wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+
IEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gc2NyaXB0ID0gZGVjb2RlU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhU2NyaXB0KGRlY29kZXIpOworICAgIGlmICghc2NyaXB0KQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8VVJMPiByZXNwb25z
ZVVSTDsKKyAgICBkZWNvZGVyID4+IHJlc3BvbnNlVVJMOworICAgIGlmICghcmVzcG9uc2VVUkwp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IG1p
bWVUeXBlOworICAgIGRlY29kZXIgPj4gbWltZVR5cGU7CisgICAgaWYgKCFtaW1lVHlwZSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eworICAgICAgICBXVEZN
b3ZlKCpzY3JpcHQpLAorICAgICAgICBXVEZNb3ZlKCpyZXNwb25zZVVSTCksCisgICAgICAgIFdU
Rk1vdmUoKm1pbWVUeXBlKQorICAgIH19OworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSkKK3sKKyAgICBlbmNvZGVTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGFTY3JpcHQoZW5jb2RlciwgZGF0YS5zY3JpcHQpOworICAgIGVuY29kZXIgPDwgZGF0
YS5qb2JEYXRhSWRlbnRpZmllciA8PCBkYXRhLnJlZ2lzdHJhdGlvbiA8PCBkYXRhLnNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIDw8IGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5IDw8IGRhdGEucmVm
ZXJyZXJQb2xpY3kKKyAgICAgICAgPDwgZGF0YS5zY3JpcHRVUkwgPDwgZGF0YS53b3JrZXJUeXBl
IDw8IGRhdGEubG9hZGVkRnJvbURpc2sgPDwgZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCA8PCBkYXRh
LmNlcnRpZmljYXRlSW5mbzsKK30KKworT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRh
PiBBcmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT46OmRlY29kZShEZWNvZGVy
JiBkZWNvZGVyKQoreworICAgIGF1dG8gc2NyaXB0ID0gZGVjb2RlU2VydmljZVdvcmtlckNvbnRl
eHREYXRhU2NyaXB0KGRlY29kZXIpOworICAgIGlmICghc2NyaXB0KQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyPj4gam9iRGF0YUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBqb2JEYXRh
SWRlbnRpZmllcjsKKyAgICBpZiAoIWpvYkRhdGFJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGE+IHJlZ2lzdHJhdGlvbjsKKyAgICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlvbjsKKyAgICBpZiAo
IXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8g
c2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6ZGVjb2Rl
KGRlY29kZXIpOworICAgIGlmICghc2VydmljZVdvcmtlcklkZW50aWZpZXIpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhl
YWRlcnMgY29udGVudFNlY3VyaXR5UG9saWN5OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29u
dGVudFNlY3VyaXR5UG9saWN5KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IFN0cmluZyByZWZlcnJlclBvbGljeTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlZmVycmVy
UG9saWN5KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFVSTCBzY3JpcHRV
Ukw7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRVUkwpKQorICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworCisgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOworICAgIGlmICghZGVj
b2Rlci5kZWNvZGUod29ya2VyVHlwZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBib29sIGxvYWRlZEZyb21EaXNrOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9hZGVk
RnJvbURpc2spKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291
cmNlTWFwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0UmVzb3VyY2VNYXApKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZv
PiBjZXJ0aWZpY2F0ZUluZm87CisgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CisgICAg
aWYgKCFjZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4ge3sKKyAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLAorICAgICAg
ICBXVEZNb3ZlKCpyZWdpc3RyYXRpb24pLAorICAgICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciksCisgICAgICAgIFdURk1vdmUoKnNjcmlwdCksCisgICAgICAgIFdURk1vdmUo
KmNlcnRpZmljYXRlSW5mbyksCisgICAgICAgIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5
KSwKKyAgICAgICAgV1RGTW92ZShyZWZlcnJlclBvbGljeSksCisgICAgICAgIFdURk1vdmUoc2Ny
aXB0VVJMKSwKKyAgICAgICAgd29ya2VyVHlwZSwKKyAgICAgICAgbG9hZGVkRnJvbURpc2ssCisg
ICAgICAgIFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApCisgICAgfX07Cit9CisKICNlbmRpZgog
CiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKQEAgLTMwNjYsNiArMzIwMywzMCBAQCBPcHRp
b25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPj46OmRlY29kZShEZQogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsK
IH0KIAorI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQor
U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhh
bmRsZShTaGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBpZiAoIWJ1ZmZlci5oYXNPbmVTZWdt
ZW50KCkpCisgICAgICAgIHJldHVybiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHsgfTsKKwor
ICAgIGF1dG8mIHNlZ21lbnQgPSBidWZmZXIuYmVnaW4oKS0+c2VnbWVudDsKKyAgICBpZiAoIXNl
Z21lbnQtPmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSkKKyAgICAgICAgcmV0dXJuIFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUgeyB9OworCisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRN
ZW1vcnk6OndyYXBNYXAoY29uc3RfY2FzdDxjaGFyKj4oc2VnbWVudC0+ZGF0YSgpKSwgc2VnbWVu
dC0+c2l6ZSgpLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBpZiAo
IXNoYXJlZE1lbW9yeSkKKyAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUg
eyB9OworCisgICAgYXV0byBzaGFyZWFibGVSZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjpj
cmVhdGUoc2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCksIDAsIHNlZ21lbnQtPnNpemUoKSk7
CisgICAgaWYgKCFzaGFyZWFibGVSZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJl
c291cmNlOjpIYW5kbGUgeyB9OworCisgICAgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBzaGFy
ZWFibGVSZXNvdXJjZUhhbmRsZTsKKyAgICBzaGFyZWFibGVSZXNvdXJjZS0+Y3JlYXRlSGFuZGxl
KHNoYXJlYWJsZVJlc291cmNlSGFuZGxlKTsKKyAgICByZXR1cm4gc2hhcmVhYmxlUmVzb3VyY2VI
YW5kbGU7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiB2b2lkIEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVz
c2FnZSYgbWVzc2FnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKaW5kZXggNDk0YmQ5NTVkODUzODg0MmQwMDM1MDBlMTRmZTExY2NhYmQyYjFjMC4u
ZjFiYTAwNjc2NzM5NGZjOTUyZTdmYmU1ZGQ2OGZiMDM0NmViYjk0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJTaGFy
ZWFibGVSZXNvdXJjZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQuaD4KQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jl
bmRlcmluZ01vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlclR5cGUuaD4KQEAgLTcz
NSw2ICs3MzcsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVyPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VE
X1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xp
ZW50SWRlbnRpZmllciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNv
ZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwor
ICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IGRl
Y29kZShEZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHsKKyAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4gZGVjb2RlKERlY29k
ZXImKTsKK307CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKQEAgLTc5
Niw2ICs4MDgsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBPcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKKyNpZiBFTkFCTEUoU0hBUkVBQkxF
X1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKKy8vIElmIHRoZSBTaGFyZWRCdWZmZXIgY29u
dGFpbnMgYSBzaW5nbGUgc2VnbWVudCBhbmQgdGhlIHNlZ21lbnQgaXMgTWFwcGVkRmlsZURhdGEs
IHRoZW4gY29udmVydCBpdCBpbnRvCisvLyBhIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBzbyB0
aGF0IGl0IGNhbiBiZSBzZW50IG92ZXIgSVBDIGFuZCBzaGFyZWQgd2l0aCBhbm90aGVyIHByb2Nl
c3MuCitXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVh
YmxlUmVzb3VyY2VIYW5kbGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisjZW5kaWYKKwogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gewogICAgIHN0YXRpYyB2b2lk
IGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNz
YWdlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggOTBhMmQ4Y2Zj
NjBmZGFhNTdjM2E3ODkwOTI0YTRiODVmZTFkMzE3NC4uYTRmMzQyYjFlZWVmZDUwOGE4Y2E3NmI0
NmMwZTYzOWMxZTBiOGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApA
QCAtMjYyLDYgKzI2MiwyNiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp0
ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbgogICAgIFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0NvbnRl
eHRNYW5hZ2VyOjp3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIG51bGxwdHIpOwogfQogCisjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlJiBzY3JpcHRIYW5kbGUsIGNvbnN0IEhhc2hNYXA8VVJMLCBTaGFyZWFibGVSZXNv
dXJjZTo6SGFuZGxlPiYgaW1wb3J0ZWRTY3JpcHRIYW5kbGVzKQoreworICAgIGF1dG8gdG9TaGFy
ZWRCdWZmZXIgPSBbXShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUpIC0+
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IHsKKyAgICAgICAgaWYgKGhhbmRsZS5pc051bGwoKSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IGhh
bmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgaWYgKCFzaGFyZWRCdWZmZXIp
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZFNhdmVTY3JpcHRzVG9EaXNrOiBGYWlsZWQgdG8gd3Jh
cCBTaGFyZWFibGVSZXNvdXJjZSBoYW5kbGUgaW4gYSBTaGFyZWRCdWZmZXIiKTsKKyAgICAgICAg
cmV0dXJuIHNoYXJlZEJ1ZmZlcjsKKyAgICB9OworICAgIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hh
cmVkQnVmZmVyPj4gaW1wb3J0ZWRTY3JpcHRzOworICAgIGZvciAoYXV0byYgcGFpciA6IGltcG9y
dGVkU2NyaXB0SGFuZGxlcykgeworICAgICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSB0b1No
YXJlZEJ1ZmZlcihwYWlyLnZhbHVlKSkKKyAgICAgICAgICAgIGltcG9ydGVkU2NyaXB0cy5hZGQo
cGFpci5rZXksIFdURk1vdmUoc2hhcmVkQnVmZmVyKSk7CisgICAgfQorICAgIFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLmRpZFNhdmVTY3JpcHRzVG9EaXNrKGlkZW50aWZpZXIsIHRvU2hh
cmVkQnVmZmVyKHNjcmlwdEhhbmRsZSksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7Cit9Cisj
ZW5kaWYKKwogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIm
IGRlc3RpbmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1l
c3NhZ2UsIFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKQogewogICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6UG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlLCBz
b3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCmluZGV4IDljYTRjMWYxNzI0OTRlYTRjOWMyNjZjMWNjMDVmZDhiZTI0ZGE3ZWIu
LjExZjllMDlmZDMzZDU5MGZmMTM3M2I2MmYzM2JjMGNkMGU5NjlhMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlNoYXJlYWJs
ZVJlc291cmNlLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oIgpAQCAtOTAsNiArOTEsOSBA
QCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIpOworI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0Up
ICYmIFBMQVRGT1JNKENPQ09BKQorICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5k
bGUmIHNjcmlwdCwgY29uc3QgSGFzaE1hcDxVUkwsIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU+
JiBpbXBvcnRlZFNjcmlwdHMpOworI2VuZGlmCiAgICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlm
aWVyQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKTsKICAg
ICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZp
ZXIsIFZlY3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik7CiAgICAgdm9p
ZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNTI4NGNkNGE1ZmZjYTU3NjI0OThh
YmEzMmQxMTc3Mzg2ZDY0M2JmZS4uYWU1NzE2YjlhZjIxNGVjOTBmZDg5MzcwZmNmZGU5YmVhOGVk
YWQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KQEAgLTMxLDYgKzMxLDkgQEAgbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgRmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEZpcmVBY3RpdmF0ZUV2ZW50KFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgVGVybWluYXRl
V29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisjaWYg
RU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCisgICAgRGlkU2F2
ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBzY3JpcHQs
IEhhc2hNYXA8VVJMLCBXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU+IGltcG9ydGVk
U2NyaXB0cyk7CisjZW5kaWYKICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVp
bnQ2NF90IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhPiBkYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCiAgICAgTWF0
Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9y
PFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnRzRGF0YSkKICAgICBTZXRV
c2VyQWdlbnQoU3RyaW5nIHVzZXJBZ2VudCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424927</attachid>
            <date>2021-04-01 12:10:25 -0700</date>
            <delta_ts>2021-04-01 13:05:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224015-20210401121025.patch</filename>
            <type>text/plain</type>
            <size>38496</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzkyYWQwYTg2ODdmZjZk
YmZjODViNWE2MTlkMjIzNWNlOTQ1ODgwMC4uOTk4M2U1OWM5YjQ0OWQzNjlkZmE4MjQzODBhODlh
OTk4OTVmZmRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTA0LTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSB0aGUgU2VydmljZVdv
cmtlciBwcm9jZXNzIGhvbGQgb24gdG8gYSBmaWxlIG1hcHBlZCB2ZXJzaW9uIG9mIHRoZSBzZXJ2
aWNlIHdvcmtlciBzY3JpcHRzIHRvIHNhdmUgZGlydHkgbWVtb3J5CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQwMTUKKyAgICAgICAgPHJkYXI6Ly83
NTYzNzY3OT4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAg
ICBTaW5jZSByMjc1MjY3LCB0aGUgTmV0d29yayBwcm9jZXNzIGhvbGRzIG9uIHRoZSBmaWxlIG1h
cHBlZCAobW1hcCdkKSB2ZXJzaW9ucyBvZiB0aGUgc2VydmljZSB3b3JrZXIKKyAgICAgICAgc2Ny
aXB0cyBpbnN0ZWFkIG9mIGhlYXAgYWxsb2NhdGVkIHZlcnNpb25zLCBpbiBvcmRlciB0byBkZWNy
ZWFzZSBpdHMgZGlydHkgbWVtb3J5IHVzZS4gSG93ZXZlciwgdGhlCisgICAgICAgIFNlcnZpY2VX
b3JrZXIgcHJvY2VzcyAod2hpY2ggaXMgb2Z0ZW4gYSByZWd1bGFyIFdlYlByb2Nlc3MpIHdhcyBz
dGlsbCB1c2luZyBoZWFwIGFsbG9jYXRlZCBzZXJ2aWNlCisgICAgICAgIHdvcmtlciBzY3JpcHRz
LiBUaGlzIHBhdGNoIGlzIGEgZm9sbG93LXVwIHRvIG1ha2Ugc3VyZSB0aGUgTmV0d29ya1Byb2Nl
c3Mgc2VuZHMgaXRzIGZpbGUgbWFwcGVkCisgICAgICAgIHNjcmlwdHMgdG8gdGhlIFNlcnZpY2VX
b3JrZXIgcHJvY2Vzc2VzIGFzIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZXMgaW4gb3JkZXIgdG8g
ZGVjcmVhc2UgdGhlIGRpcnR5CisgICAgICAgIG1lbW9yeSB1c2FnZSBvZiB0aGUgU2VydmljZVdv
cmtlciBwcm9jZXNzZXMgYXMgd2VsbC4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIFdlYi1m
YWNpbmcgYmVoYXZpb3IgY2hhbmdlLCBqdXN0IGEgZGVjcmVhc2UgaW4gZGlydHkgbWVtb3J5IHVz
ZSBpbiB0aGUgU2VydmljZVdvcmtlcgorICAgICAgICBwcm9jZXNzZXMgKHdoaWNoIG1heSBiZSBX
ZWJQcm9jZXNzZXMpLiBJIGhhdmUgZG9uZSBsb2NhbCB0ZXN0aW5nIHdpdGggYSB2ZXJ5IGxhcmdl
IHNlcnZpY2Ugd29ya2VyCisgICAgICAgIHRoYXQgdXNlcyBhIH4xMDBNQiBtYWluIHNjcmlwdCwg
d2hpY2ggaW1wb3J0cyBhbm90aGVyIH4xMDBNQiBzdWItc2NyaXB0LiBXaXRoIG15IGNoYW5nZSwg
ZGlydHkKKyAgICAgICAgbWVtb3J5IHVzYWdlIGdvZXMgZnJvbSB+NDQwTUIgdG8gfjIzME1CIGlu
IGJvdGggdGhlIGNvbGQgYW5kIHdhcm0gY2FzZXMgKCJDb2xkIiBtZWFuaW5nIHRoYXQgdGhlCisg
ICAgICAgIHNlcnZpY2Ugd29ya2VyIHdhcyBqdXN0IHJlZ2lzdGVkIGFuZCBkb3dubG9hZGVkIGZy
b20gdGhlIG5ldHdvcmsgYW5kICJXYXJtIiBtZWFuaW5nIHRoYXQgdGhlCisgICAgICAgIHNlcnZp
Y2Ugd29ya2VyIGhhZCBiZWVuIHByZXZpb3VzbHkgcmVnaXN0ZWQgYW5kIHdhcyBsb2FkZWQgc3Ry
YWlnaHQgZnJvbSB0aGUgU1dTY3JpcHRTdG9yYWdlKS4KKworICAgICAgICAqIHBsYXRmb3JtL1No
YXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6Omhhc09uZVNl
Z21lbnQgY29uc3QpOgorICAgICAgICBBZGQgYSB1dGlsaXR5IGZ1bmN0aW9uIHRvIFNoYXJlZEJ1
ZmZlciB0byBjaGVjayBpZiBpdCBjb250YWlucyBhIHNpbmdsZSBkYXRhIHNlZ21lbnQuCisKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVk
RmlsZURhdGEgY29uc3QpOgorICAgICAgICBBZGQgYSB1dGlsaXR5IGZ1bmN0aW9uIHRvIGNoZWNr
IGlmIGEgU2hhcmVkQnVmZmVyIERhdGFTZWdtZW50IGNvbnRhaW5zIGEgTWFwcGVkRmlsZURhdGEg
b2JqZWN0LgorCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRleHREYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0Ojppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICBNb3ZlIElQQyBlbmNvZGVycyAvIGRlY29kZXJzIGZvciBT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgYW5kIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1w
b3J0ZWRTY3JpcHQKKyAgICAgICAgdG8gdGhlIFdlYktpdCBsYXllciwgaW4gV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLiBUaGlzIGFsbG93cyB1cyB0byBlbmNvZGUgLyBkZWNvZGUgdGhlIHNjcmlwdHMg
YXMKKyAgICAgICAgV2ViS2l0OjpTaGFyZWFibGVIYW5kbGUgd2hlbmV2ZXIgcG9zc2libGUuIFRo
aXMgd2F5LCB3aGVuIHRoZSBOZXR3b3JrUHJvY2VzcyBzZW5kcyBhCisgICAgICAgIFNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzIHRvIGxhdW5jaCBh
IHNlcnZpY2Ugd29ya2VyLCBib3RoIHRoZQorICAgICAgICBTZXJ2aWNlV29ya2VyIHByb2Nlc3Mg
YW5kIHRoZSBOZXR3b3JrIHByb2Nlc3Mgc2hhcmUgdGhlIHNhbWUgbW1hcCdkIHZlcnNpb25zIG9m
IHRoZSBzY3JpcHRzIGFuZCB3ZQorICAgICAgICBzYXZlIG9uIGRpcnR5IG1lbW9yeSB1c2UuIFRo
aXMgaGVscHMgcmVkdWNlIGRpcnR5IG1lbW9yeSB1c2UgaW4gdGhlIFNlcnZpY2VXb3JrZXIgcHJv
Y2VzcyBpbiB0aGUKKyAgICAgICAgd2FybSBjYXNlLCB3aGVyZSB0aGUgc2NyaXB0cyBhcmUgbG9h
ZGVkIHN0cmFpZ2h0IGZyb20gdGhlIGRpc2sgKHZpYSBTV1NjcmlwdFN0b3JhZ2UpLgorCisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OmRpZFNhdmVTY3JpcHRzVG9E
aXNrKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Lmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpkaWRTYXZlU2NyaXB0c1Rv
RGlzayk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6
OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJXb3JrZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKToKKyAgICAgICAgSW4gdGhlIGNvbGQg
Y2FzZSwgb25jZSB0aGUgTmV0d29ya1Byb2Nlc3MgaXMgZG9uZSBzYXZpbmcgdGhlIHNjcmlwdHMg
dG8gZGlzaywgaXQgbm93IHNlbmRzIHRoZQorICAgICAgICBmaWxlIG1hcHBlZCB2ZXJzaW9uIG9m
IHRoZSBzY3JpcHRzIHRvIHRoZSBTZXJ2aWNlV29ya2VyIHByb2Nlc3MsIHNvIHRoYXQgaXQgY2Fu
IGFsc28gcmVwbGFjZQorICAgICAgICBpdHMgaGVhcC1hbGxvY2F0ZWQgY29waWVzIGFuZCBzYXZl
IG9uIGRpcnR5IG1lbW9yeSB1c2UuCisKIDIwMjEtMDQtMDEgIENocmlzIExvcmQgIDxjbG9yZEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIE1ha2UgRm9udENhY2hlIGNvbnN0cnVjdGFibGUgYW5kIHNh
ZmUgdG8gdXNlIG9mZiB0aGUgbWFpbiB0aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNjVmNTkzZDI0NTE5MmFl
MmViM2Q3MDcxMDJjZDM4M2ViNDkxNDgxMS4uYzJhZTY2ZDllZmQxZGQzY2I2OGNhZGQ0ZWRjY2Y0
NDNiMzI1ZGNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAyMS0wNC0wMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgdGhlIFNlcnZpY2VXb3Jr
ZXIgcHJvY2VzcyBob2xkIG9uIHRvIGEgZmlsZSBtYXBwZWQgdmVyc2lvbiBvZiB0aGUgc2Vydmlj
ZSB3b3JrZXIgc2NyaXB0cyB0byBzYXZlIGRpcnR5IG1lbW9yeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MDE1CisgICAgICAgIDxyZGFyOi8vNzU2
Mzc2Nzk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZFNhdmVTY3JpcHRz
VG9EaXNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIFdoZW4gdGhlIE5ldHdvcmtQ
cm9jZXNzIGlzIGRvbmUgc2F2aW5nIHRoZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHRzIHRvIGRpc2sg
YW5kIGl0IGdldHMKKyAgICAgICAgYSBmaWxlIG1hcHBlZCB2ZXJzaW9uLCBpdCBub3cgc2VuZHMg
dGhlbSB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzIGFzIFNoYXJlYWJsZVJlc291cmNlCisg
ICAgICAgIGhhbmRsZXMgdmlhIElQQy4gVGhpcyBhbGxvd3MgdGhlIFNlcnZpY2VXb3JrZXIgcHJv
Y2VzcyB0byByZXBsYWNlIGl0cyBoZWFwLWFsbG9jYXRlZAorICAgICAgICB2ZXJzaW9ucyBvZiB0
aGUgc2NyaXB0IGFuZCBzYXZlIG9uIGRpcnR5IG1lbW9yeSB1c2UgKGluIHRoZSBjb2xkIGNhc2Up
LgorCisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmg6CisgICAgICAgIEZpeCBi
dWcgd2hlcmUgMiBvZiBTaGFyZWFibGVSZXNvdXJjZSBkYXRhIG1lbWJlcnMgd2VyZSBub3QgcHJv
cGVybHkgaW5pdGlhbGl6ZWQgYnkgdGhlIGRlZmF1bHQKKyAgICAgICAgY29uc3RydWN0b3IuCisK
KyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQ
Qzo6ZW5jb2RlU2VydmljZVdvcmtlckNvbnRleHREYXRhU2NyaXB0KToKKyAgICAgICAgKElQQzo6
ZGVjb2RlU2VydmljZVdvcmtlckNvbnRleHREYXRhU2NyaXB0KToKKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0Pjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE6OkltcG9ydGVkU2NyaXB0Pjo6ZGVjb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2Rl
cjxTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT46OmRlY29kZSk6CisgICAgICAgIChJ
UEM6OnRyeUNvbnZlcnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgIE1vdmVkIElQQyBlbmNvZGVycyAv
IGRlY29kZXJzIGZvciBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgYW5kIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQKKyAgICAgICAgdG8gdGhlIFdlYktpdCBsYXllciwg
aW4gV2ViQ29yZUFyZ3VtZW50Q29kZXJzLiBUaGlzIGFsbG93cyB1cyB0byBlbmNvZGUgLyBkZWNv
ZGUgdGhlIHNjcmlwdHMgYXMKKyAgICAgICAgV2ViS2l0OjpTaGFyZWFibGVIYW5kbGUgd2hlbmV2
ZXIgcG9zc2libGUuIFRoaXMgd2F5LCB3aGVuIHRoZSBOZXR3b3JrUHJvY2VzcyBzZW5kcyBhCisg
ICAgICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSB0byB0aGUgU2VydmljZVdvcmtlciBwcm9j
ZXNzIHRvIGxhdW5jaCBhIHNlcnZpY2Ugd29ya2VyLCBib3RoIHRoZQorICAgICAgICBTZXJ2aWNl
V29ya2VyIHByb2Nlc3MgYW5kIHRoZSBOZXR3b3JrIHByb2Nlc3Mgc2hhcmUgdGhlIHNhbWUgbW1h
cCdkIHZlcnNpb25zIG9mIHRoZSBzY3JpcHRzIGFuZCB3ZQorICAgICAgICBzYXZlIG9uIGRpcnR5
IG1lbW9yeSB1c2UuIFRoaXMgaGVscHMgcmVkdWNlIGRpcnR5IG1lbW9yeSB1c2UgaW4gdGhlIFNl
cnZpY2VXb3JrZXIgcHJvY2VzcyBpbiB0aGUKKyAgICAgICAgd2FybSBjYXNlLCB3aGVyZSB0aGUg
c2NyaXB0cyBhcmUgbG9hZGVkIHN0cmFpZ2h0IGZyb20gdGhlIGRpc2sgKHZpYSBTV1NjcmlwdFN0
b3JhZ2UpLgorCiAyMDIxLTA0LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVXNlIHNlbmRXaXRoQXN5bmNSZXBseSBmb3IgTmV0d29ya1By
b2Nlc3MgbWVzc2FnZXMgd2l0aCBhc3luYyByZXBsaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcAppbmRleCA1ODdiYWViMTFlNDM0N2JjNjBlYTIzMjk4MjU1ZTM5NThm
MWM4N2MwLi5hNjAxOGI1OTM5MWEwMTk3YzA0YWY3ZmU3NTgwNTA4NzBmZGE2MTIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTIxNiw2ICsyMTYsMTIgQEAg
UmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4g
Y2xvbmU7CiB9CiAKK2Jvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QKK3sK
KyAgICBhdXRvIGl0ID0gYmVnaW4oKTsKKyAgICByZXR1cm4gaXQgIT0gZW5kKCkgJiYgKytpdCA9
PSBlbmQoKTsKK30KKwogI2lmIEFTU0VSVF9FTkFCTEVECiBib29sIFNoYXJlZEJ1ZmZlcjo6aW50
ZXJuYWxseUNvbnNpc3RlbnQoKSBjb25zdAogewpAQCAtMjQ3LDYgKzI1MywxMSBAQCBjb25zdCBj
aGFyKiBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpkYXRhKCkgY29uc3QKICAgICByZXR1cm4g
V1RGOjp2aXNpdCh2aXNpdG9yLCBtX2ltbXV0YWJsZURhdGEpOwogfQogCitib29sIFNoYXJlZEJ1
ZmZlcjo6RGF0YVNlZ21lbnQ6OmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSBjb25zdAoreworICAg
IHJldHVybiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
PihtX2ltbXV0YWJsZURhdGEpOworfQorCiAjaWYgIVVTRShDRikKIHZvaWQgU2hhcmVkQnVmZmVy
OjpoaW50TWVtb3J5Tm90TmVlZGVkU29vbigpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5oCmluZGV4IDNjMjIzYTJmZjM5NjllNjkzNjg2MzJjODA4YTI3Mzk3ZDlm
Mjc0ZDMuLjVlZTZkOThlZmQ0Nzc3NTMwZTYwZWI2MDhjMGI5YWE2ZTc1NGVjYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xNDYsNiArMTQ2LDggQEAgcHVibGlj
OgogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjcmVhdGVOU0RhdGEoKSBjb25zdDsKICNlbmRp
ZgogCisgICAgICAgIGJvb2wgY29udGFpbnNNYXBwZWRGaWxlRGF0YSgpIGNvbnN0OworCiAgICAg
cHJpdmF0ZToKICAgICAgICAgRGF0YVNlZ21lbnQoVmVjdG9yPGNoYXI+JiYgZGF0YSkKICAgICAg
ICAgICAgIDogbV9pbW11dGFibGVEYXRhKFdURk1vdmUoZGF0YSkpIHsgfQpAQCAtMTg1LDYgKzE4
Nyw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBEYXRhU2VnbWVudFZlY3RvciA9IFZlY3RvcjxEYXRh
U2VnbWVudFZlY3RvckVudHJ5LCAxPjsKICAgICBEYXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRl
cmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBtX3NlZ21lbnRzLmJlZ2luKCk7IH0KICAgICBE
YXRhU2VnbWVudFZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWdtZW50cy5lbmQoKTsgfQorICAgIGJvb2wgaGFzT25lU2VnbWVudCgpIGNvbnN0OwogICAgIAog
ICAgIC8vIGJlZ2luIGFuZCBlbmQgdGFrZSBPKDEpIHRpbWUsIHRoaXMgdGFrZXMgTyhsb2coTikp
IHRpbWUuCiAgICAgU2hhcmVkQnVmZmVyRGF0YVZpZXcgZ2V0U29tZURhdGEoc2l6ZV90IHBvc2l0
aW9uKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaAppbmRleCA4NDU0MWQ0NjJhOGI3MGE0YjMzZDNh
MjM2NzBhYmIyNDYwZTU5MmEwLi5hMTYwNDg5MDIzOTRmZTU5NmNjY2RjZjNiMTk4ZmE4MTFhNWNm
MGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oCkBAIC01MCwzNSArNTAsNiBAQCBzdHJ1Y3QgU2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhIHsKICAgICAgICAgU3RyaW5nIG1pbWVUeXBlOwogCiAgICAgICAg
IEltcG9ydGVkU2NyaXB0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgc2NyaXB0LT5j
b3B5KCksIHJlc3BvbnNlVVJMLmlzb2xhdGVkQ29weSgpLCBtaW1lVHlwZS5pc29sYXRlZENvcHko
KSB9OyB9Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgZW5jb2RlciA8PCBz
Y3JpcHQgPDwgcmVzcG9uc2VVUkwgPDwgbWltZVR5cGU7Ci0gICAgICAgIH0KLQotICAgICAgICB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8SW1wb3J0ZWRTY3JpcHQ+IGRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBPcHRpb25hbDxS
ZWZQdHI8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwotICAgICAgICAgICAgZGVjb2RlciA+PiBzY3Jp
cHQ7Ci0gICAgICAgICAgICBpZiAoIXNjcmlwdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBPcHRpb25hbDxVUkw+IHJlc3Bv
bnNlVVJMOwotICAgICAgICAgICAgZGVjb2RlciA+PiByZXNwb25zZVVSTDsKLSAgICAgICAgICAg
IGlmICghcmVzcG9uc2VVUkwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBtaW1lVHlwZTsKLSAg
ICAgICAgICAgIGRlY29kZXIgPj4gbWltZVR5cGU7Ci0gICAgICAgICAgICBpZiAoIW1pbWVUeXBl
KQotICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIHJldHVybiB7ewotICAgICAgICAgICAgICAgIFdURk1vdmUoKnNjcmlwdCksCi0g
ICAgICAgICAgICAgICAgV1RGTW92ZSgqcmVzcG9uc2VVUkwpLAotICAgICAgICAgICAgICAgIFdU
Rk1vdmUoKm1pbWVUeXBlKQotICAgICAgICAgICAgfX07Ci0gICAgICAgIH0KICAgICB9OwogCiAg
ICAgT3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiBqb2JEYXRhSWRlbnRp
ZmllcjsKQEAgLTkzLDg2ICs2NCw5IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
ewogICAgIGJvb2wgbG9hZGVkRnJvbURpc2s7CiAgICAgSGFzaE1hcDxVUkwsIEltcG9ydGVkU2Ny
aXB0PiBzY3JpcHRSZXNvdXJjZU1hcDsKIAotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZv
aWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBz
dGF0aWMgT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBkZWNvZGUoRGVjb2RlciYp
OwotCiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0Owog
fTsKIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKLXsKLSAgICBlbmNvZGVyIDw8IGpv
YkRhdGFJZGVudGlmaWVyIDw8IHJlZ2lzdHJhdGlvbiA8PCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciA8PCBzY3JpcHQgPDwgY29udGVudFNlY3VyaXR5UG9saWN5IDw8IHJlZmVycmVyUG9saWN5IDw8
IHNjcmlwdFVSTCA8PCB3b3JrZXJUeXBlIDw8IGxvYWRlZEZyb21EaXNrOwotICAgIGVuY29kZXIg
PDwgc2NyaXB0UmVzb3VyY2VNYXA7Ci0gICAgZW5jb2RlciA8PCBjZXJ0aWZpY2F0ZUluZm87Ci19
Ci0KLXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGE+IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Ci17Ci0gICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
Pj4gam9iRGF0YUlkZW50aWZpZXI7Ci0gICAgZGVjb2RlciA+PiBqb2JEYXRhSWRlbnRpZmllcjsK
LSAgICBpZiAoIWpvYkRhdGFJZGVudGlmaWVyKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwotCi0gICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+IHJlZ2lzdHJh
dGlvbjsKLSAgICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlvbjsKLSAgICBpZiAoIXJlZ2lzdHJhdGlv
bikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGF1dG8gc2VydmljZVdvcmtl
cklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6ZGVjb2RlKGRlY29kZXIpOwot
ICAgIGlmICghc2VydmljZVdvcmtlcklkZW50aWZpZXIpCi0gICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4gc2NyaXB0OwotICAgIGRl
Y29kZXIgPj4gc2NyaXB0OwotICAgIGlmICghc2NyaXB0KQotICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwotCi0gICAgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzIGNvbnRl
bnRTZWN1cml0eVBvbGljeTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRlbnRTZWN1cml0
eVBvbGljeSkpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBTdHJpbmcgcmVm
ZXJyZXJQb2xpY3k7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZWZlcnJlclBvbGljeSkpCi0g
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBVUkwgc2NyaXB0VVJMOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0VVJMKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICAKLSAgICBXb3JrZXJUeXBlIHdvcmtlclR5cGU7Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZSh3b3JrZXJUeXBlKSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGJv
b2wgbG9hZGVkRnJvbURpc2s7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShsb2FkZWRGcm9tRGlz
aykpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBIYXNoTWFwPFVSTCwgSW1w
b3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFwOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c2NyaXB0UmVzb3VyY2VNYXApKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
T3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0aWZpY2F0ZUluZm87Ci0gICAgZGVjb2RlciA+
PiBjZXJ0aWZpY2F0ZUluZm87Ci0gICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8pCi0gICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgCi0gICAgcmV0dXJuIHt7Ci0gICAgICAgIFdURk1vdmUo
KmpvYkRhdGFJZGVudGlmaWVyKSwKLSAgICAgICAgV1RGTW92ZSgqcmVnaXN0cmF0aW9uKSwKLSAg
ICAgICAgV1RGTW92ZSgqc2VydmljZVdvcmtlcklkZW50aWZpZXIpLAotICAgICAgICBXVEZNb3Zl
KCpzY3JpcHQpLAotICAgICAgICBXVEZNb3ZlKCpjZXJ0aWZpY2F0ZUluZm8pLAotICAgICAgICBX
VEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSksCi0gICAgICAgIFdURk1vdmUocmVmZXJyZXJQ
b2xpY3kpLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdFVSTCksCi0gICAgICAgIHdvcmtlclR5cGUs
Ci0gICAgICAgIGxvYWRlZEZyb21EaXNrLAotICAgICAgICBXVEZNb3ZlKHNjcmlwdFJlc291cmNl
TWFwKQotICAgIH19OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IGEyZTYyOTFl
NGI3MDQ1MDY4N2Q0ZWY5MTAxYzI1YTIwNDc5MGE5YzguLmIwM2YzZGFjYjkzOTMyMzJlMWM4NWMw
NTVkOTllYWZlMzRlMTIyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xNTUsNiArMTU1
LDIyIEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpzZXRTY3JpcHRSZXNvdXJjZShj
b25zdCBVUkwmIHVybCwgU2VydmljZVdvcmtlckNvCiAgICAgbV9jb250ZXh0RGF0YS5zY3JpcHRS
ZXNvdXJjZU1hcC5zZXQodXJsLCBXVEZNb3ZlKHNjcmlwdCkpOwogfQogCit2b2lkIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZTo6ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBzY3JpcHQsIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiBpbXBvcnRl
ZFNjcmlwdHMpCit7CisgICAgLy8gVGhlc2Ugc2NyaXB0cyBzaG91bGQgYmUgaWRlbnRpY2FsIHRv
IHRoZSBvbmVzIHdlIGhhdmUuIEhvd2V2ZXIsIHRoZXNlIGFyZSBtbWFwJ2Qgc28gdXNpbmcgdGhl
bSBoZWxwcyByZWR1Y2UgZGlydHkgbWVtb3J5IHVzYWdlLgorICAgIGlmIChzY3JpcHQpIHsKKyAg
ICAgICAgQVNTRVJUKG1fY29udGV4dERhdGEuc2NyaXB0LmdldCgpID09ICpzY3JpcHQpOworICAg
ICAgICBtX2NvbnRleHREYXRhLnNjcmlwdCA9IHNjcmlwdC5yZWxlYXNlTm9uTnVsbCgpOworICAg
IH0KKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBpbXBvcnRlZFNjcmlwdHMpIHsKKyAgICAgICAgYXV0
byBpdCA9IG1fY29udGV4dERhdGEuc2NyaXB0UmVzb3VyY2VNYXAuZmluZChwYWlyLmtleSk7Cisg
ICAgICAgIGlmIChpdCA9PSBtX2NvbnRleHREYXRhLnNjcmlwdFJlc291cmNlTWFwLmVuZCgpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIEFTU0VSVCgqaXQtPnZhbHVlLnNjcmlwdCA9
PSAqcGFpci52YWx1ZSk7IC8vIERvIGEgbWVtY21wIHRvIG1ha2Ugc3VyZSB0aGUgc2NyaXB0cyBh
cmUgaWRlbnRpY2FsLgorICAgICAgICBpdC0+dmFsdWUuc2NyaXB0ID0gV1RGTW92ZShwYWlyLnZh
bHVlKTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAxZWNmMTE1ZTViNWYw
MzNkNmU0NjhmZmE0NWFmMTgzMGNkYjA1NjZhLi5lZTc1ZWU5ZWQxYTMyOTdjMzMyNjllOTNmZDA2
ZTc4ZWUzYTBjNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC02OCw2ICs2OCw4IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0KiBz
Y3JpcHRSZXNvdXJjZShjb25zdCBVUkwmKSBjb25zdDsKICAgICB2b2lkIHNldFNjcmlwdFJlc291
cmNlKGNvbnN0IFVSTCYsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQm
Jik7CiAKKyAgICB2b2lkIGRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+
JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRT
Y3JpcHRzKTsKKwogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERh
dGEoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHREYXRhOyB9CiAgICAgY29uc3QgQ2VydGlmaWNh
dGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8oKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHREYXRhLmNl
cnRpZmljYXRlSW5mbzsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IDZkYTliYTgzZjEy
Zjc1Mjk2NTZhMWJiM2ViZTgzNjJhOWNmNTBiYmYuLjg4MTNhYjY5YTE2ZDU3NGYwMTUxYWI1OGQx
YmUwMjFhZmI4N2U4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBAIC0xMjAsNiArMTIwLDEy
IEBAIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlY29uCiAgICAgc3RvcFdvcmtlcigqc2VydmljZVdvcmtl
ciwgdGltZW91dCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIFNXQ29u
dGV4dE1hbmFnZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQoreworICAgIGlmIChhdXRv
IHNlcnZpY2VXb3JrZXIgPSBtX3dvcmtlck1hcC5nZXQoaWRlbnRpZmllcikpCisgICAgICAgIHNl
cnZpY2VXb3JrZXItPmRpZFNhdmVTY3JpcHRzVG9EaXNrKFdURk1vdmUoc2NyaXB0KSwgV1RGTW92
ZShpbXBvcnRlZFNjcmlwdHMpKTsKK30KKwogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzdG9wV29y
a2VyKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYgc2VydmljZVdvcmtlciwgU2Vjb25kcyB0aW1l
b3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byBp
ZGVudGlmaWVyID0gc2VydmljZVdvcmtlci5pZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgK
aW5kZXggODI5YjllNDA4MWM2YWJiNTRlZDQwYTE5ZGE4N2EwNzhhNzdjMWYxMS4uZGRiZWI1ODU0
YWMyMTljMTk4YzZiNjdkMTNmYTU4ZTg5OTY4YmI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAt
OTAsNiArOTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaXJlSW5zdGFs
bEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHRlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgU2Vj
b25kcyB0aW1lb3V0LCBGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+
JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIHZvaWQgZm9yRWFjaFNlcnZpY2VXb3JrZXJUaHJl
YWQoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSYpPiYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA5MGQ3ZmY2NTM5
ZTJjYzE1OWNlMjJiZDQ5NmNmODcwNWJjMjE0ZGRhLi5iNTc0ODM1ODRjMDUxOTk4OTljZjY3NTVl
OTdjOTNiZmIwODZlMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAK
QEAgLTI4MSw2ICsyODEsMTMgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVB
Y3RpdmF0ZUV2ZW50KCkKICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHk6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBI
YXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKQorewor
ICAgIHRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbc2NyaXB0ID0gV1RGTW92ZShzY3JpcHQp
LCBpbXBvcnRlZFNjcmlwdHMgPSBXVEZNb3ZlKGltcG9ydGVkU2NyaXB0cyldKGF1dG8mIGNvbnRl
eHQpIG11dGFibGUgeworICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpLmRpZFNhdmVTY3JpcHRzVG9EaXNrKFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShp
bXBvcnRlZFNjcmlwdHMpKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuaAppbmRleCA3ZWM3YjhlNGVmMWQ4YWExYjVjNWNmZDk1MTczMDc5NTg1YjhiZTg1
Li44NWQ4Y2RlNzYyMWI4N2I4MjM5NmRkOGIyMmM1MjI1YWI5YTQ3YTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuaApAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBT
ZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYpOwogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudCgp
OwogICAgIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoKTsKKyAgICB2b2lkIGRpZFNhdmVTY3JpcHRz
VG9EaXNrKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgc2NyaXB0LCBIYXNoTWFwPFVSTCwgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4+JiYgaW1wb3J0ZWRTY3JpcHRzKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0TGFzdE5hdmlnYXRpb25XYXNBcHBCb3VuZChib29sKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggOWJlMzQ0NDkxZjA2MTNmYWUxNDBlNzk4NTFi
NzEwYTNiMzJiMmIyNS4uZTE4YTJkMWJiOTEyOTlmYzYwZjBjZTM2M2RhMGNjMmFiNTRhNWVjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC01NCw2ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGVXb3Jr
ZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2F2
ZVNjcmlwdHNUb0Rpc2soU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFNoYXJlZEJ1ZmZlciYgc2Ny
aXB0LCBjb25zdCBIYXNoTWFwPFVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiBpbXBvcnRlZFNj
cmlwdHMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBs
ZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdv
cmtlckNsaWVudERhdGE+JiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25z
dCBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JikgPSAwOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CmluZGV4IDYxM2JiNzJjNTg4ZDhhMTcwYjFlNGJiMmI3OTBjMDMwMGJlMWY0NGUuLmY5MGI4ZjI3
OTIwYzQ5MDMxYTE3YjQ4ZjZhMzM5YTU5MWIxNDJjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC0y
NDAsNyArMjQwLDExIEBAIHZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNldFNjcmlwdFJlc291cmNlKFVS
TCYmIHVybCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvCiAKIHZvaWQgU1dTZXJ2ZXJX
b3JrZXI6OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWFpblNjcmlw
dCwgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIGltcG9ydGVkU2NyaXB0cykK
IHsKLSAgICAvLyBUaGUgc2NyaXB0cyB3ZXJlIHNhdmVkIHRvIGRpc2ssIHJlcGxhY2Ugb3VyIHNj
cmlwdHMgd2l0aCB0aGUgbW1hcCdkIHZlcnNpb24gdG8gc2F2ZSBtZW1vcnkuCisgICAgLy8gU2Vu
ZCBtbWFwJ2QgdmVyc2lvbiBvZiB0aGUgc2NyaXB0cyB0byB0aGUgU2VydmljZVdvcmtlciBwcm9j
ZXNzIHNvIHdlIGNhbiBzYXZlIGRpcnR5IG1lbW9yeS4KKyAgICBpZiAoYXV0byogY29udGV4dENv
bm5lY3Rpb24gPSB0aGlzLT5jb250ZXh0Q29ubmVjdGlvbigpKQorICAgICAgICBjb250ZXh0Q29u
bmVjdGlvbi0+ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soaWRlbnRpZmllcigpLCBtYWluU2NyaXB0LCBp
bXBvcnRlZFNjcmlwdHMpOworCisgICAgLy8gVGhlIHNjcmlwdHMgd2VyZSBzYXZlZCB0byBkaXNr
LCByZXBsYWNlIG91ciBzY3JpcHRzIHdpdGggdGhlIG1tYXAnZCB2ZXJzaW9uIHRvIHNhdmUgZGly
dHkgbWVtb3J5LgogICAgIEFTU0VSVChtYWluU2NyaXB0LmdldCgpID09IG1fc2NyaXB0LmdldCgp
KTsgLy8gRG8gYSBtZW1jbXAgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHRzIGFyZSBpZGVudGljYWwu
CiAgICAgbV9zY3JpcHQgPSBXVEZNb3ZlKG1haW5TY3JpcHQpOwogICAgIGZvciAoYXV0byYgcGFp
ciA6IGltcG9ydGVkU2NyaXB0cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA5OGQ5MmQxYjVjNTU0NDJjZTYyYmZiNmJkNTVm
ZWY1YWNiZTIzMWI1Li41NTM0YjhkOWI0NGZhOWRjNjA5ZDlmNGM3YjQzYjUzMWQxNTA5ZmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cApAQCAtMTA3LDYgKzEwNywyNSBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bjo6dGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcgogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpUZXJtaW5hdGVXb3JrZXIo
c2VydmljZVdvcmtlcklkZW50aWZpZXIpKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OmRpZFNhdmVTY3JpcHRzVG9EaXNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImIHNjcmlwdCwg
Y29uc3QgSGFzaE1hcDxVUkwsIFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYgaW1wb3J0ZWRTY3JpcHRz
KQoreworI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGF1dG8gc2NyaXB0SGFuZGxlID0gSVBDOjp0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJj
ZUhhbmRsZShzY3JpcHQpOworICAgIEhhc2hNYXA8VVJMLCBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlPiBpbXBvcnRlZFNjcmlwdEhhbmRsZXM7CisgICAgZm9yIChhdXRvJiBwYWlyIDogaW1wb3J0
ZWRTY3JpcHRzKSB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gSVBDOjp0cnlDb252ZXJ0VG9TaGFy
ZWFibGVSZXNvdXJjZUhhbmRsZSgqcGFpci52YWx1ZSk7CisgICAgICAgIGlmIChoYW5kbGUuaXNO
dWxsKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaW1wb3J0ZWRTY3JpcHRIYW5k
bGVzLmFkZChwYWlyLmtleSwgV1RGTW92ZShoYW5kbGUpKTsKKyAgICB9CisgICAgaWYgKCFzY3Jp
cHRIYW5kbGUuaXNOdWxsKCkgfHwgIWltcG9ydGVkU2NyaXB0SGFuZGxlcy5pc0VtcHR5KCkpCisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpEaWRT
YXZlU2NyaXB0c1RvRGlzayB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBzY3JpcHRIYW5kbGUs
IGltcG9ydGVkU2NyaXB0SGFuZGxlcyB9KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNjcmlw
dCk7CisgICAgVU5VU0VEX1BBUkFNKGltcG9ydGVkU2NyaXB0cyk7CisjZW5kaWYKK30KKwogdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25z
aXZlbmVzcygpCiB7CiAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVy
bWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyB7IHdlYlByb2Nlc3NJZGVu
dGlmaWVyKCkgfSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmgKaW5kZXggYjNkYmY0Y2MxMjMyNjFkNjU1OWUyOWQ2MmQ3MDMzMjIzMjcwZjIy
Yy4uNjhmNzkyNTM2N2QyNWZjOTNlNzU4ZjRiMDA3ZjU4MDQzYmM3MTIyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtODgsNiArODgs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQg
ZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlciYgc2NyaXB0LCBjb25zdCBIYXNoTWFwPFVSTCwgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBpbXBvcnRlZFNjcmlwdHMpIGZpbmFsOwogICAgIHZvaWQg
ZmluZENsaWVudEJ5SWRlbnRpZmllckNvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiwgYm9v
bCBoYXNTZWN1cml0eUVycm9yKSBmaW5hbDsKICAgICB2b2lkIG1hdGNoQWxsQ29tcGxldGVkKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudERhdGE+JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZVJlc291cmNlLmNwcAppbmRleCA2Y2VmODdmM2M0NjQxNzlkZjc2NjJmZGMzOTkyM2EwNjEzZTIx
ZDgwLi5hNDczYWJmMDk4YzU2YTE0ZmZlNWM4MmQyOTY0ODA3ODQyZTAxNzQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC0zNCw5ICszNCw3IEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1TaGFyZWFibGVS
ZXNvdXJjZTo6SGFuZGxlOjpIYW5kbGUoKQotewotfQorU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZTo6SGFuZGxlKCkgPSBkZWZhdWx0OwogCiB2b2lkIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuaAppbmRleCA3ODZjOTA1NGE5ZTZjZTQyOTJmN2Q3Y2FmMjFk
MGM5ZjNlMTBiZjY0Li41Mzc0ZDdiOTZjZjIyMTlhNzY2YmI3MGFiNjBhYzg4NzM2NmMxZjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmgKQEAgLTYwLDggKzYwLDgg
QEAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVhYmxlUmVzb3VyY2U7CiAKICAg
ICAgICAgbXV0YWJsZSBTaGFyZWRNZW1vcnk6OkhhbmRsZSBtX2hhbmRsZTsKLSAgICAgICAgdW5z
aWduZWQgbV9vZmZzZXQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKKyAgICAgICAgdW5zaWdu
ZWQgbV9vZmZzZXQgeyAwIH07CisgICAgICAgIHVuc2lnbmVkIG1fc2l6ZSB7IDAgfTsKICAgICB9
OwogCiAgICAgLy8gQ3JlYXRlIGEgc2hhcmVhYmxlIHJlc291cmNlIHRoYXQgdXNlcyBtYWxsb2Nl
ZCBtZW1vcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAppbmRleCBmNmMxNGI1YzM3ZWUwYzIyOGZhNTg2MjUyNTlmZTg3MDYwODk4OWEyLi4xMzc0
ZTE1OGMyZWUwZjkwZmJkZTJiZDdkMTg4YzRjMDUyMjk0NmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTI4MjgsNiArMjgyOCwxNDMg
QEAgYm9vbCBBcmd1bWVudENvZGVyPFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXI+Ojpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgU2UKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CisK
K3N0YXRpYyB2b2lkIGVuY29kZVNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YVNjcmlwdChFbmNvZGVy
JiBlbmNvZGVyLCBTaGFyZWRCdWZmZXImIHNjcmlwdCkKK3sKKyNpZiBFTkFCTEUoU0hBUkVBQkxF
X1JFU09VUkNFKSAmJiBQTEFURk9STShDT0NPQSkKKyAgICBhdXRvIGhhbmRsZSA9IHRyeUNvbnZl
cnRUb1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKHNjcmlwdCk7CisgICAgYm9vbCBpc1NoYXJlYWJs
ZVJlc291cmNlSGFuZGxlID0gIWhhbmRsZS5pc051bGwoKTsKKyAgICBlbmNvZGVyIDw8IGlzU2hh
cmVhYmxlUmVzb3VyY2VIYW5kbGU7CisgICAgaWYgKGlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUp
IHsKKyAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisj
ZW5kaWYKKyAgICBlbmNvZGVyIDw8IG1ha2VSZWYoc2NyaXB0KTsKK30KKworc3RhdGljIE9wdGlv
bmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBkZWNvZGVTZXJ2aWNlV29ya2VyQ29udGV4dERhdGFTY3Jp
cHQoRGVjb2RlciYgZGVjb2RlcikKK3sKKyNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKSAm
JiBQTEFURk9STShDT0NPQSkKKyAgICBPcHRpb25hbDxib29sPiBpc1NoYXJlYWJsZVJlc291cmNl
SGFuZGxlOworICAgIGRlY29kZXIgPj4gaXNTaGFyZWFibGVSZXNvdXJjZUhhbmRsZTsKKyAgICBp
ZiAoIWlzU2hhcmVhYmxlUmVzb3VyY2VIYW5kbGUpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgaWYgKCppc1NoYXJlYWJsZVJlc291cmNlSGFuZGxlKSB7CisgICAgICAgIFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGUgaGFuZGxlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGhhbmRsZSkgfHwgaGFuZGxlLmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICAgICAgYXV0byBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVy
KCk7CisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpOworICAgIH0KKyNlbmRp
ZgorICAgIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiBzY3JpcHQ7CisgICAgZGVjb2RlciA+
PiBzY3JpcHQ7CisgICAgcmV0dXJuIHNjcmlwdDsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+OjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYg
aW1wb3J0ZWRTY3JpcHQpCit7CisgICAgZW5jb2RlU2VydmljZVdvcmtlckNvbnRleHREYXRhU2Ny
aXB0KGVuY29kZXIsICppbXBvcnRlZFNjcmlwdC5zY3JpcHQpOworICAgIGVuY29kZXIgPDwgaW1w
b3J0ZWRTY3JpcHQucmVzcG9uc2VVUkwgPDwgaW1wb3J0ZWRTY3JpcHQubWltZVR5cGU7Cit9CisK
K09wdGlvbmFsPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IEFyZ3Vt
ZW50Q29kZXI8U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD46OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGF1dG8gc2NyaXB0ID0gZGVjb2RlU2VydmljZVdv
cmtlckNvbnRleHREYXRhU2NyaXB0KGRlY29kZXIpOworICAgIGlmICghc2NyaXB0KQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8VVJMPiByZXNwb25zZVVSTDsK
KyAgICBkZWNvZGVyID4+IHJlc3BvbnNlVVJMOworICAgIGlmICghcmVzcG9uc2VVUkwpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxTdHJpbmc+IG1pbWVUeXBl
OworICAgIGRlY29kZXIgPj4gbWltZVR5cGU7CisgICAgaWYgKCFtaW1lVHlwZSkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiB7eworICAgICAgICBXVEZNb3ZlKCpz
Y3JpcHQpLAorICAgICAgICBXVEZNb3ZlKCpyZXNwb25zZVVSTCksCisgICAgICAgIFdURk1vdmUo
Km1pbWVUeXBlKQorICAgIH19OworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8U2VydmljZVdvcmtl
ckNvbnRleHREYXRhPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJDb250ZXh0RGF0YSYgZGF0YSkKK3sKKyAgICBlbmNvZGVTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGFTY3JpcHQoZW5jb2RlciwgZGF0YS5zY3JpcHQpOworICAgIGVuY29kZXIgPDwgZGF0YS5qb2JE
YXRhSWRlbnRpZmllciA8PCBkYXRhLnJlZ2lzdHJhdGlvbiA8PCBkYXRhLnNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIDw8IGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5IDw8IGRhdGEucmVmZXJyZXJQ
b2xpY3kKKyAgICAgICAgPDwgZGF0YS5zY3JpcHRVUkwgPDwgZGF0YS53b3JrZXJUeXBlIDw8IGRh
dGEubG9hZGVkRnJvbURpc2sgPDwgZGF0YS5zY3JpcHRSZXNvdXJjZU1hcCA8PCBkYXRhLmNlcnRp
ZmljYXRlSW5mbzsKK30KKworT3B0aW9uYWw8U2VydmljZVdvcmtlckNvbnRleHREYXRhPiBBcmd1
bWVudENvZGVyPFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIGF1dG8gc2NyaXB0ID0gZGVjb2RlU2VydmljZVdvcmtlckNvbnRleHREYXRh
U2NyaXB0KGRlY29kZXIpOworICAgIGlmICghc2NyaXB0KQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgT3B0aW9uYWw8T3B0aW9uYWw8U2VydmljZVdvcmtlckpvYkRhdGFJZGVu
dGlmaWVyPj4gam9iRGF0YUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBqb2JEYXRhSWRlbnRp
ZmllcjsKKyAgICBpZiAoIWpvYkRhdGFJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+IHJl
Z2lzdHJhdGlvbjsKKyAgICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlvbjsKKyAgICBpZiAoIXJlZ2lz
dHJhdGlvbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1dG8gc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgPSBTZXJ2aWNlV29ya2VySWRlbnRpZmllcjo6ZGVjb2RlKGRlY29k
ZXIpOworICAgIGlmICghc2VydmljZVdvcmtlcklkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisKKyAgICBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMg
Y29udGVudFNlY3VyaXR5UG9saWN5OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29udGVudFNl
Y3VyaXR5UG9saWN5KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFN0cmlu
ZyByZWZlcnJlclBvbGljeTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlZmVycmVyUG9saWN5
KSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFVSTCBzY3JpcHRVUkw7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRVUkwpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgV29ya2VyVHlwZSB3b3JrZXJUeXBlOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUod29ya2VyVHlwZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBi
b29sIGxvYWRlZEZyb21EaXNrOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUobG9hZGVkRnJvbURp
c2spKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgSGFzaE1hcDxVUkwsIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHNjcmlwdFJlc291cmNlTWFw
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2NyaXB0UmVzb3VyY2VNYXApKQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgT3B0aW9uYWw8Q2VydGlmaWNhdGVJbmZvPiBjZXJ0
aWZpY2F0ZUluZm87CisgICAgZGVjb2RlciA+PiBjZXJ0aWZpY2F0ZUluZm87CisgICAgaWYgKCFj
ZXJ0aWZpY2F0ZUluZm8pCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4ge3sKKyAgICAgICAgV1RGTW92ZSgqam9iRGF0YUlkZW50aWZpZXIpLAorICAgICAgICBXVEZN
b3ZlKCpyZWdpc3RyYXRpb24pLAorICAgICAgICBXVEZNb3ZlKCpzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciksCisgICAgICAgIFdURk1vdmUoKnNjcmlwdCksCisgICAgICAgIFdURk1vdmUoKmNlcnRp
ZmljYXRlSW5mbyksCisgICAgICAgIFdURk1vdmUoY29udGVudFNlY3VyaXR5UG9saWN5KSwKKyAg
ICAgICAgV1RGTW92ZShyZWZlcnJlclBvbGljeSksCisgICAgICAgIFdURk1vdmUoc2NyaXB0VVJM
KSwKKyAgICAgICAgd29ya2VyVHlwZSwKKyAgICAgICAgbG9hZGVkRnJvbURpc2ssCisgICAgICAg
IFdURk1vdmUoc2NyaXB0UmVzb3VyY2VNYXApCisgICAgfX07Cit9CisKICNlbmRpZgogCiAjaWYg
RU5BQkxFKENTU19TQ1JPTExfU05BUCkKQEAgLTMwNjYsNiArMzIwMywzMCBAQCBPcHRpb25hbDxS
ZWY8U2hhcmVkQnVmZmVyPj4gQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pj46OmRlY29kZShEZQogICAgIHJldHVybiBidWZmZXIucmVsZWFzZU5vbk51bGwoKTsKIH0KIAor
I2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBMQVRGT1JNKENPQ09BKQorU2hhcmVh
YmxlUmVzb3VyY2U6OkhhbmRsZSB0cnlDb252ZXJ0VG9TaGFyZWFibGVSZXNvdXJjZUhhbmRsZShT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKK3sKKyAgICBpZiAoIWJ1ZmZlci5oYXNPbmVTZWdtZW50KCkp
CisgICAgICAgIHJldHVybiBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlIHsgfTsKKworICAgIGF1
dG8mIHNlZ21lbnQgPSBidWZmZXIuYmVnaW4oKS0+c2VnbWVudDsKKyAgICBpZiAoIXNlZ21lbnQt
PmNvbnRhaW5zTWFwcGVkRmlsZURhdGEoKSkKKyAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGUgeyB9OworCisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6
OndyYXBNYXAoY29uc3RfY2FzdDxjaGFyKj4oc2VnbWVudC0+ZGF0YSgpKSwgc2VnbWVudC0+c2l6
ZSgpLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKKyAgICBpZiAoIXNoYXJl
ZE1lbW9yeSkKKyAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgeyB9Owor
CisgICAgYXV0byBzaGFyZWFibGVSZXNvdXJjZSA9IFNoYXJlYWJsZVJlc291cmNlOjpjcmVhdGUo
c2hhcmVkTWVtb3J5LnJlbGVhc2VOb25OdWxsKCksIDAsIHNlZ21lbnQtPnNpemUoKSk7CisgICAg
aWYgKCFzaGFyZWFibGVSZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuIFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGUgeyB9OworCisgICAgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBzaGFyZWFibGVS
ZXNvdXJjZUhhbmRsZTsKKyAgICBzaGFyZWFibGVSZXNvdXJjZS0+Y3JlYXRlSGFuZGxlKHNoYXJl
YWJsZVJlc291cmNlSGFuZGxlKTsKKyAgICByZXR1cm4gc2hhcmVhYmxlUmVzb3VyY2VIYW5kbGU7
Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCiB2b2lkIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZSYg
bWVzc2FnZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgKaW5kZXggNDk0YmQ5NTVkODUzODg0MmQwMDM1MDBlMTRmZTExY2NhYmQyYjFjMC4uZjFiYTAw
Njc2NzM5NGZjOTUyZTdmYmU1ZGQ2OGZiMDM0NmViYjk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlICJTaGFyZWFibGVS
ZXNvdXJjZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0b3BsYXlFdmVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ29sb3JTcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQuaD4KQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlcmlu
Z01vZGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlcnZpY2VXb3JrZXJUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dvcmtlclR5cGUuaD4KQEAgLTczNSw2ICs3
MzcsMTYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyT3JDbGllbnRJZGVudGlmaWVyPiB7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlck9yQ2xpZW50SWRl
bnRpZmllciYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOworICAgIHN0
YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE+IGRlY29kZShE
ZWNvZGVyJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+IHsKKyAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YTo6SW1wb3J0ZWRTY3JpcHQmKTsKKyAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdD4gZGVjb2RlKERlY29kZXImKTsK
K307CisKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKQEAgLTc5Niw2ICs4
MDgsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPj4gewogICAgIHN0YXRpYyBPcHRpb25hbDxSZWY8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAKKyNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09V
UkNFKSAmJiBQTEFURk9STShDT0NPQSkKKy8vIElmIHRoZSBTaGFyZWRCdWZmZXIgY29udGFpbnMg
YSBzaW5nbGUgc2VnbWVudCBhbmQgdGhlIHNlZ21lbnQgaXMgTWFwcGVkRmlsZURhdGEsIHRoZW4g
Y29udmVydCBpdCBpbnRvCisvLyBhIFNoYXJlYWJsZVJlc291cmNlIGhhbmRsZSBzbyB0aGF0IGl0
IGNhbiBiZSBzZW50IG92ZXIgSVBDIGFuZCBzaGFyZWQgd2l0aCBhbm90aGVyIHByb2Nlc3MuCitX
ZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUgdHJ5Q29udmVydFRvU2hhcmVhYmxlUmVz
b3VyY2VIYW5kbGUoV2ViQ29yZTo6U2hhcmVkQnVmZmVyJik7CisjZW5kaWYKKwogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkNETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggOTBhMmQ4Y2ZjNjBmZGFh
NTdjM2E3ODkwOTI0YTRiODVmZTFkMzE3NC4uYTRmMzQyYjFlZWVmZDUwOGE4Y2E3NmI0NmMwZTYz
OWMxZTBiOGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMjYy
LDYgKzI2MiwyNiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp0ZXJtaW5h
dGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbgogICAgIFNXQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLnRlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVyLCBTV0NvbnRleHRNYW5h
Z2VyOjp3b3JrZXJUZXJtaW5hdGlvblRpbWVvdXQsIG51bGxwdHIpOwogfQogCisjaWYgRU5BQkxF
KFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCit2b2lkIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRTYXZlU2NyaXB0c1RvRGlzayhXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFu
ZGxlJiBzY3JpcHRIYW5kbGUsIGNvbnN0IEhhc2hNYXA8VVJMLCBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlPiYgaW1wb3J0ZWRTY3JpcHRIYW5kbGVzKQoreworICAgIGF1dG8gdG9TaGFyZWRCdWZm
ZXIgPSBbXShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUpIC0+IFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHsKKyAgICAgICAgaWYgKGhhbmRsZS5pc051bGwoKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IGhhbmRsZS50
cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKKyAgICAgICAgaWYgKCFzaGFyZWRCdWZmZXIpCisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTZXJ2aWNlV29ya2VyLCAiV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246OmRpZFNhdmVTY3JpcHRzVG9EaXNrOiBGYWlsZWQgdG8gd3JhcCBTaGFy
ZWFibGVSZXNvdXJjZSBoYW5kbGUgaW4gYSBTaGFyZWRCdWZmZXIiKTsKKyAgICAgICAgcmV0dXJu
IHNoYXJlZEJ1ZmZlcjsKKyAgICB9OworICAgIEhhc2hNYXA8VVJMLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPj4gaW1wb3J0ZWRTY3JpcHRzOworICAgIGZvciAoYXV0byYgcGFpciA6IGltcG9ydGVkU2Ny
aXB0SGFuZGxlcykgeworICAgICAgICBpZiAoYXV0byBzaGFyZWRCdWZmZXIgPSB0b1NoYXJlZEJ1
ZmZlcihwYWlyLnZhbHVlKSkKKyAgICAgICAgICAgIGltcG9ydGVkU2NyaXB0cy5hZGQocGFpci5r
ZXksIFdURk1vdmUoc2hhcmVkQnVmZmVyKSk7CisgICAgfQorICAgIFNXQ29udGV4dE1hbmFnZXI6
OnNpbmdsZXRvbigpLmRpZFNhdmVTY3JpcHRzVG9EaXNrKGlkZW50aWZpZXIsIHRvU2hhcmVkQnVm
ZmVyKHNjcmlwdEhhbmRsZSksIFdURk1vdmUoaW1wb3J0ZWRTY3JpcHRzKSk7Cit9CisjZW5kaWYK
Kwogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3Rp
bmF0aW9uSWRlbnRpZmllciwgY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2Us
IFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlT3JpZ2luKQogewogICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6UG9zdE1lc3NhZ2VUb1Nl
cnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VJ
ZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oCmluZGV4IDljYTRjMWYxNzI0OTRlYTRjOWMyNjZjMWNjMDVmZDhiZTI0ZGE3ZWIuLjExZjll
MDlmZDMzZDU5MGZmMTM3M2I2MmYzM2JjMGNkMGU5NjlhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291
cmNlLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbk1lc3NhZ2VzUmVwbGllcy5oIgpAQCAtOTAsNiArOTEsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgZmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CiAgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7CiAgICAgdm9pZCB0ZXJtaW5hdGVXb3JrZXIoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIpOworI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpICYmIFBM
QVRGT1JNKENPQ09BKQorICAgIHZvaWQgZGlkU2F2ZVNjcmlwdHNUb0Rpc2soV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIHNj
cmlwdCwgY29uc3QgSGFzaE1hcDxVUkwsIFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU+JiBpbXBv
cnRlZFNjcmlwdHMpOworI2VuZGlmCiAgICAgdm9pZCBmaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29t
cGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4mJiwgYm9vbCBoYXNTZWN1cml0eUVycm9yKTsKICAgICB2b2lk
IG1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IG1hdGNoQWxsUmVxdWVzdElkZW50aWZpZXIsIFZl
Y3RvcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik7CiAgICAgdm9pZCBzZXRV
c2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggNTI4NGNkNGE1ZmZjYTU3NjI0OThhYmEzMmQx
MTc3Mzg2ZDY0M2JmZS4uYWU1NzE2YjlhZjIxNGVjOTBmZDg5MzcwZmNmZGU5YmVhOGVkYWQwYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTMxLDYgKzMxLDkgQEAgbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24g
Tm90UmVmQ291bnRlZCB7CiAgICAgRmlyZUluc3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIEZpcmVBY3RpdmF0ZUV2ZW50KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgVGVybWluYXRlV29ya2Vy
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisjaWYgRU5BQkxF
KFNIQVJFQUJMRV9SRVNPVVJDRSkgJiYgUExBVEZPUk0oQ09DT0EpCisgICAgRGlkU2F2ZVNjcmlw
dHNUb0Rpc2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIFdlYktpdDo6U2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSBzY3JpcHQsIEhhc2hN
YXA8VVJMLCBXZWJLaXQ6OlNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGU+IGltcG9ydGVkU2NyaXB0
cyk7CisjZW5kaWYKICAgICBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ29tcGxldGVkKHVpbnQ2NF90
IGNsaWVudElkUmVxdWVzdElkZW50aWZpZXIsIE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiBkYXRhLCBib29sIGhhc1NlY3VyaXR5RXJyb3IpCiAgICAgTWF0Y2hBbGxD
b21wbGV0ZWQodWludDY0X3QgbWF0Y2hBbGxSZXF1ZXN0SWRlbnRpZmllciwgVmVjdG9yPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBjbGllbnRzRGF0YSkKICAgICBTZXRVc2VyQWdl
bnQoU3RyaW5nIHVzZXJBZ2VudCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>