<?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>180215</bug_id>
          
          <creation_ts>2017-11-30 12:43:51 -0800</creation_ts>
          <short_desc>Support serviceWorkerRegistration.update() inside service workers</short_desc>
          <delta_ts>2021-04-07 08:52:58 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>180255</dependson>
    
    <dependson>180263</dependson>
          <blocked>180326</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>ggaren</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1376460</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-30 12:43:51 -0800</bug_when>
    <thetext>Support serviceWorkerRegistration.update() inside service workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377220</commentid>
    <comment_count>1</comment_count>
      <attachid>328206</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-01 20:05:39 -0800</bug_when>
    <thetext>Created attachment 328206
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377360</commentid>
    <comment_count>2</comment_count>
      <attachid>328252</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-02 13:52:57 -0800</bug_when>
    <thetext>Created attachment 328252
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377384</commentid>
    <comment_count>3</comment_count>
      <attachid>328261</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-02 15:46:56 -0800</bug_when>
    <thetext>Created attachment 328261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377403</commentid>
    <comment_count>4</comment_count>
      <attachid>328261</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-02 17:18:51 -0800</bug_when>
    <thetext>Comment on attachment 328261
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        thread safe by hoping to the right thread when necessary. In

hopping and hoping, not the same thing ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377406</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-02 17:35:52 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 328261 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=328261&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        thread safe by hoping to the right thread when necessary. In
&gt; 
&gt; hopping and hoping, not the same thing ;)

lol, indeed :) Will fix before landing. Thanks for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377414</commentid>
    <comment_count>6</comment_count>
      <attachid>328273</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-02 18:31:52 -0800</bug_when>
    <thetext>Created attachment 328273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377415</commentid>
    <comment_count>7</comment_count>
      <attachid>328273</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-02 18:32:47 -0800</bug_when>
    <thetext>Comment on attachment 328273
Patch

Clearing flags on attachment: 328273

Committed r225455: &lt;https://trac.webkit.org/changeset/225455&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377416</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-12-02 18:32:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377417</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-02 18:33:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/35816764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747765</commentid>
    <comment_count>10</comment_count>
      <attachid>328273</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-04-06 21:14:52 -0700</bug_when>
    <thetext>Comment on attachment 328273
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerContainer.cpp:320
&gt; +#ifndef NDEBUG
&gt; +    ASSERT(m_creationThread == currentThread());
&gt; +#endif

Why are these all wrapped in #ifndef NDEBUG ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747904</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-07 08:52:58 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #10)
&gt; Comment on attachment 328273 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=328273&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerContainer.cpp:320
&gt; &gt; +#ifndef NDEBUG
&gt; &gt; +    ASSERT(m_creationThread == currentThread());
&gt; &gt; +#endif
&gt; 
&gt; Why are these all wrapped in #ifndef NDEBUG ?

I don&apos;t see a good reason. This is a bit old but I have no idea why I did that. Anyway, I&apos;ll fix it shortly via Bug 224285.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328206</attachid>
            <date>2017-12-01 20:05:39 -0800</date>
            <delta_ts>2017-12-02 13:52:57 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>update_within_sw_simpler_wip.patch</filename>
            <type>text/plain</type>
            <size>23201</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDVkZDNhZmNhNjJmLi42ZjliMzNjYjFiNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0xNDcsNyArMTQ3LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZWN1cmUtY29udGV4dHMvc2hhcmVkLXdvcmtlci1zZWN1cmUtZmlyc3QuaHR0cHMKIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Fib3J0L2dlbmVyYWwtc2Vy
dmljZXdvcmtlci5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUvZXh0ZW5kYWJsZS1tZXNzYWdlLWV2ZW50Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS91bnJlZ2lzdGVyLmh0dHBzLmh0bWwgWyBTa2lwIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS91cGRhdGUuaHR0cHMuaHRtbCBbIFNraXAg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvY2xpZW50cy1tYXRjaGFsbC1vbi1ldmFsdWF0aW9uLmh0dHBzLmh0bWwgWyBTa2lw
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL2RldGFjaGVkLWNvbnRleHQuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZXh0
ZW5kYWJsZS1ldmVudC13YWl0dW50aWwuaHR0cHMuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlL3VwZGF0ZS5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUv
dXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA4NjExOTZkNDhhZi4uNWZjOTNmZGQ4MmEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS91
cGRhdGUuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL1NlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS91cGRhdGUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNCBA
QAogCiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VU
IFVwZGF0ZSBhIHJlZ2lzdHJhdGlvbiBvbiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgVGVzdCB0
aW1lZCBvdXQKK0ZBSUwgVXBkYXRlIGEgcmVnaXN0cmF0aW9uIG9uIFNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSBhc3NlcnRfZXF1YWxzOiBldmVudHMgc2VlbiBieSB0aGUgd29ya2VyIGV4cGVjdGVk
ICJ1cGRhdGVmb3VuZCxhY3RpdmF0ZSxmZXRjaCxtZXNzYWdlLHVwZGF0ZWZvdW5kLGZldGNoIiBi
dXQgZ290ICJ1cGRhdGVmb3VuZCxhY3RpdmF0ZSxmZXRjaCIKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBlYzUw
ZjY1MjI0Zi4uYjNmNTZjNzRmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC00Nyw2ICs0Nyw4IEBAIFNXQ2xp
ZW50Q29ubmVjdGlvbjo6flNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogdm9pZCBT
V0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHsK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Nj
aGVkdWxlZEpvYnMuYWRkKGpvYi5pZGVudGlmaWVyKCksICZqb2IpOwogICAgIEFTU0VSVF9VTlVT
RUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKQEAgLTU1LDYgKzU3LDcgQEAg
dm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpv
YikKIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2Vy
dmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NjaGVkdWxlZEpvYnMuZ2V0KGpvYi5pZGVu
dGlmaWVyKCkpID09ICZqb2IpOwogCiAgICAgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7
IGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpLCBz
Y3JpcHQsIHsgfSB9KTsKQEAgLTYyLDYgKzY1LDcgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246
OmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBTdHIK
IAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VX
b3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2JzLmdldChqb2IuaWRl
bnRpZmllcigpKSA9PSAmam9iKTsKIAogICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIo
eyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKSwg
eyB9LCBlcnJvciB9KTsKQEAgLTY5LDQwICs3Myw1MyBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBSZXNv
dQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6am9iUmVqZWN0ZWRJblNlcnZlcihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBF
eGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKICAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlm
aWVyLmpvYklkZW50aWZpZXIpOwogICAgIGlmICgham9iKSB7CiAgICAgICAgIExPR19FUlJPUigi
Sm9iICVzIHJlamVjdGVkIGZyb20gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihleGNlcHRpb25EYXRhLnRv
RXhjZXB0aW9uKCkpOworICAgIHBvc3RUYXNrVG8oam9iLT5jb250ZXh0SWRlbnRpZmllcigpLCBb
am9iLCBleGNlcHRpb25EYXRhID0gZXhjZXB0aW9uRGF0YS5pc29sYXRlZENvcHkoKV0geworICAg
ICAgICBqb2ItPmZhaWxlZFdpdGhFeGNlcHRpb24oZXhjZXB0aW9uRGF0YS50b0V4Y2VwdGlvbigp
KTsKKyAgICB9KTsKIH0KIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlvbkpv
YlJlc29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBq
b2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3Ry
YXRpb25EYXRhLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgc2hvdWxkTm90aWZ5V2hlblJlc29s
dmVkKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBhdXRvIGpvYiA9IG1f
c2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50aWZpZXIpOwogICAg
IGlmICgham9iKSB7CiAgICAgICAgIExPR19FUlJPUigiSm9iICVzIHJlc29sdmVkIGluIHNlcnZl
ciwgYnV0IHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGtleSA9
IHJlZ2lzdHJhdGlvbkRhdGEua2V5OwotICAgIGpvYi0+cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9u
KFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7Cisg
ICAgcG9zdFRhc2tUbyhqb2ItPmNvbnRleHRJZGVudGlmaWVyKCksIFtqb2IsIHJlZ2lzdHJhdGlv
bkRhdGEgPSByZWdpc3RyYXRpb25EYXRhLmlzb2xhdGVkQ29weSgpLCBzaG91bGROb3RpZnlXaGVu
UmVzb2x2ZWRdKCkgbXV0YWJsZSB7CisgICAgICAgIGpvYi0+cmVzb2x2ZWRXaXRoUmVnaXN0cmF0
aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7
CisgICAgfSk7CiB9CiAKIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlvbkpv
YlJlc29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBq
b2JEYXRhSWRlbnRpZmllciwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKIHsKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMudGFr
ZShqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKICAgICBpZiAoIWpvYikgewogICAg
ICAgICBMT0dfRVJST1IoIkpvYiAlcyByZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZv
dW5kIiwgam9iRGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgam9iLT5yZXNvbHZlZFdpdGhVbnJlZ2lzdHJh
dGlvblJlc3VsdCh1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CisgICAgcG9zdFRhc2tUbyhqb2ItPmNv
bnRleHRJZGVudGlmaWVyKCksIFtqb2IsIHVucmVnaXN0cmF0aW9uUmVzdWx0XSB7CisgICAgICAg
IGpvYi0+cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQodW5yZWdpc3RyYXRpb25SZXN1
bHQpOworICAgIH0pOwogfQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRG
ZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRh
dGFJZGVudGlmaWVyKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBhdXRv
IGpvYiA9IG1fc2NoZWR1bGVkSm9icy5nZXQoam9iRGF0YUlkZW50aWZpZXIuam9iSWRlbnRpZmll
cik7CiAgICAgaWYgKCFqb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMgaW5zdHJ1Y3Rl
ZCB0byBzdGFydCBmZXRjaCBmcm9tIHNlcnZlciwgYnV0IGpvYiB3YXMgbm90IGZvdW5kIiwgam9i
RGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMTE0LDEx
ICsxMzEsMTUgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JT
ZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOworICAgIHBvc3RUYXNrVG8oam9iLT5j
b250ZXh0SWRlbnRpZmllcigpLCBbam9iXSB7CisgICAgICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRj
aCgpOworICAgIH0pOwogfQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4
dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgU2Vydmlj
ZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgLy8gRklYTUU6IGRlc3RpbmF0aW9u
Q29udGV4dElkZW50aWZpZXIgY2FuIG9ubHkgaWRlbnRpZnkgYSBEb2N1bWVudCBhdCB0aGUgbW9t
ZW50LgogICAgIGF1dG8qIGRlc3RpbmF0aW9uRG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1l
bnRzTWFwKCkuZ2V0KGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIGlmICghZGVz
dGluYXRpb25Eb2N1bWVudCkKQEAgLTEzNyw2ICsxNTgsOCBAQCB2b2lkIFNXQ2xpZW50Q29ubmVj
dGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVy
IGRlcwogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUo
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VX
b3JrZXJEYXRhPiYgc2VydmljZVdvcmtlckRhdGEpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZvckVhY2hTZXJ2aWNl
V29ya2VyVGhyZWFkKFtpZGVudGlmaWVyLCBzdGF0ZSwgJnNlcnZpY2VXb3JrZXJEYXRhXSAoYXV0
byYgd29ya2VyVGhyZWFkKSB7CiAgICAgICAgIHdvcmtlclRocmVhZC50aHJlYWQoKS5ydW5Mb29w
KCkucG9zdFRhc2soW2lkZW50aWZpZXIsIHN0YXRlLCBzZXJ2aWNlV29ya2VyRGF0YSA9IGNyb3Nz
VGhyZWFkQ29weShzZXJ2aWNlV29ya2VyRGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRhaW5lciA9IGNvbnRl
eHQuc2VydmljZVdvcmtlckNvbnRhaW5lcigpKQpAQCAtMTUyLDYgKzE3NSw4IEBAIHZvaWQgU1dD
bGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uSWRlbnRpCiAKIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVXb3JrZXJT
dGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyU3Rh
dGUgc3RhdGUpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVudGlm
aWVyLCBzdGF0ZV0gKGF1dG8mIHdvcmtlclRocmVhZCkgewogICAgICAgICB3b3JrZXJUaHJlYWQu
dGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBzdGF0ZV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZpY2VX
b3JrZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcikpCkBAIC0xNjcsNiArMTky
LDggQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRlKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFMKIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246
OmZpcmVVcGRhdGVGb3VuZEV2ZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
IGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVu
dGlmaWVyXSAoYXV0byYgd29ya2VyVGhyZWFkKSB7CiAgICAgICAgIHdvcmtlclRocmVhZC50aHJl
YWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW2lkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBjb250ZXh0
LnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkKQEAgLTE4Miw2ICsyMDksNyBAQCB2b2lkIFNXQ2xp
ZW50Q29ubmVjdGlvbjo6ZmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6bm90aWZ5Q2xpZW50c09m
Q29udHJvbGxlckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRl
eHRJZGVudGlmaWVycywgU2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKQogeworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFjb250ZXh0SWRlbnRpZmllcnMu
aXNFbXB0eSgpKTsKIAogICAgIGZvciAoYXV0byYgY2xpZW50SWRlbnRpZmllciA6IGNvbnRleHRJ
ZGVudGlmaWVycykgewpAQCAtMjAwLDkgKzIyOCwzMiBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlv
bjo6bm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50
SQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6Y2xlYXJQZW5kaW5nSm9icygpCiB7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIGF1dG8gam9icyA9IFdURk1vdmUobV9zY2hl
ZHVsZWRKb2JzKTsKLSAgICBmb3IgKGF1dG8mIGpvYiA6IGpvYnMudmFsdWVzKCkpCi0gICAgICAg
IGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKSB9KTsKKyAgICBmb3IgKGF1dG8mIGpvYiA6IGpvYnMudmFs
dWVzKCkpIHsKKyAgICAgICAgcG9zdFRhc2tUbyhqb2ItPmNvbnRleHRJZGVudGlmaWVyKCksIFtq
b2JdIHsKKyAgICAgICAgICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihFeGNlcHRpb24geyBU
eXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKSB9KTsKKyAgICAgICAgfSk7
CisgICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdFRhc2tUbyhjb25zdCBE
b2N1bWVudE9yV29ya2VySWRlbnRpZmllciYgY29udGV4dElkZW50aWZpZXIsIFdURjo6RnVuY3Rp
b248dm9pZCgpPiYmIHRhc2spCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAg
IHN3aXRjaE9uKGNvbnRleHRJZGVudGlmaWVyLCBbJl0oRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50
aWZpZXIpIHsKKyAgICAgICAgYXV0byogZG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRz
TWFwKCkuZ2V0KGlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBkb2N1bWVudC0+cG9zdFRhc2soW3Rhc2sgPSBXVEZNb3ZlKHRh
c2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgICAgICAgICAgdGFzaygpOworICAg
ICAgICB9KTsKKyAgICB9LCBbJl0oU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikg
eworICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2Vydmlj
ZVdvcmtlcihpZGVudGlmaWVyLCBbdGFzayA9IFdURk1vdmUodGFzayldKFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSYpIHsKKyAgICAgICAgICAgIHRhc2soKTsKKyAgICAgICAgfSk7CisgICAgfSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA1OWI2YmI2ODRjYS4uZWFk
OWVlODQ3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0Ns
aWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dD
bGllbnRDb25uZWN0aW9uLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHJvdGVjdGVkOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgbm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNo
U2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJZGVudGlmaWVycywgU2VydmljZVdvcmtl
ckRhdGEmJiBuZXdDb250cm9sbGVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJQ
ZW5kaW5nSm9icygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdFRhc2tUbyhjb25zdCBE
b2N1bWVudE9yV29ya2VySWRlbnRpZmllciYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsKIAog
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCAyN2RmOWEwNWE4
YS4uNGY4NDIzYTU2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uLmgiCkBAIC00MCw5ICs0MSwxMSBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VySm9iLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGEuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
VGhyZWFkLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNp
bmNsdWRlIDx3dGYvU2NvcGUuaD4KQEAgLTE5NiwxNSArMTk5LDIwIEBAIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNv
bnN0IFVSTCYKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZUpvYihSZWY8
U2VydmljZVdvcmtlckpvYj4mJiBqb2IpCiB7CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVCht
X2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKwogICAgIEFTU0VS
VChtX3N3Q29ubmVjdGlvbik7CiAKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAKLSAg
ICBTZXJ2aWNlV29ya2VySm9iJiByYXdKb2IgPSBqb2IuZ2V0KCk7Ci0gICAgYXV0byByZXN1bHQg
PSBtX2pvYk1hcC5hZGQocmF3Sm9iLmlkZW50aWZpZXIoKSwgV1RGTW92ZShqb2IpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IG1fam9iTWFwLmFkZChqb2ItPmlkZW50aWZpZXIoKSwgam9iLmNvcHlSZWYo
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAg
IG1fc3dDb25uZWN0aW9uLT5zY2hlZHVsZUpvYihyYXdKb2IpOworICAgIGNhbGxPbk1haW5UaHJl
YWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgam9iID0gV1RGTW92ZShqb2IpXSB7Cisg
ICAgICAgIGNvbm5lY3Rpb24tPnNjaGVkdWxlSm9iKGpvYik7CisgICAgfSk7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYgY2xp
ZW50VVJMLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yOTMsNiArMzAxLDEw
IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RhcnRNZXNzYWdlcygpCiAKIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29y
a2VySm9iJiBqb2IsIGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQogeworI2lmbmRlZiBOREVC
VUcKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2Vu
ZGlmCisKICAgICBpZiAoYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkg
ewogICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhbam9iID0gbWFrZVJlZihqb2IpLCBleGNlcHRp
b25dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBqb2ItPnByb21pc2Uo
KS5yZWplY3QoZXhjZXB0aW9uKTsKQEAgLTMwMywxMiArMzE1LDIwIEBAIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9iJiBq
b2IsIGNvbnN0CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNrVG9G
aXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBp
ZGVudGlmaWVyKQogeworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVh
ZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisKICAgICBpZiAoYXV0byogcmVnaXN0cmF0
aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKSkKICAgICAgICAgcmVnaXN0cmF0
aW9uLT5zY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50KCk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VX
b3JrZXJKb2ImIGpvYiwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiBkYXRhLCBTaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKQogeworI2lmbmRl
ZiBOREVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkp
OworI2VuZGlmCisKICAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAm
am9iXSB7CiAgICAgICAgIGpvYkRpZEZpbmlzaChqb2IpOwogICAgIH0pOwpAQCAtMzQ1LDYgKzM2
NSwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJlZ2lz
dHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRh
aW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtlckpv
YiYgam9iLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQogeworI2lmbmRlZiBOREVCVUcKKyAg
ICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisK
ICAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7CiAgICAg
ICAgIGpvYkRpZEZpbmlzaChqb2IpOwogICAgIH0pOwpAQCAtMzYyLDEyICszODYsMTggQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJl
c3VsdChTZXJ2aWNlV29ya2VySm8KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFy
dFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHsKKyNpZm5kZWYgTkRF
QlVHCisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyNl
bmRpZgorCiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3JrZXJDb250YWluZXIgJXAg
c3RhcnRpbmcgc2NyaXB0IGZldGNoIGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmllcigp
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAgIExP
R19FUlJPUigiU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0
aW9uIGNhbGxlZCBidXQgdGhlIGNvbnRhaW5lcidzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgaXMg
Z29uZSIpOwotICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9i
LCB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGpvYi5kYXRhKCkuc2NyaXB0VVJMLCBB
U0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8gZmV0Y2ggc2VydmljZSB3b3JrZXIgc2NyaXB0IHdpdGgg
bm8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpIH0pOworICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFtjb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb24sIGpvYiA9IG1ha2VSZWYoam9iKV0geworICAg
ICAgICAgICAgY29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iLCB7IGVycm9yRG9t
YWluV2ViS2l0SW50ZXJuYWwsIDAsIGpvYi0+ZGF0YSgpLnNjcmlwdFVSTCwgQVNDSUlMaXRlcmFs
KCJBdHRlbXB0IHRvIGZldGNoIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCB3aXRoIG5vIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQiKSB9KTsKKyAgICAgICAgfSk7CiAgICAgICAgIGpvYkRpZEZpbmlzaChq
b2IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzc3LDIzICs0MDcsMzkgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3Jr
ZXJKb2ImIGpvYikKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExv
YWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkK
IHsKKyNpZm5kZWYgTkRFQlVHCisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVu
dFRocmVhZCgpKTsKKyNlbmRpZgorCiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3Jr
ZXJDb250YWluZXIgJXAgZmluaXNoZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJXMiLCB0aGlz
LCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAg
IG1fc3dDb25uZWN0aW9uLT5maW5pc2hlZEZldGNoaW5nU2NyaXB0KGpvYiwgc2NyaXB0KTsKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtjb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb24sIGpvYiA9IG1h
a2VSZWYoam9iKSwgc2NyaXB0ID0gc2NyaXB0Lmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGNv
bm5lY3Rpb24tPmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoam9iLCBzY3JpcHQpOworICAgIH0pOwog
fQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQo
U2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgc3RkOjpv
cHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKQogeworI2lmbmRlZiBOREVCVUcKKyAgICBB
U1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisKICAg
ICBMT0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBmYWlsZWQgZmV0
Y2hpbmcgc2NyaXB0IGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgIGpv
Yi5wcm9taXNlKCkucmVqZWN0KCpleGNlcHRpb24pOwogCi0gICAgbV9zd0Nvbm5lY3Rpb24tPmZh
aWxlZEZldGNoaW5nU2NyaXB0KGpvYiwgZXJyb3IpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nv
bm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgam9iID0gbWFrZVJlZihqb2IpLCBlcnJvciA9IGVy
cm9yLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGNvbm5lY3Rpb24tPmZhaWxlZEZldGNoaW5n
U2NyaXB0KGpvYiwgZXJyb3IpOworICAgIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OmpvYkRpZEZpbmlzaChTZXJ2aWNlV29ya2VySm9iJiBqb2IpCiB7CisjaWZuZGVmIE5E
RUJVRworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7Cisj
ZW5kaWYKKwogICAgIGF1dG8gdGFrZW4gPSBtX2pvYk1hcC50YWtlKGpvYi5pZGVudGlmaWVyKCkp
OwogICAgIEFTU0VSVF9VTlVTRUQodGFrZW4sICF0YWtlbiB8fCB0YWtlbi0+cHRyKCkgPT0gJmpv
Yik7CiAKQEAgLTQyOSwxOCArNDc1LDMwIEBAIFNXQ2xpZW50Q29ubmVjdGlvbiYgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6ZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkKIAogdm9pZCBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
biYgcmVnaXN0cmF0aW9uKQogeworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlv
blRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisKICAgICBlbnN1cmVTV0NsaWVu
dENvbm5lY3Rpb24oKS5hZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIocmVnaXN0
cmF0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgbV9yZWdpc3RyYXRpb25zLmFkZChyZWdpc3RyYXRp
b24uaWRlbnRpZmllcigpLCAmcmVnaXN0cmF0aW9uKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiYg
cmVnaXN0cmF0aW9uKQogeworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlvblRo
cmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisKICAgICBtX3N3Q29ubmVjdGlvbi0+
cmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKHJlZ2lzdHJhdGlvbi5pZGVu
dGlmaWVyKCkpOwogICAgIG1fcmVnaXN0cmF0aW9ucy5yZW1vdmUocmVnaXN0cmF0aW9uLmlkZW50
aWZpZXIoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNr
VG9GaXJlQ29udHJvbGxlckNoYW5nZUV2ZW50KCkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgQVNT
RVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyNlbmRpZgorCiAgICAg
aWYgKG1faXNTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ1OCw2ICs1MTYsMTggQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdG9wKCkKICAgICByZW1vdmVBbGxFdmVudExp
c3RlbmVycygpOwogfQogCitEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpjb250ZXh0SWRlbnRpZmllcigpCit7CisjaWZuZGVmIE5ERUJVRworICAgIEFT
U0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKworICAg
IEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmIChpczxTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAgICAgICByZXR1
cm4gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKS50aHJlYWQoKS5pZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PERvY3Vt
ZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5pZGVudGlmaWVyKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5oCmluZGV4IDgxMmFmMzQwMzcwLi4yZDlhOWYwNDZhYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5o
CkBAIC05Niw2ICs5Niw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBqb2JEaWRGaW5pc2goU2Vydmlj
ZVdvcmtlckpvYiYpOwogCiAgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0
aW9uSWRlbnRpZmllcigpIGZpbmFsOworICAgIERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyIGNv
bnRleHRJZGVudGlmaWVyKCkgZmluYWw7CisKICAgICBTV0NsaWVudENvbm5lY3Rpb24mIGVuc3Vy
ZVNXQ2xpZW50Q29ubmVjdGlvbigpOwogCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IDgzMzZhNzgwOThhLi5mNzNmOTA3MmEwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJK
b2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iLmNwcApAQCAtNDEsNiArNDEsNyBAQCBTZXJ2aWNlV29ya2VySm9iOjpTZXJ2aWNlV29ya2Vy
Sm9iKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmIGNsaWVudCwgUmVmPERlZmVycmVkUAogICAgIDog
bV9jbGllbnQoY2xpZW50KQogICAgICwgbV9qb2JEYXRhKFdURk1vdmUoam9iRGF0YSkpCiAgICAg
LCBtX3Byb21pc2UoV1RGTW92ZShwcm9taXNlKSkKKyAgICAsIG1fY29udGV4dElkZW50aWZpZXIo
Y2xpZW50LmNvbnRleHRJZGVudGlmaWVyKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCmluZGV4IGM4YTk3MGFmZDY3Li5j
MzBhNGZiODQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJKb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckpvYi5oCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZmV0
Y2hTY3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKKyAgICBjb25z
dCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciYgY29udGV4dElkZW50aWZpZXIoKSB7IHJldHVy
biBtX2NvbnRleHRJZGVudGlmaWVyOyB9CisKIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckpv
YihTZXJ2aWNlV29ya2VySm9iQ2xpZW50JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgU2Vydmlj
ZVdvcmtlckpvYkRhdGEmJik7CiAKQEAgLTgzLDcgKzg1LDcgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV9jb21wbGV0ZWQgeyBmYWxzZSB9OwogCi0gICAgUmVmPFJ1bkxvb3A+IG1fcnVuTG9vcCB7
IFJ1bkxvb3A6OmN1cnJlbnQoKSB9OworICAgIERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyIG1f
Y29udGV4dElkZW50aWZpZXI7CiAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gbV9zY3Jp
cHRMb2FkZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX2xhc3RSZXNwb25zZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xp
ZW50LmgKaW5kZXggNDE1YTY5Y2IxYTQuLmYxMDNiMjc4ZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKQEAg
LTQxLDYgKzQxLDggQEAgY2xhc3MgU2VydmljZVdvcmtlckpvYkNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+U2VydmljZVdvcmtlckpvYkNsaWVudCgpID0gZGVmYXVsdDsKIAorICAgIHZp
cnR1YWwgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIoKSA9IDA7
CisKICAgICB2aXJ0dWFsIHZvaWQgam9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2Vy
Sm9iJiwgY29uc3QgRXhjZXB0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBqb2JSZXNvbHZl
ZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYsIFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2VySm9i
JiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3Bw
CmluZGV4IGJmMGI0NzlmNzA2Li5mMjg5MGVhZjY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNw
cApAQCAtMTIxLDE4ICsxMjEsNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnVw
ZGF0ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgaW4gd29ya2Vycy4KLSAgICBpZiAoIWlz
PERvY3VtZW50PigqY29udGV4dCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoInNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24udXBkYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQgaW4gd29ya2VycyIpIH0pOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogY29udGFpbmVyID0gY29udGV4dC0+c2Vy
dmljZVdvcmtlckNvbnRhaW5lcigpOwotICAgIGlmICghY29udGFpbmVyKSB7Ci0gICAgICAgIHBy
b21pc2UtPnJlamVjdChFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQogICAgIGF1dG8qIG5ld2VzdFdvcmtlciA9IGdldE5ld2VzdFdvcmtlcigp
OwogICAgIGlmICghbmV3ZXN0V29ya2VyKSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNl
cHRpb24oSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgibmV3ZXN0V29ya2VyIGlzIG51
bGwiKSkpOwpAQCAtMTQwLDcgKzEyOCw3IEBAIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bjo6dXBkYXRlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICB9CiAKICAgICAv
LyBGSVhNRTogU3VwcG9ydCB3b3JrZXIgdHlwZXMuCi0gICAgY29udGFpbmVyLT51cGRhdGVSZWdp
c3RyYXRpb24obV9yZWdpc3RyYXRpb25EYXRhLnNjb3BlVVJMLCBuZXdlc3RXb3JrZXItPnNjcmlw
dFVSTCgpLCBXb3JrZXJUeXBlOjpDbGFzc2ljLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBtX2Nv
bnRhaW5lci0+dXBkYXRlUmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uRGF0YS5zY29wZVVSTCwg
bmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgV29ya2VyVHlwZTo6Q2xhc3NpYywgV1RGTW92ZShw
cm9taXNlKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dW5yZWdpc3Rl
cihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmgKaW5kZXggZGRiMzA1ZDhmODIu
LjhkMTUyZDM2Nzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJUeXBlcy5oCkBAIC0yNyw4ICsyNywxMSBAQAogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRG9jdW1lbnRJZGVudGlmaWVyLmgiCisjaW5jbHVk
ZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5o
PgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1Zhcmlh
bnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Nyw2ICs3MCw4IEBAIHVzaW5nIFNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFNX
U2VydmVyVG9Db250ZXh0CiBlbnVtIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlIHsg
fTsKIHVzaW5nIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPjsKIAordXNpbmcgRG9jdW1lbnRPcldv
cmtlcklkZW50aWZpZXIgPSBWYXJpYW50PERvY3VtZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtl
cklkZW50aWZpZXI+OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBXVEYg
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328252</attachid>
            <date>2017-12-02 13:52:57 -0800</date>
            <delta_ts>2017-12-02 15:46:54 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>180215_update_within_sw_simpler_wip.patch</filename>
            <type>text/plain</type>
            <size>25997</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDVkZDNhZmNhNjJmLi42ZjliMzNjYjFiNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0xNDcsNyArMTQ3LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZWN1cmUtY29udGV4dHMvc2hhcmVkLXdvcmtlci1zZWN1cmUtZmlyc3QuaHR0cHMKIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Fib3J0L2dlbmVyYWwtc2Vy
