<?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>179147</bug_id>
          
          <creation_ts>2017-11-01 18:56:52 -0700</creation_ts>
          <short_desc>Update SWServerJobQueue to follow the Service Worker specification more closely</short_desc>
          <delta_ts>2017-11-15 12:24:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1367154</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 18:56:52 -0700</bug_when>
    <thetext>Update SWServerJobQueue to follow the Service Worker specification more closely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367157</commentid>
    <comment_count>1</comment_count>
      <attachid>325662</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 19:00:06 -0700</bug_when>
    <thetext>Created attachment 325662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367384</commentid>
    <comment_count>2</comment_count>
      <attachid>325662</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-02 10:02:50 -0700</bug_when>
    <thetext>Comment on attachment 325662
Patch

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

&gt; Source/WebCore/workers/service/server/SWServerJobQueue.cpp:103
&gt; +    m_jobTimer.startOneShot(0_s);

Do we need a timer? Can&apos;t we do that with a lambda?

&gt; Source/WebCore/workers/service/server/SWServerJobQueue.cpp:108
&gt; +    ASSERT(!m_jobQueue.isEmpty());

Is it needed? Is firstJob() not asserting somehow that the queue is not empty?
Ditto elsewhere

&gt; Source/WebCore/workers/service/server/SWServerJobQueue.cpp:212
&gt;  void SWServerJobQueue::finishCurrentJob()

Since we remove the notion of current job, should we also remove it from some of the methods like this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367389</commentid>
    <comment_count>3</comment_count>
      <attachid>325662</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-02 10:05:41 -0700</bug_when>
    <thetext>Comment on attachment 325662
Patch

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

&gt;&gt; Source/WebCore/workers/service/server/SWServerJobQueue.cpp:103
&gt;&gt; +    m_jobTimer.startOneShot(0_s);
&gt; 
&gt; Do we need a timer? Can&apos;t we do that with a lambda?

How? if you&apos;re suggesting callOnMainThread([] { }), then I prefer a timer because it cannot outlive the SWServerJobQueue object.

&gt;&gt; Source/WebCore/workers/service/server/SWServerJobQueue.cpp:108
&gt;&gt; +    ASSERT(!m_jobQueue.isEmpty());
&gt; 
&gt; Is it needed? Is firstJob() not asserting somehow that the queue is not empty?
&gt; Ditto elsewhere

Not needed.

&gt;&gt; Source/WebCore/workers/service/server/SWServerJobQueue.cpp:212
&gt;&gt;  void SWServerJobQueue::finishCurrentJob()
&gt; 
&gt; Since we remove the notion of current job, should we also remove it from some of the methods like this one.

I did not remove the notion of current job. I only removed the m_currentJob member and the code now treats firstJob() as the current job.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367393</commentid>
    <comment_count>4</comment_count>
      <attachid>325727</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-02 10:07:47 -0700</bug_when>
    <thetext>Created attachment 325727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367399</commentid>
    <comment_count>5</comment_count>
      <attachid>325729</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-02 10:22:22 -0700</bug_when>
    <thetext>Created attachment 325729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367409</commentid>
    <comment_count>6</comment_count>
      <attachid>325729</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-02 10:39:02 -0700</bug_when>
    <thetext>Comment on attachment 325729
Patch

Clearing flags on attachment: 325729

Committed r224341: &lt;https://trac.webkit.org/changeset/224341&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367410</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-02 10:39:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372136</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 12:24:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/35567457&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325662</attachid>
            <date>2017-11-01 19:00:06 -0700</date>
            <delta_ts>2017-11-02 10:07:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179147-20171101190006.patch</filename>
            <type>text/plain</type>
            <size>13239</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFmNmM1ZjA2NzExNTQx