dmljZXdvcmtlci5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUvZXh0ZW5kYWJsZS1tZXNzYWdlLWV2ZW50Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS91bnJlZ2lzdGVyLmh0dHBzLmh0bWwgWyBTa2lwIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS91cGRhdGUuaHR0cHMuaHRtbCBbIFNraXAg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvY2xpZW50cy1tYXRjaGFsbC1vbi1ldmFsdWF0aW9uLmh0dHBzLmh0bWwgWyBTa2lw
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL2RldGFjaGVkLWNvbnRleHQuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZXh0
ZW5kYWJsZS1ldmVudC13YWl0dW50aWwuaHR0cHMuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlbGZfcmVn
aXN0cmF0aW9uX3VwZGF0ZS13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvc2VsZl9yZWdpc3RyYXRpb25fdXBkYXRlLXdvcmtlci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMmIzNmFjYjA5MjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNv
dXJjZXMvc2VsZl9yZWdpc3RyYXRpb25fdXBkYXRlLXdvcmtlci5qcwpAQCAtMCwwICsxLDQgQEAK
K3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4geworICAgIHNlbGYu
cmVnaXN0cmF0aW9uLnVwZGF0ZSgpOworfSk7CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlbGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZWxmX3JlZ2lz
dHJhdGlvbl91cGRhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5mN2UzZjU4Y2Q3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlbGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw3IEBACisqIEFkZCBiYXNpYyB0ZXN0aW5nIGZvciBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUucmVnaXN0cmF0aW9uLnVwZGF0ZSgpCisKK1BBU1M6IHJlZ2lzdHJhdGlv
biB3YXMgc3VjY2Vzc2Z1bHkgdXBkYXRlZCBieSB0aGUgc2VydmljZSB3b3JrZXIKK1BBU1M6IHNl
cnZpY2Ugd29ya2VyIGJlY2FtZSByZWR1bmRhbnQKK1BBU1M6IE9sZCB3b3JrZXIgaXMgc3RpbGwg
dGhlIHJlZ2lzdHJhdGlvbidzIGFjdGl2ZSB3b3JrZXIKK1BBU1M6IE5ldyB3b3JrZXIgc2hvdWxk
IGJlIHRoZSByZWdpc3RyYXRpb24ncyB3YWl0aW5nIHdvcmtlcgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZWxmX3JlZ2lzdHJhdGlvbl91cGRh
dGUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlbGZfcmVn
aXN0cmF0aW9uX3VwZGF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi4zYzY0NmFlOTAzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd29ya2Vycy9zZXJ2aWNlL3NlbGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS5odG1sCkBAIC0wLDAg
KzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2xvZygiKiBBZGQg
YmFzaWMgdGVzdGluZyBmb3IgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnJlZ2lzdHJhdGlvbi51
cGRhdGUoKSIpOworbG9nKCIiKTsKKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIo
InJlc291cmNlcy9zZWxmX3JlZ2lzdHJhdGlvbl91cGRhdGUtd29ya2VyLmpzIiwgeyB9KS50aGVu
KGZ1bmN0aW9uKF9yZWdpc3RyYXRpb24pIHsKKyAgICByZWdpc3RyYXRpb24gPSBfcmVnaXN0cmF0
aW9uOworICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgd2FpdEZv
clN0YXRlKHdvcmtlciwgImFjdGl2YXRlZCIpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIHJl
Z2lzdHJhdGlvbi5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmb3VuZCIsIGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgbG9nKCJQQVNTOiByZWdpc3RyYXRpb24gd2FzIHN1Y2Nlc3NmdWx5IHVwZGF0
ZWQgYnkgdGhlIHNlcnZpY2Ugd29ya2VyIik7CisgICAgICAgICAgICB3YWl0Rm9yU3RhdGUod29y
a2VyLCAicmVkdW5kYW50IikudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBsb2co
IlBBU1M6IHNlcnZpY2Ugd29ya2VyIGJlY2FtZSByZWR1bmRhbnQiKTsKKyAgICAgICAgICAgICAg
ICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2ZSA9PT0gd29ya2VyKQorICAgICAgICAgICAgICAgICAg
ICBsb2coIlBBU1M6IE9sZCB3b3JrZXIgaXMgc3RpbGwgdGhlIHJlZ2lzdHJhdGlvbidzIGFjdGl2
ZSB3b3JrZXIiKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxv
ZygiRkFJTDogT2xkIHdvcmtlciBpcyBzdGlsbCB0aGUgcmVnaXN0cmF0aW9uJ3MgYWN0aXZlIHdv
cmtlciIpOworCisgICAgICAgICAgICAgICAgaWYgKCFzZWxmLnJlZ2lzdHJhdGlvbi53YWl0aW5n
IHx8IHNlbGYucmVnaXN0cmF0aW9uLndhaXRpbmcgPT09IHdvcmtlcikKKyAgICAgICAgICAgICAg
ICAgICAgbG9nKCJGQUlMOiBOZXcgd29ya2VyIHNob3VsZCBiZSB0aGUgcmVnaXN0cmF0aW9uJ3Mg
d2FpdGluZyB3b3JrZXIiKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGxvZygiUEFTUzogTmV3IHdvcmtlciBzaG91bGQgYmUgdGhlIHJlZ2lzdHJhdGlvbidzIHdh
aXRpbmcgd29ya2VyIik7CisgICAgICAgICAgICAgICAgZmluaXNoU1dUZXN0KCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgidXBkYXRl
Iik7CisgICAgfSk7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXIvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlL3VwZGF0ZS5odHRw
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUvdXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA4NjExOTZkNDhhZi4uNWZjOTNmZGQ4
MmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS91cGRhdGUuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS91cGRhdGUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEs
NCBAQAogCiAKLUhhcm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1F
T1VUIFVwZGF0ZSBhIHJlZ2lzdHJhdGlvbiBvbiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgVGVz
dCB0aW1lZCBvdXQKK0ZBSUwgVXBkYXRlIGEgcmVnaXN0cmF0aW9uIG9uIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSBhc3NlcnRfZXF1YWxzOiBldmVudHMgc2VlbiBieSB0aGUgd29ya2VyIGV4cGVj
dGVkICJ1cGRhdGVmb3VuZCxhY3RpdmF0ZSxmZXRjaCxtZXNzYWdlLHVwZGF0ZWZvdW5kLGZldGNo
IiBidXQgZ290ICJ1cGRhdGVmb3VuZCxhY3RpdmF0ZSxmZXRjaCIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBl
YzUwZjY1MjI0Zi4uYjNmNTZjNzRmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC00Nyw2ICs0Nyw4IEBAIFNX
Q2xpZW50Q29ubmVjdGlvbjo6flNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogdm9p
ZCBTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikK
IHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3NjaGVkdWxlZEpvYnMuYWRkKGpvYi5pZGVudGlmaWVyKCksICZqb2IpOwogICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKQEAgLTU1LDYgKzU3LDcg
QEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2Im
IGpvYikKIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQo
U2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NjaGVkdWxlZEpvYnMuZ2V0KGpvYi5p
ZGVudGlmaWVyKCkpID09ICZqb2IpOwogCiAgICAgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZl
cih7IGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgp
LCBzY3JpcHQsIHsgfSB9KTsKQEAgLTYyLDYgKzY1LDcgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rp
b246OmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBT
dHIKIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZp
Y2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2JzLmdldChqb2Iu
aWRlbnRpZmllcigpKSA9PSAmam9iKTsKIAogICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2
ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXko
KSwgeyB9LCBlcnJvciB9KTsKQEAgLTY5LDQwICs3Myw1MyBAQCB2b2lkIFNXQ2xpZW50Q29ubmVj
dGlvbjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBS
ZXNvdQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6am9iUmVqZWN0ZWRJblNlcnZlcihjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25z
dCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQogeworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKICAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVu
dGlmaWVyLmpvYklkZW50aWZpZXIpOwogICAgIGlmICgham9iKSB7CiAgICAgICAgIExPR19FUlJP
UigiSm9iICVzIHJlamVjdGVkIGZyb20gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRh
dGFJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihleGNlcHRpb25EYXRh
LnRvRXhjZXB0aW9uKCkpOworICAgIHBvc3RUYXNrVG8oam9iLT5jb250ZXh0SWRlbnRpZmllcigp
LCBbam9iLCBleGNlcHRpb25EYXRhID0gZXhjZXB0aW9uRGF0YS5pc29sYXRlZENvcHkoKV0gewor
ICAgICAgICBqb2ItPmZhaWxlZFdpdGhFeGNlcHRpb24oZXhjZXB0aW9uRGF0YS50b0V4Y2VwdGlv
bigpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlv
bkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdp
c3RyYXRpb25EYXRhLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgc2hvdWxkTm90aWZ5V2hlblJl
c29sdmVkKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBhdXRvIGpvYiA9
IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50aWZpZXIpOwog
ICAgIGlmICgham9iKSB7CiAgICAgICAgIExPR19FUlJPUigiSm9iICVzIHJlc29sdmVkIGluIHNl
cnZlciwgYnV0IHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGtl
eSA9IHJlZ2lzdHJhdGlvbkRhdGEua2V5OwotICAgIGpvYi0+cmVzb2x2ZWRXaXRoUmVnaXN0cmF0
aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7
CisgICAgcG9zdFRhc2tUbyhqb2ItPmNvbnRleHRJZGVudGlmaWVyKCksIFtqb2IsIHJlZ2lzdHJh
dGlvbkRhdGEgPSByZWdpc3RyYXRpb25EYXRhLmlzb2xhdGVkQ29weSgpLCBzaG91bGROb3RpZnlX
aGVuUmVzb2x2ZWRdKCkgbXV0YWJsZSB7CisgICAgICAgIGpvYi0+cmVzb2x2ZWRXaXRoUmVnaXN0
cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZl
ZCk7CisgICAgfSk7CiB9CiAKIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlv
bkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
JiBqb2JEYXRhSWRlbnRpZmllciwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKIHsKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMu
dGFrZShqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKICAgICBpZiAoIWpvYikgewog
ICAgICAgICBMT0dfRVJST1IoIkpvYiAlcyByZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90
IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgam9iLT5yZXNvbHZlZFdpdGhVbnJlZ2lz
dHJhdGlvblJlc3VsdCh1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CisgICAgcG9zdFRhc2tUbyhqb2It
PmNvbnRleHRJZGVudGlmaWVyKCksIFtqb2IsIHVucmVnaXN0cmF0aW9uUmVzdWx0XSB7CisgICAg
ICAgIGpvYi0+cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQodW5yZWdpc3RyYXRpb25S
ZXN1bHQpOworICAgIH0pOwogfQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3Jp
cHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpv
YkRhdGFJZGVudGlmaWVyKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBh
dXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy5nZXQoam9iRGF0YUlkZW50aWZpZXIuam9iSWRlbnRp
Zmllcik7CiAgICAgaWYgKCFqb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMgaW5zdHJ1
Y3RlZCB0byBzdGFydCBmZXRjaCBmcm9tIHNlcnZlciwgYnV0IGpvYiB3YXMgbm90IGZvdW5kIiwg
am9iRGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMTE0
LDExICsxMzEsMTUgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hG
b3JTZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGUKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOworICAgIHBvc3RUYXNrVG8oam9i
LT5jb250ZXh0SWRlbnRpZmllcigpLCBbam9iXSB7CisgICAgICAgIGpvYi0+c3RhcnRTY3JpcHRG
ZXRjaCgpOworICAgIH0pOwogfQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29u
dGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgU2Vy
dmljZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
IHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgLy8gRklYTUU6IGRlc3RpbmF0
aW9uQ29udGV4dElkZW50aWZpZXIgY2FuIG9ubHkgaWRlbnRpZnkgYSBEb2N1bWVudCBhdCB0aGUg
bW9tZW50LgogICAgIGF1dG8qIGRlc3RpbmF0aW9uRG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9j
dW1lbnRzTWFwKCkuZ2V0KGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIGlmICgh
ZGVzdGluYXRpb25Eb2N1bWVudCkKQEAgLTEzNyw2ICsxNTgsOCBAQCB2b2lkIFNXQ2xpZW50Q29u
bmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlm
aWVyIGRlcwogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlUmVnaXN0cmF0aW9uU3Rh
dGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZp
Y2VXb3JrZXJEYXRhPiYgc2VydmljZVdvcmtlckRhdGEpCiB7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZvckVhY2hTZXJ2
aWNlV29ya2VyVGhyZWFkKFtpZGVudGlmaWVyLCBzdGF0ZSwgJnNlcnZpY2VXb3JrZXJEYXRhXSAo
YXV0byYgd29ya2VyVGhyZWFkKSB7CiAgICAgICAgIHdvcmtlclRocmVhZC50aHJlYWQoKS5ydW5M
b29wKCkucG9zdFRhc2soW2lkZW50aWZpZXIsIHN0YXRlLCBzZXJ2aWNlV29ya2VyRGF0YSA9IGNy
b3NzVGhyZWFkQ29weShzZXJ2aWNlV29ya2VyRGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRhaW5lciA9IGNv
bnRleHQuc2VydmljZVdvcmtlckNvbnRhaW5lcigpKQpAQCAtMTUyLDYgKzE3NSw4IEBAIHZvaWQg
U1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uSWRlbnRpCiAKIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVXb3Jr
ZXJTdGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
U3RhdGUgc3RhdGUpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVu
dGlmaWVyLCBzdGF0ZV0gKGF1dG8mIHdvcmtlclRocmVhZCkgewogICAgICAgICB3b3JrZXJUaHJl
YWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBzdGF0ZV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZp
Y2VXb3JrZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcikpCkBAIC0xNjcsNiAr
MTkyLDggQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRlKFNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFMKIAogdm9pZCBTV0NsaWVudENvbm5lY3Rp
b246OmZpcmVVcGRhdGVGb3VuZEV2ZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtp
ZGVudGlmaWVyXSAoYXV0byYgd29ya2VyVGhyZWFkKSB7CiAgICAgICAgIHdvcmtlclRocmVhZC50
aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW2lkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBjb250
ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkKQEAgLTE4Miw2ICsyMDksNyBAQCB2b2lkIFNX
Q2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6bm90aWZ5Q2xpZW50
c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNv
bnRleHRJZGVudGlmaWVycywgU2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKQogewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFjb250ZXh0SWRlbnRpZmll
cnMuaXNFbXB0eSgpKTsKIAogICAgIGZvciAoYXV0byYgY2xpZW50SWRlbnRpZmllciA6IGNvbnRl
eHRJZGVudGlmaWVycykgewpAQCAtMjAwLDkgKzIyOCwzMiBAQCB2b2lkIFNXQ2xpZW50Q29ubmVj
dGlvbjo6bm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3Vt
ZW50SQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6Y2xlYXJQZW5kaW5nSm9icygpCiB7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIGF1dG8gam9icyA9IFdURk1vdmUobV9z
Y2hlZHVsZWRKb2JzKTsKLSAgICBmb3IgKGF1dG8mIGpvYiA6IGpvYnMudmFsdWVzKCkpCi0gICAg
ICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKSB9KTsKKyAgICBmb3IgKGF1dG8mIGpvYiA6IGpvYnMu
dmFsdWVzKCkpIHsKKyAgICAgICAgcG9zdFRhc2tUbyhqb2ItPmNvbnRleHRJZGVudGlmaWVyKCks
IFtqb2JdIHsKKyAgICAgICAgICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihFeGNlcHRpb24g
eyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKSB9KTsKKyAgICAgICAg
fSk7CisgICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdFRhc2tUbyhjb25z
dCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciYgY29udGV4dElkZW50aWZpZXIsIFdURjo6RnVu
Y3Rpb248dm9pZCgpPiYmIHRhc2spCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwor
ICAgIHN3aXRjaE9uKGNvbnRleHRJZGVudGlmaWVyLCBbJl0oRG9jdW1lbnRJZGVudGlmaWVyIGlk
ZW50aWZpZXIpIHsKKyAgICAgICAgYXV0byogZG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1l
bnRzTWFwKCkuZ2V0KGlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWRvY3VtZW50KQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBkb2N1bWVudC0+cG9zdFRhc2soW3Rhc2sgPSBXVEZNb3Zl
KHRhc2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgICAgICAgICAgdGFzaygpOwor
ICAgICAgICB9KTsKKyAgICB9LCBbJl0oU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmll
cikgeworICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2Vy
dmljZVdvcmtlcihpZGVudGlmaWVyLCBbdGFzayA9IFdURk1vdmUodGFzayldKFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSYpIHsKKyAgICAgICAgICAgIHRhc2soKTsKKyAgICAgICAgfSk7CisgICAg
fSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA1OWI2YmI2ODRjYS4u
ZWFkOWVlODQ3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
V0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHJvdGVjdGVkOgogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBI
YXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJZGVudGlmaWVycywgU2VydmljZVdv
cmtlckRhdGEmJiBuZXdDb250cm9sbGVyKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXJQZW5kaW5nSm9icygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdFRhc2tUbyhjb25z
dCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciYsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmKTsK
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCAyN2RmOWEw
NWE4YS4uNGY4NDIzYTU2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uLmgiCkBAIC00MCw5ICs0MSwxMSBAQAogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VySm9iLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGEuaCIK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
ICNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KQEAgLTE5NiwxNSArMTk5LDIwIEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uKGNvbnN0IFVSTCYgc2NvcGVVUkws
IGNvbnN0IFVSTCYKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZUpvYihS
ZWY8U2VydmljZVdvcmtlckpvYj4mJiBqb2IpCiB7CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VS
VChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKwogICAgIEFT
U0VSVChtX3N3Q29ubmVjdGlvbik7CiAKICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CiAK
LSAgICBTZXJ2aWNlV29ya2VySm9iJiByYXdKb2IgPSBqb2IuZ2V0KCk7Ci0gICAgYXV0byByZXN1
bHQgPSBtX2pvYk1hcC5hZGQocmF3Sm9iLmlkZW50aWZpZXIoKSwgV1RGTW92ZShqb2IpKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fam9iTWFwLmFkZChqb2ItPmlkZW50aWZpZXIoKSwgam9iLmNvcHlS
ZWYoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAot
ICAgIG1fc3dDb25uZWN0aW9uLT5zY2hlZHVsZUpvYihyYXdKb2IpOworICAgIGNhbGxPbk1haW5U
aHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgam9iID0gV1RGTW92ZShqb2IpXSB7
CisgICAgICAgIGNvbm5lY3Rpb24tPnNjaGVkdWxlSm9iKGpvYik7CisgICAgfSk7CiB9CiAKIHZv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFN0cmluZyYg
Y2xpZW50VVJMLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCkBAIC0yOTMsNiArMzAx
LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3RhcnRNZXNzYWdlcygpCiAKIHZv
aWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNl
V29ya2VySm9iJiBqb2IsIGNvbnN0IEV4Y2VwdGlvbiYgZXhjZXB0aW9uKQogeworI2lmbmRlZiBO
REVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOwor
I2VuZGlmCisKICAgICBpZiAoYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkgewogICAgICAgICBjb250ZXh0LT5wb3N0VGFzayhbam9iID0gbWFrZVJlZihqb2IpLCBleGNl
cHRpb25dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgICAgICBqb2ItPnByb21p
c2UoKS5yZWplY3QoZXhjZXB0aW9uKTsKQEAgLTMwMywxMiArMzE1LDIwIEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9i
JiBqb2IsIGNvbnN0CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVUYXNr
VG9GaXJlVXBkYXRlRm91bmRFdmVudChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyKQogeworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlvblRo
cmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisKICAgICBpZiAoYXV0byogcmVnaXN0
cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChpZGVudGlmaWVyKSkKICAgICAgICAgcmVnaXN0
cmF0aW9uLT5zY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50KCk7CiB9CiAKIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZp
Y2VXb3JrZXJKb2ImIGpvYiwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiBkYXRhLCBT
aG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKQogeworI2lm
bmRlZiBOREVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFk
KCkpOworI2VuZGlmCisKICAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlz
LCAmam9iXSB7CiAgICAgICAgIGpvYkRpZEZpbmlzaChqb2IpOwogICAgIH0pOwpAQCAtMzQ1LDYg
KzM2NSwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFJl
Z2lzdHJhdGlvbihTZXJ2aWNlV29ya2VySm9iJiBqb2IsCiAKIHZvaWQgU2VydmljZVdvcmtlckNv
bnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQoU2VydmljZVdvcmtl
ckpvYiYgam9iLCBib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQogeworI2lmbmRlZiBOREVCVUcK
KyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlm
CisKICAgICBhdXRvIGd1YXJkID0gV1RGOjptYWtlU2NvcGVFeGl0KFt0aGlzLCAmam9iXSB7CiAg
ICAgICAgIGpvYkRpZEZpbmlzaChqb2IpOwogICAgIH0pOwpAQCAtMzYyLDEyICszODYsMTggQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlv
blJlc3VsdChTZXJ2aWNlV29ya2VySm8KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpz
dGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHsKKyNpZm5kZWYg
TkRFQlVHCisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsK
KyNlbmRpZgorCiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VXb3JrZXJDb250YWluZXIg
JXAgc3RhcnRpbmcgc2NyaXB0IGZldGNoIGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmll
cigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGF1dG8qIGNvbnRleHQg
PSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFjb250ZXh0KSB7CiAgICAgICAg
IExPR19FUlJPUigiU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0
cmF0aW9uIGNhbGxlZCBidXQgdGhlIGNvbnRhaW5lcidzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
aXMgZ29uZSIpOwotICAgICAgICBtX3N3Q29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hpbmdTY3JpcHQo
am9iLCB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGpvYi5kYXRhKCkuc2NyaXB0VVJM
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8gZmV0Y2ggc2VydmljZSB3b3JrZXIgc2NyaXB0IHdp
dGggbm8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpIH0pOworICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtjb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb24sIGpvYiA9IG1ha2VSZWYoam9iKV0gewor
ICAgICAgICAgICAgY29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iLCB7IGVycm9y
RG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGpvYi0+ZGF0YSgpLnNjcmlwdFVSTCwgQVNDSUlMaXRl
cmFsKCJBdHRlbXB0IHRvIGZldGNoIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCB3aXRoIG5vIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQiKSB9KTsKKyAgICAgICAgfSk7CiAgICAgICAgIGpvYkRpZEZpbmlz
aChqb2IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzc3LDIzICs0MDcsMzkgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNoRm9ySm9iKFNlcnZpY2VX
b3JrZXJKb2ImIGpvYikKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hl
ZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBTdHJpbmcmIHNjcmlw
dCkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3Vy
cmVudFRocmVhZCgpKTsKKyNlbmRpZgorCiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTZXZpY2VX
b3JrZXJDb250YWluZXIgJXAgZmluaXNoZWQgZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJXMiLCB0
aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAot
ICAgIG1fc3dDb25uZWN0aW9uLT5maW5pc2hlZEZldGNoaW5nU2NyaXB0KGpvYiwgc2NyaXB0KTsK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtjb25uZWN0aW9uID0gbV9zd0Nvbm5lY3Rpb24sIGpvYiA9
IG1ha2VSZWYoam9iKSwgc2NyaXB0ID0gc2NyaXB0Lmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAg
IGNvbm5lY3Rpb24tPmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoam9iLCBzY3JpcHQpOworICAgIH0p
OwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3Jp
cHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgc3Rk
OjpvcHRpb25hbDxFeGNlcHRpb24+JiYgZXhjZXB0aW9uKQogeworI2lmbmRlZiBOREVCVUcKKyAg
ICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisK
ICAgICBMT0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBmYWlsZWQg
ZmV0Y2hpbmcgc2NyaXB0IGZvciBqb2IgJXMiLCB0aGlzLCBqb2IuaWRlbnRpZmllcigpLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmIChleGNlcHRpb24pCiAgICAgICAg
IGpvYi5wcm9taXNlKCkucmVqZWN0KCpleGNlcHRpb24pOwogCi0gICAgbV9zd0Nvbm5lY3Rpb24t
PmZhaWxlZEZldGNoaW5nU2NyaXB0KGpvYiwgZXJyb3IpOworICAgIGNhbGxPbk1haW5UaHJlYWQo
W2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgam9iID0gbWFrZVJlZihqb2IpLCBlcnJvciA9
IGVycm9yLmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIGNvbm5lY3Rpb24tPmZhaWxlZEZldGNo
aW5nU2NyaXB0KGpvYiwgZXJyb3IpOworICAgIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OmpvYkRpZEZpbmlzaChTZXJ2aWNlV29ya2VySm9iJiBqb2IpCiB7CisjaWZuZGVm
IE5ERUJVRworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7
CisjZW5kaWYKKwogICAgIGF1dG8gdGFrZW4gPSBtX2pvYk1hcC50YWtlKGpvYi5pZGVudGlmaWVy
KCkpOwogICAgIEFTU0VSVF9VTlVTRUQodGFrZW4sICF0YWtlbiB8fCB0YWtlbi0+cHRyKCkgPT0g
JmpvYik7CiAKQEAgLTQyOSwxOCArNDc1LDMwIEBAIFNXQ2xpZW50Q29ubmVjdGlvbiYgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6ZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkKIAogdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbiYgcmVnaXN0cmF0aW9uKQogeworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQobV9jcmVh
dGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisKICAgICBlbnN1cmVTV0Ns
aWVudENvbm5lY3Rpb24oKS5hZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIocmVn
aXN0cmF0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgbV9yZWdpc3RyYXRpb25zLmFkZChyZWdpc3Ry
YXRpb24uaWRlbnRpZmllcigpLCAmcmVnaXN0cmF0aW9uKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpyZW1vdmVSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
biYgcmVnaXN0cmF0aW9uKQogeworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlv
blRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisKICAgICBtX3N3Q29ubmVjdGlv
bi0+cmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKHJlZ2lzdHJhdGlvbi5p
ZGVudGlmaWVyKCkpOwogICAgIG1fcmVnaXN0cmF0aW9ucy5yZW1vdmUocmVnaXN0cmF0aW9uLmlk
ZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVU
YXNrVG9GaXJlQ29udHJvbGxlckNoYW5nZUV2ZW50KCkKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAg
QVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyNlbmRpZgorCiAg
ICAgaWYgKG1faXNTdG9wcGVkKQogICAgICAgICByZXR1cm47CiAKQEAgLTQ1OCw2ICs1MTYsMTgg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdG9wKCkKICAgICByZW1vdmVBbGxFdmVu
dExpc3RlbmVycygpOwogfQogCitEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpjb250ZXh0SWRlbnRpZmllcigpCit7CisjaWZuZGVmIE5ERUJVRworICAg
IEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKwor
ICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIGlmIChpczxTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAgICAgICBy
ZXR1cm4gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPigqc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKS50aHJlYWQoKS5pZGVudGlmaWVyKCk7CisgICAgcmV0dXJuIGRvd25jYXN0PERv
Y3VtZW50Pigqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS5pZGVudGlmaWVyKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5oCmluZGV4IDgxMmFmMzQwMzcwLi4yZDlhOWYwNDZhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5oCkBAIC05Niw2ICs5Niw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBqb2JEaWRGaW5pc2goU2Vy
dmljZVdvcmtlckpvYiYpOwogCiAgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25u
ZWN0aW9uSWRlbnRpZmllcigpIGZpbmFsOworICAgIERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVy
IGNvbnRleHRJZGVudGlmaWVyKCkgZmluYWw7CisKICAgICBTV0NsaWVudENvbm5lY3Rpb24mIGVu
c3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpOwogCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IDgzMzZhNzgwOThhLi5mNzNmOTA3MmEw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJKb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VySm9iLmNwcApAQCAtNDEsNiArNDEsNyBAQCBTZXJ2aWNlV29ya2VySm9iOjpTZXJ2aWNlV29y
a2VySm9iKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmIGNsaWVudCwgUmVmPERlZmVycmVkUAogICAg
IDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9qb2JEYXRhKFdURk1vdmUoam9iRGF0YSkpCiAg
ICAgLCBtX3Byb21pc2UoV1RGTW92ZShwcm9taXNlKSkKKyAgICAsIG1fY29udGV4dElkZW50aWZp
ZXIoY2xpZW50LmNvbnRleHRJZGVudGlmaWVyKCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCmluZGV4IGM4YTk3MGFmZDY3
Li5jMzBhNGZiODQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJKb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckpvYi5oCkBAIC02OCw2ICs2OCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
ZmV0Y2hTY3JpcHRXaXRoQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKKyAgICBj
b25zdCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciYgY29udGV4dElkZW50aWZpZXIoKSB7IHJl
dHVybiBtX2NvbnRleHRJZGVudGlmaWVyOyB9CisKIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtl
ckpvYihTZXJ2aWNlV29ya2VySm9iQ2xpZW50JiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgU2Vy
dmljZVdvcmtlckpvYkRhdGEmJik7CiAKQEAgLTgzLDcgKzg1LDcgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgbV9jb21wbGV0ZWQgeyBmYWxzZSB9OwogCi0gICAgUmVmPFJ1bkxvb3A+IG1fcnVuTG9v
cCB7IFJ1bkxvb3A6OmN1cnJlbnQoKSB9OworICAgIERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVy
IG1fY29udGV4dElkZW50aWZpZXI7CiAgICAgUmVmUHRyPFdvcmtlclNjcmlwdExvYWRlcj4gbV9z
Y3JpcHRMb2FkZXI7CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX2xhc3RSZXNwb25zZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
Q2xpZW50LmgKaW5kZXggNDE1YTY5Y2IxYTQuLmYxMDNiMjc4ZTM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgK
QEAgLTQxLDYgKzQxLDggQEAgY2xhc3MgU2VydmljZVdvcmtlckpvYkNsaWVudCB7CiBwdWJsaWM6
CiAgICAgdmlydHVhbCB+U2VydmljZVdvcmtlckpvYkNsaWVudCgpID0gZGVmYXVsdDsKIAorICAg
IHZpcnR1YWwgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIoKSA9
IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgam9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29y
a2VySm9iJiwgY29uc3QgRXhjZXB0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBqb2JSZXNv
bHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYsIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2Vy
Sm9iJiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24u
Y3BwCmluZGV4IGJmMGI0NzlmNzA2Li5mMjg5MGVhZjY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
LmNwcApAQCAtMTIxLDE4ICsxMjEsNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246
OnVwZGF0ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgaW4gd29ya2Vycy4KLSAgICBpZiAo
IWlzPERvY3VtZW50PigqY29udGV4dCkpIHsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoInNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24udXBkYXRlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQgaW4gd29ya2VycyIpIH0pOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byogY29udGFpbmVyID0gY29udGV4dC0+
c2VydmljZVdvcmtlckNvbnRhaW5lcigpOwotICAgIGlmICghY29udGFpbmVyKSB7Ci0gICAgICAg
IHByb21pc2UtPnJlamVjdChFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQogICAgIGF1dG8qIG5ld2VzdFdvcmtlciA9IGdldE5ld2VzdFdvcmtl
cigpOwogICAgIGlmICghbmV3ZXN0V29ya2VyKSB7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChF
eGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgibmV3ZXN0V29ya2VyIGlz
IG51bGwiKSkpOwpAQCAtMTQwLDcgKzEyOCw3IEBAIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbjo6dXBkYXRlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogU3VwcG9ydCB3b3JrZXIgdHlwZXMuCi0gICAgY29udGFpbmVyLT51cGRhdGVS
ZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25EYXRhLnNjb3BlVVJMLCBuZXdlc3RXb3JrZXItPnNj
cmlwdFVSTCgpLCBXb3JrZXJUeXBlOjpDbGFzc2ljLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBt
X2NvbnRhaW5lci0+dXBkYXRlUmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uRGF0YS5zY29wZVVS
TCwgbmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgV29ya2VyVHlwZTo6Q2xhc3NpYywgV1RGTW92
ZShwcm9taXNlKSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dW5yZWdp
c3RlcihSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmgKaW5kZXggZGRiMzA1ZDhm
ODIuLjhkMTUyZDM2Nzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclR5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oCkBAIC0yNyw4ICsyNywxMSBAQAogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRG9jdW1lbnRJZGVudGlmaWVyLmgiCisjaW5j
bHVkZSAiU2VydmljZVdvcmtlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvRW51bVRyYWl0
cy5oPgogI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisjaW5jbHVkZSA8d3RmL1Zh
cmlhbnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Nyw2ICs3MCw4IEBAIHVzaW5n
IFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVy
PFNXU2VydmVyVG9Db250ZXh0CiBlbnVtIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBl
IHsgfTsKIHVzaW5nIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgPSBPYmplY3RJZGVudGlm
aWVyPFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXJUeXBlPjsKIAordXNpbmcgRG9jdW1lbnRP
cldvcmtlcklkZW50aWZpZXIgPSBWYXJpYW50PERvY3VtZW50SWRlbnRpZmllciwgU2VydmljZVdv
cmtlcklkZW50aWZpZXI+OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIG5hbWVzcGFjZSBX
VEYgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328261</attachid>
            <date>2017-12-02 15:46:56 -0800</date>
            <delta_ts>2017-12-02 18:31:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180215-20171202154655.patch</filename>
            <type>text/plain</type>
            <size>32514</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzkyNmU4Mzk4ODJhOWNm