NjNjZmMyOTkzMTg3ZGU1OTJmZmY3MGVkNS4uNWViMzFkMzNjN2NhMjQ5NzkzYThlNDMwMzkzMGUx
YjhkMjUxZjkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM5IEBACiAyMDE3LTExLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXBkYXRlIFNXU2VydmVySm9i
UXVldWUgdG8gZm9sbG93IHRoZSBTZXJ2aWNlIFdvcmtlciBzcGVjaWZpY2F0aW9uIG1vcmUgY2xv
c2VseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5
MTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxp
Z24gbmFtaW5nIHdpdGggdGhlIHNwZWNpZmljYXRpb24uCisKKyAgICAgICAgR2V0IHJpZCBvZiB1
bm5lY2Vzc2FyeSBtX2N1cnJlbnRKb2IgYXMgdGhlIGN1cnJlbnQgam9iIGlzIGFsd2F5cyB0aGUg
Zmlyc3QKKyAgICAgICAgam9iIGluIHRoZSBxdWV1ZS4KKworICAgICAgICBJbmxpbmUgc29tZSBv
ZiB0aGUgdGlueSBtZXRob2RzIHRvIHNpbXBsaWZ5IGNvZGUuIFRob3NlIHdlcmUgbGVmdG92ZXJz
IGZyb20gd2hlbgorICAgICAgICB3ZSB1c2VkIHRvIGhhdmUgYSBiYWNrZ3JvdW5kIHRocmVhZC4K
KworICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKToKKyAgICAgICAgKiB3b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJKb2JRdWV1ZTo6U1dTZXJ2ZXJKb2JRdWV1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNX
U2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2VydmVySm9iUXVldWU6OnJ1bk5leHRKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2
ZXJKb2JRdWV1ZTo6cnVuTmV4dEpvYlN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJKb2JRdWV1ZTo6cnVuVW5yZWdpc3RlckpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlckpvYlF1ZXVlOjpydW5VcGRhdGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJK
b2JRdWV1ZTo6cmVqZWN0Q3VycmVudEpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpv
YlF1ZXVlOjpmaW5pc2hDdXJyZW50Sm9iKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVl
dWU6OmZpcnN0Sm9iIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6
Omxhc3RKb2IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6ZW5x
dWV1ZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpzaXplIGNvbnN0
KToKKworMjAxNy0xMS0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCiAgICAg
ICAgIERyb3AgcnVubmluZyBTZXJ2aWNlIFdvcmtlciBKb2JzIG9uIGEgYmFja2dyb3VuZCB0aHJl
YWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTE0
MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXIuY3BwCmluZGV4IDEzNWZmODEzOTM3NDliYmYyMTM4MmExNjhkYjJhMDdjYzg2YjVmZmUuLjlh
YzBmN2Y5ZDA5OTAxY2FkYzg5NDI1ZDRlZjY2YjkyODRkNTRhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0xMTYsMTcg
KzExNiwyMSBAQCBTV1NlcnZlcjo6U1dTZXJ2ZXIoKQogICAgIH0pOwogfQogCisvLyBodHRwczov
L3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jc2NoZWR1bGUtam9iLWFsZ29yaXRobQogdm9p
ZCBTV1NlcnZlcjo6c2NoZWR1bGVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRh
dGEpCiB7CiAgICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMoam9iRGF0YS5jb25uZWN0
aW9uSWRlbnRpZmllcigpKSk7CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fam9iUXVldWVzLmFkZChq
b2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBudWxscHRyKTsKLSAgICBpZiAocmVzdWx0LmlzTmV3
RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVl
PFNXU2VydmVySm9iUXVldWU+KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpKTsKKyAg
ICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjLCBjaGVjayBpZiB0aGlzIGpvYiBpcyBlcXVpdmFsZW50
IHRvIHRoZSBsYXN0IGpvYiBvbiB0aGUgcXVldWUuCisgICAgLy8gSWYgaXQgaXMsIHN0YWNrIGl0
IGFsb25nIHdpdGggdGhhdCBqb2IuCiAKLSAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSk7CisgICAgYXV0byYgam9iUXVldWUgPSAqbV9qb2JRdWV1ZXMuZW5zdXJlKGpvYkRhdGEucmVn
aXN0cmF0aW9uS2V5KCksIFt0aGlzLCAmam9iRGF0YV0geworICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxTV1NlcnZlckpvYlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25L
ZXkoKSk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS0+ZW5xdWV1ZUpvYihqb2JEYXRhKTsKKyAgICBqb2JRdWV1ZS5lbnF1ZXVlSm9iKGpvYkRh
dGEpOworICAgIGlmIChqb2JRdWV1ZS5zaXplKCkgPT0gMSkKKyAgICAgICAgam9iUXVldWUucnVu
TmV4dEpvYigpOwogfQogCiB2b2lkIFNXU2VydmVyOjpyZWplY3RKb2IoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmIGpvYkRhdGEsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbkRhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlckpvYlF1ZXVlLmNwcAppbmRleCA4OTMyYjE0ODFhNzc5ZjhkODhmYzQ0YjJiZjFmNWMy
OThjYjE1ZTAyLi5lMmVkMjk5NWQxNDA3YjRlMDU0Mjk0N2JiZThjNGYwZDUxNjJkMmY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU1dTZXJ2ZXJKb2JRdWV1ZTo6U1dTZXJ2ZXJKb2JRdWV1ZShTV1NlcnZlciYgc2VydmVyLCBj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCi0gICAgOiBtX2pvYlRpbWVy
KCp0aGlzLCAmU1dTZXJ2ZXJKb2JRdWV1ZTo6c3RhcnROZXh0Sm9iKQorICAgIDogbV9qb2JUaW1l
cigqdGhpcywgJlNXU2VydmVySm9iUXVldWU6OnJ1bk5leHRKb2JTeW5jaHJvbm91c2x5KQogICAg
ICwgbV9zZXJ2ZXIoc2VydmVyKQogICAgICwgbV9yZWdpc3RyYXRpb25LZXkoa2V5KQogewpAQCAt
NTEsMjYgKzUxLDEzIEBAIFNXU2VydmVySm9iUXVldWU6On5TV1NlcnZlckpvYlF1ZXVlKCkKICAg
ICBBU1NFUlQobV9qb2JRdWV1ZS5pc0VtcHR5KCkpOwogfQogCi12b2lkIFNXU2VydmVySm9iUXVl
dWU6OmVucXVldWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCi17Ci0g
ICAgLy8gRklYTUU6IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBqb2IgaXMgZXF1aXZhbGVu
dCB0byB0aGUgbGFzdCBqb2Igb24gdGhlIHF1ZXVlLgotICAgIC8vIElmIGl0IGlzLCBzdGFjayBp
dCBhbG9uZyB3aXRoIHRoYXQgam9iLgotCi0gICAgbV9qb2JRdWV1ZS5hcHBlbmQoam9iRGF0YSk7
Ci0KLSAgICBpZiAobV9jdXJyZW50Sm9iKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1f
am9iVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9qb2JUaW1lci5zdGFydE9uZVNob3QoMF9z
KTsKLX0KLQogdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2Vy
dmVyOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQmIHJlc3VsdCkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50Sm9iICYmIG1fY3VycmVudEpvYi0+
aWRlbnRpZmllcigpID09IHJlc3VsdC5qb2JJZGVudGlmaWVyKTsKKyAgICBhdXRvJiBqb2IgPSBm
aXJzdEpvYigpOworICAgIEFTU0VSVChqb2IuaWRlbnRpZmllcigpID09IHJlc3VsdC5qb2JJZGVu
dGlmaWVyKTsKIAogICAgIGlmICghcmVzdWx0LnNjcmlwdEVycm9yLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIHJlamVjdEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0
cmluZygiU2NyaXB0IFVSTCAiLCBtX2N1cnJlbnRKb2ItPnNjcmlwdFVSTC5zdHJpbmcoKSwgIiBm
ZXRjaCByZXN1bHRlZCBpbiBlcnJvcjogIiwgcmVzdWx0LnNjcmlwdEVycm9yLmxvY2FsaXplZERl
c2NyaXB0aW9uKCkpIH0pOworICAgICAgICByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEg
eyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIlNjcmlwdCBVUkwgIiwgam9iLnNjcmlwdFVSTC5z
dHJpbmcoKSwgIiBmZXRjaCByZXN1bHRlZCBpbiBlcnJvcjogIiwgcmVzdWx0LnNjcmlwdEVycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uKCkpIH0pOwogCiAgICAgICAgIC8vIElmIG5ld2VzdFdvcmtl
ciBpcyBudWxsLCBpbnZva2UgQ2xlYXIgUmVnaXN0cmF0aW9uIGFsZ29yaXRobSBwYXNzaW5nIHRo
aXMgcmVnaXN0cmF0aW9uIGFzIGl0cyBhcmd1bWVudC4KICAgICAgICAgLy8gRklYTUU6IFdlIGRv
bid0IGhhdmUgImNsZWFyIHJlZ2lzdHJhdGlvbiIgeWV0LgpAQCAtODIsNyArNjksNyBAQCB2b2lk
IFNXU2VydmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbgogICAgIC8vIHRoZW4gcmVzb2x2ZSBhbmQgZmluaXNoIHRoZSBq
b2Igd2l0aG91dCBkb2luZyBhbnl0aGluZyBmdXJ0aGVyLgogCiAgICAgLy8gRklYTUU6IFN1cHBv
cnQgdGhlIHByb3BlciB3b3JrZXIgdHlwZSAoY2xhc3NpYyB2cyBtb2R1bGUpCi0gICAgbV9zZXJ2
ZXIudXBkYXRlV29ya2VyKGNvbm5lY3Rpb24sIG1fcmVnaXN0cmF0aW9uS2V5LCBtX2N1cnJlbnRK
b2ItPnNjcmlwdFVSTCwgcmVzdWx0LnNjcmlwdCwgV29ya2VyVHlwZTo6Q2xhc3NpYyk7CisgICAg
bV9zZXJ2ZXIudXBkYXRlV29ya2VyKGNvbm5lY3Rpb24sIG1fcmVnaXN0cmF0aW9uS2V5LCBqb2Iu
c2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0LCBXb3JrZXJUeXBlOjpDbGFzc2ljKTsKIH0KIAogdm9p
ZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcjo6
Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKQEAgLTEwMywyOCArOTAsMzcgQEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRDb250
ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHNlcnYKICAgICBhdXRv
KiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25L
ZXkpOwogICAgIEFTU0VSVChyZWdpc3RyYXRpb24pOwogICAgIHJlZ2lzdHJhdGlvbi0+c2V0QWN0
aXZlU2VydmljZVdvcmtlcklkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwotICAg
IHJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iKHJlZ2lzdHJhdGlvbi0+ZGF0YSgpKTsKKwor
ICAgIG1fc2VydmVyLnJlc29sdmVSZWdpc3RyYXRpb25Kb2IoZmlyc3RKb2IoKSwgcmVnaXN0cmF0
aW9uLT5kYXRhKCkpOworICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKIH0KIAotdm9pZCBTV1NlcnZl
ckpvYlF1ZXVlOjpzdGFydE5leHRKb2IoKQorLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZp
Y2VXb3JrZXIvI3J1bi1qb2IKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuTmV4dEpvYigpCiB7
Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRKb2IpOwogICAgIEFTU0VSVCghbV9qb2JRdWV1ZS5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVCghbV9qb2JUaW1lci5pc0FjdGl2ZSgpKTsKKyAgICBtX2pvYlRp
bWVyLnN0YXJ0T25lU2hvdCgwX3MpOworfQogCi0gICAgbV9jdXJyZW50Sm9iID0gc3RkOjptYWtl
X3VuaXF1ZTxTZXJ2aWNlV29ya2VySm9iRGF0YT4obV9qb2JRdWV1ZS50YWtlRmlyc3QoKSk7Cit2
b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1bk5leHRKb2JTeW5jaHJvbm91c2x5KCkKK3sKKyAgICBB
U1NFUlQoIW1fam9iUXVldWUuaXNFbXB0eSgpKTsKIAotICAgIHN3aXRjaCAobV9jdXJyZW50Sm9i
LT50eXBlKSB7CisgICAgYXV0byYgam9iID0gZmlyc3RKb2IoKTsKKyAgICBzd2l0Y2ggKGpvYi50
eXBlKSB7CiAgICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI6Ci0gICAgICAg
IHJ1blJlZ2lzdGVySm9iKCptX2N1cnJlbnRKb2IpOworICAgICAgICBydW5SZWdpc3RlckpvYihq
b2IpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VW5y
ZWdpc3RlcjoKLSAgICAgICAgcnVuVW5yZWdpc3RlckpvYigqbV9jdXJyZW50Sm9iKTsKKyAgICAg
ICAgcnVuVW5yZWdpc3RlckpvYihqb2IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorLy8gaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL1NlcnZpY2VXb3JrZXIvI3JlZ2lzdGVyLWFsZ29yaXRobQogdm9pZCBTV1NlcnZlckpvYlF1
ZXVlOjpydW5SZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogewog
ICAgIEFTU0VSVChqb2IudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOwpA
QCAtMTQ1LDcgKzE0MSw4IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2Io
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKICAgICAgICAgcmVnaXN0cmF0aW9uLT5z
ZXRJc1VuaW5zdGFsbGluZyhmYWxzZSk7CiAgICAgICAgIGF1dG8qIG5ld2VzdFdvcmtlciA9IHJl
Z2lzdHJhdGlvbi0+Z2V0TmV3ZXN0V29ya2VyKCk7CiAgICAgICAgIGlmIChuZXdlc3RXb3JrZXIg
JiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RX
b3JrZXItPnNjcmlwdFVSTCgpKSAmJiBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFD
YWNoZSA9PSByZWdpc3RyYXRpb24tPnVwZGF0ZVZpYUNhY2hlKCkpIHsKLSAgICAgICAgICAgIHJl
c29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iKHJlZ2lzdHJhdGlvbi0+ZGF0YSgpKTsKKyAgICAg
ICAgICAgIG1fc2VydmVyLnJlc29sdmVSZWdpc3RyYXRpb25Kb2IoZmlyc3RKb2IoKSwgcmVnaXN0
cmF0aW9uLT5kYXRhKCkpOworICAgICAgICAgICAgZmluaXNoQ3VycmVudEpvYigpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTE1Niw2ICsxNTMsNyBA
QCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiBqb2IpCiAgICAgcnVuVXBkYXRlSm9iKGpvYik7CiB9CiAKKy8vIGh0dHBzOi8v
dzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN1bnJlZ2lzdGVyLWFsZ29yaXRobQogdm9pZCBT
V1NlcnZlckpvYlF1ZXVlOjpydW5VbnJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhJiBqb2IpCiB7CiAgICAgLy8gSWYgdGhlIG9yaWdpbiBvZiBqb2LigJlzIHNjb3BlIHVybCBp
cyBub3Qgam9iJ3MgY2xpZW50J3Mgb3JpZ2luLCB0aGVuOgpAQCAtMTY4LDcgKzE2Niw4IEBAIHZv
aWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuVW5yZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYgam9iKQogICAgIC8vIElmIHJlZ2lzdHJhdGlvbiBpcyBudWxsLCB0aGVuOgogICAg
IGlmICghcmVnaXN0cmF0aW9uIHx8IHJlZ2lzdHJhdGlvbi0+aXNVbmluc3RhbGxpbmcoKSkgewog
ICAgICAgICAvLyBJbnZva2UgUmVzb2x2ZSBKb2IgUHJvbWlzZSB3aXRoIGpvYiBhbmQgZmFsc2Uu
Ci0gICAgICAgIHJlc29sdmVDdXJyZW50VW5yZWdpc3RyYXRpb25Kb2IoZmFsc2UpOworICAgICAg
ICBtX3NlcnZlci5yZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2IoZmlyc3RKb2IoKSwgbV9yZWdpc3Ry
YXRpb25LZXksIGZhbHNlKTsKKyAgICAgICAgZmluaXNoQ3VycmVudEpvYigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xNzYsMTEgKzE3NSwxMyBAQCB2b2lkIFNXU2VydmVySm9iUXVl
dWU6OnJ1blVucmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKICAg
ICByZWdpc3RyYXRpb24tPnNldElzVW5pbnN0YWxsaW5nKHRydWUpOwogCiAgICAgLy8gSW52b2tl
IFJlc29sdmUgSm9iIFByb21pc2Ugd2l0aCBqb2IgYW5kIHRydWUuCi0gICAgcmVzb2x2ZUN1cnJl
bnRVbnJlZ2lzdHJhdGlvbkpvYih0cnVlKTsKKyAgICBtX3NlcnZlci5yZXNvbHZlVW5yZWdpc3Ry
YXRpb25Kb2IoZmlyc3RKb2IoKSwgbV9yZWdpc3RyYXRpb25LZXksIHRydWUpOwogCiAgICAgLy8g
RklYTUU6IEludm9rZSBUcnkgQ2xlYXIgUmVnaXN0cmF0aW9uIHdpdGggcmVnaXN0cmF0aW9uLgor
ICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKIH0KIAorLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1Nl
cnZpY2VXb3JrZXIvI3VwZGF0ZS1hbGdvcml0aG0KIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVu
VXBkYXRlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiB7CiAgICAgYXV0byog
cmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5
KTsKQEAgLTE5Niw1NiArMTk3LDI2IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuVXBkYXRl
Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAgICAgaWYgKG5ld2VzdFdvcmtl
ciAmJiAhZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdl
c3RXb3JrZXItPnNjcmlwdFVSTCgpKSkKICAgICAgICAgcmV0dXJuIHJlamVjdEN1cnJlbnRKb2Io
RXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgdXBkYXRlIGEg
c2VydmljZSB3b3JrZXIgd2l0aCBhIHJlcXVlc3RlZCBzY3JpcHQgVVJMIHdob3NlIG5ld2VzdCB3
b3JrZXIgaGFzIGEgZGlmZmVyZW50IHNjcmlwdCBVUkwiKSB9KTsKIAotICAgIHN0YXJ0U2NyaXB0
RmV0Y2hGb3JDdXJyZW50Sm9iKCk7CisgICAgbV9zZXJ2ZXIuc3RhcnRTY3JpcHRGZXRjaChqb2Ip
OwogfQogCiB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlamVjdEN1cnJlbnRKb2IoY29uc3QgRXhj
ZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50Sm9iKTsK
LQotICAgIG1fc2VydmVyLnJlamVjdEpvYigqbV9jdXJyZW50Sm9iLCBleGNlcHRpb25EYXRhKTsK
LQotICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKLX0KLQotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpy
ZXNvbHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YSYgZGF0YSkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50Sm9iKTsKLSAgICBBU1NFUlQo
bV9jdXJyZW50Sm9iLT50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3Rlcik7Ci0K
LSAgICBtX3NlcnZlci5yZXNvbHZlUmVnaXN0cmF0aW9uSm9iKCptX2N1cnJlbnRKb2IsIGRhdGEp
OwotCi0gICAgZmluaXNoQ3VycmVudEpvYigpOwotfQotCi12b2lkIFNXU2VydmVySm9iUXVldWU6
OnJlc29sdmVDdXJyZW50VW5yZWdpc3RyYXRpb25Kb2IoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3Vs
dCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50Sm9iKTsKLSAgICBBU1NFUlQobV9jdXJyZW50Sm9i
LT50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJlZ2lzdGVyKTsKLQotICAgIG1fc2Vy
dmVyLnJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYigqbV9jdXJyZW50Sm9iLCBtX3JlZ2lzdHJhdGlv
bktleSwgdW5yZWdpc3RyYXRpb25SZXN1bHQpOworICAgIEFTU0VSVCghbV9qb2JRdWV1ZS5pc0Vt
cHR5KCkpOworICAgIG1fc2VydmVyLnJlamVjdEpvYihmaXJzdEpvYigpLCBleGNlcHRpb25EYXRh
KTsKIAogICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKIH0KIAotdm9pZCBTV1NlcnZlckpvYlF1ZXVl
OjpzdGFydFNjcmlwdEZldGNoRm9yQ3VycmVudEpvYigpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVu
dEpvYik7Ci0KLSAgICBtX3NlcnZlci5zdGFydFNjcmlwdEZldGNoKCptX2N1cnJlbnRKb2IpOwot
fQotCisvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jZmluaXNoLWpvYgog
dm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpmaW5pc2hDdXJyZW50Sm9iKCkKIHsKLSAgICBBU1NFUlQo
bV9jdXJyZW50Sm9iKTsKKyAgICBBU1NFUlQoIW1fam9iUXVldWUuaXNFbXB0eSgpKTsKICAgICBB
U1NFUlQoIW1fam9iVGltZXIuaXNBY3RpdmUoKSk7CiAKLSAgICBtX2N1cnJlbnRKb2IgPSBudWxs
cHRyOwotICAgIGlmIChtX2pvYlF1ZXVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQVNTRVJUKCFtX2pvYlRpbWVyLmlzQWN0aXZlKCkpOwotICAgIG1fam9iVGltZXIuc3RhcnRP
bmVTaG90KDBfcyk7CisgICAgbV9qb2JRdWV1ZS5yZW1vdmVGaXJzdCgpOworICAgIGlmICghbV9q
b2JRdWV1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJ1bk5leHRKb2IoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaAppbmRleCAwZWJiMjI2M2FjOGEzMzE1NDE0NzU4
YWE5ZTZiNDRmY2QzMGE4OTcwLi5jZjcwODZhMzZkMTQxMjVhM2Y2NmFhZmViZDlmMzljODc4OTky
MGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuaApAQCAtNDAsMTggKzQwLDIxIEBAIHB1YmxpYzoKICAgICBT
V1NlcnZlckpvYlF1ZXVlKGNvbnN0IFNXU2VydmVyUmVnaXN0cmF0aW9uJikgPSBkZWxldGU7CiAg
ICAgflNXU2VydmVySm9iUXVldWUoKTsKIAotICAgIHZvaWQgZW5xdWV1ZUpvYihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYpOworICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBmaXJz
dEpvYigpIGNvbnN0IHsgcmV0dXJuIG1fam9iUXVldWUuZmlyc3QoKTsgfQorICAgIGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhJiBsYXN0Sm9iKCkgY29uc3QgeyByZXR1cm4gbV9qb2JRdWV1ZS5s
YXN0KCk7IH0KKyAgICB2b2lkIGVucXVldWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEm
IGpvYkRhdGEpIHsgbV9qb2JRdWV1ZS5hcHBlbmQoam9iRGF0YSk7IH0KKyAgICBzaXplX3Qgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fam9iUXVldWUuc2l6ZSgpOyB9CisKKyAgICB2b2lkIHJ1bk5l
eHRKb2IoKTsKKwogICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6Q29ubmVj
dGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwogICAgIHZvaWQgc2NyaXB0
Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcm
IHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2NyaXB0Q29udGV4
dFN0YXJ0ZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBq
b2JUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzdGFydE5leHRKb2IoKTsKKyAgICB2b2lkIHJ1bk5l
eHRKb2JTeW5jaHJvbm91c2x5KCk7CiAgICAgdm9pZCByZWplY3RDdXJyZW50Sm9iKGNvbnN0IEV4
Y2VwdGlvbkRhdGEmKTsKLSAgICB2b2lkIHJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJik7Ci0gICAgdm9pZCByZXNvbHZlQ3Vy
cmVudFVucmVnaXN0cmF0aW9uSm9iKGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwotICAgIHZv
aWQgc3RhcnRTY3JpcHRGZXRjaEZvckN1cnJlbnRKb2IoKTsKICAgICB2b2lkIGZpbmlzaEN1cnJl
bnRKb2IoKTsKIAogICAgIHZvaWQgcnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGEmKTsKQEAgLTU5LDcgKzYyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJ1blVwZGF0ZUpv
Yihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogCiAgICAgRGVxdWU8U2VydmljZVdvcmtl
ckpvYkRhdGE+IG1fam9iUXVldWU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJK
b2JEYXRhPiBtX2N1cnJlbnRKb2I7CiAKICAgICBUaW1lciBtX2pvYlRpbWVyOwogICAgIFNXU2Vy
dmVyJiBtX3NlcnZlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325727</attachid>
            <date>2017-11-02 10:07:47 -0700</date>
            <delta_ts>2017-11-02 10:22:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179147-20171102100746.patch</filename>
            <type>text/plain</type>
            <size>13734</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI5YTVjNDUzY2QwZTM5
NTdlOTJkMWU4NjgzNWRjMzMyMGM5NDhmNS4uNWFjNzk0YWY1MGFlYjJiNmE3NGUxODZkNzFhNDM5
Y2JiODljZTc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTExLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIFNXU2VydmVySm9i
UXVldWUgdG8gZm9sbG93IHRoZSBTZXJ2aWNlIFdvcmtlciBzcGVjaWZpY2F0aW9uIG1vcmUgY2xv
c2VseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5
MTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBBbGln
biBuYW1pbmcgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICBHZXQgcmlkIG9mIHVu
bmVjZXNzYXJ5IG1fY3VycmVudEpvYiBhcyB0aGUgY3VycmVudCBqb2IgaXMgYWx3YXlzIHRoZSBm
aXJzdAorICAgICAgICBqb2IgaW4gdGhlIHF1ZXVlLgorCisgICAgICAgIElubGluZSBzb21lIG9m
IHRoZSB0aW55IG1ldGhvZHMgdG8gc2ltcGxpZnkgY29kZS4gVGhvc2Ugd2VyZSBsZWZ0b3ZlcnMg
ZnJvbSB3aGVuCisgICAgICAgIHdlIHVzZWQgdG8gaGF2ZSBhIGJhY2tncm91bmQgdGhyZWFkLgor
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlckpvYlF1ZXVlOjpTV1NlcnZlckpvYlF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuTmV4dEpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
ckpvYlF1ZXVlOjpydW5OZXh0Sm9iU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlckpvYlF1ZXVlOjpydW5VbnJlZ2lzdGVySm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVySm9iUXVldWU6OnJ1blVwZGF0ZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpv
YlF1ZXVlOjpyZWplY3RDdXJyZW50Sm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9i
UXVldWU6OmZpbmlzaEN1cnJlbnRKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1
ZTo6Zmlyc3RKb2IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6
bGFzdEpvYiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjplbnF1
ZXVlSm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNpemUgY29uc3Qp
OgorCiAyMDE3LTExLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1NlcnZpY2UgV29ya2Vyc10gQWRkIGluaXRpYWwgaW1wbGVtZW50YXRpb24gZm9yIHRyeSBD
bGVhciBSZWdpc3RyYXRpb24gLyBDbGVhciBSZWdpc3RyYXRpb24gYWxnb3JpdGhtcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRl
eCAxMzVmZjgxMzkzNzQ5YmJmMjEzODJhMTY4ZGIyYTA3Y2M4NmI1ZmZlLi45YWMwZjdmOWQwOTkw
MWNhZGM4OTQyNWQ0ZWY2NmI5Mjg0ZDU0YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTE2LDE3ICsxMTYsMjEgQEAg
U1dTZXJ2ZXI6OlNXU2VydmVyKCkKICAgICB9KTsKIH0KIAorLy8gaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL1NlcnZpY2VXb3JrZXIvI3NjaGVkdWxlLWpvYi1hbGdvcml0aG0KIHZvaWQgU1dTZXJ2ZXI6
OnNjaGVkdWxlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQogewogICAg
IEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZp
ZXIoKSkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2pvYlF1ZXVlcy5hZGQoam9iRGF0YS5yZWdp
c3RyYXRpb25LZXkoKSwgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlckpv
YlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgLy8gRklYTUU6
IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBqb2IgaXMgZXF1aXZhbGVudCB0byB0aGUgbGFz
dCBqb2Igb24gdGhlIHF1ZXVlLgorICAgIC8vIElmIGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRo
IHRoYXQgam9iLgogCi0gICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOworICAgIGF1
dG8mIGpvYlF1ZXVlID0gKm1fam9iUXVldWVzLmVuc3VyZShqb2JEYXRhLnJlZ2lzdHJhdGlvbktl
eSgpLCBbdGhpcywgJmpvYkRhdGFdIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1dTZXJ2ZXJKb2JRdWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOworICAg
IH0pLml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmVucXVl
dWVKb2Ioam9iRGF0YSk7CisgICAgam9iUXVldWUuZW5xdWV1ZUpvYihqb2JEYXRhKTsKKyAgICBp
ZiAoam9iUXVldWUuc2l6ZSgpID09IDEpCisgICAgICAgIGpvYlF1ZXVlLnJ1bk5leHRKb2IoKTsK
IH0KIAogdm9pZCBTV1NlcnZlcjo6cmVqZWN0Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
JiBqb2JEYXRhLCBjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAKaW5kZXggMGJkN2Y2ZDYyMWVmNDFjYzBlZDYzMzlkY2JkNjU4YTRhOTY1M2YyMS4u
MDVmYjJiNzZiYTBhM2QwYTlhZDcxZjRiOWFhY2QzZjI2YTVhMzg0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuY3BwCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNXU2VydmVy
Sm9iUXVldWU6OlNXU2VydmVySm9iUXVldWUoU1dTZXJ2ZXImIHNlcnZlciwgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQotICAgIDogbV9qb2JUaW1lcigqdGhpcywgJlNX
U2VydmVySm9iUXVldWU6OnN0YXJ0TmV4dEpvYikKKyAgICA6IG1fam9iVGltZXIoKnRoaXMsICZT
V1NlcnZlckpvYlF1ZXVlOjpydW5OZXh0Sm9iU3luY2hyb25vdXNseSkKICAgICAsIG1fc2VydmVy
KHNlcnZlcikKICAgICAsIG1fcmVnaXN0cmF0aW9uS2V5KGtleSkKIHsKQEAgLTUxLDI5ICs1MSwx
NiBAQCBTV1NlcnZlckpvYlF1ZXVlOjp+U1dTZXJ2ZXJKb2JRdWV1ZSgpCiAgICAgQVNTRVJUKG1f
am9iUXVldWUuaXNFbXB0eSgpKTsKIH0KIAotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjplbnF1ZXVl
Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQotewotICAgIC8vIEZJWE1F
OiBQZXIgdGhlIHNwZWMsIGNoZWNrIGlmIHRoaXMgam9iIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGxh
c3Qgam9iIG9uIHRoZSBxdWV1ZS4KLSAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0
aCB0aGF0IGpvYi4KLQotICAgIG1fam9iUXVldWUuYXBwZW5kKGpvYkRhdGEpOwotCi0gICAgaWYg
KG1fY3VycmVudEpvYikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2pvYlRpbWVyLmlz
QWN0aXZlKCkpCi0gICAgICAgIG1fam9iVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci19Ci0KIHZv
aWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQp
CiB7Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYiAmJiBtX2N1cnJlbnRKb2ItPmlkZW50aWZpZXIo
KSA9PSByZXN1bHQuam9iSWRlbnRpZmllcik7CisgICAgYXV0byYgam9iID0gZmlyc3RKb2IoKTsK
KyAgICBBU1NFUlQoam9iLmlkZW50aWZpZXIoKSA9PSByZXN1bHQuam9iSWRlbnRpZmllcik7CiAK
ICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdp
c3RyYXRpb25LZXkpOwogICAgIEFTU0VSVChyZWdpc3RyYXRpb24pOwogCiAgICAgaWYgKCFyZXN1
bHQuc2NyaXB0RXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgcmVqZWN0Q3VycmVudEpvYihFeGNl
cHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJTY3JpcHQgVVJMICIsIG1fY3Vy
cmVudEpvYi0+c2NyaXB0VVJMLnN0cmluZygpLCAiIGZldGNoIHJlc3VsdGVkIGluIGVycm9yOiAi
LCByZXN1bHQuc2NyaXB0RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSkgfSk7CisgICAgICAg
IHJlamVjdEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmlu
ZygiU2NyaXB0IFVSTCAiLCBqb2Iuc2NyaXB0VVJMLnN0cmluZygpLCAiIGZldGNoIHJlc3VsdGVk
IGluIGVycm9yOiAiLCByZXN1bHQuc2NyaXB0RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSkg
fSk7CiAKICAgICAgICAgLy8gSWYgbmV3ZXN0V29ya2VyIGlzIG51bGwsIGludm9rZSBDbGVhciBS
ZWdpc3RyYXRpb24gYWxnb3JpdGhtIHBhc3NpbmcgdGhpcyByZWdpc3RyYXRpb24gYXMgaXRzIGFy
Z3VtZW50LgogICAgICAgICBpZiAoIXJlZ2lzdHJhdGlvbi0+Z2V0TmV3ZXN0V29ya2VyKCkpCkBA
IC04Niw3ICs3Myw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hl
ZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uCiAgICAgLy8gdGhlbiByZXNv
bHZlIGFuZCBmaW5pc2ggdGhlIGpvYiB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGZ1cnRoZXIuCiAK
ICAgICAvLyBGSVhNRTogU3VwcG9ydCB0aGUgcHJvcGVyIHdvcmtlciB0eXBlIChjbGFzc2ljIHZz
IG1vZHVsZSkKLSAgICBtX3NlcnZlci51cGRhdGVXb3JrZXIoY29ubmVjdGlvbiwgbV9yZWdpc3Ry
YXRpb25LZXksIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0LCBXb3JrZXJU
eXBlOjpDbGFzc2ljKTsKKyAgICBtX3NlcnZlci51cGRhdGVXb3JrZXIoY29ubmVjdGlvbiwgbV9y
ZWdpc3RyYXRpb25LZXksIGpvYi5zY3JpcHRVUkwsIHJlc3VsdC5zY3JpcHQsIFdvcmtlclR5cGU6
OkNsYXNzaWMpOwogfQogCiB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWls
ZWRUb1N0YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMTA3LDI4ICs5NCwzNSBAQCB2b2lkIFNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgdWlu
dDY0X3Qgc2VydgogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJh
dGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CiAgICAg
cmVnaXN0cmF0aW9uLT5zZXRBY3RpdmVTZXJ2aWNlV29ya2VySWRlbnRpZmllcihzZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7Ci0gICAgcmVzb2x2ZUN1cnJlbnRSZWdpc3RyYXRpb25Kb2IocmVnaXN0
cmF0aW9uLT5kYXRhKCkpOworCisgICAgbV9zZXJ2ZXIucmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYihm
aXJzdEpvYigpLCByZWdpc3RyYXRpb24tPmRhdGEoKSk7CisgICAgZmluaXNoQ3VycmVudEpvYigp
OwogfQogCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnN0YXJ0TmV4dEpvYigpCisvLyBodHRwczov
L3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jcnVuLWpvYgordm9pZCBTV1NlcnZlckpvYlF1
ZXVlOjpydW5OZXh0Sm9iKCkKIHsKLSAgICBBU1NFUlQoIW1fY3VycmVudEpvYik7CiAgICAgQVNT
RVJUKCFtX2pvYlF1ZXVlLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX2pvYlRpbWVyLmlzQWN0
aXZlKCkpOworICAgIG1fam9iVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Cit9CiAKLSAgICBtX2N1
cnJlbnRKb2IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2JEYXRhPihtX2pvYlF1
ZXVlLnRha2VGaXJzdCgpKTsKLQotICAgIHN3aXRjaCAobV9jdXJyZW50Sm9iLT50eXBlKSB7Cit2
b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1bk5leHRKb2JTeW5jaHJvbm91c2x5KCkKK3sKKyAgICBh
dXRvJiBqb2IgPSBmaXJzdEpvYigpOworICAgIHN3aXRjaCAoam9iLnR5cGUpIHsKICAgICBjYXNl
IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKLSAgICAgICAgcnVuUmVnaXN0ZXJKb2Io
Km1fY3VycmVudEpvYik7CisgICAgICAgIHJ1blJlZ2lzdGVySm9iKGpvYik7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJlZ2lzdGVyOgotICAgICAg
ICBydW5VbnJlZ2lzdGVySm9iKCptX2N1cnJlbnRKb2IpOworICAgICAgICBydW5VbnJlZ2lzdGVy
Sm9iKGpvYik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCisvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtl
ci8jcmVnaXN0ZXItYWxnb3JpdGhtCiB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVy
Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiB7CiAgICAgQVNTRVJUKGpvYi50
eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3Rlcik7CkBAIC0xNDksNyArMTQzLDgg
QEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YSYgam9iKQogICAgICAgICByZWdpc3RyYXRpb24tPnNldElzVW5pbnN0YWxsaW5n
KGZhbHNlKTsKICAgICAgICAgYXV0byogbmV3ZXN0V29ya2VyID0gcmVnaXN0cmF0aW9uLT5nZXRO
ZXdlc3RXb3JrZXIoKTsKICAgICAgICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVhbElnbm9yaW5n
RnJhZ21lbnRJZGVudGlmaWVyKGpvYi5zY3JpcHRVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJM
KCkpICYmIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlID09IHJlZ2lzdHJh
dGlvbi0+dXBkYXRlVmlhQ2FjaGUoKSkgewotICAgICAgICAgICAgcmVzb2x2ZUN1cnJlbnRSZWdp
c3RyYXRpb25Kb2IocmVnaXN0cmF0aW9uLT5kYXRhKCkpOworICAgICAgICAgICAgbV9zZXJ2ZXIu
cmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYihmaXJzdEpvYigpLCByZWdpc3RyYXRpb24tPmRhdGEoKSk7
CisgICAgICAgICAgICBmaW5pc2hDdXJyZW50Sm9iKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtMTYwLDYgKzE1NSw3IEBAIHZvaWQgU1dTZXJ2ZXJK
b2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikK
ICAgICBydW5VcGRhdGVKb2Ioam9iKTsKIH0KIAorLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1Nl
cnZpY2VXb3JrZXIvI3VucmVnaXN0ZXItYWxnb3JpdGhtCiB2b2lkIFNXU2VydmVySm9iUXVldWU6
OnJ1blVucmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKIHsKICAg
ICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYuKAmXMgc2NvcGUgdXJsIGlzIG5vdCBqb2IncyBjbGll
bnQncyBvcmlnaW4sIHRoZW46CkBAIC0xNzIsNyArMTY4LDggQEAgdm9pZCBTV1NlcnZlckpvYlF1
ZXVlOjpydW5VbnJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAg
ICAgLy8gSWYgcmVnaXN0cmF0aW9uIGlzIG51bGwsIHRoZW46CiAgICAgaWYgKCFyZWdpc3RyYXRp
b24gfHwgcmVnaXN0cmF0aW9uLT5pc1VuaW5zdGFsbGluZygpKSB7CiAgICAgICAgIC8vIEludm9r
ZSBSZXNvbHZlIEpvYiBQcm9taXNlIHdpdGggam9iIGFuZCBmYWxzZS4KLSAgICAgICAgcmVzb2x2
ZUN1cnJlbnRVbnJlZ2lzdHJhdGlvbkpvYihmYWxzZSk7CisgICAgICAgIG1fc2VydmVyLnJlc29s
dmVVbnJlZ2lzdHJhdGlvbkpvYihmaXJzdEpvYigpLCBtX3JlZ2lzdHJhdGlvbktleSwgZmFsc2Up
OworICAgICAgICBmaW5pc2hDdXJyZW50Sm9iKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTE4MCwxMCArMTc3LDExIEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuVW5yZWdpc3Rl
ckpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogICAgIHJlZ2lzdHJhdGlvbi0+
c2V0SXNVbmluc3RhbGxpbmcodHJ1ZSk7CiAKICAgICAvLyBJbnZva2UgUmVzb2x2ZSBKb2IgUHJv
bWlzZSB3aXRoIGpvYiBhbmQgdHJ1ZS4KLSAgICByZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9u
Sm9iKHRydWUpOworICAgIG1fc2VydmVyLnJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYihmaXJzdEpv
YigpLCBtX3JlZ2lzdHJhdGlvbktleSwgdHJ1ZSk7CiAKICAgICAvLyBJbnZva2UgVHJ5IENsZWFy
IFJlZ2lzdHJhdGlvbiB3aXRoIHJlZ2lzdHJhdGlvbi4KICAgICB0cnlDbGVhclJlZ2lzdHJhdGlv
bigqcmVnaXN0cmF0aW9uKTsKKyAgICBmaW5pc2hDdXJyZW50Sm9iKCk7CiB9CiAKIC8vIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN0cnktY2xlYXItcmVnaXN0cmF0aW9uLWFs
Z29yaXRobQpAQCAtMTk2LDEzICsxOTQsNyBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnRyeUNs
ZWFyUmVnaXN0cmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCiAgICAg
ICAgIGNsZWFyUmVnaXN0cmF0aW9uKHJlZ2lzdHJhdGlvbik7CiB9CiAKLS8vIGh0dHBzOi8vdzNj
LmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyNjbGVhci1yZWdpc3RyYXRpb24KLXZvaWQgU1dTZXJ2
ZXJKb2JRdWV1ZTo6Y2xlYXJSZWdpc3RyYXRpb24oU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lz
dHJhdGlvbikKLXsKLSAgICAvLyBGSVhNRTogVXBkYXRlIC8gdGVybWluYXRlIHRoZSByZWdpc3Ry
YXRpb24ncyBzZXJ2aWNlIHdvcmtlcnMuCi0gICAgbV9zZXJ2ZXIucmVtb3ZlUmVnaXN0cmF0aW9u
KHJlZ2lzdHJhdGlvbi5rZXkoKSk7Ci19Ci0KKy8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2
aWNlV29ya2VyLyN1cGRhdGUtYWxnb3JpdGhtCiB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blVw
ZGF0ZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogewogICAgIGF1dG8qIHJl
Z2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7
CkBAIC0yMTgsNTYgKzIxMCwyNCBAQCB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blVwZGF0ZUpv
Yihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogICAgIGlmIChuZXdlc3RXb3JrZXIg
JiYgIWVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoam9iLnNjcmlwdFVSTCwgbmV3ZXN0
V29ya2VyLT5zY3JpcHRVUkwoKSkpCiAgICAgICAgIHJldHVybiByZWplY3RDdXJyZW50Sm9iKEV4
Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHVwZGF0ZSBhIHNl
cnZpY2Ugd29ya2VyIHdpdGggYSByZXF1ZXN0ZWQgc2NyaXB0IFVSTCB3aG9zZSBuZXdlc3Qgd29y
a2VyIGhhcyBhIGRpZmZlcmVudCBzY3JpcHQgVVJMIikgfSk7CiAKLSAgICBzdGFydFNjcmlwdEZl
dGNoRm9yQ3VycmVudEpvYigpOworICAgIG1fc2VydmVyLnN0YXJ0U2NyaXB0RmV0Y2goam9iKTsK
IH0KIAogdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpyZWplY3RDdXJyZW50Sm9iKGNvbnN0IEV4Y2Vw
dGlvbkRhdGEmIGV4Y2VwdGlvbkRhdGEpCiB7Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYik7Ci0K
LSAgICBtX3NlcnZlci5yZWplY3RKb2IoKm1fY3VycmVudEpvYiwgZXhjZXB0aW9uRGF0YSk7Cisg
ICAgbV9zZXJ2ZXIucmVqZWN0Sm9iKGZpcnN0Sm9iKCksIGV4Y2VwdGlvbkRhdGEpOwogCiAgICAg
ZmluaXNoQ3VycmVudEpvYigpOwogfQogCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnJlc29sdmVD
dXJyZW50UmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
JiBkYXRhKQotewotICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOwotICAgIEFTU0VSVChtX2N1cnJl
bnRKb2ItPnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyKTsKLQotICAgIG1f
c2VydmVyLnJlc29sdmVSZWdpc3RyYXRpb25Kb2IoKm1fY3VycmVudEpvYiwgZGF0YSk7Ci0KLSAg
ICBmaW5pc2hDdXJyZW50Sm9iKCk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2
ZUN1cnJlbnRVbnJlZ2lzdHJhdGlvbkpvYihib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQotewot
ICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOwotICAgIEFTU0VSVChtX2N1cnJlbnRKb2ItPnR5cGUg
PT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVucmVnaXN0ZXIpOwotCi0gICAgbV9zZXJ2ZXIucmVz
b2x2ZVVucmVnaXN0cmF0aW9uSm9iKCptX2N1cnJlbnRKb2IsIG1fcmVnaXN0cmF0aW9uS2V5LCB1
bnJlZ2lzdHJhdGlvblJlc3VsdCk7Ci0KLSAgICBmaW5pc2hDdXJyZW50Sm9iKCk7Ci19Ci0KLXZv
aWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c3RhcnRTY3JpcHRGZXRjaEZvckN1cnJlbnRKb2IoKQotewot
ICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOwotCi0gICAgbV9zZXJ2ZXIuc3RhcnRTY3JpcHRGZXRj
aCgqbV9jdXJyZW50Sm9iKTsKLX0KLQorLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VX
b3JrZXIvI2ZpbmlzaC1qb2IKIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZmluaXNoQ3VycmVudEpv
YigpCiB7Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYik7CiAgICAgQVNTRVJUKCFtX2pvYlRpbWVy
LmlzQWN0aXZlKCkpOwogCi0gICAgbV9jdXJyZW50Sm9iID0gbnVsbHB0cjsKLSAgICBpZiAobV9q
b2JRdWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVCghbV9qb2JU
aW1lci5pc0FjdGl2ZSgpKTsKLSAgICBtX2pvYlRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworICAg
IG1fam9iUXVldWUucmVtb3ZlRmlyc3QoKTsKKyAgICBpZiAoIW1fam9iUXVldWUuaXNFbXB0eSgp
KQorICAgICAgICBydW5OZXh0Sm9iKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJK
b2JRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ckpvYlF1ZXVlLmgKaW5kZXggMTdmYjMyYWJhMGI0ZmU3MWY5ODljYzBlNWQ0YzFiZGEwODE5Njc3
Zi4uZDczNDZmMDMzNGFhNmZkM2NhZWMzYzliNmNmMmIyNGU3MzA2YmNlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmgKQEAgLTQwLDE4ICs0MCwyMSBAQCBwdWJsaWM6CiAgICAgU1dTZXJ2ZXJKb2JRdWV1ZShj
b25zdCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpID0gZGVsZXRlOwogICAgIH5TV1NlcnZlckpvYlF1
ZXVlKCk7CiAKLSAgICB2b2lkIGVucXVldWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEm
KTsKKyAgICBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgZmlyc3RKb2IoKSBjb25zdCB7IHJl
dHVybiBtX2pvYlF1ZXVlLmZpcnN0KCk7IH0KKyAgICBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YSYgbGFzdEpvYigpIGNvbnN0IHsgcmV0dXJuIG1fam9iUXVldWUubGFzdCgpOyB9CisgICAgdm9p
ZCBlbnF1ZXVlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKSB7IG1fam9i
UXVldWUuYXBwZW5kKGpvYkRhdGEpOyB9CisgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVy
biBtX2pvYlF1ZXVlLnNpemUoKTsgfQorCisgICAgdm9pZCBydW5OZXh0Sm9iKCk7CisKICAgICB2
b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBjb25zdCBTZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKICAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKICAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVy
OjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgd29ya2VySUQpOwogCiBwcml2YXRlOgogICAgIHZvaWQgam9iVGltZXJGaXJlZCgpOwot
ICAgIHZvaWQgc3RhcnROZXh0Sm9iKCk7CisgICAgdm9pZCBydW5OZXh0Sm9iU3luY2hyb25vdXNs
eSgpOwogICAgIHZvaWQgcmVqZWN0Q3VycmVudEpvYihjb25zdCBFeGNlcHRpb25EYXRhJik7Ci0g
ICAgdm9pZCByZXNvbHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGF0YSYpOwotICAgIHZvaWQgcmVzb2x2ZUN1cnJlbnRVbnJlZ2lzdHJhdGlv
bkpvYihib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKLSAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0
Y2hGb3JDdXJyZW50Sm9iKCk7CiAgICAgdm9pZCBmaW5pc2hDdXJyZW50Sm9iKCk7CiAKICAgICB2
b2lkIHJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CkBAIC02Miw3
ICs2NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclJlZ2lzdHJhdGlvbihTV1NlcnZlclJl
Z2lzdHJhdGlvbiYpOwogCiAgICAgRGVxdWU8U2VydmljZVdvcmtlckpvYkRhdGE+IG1fam9iUXVl
dWU7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBtX2N1cnJlbnRK
b2I7CiAKICAgICBUaW1lciBtX2pvYlRpbWVyOwogICAgIFNXU2VydmVyJiBtX3NlcnZlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325729</attachid>
            <date>2017-11-02 10:22:22 -0700</date>
            <delta_ts>2017-11-02 10:39:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179147-20171102102221.patch</filename>
            <type>text/plain</type>
            <size>13472</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI5YTVjNDUzY2QwZTM5