ZDY2NTljY2YzZDYyNzc2OTBiNmVmNTA4Yi4uZDY5YWYwYWNkMmEzMGVmMzY1NjMzNzFiNDA1Mjll
ZGQyYzcyYmRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTEyLTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBzZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLnVwZGF0ZSgpIGluc2lkZSBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDIxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi51cGRhdGUoKSBpbnNpZGUgc2VydmljZSB3b3JrZXJzLgorICAgICAg
ICBUaGUgY29kZSBwYXRocyBmb3Igam9iIHNjaGVkdWxpbmcgYW5kIHJlc29sdXRpb24gaGF2ZSBi
ZWVuIG1hZGUKKyAgICAgICAgdGhyZWFkIHNhZmUgYnkgaG9waW5nIHRvIHRoZSByaWdodCB0aHJl
YWQgd2hlbiBuZWNlc3NhcnkuIEluCisgICAgICAgIHBhcnRpY3VsYXIsIFNlcnZpY2VXb3JrZXJD
b250YWluZXIgYWx3YXlzIG1ha2VzIHN1cmUgdG8gdG8gYQorICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKCkgYmVjYXVzZSBjYWxsaW5nIG1ldGhvZHMgb24gdGhlCisgICAgICAgIFNXQ2xpZW50Q29u
bmVjdGlvbi4gQWxzbywgdGhlIFNXQ2xpZW50Q29ubmVjdGlvbiByZWxpZXMgb24KKyAgICAgICAg
U2VydmljZVdvcmtlckpvYjo6cG9zdFRhc2tUbygpIGJlZm9yZSBjYWxsaW5nIG1ldGhvZHMgb24g
dGhlCisgICAgICAgIGpvYi4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9zZWxmX3JlZ2lzdHJhdGlvbl91cGRhdGUuaHRtbAorCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVu
dENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29u
bmVjdGlvbjo6ZmluaXNoZWRGZXRjaGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTV0Ns
aWVudENvbm5lY3Rpb246OmZhaWxlZEZldGNoaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNXQ2xpZW50Q29ubmVjdGlvbjo6am9iUmVqZWN0ZWRJblNlcnZlcik6CisgICAgICAgIChXZWJD
b3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlvbkpv
YlJlc29sdmVkSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9u
OjpzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50
Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVwZGF0ZUZvdW5kRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpub3RpZnlDbGllbnRz
T2ZDb250cm9sbGVyQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlv
bjo6Y2xlYXJQZW5kaW5nSm9icyk6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rp
b246OnBvc3RUYXNrVG8pOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVs
ZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWls
ZWRXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0
aFVucmVnaXN0cmF0aW9uUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZExvYWRpbmdTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRGlkRmluaXNo
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpyZW1vdmVS
ZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
c2NoZWR1bGVUYXNrVG9GaXJlQ29udHJvbGxlckNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNvbnRleHRJZGVudGlmaWVyKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2I6OlNlcnZpY2VXb3JrZXJKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VySm9iLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Sm9iOjpjb250ZXh0SWRlbnRpZmllcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2JDbGllbnQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uOjp1cGRhdGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyVHlwZXMuaDoKKwogMjAxNy0xMi0wMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgYW4gQWxwaGFQcmVtdWx0aXBsaWNhdGlvbiBlbnVtIGFu
ZCB1c2UgaXQgY29uc2lzdGVudGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IGVjNTBmNjUyMjRmOTYxYjcwNTE4
MGQyZmZlZDIzZjE3N2VkNmQ2NjEuLmIzZjU2Yzc0ZjM4ZDJiODFhNmIwNDU2MzlhODlmMWYwNmNm
ODk2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVu
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0Ns
aWVudENvbm5lY3Rpb24uY3BwCkBAIC00Nyw2ICs0Nyw4IEBAIFNXQ2xpZW50Q29ubmVjdGlvbjo6
flNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogdm9pZCBTV0NsaWVudENvbm5lY3Rp
b246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHsKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3NjaGVkdWxlZEpvYnMuYWRk
KGpvYi5pZGVudGlmaWVyKCksICZqb2IpOwogICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBh
ZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKQEAgLTU1LDYgKzU3LDcgQEAgdm9pZCBTV0NsaWVudENv
bm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIAogdm9pZCBTV0Ns
aWVudENvbm5lY3Rpb246OmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYg
am9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIEFTU0VSVChtX3NjaGVkdWxlZEpvYnMuZ2V0KGpvYi5pZGVudGlmaWVyKCkpID09ICZq
b2IpOwogCiAgICAgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IGpvYi5kYXRhKCkuaWRl
bnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJhdGlvbktleSgpLCBzY3JpcHQsIHsgfSB9KTsK
QEAgLTYyLDYgKzY1LDcgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaGVkRmV0Y2hp
bmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBTdHIKIAogdm9pZCBTV0NsaWVu
dENvbm5lY3Rpb246OmZhaWxlZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2JzLmdldChqb2IuaWRlbnRpZmllcigpKSA9PSAm
am9iKTsKIAogICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoeyBqb2IuZGF0YSgpLmlk
ZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKSwgeyB9LCBlcnJvciB9KTsK
QEAgLTY5LDQwICs3Myw1MyBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6ZmFpbGVkRmV0Y2hp
bmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBSZXNvdQogCiB2b2lkIFNXQ2xp
ZW50Q29ubmVjdGlvbjo6am9iUmVqZWN0ZWRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyLCBjb25zdCBFeGNlcHRpb25EYXRhJiBl
eGNlcHRpb25EYXRhKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBhdXRv
IGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50aWZp
ZXIpOwogICAgIGlmICgham9iKSB7CiAgICAgICAgIExPR19FUlJPUigiSm9iICVzIHJlamVjdGVk
IGZyb20gc2VydmVyLCBidXQgd2FzIG5vdCBmb3VuZCIsIGpvYkRhdGFJZGVudGlmaWVyLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihleGNlcHRpb25EYXRhLnRvRXhjZXB0aW9uKCkpOwor
ICAgIHBvc3RUYXNrVG8oam9iLT5jb250ZXh0SWRlbnRpZmllcigpLCBbam9iLCBleGNlcHRpb25E
YXRhID0gZXhjZXB0aW9uRGF0YS5pc29sYXRlZENvcHkoKV0geworICAgICAgICBqb2ItPmZhaWxl
ZFdpdGhFeGNlcHRpb24oZXhjZXB0aW9uRGF0YS50b0V4Y2VwdGlvbigpKTsKKyAgICB9KTsKIH0K
IAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2
ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmll
ciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiByZWdpc3RyYXRpb25EYXRhLCBTaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWQgc2hvdWxkTm90aWZ5V2hlblJlc29sdmVkKQogeworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50
YWtlKGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50aWZpZXIpOwogICAgIGlmICgham9iKSB7CiAg
ICAgICAgIExPR19FUlJPUigiSm9iICVzIHJlc29sdmVkIGluIHNlcnZlciwgYnV0IHdhcyBub3Qg
Zm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGtleSA9IHJlZ2lzdHJhdGlvbkRh
dGEua2V5OwotICAgIGpvYi0+cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0
cmF0aW9uRGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7CisgICAgcG9zdFRhc2tUbyhq
b2ItPmNvbnRleHRJZGVudGlmaWVyKCksIFtqb2IsIHJlZ2lzdHJhdGlvbkRhdGEgPSByZWdpc3Ry
YXRpb25EYXRhLmlzb2xhdGVkQ29weSgpLCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWRdKCkgbXV0
YWJsZSB7CisgICAgICAgIGpvYi0+cmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFdURk1vdmUocmVn
aXN0cmF0aW9uRGF0YSksIHNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCk7CisgICAgfSk7CiB9CiAK
IHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1bnJlZ2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2
ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmll
ciwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCiAgICAgYXV0byBqb2IgPSBtX3NjaGVkdWxlZEpvYnMudGFrZShqb2JEYXRhSWRlbnRp
Zmllci5qb2JJZGVudGlmaWVyKTsKICAgICBpZiAoIWpvYikgewogICAgICAgICBMT0dfRVJST1Io
IkpvYiAlcyByZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlk
ZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgam9iLT5yZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdCh1bnJl
Z2lzdHJhdGlvblJlc3VsdCk7CisgICAgcG9zdFRhc2tUbyhqb2ItPmNvbnRleHRJZGVudGlmaWVy
KCksIFtqb2IsIHVucmVnaXN0cmF0aW9uUmVzdWx0XSB7CisgICAgICAgIGpvYi0+cmVzb2x2ZWRX
aXRoVW5yZWdpc3RyYXRpb25SZXN1bHQodW5yZWdpc3RyYXRpb25SZXN1bHQpOworICAgIH0pOwog
fQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyKQog
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBhdXRvIGpvYiA9IG1fc2NoZWR1
bGVkSm9icy5nZXQoam9iRGF0YUlkZW50aWZpZXIuam9iSWRlbnRpZmllcik7CiAgICAgaWYgKCFq
b2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJKb2IgJXMgaW5zdHJ1Y3RlZCB0byBzdGFydCBmZXRj
aCBmcm9tIHNlcnZlciwgYnV0IGpvYiB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtMTE0LDExICsxMzEsMTUgQEAgdm9p
ZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JTZXJ2ZXIoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGFJZGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGpvYi0+
c3RhcnRTY3JpcHRGZXRjaCgpOworICAgIHBvc3RUYXNrVG8oam9iLT5jb250ZXh0SWRlbnRpZmll
cigpLCBbam9iXSB7CisgICAgICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOworICAgIH0pOwog
fQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFJl
ZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgU2VydmljZVdvcmtlckRhdGEmJiBz
b3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCiAgICAgLy8gRklYTUU6IGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZp
ZXIgY2FuIG9ubHkgaWRlbnRpZnkgYSBEb2N1bWVudCBhdCB0aGUgbW9tZW50LgogICAgIGF1dG8q
IGRlc3RpbmF0aW9uRG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGRl
c3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIpOwogICAgIGlmICghZGVzdGluYXRpb25Eb2N1bWVu
dCkKQEAgLTEzNyw2ICsxNTgsOCBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlcwogCiB2b2lkIFNX
Q2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
blN0YXRlIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYgc2Vy
dmljZVdvcmtlckRhdGEpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtp
ZGVudGlmaWVyLCBzdGF0ZSwgJnNlcnZpY2VXb3JrZXJEYXRhXSAoYXV0byYgd29ya2VyVGhyZWFk
KSB7CiAgICAgICAgIHdvcmtlclRocmVhZC50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW2lk
ZW50aWZpZXIsIHN0YXRlLCBzZXJ2aWNlV29ya2VyRGF0YSA9IGNyb3NzVGhyZWFkQ29weShzZXJ2
aWNlV29ya2VyRGF0YSldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRhaW5lciA9IGNvbnRleHQuc2VydmljZVdvcmtl
ckNvbnRhaW5lcigpKQpAQCAtMTUyLDYgKzE3NSw4IEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9u
Ojp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
CiAKIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVXb3JrZXJTdGF0ZShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyU3RhdGUgc3RhdGUpCiB7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVudGlmaWVyLCBzdGF0ZV0gKGF1
dG8mIHdvcmtlclRocmVhZCkgewogICAgICAgICB3b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9v
cCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBzdGF0ZV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXIgPSBjb250ZXh0
LnNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcikpCkBAIC0xNjcsNiArMTkyLDggQEAgdm9pZCBTV0Ns
aWVudENvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0YXRlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFMKIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZpcmVVcGRhdGVGb3Vu
ZEV2ZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVudGlmaWVyXSAoYXV0byYg
d29ya2VyVGhyZWFkKSB7CiAgICAgICAgIHdvcmtlclRocmVhZC50aHJlYWQoKS5ydW5Mb29wKCku
cG9zdFRhc2soW2lkZW50aWZpZXJdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
ICAgICAgICAgICAgIGlmIChhdXRvKiBjb250YWluZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXJD
b250YWluZXIoKSkKQEAgLTE4Miw2ICsyMDksNyBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6
ZmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZQog
CiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6bm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNoYW5n
ZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRpZmllcj4mIGNvbnRleHRJZGVudGlmaWVycywg
U2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9sbGVyKQogeworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgQVNTRVJUKCFjb250ZXh0SWRlbnRpZmllcnMuaXNFbXB0eSgpKTsKIAog
ICAgIGZvciAoYXV0byYgY2xpZW50SWRlbnRpZmllciA6IGNvbnRleHRJZGVudGlmaWVycykgewpA
QCAtMjAwLDkgKzIyOCwzMiBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6bm90aWZ5Q2xpZW50
c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SQogCiB2b2lkIFNXQ2xp
ZW50Q29ubmVjdGlvbjo6Y2xlYXJQZW5kaW5nSm9icygpCiB7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKwogICAgIGF1dG8gam9icyA9IFdURk1vdmUobV9zY2hlZHVsZWRKb2JzKTsKLSAg
ICBmb3IgKGF1dG8mIGpvYiA6IGpvYnMudmFsdWVzKCkpCi0gICAgICAgIGpvYi0+ZmFpbGVkV2l0
aEV4Y2VwdGlvbihFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwg
ZXJyb3IiKSB9KTsKKyAgICBmb3IgKGF1dG8mIGpvYiA6IGpvYnMudmFsdWVzKCkpIHsKKyAgICAg
ICAgcG9zdFRhc2tUbyhqb2ItPmNvbnRleHRJZGVudGlmaWVyKCksIFtqb2JdIHsKKyAgICAgICAg
ICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKSB9KTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2
b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdFRhc2tUbyhjb25zdCBEb2N1bWVudE9yV29ya2Vy
SWRlbnRpZmllciYgY29udGV4dElkZW50aWZpZXIsIFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRh
c2spCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIHN3aXRjaE9uKGNvbnRl
eHRJZGVudGlmaWVyLCBbJl0oRG9jdW1lbnRJZGVudGlmaWVyIGlkZW50aWZpZXIpIHsKKyAgICAg
ICAgYXV0byogZG9jdW1lbnQgPSBEb2N1bWVudDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGlkZW50
aWZpZXIpOworICAgICAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBkb2N1bWVudC0+cG9zdFRhc2soW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgeworICAgICAgICAgICAgdGFzaygpOworICAgICAgICB9KTsKKyAgICB9
LCBbJl0oU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikgeworICAgICAgICBTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihpZGVudGlm
aWVyLCBbdGFzayA9IFdURk1vdmUodGFzayldKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYpIHsK
KyAgICAgICAgICAgIHRhc2soKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
V0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA1OWI2YmI2ODRjYWYyNDIyOGI2YzI4N2ZjZWQyMmFi
YTBmMzY3N2QzLi5lYWQ5ZWU4NDc3M2Q0N2NiNjU2OGExNzU3MTE0ZjVhODg5NThiNmU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlv
bi5oCkBAIC05NSw2ICs5NSw3IEBAIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IG5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJDaGFuZ2UoY29uc3QgSGFzaFNldDxEb2N1bWVudElk
ZW50aWZpZXI+JiBjb250ZXh0SWRlbnRpZmllcnMsIFNlcnZpY2VXb3JrZXJEYXRhJiYgbmV3Q29u
dHJvbGxlcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGVuZGluZ0pvYnMoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RUYXNrVG8oY29uc3QgRG9jdW1lbnRPcldvcmtl
cklkZW50aWZpZXImLCBXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggMjdkZjlhMDVhOGFkZjJjY2I2N2ExY2Mw
OGFlMjUxOTdlOWE2MzI0My4uNGY4NDIzYTU2ZGZhZGJhYzc1NjQ5ZGRlNmI3MjljZWE3YWRlNjM1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5o
IgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNlcHRpb24uaCIKQEAgLTQw
LDkgKzQxLDExIEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgorI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJK
b2IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKICNp
bmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9T
Y29wZS5oPgpAQCAtMTk2LDE1ICsxOTksMjAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJgogCiB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlSm9iKFJlZjxTZXJ2aWNlV29ya2Vy
Sm9iPiYmIGpvYikKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJl
YWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyNlbmRpZgorCiAgICAgQVNTRVJUKG1fc3dDb25uZWN0
aW9uKTsKIAogICAgIHNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKIAotICAgIFNlcnZpY2VXb3Jr
ZXJKb2ImIHJhd0pvYiA9IGpvYi5nZXQoKTsKLSAgICBhdXRvIHJlc3VsdCA9IG1fam9iTWFwLmFk
ZChyYXdKb2IuaWRlbnRpZmllcigpLCBXVEZNb3ZlKGpvYikpOworICAgIGF1dG8gcmVzdWx0ID0g
bV9qb2JNYXAuYWRkKGpvYi0+aWRlbnRpZmllcigpLCBqb2IuY29weVJlZigpKTsKICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCi0gICAgbV9zd0Nvbm5lY3Rp
b24tPnNjaGVkdWxlSm9iKHJhd0pvYik7CisgICAgY2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlv
biA9IG1fc3dDb25uZWN0aW9uLCBqb2IgPSBXVEZNb3ZlKGpvYildIHsKKyAgICAgICAgY29ubmVj
dGlvbi0+c2NoZWR1bGVKb2Ioam9iKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiBjbGllbnRVUkwsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAgLTI5Myw2ICszMDEsMTAgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydE1lc3NhZ2VzKCkKIAogdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwg
Y29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCiB7CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VS
VChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKwogICAgIGlm
IChhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CiAgICAgICAgIGNv
bnRleHQtPnBvc3RUYXNrKFtqb2IgPSBtYWtlUmVmKGpvYiksIGV4Y2VwdGlvbl0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgICAgIGpvYi0+cHJvbWlzZSgpLnJlamVjdChleGNl
cHRpb24pOwpAQCAtMzAzLDEyICszMTUsMjAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QKIAog
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3Vu
ZEV2ZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7
CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRU
aHJlYWQoKSk7CisjZW5kaWYKKwogICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBtX3JlZ2lz
dHJhdGlvbnMuZ2V0KGlkZW50aWZpZXIpKQogICAgICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxl
VGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYgam9i
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIGRhdGEsIFNob3VsZE5vdGlmeVdoZW5S
ZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQpCiB7CisjaWZuZGVmIE5ERUJVRworICAg
IEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKwog
ICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKICAgICAg
ICAgam9iRGlkRmluaXNoKGpvYik7CiAgICAgfSk7CkBAIC0zNDUsNiArMzY1LDEwIEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZp
Y2VXb3JrZXJKb2ImIGpvYiwKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNv
bHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGJvb2wg
dW5yZWdpc3RyYXRpb25SZXN1bHQpCiB7CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVChtX2Ny
ZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKwogICAgIGF1dG8gZ3Vh
cmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMsICZqb2JdIHsKICAgICAgICAgam9iRGlkRmlu
aXNoKGpvYik7CiAgICAgfSk7CkBAIC0zNjIsMTIgKzM4NiwxOCBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VX
b3JrZXJKbwogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hG
b3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iKQogeworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NF
UlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisKICAgICBM
T0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBzdGFydGluZyBzY3Jp
cHQgZmV0Y2ggZm9yIGpvYiAlcyIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24gY2FsbGVkIGJ1
dCB0aGUgY29udGFpbmVyJ3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCBpcyBnb25lIik7Ci0gICAg
ICAgIG1fc3dDb25uZWN0aW9uLT5mYWlsZWRGZXRjaGluZ1NjcmlwdChqb2IsIHsgZXJyb3JEb21h
aW5XZWJLaXRJbnRlcm5hbCwgMCwgam9iLmRhdGEoKS5zY3JpcHRVUkwsIEFTQ0lJTGl0ZXJhbCgi
QXR0ZW1wdCB0byBmZXRjaCBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgd2l0aCBubyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0IikgfSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24g
PSBtX3N3Q29ubmVjdGlvbiwgam9iID0gbWFrZVJlZihqb2IpXSB7CisgICAgICAgICAgICBjb25u
ZWN0aW9uLT5mYWlsZWRGZXRjaGluZ1NjcmlwdChqb2IsIHsgZXJyb3JEb21haW5XZWJLaXRJbnRl
cm5hbCwgMCwgam9iLT5kYXRhKCkuc2NyaXB0VVJMLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8g
ZmV0Y2ggc2VydmljZSB3b3JrZXIgc2NyaXB0IHdpdGggbm8gU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCIpIH0pOworICAgICAgICB9KTsKICAgICAgICAgam9iRGlkRmluaXNoKGpvYik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0zNzcsMjMgKzQwNywzOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iKQog
CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChT
ZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFN0cmluZyYgc2NyaXB0KQogeworI2lmbmRlZiBO
REVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOwor
I2VuZGlmCisKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAl
cCBmaW5pc2hlZCBmZXRjaGluZyBzY3JpcHQgZm9yIGpvYiAlcyIsIHRoaXMsIGpvYi5pZGVudGlm
aWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgbV9zd0Nvbm5lY3Rp
b24tPmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoam9iLCBzY3JpcHQpOworICAgIGNhbGxPbk1haW5U
aHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgam9iID0gbWFrZVJlZihqb2IpLCBz
Y3JpcHQgPSBzY3JpcHQuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgY29ubmVjdGlvbi0+Zmlu
aXNoZWRGZXRjaGluZ1NjcmlwdChqb2IsIHNjcmlwdCk7CisgICAgfSk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2Vy
Sm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbj4mJiBleGNlcHRpb24pCiB7CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVChtX2NyZWF0
aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKwogICAgIExPRyhTZXJ2aWNl
V29ya2VyLCAiU2V2aWNlV29ya2VyQ29udGFpbmVyICVwIGZhaWxlZCBmZXRjaGluZyBzY3JpcHQg
Zm9yIGpvYiAlcyIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogCiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgam9iLnByb21pc2UoKS5y
ZWplY3QoKmV4Y2VwdGlvbik7CiAKLSAgICBtX3N3Q29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hpbmdT
Y3JpcHQoam9iLCBlcnJvcik7CisgICAgY2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1f
c3dDb25uZWN0aW9uLCBqb2IgPSBtYWtlUmVmKGpvYiksIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRD
b3B5KCldIHsKKyAgICAgICAgY29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iLCBl
cnJvcik7CisgICAgfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRGlk
RmluaXNoKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikKIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgQVNT
RVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyNlbmRpZgorCiAgICAg
YXV0byB0YWtlbiA9IG1fam9iTWFwLnRha2Uoam9iLmlkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJU
X1VOVVNFRCh0YWtlbiwgIXRha2VuIHx8IHRha2VuLT5wdHIoKSA9PSAmam9iKTsKIApAQCAtNDI5
LDE4ICs0NzUsMzAgQEAgU1dDbGllbnRDb25uZWN0aW9uJiBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OjplbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OmFkZFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRp
b24pCiB7CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1
cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKwogICAgIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigp
LmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihyZWdpc3RyYXRpb24uaWRlbnRp
ZmllcigpKTsKICAgICBtX3JlZ2lzdHJhdGlvbnMuYWRkKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVy
KCksICZyZWdpc3RyYXRpb24pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJl
bW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24p
CiB7CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJl
bnRUaHJlYWQoKSk7CisjZW5kaWYKKwogICAgIG1fc3dDb25uZWN0aW9uLT5yZW1vdmVTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIocmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSk7CiAg
ICAgbV9yZWdpc3RyYXRpb25zLnJlbW92ZShyZWdpc3RyYXRpb24uaWRlbnRpZmllcigpKTsKIH0K
IAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVDb250cm9s
bGVyQ2hhbmdlRXZlbnQoKQogeworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlv
blRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisKICAgICBpZiAobV9pc1N0b3Bw
ZWQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDU4LDYgKzUxNiwxOCBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OnN0b3AoKQogICAgIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiB9
CiAKK0RvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNv
bnRleHRJZGVudGlmaWVyKCkKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAgQVNTRVJUKG1fY3JlYXRp
b25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLnRocmVh
ZCgpLmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpLmlkZW50aWZpZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5k
ZXggODEyYWYzNDAzNzAwMTRiZGU5NThmYWQ2NzdmNDllNGVmYTJkNTZmZC4uMmQ5YTlmMDQ2YWJi
NGFjZWYwMzYxNzk4ZjYzZjE2MTg4ZDgyN2QwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCkBAIC05Niw2ICs5
Niw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBqb2JEaWRGaW5pc2goU2VydmljZVdvcmtlckpvYiYp
OwogCiAgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
cigpIGZpbmFsOworICAgIERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyIGNvbnRleHRJZGVudGlm
aWVyKCkgZmluYWw7CisKICAgICBTV0NsaWVudENvbm5lY3Rpb24mIGVuc3VyZVNXQ2xpZW50Q29u
bmVjdGlvbigpOwogCiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2IuY3BwCmluZGV4IDgzMzZhNzgwOThhNzA1MzllNDhlOGIxODQxZTcxYjMxN2ZhMWYz
ZmQuLmY3M2Y5MDcyYTAzYzNjMDVlMzI2MTU0N2E4ODkxYWRhOTU3MjQwOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKQEAg
LTQxLDYgKzQxLDcgQEAgU2VydmljZVdvcmtlckpvYjo6U2VydmljZVdvcmtlckpvYihTZXJ2aWNl
V29ya2VySm9iQ2xpZW50JiBjbGllbnQsIFJlZjxEZWZlcnJlZFAKICAgICA6IG1fY2xpZW50KGNs
aWVudCkKICAgICAsIG1fam9iRGF0YShXVEZNb3ZlKGpvYkRhdGEpKQogICAgICwgbV9wcm9taXNl
KFdURk1vdmUocHJvbWlzZSkpCisgICAgLCBtX2NvbnRleHRJZGVudGlmaWVyKGNsaWVudC5jb250
ZXh0SWRlbnRpZmllcigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAppbmRleCBjOGE5NzBhZmQ2NzA1ZTBkOWQxODZjOGIz
ZTc1ZTZjMGU4ZjJjY2NjLi5jMzBhNGZiODQ4OTczODljMTViNjI3ZjFkZjlkZWZlMjg5MTc5ZTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckpvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Sm9iLmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBmZXRjaFNjcmlwdFdp
dGhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAorICAgIGNvbnN0IERvY3VtZW50
T3JXb3JrZXJJZGVudGlmaWVyJiBjb250ZXh0SWRlbnRpZmllcigpIHsgcmV0dXJuIG1fY29udGV4
dElkZW50aWZpZXI7IH0KKwogcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VySm9iKFNlcnZpY2VX
b3JrZXJKb2JDbGllbnQmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYmKTsKIApAQCAtODMsNyArODUsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2NvbXBs
ZXRlZCB7IGZhbHNlIH07CiAKLSAgICBSZWY8UnVuTG9vcD4gbV9ydW5Mb29wIHsgUnVuTG9vcDo6
Y3VycmVudCgpIH07CisgICAgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIgbV9jb250ZXh0SWRl
bnRpZmllcjsKICAgICBSZWZQdHI8V29ya2VyU2NyaXB0TG9hZGVyPiBtX3NjcmlwdExvYWRlcjsK
ICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fbGFzdFJlc3BvbnNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2JDbGllbnQuaAppbmRl
eCA0MTVhNjljYjFhNDYyZWQ1MTBhMTA1NjYzNDVmMzA5ZDVlMTgxYjg4Li5mMTAzYjI3OGUzN2Yz
N2UxYjI5NDM5YjMzMjUxMDMxMTBmNTYwZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50LmgKQEAgLTQxLDYgKzQx
LDggQEAgY2xhc3MgU2VydmljZVdvcmtlckpvYkNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+U2VydmljZVdvcmtlckpvYkNsaWVudCgpID0gZGVmYXVsdDsKIAorICAgIHZpcnR1YWwgRG9j
dW1lbnRPcldvcmtlcklkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIoKSA9IDA7CisKICAgICB2
aXJ0dWFsIHZvaWQgam9iRmFpbGVkV2l0aEV4Y2VwdGlvbihTZXJ2aWNlV29ya2VySm9iJiwgY29u
c3QgRXhjZXB0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBqb2JSZXNvbHZlZFdpdGhSZWdp
c3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
JiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBqb2JS
ZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChTZXJ2aWNlV29ya2VySm9iJiwgYm9vbCB1
bnJlZ2lzdHJhdGlvblJlc3VsdCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGJm
MGI0NzlmNzA2N2M3OWFiYzA0MWRjYmFkMWU2ZmU5NmI1ZjJkZGMuLmYyODkwZWFmNjhlN2I5MjM1
MGY4ODQ5NDk1ODQ2MzY4MDQzMGU5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTEy
MSwxOCArMTIxLDYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjp1cGRhdGUoUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGluIHdvcmtlcnMuCi0gICAgaWYgKCFpczxEb2N1bWVu
dD4oKmNvbnRleHQpKSB7Ci0gICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnVw
ZGF0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGluIHdvcmtlcnMiKSB9KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGF1dG8qIGNvbnRhaW5lciA9IGNvbnRleHQtPnNlcnZpY2VXb3Jr
ZXJDb250YWluZXIoKTsKLSAgICBpZiAoIWNvbnRhaW5lcikgewotICAgICAgICBwcm9taXNlLT5y
ZWplY3QoRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KICAgICBhdXRvKiBuZXdlc3RXb3JrZXIgPSBnZXROZXdlc3RXb3JrZXIoKTsKICAgICBp
ZiAoIW5ld2VzdFdvcmtlcikgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uKElu
dmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwoIm5ld2VzdFdvcmtlciBpcyBudWxsIikpKTsK
QEAgLTE0MCw3ICsxMjgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnVwZGF0
ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgfQogCiAgICAgLy8gRklYTUU6
IFN1cHBvcnQgd29ya2VyIHR5cGVzLgotICAgIGNvbnRhaW5lci0+dXBkYXRlUmVnaXN0cmF0aW9u
KG1fcmVnaXN0cmF0aW9uRGF0YS5zY29wZVVSTCwgbmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwg
V29ya2VyVHlwZTo6Q2xhc3NpYywgV1RGTW92ZShwcm9taXNlKSk7CisgICAgbV9jb250YWluZXIt
PnVwZGF0ZVJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbkRhdGEuc2NvcGVVUkwsIG5ld2VzdFdv
cmtlci0+c2NyaXB0VVJMKCksIFdvcmtlclR5cGU6OkNsYXNzaWMsIFdURk1vdmUocHJvbWlzZSkp
OwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OnVucmVnaXN0ZXIoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5oCmluZGV4IGRkYjMwNWQ4ZjgyMWQyMzRmZGQz
YTU1NjkyNGE2ZjFmOTk5MTBiMGEuLjhkMTUyZDM2Nzk0YTRiNDRkZjM1NDg2MWU0ZjIzNDFlOTY1
ZGRhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclR5cGVzLmgKQEAgLTI3LDggKzI3LDExIEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKKyNpbmNsdWRlICJEb2N1bWVudElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5j
bHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY3LDYgKzcwLDggQEAgdXNpbmcgU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJU
b0NvbnRleHQKIGVudW0gU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllclR5cGUgeyB9OwogdXNp
bmcgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8U1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+OwogCit1c2luZyBEb2N1bWVudE9yV29ya2VySWRl
bnRpZmllciA9IFZhcmlhbnQ8RG9jdW1lbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRp
Zmllcj47CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggM2U0MWI4YjZlMjFiMmFhZmU4NTk2N2VjYWVhZDdiY2I3ZDJmOTg5OC4uMjA1Y2RjZThkN2Y1
Y2Q5NGY0NDc0ZDdmZTBkMmIwMzRiZTFlZWZjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3
LTEyLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9y
dCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnVwZGF0ZSgpIGluc2lkZSBzZXJ2aWNlIHdvcmtl
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDIx
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBs
YXlvdXQgdGVzdCBjb3ZlcmFnZSBhbmQgdW5za2lwIFdQVCB0ZXN0IHRoYXQgbm8gbG9uZ2VyIHRp
bWVzIG91dC4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlbGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS13
b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Nl
bGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlbGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS5odG1sOiBB
ZGRlZC4KKwogMjAxNy0xMi0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAK
ICAgICAgICAgSW1wbGVtZW50IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNj
bGllbnRzLWdldGFsbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggZTQ1OWE3Y2Zk
ZGMwNmNkYWQwYzU0MzZjMGRjYzRiMzdlMGQ0ZTIwZC4uZjk1ZGQyNWY3ODVmODg5ODk0N2MxNDc2
ZGMzMzI4MzU0YjI4OTM5ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTctMTItMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdXBwb3J0IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24udXBkYXRlKCkgaW5zaWRl
IHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgwMjE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmViYXNlbGluZSBXUFQgdGVzdCB0aGF0IG5vIGxvbmdlciB0aW1lcyBvdXQuIFRo
ZSB0ZXN0IHN0aWxsIGZhaWxzIGV2ZW4KKyAgICAgICAgdGhvdWdoIHdlIHN1cHBvcnQgdXBkYXRl
KCkuIFRoZSBpc3N1ZSBpcyB0aGF0IHRoZSBzZWNvbmQgZnJhbWUgbG9hZAorICAgICAgICB1c2Vz
IHRoZSBuZXcgd29ya2VyIChiZWNhdXNlIG9mIHRoZSB1cGRhdGUoKSkgaW5zdGVhZCBvZiB0aGUg
b2xkIG9uZS4KKyAgICAgICAgVGhlIHRlc3Qgc2VlbXMgdG8gZXhwZWN0IHRoYXQgdGhlIG5ldyBz
ZXJ2aWNlIHdvcmtlciBpcyBzdGlsbCBpbgorICAgICAgICB3YWl0aW5nIHN0YXRlIGF0IHRoZSBw
b2ludCB0aGUgc2Vjb25kIGZyYW1lIGlzIGxvYWRlZC4gSG93ZXZlciwgZm9yIHVzCisgICAgICAg
IGl0IGlzIGFscmVhZHkgYWN0aXZhdGVkLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUv
dXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAxNy0xMi0wMiAgWW91ZW5uIEZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGh0dHBzOi8vdzNjLmdpdGh1
Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldGFsbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
NWRkM2FmY2E2MmY2YTE2ZjcyZTFhY2E5NmIzZmMzNzgzMzM1NjVmNS4uNmY5YjMzY2IxYjZmZWIx
YTdmMjNlNDg2NjFlNjM2OTUxMmE0ZDI1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xNDcsNyAr
MTQ3LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZWN1cmUtY29udGV4dHMv
c2hhcmVkLXdvcmtlci1zZWN1cmUtZmlyc3QuaHR0cHMKIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvZmV0Y2gvYXBpL2Fib3J0L2dlbmVyYWwtc2VydmljZXdvcmtlci5odHRwcy5odG1s
IFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUvZXh0ZW5kYWJsZS1tZXNz
YWdlLWV2ZW50Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS91bnJlZ2lzdGVyLmh0dHBzLmh0bWwgWyBTa2lwIF0KLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS91cGRhdGUuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvY2xpZW50cy1tYXRj
aGFsbC1vbi1ldmFsdWF0aW9uLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2RldGFjaGVkLWNv
bnRleHQuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZXh0ZW5kYWJsZS1ldmVudC13YWl0dW50
aWwuaHR0cHMuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlbGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS13b3Jr
ZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMv
c2VsZl9yZWdpc3RyYXRpb25fdXBkYXRlLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYjM2YWNiMDky
Nzc2MWE1YWViMzI0MGNlYzU2YThjN2Q3Yzc0MzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlbGZfcmVnaXN0cmF0
aW9uX3VwZGF0ZS13b3JrZXIuanMKQEAgLTAsMCArMSw0IEBACitzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKKyAgICBzZWxmLnJlZ2lzdHJhdGlvbi51cGRhdGUo
KTsKK30pOworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9zZWxmX3JlZ2lzdHJhdGlvbl91cGRhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VsZl9yZWdpc3RyYXRpb25fdXBkYXRlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mN2UzZjU4Y2Q3N2JmNjU0NWI3MjUzZjU0NTQwYjcyYWQ1NGQ5
NmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2Uvc2VsZl9yZWdpc3RyYXRpb25fdXBkYXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcg
QEAKKyogQWRkIGJhc2ljIHRlc3RpbmcgZm9yIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5yZWdp
c3RyYXRpb24udXBkYXRlKCkKKworUEFTUzogcmVnaXN0cmF0aW9uIHdhcyBzdWNjZXNzZnVseSB1
cGRhdGVkIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlcgorUEFTUzogc2VydmljZSB3b3JrZXIgYmVjYW1l
IHJlZHVuZGFudAorUEFTUzogT2xkIHdvcmtlciBpcyBzdGlsbCB0aGUgcmVnaXN0cmF0aW9uJ3Mg
YWN0aXZlIHdvcmtlcgorUEFTUzogTmV3IHdvcmtlciBzaG91bGQgYmUgdGhlIHJlZ2lzdHJhdGlv
bidzIHdhaXRpbmcgd29ya2VyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3NlbGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VsZl9yZWdpc3RyYXRpb25fdXBkYXRlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2M2NDZhZTkwMzIwMzg0OGQzNmFjNzRlMWMyMTA4N2Y5NWUyNjgxMQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L3NlbGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3ctdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2xvZygiKiBBZGQgYmFzaWMgdGVzdGluZyBmb3Ig
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnJlZ2lzdHJhdGlvbi51cGRhdGUoKSIpOworbG9nKCIi
KTsKKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9zZWxmX3Jl
Z2lzdHJhdGlvbl91cGRhdGUtd29ya2VyLmpzIiwgeyB9KS50aGVuKGZ1bmN0aW9uKF9yZWdpc3Ry
YXRpb24pIHsKKyAgICByZWdpc3RyYXRpb24gPSBfcmVnaXN0cmF0aW9uOworICAgIHdvcmtlciA9
IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgd2FpdEZvclN0YXRlKHdvcmtlciwgImFj
dGl2YXRlZCIpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hZGRFdmVu
dExpc3RlbmVyKCJ1cGRhdGVmb3VuZCIsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbG9nKCJQ
QVNTOiByZWdpc3RyYXRpb24gd2FzIHN1Y2Nlc3NmdWx5IHVwZGF0ZWQgYnkgdGhlIHNlcnZpY2Ug
d29ya2VyIik7CisgICAgICAgICAgICB3YWl0Rm9yU3RhdGUod29ya2VyLCAicmVkdW5kYW50Iiku
dGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBsb2coIlBBU1M6IHNlcnZpY2Ugd29y
a2VyIGJlY2FtZSByZWR1bmRhbnQiKTsKKyAgICAgICAgICAgICAgICBpZiAocmVnaXN0cmF0aW9u
LmFjdGl2ZSA9PT0gd29ya2VyKQorICAgICAgICAgICAgICAgICAgICBsb2coIlBBU1M6IE9sZCB3
b3JrZXIgaXMgc3RpbGwgdGhlIHJlZ2lzdHJhdGlvbidzIGFjdGl2ZSB3b3JrZXIiKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvZygiRkFJTDogT2xkIHdvcmtl
ciBpcyBzdGlsbCB0aGUgcmVnaXN0cmF0aW9uJ3MgYWN0aXZlIHdvcmtlciIpOworCisgICAgICAg
ICAgICAgICAgaWYgKCFzZWxmLnJlZ2lzdHJhdGlvbi53YWl0aW5nIHx8IHNlbGYucmVnaXN0cmF0
aW9uLndhaXRpbmcgPT09IHdvcmtlcikKKyAgICAgICAgICAgICAgICAgICAgbG9nKCJGQUlMOiBO
ZXcgd29ya2VyIHNob3VsZCBiZSB0aGUgcmVnaXN0cmF0aW9uJ3Mgd2FpdGluZyB3b3JrZXIiKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGxvZygiUEFTUzogTmV3
IHdvcmtlciBzaG91bGQgYmUgdGhlIHJlZ2lzdHJhdGlvbidzIHdhaXRpbmcgd29ya2VyIik7Cisg
ICAgICAgICAgICAgICAgZmluaXNoU1dUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgidXBkYXRlIik7CisgICAgfSk7Cit9KTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlL3VwZGF0ZS5odHRwcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUvdXBkYXRlLmh0dHBzLWV4
cGVjdGVkLnR4dAppbmRleCA4NjExOTZkNDhhZjcyMzQwMWMzOWRlOWY4NzI5NWExYzgyZTZiZjFj
Li41ZmM5M2ZkZDgyYWJjMmFiZGYyMThjMGFiOGUzNTFmMTAxNGIwNzA5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUvdXBkYXRlLmh0dHBzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUvdXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsxLDQgQEAKIAogCi1IYXJuZXNz
IEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBVcGRhdGUgYSByZWdp
c3RyYXRpb24gb24gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlIFRlc3QgdGltZWQgb3V0CitGQUlM
IFVwZGF0ZSBhIHJlZ2lzdHJhdGlvbiBvbiBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgYXNzZXJ0
X2VxdWFsczogZXZlbnRzIHNlZW4gYnkgdGhlIHdvcmtlciBleHBlY3RlZCAidXBkYXRlZm91bmQs
YWN0aXZhdGUsZmV0Y2gsbWVzc2FnZSx1cGRhdGVmb3VuZCxmZXRjaCIgYnV0IGdvdCAidXBkYXRl
Zm91bmQsYWN0aXZhdGUsZmV0Y2giCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>328273</attachid>
            <date>2017-12-02 18:31:52 -0800</date>
            <delta_ts>2017-12-02 18:31:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180215-20171202183151.patch</filename>
            <type>text/plain</type>
            <size>32478</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1NDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGNlZmNiOTQ5N2NhOTNl
OTRiMDYwMTUzMWEwOTA4YTM0NjRmNTE1MC4uMTNkNDExMTY1YjNkOThhYWE1ODNmMzI1NWZjZjU0
NWUwYWFlNzEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE3LTEyLTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBzZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uLnVwZGF0ZSgpIGluc2lkZSBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDIxNQorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFN1cHBvcnQgc2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi51cGRhdGUoKSBpbnNpZGUgc2VydmljZSB3b3JrZXJzLiBUaGUgY29kZSBw
YXRocworICAgICAgICBmb3Igam9iIHNjaGVkdWxpbmcgYW5kIHJlc29sdXRpb24gaGF2ZSBiZWVu
IG1hZGUgdGhyZWFkIHNhZmUgYnkgaG9wcGluZyB0byB0aGUgcmlnaHQKKyAgICAgICAgdGhyZWFk
IHdoZW4gbmVjZXNzYXJ5LiBJbiBwYXJ0aWN1bGFyLCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIGFs
d2F5cyBtYWtlcyBzdXJlIHRvIHRvCisgICAgICAgIGEgY2FsbE9uTWFpblRocmVhZCgpIGJlZm9y
ZSBjYWxsaW5nIG1ldGhvZHMgb24gdGhlIFNXQ2xpZW50Q29ubmVjdGlvbi4gQWxzbywgdGhlCisg
ICAgICAgIFNXQ2xpZW50Q29ubmVjdGlvbiByZWxpZXMgb24gYSBuZXcgcG9zdFRhc2tUbygpIG1l
dGhvZCBiZWZvcmUgY2FsbGluZyBtZXRob2RzIG9uIHRoZQorICAgICAgICBqb2IuCisKKyAgICAg
ICAgVGVzdDogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VsZl9yZWdpc3RyYXRpb25fdXBk
YXRlLmh0bWwKKworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpzY2hlZHVsZUpvYik6
CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaGVkRmV0Y2hpbmdT
Y3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpmYWlsZWRGZXRj
aGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OmpvYlJl
amVjdGVkSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpy
ZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xp
ZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvclNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlv
bjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRD
b25uZWN0aW9uOjp1cGRhdGVXb3JrZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTV0NsaWVu
dENvbm5lY3Rpb246OmZpcmVVcGRhdGVGb3VuZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNX
Q2xpZW50Q29ubmVjdGlvbjo6bm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OmNsZWFyUGVuZGluZ0pvYnMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpwb3N0VGFza1RvKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVkV2l0aEV4Y2VwdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzY2hlZHVsZVRhc2tUb0ZpcmVVcGRh
dGVGb3VuZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6
OmpvYlJlc29sdmVkV2l0aFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydFNjcmlwdEZldGNo
Rm9ySm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZp
bmlzaGVkTG9hZGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmpvYkRpZEZpbmlzaCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjphZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVtb3ZlUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlVGFza1RvRmlyZUNvbnRyb2xs
ZXJDaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojpjb250ZXh0SWRlbnRpZmllcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckpvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iOjpTZXJ2aWNlV29y
a2VySm9iKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckpvYjo6Y29udGV4dElkZW50aWZpZXIpOgor
ICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iQ2xpZW50Lmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6dXBkYXRlKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmg6CisKIDIwMTctMTItMDIg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBJ
T1N1cmZhY2U6OkxvY2tlciBhbmQgdXNlIGl0IGluIEltYWdlQnVmZmVyRGF0YUNHCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3Bw
CmluZGV4IGVjNTBmNjUyMjRmOTYxYjcwNTE4MGQyZmZlZDIzZjE3N2VkNmQ2NjEuLmIzZjU2Yzc0
ZjM4ZDJiODFhNmIwNDU2MzlhODlmMWYwNmNmODk2YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC00Nyw2ICs0
Nyw4IEBAIFNXQ2xpZW50Q29ubmVjdGlvbjo6flNXQ2xpZW50Q29ubmVjdGlvbigpID0gZGVmYXVs
dDsKIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VXb3JrZXJK
b2ImIGpvYikKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3NjaGVkdWxlZEpvYnMuYWRkKGpvYi5pZGVudGlmaWVyKCksICZqb2IpOwogICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAKQEAgLTU1
LDYgKzU3LDcgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKFNlcnZpY2VX
b3JrZXJKb2ImIGpvYikKIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaGVkRmV0Y2hp
bmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBTdHJpbmcmIHNjcmlwdCkKIHsK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NjaGVkdWxlZEpvYnMu
Z2V0KGpvYi5pZGVudGlmaWVyKCkpID09ICZqb2IpOwogCiAgICAgZmluaXNoRmV0Y2hpbmdTY3Jp
cHRJblNlcnZlcih7IGpvYi5kYXRhKCkuaWRlbnRpZmllcigpLCBqb2IuZGF0YSgpLnJlZ2lzdHJh
dGlvbktleSgpLCBzY3JpcHQsIHsgfSB9KTsKQEAgLTYyLDYgKzY1LDcgQEAgdm9pZCBTV0NsaWVu
dENvbm5lY3Rpb246OmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9i
LCBjb25zdCBTdHIKIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZhaWxlZEZldGNoaW5nU2Ny
aXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zY2hlZHVsZWRKb2Jz
LmdldChqb2IuaWRlbnRpZmllcigpKSA9PSAmam9iKTsKIAogICAgIGZpbmlzaEZldGNoaW5nU2Ny
aXB0SW5TZXJ2ZXIoeyBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgam9iLmRhdGEoKS5yZWdpc3Ry
YXRpb25LZXkoKSwgeyB9LCBlcnJvciB9KTsKQEAgLTY5LDQwICs3Myw1MyBAQCB2b2lkIFNXQ2xp
ZW50Q29ubmVjdGlvbjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9i
LCBjb25zdCBSZXNvdQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6am9iUmVqZWN0ZWRJblNl
cnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXImIGpvYkRhdGFJZGVudGlm
aWVyLCBjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQogeworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKICAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpv
YkRhdGFJZGVudGlmaWVyLmpvYklkZW50aWZpZXIpOwogICAgIGlmICgham9iKSB7CiAgICAgICAg
IExPR19FUlJPUigiSm9iICVzIHJlamVjdGVkIGZyb20gc2VydmVyLCBidXQgd2FzIG5vdCBmb3Vu
ZCIsIGpvYkRhdGFJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihleGNl
cHRpb25EYXRhLnRvRXhjZXB0aW9uKCkpOworICAgIHBvc3RUYXNrVG8oam9iLT5jb250ZXh0SWRl
bnRpZmllcigpLCBbam9iLCBleGNlcHRpb25EYXRhID0gZXhjZXB0aW9uRGF0YS5pc29sYXRlZENv
cHkoKV0geworICAgICAgICBqb2ItPmZhaWxlZFdpdGhFeGNlcHRpb24oZXhjZXB0aW9uRGF0YS50
b0V4Y2VwdGlvbigpKTsKKyAgICB9KTsKIH0KIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnJl
Z2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEmJiByZWdpc3RyYXRpb25EYXRhLCBTaG91bGROb3RpZnlXaGVuUmVzb2x2ZWQgc2hvdWxkTm90
aWZ5V2hlblJlc29sdmVkKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKICAgICBh
dXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy50YWtlKGpvYkRhdGFJZGVudGlmaWVyLmpvYklkZW50
aWZpZXIpOwogICAgIGlmICgham9iKSB7CiAgICAgICAgIExPR19FUlJPUigiSm9iICVzIHJlc29s
dmVkIGluIHNlcnZlciwgYnV0IHdhcyBub3QgZm91bmQiLCBqb2JEYXRhSWRlbnRpZmllci5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBhdXRvIGtleSA9IHJlZ2lzdHJhdGlvbkRhdGEua2V5OwotICAgIGpvYi0+cmVzb2x2ZWRXaXRo
UmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSksIHNob3VsZE5vdGlmeVdoZW5S
ZXNvbHZlZCk7CisgICAgcG9zdFRhc2tUbyhqb2ItPmNvbnRleHRJZGVudGlmaWVyKCksIFtqb2Is
IHJlZ2lzdHJhdGlvbkRhdGEgPSByZWdpc3RyYXRpb25EYXRhLmlzb2xhdGVkQ29weSgpLCBzaG91
bGROb3RpZnlXaGVuUmVzb2x2ZWRdKCkgbXV0YWJsZSB7CisgICAgICAgIGpvYi0+cmVzb2x2ZWRX
aXRoUmVnaXN0cmF0aW9uKFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSksIHNob3VsZE5vdGlmeVdo
ZW5SZXNvbHZlZCk7CisgICAgfSk7CiB9CiAKIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1bnJl
Z2lzdHJhdGlvbkpvYlJlc29sdmVkSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJ
ZGVudGlmaWVyJiBqb2JEYXRhSWRlbnRpZmllciwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkK
IHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgYXV0byBqb2IgPSBtX3NjaGVk
dWxlZEpvYnMudGFrZShqb2JEYXRhSWRlbnRpZmllci5qb2JJZGVudGlmaWVyKTsKICAgICBpZiAo
IWpvYikgewogICAgICAgICBMT0dfRVJST1IoIkpvYiAlcyByZXNvbHZlZCBpbiBzZXJ2ZXIsIGJ1
dCB3YXMgbm90IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgam9iLT5yZXNvbHZlZFdp
dGhVbnJlZ2lzdHJhdGlvblJlc3VsdCh1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CisgICAgcG9zdFRh
c2tUbyhqb2ItPmNvbnRleHRJZGVudGlmaWVyKCksIFtqb2IsIHVucmVnaXN0cmF0aW9uUmVzdWx0
XSB7CisgICAgICAgIGpvYi0+cmVzb2x2ZWRXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHQodW5yZWdp
c3RyYXRpb25SZXN1bHQpOworICAgIH0pOwogfQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6
c3RhcnRTY3JpcHRGZXRjaEZvclNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50
aWZpZXImIGpvYkRhdGFJZGVudGlmaWVyKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKICAgICBhdXRvIGpvYiA9IG1fc2NoZWR1bGVkSm9icy5nZXQoam9iRGF0YUlkZW50aWZpZXIu
am9iSWRlbnRpZmllcik7CiAgICAgaWYgKCFqb2IpIHsKICAgICAgICAgTE9HX0VSUk9SKCJKb2Ig
JXMgaW5zdHJ1Y3RlZCB0byBzdGFydCBmZXRjaCBmcm9tIHNlcnZlciwgYnV0IGpvYiB3YXMgbm90
IGZvdW5kIiwgam9iRGF0YUlkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwpAQCAtMTE0LDExICsxMzEsMTUgQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnN0YXJ0U2Ny
aXB0RmV0Y2hGb3JTZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGUKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGpvYi0+c3RhcnRTY3JpcHRGZXRjaCgpOworICAgIHBvc3RU
YXNrVG8oam9iLT5jb250ZXh0SWRlbnRpZmllcigpLCBbam9iXSB7CisgICAgICAgIGpvYi0+c3Rh
cnRTY3JpcHRGZXRjaCgpOworICAgIH0pOwogfQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVz
c2FnZSwgU2VydmljZVdvcmtlckRhdGEmJiBzb3VyY2VEYXRhLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZU9yaWdpbikKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCiAgICAgLy8gRklYTUU6
IGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIgY2FuIG9ubHkgaWRlbnRpZnkgYSBEb2N1bWVu
dCBhdCB0aGUgbW9tZW50LgogICAgIGF1dG8qIGRlc3RpbmF0aW9uRG9jdW1lbnQgPSBEb2N1bWVu
dDo6YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGRlc3RpbmF0aW9uQ29udGV4dElkZW50aWZpZXIpOwog
ICAgIGlmICghZGVzdGluYXRpb25Eb2N1bWVudCkKQEAgLTEzNyw2ICsxNTgsOCBAQCB2b2lkIFNX
Q2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoRG9jdW1l
bnRJZGVudGlmaWVyIGRlcwogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlUmVnaXN0
cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
ciwgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvblN0YXRlIHN0YXRlLCBjb25zdCBzdGQ6Om9wdGlv
bmFsPFNlcnZpY2VXb3JrZXJEYXRhPiYgc2VydmljZVdvcmtlckRhdGEpCiB7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZv
ckVhY2hTZXJ2aWNlV29ya2VyVGhyZWFkKFtpZGVudGlmaWVyLCBzdGF0ZSwgJnNlcnZpY2VXb3Jr
ZXJEYXRhXSAoYXV0byYgd29ya2VyVGhyZWFkKSB7CiAgICAgICAgIHdvcmtlclRocmVhZC50aHJl
YWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW2lkZW50aWZpZXIsIHN0YXRlLCBzZXJ2aWNlV29ya2Vy
RGF0YSA9IGNyb3NzVGhyZWFkQ29weShzZXJ2aWNlV29ya2VyRGF0YSldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGF1dG8qIGNvbnRh
aW5lciA9IGNvbnRleHQuc2VydmljZVdvcmtlckNvbnRhaW5lcigpKQpAQCAtMTUyLDYgKzE3NSw4
IEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVSZWdpc3RyYXRpb25TdGF0ZShTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpCiAKIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjp1
cGRhdGVXb3JrZXJTdGF0ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VyU3RhdGUgc3RhdGUpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwog
ICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2VyVGhy
ZWFkKFtpZGVudGlmaWVyLCBzdGF0ZV0gKGF1dG8mIHdvcmtlclRocmVhZCkgewogICAgICAgICB3
b3JrZXJUaHJlYWQudGhyZWFkKCkucnVuTG9vcCgpLnBvc3RUYXNrKFtpZGVudGlmaWVyLCBzdGF0
ZV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgaWYgKGF1
dG8qIHNlcnZpY2VXb3JrZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXIoaWRlbnRpZmllcikpCkBA
IC0xNjcsNiArMTkyLDggQEAgdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVdvcmtlclN0
YXRlKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFMKIAogdm9pZCBTV0NsaWVu
dENvbm5lY3Rpb246OmZpcmVVcGRhdGVGb3VuZEV2ZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KwogICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmZvckVhY2hTZXJ2aWNlV29ya2Vy
VGhyZWFkKFtpZGVudGlmaWVyXSAoYXV0byYgd29ya2VyVGhyZWFkKSB7CiAgICAgICAgIHdvcmtl
clRocmVhZC50aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW2lkZW50aWZpZXJdKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBjb250YWlu
ZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIoKSkKQEAgLTE4Miw2ICsyMDksNyBA
QCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6ZmlyZVVwZGF0ZUZvdW5kRXZlbnQoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6bm90
aWZ5Q2xpZW50c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNoU2V0PERvY3VtZW50SWRlbnRp
Zmllcj4mIGNvbnRleHRJZGVudGlmaWVycywgU2VydmljZVdvcmtlckRhdGEmJiBuZXdDb250cm9s
bGVyKQogeworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFjb250ZXh0
SWRlbnRpZmllcnMuaXNFbXB0eSgpKTsKIAogICAgIGZvciAoYXV0byYgY2xpZW50SWRlbnRpZmll
ciA6IGNvbnRleHRJZGVudGlmaWVycykgewpAQCAtMjAwLDkgKzIyOCwzMiBAQCB2b2lkIFNXQ2xp
ZW50Q29ubmVjdGlvbjo6bm90aWZ5Q2xpZW50c09mQ29udHJvbGxlckNoYW5nZShjb25zdCBIYXNo
U2V0PERvY3VtZW50SQogCiB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6Y2xlYXJQZW5kaW5nSm9i
cygpCiB7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKwogICAgIGF1dG8gam9icyA9IFdU
Rk1vdmUobV9zY2hlZHVsZWRKb2JzKTsKLSAgICBmb3IgKGF1dG8mIGpvYiA6IGpvYnMudmFsdWVz
KCkpCi0gICAgICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihFeGNlcHRpb24geyBUeXBlRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKSB9KTsKKyAgICBmb3IgKGF1dG8mIGpv
YiA6IGpvYnMudmFsdWVzKCkpIHsKKyAgICAgICAgcG9zdFRhc2tUbyhqb2ItPmNvbnRleHRJZGVu
dGlmaWVyKCksIFtqb2JdIHsKKyAgICAgICAgICAgIGpvYi0+ZmFpbGVkV2l0aEV4Y2VwdGlvbihF
eGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IiKSB9KTsK
KyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdFRh
c2tUbyhjb25zdCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciYgY29udGV4dElkZW50aWZpZXIs
IFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKworICAgIHN3aXRjaE9uKGNvbnRleHRJZGVudGlmaWVyLCBbJl0oRG9jdW1lbnRJZGVu
dGlmaWVyIGlkZW50aWZpZXIpIHsKKyAgICAgICAgYXV0byogZG9jdW1lbnQgPSBEb2N1bWVudDo6
YWxsRG9jdW1lbnRzTWFwKCkuZ2V0KGlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWRvY3VtZW50
KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkb2N1bWVudC0+cG9zdFRhc2soW3Rhc2sg
PSBXVEZNb3ZlKHRhc2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgICAgICAgICAg
dGFzaygpOworICAgICAgICB9KTsKKyAgICB9LCBbJl0oU2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllcikgeworICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0
VGFza1RvU2VydmljZVdvcmtlcihpZGVudGlmaWVyLCBbdGFzayA9IFdURk1vdmUodGFzayldKFNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSYpIHsKKyAgICAgICAgICAgIHRhc2soKTsKKyAgICAgICAg
fSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA1OWI2
YmI2ODRjYWYyNDIyOGI2YzI4N2ZjZWQyMmFiYTBmMzY3N2QzLi5lYWQ5ZWU4NDc3M2Q0N2NiNjU2
OGExNzU3MTE0ZjVhODg5NThiNmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC05NSw2ICs5NSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5vdGlmeUNsaWVudHNPZkNvbnRyb2xsZXJDaGFu
Z2UoY29uc3QgSGFzaFNldDxEb2N1bWVudElkZW50aWZpZXI+JiBjb250ZXh0SWRlbnRpZmllcnMs
IFNlcnZpY2VXb3JrZXJEYXRhJiYgbmV3Q29udHJvbGxlcik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyUGVuZGluZ0pvYnMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RU
YXNrVG8oY29uc3QgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXImLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJik7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlSm9iSW5TZXJ2
ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5k
ZXggMjdkZjlhMDVhOGFkZjJjY2I2N2ExY2MwOGFlMjUxOTdlOWE2MzI0My4uNGY4NDIzYTU2ZGZh
ZGJhYzc1NjQ5ZGRlNmI3MjljZWE3YWRlNjM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNp
bmNsdWRlICJFeGNlcHRpb24uaCIKQEAgLTQwLDkgKzQxLDExIEBACiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2IuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Sm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgorI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgpAQCAtMTk2LDE1ICsxOTksMjAgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp1cGRhdGVSZWdpc3RyYXRpb24oY29uc3QgVVJM
JiBzY29wZVVSTCwgY29uc3QgVVJMJgogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNj
aGVkdWxlSm9iKFJlZjxTZXJ2aWNlV29ya2VySm9iPiYmIGpvYikKIHsKKyNpZm5kZWYgTkRFQlVH
CisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsKKyNlbmRp
ZgorCiAgICAgQVNTRVJUKG1fc3dDb25uZWN0aW9uKTsKIAogICAgIHNldFBlbmRpbmdBY3Rpdml0
eSh0aGlzKTsKIAotICAgIFNlcnZpY2VXb3JrZXJKb2ImIHJhd0pvYiA9IGpvYi5nZXQoKTsKLSAg
ICBhdXRvIHJlc3VsdCA9IG1fam9iTWFwLmFkZChyYXdKb2IuaWRlbnRpZmllcigpLCBXVEZNb3Zl
KGpvYikpOworICAgIGF1dG8gcmVzdWx0ID0gbV9qb2JNYXAuYWRkKGpvYi0+aWRlbnRpZmllcigp
LCBqb2IuY29weVJlZigpKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3
RW50cnkpOwogCi0gICAgbV9zd0Nvbm5lY3Rpb24tPnNjaGVkdWxlSm9iKHJhd0pvYik7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9uLCBqb2IgPSBXVEZN
b3ZlKGpvYildIHsKKyAgICAgICAgY29ubmVjdGlvbi0+c2NoZWR1bGVKb2Ioam9iKTsKKyAgICB9
KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb24oY29u
c3QgU3RyaW5nJiBjbGllbnRVUkwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKQEAg
LTI5Myw2ICszMDEsMTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydE1lc3Nh
Z2VzKCkKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0
aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCiB7
CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRU
aHJlYWQoKSk7CisjZW5kaWYKKwogICAgIGlmIChhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSB7CiAgICAgICAgIGNvbnRleHQtPnBvc3RUYXNrKFtqb2IgPSBtYWtlUmVm
KGpvYiksIGV4Y2VwdGlvbl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgICAg
IGpvYi0+cHJvbWlzZSgpLnJlamVjdChleGNlcHRpb24pOwpAQCAtMzAzLDEyICszMTUsMjAgQEAg
dm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZp
Y2VXb3JrZXJKb2ImIGpvYiwgY29uc3QKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpz
Y2hlZHVsZVRhc2tUb0ZpcmVVcGRhdGVGb3VuZEV2ZW50KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyIGlkZW50aWZpZXIpCiB7CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVCht
X2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKwogICAgIGlmIChh
dXRvKiByZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KGlkZW50aWZpZXIpKQogICAg
ICAgICByZWdpc3RyYXRpb24tPnNjaGVkdWxlVGFza1RvRmlyZVVwZGF0ZUZvdW5kRXZlbnQoKTsK
IH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3Ry
YXRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YSYmIGRhdGEsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCBzaG91bGROb3RpZnlXaGVuUmVzb2x2
ZWQpCiB7CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1
cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKwogICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29w
ZUV4aXQoW3RoaXMsICZqb2JdIHsKICAgICAgICAgam9iRGlkRmluaXNoKGpvYik7CiAgICAgfSk7
CkBAIC0zNDUsNiArMzY1LDEwIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iUmVz
b2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKIAogdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdChT
ZXJ2aWNlV29ya2VySm9iJiBqb2IsIGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCiB7CisjaWZu
ZGVmIE5ERUJVRworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQo
KSk7CisjZW5kaWYKKwogICAgIGF1dG8gZ3VhcmQgPSBXVEY6Om1ha2VTY29wZUV4aXQoW3RoaXMs
ICZqb2JdIHsKICAgICAgICAgam9iRGlkRmluaXNoKGpvYik7CiAgICAgfSk7CkBAIC0zNjIsMTIg
KzM4NiwxOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYlJlc29sdmVkV2l0aFVu
cmVnaXN0cmF0aW9uUmVzdWx0KFNlcnZpY2VXb3JrZXJKbwogCiB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JKb2IoU2VydmljZVdvcmtlckpvYiYgam9iKQog
eworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50
VGhyZWFkKCkpOworI2VuZGlmCisKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNldmljZVdvcmtl
ckNvbnRhaW5lciAlcCBzdGFydGluZyBzY3JpcHQgZmV0Y2ggZm9yIGpvYiAlcyIsIHRoaXMsIGpv
Yi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgYXV0
byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQp
IHsKICAgICAgICAgTE9HX0VSUk9SKCJTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZl
ZFdpdGhSZWdpc3RyYXRpb24gY2FsbGVkIGJ1dCB0aGUgY29udGFpbmVyJ3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCBpcyBnb25lIik7Ci0gICAgICAgIG1fc3dDb25uZWN0aW9uLT5mYWlsZWRGZXRj
aGluZ1NjcmlwdChqb2IsIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgam9iLmRhdGEo
KS5zY3JpcHRVUkwsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdCB0byBmZXRjaCBzZXJ2aWNlIHdvcmtl
ciBzY3JpcHQgd2l0aCBubyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IikgfSk7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgam9iID0gbWFrZVJl
Zihqb2IpXSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5mYWlsZWRGZXRjaGluZ1NjcmlwdChq
b2IsIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgam9iLT5kYXRhKCkuc2NyaXB0VVJM
LCBBU0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8gZmV0Y2ggc2VydmljZSB3b3JrZXIgc2NyaXB0IHdp
dGggbm8gU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpIH0pOworICAgICAgICB9KTsKICAgICAgICAg
am9iRGlkRmluaXNoKGpvYik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zNzcsMjMgKzQw
NywzOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JK
b2IoU2VydmljZVdvcmtlckpvYiYgam9iKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OmpvYkZpbmlzaGVkTG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFN0
cmluZyYgc2NyaXB0KQogeworI2lmbmRlZiBOREVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlvblRo
cmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOworI2VuZGlmCisKICAgICBMT0coU2VydmljZVdvcmtl
ciwgIlNldmljZVdvcmtlckNvbnRhaW5lciAlcCBmaW5pc2hlZCBmZXRjaGluZyBzY3JpcHQgZm9y
IGpvYiAlcyIsIHRoaXMsIGpvYi5pZGVudGlmaWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwogCi0gICAgbV9zd0Nvbm5lY3Rpb24tPmZpbmlzaGVkRmV0Y2hpbmdTY3JpcHQoam9i
LCBzY3JpcHQpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVj
dGlvbiwgam9iID0gbWFrZVJlZihqb2IpLCBzY3JpcHQgPSBzY3JpcHQuaXNvbGF0ZWRDb3B5KCld
IHsKKyAgICAgICAgY29ubmVjdGlvbi0+ZmluaXNoZWRGZXRjaGluZ1NjcmlwdChqb2IsIHNjcmlw
dCk7CisgICAgfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmFpbGVk
TG9hZGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yLCBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4mJiBleGNlcHRpb24pCiB7CisjaWZuZGVm
IE5ERUJVRworICAgIEFTU0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7
CisjZW5kaWYKKwogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiU2V2aWNlV29ya2VyQ29udGFpbmVy
ICVwIGZhaWxlZCBmZXRjaGluZyBzY3JpcHQgZm9yIGpvYiAlcyIsIHRoaXMsIGpvYi5pZGVudGlm
aWVyKCkubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKGV4Y2VwdGlv
bikKICAgICAgICAgam9iLnByb21pc2UoKS5yZWplY3QoKmV4Y2VwdGlvbik7CiAKLSAgICBtX3N3
Q29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iLCBlcnJvcik7CisgICAgY2FsbE9u
TWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9uLCBqb2IgPSBtYWtlUmVmKGpv
YiksIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgY29ubmVjdGlvbi0+
ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iLCBlcnJvcik7CisgICAgfSk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6am9iRGlkRmluaXNoKFNlcnZpY2VXb3JrZXJKb2ImIGpvYikK
IHsKKyNpZm5kZWYgTkRFQlVHCisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVu
dFRocmVhZCgpKTsKKyNlbmRpZgorCiAgICAgYXV0byB0YWtlbiA9IG1fam9iTWFwLnRha2Uoam9i
LmlkZW50aWZpZXIoKSk7CiAgICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgIXRha2VuIHx8IHRha2Vu
LT5wdHIoKSA9PSAmam9iKTsKIApAQCAtNDI5LDE4ICs0NzUsMzAgQEAgU1dDbGllbnRDb25uZWN0
aW9uJiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjplbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKQog
CiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmFkZFJlZ2lzdHJhdGlvbihTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiB7CisjaWZuZGVmIE5ERUJVRworICAgIEFT
U0VSVChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKwogICAg
IGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpLmFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
blNlcnZlcihyZWdpc3RyYXRpb24uaWRlbnRpZmllcigpKTsKICAgICBtX3JlZ2lzdHJhdGlvbnMu
YWRkKHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksICZyZWdpc3RyYXRpb24pOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiB7CisjaWZuZGVmIE5ERUJVRworICAgIEFTU0VS
VChtX2NyZWF0aW9uVGhyZWFkID09IGN1cnJlbnRUaHJlYWQoKSk7CisjZW5kaWYKKwogICAgIG1f
c3dDb25uZWN0aW9uLT5yZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIocmVn
aXN0cmF0aW9uLmlkZW50aWZpZXIoKSk7CiAgICAgbV9yZWdpc3RyYXRpb25zLnJlbW92ZShyZWdp
c3RyYXRpb24uaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OjpzY2hlZHVsZVRhc2tUb0ZpcmVDb250cm9sbGVyQ2hhbmdlRXZlbnQoKQogeworI2lmbmRlZiBO
REVCVUcKKyAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZCA9PSBjdXJyZW50VGhyZWFkKCkpOwor
I2VuZGlmCisKICAgICBpZiAobV9pc1N0b3BwZWQpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDU4
LDYgKzUxNiwxOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0b3AoKQogICAgIHJl
bW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CiB9CiAKK0RvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVy
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNvbnRleHRJZGVudGlmaWVyKCkKK3sKKyNpZm5kZWYg
TkRFQlVHCisgICAgQVNTRVJUKG1fY3JlYXRpb25UaHJlYWQgPT0gY3VycmVudFRocmVhZCgpKTsK
KyNlbmRpZgorCisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYg
KGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkp
CisgICAgICAgIHJldHVybiBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkpLnRocmVhZCgpLmlkZW50aWZpZXIoKTsKKyAgICByZXR1cm4g
ZG93bmNhc3Q8RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLmlkZW50aWZpZXIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKaW5kZXggODEyYWYzNDAzNzAwMTRiZGU5NThmYWQ2Nzdm
NDllNGVmYTJkNTZmZC4uMmQ5YTlmMDQ2YWJiNGFjZWYwMzYxNzk4ZjYzZjE2MTg4ZDgyN2QwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5oCkBAIC05Niw2ICs5Niw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBqb2JE
aWRGaW5pc2goU2VydmljZVdvcmtlckpvYiYpOwogCiAgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcigpIGZpbmFsOworICAgIERvY3VtZW50T3JXb3Jr
ZXJJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKCkgZmluYWw7CisKICAgICBTV0NsaWVudENv
bm5lY3Rpb24mIGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpOwogCiAgICAgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCmluZGV4IDgzMzZhNzgwOThh
NzA1MzllNDhlOGIxODQxZTcxYjMxN2ZhMWYzZmQuLmY3M2Y5MDcyYTAzYzNjMDVlMzI2MTU0N2E4
ODkxYWRhOTU3MjQwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VySm9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckpvYi5jcHAKQEAgLTQxLDYgKzQxLDcgQEAgU2VydmljZVdvcmtlckpv
Yjo6U2VydmljZVdvcmtlckpvYihTZXJ2aWNlV29ya2VySm9iQ2xpZW50JiBjbGllbnQsIFJlZjxE
ZWZlcnJlZFAKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fam9iRGF0YShXVEZNb3Zl
KGpvYkRhdGEpKQogICAgICwgbV9wcm9taXNlKFdURk1vdmUocHJvbWlzZSkpCisgICAgLCBtX2Nv
bnRleHRJZGVudGlmaWVyKGNsaWVudC5jb250ZXh0SWRlbnRpZmllcigpKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuaAppbmRl
eCBjOGE5NzBhZmQ2NzA1ZTBkOWQxODZjOGIzZTc1ZTZjMGU4ZjJjY2NjLi5jMzBhNGZiODQ4OTcz
ODljMTViNjI3ZjFkZjlkZWZlMjg5MTc5ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCBmZXRjaFNjcmlwdFdpdGhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKTsKIAorICAgIGNvbnN0IERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyJiBjb250ZXh0SWRl
bnRpZmllcigpIHsgcmV0dXJuIG1fY29udGV4dElkZW50aWZpZXI7IH0KKwogcHJpdmF0ZToKICAg
ICBTZXJ2aWNlV29ya2VySm9iKFNlcnZpY2VXb3JrZXJKb2JDbGllbnQmLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmLCBTZXJ2aWNlV29ya2VySm9iRGF0YSYmKTsKIApAQCAtODMsNyArODUsNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX2NvbXBsZXRlZCB7IGZhbHNlIH07CiAKLSAgICBSZWY8UnVu
TG9vcD4gbV9ydW5Mb29wIHsgUnVuTG9vcDo6Y3VycmVudCgpIH07CisgICAgRG9jdW1lbnRPcldv
cmtlcklkZW50aWZpZXIgbV9jb250ZXh0SWRlbnRpZmllcjsKICAgICBSZWZQdHI8V29ya2VyU2Ny
aXB0TG9hZGVyPiBtX3NjcmlwdExvYWRlcjsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fbGFzdFJl
c3BvbnNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckpvYkNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJKb2JDbGllbnQuaAppbmRleCA0MTVhNjljYjFhNDYyZWQ1MTBhMTA1NjYzNDVm
MzA5ZDVlMTgxYjg4Li5mMTAzYjI3OGUzN2YzN2UxYjI5NDM5YjMzMjUxMDMxMTBmNTYwZjQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpv
YkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VySm9iQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDggQEAgY2xhc3MgU2VydmljZVdvcmtlckpvYkNs
aWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2VydmljZVdvcmtlckpvYkNsaWVudCgpID0g
ZGVmYXVsdDsKIAorICAgIHZpcnR1YWwgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIgY29udGV4
dElkZW50aWZpZXIoKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgam9iRmFpbGVkV2l0aEV4Y2Vw
dGlvbihTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgRXhjZXB0aW9uJikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlckpvYiYsIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYsIFNob3VsZE5vdGlmeVdoZW5SZXNvbHZlZCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBqb2JSZXNvbHZlZFdpdGhVbnJlZ2lzdHJhdGlvblJlc3Vs
dChTZXJ2aWNlV29ya2VySm9iJiwgYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGJmMGI0NzlmNzA2N2M3OWFiYzA0MWRjYmFkMWU2ZmU5
NmI1ZjJkZGMuLmYyODkwZWFmNjhlN2I5MjM1MGY4ODQ5NDk1ODQ2MzY4MDQzMGU5MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTEyMSwxOCArMTIxLDYgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjp1cGRhdGUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGluIHdv
cmtlcnMuCi0gICAgaWYgKCFpczxEb2N1bWVudD4oKmNvbnRleHQpKSB7Ci0gICAgICAgIHByb21p
c2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJz
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnVwZGF0ZSgpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIGlu
IHdvcmtlcnMiKSB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8qIGNvbnRh
aW5lciA9IGNvbnRleHQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKLSAgICBpZiAoIWNvbnRh
aW5lcikgewotICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVy
cm9yKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBhdXRvKiBuZXdlc3RXb3JrZXIg
PSBnZXROZXdlc3RXb3JrZXIoKTsKICAgICBpZiAoIW5ld2VzdFdvcmtlcikgewogICAgICAgICBw
cm9taXNlLT5yZWplY3QoRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVycm9yLCBBU0NJSUxpdGVyYWwo
Im5ld2VzdFdvcmtlciBpcyBudWxsIikpKTsKQEAgLTE0MCw3ICsxMjgsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb246OnVwZGF0ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UpCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFN1cHBvcnQgd29ya2VyIHR5cGVzLgotICAgIGNv
bnRhaW5lci0+dXBkYXRlUmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uRGF0YS5zY29wZVVSTCwg
bmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSwgV29ya2VyVHlwZTo6Q2xhc3NpYywgV1RGTW92ZShw
cm9taXNlKSk7CisgICAgbV9jb250YWluZXItPnVwZGF0ZVJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJh
dGlvbkRhdGEuc2NvcGVVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCksIFdvcmtlclR5cGU6
OkNsYXNzaWMsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb246OnVucmVnaXN0ZXIoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBl
cy5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJUeXBlcy5o
CmluZGV4IGRkYjMwNWQ4ZjgyMWQyMzRmZGQzYTU1NjkyNGE2ZjFmOTk5MTBiMGEuLjhkMTUyZDM2
Nzk0YTRiNDRkZjM1NDg2MWU0ZjIzNDFlOTY1ZGRhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyVHlwZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclR5cGVzLmgKQEAgLTI3LDggKzI3LDEx
IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJEb2N1bWVudElk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRpZmllci5oIgogI2luY2x1
ZGUgPHd0Zi9FbnVtVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4K
KyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY3
LDYgKzcwLDggQEAgdXNpbmcgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJUb0NvbnRleHQKIGVudW0gU1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllclR5cGUgeyB9OwogdXNpbmcgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciA9IE9iamVjdElkZW50aWZpZXI8U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllclR5cGU+Owog
Cit1c2luZyBEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciA9IFZhcmlhbnQ8RG9jdW1lbnRJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllcj47CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2U0MWI4YjZlMjFiMmFhZmU4NTk2N2VjYWVh
ZDdiY2I3ZDJmOTg5OC4uMWExMmE2OTNiYTQyMzI3YjY5YTU2MTlhMmRjYzk5NTRmOTc2Y2ViNyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE3LTEyLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnVw
ZGF0ZSgpIGluc2lkZSBzZXJ2aWNlIHdvcmtlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDIxNQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgorCisgICAgICAgIEFkZCBsYXlvdXQgdGVzdCBjb3ZlcmFnZSBhbmQgdW5za2lwIFdQ
VCB0ZXN0IHRoYXQgbm8gbG9uZ2VyIHRpbWVzIG91dC4KKworICAgICAgICAqIFRlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Nl
bGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS13b3JrZXIuanM6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlbGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlbGZfcmVn
aXN0cmF0aW9uX3VwZGF0ZS5odG1sOiBBZGRlZC4KKwogMjAxNy0xMi0wMiAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGh0dHBzOi8vdzNjLmdp
dGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldGFsbApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cKaW5kZXggZTQ1OWE3Y2ZkZGMwNmNkYWQwYzU0MzZjMGRjYzRiMzdlMGQ0ZTIwZC4u
YjYwNTlhMjM3MjI0MGE4YTJhN2UxZGIyZTM3MmY0OGZhMDM3YWRkOSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMTItMDIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24udXBkYXRlKCkgaW5zaWRlIHNlcnZpY2Ugd29ya2VycworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwMjE1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmViYXNlbGluZSBXUFQgdGVzdCB0aGF0IG5v
IGxvbmdlciB0aW1lcyBvdXQuIFRoZSB0ZXN0IHN0aWxsIGZhaWxzIGV2ZW4KKyAgICAgICAgdGhv
dWdoIHdlIHN1cHBvcnQgdXBkYXRlKCkuIFRoZSBpc3N1ZSBpcyB0aGF0IHRoZSBzZWNvbmQgZnJh
bWUgbG9hZAorICAgICAgICB1c2VzIHRoZSBuZXcgd29ya2VyIChiZWNhdXNlIG9mIHRoZSB1cGRh
dGUoKSkgaW5zdGVhZCBvZiB0aGUgb2xkIG9uZS4KKyAgICAgICAgVGhlIHRlc3Qgc2VlbXMgdG8g
ZXhwZWN0IHRoYXQgdGhlIG5ldyBzZXJ2aWNlIHdvcmtlciBpcyBzdGlsbCBpbgorICAgICAgICB3
YWl0aW5nIHN0YXRlIGF0IHRoZSBwb2ludCB0aGUgc2Vjb25kIGZyYW1lIGlzIGxvYWRlZC4gSG93
ZXZlciwgZm9yIHVzCisgICAgICAgIGl0IGlzIGFscmVhZHkgYWN0aXZhdGVkLgorCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUvdXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAxNy0x
Mi0wMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVt
ZW50IGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGllbnRzLWdldGFsbApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggNWRkM2FmY2E2MmY2YTE2ZjcyZTFhY2E5NmIzZmMzNzgzMzM1
NjVmNS4uNmY5YjMzY2IxYjZmZWIxYTdmMjNlNDg2NjFlNjM2OTUxMmE0ZDI1MiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCkBAIC0xNDcsNyArMTQ3LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZWN1cmUtY29udGV4dHMvc2hhcmVkLXdvcmtlci1zZWN1cmUtZmlyc3QuaHR0cHMKIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Fib3J0L2dlbmVyYWwtc2Vy
dmljZXdvcmtlci5odHRwcy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUvZXh0ZW5kYWJsZS1tZXNzYWdlLWV2ZW50Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS91bnJlZ2lzdGVyLmh0dHBzLmh0bWwgWyBTa2lwIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS91cGRhdGUuaHR0cHMuaHRtbCBbIFNraXAg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvY2xpZW50cy1tYXRjaGFsbC1vbi1ldmFsdWF0aW9uLmh0dHBzLmh0bWwgWyBTa2lw
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL2RldGFjaGVkLWNvbnRleHQuaHR0cHMuaHRtbCBbIFNraXAgXQogaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZXh0
ZW5kYWJsZS1ldmVudC13YWl0dW50aWwuaHR0cHMuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3NlbGZfcmVn
aXN0cmF0aW9uX3VwZGF0ZS13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvc2VsZl9yZWdpc3RyYXRpb25fdXBkYXRlLXdvcmtlci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yYjM2YWNiMDkyNzc2MWE1YWViMzI0MGNlYzU2YThjN2Q3Yzc0MzQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVz
b3VyY2VzL3NlbGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS13b3JrZXIuanMKQEAgLTAsMCArMSw0IEBA
CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKKyAgICBzZWxm
LnJlZ2lzdHJhdGlvbi51cGRhdGUoKTsKK30pOworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9zZWxmX3JlZ2lzdHJhdGlvbl91cGRhdGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VsZl9yZWdp
c3RyYXRpb25fdXBkYXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2UzZjU4Y2Q3N2JmNjU0
NWI3MjUzZjU0NTQwYjcyYWQ1NGQ5NmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VsZl9yZWdpc3RyYXRpb25fdXBkYXRlLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDcgQEAKKyogQWRkIGJhc2ljIHRlc3RpbmcgZm9yIFNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5yZWdpc3RyYXRpb24udXBkYXRlKCkKKworUEFTUzogcmVnaXN0cmF0
aW9uIHdhcyBzdWNjZXNzZnVseSB1cGRhdGVkIGJ5IHRoZSBzZXJ2aWNlIHdvcmtlcgorUEFTUzog
c2VydmljZSB3b3JrZXIgYmVjYW1lIHJlZHVuZGFudAorUEFTUzogT2xkIHdvcmtlciBpcyBzdGls
bCB0aGUgcmVnaXN0cmF0aW9uJ3MgYWN0aXZlIHdvcmtlcgorUEFTUzogTmV3IHdvcmtlciBzaG91
bGQgYmUgdGhlIHJlZ2lzdHJhdGlvbidzIHdhaXRpbmcgd29ya2VyCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlbGZfcmVnaXN0cmF0aW9uX3Vw
ZGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvc2VsZl9y
ZWdpc3RyYXRpb25fdXBkYXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M2NDZhZTkwMzIwMzg0OGQzNmFj
NzRlMWMyMTA4N2Y5NWUyNjgxMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3NlbGZfcmVnaXN0cmF0aW9uX3VwZGF0ZS5odG1sCkBAIC0w
LDAgKzEsMzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvc3ctdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2xvZygiKiBB
ZGQgYmFzaWMgdGVzdGluZyBmb3IgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnJlZ2lzdHJhdGlv
bi51cGRhdGUoKSIpOworbG9nKCIiKTsKKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0
ZXIoInJlc291cmNlcy9zZWxmX3JlZ2lzdHJhdGlvbl91cGRhdGUtd29ya2VyLmpzIiwgeyB9KS50
aGVuKGZ1bmN0aW9uKF9yZWdpc3RyYXRpb24pIHsKKyAgICByZWdpc3RyYXRpb24gPSBfcmVnaXN0
cmF0aW9uOworICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgd2Fp
dEZvclN0YXRlKHdvcmtlciwgImFjdGl2YXRlZCIpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAg
IHJlZ2lzdHJhdGlvbi5hZGRFdmVudExpc3RlbmVyKCJ1cGRhdGVmb3VuZCIsIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgbG9nKCJQQVNTOiByZWdpc3RyYXRpb24gd2FzIHN1Y2Nlc3NmdWx5IHVw
ZGF0ZWQgYnkgdGhlIHNlcnZpY2Ugd29ya2VyIik7CisgICAgICAgICAgICB3YWl0Rm9yU3RhdGUo
d29ya2VyLCAicmVkdW5kYW50IikudGhlbihmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBs
b2coIlBBU1M6IHNlcnZpY2Ugd29ya2VyIGJlY2FtZSByZWR1bmRhbnQiKTsKKyAgICAgICAgICAg
ICAgICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2ZSA9PT0gd29ya2VyKQorICAgICAgICAgICAgICAg
ICAgICBsb2coIlBBU1M6IE9sZCB3b3JrZXIgaXMgc3RpbGwgdGhlIHJlZ2lzdHJhdGlvbidzIGFj
dGl2ZSB3b3JrZXIiKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGxvZygiRkFJTDogT2xkIHdvcmtlciBpcyBzdGlsbCB0aGUgcmVnaXN0cmF0aW9uJ3MgYWN0aXZl
IHdvcmtlciIpOworCisgICAgICAgICAgICAgICAgaWYgKCFzZWxmLnJlZ2lzdHJhdGlvbi53YWl0
aW5nIHx8IHNlbGYucmVnaXN0cmF0aW9uLndhaXRpbmcgPT09IHdvcmtlcikKKyAgICAgICAgICAg
ICAgICAgICAgbG9nKCJGQUlMOiBOZXcgd29ya2VyIHNob3VsZCBiZSB0aGUgcmVnaXN0cmF0aW9u
J3Mgd2FpdGluZyB3b3JrZXIiKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGxvZygiUEFTUzogTmV3IHdvcmtlciBzaG91bGQgYmUgdGhlIHJlZ2lzdHJhdGlvbidz
IHdhaXRpbmcgd29ya2VyIik7CisgICAgICAgICAgICAgICAgZmluaXNoU1dUZXN0KCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgidXBk
YXRlIik7CisgICAgfSk7Cit9KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXIvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlL3VwZGF0ZS5o
dHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUvdXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA4NjExOTZkNDhhZjcyMzQwMWMz
OWRlOWY4NzI5NWExYzgyZTZiZjFjLi41ZmM5M2ZkZDgyYWJjMmFiZGYyMThjMGFiOGUzNTFmMTAx
NGIwNzA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUvdXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9T
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUvdXBkYXRlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw2
ICsxLDQgQEAKIAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQot
VElNRU9VVCBVcGRhdGUgYSByZWdpc3RyYXRpb24gb24gU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
IFRlc3QgdGltZWQgb3V0CitGQUlMIFVwZGF0ZSBhIHJlZ2lzdHJhdGlvbiBvbiBTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgYXNzZXJ0X2VxdWFsczogZXZlbnRzIHNlZW4gYnkgdGhlIHdvcmtlciBl
eHBlY3RlZCAidXBkYXRlZm91bmQsYWN0aXZhdGUsZmV0Y2gsbWVzc2FnZSx1cGRhdGVmb3VuZCxm
ZXRjaCIgYnV0IGdvdCAidXBkYXRlZm91bmQsYWN0aXZhdGUsZmV0Y2giCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>