NTdlOTJkMWU4NjgzNWRjMzMyMGM5NDhmNS4uNWFjNzk0YWY1MGFlYjJiNmE3NGUxODZkNzFhNDM5
Y2JiODljZTc5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTExLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXBkYXRlIFNXU2VydmVySm9i
UXVldWUgdG8gZm9sbG93IHRoZSBTZXJ2aWNlIFdvcmtlciBzcGVjaWZpY2F0aW9uIG1vcmUgY2xv
c2VseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5
MTQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICBBbGln
biBuYW1pbmcgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbi4KKworICAgICAgICBHZXQgcmlkIG9mIHVu
bmVjZXNzYXJ5IG1fY3VycmVudEpvYiBhcyB0aGUgY3VycmVudCBqb2IgaXMgYWx3YXlzIHRoZSBm
aXJzdAorICAgICAgICBqb2IgaW4gdGhlIHF1ZXVlLgorCisgICAgICAgIElubGluZSBzb21lIG9m
IHRoZSB0aW55IG1ldGhvZHMgdG8gc2ltcGxpZnkgY29kZS4gVGhvc2Ugd2VyZSBsZWZ0b3ZlcnMg
ZnJvbSB3aGVuCisgICAgICAgIHdlIHVzZWQgdG8gaGF2ZSBhIGJhY2tncm91bmQgdGhyZWFkLgor
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTV1NlcnZlcjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlckpvYlF1ZXVlOjpTV1NlcnZlckpvYlF1ZXVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuTmV4dEpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZl
ckpvYlF1ZXVlOjpydW5OZXh0Sm9iU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlckpvYlF1ZXVlOjpydW5VbnJlZ2lzdGVySm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2Vy
dmVySm9iUXVldWU6OnJ1blVwZGF0ZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpv
YlF1ZXVlOjpyZWplY3RDdXJyZW50Sm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9i
UXVldWU6OmZpbmlzaEN1cnJlbnRKb2IpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1
ZTo6Zmlyc3RKb2IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6
bGFzdEpvYiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjplbnF1
ZXVlSm9iKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNpemUgY29uc3Qp
OgorCiAyMDE3LTExLTAyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1NlcnZpY2UgV29ya2Vyc10gQWRkIGluaXRpYWwgaW1wbGVtZW50YXRpb24gZm9yIHRyeSBD
bGVhciBSZWdpc3RyYXRpb24gLyBDbGVhciBSZWdpc3RyYXRpb24gYWxnb3JpdGhtcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRl
eCAxMzVmZjgxMzkzNzQ5YmJmMjEzODJhMTY4ZGIyYTA3Y2M4NmI1ZmZlLi45YWMwZjdmOWQwOTkw
MWNhZGM4OTQyNWQ0ZWY2NmI5Mjg0ZDU0YTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMTE2LDE3ICsxMTYsMjEgQEAg
U1dTZXJ2ZXI6OlNXU2VydmVyKCkKICAgICB9KTsKIH0KIAorLy8gaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL1NlcnZpY2VXb3JrZXIvI3NjaGVkdWxlLWpvYi1hbGdvcml0aG0KIHZvaWQgU1dTZXJ2ZXI6
OnNjaGVkdWxlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQogewogICAg
IEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGpvYkRhdGEuY29ubmVjdGlvbklkZW50aWZp
ZXIoKSkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2pvYlF1ZXVlcy5hZGQoam9iRGF0YS5yZWdp
c3RyYXRpb25LZXkoKSwgbnVsbHB0cik7Ci0gICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQotICAg
ICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlckpv
YlF1ZXVlPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgLy8gRklYTUU6
IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBqb2IgaXMgZXF1aXZhbGVudCB0byB0aGUgbGFz
dCBqb2Igb24gdGhlIHF1ZXVlLgorICAgIC8vIElmIGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRo
IHRoYXQgam9iLgogCi0gICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOworICAgIGF1
dG8mIGpvYlF1ZXVlID0gKm1fam9iUXVldWVzLmVuc3VyZShqb2JEYXRhLnJlZ2lzdHJhdGlvbktl
eSgpLCBbdGhpcywgJmpvYkRhdGFdIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
U1dTZXJ2ZXJKb2JRdWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkpOworICAg
IH0pLml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmVucXVl
dWVKb2Ioam9iRGF0YSk7CisgICAgam9iUXVldWUuZW5xdWV1ZUpvYihqb2JEYXRhKTsKKyAgICBp
ZiAoam9iUXVldWUuc2l6ZSgpID09IDEpCisgICAgICAgIGpvYlF1ZXVlLnJ1bk5leHRKb2IoKTsK
IH0KIAogdm9pZCBTV1NlcnZlcjo6cmVqZWN0Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
JiBqb2JEYXRhLCBjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JR
dWV1ZS5jcHAKaW5kZXggMGJkN2Y2ZDYyMWVmNDFjYzBlZDYzMzlkY2JkNjU4YTRhOTY1M2YyMS4u
NjkwYjA0MmJhMGRmZDQxZDkwODlkMTg5MDdkYWQwYmZjOTk4MjVmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVl
dWUuY3BwCkBAIC00MCw3ICs0MCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNXU2VydmVy
Sm9iUXVldWU6OlNXU2VydmVySm9iUXVldWUoU1dTZXJ2ZXImIHNlcnZlciwgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQotICAgIDogbV9qb2JUaW1lcigqdGhpcywgJlNX
U2VydmVySm9iUXVldWU6OnN0YXJ0TmV4dEpvYikKKyAgICA6IG1fam9iVGltZXIoKnRoaXMsICZT
V1NlcnZlckpvYlF1ZXVlOjpydW5OZXh0Sm9iU3luY2hyb25vdXNseSkKICAgICAsIG1fc2VydmVy
KHNlcnZlcikKICAgICAsIG1fcmVnaXN0cmF0aW9uS2V5KGtleSkKIHsKQEAgLTUxLDI5ICs1MSwx
NiBAQCBTV1NlcnZlckpvYlF1ZXVlOjp+U1dTZXJ2ZXJKb2JRdWV1ZSgpCiAgICAgQVNTRVJUKG1f
am9iUXVldWUuaXNFbXB0eSgpKTsKIH0KIAotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjplbnF1ZXVl
Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQotewotICAgIC8vIEZJWE1F
OiBQZXIgdGhlIHNwZWMsIGNoZWNrIGlmIHRoaXMgam9iIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGxh
c3Qgam9iIG9uIHRoZSBxdWV1ZS4KLSAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0
aCB0aGF0IGpvYi4KLQotICAgIG1fam9iUXVldWUuYXBwZW5kKGpvYkRhdGEpOwotCi0gICAgaWYg
KG1fY3VycmVudEpvYikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2pvYlRpbWVyLmlz
QWN0aXZlKCkpCi0gICAgICAgIG1fam9iVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci19Ci0KIHZv
aWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQp
CiB7Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYiAmJiBtX2N1cnJlbnRKb2ItPmlkZW50aWZpZXIo
KSA9PSByZXN1bHQuam9iSWRlbnRpZmllcik7CisgICAgYXV0byYgam9iID0gZmlyc3RKb2IoKTsK
KyAgICBBU1NFUlQoam9iLmlkZW50aWZpZXIoKSA9PSByZXN1bHQuam9iSWRlbnRpZmllcik7CiAK
ICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdp
c3RyYXRpb25LZXkpOwogICAgIEFTU0VSVChyZWdpc3RyYXRpb24pOwogCiAgICAgaWYgKCFyZXN1
bHQuc2NyaXB0RXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgcmVqZWN0Q3VycmVudEpvYihFeGNl
cHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJTY3JpcHQgVVJMICIsIG1fY3Vy
cmVudEpvYi0+c2NyaXB0VVJMLnN0cmluZygpLCAiIGZldGNoIHJlc3VsdGVkIGluIGVycm9yOiAi
LCByZXN1bHQuc2NyaXB0RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSkgfSk7CisgICAgICAg
IHJlamVjdEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmlu
ZygiU2NyaXB0IFVSTCAiLCBqb2Iuc2NyaXB0VVJMLnN0cmluZygpLCAiIGZldGNoIHJlc3VsdGVk
IGluIGVycm9yOiAiLCByZXN1bHQuc2NyaXB0RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSkg
fSk7CiAKICAgICAgICAgLy8gSWYgbmV3ZXN0V29ya2VyIGlzIG51bGwsIGludm9rZSBDbGVhciBS
ZWdpc3RyYXRpb24gYWxnb3JpdGhtIHBhc3NpbmcgdGhpcyByZWdpc3RyYXRpb24gYXMgaXRzIGFy
Z3VtZW50LgogICAgICAgICBpZiAoIXJlZ2lzdHJhdGlvbi0+Z2V0TmV3ZXN0V29ya2VyKCkpCkBA
IC04Niw3ICs3Myw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hGaW5pc2hl
ZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uCiAgICAgLy8gdGhlbiByZXNv
bHZlIGFuZCBmaW5pc2ggdGhlIGpvYiB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGZ1cnRoZXIuCiAK
ICAgICAvLyBGSVhNRTogU3VwcG9ydCB0aGUgcHJvcGVyIHdvcmtlciB0eXBlIChjbGFzc2ljIHZz
IG1vZHVsZSkKLSAgICBtX3NlcnZlci51cGRhdGVXb3JrZXIoY29ubmVjdGlvbiwgbV9yZWdpc3Ry
YXRpb25LZXksIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0LCBXb3JrZXJU
eXBlOjpDbGFzc2ljKTsKKyAgICBtX3NlcnZlci51cGRhdGVXb3JrZXIoY29ubmVjdGlvbiwgbV9y
ZWdpc3RyYXRpb25LZXksIGpvYi5zY3JpcHRVUkwsIHJlc3VsdC5zY3JpcHQsIFdvcmtlclR5cGU6
OkNsYXNzaWMpOwogfQogCiB2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWls
ZWRUb1N0YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMTA3LDI4ICs5NCwzNSBAQCB2b2lkIFNXU2VydmVy
Sm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgdWlu
dDY0X3Qgc2VydgogICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJh
dGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CiAgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CiAgICAg
cmVnaXN0cmF0aW9uLT5zZXRBY3RpdmVTZXJ2aWNlV29ya2VySWRlbnRpZmllcihzZXJ2aWNlV29y
a2VySWRlbnRpZmllcik7Ci0gICAgcmVzb2x2ZUN1cnJlbnRSZWdpc3RyYXRpb25Kb2IocmVnaXN0
cmF0aW9uLT5kYXRhKCkpOworCisgICAgbV9zZXJ2ZXIucmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYihm
aXJzdEpvYigpLCByZWdpc3RyYXRpb24tPmRhdGEoKSk7CisgICAgZmluaXNoQ3VycmVudEpvYigp
OwogfQogCi12b2lkIFNXU2VydmVySm9iUXVldWU6OnN0YXJ0TmV4dEpvYigpCisvLyBodHRwczov
L3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jcnVuLWpvYgordm9pZCBTV1NlcnZlckpvYlF1
ZXVlOjpydW5OZXh0Sm9iKCkKIHsKLSAgICBBU1NFUlQoIW1fY3VycmVudEpvYik7CiAgICAgQVNT
RVJUKCFtX2pvYlF1ZXVlLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX2pvYlRpbWVyLmlzQWN0
aXZlKCkpOworICAgIG1fam9iVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Cit9CiAKLSAgICBtX2N1
cnJlbnRKb2IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2JEYXRhPihtX2pvYlF1
ZXVlLnRha2VGaXJzdCgpKTsKLQotICAgIHN3aXRjaCAobV9jdXJyZW50Sm9iLT50eXBlKSB7Cit2
b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1bk5leHRKb2JTeW5jaHJvbm91c2x5KCkKK3sKKyAgICBh
dXRvJiBqb2IgPSBmaXJzdEpvYigpOworICAgIHN3aXRjaCAoam9iLnR5cGUpIHsKICAgICBjYXNl
IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKLSAgICAgICAgcnVuUmVnaXN0ZXJKb2Io
Km1fY3VycmVudEpvYik7CisgICAgICAgIHJ1blJlZ2lzdGVySm9iKGpvYik7CiAgICAgICAgIHJl
dHVybjsKICAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJlZ2lzdGVyOgotICAgICAg
ICBydW5VbnJlZ2lzdGVySm9iKCptX2N1cnJlbnRKb2IpOworICAgICAgICBydW5VbnJlZ2lzdGVy
Sm9iKGpvYik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCisvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtl
ci8jcmVnaXN0ZXItYWxnb3JpdGhtCiB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVy
Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiB7CiAgICAgQVNTRVJUKGpvYi50
eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3Rlcik7CkBAIC0xNDksNyArMTQzLDgg
QEAgdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YSYgam9iKQogICAgICAgICByZWdpc3RyYXRpb24tPnNldElzVW5pbnN0YWxsaW5n
KGZhbHNlKTsKICAgICAgICAgYXV0byogbmV3ZXN0V29ya2VyID0gcmVnaXN0cmF0aW9uLT5nZXRO
ZXdlc3RXb3JrZXIoKTsKICAgICAgICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVhbElnbm9yaW5n
RnJhZ21lbnRJZGVudGlmaWVyKGpvYi5zY3JpcHRVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJM
KCkpICYmIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlID09IHJlZ2lzdHJh
dGlvbi0+dXBkYXRlVmlhQ2FjaGUoKSkgewotICAgICAgICAgICAgcmVzb2x2ZUN1cnJlbnRSZWdp
c3RyYXRpb25Kb2IocmVnaXN0cmF0aW9uLT5kYXRhKCkpOworICAgICAgICAgICAgbV9zZXJ2ZXIu
cmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYihmaXJzdEpvYigpLCByZWdpc3RyYXRpb24tPmRhdGEoKSk7
CisgICAgICAgICAgICBmaW5pc2hDdXJyZW50Sm9iKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtMTYwLDYgKzE1NSw3IEBAIHZvaWQgU1dTZXJ2ZXJK
b2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikK
ICAgICBydW5VcGRhdGVKb2Ioam9iKTsKIH0KIAorLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL1Nl
cnZpY2VXb3JrZXIvI3VucmVnaXN0ZXItYWxnb3JpdGhtCiB2b2lkIFNXU2VydmVySm9iUXVldWU6
OnJ1blVucmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKIHsKICAg
ICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYuKAmXMgc2NvcGUgdXJsIGlzIG5vdCBqb2IncyBjbGll
bnQncyBvcmlnaW4sIHRoZW46CkBAIC0xNzIsNyArMTY4LDggQEAgdm9pZCBTV1NlcnZlckpvYlF1
ZXVlOjpydW5VbnJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCiAg
ICAgLy8gSWYgcmVnaXN0cmF0aW9uIGlzIG51bGwsIHRoZW46CiAgICAgaWYgKCFyZWdpc3RyYXRp
b24gfHwgcmVnaXN0cmF0aW9uLT5pc1VuaW5zdGFsbGluZygpKSB7CiAgICAgICAgIC8vIEludm9r
ZSBSZXNvbHZlIEpvYiBQcm9taXNlIHdpdGggam9iIGFuZCBmYWxzZS4KLSAgICAgICAgcmVzb2x2
ZUN1cnJlbnRVbnJlZ2lzdHJhdGlvbkpvYihmYWxzZSk7CisgICAgICAgIG1fc2VydmVyLnJlc29s
dmVVbnJlZ2lzdHJhdGlvbkpvYihmaXJzdEpvYigpLCBtX3JlZ2lzdHJhdGlvbktleSwgZmFsc2Up
OworICAgICAgICBmaW5pc2hDdXJyZW50Sm9iKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTE4MCwxMCArMTc3LDExIEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuVW5yZWdpc3Rl
ckpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQogICAgIHJlZ2lzdHJhdGlvbi0+
c2V0SXNVbmluc3RhbGxpbmcodHJ1ZSk7CiAKICAgICAvLyBJbnZva2UgUmVzb2x2ZSBKb2IgUHJv
bWlzZSB3aXRoIGpvYiBhbmQgdHJ1ZS4KLSAgICByZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9u
Sm9iKHRydWUpOworICAgIG1fc2VydmVyLnJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYihmaXJzdEpv
YigpLCBtX3JlZ2lzdHJhdGlvbktleSwgdHJ1ZSk7CiAKICAgICAvLyBJbnZva2UgVHJ5IENsZWFy
IFJlZ2lzdHJhdGlvbiB3aXRoIHJlZ2lzdHJhdGlvbi4KICAgICB0cnlDbGVhclJlZ2lzdHJhdGlv
bigqcmVnaXN0cmF0aW9uKTsKKyAgICBmaW5pc2hDdXJyZW50Sm9iKCk7CiB9CiAKIC8vIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN0cnktY2xlYXItcmVnaXN0cmF0aW9uLWFs
Z29yaXRobQpAQCAtMjAzLDYgKzIwMSw3IEBAIHZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6Y2xlYXJS
ZWdpc3RyYXRpb24oU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKICAgICBtX3Nl
cnZlci5yZW1vdmVSZWdpc3RyYXRpb24ocmVnaXN0cmF0aW9uLmtleSgpKTsKIH0KIAorLy8gaHR0
cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3VwZGF0ZS1hbGdvcml0aG0KIHZvaWQg
U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuVXBkYXRlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
JiBqb2IpCiB7CiAgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0
aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKQEAgLTIxOCw1NiArMjE3LDI0IEBAIHZvaWQgU1dTZXJ2
ZXJKb2JRdWV1ZTo6cnVuVXBkYXRlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2Ip
CiAgICAgaWYgKG5ld2VzdFdvcmtlciAmJiAhZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmll
cihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpKSkKICAgICAgICAgcmV0
dXJuIHJlamVjdEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgQVNDSUlMaXRl
cmFsKCJDYW5ub3QgdXBkYXRlIGEgc2VydmljZSB3b3JrZXIgd2l0aCBhIHJlcXVlc3RlZCBzY3Jp
cHQgVVJMIHdob3NlIG5ld2VzdCB3b3JrZXIgaGFzIGEgZGlmZmVyZW50IHNjcmlwdCBVUkwiKSB9
KTsKIAotICAgIHN0YXJ0U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKCk7CisgICAgbV9zZXJ2ZXIu
c3RhcnRTY3JpcHRGZXRjaChqb2IpOwogfQogCiB2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlamVj
dEN1cnJlbnRKb2IoY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKIHsKLSAgICBB
U1NFUlQobV9jdXJyZW50Sm9iKTsKLQotICAgIG1fc2VydmVyLnJlamVjdEpvYigqbV9jdXJyZW50
Sm9iLCBleGNlcHRpb25EYXRhKTsKLQotICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKLX0KLQotdm9p
ZCBTV1NlcnZlckpvYlF1ZXVlOjpyZXNvbHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYihjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYgZGF0YSkKLXsKLSAgICBBU1NFUlQobV9jdXJy
ZW50Sm9iKTsKLSAgICBBU1NFUlQobV9jdXJyZW50Sm9iLT50eXBlID09IFNlcnZpY2VXb3JrZXJK
b2JUeXBlOjpSZWdpc3Rlcik7Ci0KLSAgICBtX3NlcnZlci5yZXNvbHZlUmVnaXN0cmF0aW9uSm9i
KCptX2N1cnJlbnRKb2IsIGRhdGEpOwotCi0gICAgZmluaXNoQ3VycmVudEpvYigpOwotfQotCi12
b2lkIFNXU2VydmVySm9iUXVldWU6OnJlc29sdmVDdXJyZW50VW5yZWdpc3RyYXRpb25Kb2IoYm9v
bCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50Sm9iKTsKLSAg
ICBBU1NFUlQobV9jdXJyZW50Sm9iLT50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJl
Z2lzdGVyKTsKLQotICAgIG1fc2VydmVyLnJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYigqbV9jdXJy
ZW50Sm9iLCBtX3JlZ2lzdHJhdGlvbktleSwgdW5yZWdpc3RyYXRpb25SZXN1bHQpOworICAgIG1f
c2VydmVyLnJlamVjdEpvYihmaXJzdEpvYigpLCBleGNlcHRpb25EYXRhKTsKIAogICAgIGZpbmlz
aEN1cnJlbnRKb2IoKTsKIH0KIAotdm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzdGFydFNjcmlwdEZl
dGNoRm9yQ3VycmVudEpvYigpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYik7Ci0KLSAgICBt
X3NlcnZlci5zdGFydFNjcmlwdEZldGNoKCptX2N1cnJlbnRKb2IpOwotfQotCisvLyBodHRwczov
L3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jZmluaXNoLWpvYgogdm9pZCBTV1NlcnZlckpv
YlF1ZXVlOjpmaW5pc2hDdXJyZW50Sm9iKCkKIHsKLSAgICBBU1NFUlQobV9jdXJyZW50Sm9iKTsK
ICAgICBBU1NFUlQoIW1fam9iVGltZXIuaXNBY3RpdmUoKSk7CiAKLSAgICBtX2N1cnJlbnRKb2Ig
PSBudWxscHRyOwotICAgIGlmIChtX2pvYlF1ZXVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgQVNTRVJUKCFtX2pvYlRpbWVyLmlzQWN0aXZlKCkpOwotICAgIG1fam9iVGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7CisgICAgbV9qb2JRdWV1ZS5yZW1vdmVGaXJzdCgpOworICAgIGlm
ICghbV9qb2JRdWV1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJ1bk5leHRKb2IoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaAppbmRleCAxN2ZiMzJhYmEwYjRmZTcx
Zjk4OWNjMGU1ZDRjMWJkYTA4MTk2NzdmLi5kNzM0NmYwMzM0YWE2ZmQzY2FlYzNjOWI2Y2YyYjI0
ZTczMDZiY2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaApAQCAtNDAsMTggKzQwLDIxIEBAIHB1YmxpYzoK
ICAgICBTV1NlcnZlckpvYlF1ZXVlKGNvbnN0IFNXU2VydmVyUmVnaXN0cmF0aW9uJikgPSBkZWxl
dGU7CiAgICAgflNXU2VydmVySm9iUXVldWUoKTsKIAotICAgIHZvaWQgZW5xdWV1ZUpvYihjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOworICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRh
JiBmaXJzdEpvYigpIGNvbnN0IHsgcmV0dXJuIG1fam9iUXVldWUuZmlyc3QoKTsgfQorICAgIGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBsYXN0Sm9iKCkgY29uc3QgeyByZXR1cm4gbV9qb2JR
dWV1ZS5sYXN0KCk7IH0KKyAgICB2b2lkIGVucXVldWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGEmIGpvYkRhdGEpIHsgbV9qb2JRdWV1ZS5hcHBlbmQoam9iRGF0YSk7IH0KKyAgICBzaXpl
X3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fam9iUXVldWUuc2l6ZSgpOyB9CisKKyAgICB2b2lk
IHJ1bk5leHRKb2IoKTsKKwogICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6
Q29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpOwogICAgIHZvaWQg
c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBjb25zdCBT
dHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogICAgIHZvaWQgc2NyaXB0
Q29udGV4dFN0YXJ0ZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCk7CiAKIHByaXZhdGU6CiAgICAg
dm9pZCBqb2JUaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzdGFydE5leHRKb2IoKTsKKyAgICB2b2lk
IHJ1bk5leHRKb2JTeW5jaHJvbm91c2x5KCk7CiAgICAgdm9pZCByZWplY3RDdXJyZW50Sm9iKGNv
bnN0IEV4Y2VwdGlvbkRhdGEmKTsKLSAgICB2b2lkIHJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9u
Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJik7Ci0gICAgdm9pZCByZXNv
bHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9iKGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwot
ICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvckN1cnJlbnRKb2IoKTsKICAgICB2b2lkIGZpbmlz
aEN1cnJlbnRKb2IoKTsKIAogICAgIHZvaWQgcnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmKTsKQEAgLTYyLDcgKzY1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFy
UmVnaXN0cmF0aW9uKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CiAKICAgICBEZXF1ZTxTZXJ2aWNl
V29ya2VySm9iRGF0YT4gbV9qb2JRdWV1ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdv
cmtlckpvYkRhdGE+IG1fY3VycmVudEpvYjsKIAogICAgIFRpbWVyIG1fam9iVGltZXI7CiAgICAg
U1dTZXJ2ZXImIG1fc2VydmVyOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>