<?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>177625</bug_id>
          
          <creation_ts>2017-09-28 15:02:41 -0700</creation_ts>
          <short_desc>[WK2][NetworkSession] Add support for resuming downloads</short_desc>
          <delta_ts>2018-02-26 10:25:44 -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>WebKit2</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>177667</dependson>
    
    <dependson>183134</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1354317</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-28 15:02:41 -0700</bug_when>
    <thetext>Add support for resuming downloads for the WK2 NETWORK_SESSION code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354318</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-28 15:02:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/34345975&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354320</commentid>
    <comment_count>2</comment_count>
      <attachid>322122</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-28 15:03:55 -0700</bug_when>
    <thetext>Created attachment 322122
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354321</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-28 15:06:05 -0700</bug_when>
    <thetext>Attachment 322122 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:44:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:45:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354341</commentid>
    <comment_count>4</comment_count>
      <attachid>322129</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-28 15:38:28 -0700</bug_when>
    <thetext>Created attachment 322129
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354342</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-28 15:41:16 -0700</bug_when>
    <thetext>Attachment 322129 did not pass style-queue:


ERROR: Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:44:  No space between ^ and block definition.  [whitespace/brackets] [4]
ERROR: Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:45:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354346</commentid>
    <comment_count>6</comment_count>
      <attachid>322132</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-28 15:53:56 -0700</bug_when>
    <thetext>Created attachment 322132
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354351</commentid>
    <comment_count>7</comment_count>
      <attachid>322134</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-28 16:05:33 -0700</bug_when>
    <thetext>Created attachment 322134
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354359</commentid>
    <comment_count>8</comment_count>
      <attachid>322138</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-28 16:19:57 -0700</bug_when>
    <thetext>Created attachment 322138
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354365</commentid>
    <comment_count>9</comment_count>
      <attachid>322141</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-28 16:33:29 -0700</bug_when>
    <thetext>Created attachment 322141
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354381</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-28 17:03:11 -0700</bug_when>
    <thetext>See rdar://problem/23041906</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354754</commentid>
    <comment_count>11</comment_count>
      <attachid>322248</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-29 15:54:00 -0700</bug_when>
    <thetext>Created attachment 322248
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354757</commentid>
    <comment_count>12</comment_count>
      <attachid>322250</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-09-29 16:04:37 -0700</bug_when>
    <thetext>Created attachment 322250
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356107</commentid>
    <comment_count>13</comment_count>
      <attachid>322600</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-03 15:55:56 -0700</bug_when>
    <thetext>Created attachment 322600
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356659</commentid>
    <comment_count>14</comment_count>
      <attachid>322726</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-04 14:07:07 -0700</bug_when>
    <thetext>Created attachment 322726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1356871</commentid>
    <comment_count>15</comment_count>
      <attachid>322726</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-10-04 23:44:16 -0700</bug_when>
    <thetext>Comment on attachment 322726
Patch

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

&gt; Source/WebKit/ChangeLog:13
&gt; +        when cancelling an download over non-HTTP.

an =&gt; a

&gt; Source/WebKit/ChangeLog:23
&gt; +        (WebKit::Download::resume):

Please mention the workaround here.

&gt; Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:46
&gt; +        WTFLogAlways(&quot;Could not find network session with given sessionID&quot;);

sessionID =&gt; session ID

Would it be helpful to include the value of m_sessionID in the logged message?

&gt; Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:53
&gt; +    NSMutableDictionary *dictionary = [NSPropertyListSerialization propertyListWithData:nsData.get() options:NSPropertyListImmutable format:0 error:NULL];

NULL =&gt; nullptr 

(Since this is Objective-C++)

&gt; Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:54
&gt; +    [dictionary setObject:(NSString *)path forKey:@&quot;NSURLSessionResumeInfoLocalPath&quot;];

static_cast&lt;NSString*&gt;(...)

(Since this is Objective-C++)

&gt; Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:55
&gt; +    NSData *updatedData = [NSPropertyListSerialization dataWithPropertyList:dictionary format:NSPropertyListXMLFormat_v1_0 options:0 error:NULL];

NULL =&gt; nullptr

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h:63
&gt; +    NSURLSessionDownloadTask *downloadTaskWithResumeData(NSData *);

* is on the wrong side.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:279
&gt; +                WebCore::AuthenticationChallenge authenticationChallenge(challenge);

Uniform initializer syntax?

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:677
&gt; +NSURLSessionDownloadTask *NetworkSessionCocoa::downloadTaskWithResumeData(NSData *resumeData)

*s are on the wrong side since this is a C++ member function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357040</commentid>
    <comment_count>16</comment_count>
      <attachid>322842</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-05 09:09:44 -0700</bug_when>
    <thetext>Created attachment 322842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1357042</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-05 09:10:42 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #15)
&gt; Comment on attachment 322726 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=322726&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:13
&gt; &gt; +        when cancelling an download over non-HTTP.
&gt; 
&gt; an =&gt; a
&gt; 
&gt; &gt; Source/WebKit/ChangeLog:23
&gt; &gt; +        (WebKit::Download::resume):
&gt; 
&gt; Please mention the workaround here.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:46
&gt; &gt; +        WTFLogAlways(&quot;Could not find network session with given sessionID&quot;);
&gt; 
&gt; sessionID =&gt; session ID
&gt; 
&gt; Would it be helpful to include the value of m_sessionID in the logged
&gt; message?
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:53
&gt; &gt; +    NSMutableDictionary *dictionary = [NSPropertyListSerialization propertyListWithData:nsData.get() options:NSPropertyListImmutable format:0 error:NULL];
&gt; 
&gt; NULL =&gt; nullptr 
&gt; 
&gt; (Since this is Objective-C++)
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:54
&gt; &gt; +    [dictionary setObject:(NSString *)path forKey:@&quot;NSURLSessionResumeInfoLocalPath&quot;];
&gt; 
&gt; static_cast&lt;NSString*&gt;(...)
&gt; 
&gt; (Since this is Objective-C++)
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:55
&gt; &gt; +    NSData *updatedData = [NSPropertyListSerialization dataWithPropertyList:dictionary format:NSPropertyListXMLFormat_v1_0 options:0 error:NULL];
&gt; 
&gt; NULL =&gt; nullptr
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h:63
&gt; &gt; +    NSURLSessionDownloadTask *downloadTaskWithResumeData(NSData *);
&gt; 
&gt; * is on the wrong side.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:279
&gt; &gt; +                WebCore::AuthenticationChallenge authenticationChallenge(challenge);
&gt; 
&gt; Uniform initializer syntax?
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:677
&gt; &gt; +NSURLSessionDownloadTask *NetworkSessionCocoa::downloadTaskWithResumeData(NSData *resumeData)
&gt; 
&gt; *s are on the wrong side since this is a C++ member function.

Thanks, I merged all review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360896</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-10-16 12:31:52 -0700</bug_when>
    <thetext>Alex, ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360926</commentid>
    <comment_count>19</comment_count>
      <attachid>322842</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-16 13:29:39 -0700</bug_when>
    <thetext>Comment on attachment 322842
Patch

Clearing flags on attachment: 322842

Committed r223431: &lt;https://trac.webkit.org/changeset/223431&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1360927</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-16 13:29:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322122</attachid>
            <date>2017-09-28 15:03:55 -0700</date>
            <delta_ts>2017-09-28 15:38:28 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>177625_download_resuming_wip.patch</filename>
            <type>text/plain</type>
            <size>13809</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAppbmRleCA3MzEyZjcyNTJlNS4uMzc3MDQ2YThiMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpA
QCAtMTQ2LDYgKzE0NywyOSBAQCB2b2lkIERvd25sb2FkOjpjYW5jZWwoKQogICAgIHBsYXRmb3Jt
Q2FuY2VsTmV0d29ya0xvYWQoKTsKIH0KIAorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCit2b2lk
IERvd25sb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgV1RGTG9nQWx3YXlzKCJHb3QgYXV0aGVudGljYXRpb24g
Y2hhbGxlbmdlIGZvciByZXN1bWVkIGRvd25sb2FkLiIpOworICAgIG1fY2hhbGxlbmdlID0gY2hh
bGxlbmdlOworICAgIG1fY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpDYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uo
KSkpOworfQorCit2b2lkIERvd25sb2FkOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpCit7CisgICAgQVNTRVJUKG1fY2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpOworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBz
dGQ6OmV4Y2hhbmdlKG1fY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOworICAg
IGlmICghY2FuQXV0aGVudGljYXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZSwgeyB9
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0
b24oKS5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoKnRoaXMsICptX2NoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
fQorCisjZW5kaWYKKwogI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBEb3dubG9hZDo6
ZGlkU3RhcnQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkLmgKaW5kZXggYzM3OWJjYWY4ZTcuLjk3NmIxMjRjODQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTM4
LDYgKzM4LDggQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQorI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNf
Q0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlmCkBAIC0xMDEsNiArMTAzLDgg
QEAgcHVibGljOgogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIHNldFNhbmRi
b3hFeHRlbnNpb24oUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikg
eyBtX3NhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOyB9CisgICAg
dm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBjb250aW51
ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNh
dGUpOwogI2Vsc2UKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qo
KSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
OwpAQCAtMTQ2LDYgKzE1MCw4IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lv
bkRvd25sb2FkVGFzaz4gbV9kb3dubG9hZFRhc2s7CiAjZW5kaWYKICAgICBQQUw6OlNlc3Npb25J
RCBtX3Nlc3Npb25JRDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlPiBtX2NoYWxsZW5nZTsKKyAgICBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBt
X2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyOwogI2Vsc2UgLy8gVVNFKE5FVFdPUktfU0VTU0lP
TikKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFN0cmluZyBt
X3Jlc3BvbnNlTUlNRVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCBhNjZjOTk2YWU2ZS4u
ZDBlNWU0OWRmNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtODksMTAgKzg5LDE0IEBAIHZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3dubG9hZElE
IGRvd25sb2FkSUQsIHN0ZDo6dW5pCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxM
QkFDSykKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJRCBkb3dubG9hZElELCBib29sIGNhbkF1dGhlbnRp
Y2F0ZSkKIHsKLSAgICBhdXRvKiBwZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMu
Z2V0KGRvd25sb2FkSUQpOwotICAgIEFTU0VSVChwZW5kaW5nRG93bmxvYWQpOwotICAgIGlmIChw
ZW5kaW5nRG93bmxvYWQpCisgICAgaWYgKGF1dG8qIHBlbmRpbmdEb3dubG9hZCA9IG1fcGVuZGlu
Z0Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCkpIHsKICAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5j
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0aGVudGlj
YXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoYXV0byogZG93bmxvYWQgPSBt
X2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCkpIHsKKyAgICAgICAgZG93bmxvYWQtPmNvbnRpbnVl
Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogfQogI2VuZGlmCiAKQEAgLTE2MiwxOCArMTY2LDE5IEBA
IHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3Rp
bmF0aW9uKERvd25sb2FkSUQgZG93bmxvCiAjZW5kaWYKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFn
ZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
Cit2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lP
TikKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsK
ICNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlc3Npb25JRCk7CiAgICAgLy8gRG93bmxvYWQ6OnJl
c3VtZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoZSBEb3dubG9hZCdzIHJlc291cmNl
IHJlcXVlc3QuCiAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+
KCp0aGlzLCBkb3dubG9hZElELCBSZXNvdXJjZVJlcXVlc3QoKSk7CisjZW5kaWYKIAogICAgIGRv
d25sb2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
CiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9k
b3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKLSNlbmRpZgogfQog
CiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9h
ZElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
Y29jb2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KaW5kZXggODY4ZTExOTdjOGEuLmU4ZjAzNDhm
YjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9j
b2NvYS9Eb3dubG9hZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KQEAgLTI5LDEzICsyOSw0OSBAQAogI2lm
IFVTRShORVRXT1JLX1NFU1NJT04pCiAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBv
cnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29j
b2EuaCIKKyNpbXBvcnQgIlNlc3Npb25UcmFja2VyLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05T
VVJMU2Vzc2lvbi5oPgorI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgc3RhdGljIE5TU2V0ICpwbGlzdENsYXNzZXMgPSBuaWw7CisgICAgc3Rh
dGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNl
VG9rZW4sIF57CisgICAgICAgIHBsaXN0Q2xhc3NlcyA9IFtbTlNTZXQgc2V0V2l0aE9iamVjdHM6
W05TRGljdGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwg
W05TTnVtYmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJl
cXVlc3QgY2xhc3NdICxuaWxdIHJldGFpbl07CisgICAgfSk7CisKKyAgICBtX3NhbmRib3hFeHRl
bnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
CisgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKKyAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9u
LT5jb25zdW1lKCk7CisKKyAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2Vy
OjpuZXR3b3JrU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikg
eworICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiB3
aXRoIGdpdmVuIHNlc3Npb25JRCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8m
IGNvY29hU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPigqbmV0d29y
a1Nlc3Npb24pOworICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5p
dFdpdGhCeXRlczpyZXN1bWVEYXRhLmRhdGEoKSBsZW5ndGg6cmVzdW1lRGF0YS5zaXplKCldKTsK
KworICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IHdoeSBvdXIgcmVzdW1lIGRhdGEgZG9lcyBub3Qg
Y29udGFpbiBhIHJlc3VtZSBmaWxlIHBhdGguCisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSogZCA9
IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gcHJvcGVydHlMaXN0V2l0aERhdGE6bnNEYXRh
LmdldCgpIG9wdGlvbnM6TlNQcm9wZXJ0eUxpc3RJbW11dGFibGUgZm9ybWF0OjAgZXJyb3I6TlVM
TF07CisgICAgTlNTdHJpbmcqIGV4aXN0aW5nRmlsZSA9IFtkIG9iamVjdEZvcktleTpAIk5TVVJM
U2Vzc2lvblJlc3VtZUluZm9Mb2NhbFBhdGgiXTsKKyAgICBXVEZMb2dBbHdheXMoIkV4cGVjdGlu
ZyByZXN1bWUgZmlsZSBhdCAlcyIsIFN0cmluZyhleGlzdGluZ0ZpbGUpLnV0ZjgoKS5kYXRhKCkp
OworICAgIFdURkxvZ0Fsd2F5cygiVXBkYXRpbmcgcmVzdW1lIGZpbGUgcGF0aCB0byAlcyIsIHBh
dGgudXRmOCgpLmRhdGEoKSk7CisgICAgW2Qgc2V0T2JqZWN0OihOU1N0cmluZyAqKXBhdGggZm9y
S2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworICAgIE5TRGF0YSogdXBk
YXRlZERhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlM
aXN0OmQgZm9ybWF0Ok5TUHJvcGVydHlMaXN0WE1MRm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9y
Ok5VTExdOworCisgICAgbV9kb3dubG9hZFRhc2sgPSBjb2NvYVNlc3Npb24uZG93bmxvYWRUYXNr
V2l0aFJlc3VtZURhdGEodXBkYXRlZERhdGEpOworICAgIGNvY29hU2Vzc2lvbi5hZGREb3dubG9h
ZElEKG1fZG93bmxvYWRUYXNrLmdldCgpLnRhc2tJZGVudGlmaWVyLCBtX2Rvd25sb2FkSUQpOwor
ICAgIFdURkxvZ0Fsd2F5cygiQ29uc3RydWN0ZWQgZG93bmxvYWQgdGFzayIpOworICAgIG1fZG93
bmxvYWRUYXNrLmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gcGF0aDsKKworICAgIFtt
X2Rvd25sb2FkVGFzayByZXN1bWVdOworICAgIFdURkxvZ0Fsd2F5cygiQ2FsbGVkIHJlc3VtZSIp
OwogfQogICAgIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5oCmluZGV4IDQ1OGMwYWViNWM2Li5iNTIyYjZiMDI2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLmgKQEAgLTI3LDcgKzI3LDkgQEAKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAKK09C
SkNfQ0xBU1MgTlNEYXRhOwogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb247CitPQkpDX0NMQVNTIE5T
VVJMU2Vzc2lvbkRvd25sb2FkVGFzazsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKIE9C
SkNfQ0xBU1MgV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlOwogCkBAIC01OCw2ICs2MCw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EqIGRhdGFUYXNrRm9ySWRl
bnRpZmllcihOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKmRv
d25sb2FkVGFza1dpdGhSZXN1bWVEYXRhKE5TRGF0YSAqKTsKIAogICAgIHZvaWQgYWRkRG93bmxv
YWRJRChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIERvd25sb2FkSUQpOwog
ICAgIERvd25sb2FkSUQgZG93bmxvYWRJRChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50
aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDk2YWZjY2QwYzRiLi45NmE0NWQ1OWJlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMjU2LDYgKzI1NiwyMiBAQCBzdGF0aWMgV2ViQ29yZTo6
TmV0d29ya0xvYWRQcmlvcml0eSB0b05ldHdvcmtMb2FkUHJpb3JpdHkoZmxvYXQgcHJpb3JpdHkp
CiAgICAgICAgIH07CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5n
ZShjaGFsbGVuZ2UsIFdURk1vdmUoY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9
IGVsc2UgeworICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBfc2Vzc2lvbi0+ZG93bmxvYWRJRCh0
YXNrLnRhc2tJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGRvd25sb2FkSUQuZG93bmxvYWRJRCgp
KSB7CisgICAgICAgICAgICBpZiAoYXV0byogZG93bmxvYWQgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkg
eworICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiR290IGF1dGhlbnRpY2F0aW9uIGNoYWxs
ZW5nZSBmb3IgYSBkb3dubG9hZCBiZWluZyByZXN1bWVkLiIpOworICAgICAgICAgICAgICAgIFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNo
YWxsZW5nZSk7CisgICAgICAgICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBC
bG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBhdXRvIHNlc3Np
b25JRCA9IF9zZXNzaW9uLT5zZXNzaW9uSUQoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgc2Vzc2lvbklE
LCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZV0oV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXJDb3B5KHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bv
c2l0aW9uKSwgY3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7CisgICAgICAgICAgICAgICAgICAg
IEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKKyAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5n
ZSwgV1RGTW92ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBMT0coTmV0d29ya1Nl
c3Npb24sICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXIgKGNhbmNl
bCkiLCB0YXNrSWRlbnRpZmllcik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKICAg
ICB9CkBAIC0yNzgsNyArMjk0LDcgQEAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJpb3Jp
dHkgdG9OZXR3b3JrTG9hZFByaW9yaXR5KGZsb2F0IHByaW9yaXR5KQogICAgICAgICAgICAgICAg
ICAgICBpZiAoW3VzZXJJbmZvIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lRGF0YSA9IHVzZXJJbmZvW0AiTlNVUkxTZXNz
aW9uRG93bmxvYWRUYXNrUmVzdW1lRGF0YSJdOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkRvd25sb2FkIGZhaWxlZCB3
aXRoIGVycm9yICVzIiwgU3RyaW5nKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKS51dGY4KCku
ZGF0YSgpKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdW1lRGF0YSAmJiBbcmVzdW1lRGF0YSBp
c0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKICAgICAgICAgICAgICAgICAgICAgZG93bmxv
YWQtPmRpZEZhaWwoZXJyb3IsIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlc3VtZURh
dGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxlbmd0aCB9KTsKICAgICAgICAgICAgICAgICBlbHNlCkBA
IC02NDMsNiArNjU5LDExIEBAIE5ldHdvcmtEYXRhVGFza0NvY29hKiBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpkYXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrCiAgICAgcmV0dXJuIG1f
ZGF0YVRhc2tNYXBXaXRob3V0U3RhdGUuZ2V0KHRhc2tJZGVudGlmaWVyKTsKIH0KIAorTlNVUkxT
ZXNzaW9uRG93bmxvYWRUYXNrICpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkb3dubG9hZFRhc2tXaXRo
UmVzdW1lRGF0YShOU0RhdGEgKnJlc3VtZURhdGEpCit7CisgICAgcmV0dXJuIFttX3Nlc3Npb25X
aXRoQ3JlZGVudGlhbFN0b3JhZ2UgZG93bmxvYWRUYXNrV2l0aFJlc3VtZURhdGE6cmVzdW1lRGF0
YV07Cit9CisKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWRkRG93bmxvYWRJRChOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIERvd25sb2FkSUQg
ZG93bmxvYWRJRCkKIHsKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcApp
bmRleCAwMzIwMjllZThmMi4uMTcxNDQzNGQwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNw
cApAQCAtMTU1LDYgKzE1NSwxOSBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRpbmdEb3dubG9hZCYgcAogICAgIAogICAg
IHBlbmRpbmdEb3dubG9hZC5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5n
ZUlEKSk7CiB9CisKKy8vIEZJWE1FOiBBdm9pZCBkdXBsaWNhdGlvbiB3aXRoIG1ldGhvZCBhYm92
ZS4KK3ZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoRG93bmxvYWQmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgdWludDY0X3QgZHVtbXlQYWdlSUQg
PSAwOworICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VN
YXAoeyBkdW1teVBhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpIH0pOworCisgICAgLy8gQ29hbGVzY2UgY2hhbGxlbmdlcyBpbiB0aGUgc2Ft
ZSBwcm90ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdlLgorICAgIGlmIChzaG91bGRD
b2FsZXNjZUNoYWxsZW5nZShkdW1teVBhZ2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZG93bmxvYWQuc2VuZChNZXNzYWdl
czo6RG93bmxvYWRQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOworfQogI2VuZGlmCiAKICNpZiAhVVNF
KE5FVFdPUktfU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKaW5kZXggOWViZWZkNDcwYWQu
LjFkNjU0MzRkZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAtNjYsNiArNjYsNyBAQCBw
dWJsaWM6CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXImJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
UGVuZGluZ0Rvd25sb2FkJiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
LCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZCYsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAjaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb3dubG9hZElELCBib29sIGNhbkF1dGhlbnRp
Y2F0ZSk7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322129</attachid>
            <date>2017-09-28 15:38:28 -0700</date>
            <delta_ts>2017-09-28 15:53:56 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>177625_download_resuming_wip.patch</filename>
            <type>text/plain</type>
            <size>14149</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAppbmRleCA3MzEyZjcyNTJlNS4uODBmMGUyNTgxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpA
QCAtMTQ2LDYgKzE0NywyOCBAQCB2b2lkIERvd25sb2FkOjpjYW5jZWwoKQogICAgIHBsYXRmb3Jt
Q2FuY2VsTmV0d29ya0xvYWQoKTsKIH0KIAorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCit2b2lk
IERvd25sb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9jaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7CisgICAgbV9j
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpKSk7Cit9CisKK3ZvaWQg
RG93bmxvYWQ6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShi
b29sIGNhbkF1dGhlbnRpY2F0ZSkKK3sKKyAgICBBU1NFUlQobV9jaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlcik7CisgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9j
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciwgbnVsbHB0cik7CisgICAgaWYgKCFjYW5BdXRoZW50
aWNhdGUpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlLCB7IH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0
aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgKm1f
Y2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKKyNlbmRpZgorCiAj
aWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIERvd25sb2FkOjpkaWRTdGFydCgpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApp
bmRleCBjMzc5YmNhZjhlNy4uOTc2YjEyNGM4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtMzgsNiArMzgsOCBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisjaW5j
bHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5oPgogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU1VSTFNlc3Np
b25Eb3dubG9hZFRhc2s7CiAjZW5kaWYKQEAgLTEwMSw2ICsxMDMsOCBAQCBwdWJsaWM6CiAKICNp
ZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgc2V0U2FuZGJveEV4dGVuc2lvbihSZWZQ
dHI8U2FuZGJveEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5zaW9uKSB7IG1fc2FuZGJveEV4dGVu
c2lvbiA9IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbik7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVD
aGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIGNhbkF1dGhlbnRpY2F0ZSk7CiAjZWxzZQogICAg
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVxdWVzdDsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkBAIC0xNDYsNiArMTUw
LDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrPiBt
X2Rvd25sb2FkVGFzazsKICNlbmRpZgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwor
ICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IG1fY2hh
bGxlbmdlOworICAgIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIG1fY2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXI7CiAjZWxzZSAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgU3RyaW5nIG1fcmVzcG9uc2VNSU1FVHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IGE2NmM5OTZhZTZlLi5kMGU1ZTQ5ZGY2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwCkBAIC04OSwxMCArODksMTQgQEAgdm9pZCBEb3dubG9hZE1hbmFn
ZXI6OmRhdGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3Rk
Ojp1bmkKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogdm9pZCBEb3du
bG9hZE1hbmFnZXI6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZShEb3dubG9hZElEIGRvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKQogewotICAgIGF1
dG8qIHBlbmRpbmdEb3dubG9hZCA9IG1fcGVuZGluZ0Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCk7
Ci0gICAgQVNTRVJUKHBlbmRpbmdEb3dubG9hZCk7Ci0gICAgaWYgKHBlbmRpbmdEb3dubG9hZCkK
KyAgICBpZiAoYXV0byogcGVuZGluZ0Rvd25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRzLmdldChk
b3dubG9hZElEKSkgewogICAgICAgICBwZW5kaW5nRG93bmxvYWQtPmNvbnRpbnVlQ2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmIChhdXRvKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChk
b3dubG9hZElEKSkgeworICAgICAgICBkb3dubG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CiB9CiAjZW5kaWYKIApAQCAtMTYyLDE4ICsxNjYsMTkgQEAgdm9pZCBEb3dubG9hZE1h
bmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJ
RCBkb3dubG8KICNlbmRpZgogfQogCi12b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxv
YWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2Fk
SUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkKIHsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+
KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQpOwogI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oc2Vzc2lvbklEKTsKICAgICAvLyBEb3dubG9hZDo6cmVzdW1lKCkgaXMgcmVzcG9u
c2libGUgZm9yIHNldHRpbmcgdGhlIERvd25sb2FkJ3MgcmVzb3VyY2UgcmVxdWVzdC4KICAgICBh
dXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2Fk
SUQsIFJlc291cmNlUmVxdWVzdCgpKTsKKyNlbmRpZgogCiAgICAgZG93bmxvYWQtPnJlc3VtZShy
ZXN1bWVEYXRhLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBBU1NFUlQoIW1f
ZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93
bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93
bmxvYWRDb2NvYS5tbQppbmRleCA4NjhlMTE5N2M4YS4uZThmMDM0OGZiMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbQpAQCAtMjksMTMgKzI5LDQ5IEBACiAjaWYgVVNFKE5FVFdPUktfU0VT
U0lPTikKIAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgorI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgorI2ltcG9ydCAi
U2Vzc2lvblRyYWNrZXIuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+Cisj
aW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBz
dGF0aWMgTlNTZXQgKnBsaXN0Q2xhc3NlcyA9IG5pbDsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25j
ZV90IG9uY2VUb2tlbjsKKworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAgICAg
ICAgcGxpc3RDbGFzc2VzID0gW1tOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNs
YXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3Nd
LCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10gLG5p
bF0gcmV0YWluXTsKKyAgICB9KTsKKworICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAobV9zYW5k
Ym94RXh0ZW5zaW9uKQorICAgICAgICBtX3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKKwor
ICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9u
KG1fc2Vzc2lvbklEKTsKKyAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiQ291bGQgbm90IGZpbmQgbmV0d29yayBzZXNzaW9uIHdpdGggZ2l2ZW4gc2Vzc2lv
bklEIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXV0byYgY29jb2FTZXNzaW9uID0g
c3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSY+KCpuZXR3b3JrU2Vzc2lvbik7CisgICAg
YXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJlc3Vt
ZURhdGEuZGF0YSgpIGxlbmd0aDpyZXN1bWVEYXRhLnNpemUoKV0pOworCisgICAgLy8gRklYTUU6
IEZpZ3VyZSBvdXQgd2h5IG91ciByZXN1bWUgZGF0YSBkb2VzIG5vdCBjb250YWluIGEgcmVzdW1l
IGZpbGUgcGF0aC4KKyAgICBOU011dGFibGVEaWN0aW9uYXJ5KiBkID0gW05TUHJvcGVydHlMaXN0
U2VyaWFsaXphdGlvbiBwcm9wZXJ0eUxpc3RXaXRoRGF0YTpuc0RhdGEuZ2V0KCkgb3B0aW9uczpO
U1Byb3BlcnR5TGlzdEltbXV0YWJsZSBmb3JtYXQ6MCBlcnJvcjpOVUxMXTsKKyAgICBOU1N0cmlu
ZyogZXhpc3RpbmdGaWxlID0gW2Qgb2JqZWN0Rm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5m
b0xvY2FsUGF0aCJdOworICAgIFdURkxvZ0Fsd2F5cygiRXhwZWN0aW5nIHJlc3VtZSBmaWxlIGF0
ICVzIiwgU3RyaW5nKGV4aXN0aW5nRmlsZSkudXRmOCgpLmRhdGEoKSk7CisgICAgV1RGTG9nQWx3
YXlzKCJVcGRhdGluZyByZXN1bWUgZmlsZSBwYXRoIHRvICVzIiwgcGF0aC51dGY4KCkuZGF0YSgp
KTsKKyAgICBbZCBzZXRPYmplY3Q6KE5TU3RyaW5nICopcGF0aCBmb3JLZXk6QCJOU1VSTFNlc3Np
b25SZXN1bWVJbmZvTG9jYWxQYXRoIl07CisgICAgTlNEYXRhKiB1cGRhdGVkRGF0YSA9IFtOU1By
b3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6ZCBmb3JtYXQ6TlNQ
cm9wZXJ0eUxpc3RYTUxGb3JtYXRfdjFfMCBvcHRpb25zOjAgZXJyb3I6TlVMTF07CisKKyAgICBt
X2Rvd25sb2FkVGFzayA9IGNvY29hU2Vzc2lvbi5kb3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YSh1
cGRhdGVkRGF0YSk7CisgICAgY29jb2FTZXNzaW9uLmFkZERvd25sb2FkSUQobV9kb3dubG9hZFRh
c2suZ2V0KCkudGFza0lkZW50aWZpZXIsIG1fZG93bmxvYWRJRCk7CisgICAgV1RGTG9nQWx3YXlz
KCJDb25zdHJ1Y3RlZCBkb3dubG9hZCB0YXNrIik7CisgICAgbV9kb3dubG9hZFRhc2suZ2V0KCku
X3BhdGhUb0Rvd25sb2FkVGFza0ZpbGUgPSBwYXRoOworCisgICAgW21fZG93bmxvYWRUYXNrIHJl
c3VtZV07CisgICAgV1RGTG9nQWx3YXlzKCJDYWxsZWQgcmVzdW1lIik7CiB9CiAgICAgCiB2b2lk
IERvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKaW5k
ZXggNDU4YzBhZWI1YzYuLmI1MjJiNmIwMjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApAQCAtMjcsNyAr
MjcsOSBAQAogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIAorT0JKQ19DTEFTUyBOU0RhdGE7
CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbjsKK09CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxv
YWRUYXNrOwogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogT0JKQ19DTEFTUyBXS05ldHdv
cmtTZXNzaW9uRGVsZWdhdGU7CiAKQEAgLTU4LDYgKzYwLDcgQEAgcHVibGljOgogI2VuZGlmCiAK
ICAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYSogZGF0YVRhc2tGb3JJZGVudGlmaWVyKE5ldHdvcmtE
YXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kpOworICAgIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqZG93bmxvYWRUYXNrV2l0aFJl
c3VtZURhdGEoTlNEYXRhICopOwogCiAgICAgdm9pZCBhZGREb3dubG9hZElEKE5ldHdvcmtEYXRh
VGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwgRG93bmxvYWRJRCk7CiAgICAgRG93bmxvYWRJRCBk
b3dubG9hZElEKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KaW5kZXggOTZhZmNjZDBjNGIuLjUwYTZjZDFmZWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCkBAIC0yNTYsNiArMjU2LDIxIEBAIHN0YXRpYyBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9y
aXR5IHRvTmV0d29ya0xvYWRQcmlvcml0eShmbG9hdCBwcmlvcml0eSkKICAgICAgICAgfTsKICAg
ICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgV1RG
TW92ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0gZWxzZSB7CisgICAgICAg
IGF1dG8gZG93bmxvYWRJRCA9IF9zZXNzaW9uLT5kb3dubG9hZElEKHRhc2sudGFza0lkZW50aWZp
ZXIpOworICAgICAgICBpZiAoZG93bmxvYWRJRC5kb3dubG9hZElEKCkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvKiBkb3dubG9hZCA9IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigp
LmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQpKSB7CisgICAgICAgICAgICAg
ICAgLy8gR290IGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBmb3IgYSBkb3dubG9hZCBiZWluZyBy
ZXN1bWVkLgorICAgICAgICAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CisgICAgICAgICAgICAgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVyKTsK
KyAgICAgICAgICAgICAgICBhdXRvIHNlc3Npb25JRCA9IF9zZXNzaW9uLT5zZXNzaW9uSUQoKTsK
KyAgICAgICAgICAgICAgICBhdXRvIGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gW2NvbXBs
ZXRpb25IYW5kbGVyQ29weSwgc2Vzc2lvbklELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZV0oV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CisgICAgICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3Np
dGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOworICAgICAgICAg
ICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNvbXBsZXRpb25IYW5kbGVyQ29weSk7CisgICAgICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkUmVjZWl2ZUNoYWxsZW5n
ZShjaGFsbGVuZ2UsIFdURk1vdmUoY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgTE9H
KE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRSZWNlaXZlQ2hhbGxlbmdlIGNvbXBsZXRpb25IYW5k
bGVyIChjYW5jZWwpIiwgdGFza0lkZW50aWZpZXIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IG5pbCk7CiAgICAgfQpAQCAtMjc4LDcgKzI5Myw3IEBAIHN0YXRpYyBXZWJDb3JlOjpOZXR3b3Jr
TG9hZFByaW9yaXR5IHRvTmV0d29ya0xvYWRQcmlvcml0eShmbG9hdCBwcmlvcml0eSkKICAgICAg
ICAgICAgICAgICAgICAgaWYgKFt1c2VySW5mbyBpc0tpbmRPZkNsYXNzOltOU0RpY3Rpb25hcnkg
Y2xhc3NdXSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZURhdGEgPSB1c2VySW5mb1tA
Ik5TVVJMU2Vzc2lvbkRvd25sb2FkVGFza1Jlc3VtZURhdGEiXTsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBpZiAocmVzdW1lRGF0YSAmJiBb
cmVzdW1lRGF0YSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKICAgICAgICAgICAgICAg
ICAgICAgZG93bmxvYWQtPmRpZEZhaWwoZXJyb3IsIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHJlc3VtZURhdGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxlbmd0aCB9KTsKICAgICAgICAgICAg
ICAgICBlbHNlCkBAIC02NDMsNiArNjU4LDExIEBAIE5ldHdvcmtEYXRhVGFza0NvY29hKiBOZXR3
b3JrU2Vzc2lvbkNvY29hOjpkYXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrCiAg
ICAgcmV0dXJuIG1fZGF0YVRhc2tNYXBXaXRob3V0U3RhdGUuZ2V0KHRhc2tJZGVudGlmaWVyKTsK
IH0KIAorTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkb3du
bG9hZFRhc2tXaXRoUmVzdW1lRGF0YShOU0RhdGEgKnJlc3VtZURhdGEpCit7CisgICAgcmV0dXJu
IFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UgZG93bmxvYWRUYXNrV2l0aFJlc3VtZURh
dGE6cmVzdW1lRGF0YV07Cit9CisKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWRkRG93bmxv
YWRJRChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZpZXIs
IERvd25sb2FkSUQgZG93bmxvYWRJRCkKIHsKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25N
YW5hZ2VyLmNwcAppbmRleCAwMzIwMjllZThmMi4uMzBlNzIwOWYyZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5h
Z2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1
CiAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShwYWdlSUQsIGZyYW1lSUQsIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRpbmdEb3dubG9hZCYg
cGVuZGluZ0Rvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICB1aW50NjRfdCBkdW1teVBhZ2VJRCA9IDA7CiAgICAgdWludDY0X3QgY2hhbGxlbmdlSUQgPSBh
ZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7IGR1bW15UGFnZUlELCBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikgfSk7CkBAIC0xNTMsNyArMTUzLDcg
QEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShQZW5kaW5nRG93bmxvYWQmIHAKICAgICBpZiAoc2hvdWxkQ29hbGVzY2VDaGFsbGVu
Z2UoZHVtbXlQYWdlSUQsIGNoYWxsZW5nZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBwZW5kaW5nRG93bmxvYWQuc2VuZChNZXNzYWdlczo6
RG93bmxvYWRQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOworICAgIGRvd25sb2FkLnNlbmQoTWVzc2Fn
ZXM6OkRvd25sb2FkUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5oCmluZGV4IDllYmVmZDQ3MGFkLi4wYmYzYzg5N2YyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQXV0aGVudGljYXRpb25NYW5h
Z2VyX2gKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VT
ZW5kZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaD4KQEAgLTY1LDcgKzY2LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGVuZGluZ0Rvd25sb2FkJiwgY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJ
UEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogI2lmIFVTRShQUk9U
RUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJRCwgYm9vbCBjYW5BdXRoZW50aWNh
dGUpOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322132</attachid>
            <date>2017-09-28 15:53:56 -0700</date>
            <delta_ts>2017-09-28 16:05:33 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>177625_download_resuming_wip.patch</filename>
            <type>text/plain</type>
            <size>14493</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAppbmRleCA3MzEyZjcyNTJlNS4uMDI3M2EyMDBmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpA
QCAtMTQ2LDYgKzE0NywzNCBAQCB2b2lkIERvd25sb2FkOjpjYW5jZWwoKQogICAgIHBsYXRmb3Jt
Q2FuY2VsTmV0d29ya0xvYWQoKTsKIH0KIAorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCit2b2lk
IERvd25sb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFD
SykKKyAgICBtX2NoYWxsZW5nZSA9IGNoYWxsZW5nZTsKKyAgICBtX2NoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgc2VuZChNZXNzYWdl
czo6RG93bmxvYWRQcm94eTo6Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKKyNlbHNlCisgICAgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgqdGhpcywgY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisjZW5kaWYKK30KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sp
Cit2b2lkIERvd25sb2FkOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpCit7CisgICAgQVNTRVJUKG1fY2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXIpOworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOworICAgIGlmICghY2Fu
QXV0aGVudGljYXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZSwgeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5hdXRo
ZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRo
aXMsICptX2NoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorI2VuZGlm
CisKKyNlbmRpZgorCiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIERvd25sb2FkOjpk
aWRTdGFydCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuaAppbmRleCBjMzc5YmNhZjhlNy4uYjAyZDdkNmJmNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtMzgs
NiArMzgsOCBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCisjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19D
TEFTUyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7CiAjZW5kaWYKQEAgLTEwMSw2ICsxMDMsMTAg
QEAgcHVibGljOgogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIHNldFNhbmRi
b3hFeHRlbnNpb24oUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikg
eyBtX3NhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOyB9CisgICAg
dm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CisjaWYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIGNhbkF1dGhlbnRpY2F0ZSk7CisjZW5kaWYKICNl
bHNlCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0OyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKQEAgLTE0
Niw2ICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRG93bmxv
YWRUYXNrPiBtX2Rvd25sb2FkVGFzazsKICNlbmRpZgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vz
c2lvbklEOworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7
CisgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgbV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlcjsKKyNlbmRpZgogI2Vsc2UgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFN0cmluZyBtX3Jlc3BvbnNlTUlNRVR5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCBhNjZjOTk2YWU2ZS4uZDBlNWU0OWRmNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtODksMTAgKzg5LDE0IEBAIHZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0
ZDo6dW5pCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIHZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UoRG93bmxvYWRJRCBkb3dubG9hZElELCBib29sIGNhbkF1dGhlbnRpY2F0ZSkKIHsKLSAgICBh
dXRvKiBwZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQp
OwotICAgIEFTU0VSVChwZW5kaW5nRG93bmxvYWQpOwotICAgIGlmIChwZW5kaW5nRG93bmxvYWQp
CisgICAgaWYgKGF1dG8qIHBlbmRpbmdEb3dubG9hZCA9IG1fcGVuZGluZ0Rvd25sb2Fkcy5nZXQo
ZG93bmxvYWRJRCkpIHsKICAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5jb250aW51ZUNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0aGVudGljYXRlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoYXV0byogZG93bmxvYWQgPSBtX2Rvd25sb2Fkcy5nZXQo
ZG93bmxvYWRJRCkpIHsKKyAgICAgICAgZG93bmxvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOworICAgICAgICByZXR1cm47
CisgICAgfQogfQogI2VuZGlmCiAKQEAgLTE2MiwxOCArMTY2LDE5IEBAIHZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2Fk
SUQgZG93bmxvCiAjZW5kaWYKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25s
b2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIERvd25sb2Fk
TWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9h
ZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCiB7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2Fk
PigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsKICNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKHNlc3Npb25JRCk7CiAgICAgLy8gRG93bmxvYWQ6OnJlc3VtZSgpIGlzIHJlc3Bv
bnNpYmxlIGZvciBzZXR0aW5nIHRoZSBEb3dubG9hZCdzIHJlc291cmNlIHJlcXVlc3QuCiAgICAg
YXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9h
ZElELCBSZXNvdXJjZVJlcXVlc3QoKSk7CisjZW5kaWYKIAogICAgIGRvd25sb2FkLT5yZXN1bWUo
cmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgQVNTRVJUKCFt
X2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3dubG9hZHMuYWRkKGRv
d25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKLSNlbmRpZgogfQogCiB2b2lkIERvd25sb2Fk
TWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rv
d25sb2FkQ29jb2EubW0KaW5kZXggODY4ZTExOTdjOGEuLmQ0NjRiZTY3ZGQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29h
L0Rvd25sb2FkQ29jb2EubW0KQEAgLTI5LDEzICsyOSw0OSBAQAogI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCiAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KKyNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKKyNpbXBvcnQg
IlNlc3Npb25UcmFja2VyLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMU2Vzc2lvbi5oPgor
I2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
c3RhdGljIE5TU2V0ICpwbGlzdENsYXNzZXMgPSBuaWw7CisgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlVG9rZW47CisKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF4geworICAg
ICAgICBwbGlzdENsYXNzZXMgPSBbW05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkg
Y2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFz
c10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwg
bmlsXSByZXRhaW5dOworICAgIH0pOworCisgICAgbV9zYW5kYm94RXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIGlmIChtX3Nh
bmRib3hFeHRlbnNpb24pCisgICAgICAgIG1fc2FuZGJveEV4dGVuc2lvbi0+Y29uc3VtZSgpOwor
CisgICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9uVHJhY2tlcjo6bmV0d29ya1Nlc3Np
b24obV9zZXNzaW9uSUQpOworICAgIGlmICghbmV0d29ya1Nlc3Npb24pIHsKKyAgICAgICAgV1RG
TG9nQWx3YXlzKCJDb3VsZCBub3QgZmluZCBuZXR3b3JrIHNlc3Npb24gd2l0aCBnaXZlbiBzZXNz
aW9uSUQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvJiBjb2NvYVNlc3Npb24g
PSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oKm5ldHdvcmtTZXNzaW9uKTsKKyAg
ICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cmVz
dW1lRGF0YS5kYXRhKCkgbGVuZ3RoOnJlc3VtZURhdGEuc2l6ZSgpXSk7CisKKyAgICAvLyBGSVhN
RTogRmlndXJlIG91dCB3aHkgb3VyIHJlc3VtZSBkYXRhIGRvZXMgbm90IGNvbnRhaW4gYSByZXN1
bWUgZmlsZSBwYXRoLgorICAgIE5TTXV0YWJsZURpY3Rpb25hcnkqIGQgPSBbTlNQcm9wZXJ0eUxp
c3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhEYXRhOm5zRGF0YS5nZXQoKSBvcHRpb25z
Ok5TUHJvcGVydHlMaXN0SW1tdXRhYmxlIGZvcm1hdDowIGVycm9yOk5VTExdOworICAgIE5TU3Ry
aW5nKiBleGlzdGluZ0ZpbGUgPSBbZCBvYmplY3RGb3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJ
bmZvTG9jYWxQYXRoIl07CisgICAgV1RGTG9nQWx3YXlzKCJFeHBlY3RpbmcgcmVzdW1lIGZpbGUg
YXQgJXMiLCBTdHJpbmcoZXhpc3RpbmdGaWxlKS51dGY4KCkuZGF0YSgpKTsKKyAgICBXVEZMb2dB
bHdheXMoIlVwZGF0aW5nIHJlc3VtZSBmaWxlIHBhdGggdG8gJXMiLCBwYXRoLnV0ZjgoKS5kYXRh
KCkpOworICAgIFtkIHNldE9iamVjdDooTlNTdHJpbmcgKilwYXRoIGZvcktleTpAIk5TVVJMU2Vz
c2lvblJlc3VtZUluZm9Mb2NhbFBhdGgiXTsKKyAgICBOU0RhdGEqIHVwZGF0ZWREYXRhID0gW05T
UHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpkIGZvcm1hdDpO
U1Byb3BlcnR5TGlzdFhNTEZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpOVUxMXTsKKworICAg
IG1fZG93bmxvYWRUYXNrID0gY29jb2FTZXNzaW9uLmRvd25sb2FkVGFza1dpdGhSZXN1bWVEYXRh
KHVwZGF0ZWREYXRhKTsKKyAgICBjb2NvYVNlc3Npb24uYWRkRG93bmxvYWRJRChtX2Rvd25sb2Fk
VGFzay5nZXQoKS50YXNrSWRlbnRpZmllciwgbV9kb3dubG9hZElEKTsKKyAgICBXVEZMb2dBbHdh
eXMoIkNvbnN0cnVjdGVkIGRvd25sb2FkIHRhc2siKTsKKyAgICBtX2Rvd25sb2FkVGFzay5nZXQo
KS5fcGF0aFRvRG93bmxvYWRUYXNrRmlsZSA9IHBhdGg7CisKKyAgICBbbV9kb3dubG9hZFRhc2sg
cmVzdW1lXTsKKyAgICBXVEZMb2dBbHdheXMoIkNhbGxlZCByZXN1bWUiKTsKIH0KICAgICAKIHZv
aWQgRG93bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApp
bmRleCA0NThjMGFlYjVjNi4uYjUyMmI2YjAyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCkBAIC0yNyw3
ICsyNyw5IEBACiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogCitPQkpDX0NMQVNTIE5TRGF0
YTsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uOworT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Eb3du
bG9hZFRhc2s7CiBPQkpDX0NMQVNTIE5TT3BlcmF0aW9uUXVldWU7CiBPQkpDX0NMQVNTIFdLTmV0
d29ya1Nlc3Npb25EZWxlZ2F0ZTsKIApAQCAtNTgsNiArNjAsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKiBkYXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29y
a0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSk7CisgICAgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICpkb3dubG9hZFRhc2tXaXRo
UmVzdW1lRGF0YShOU0RhdGEgKik7CiAKICAgICB2b2lkIGFkZERvd25sb2FkSUQoTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBEb3dubG9hZElEKTsKICAgICBEb3dubG9hZElE
IGRvd25sb2FkSUQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQppbmRleCA5NmFmY2NkMGM0Yi4uNTBhNmNkMWZlYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0KQEAgLTI1Niw2ICsyNTYsMjEgQEAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJp
b3JpdHkgdG9OZXR3b3JrTG9hZFByaW9yaXR5KGZsb2F0IHByaW9yaXR5KQogICAgICAgICB9Owog
ICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBX
VEZNb3ZlKGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSBlbHNlIHsKKyAgICAg
ICAgYXV0byBkb3dubG9hZElEID0gX3Nlc3Npb24tPmRvd25sb2FkSUQodGFzay50YXNrSWRlbnRp
Zmllcik7CisgICAgICAgIGlmIChkb3dubG9hZElELmRvd25sb2FkSUQoKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8qIGRvd25sb2FkID0gV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9u
KCkuZG93bmxvYWRNYW5hZ2VyKCkuZG93bmxvYWQoZG93bmxvYWRJRCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBHb3QgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIGZvciBhIGRvd25sb2FkIGJlaW5n
IHJlc3VtZWQuCisgICAgICAgICAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsKKyAgICAgICAgICAgICAgICBh
dXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIp
OworICAgICAgICAgICAgICAgIGF1dG8gc2Vzc2lvbklEID0gX3Nlc3Npb24tPnNlc3Npb25JRCgp
OworICAgICAgICAgICAgICAgIGF1dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBbY29t
cGxldGlvbkhhbmRsZXJDb3B5LCBzZXNzaW9uSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlXShX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNv
bnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bv
c2l0aW9uKGRpc3Bvc2l0aW9uKSwgY3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7CisgICAgICAg
ICAgICAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKKyAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlQ2hhbGxl
bmdlKGNoYWxsZW5nZSwgV1RGTW92ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBM
T0coTmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhh
bmRsZXIgKGNhbmNlbCkiLCB0YXNrSWRlbnRpZmllcik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSwgbmlsKTsKICAgICB9CkBAIC0yNzgsNyArMjkzLDcgQEAgc3RhdGljIFdlYkNvcmU6Ok5ldHdv
cmtMb2FkUHJpb3JpdHkgdG9OZXR3b3JrTG9hZFByaW9yaXR5KGZsb2F0IHByaW9yaXR5KQogICAg
ICAgICAgICAgICAgICAgICBpZiAoW3VzZXJJbmZvIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFy
eSBjbGFzc11dKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lRGF0YSA9IHVzZXJJbmZv
W0AiTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrUmVzdW1lRGF0YSJdOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGlmIChyZXN1bWVEYXRhICYm
IFtyZXN1bWVEYXRhIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQogICAgICAgICAgICAg
ICAgICAgICBkb3dubG9hZC0+ZGlkRmFpbChlcnJvciwgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50
OF90Kj4ocmVzdW1lRGF0YS5ieXRlcyksIHJlc3VtZURhdGEubGVuZ3RoIH0pOwogICAgICAgICAg
ICAgICAgIGVsc2UKQEAgLTY0Myw2ICs2NTgsMTEgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2EqIE5l
dHdvcmtTZXNzaW9uQ29jb2E6OmRhdGFUYXNrRm9ySWRlbnRpZmllcihOZXR3b3JrRGF0YVRhc2sK
ICAgICByZXR1cm4gbV9kYXRhVGFza01hcFdpdGhvdXRTdGF0ZS5nZXQodGFza0lkZW50aWZpZXIp
OwogfQogCitOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKk5ldHdvcmtTZXNzaW9uQ29jb2E6OmRv
d25sb2FkVGFza1dpdGhSZXN1bWVEYXRhKE5TRGF0YSAqcmVzdW1lRGF0YSkKK3sKKyAgICByZXR1
cm4gW21fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZSBkb3dubG9hZFRhc2tXaXRoUmVzdW1l
RGF0YTpyZXN1bWVEYXRhXTsKK30KKwogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjphZGREb3du
bG9hZElEKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmll
ciwgRG93bmxvYWRJRCBkb3dubG9hZElEKQogewogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuY3BwCmluZGV4IDAzMjAyOWVlOGYyLi4zMGU3MjA5ZjJmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQs
IHUKICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHBhZ2VJRCwgZnJhbWVJRCwgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGVuZGluZ0Rvd25sb2Fk
JiBwZW5kaW5nRG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIHVpbnQ2NF90IGR1bW15UGFnZUlEID0gMDsKICAgICB1aW50NjRfdCBjaGFsbGVuZ2VJRCA9
IGFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFwKHsgZHVtbXlQYWdlSUQsIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KTsKQEAgLTE1Myw3ICsxNTMs
NyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFBlbmRpbmdEb3dubG9hZCYgcAogICAgIGlmIChzaG91bGRDb2FsZXNjZUNoYWxs
ZW5nZShkdW1teVBhZ2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHBlbmRpbmdEb3dubG9hZC5zZW5kKE1lc3NhZ2Vz
OjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CisgICAgZG93bmxvYWQuc2VuZChNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmgKaW5kZXggOWViZWZkNDcwYWQuLjBiZjNjODk3ZjJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBBdXRoZW50aWNhdGlvbk1h
bmFnZXJfaAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2Fn
ZVNlbmRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oPgpAQCAtNjUsNyArNjYsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoTkVU
V09SS19TRVNTSU9OKQogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQZW5kaW5nRG93bmxvYWQmLCBj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAjaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb3dubG9hZElELCBib29sIGNhbkF1dGhlbnRp
Y2F0ZSk7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322134</attachid>
            <date>2017-09-28 16:05:33 -0700</date>
            <delta_ts>2017-09-28 16:19:57 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>177625_download_resuming_wip.patch</filename>
            <type>text/plain</type>
            <size>14609</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAppbmRleCA3MzEyZjcyNTJlNS4uMDI3M2EyMDBmZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpA
QCAtMTQ2LDYgKzE0NywzNCBAQCB2b2lkIERvd25sb2FkOjpjYW5jZWwoKQogICAgIHBsYXRmb3Jt
Q2FuY2VsTmV0d29ya0xvYWQoKTsKIH0KIAorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCit2b2lk
IERvd25sb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFD
SykKKyAgICBtX2NoYWxsZW5nZSA9IGNoYWxsZW5nZTsKKyAgICBtX2NoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgc2VuZChNZXNzYWdl
czo6RG93bmxvYWRQcm94eTo6Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKKyNlbHNlCisgICAgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgqdGhpcywgY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisjZW5kaWYKK30KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sp
Cit2b2lkIERvd25sb2FkOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpCit7CisgICAgQVNTRVJUKG1fY2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXIpOworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOworICAgIGlmICghY2Fu
QXV0aGVudGljYXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZSwgeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5hdXRo
ZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRo
aXMsICptX2NoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorI2VuZGlm
CisKKyNlbmRpZgorCiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIERvd25sb2FkOjpk
aWRTdGFydCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuaAppbmRleCBjMzc5YmNhZjhlNy4uYjAyZDdkNmJmNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtMzgs
NiArMzgsOCBAQAogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCisjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19D
TEFTUyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7CiAjZW5kaWYKQEAgLTEwMSw2ICsxMDMsMTAg
QEAgcHVibGljOgogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIHNldFNhbmRi
b3hFeHRlbnNpb24oUmVmUHRyPFNhbmRib3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikg
eyBtX3NhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOyB9CisgICAg
dm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CisjaWYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIGNhbkF1dGhlbnRpY2F0ZSk7CisjZW5kaWYKICNl
bHNlCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3Qg
eyByZXR1cm4gbV9yZXF1ZXN0OyB9CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKQEAgLTE0
Niw2ICsxNTIsMTAgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRG93bmxv
YWRUYXNrPiBtX2Rvd25sb2FkVGFzazsKICNlbmRpZgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vz
c2lvbklEOworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7
CisgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgbV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlcjsKKyNlbmRpZgogI2Vsc2UgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIFN0cmluZyBtX3Jlc3BvbnNlTUlNRVR5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCBhNjZjOTk2YWU2ZS4uMTA3ZWQ0ZjUzYjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtODksMTAgKzg5LDE0IEBAIHZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpkYXRhVGFza0JlY2FtZURvd25sb2FkVGFzayhEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0
ZDo6dW5pCiAjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIHZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UoRG93bmxvYWRJRCBkb3dubG9hZElELCBib29sIGNhbkF1dGhlbnRpY2F0ZSkKIHsKLSAgICBh
dXRvKiBwZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQp
OwotICAgIEFTU0VSVChwZW5kaW5nRG93bmxvYWQpOwotICAgIGlmIChwZW5kaW5nRG93bmxvYWQp
CisgICAgaWYgKGF1dG8qIHBlbmRpbmdEb3dubG9hZCA9IG1fcGVuZGluZ0Rvd25sb2Fkcy5nZXQo
ZG93bmxvYWRJRCkpIHsKICAgICAgICAgcGVuZGluZ0Rvd25sb2FkLT5jb250aW51ZUNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0aGVudGljYXRlKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoYXV0byogZG93bmxvYWQgPSBtX2Rvd25sb2Fkcy5nZXQo
ZG93bmxvYWRJRCkpIHsKKyAgICAgICAgZG93bmxvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOworICAgICAgICByZXR1cm47
CisgICAgfQogfQogI2VuZGlmCiAKQEAgLTE2MiwxOCArMTY2LDI3IEBAIHZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25sb2Fk
SUQgZG93bmxvCiAjZW5kaWYKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25s
b2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIERvd25sb2Fk
TWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9h
ZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCiB7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4o
KnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIsIHNlc3Npb25JRCk7CisjZWxzZQorICAgIHN0ZDo6
dW5pcXVlX3B0cjxEb3dubG9hZD4gZG93bmxvYWQ7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyNl
bmRpZgogI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKICAgICAvLyBEb3dubG9h
ZDo6cmVzdW1lKCkgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIERvd25sb2FkJ3MgcmVz
b3VyY2UgcmVxdWVzdC4KICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3du
bG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIFJlc291cmNlUmVxdWVzdCgpKTsKKyNlbmRpZgorCisg
ICAgaWYgKCFkb3dubG9hZCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgZG93bmxvYWQtPnJlc3Vt
ZShyZXN1bWVEYXRhLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBBU1NFUlQo
IW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsKICAgICBtX2Rvd25sb2Fkcy5hZGQo
ZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9h
ZENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbQppbmRleCA4NjhlMTE5N2M4YS4uZDQ2NGJlNjdkZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2Fk
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29j
b2EvRG93bmxvYWRDb2NvYS5tbQpAQCAtMjksMTMgKzI5LDQ5IEBACiAjaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikKIAogI2ltcG9ydCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCA8V2ViQ29yZS9O
b3RJbXBsZW1lbnRlZC5oPgorI2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgorI2ltcG9y
dCAiU2Vzc2lvblRyYWNrZXIuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxTZXNzaW9uLmg+
CisjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBzdGF0aWMgTlNTZXQgKnBsaXN0Q2xhc3NlcyA9IG5pbDsKKyAgICBzdGF0aWMgZGlzcGF0Y2hf
b25jZV90IG9uY2VUb2tlbjsKKworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXiB7Cisg
ICAgICAgIHBsaXN0Q2xhc3NlcyA9IFtbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFy
eSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNs
YXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3Nd
LCBuaWxdIHJldGFpbl07CisgICAgfSk7CisKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKG1f
c2FuZGJveEV4dGVuc2lvbikKKyAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7
CisKKyAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vz
c2lvbihtX3Nlc3Npb25JRCk7CisgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikgeworICAgICAgICBX
VEZMb2dBbHdheXMoIkNvdWxkIG5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiB3aXRoIGdpdmVuIHNl
c3Npb25JRCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8mIGNvY29hU2Vzc2lv
biA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPigqbmV0d29ya1Nlc3Npb24pOwor
ICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpy
ZXN1bWVEYXRhLmRhdGEoKSBsZW5ndGg6cmVzdW1lRGF0YS5zaXplKCldKTsKKworICAgIC8vIEZJ
WE1FOiBGaWd1cmUgb3V0IHdoeSBvdXIgcmVzdW1lIGRhdGEgZG9lcyBub3QgY29udGFpbiBhIHJl
c3VtZSBmaWxlIHBhdGguCisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSogZCA9IFtOU1Byb3BlcnR5
TGlzdFNlcmlhbGl6YXRpb24gcHJvcGVydHlMaXN0V2l0aERhdGE6bnNEYXRhLmdldCgpIG9wdGlv
bnM6TlNQcm9wZXJ0eUxpc3RJbW11dGFibGUgZm9ybWF0OjAgZXJyb3I6TlVMTF07CisgICAgTlNT
dHJpbmcqIGV4aXN0aW5nRmlsZSA9IFtkIG9iamVjdEZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3Vt
ZUluZm9Mb2NhbFBhdGgiXTsKKyAgICBXVEZMb2dBbHdheXMoIkV4cGVjdGluZyByZXN1bWUgZmls
ZSBhdCAlcyIsIFN0cmluZyhleGlzdGluZ0ZpbGUpLnV0ZjgoKS5kYXRhKCkpOworICAgIFdURkxv
Z0Fsd2F5cygiVXBkYXRpbmcgcmVzdW1lIGZpbGUgcGF0aCB0byAlcyIsIHBhdGgudXRmOCgpLmRh
dGEoKSk7CisgICAgW2Qgc2V0T2JqZWN0OihOU1N0cmluZyAqKXBhdGggZm9yS2V5OkAiTlNVUkxT
ZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworICAgIE5TRGF0YSogdXBkYXRlZERhdGEgPSBb
TlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0OmQgZm9ybWF0
Ok5TUHJvcGVydHlMaXN0WE1MRm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOk5VTExdOworCisg
ICAgbV9kb3dubG9hZFRhc2sgPSBjb2NvYVNlc3Npb24uZG93bmxvYWRUYXNrV2l0aFJlc3VtZURh
dGEodXBkYXRlZERhdGEpOworICAgIGNvY29hU2Vzc2lvbi5hZGREb3dubG9hZElEKG1fZG93bmxv
YWRUYXNrLmdldCgpLnRhc2tJZGVudGlmaWVyLCBtX2Rvd25sb2FkSUQpOworICAgIFdURkxvZ0Fs
d2F5cygiQ29uc3RydWN0ZWQgZG93bmxvYWQgdGFzayIpOworICAgIG1fZG93bmxvYWRUYXNrLmdl
dCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gcGF0aDsKKworICAgIFttX2Rvd25sb2FkVGFz
ayByZXN1bWVdOworICAgIFdURkxvZ0Fsd2F5cygiQ2FsbGVkIHJlc3VtZSIpOwogfQogICAgIAog
dm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5o
CmluZGV4IDQ1OGMwYWViNWM2Li5iNTIyYjZiMDI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKQEAgLTI3
LDcgKzI3LDkgQEAKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAKK09CSkNfQ0xBU1MgTlNE
YXRhOwogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb247CitPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRv
d25sb2FkVGFzazsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKIE9CSkNfQ0xBU1MgV0tO
ZXR3b3JrU2Vzc2lvbkRlbGVnYXRlOwogCkBAIC01OCw2ICs2MCw3IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EqIGRhdGFUYXNrRm9ySWRlbnRpZmllcihOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5KTsKKyAgICBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKmRvd25sb2FkVGFza1dp
dGhSZXN1bWVEYXRhKE5TRGF0YSAqKTsKIAogICAgIHZvaWQgYWRkRG93bmxvYWRJRChOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIERvd25sb2FkSUQpOwogICAgIERvd25sb2Fk
SUQgZG93bmxvYWRJRChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCmluZGV4IDk2YWZjY2QwYzRiLi41MGE2Y2QxZmVhOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQpAQCAtMjU2LDYgKzI1NiwyMSBAQCBzdGF0aWMgV2ViQ29yZTo6TmV0d29ya0xvYWRQ
cmlvcml0eSB0b05ldHdvcmtMb2FkUHJpb3JpdHkoZmxvYXQgcHJpb3JpdHkpCiAgICAgICAgIH07
CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2Us
IFdURk1vdmUoY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9IGVsc2UgeworICAg
ICAgICBhdXRvIGRvd25sb2FkSUQgPSBfc2Vzc2lvbi0+ZG93bmxvYWRJRCh0YXNrLnRhc2tJZGVu
dGlmaWVyKTsKKyAgICAgICAgaWYgKGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKSB7CisgICAgICAg
ICAgICBpZiAoYXV0byogZG93bmxvYWQgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0
b24oKS5kb3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkgeworICAgICAgICAg
ICAgICAgIC8vIEdvdCBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgZm9yIGEgZG93bmxvYWQgYmVp
bmcgcmVzdW1lZC4KKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOworICAgICAgICAgICAgICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxl
cik7CisgICAgICAgICAgICAgICAgYXV0byBzZXNzaW9uSUQgPSBfc2Vzc2lvbi0+c2Vzc2lvbklE
KCk7CisgICAgICAgICAgICAgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IFtj
b21wbGV0aW9uSGFuZGxlckNvcHksIHNlc3Npb25JRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Vd
KFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwg
Y29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkgeworICAgICAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24oZGlzcG9zaXRpb24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgQmxvY2tfcmVsZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOworICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZFJlY2VpdmVDaGFs
bGVuZ2UoY2hhbGxlbmdlLCBXVEZNb3ZlKGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAg
IExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb21wbGV0aW9u
SGFuZGxlciAoY2FuY2VsKSIsIHRhc2tJZGVudGlmaWVyKTsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBuaWwpOwogICAgIH0KQEAgLTI3OCw3ICsyOTMsNyBAQCBzdGF0aWMgV2ViQ29yZTo6TmV0
d29ya0xvYWRQcmlvcml0eSB0b05ldHdvcmtMb2FkUHJpb3JpdHkoZmxvYXQgcHJpb3JpdHkpCiAg
ICAgICAgICAgICAgICAgICAgIGlmIChbdXNlckluZm8gaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9u
YXJ5IGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVEYXRhID0gdXNlcklu
Zm9bQCJOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2tSZXN1bWVEYXRhIl07CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VtZURhdGEg
JiYgW3Jlc3VtZURhdGEgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCiAgICAgICAgICAg
ICAgICAgICAgIGRvd25sb2FkLT5kaWRGYWlsKGVycm9yLCB7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihyZXN1bWVEYXRhLmJ5dGVzKSwgcmVzdW1lRGF0YS5sZW5ndGggfSk7CiAgICAgICAg
ICAgICAgICAgZWxzZQpAQCAtNjQzLDYgKzY1OCwxMSBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYSog
TmV0d29ya1Nlc3Npb25Db2NvYTo6ZGF0YVRhc2tGb3JJZGVudGlmaWVyKE5ldHdvcmtEYXRhVGFz
awogICAgIHJldHVybiBtX2RhdGFUYXNrTWFwV2l0aG91dFN0YXRlLmdldCh0YXNrSWRlbnRpZmll
cik7CiB9CiAKK05TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqTmV0d29ya1Nlc3Npb25Db2NvYTo6
ZG93bmxvYWRUYXNrV2l0aFJlc3VtZURhdGEoTlNEYXRhICpyZXN1bWVEYXRhKQoreworICAgIHJl
dHVybiBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlIGRvd25sb2FkVGFza1dpdGhSZXN1
bWVEYXRhOnJlc3VtZURhdGFdOworfQorCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFkZERv
d25sb2FkSUQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlm
aWVyLCBEb3dubG9hZElEIGRvd25sb2FkSUQpCiB7CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5jcHAKaW5kZXggMDMyMDI5ZWU4ZjIuLjMwZTcyMDlmMmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlci5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJ
RCwgdQogICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpE
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocGFnZUlELCBmcmFtZUlELCBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQZW5kaW5nRG93bmxv
YWQmIHBlbmRpbmdEb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgdWludDY0X3QgZHVtbXlQYWdlSUQgPSAwOwogICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlE
ID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoeyBkdW1teVBhZ2VJRCwgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwpAQCAtMTUzLDcgKzE1
Myw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoUGVuZGluZ0Rvd25sb2FkJiBwCiAgICAgaWYgKHNob3VsZENvYWxlc2NlQ2hh
bGxlbmdlKGR1bW15UGFnZUlELCBjaGFsbGVuZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcGVuZGluZ0Rvd25sb2FkLnNlbmQoTWVzc2Fn
ZXM6OkRvd25sb2FkUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKKyAgICBkb3dubG9hZC5zZW5kKE1l
c3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuaAppbmRleCA5ZWJlZmQ0NzBhZC4uMGJmM2M4OTdmMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcl9oCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNz
YWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmg+CkBAIC02NSw3ICs2Niw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShO
RVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAg
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRpbmdEb3dubG9hZCYs
IGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICNpZiBVU0Uo
UFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVu
dGljYXRlKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322138</attachid>
            <date>2017-09-28 16:19:57 -0700</date>
            <delta_ts>2017-09-28 16:33:29 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>177625_download_resuming_wip.patch</filename>
            <type>text/plain</type>
            <size>14555</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAppbmRleCA3MzEyZjcyNTJlNS4uMzVlZTZjNGVjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpA
QCAtMTQ2LDYgKzE0NywzMyBAQCB2b2lkIERvd25sb2FkOjpjYW5jZWwoKQogICAgIHBsYXRmb3Jt
Q2FuY2VsTmV0d29ya0xvYWQoKTsKIH0KIAorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCit2b2lk
IERvd25sb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFD
SykKKyAgICBtX2NoYWxsZW5nZSA9IGNoYWxsZW5nZTsKKyAgICBtX2NoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgc2VuZChNZXNzYWdl
czo6RG93bmxvYWRQcm94eTo6Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKKyNlbHNlCisgICAgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgqdGhpcywgY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisjZW5kaWYKK30KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sp
Cit2b2lkIERvd25sb2FkOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpCit7CisgICAgQVNTRVJUKG1fY2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXIpOworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOworICAgIGlmICghY2Fu
QXV0aGVudGljYXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZSwgeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5hdXRo
ZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRo
aXMsICptX2NoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorI2VuZGlm
IC8vIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisjZW5kaWYgLy8gVVNFKE5F
VFdPUktfU0VTU0lPTikKKwogI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBEb3dubG9h
ZDo6ZGlkU3RhcnQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggYzM3OWJjYWY4ZTcuLmIwMmQ3ZDZiZjQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAg
LTM4LDYgKzM4LDggQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBVU0UoTkVU
V09SS19TRVNTSU9OKQorI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpZiBQTEFURk9STShDT0NPQSkKIE9C
SkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlmCkBAIC0xMDEsNiArMTAz
LDEwIEBAIHB1YmxpYzoKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBzZXRT
YW5kYm94RXh0ZW5zaW9uKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNp
b24pIHsgbV9zYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKTsgfQor
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworI2lmIFVTRShQUk9U
RUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpOworI2VuZGlm
CiAjZWxzZQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkBA
IC0xNDYsNiArMTUyLDEwIEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRv
d25sb2FkVGFzaz4gbV9kb3dubG9hZFRhc2s7CiAjZW5kaWYKICAgICBQQUw6OlNlc3Npb25JRCBt
X3Nlc3Npb25JRDsKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IG1fY2hhbGxl
bmdlOworICAgIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIG1fY2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXI7CisjZW5kaWYKICNlbHNlIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBTdHJpbmcgbV9yZXNwb25zZU1J
TUVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggYTY2Yzk5NmFlNmUuLjBjMjYzNTdiMGRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTg5LDEwICs4OSwxNSBAQCB2b2lkIERvd25sb2Fk
TWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCBkb3dubG9hZElE
LCBzdGQ6OnVuaQogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiB2b2lk
IERvd25sb2FkTWFuYWdlcjo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKERvd25sb2FkSUQgZG93bmxvYWRJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCiB7Ci0g
ICAgYXV0byogcGVuZGluZ0Rvd25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRzLmdldChkb3dubG9h
ZElEKTsKLSAgICBBU1NFUlQocGVuZGluZ0Rvd25sb2FkKTsKLSAgICBpZiAocGVuZGluZ0Rvd25s
b2FkKQorICAgIGlmIChhdXRvKiBwZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMu
Z2V0KGRvd25sb2FkSUQpKSB7CiAgICAgICAgIHBlbmRpbmdEb3dubG9hZC0+Y29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGF1dG8qIGRvd25sb2FkID0gbV9kb3dubG9hZHMu
Z2V0KGRvd25sb2FkSUQpKSB7CisgICAgICAgIGRvd25sb2FkLT5jb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0aGVudGljYXRlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KICNlbmRpZgogCkBAIC0x
NjIsMTggKzE2NywyOCBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5k
aW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25sbwogI2VuZGlmCiB9CiAKLXZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxv
YWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewogI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRo
aXMsIGRvd25sb2FkSUQsIG51bGxwdHIsIHNlc3Npb25JRCk7CiAjZWxzZQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxEb3dubG9hZD4gZG93bmxvYWQ7CisjZW5kaWYKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHNlc3Npb25JRCk7CiAgICAgLy8gRG93bmxvYWQ6OnJlc3VtZSgpIGlzIHJlc3BvbnNpYmxl
IGZvciBzZXR0aW5nIHRoZSBEb3dubG9hZCdzIHJlc291cmNlIHJlcXVlc3QuCiAgICAgYXV0byBk
b3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBS
ZXNvdXJjZVJlcXVlc3QoKSk7CisjZW5kaWYKKworICAgIGlmICghZG93bmxvYWQpIHsKKyAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGRvd25s
b2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAg
ICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3du
bG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKLSNlbmRpZgogfQogCiB2
b2lkIERvd25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29j
b2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KaW5kZXggODY4ZTExOTdjOGEuLmU0YmNlOTk2ZDI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2Nv
YS9Eb3dubG9hZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KQEAgLTI5LDEzICsyOSw0MyBAQAogI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCiAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2Eu
aCIKKyNpbXBvcnQgIlNlc3Npb25UcmFja2VyLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0
d29ya1NQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBEb3dubG9hZDo6cmVzdW1l
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBzdGF0aWMgTlNTZXQgKnBsaXN0Q2xhc3Nl
cyA9IG5pbDsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKworICAgIGRp
c3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXiB7CisgICAgICAgIHBsaXN0Q2xhc3NlcyA9IFtbTlNT
ZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwg
W05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VS
TCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxdIHJldGFpbl07CisgICAgfSk7CisK
KyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKKyAgICAgICAg
bV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CisKKyAgICBhdXRvKiBuZXR3b3JrU2Vzc2lv
biA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgaWYg
KCFuZXR3b3JrU2Vzc2lvbikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBmaW5k
IG5ldHdvcmsgc2Vzc2lvbiB3aXRoIGdpdmVuIHNlc3Npb25JRCIpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGF1dG8mIGNvY29hU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNz
aW9uQ29jb2EmPigqbmV0d29ya1Nlc3Npb24pOworICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhb
W05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpyZXN1bWVEYXRhLmRhdGEoKSBsZW5ndGg6cmVz
dW1lRGF0YS5zaXplKCldKTsKKworICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IHdoeSBvdXIgcmVz
dW1lIGRhdGEgZG9lcyBub3QgY29udGFpbiBhIHJlc3VtZSBmaWxlIHBhdGguCisgICAgTlNNdXRh
YmxlRGljdGlvbmFyeSAqZCA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gcHJvcGVydHlM
aXN0V2l0aERhdGE6bnNEYXRhLmdldCgpIG9wdGlvbnM6TlNQcm9wZXJ0eUxpc3RJbW11dGFibGUg
Zm9ybWF0OjAgZXJyb3I6TlVMTF07CisgICAgW2Qgc2V0T2JqZWN0OihOU1N0cmluZyAqKXBhdGgg
Zm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworICAgIE5TRGF0YSAq
dXBkYXRlZERhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVy
dHlMaXN0OmQgZm9ybWF0Ok5TUHJvcGVydHlMaXN0WE1MRm9ybWF0X3YxXzAgb3B0aW9uczowIGVy
cm9yOk5VTExdOworCisgICAgbV9kb3dubG9hZFRhc2sgPSBjb2NvYVNlc3Npb24uZG93bmxvYWRU
YXNrV2l0aFJlc3VtZURhdGEodXBkYXRlZERhdGEpOworICAgIGNvY29hU2Vzc2lvbi5hZGREb3du
bG9hZElEKG1fZG93bmxvYWRUYXNrLmdldCgpLnRhc2tJZGVudGlmaWVyLCBtX2Rvd25sb2FkSUQp
OworICAgIG1fZG93bmxvYWRUYXNrLmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gcGF0
aDsKKworICAgIFttX2Rvd25sb2FkVGFzayByZXN1bWVdOwogfQogICAgIAogdm9pZCBEb3dubG9h
ZDo6cGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCmluZGV4IDQ1OGMw
YWViNWM2Li5iNTIyYjZiMDI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKQEAgLTI3LDcgKzI3LDkgQEAK
IAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAKK09CSkNfQ0xBU1MgTlNEYXRhOwogT0JKQ19D
TEFTUyBOU1VSTFNlc3Npb247CitPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzazsK
IE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKIE9CSkNfQ0xBU1MgV0tOZXR3b3JrU2Vzc2lv
bkRlbGVnYXRlOwogCkBAIC01OCw2ICs2MCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgTmV0
d29ya0RhdGFUYXNrQ29jb2EqIGRhdGFUYXNrRm9ySWRlbnRpZmllcihOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6VGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsK
KyAgICBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKmRvd25sb2FkVGFza1dpdGhSZXN1bWVEYXRh
KE5TRGF0YSAqKTsKIAogICAgIHZvaWQgYWRkRG93bmxvYWRJRChOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6VGFza0lkZW50aWZpZXIsIERvd25sb2FkSUQpOwogICAgIERvd25sb2FkSUQgZG93bmxvYWRJ
RChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CmluZGV4IDk2YWZjY2QwYzRiLi41MGE2Y2QxZmVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAt
MjU2LDYgKzI1NiwyMSBAQCBzdGF0aWMgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eSB0b05l
dHdvcmtMb2FkUHJpb3JpdHkoZmxvYXQgcHJpb3JpdHkpCiAgICAgICAgIH07CiAgICAgICAgIG5l
dHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIFdURk1vdmUoY2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9IGVsc2UgeworICAgICAgICBhdXRvIGRv
d25sb2FkSUQgPSBfc2Vzc2lvbi0+ZG93bmxvYWRJRCh0YXNrLnRhc2tJZGVudGlmaWVyKTsKKyAg
ICAgICAgaWYgKGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0
byogZG93bmxvYWQgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9h
ZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkgeworICAgICAgICAgICAgICAgIC8vIEdv
dCBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgZm9yIGEgZG93bmxvYWQgYmVpbmcgcmVzdW1lZC4K
KyAgICAgICAgICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOworICAgICAgICAgICAgICAgIGF1dG8gY29tcGxl
dGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAg
ICAgICAgICAgYXV0byBzZXNzaW9uSUQgPSBfc2Vzc2lvbi0+c2Vzc2lvbklEKCk7CisgICAgICAg
ICAgICAgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFu
ZGxlckNvcHksIHNlc3Npb25JRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VdKFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29y
ZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkgeworICAgICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24oZGlz
cG9zaXRpb24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgQmxvY2tfcmVsZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOworICAgICAgICAgICAgICAg
IH07CisgICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxl
bmdlLCBXVEZNb3ZlKGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIExPRyhOZXR3b3Jr
U2Vzc2lvbiwgIiVsbHUgZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlciAoY2Fu
Y2VsKSIsIHRhc2tJZGVudGlmaWVyKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBuaWwpOwog
ICAgIH0KQEAgLTI3OCw3ICsyOTMsNyBAQCBzdGF0aWMgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlv
cml0eSB0b05ldHdvcmtMb2FkUHJpb3JpdHkoZmxvYXQgcHJpb3JpdHkpCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChbdXNlckluZm8gaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0p
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVEYXRhID0gdXNlckluZm9bQCJOU1VSTFNl
c3Npb25Eb3dubG9hZFRhc2tSZXN1bWVEYXRhIl07CiAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VtZURhdGEgJiYgW3Jlc3VtZURh
dGEgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgICAgIGRv
d25sb2FkLT5kaWRGYWlsKGVycm9yLCB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1
bWVEYXRhLmJ5dGVzKSwgcmVzdW1lRGF0YS5sZW5ndGggfSk7CiAgICAgICAgICAgICAgICAgZWxz
ZQpAQCAtNjQzLDYgKzY1OCwxMSBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYSogTmV0d29ya1Nlc3Np
b25Db2NvYTo6ZGF0YVRhc2tGb3JJZGVudGlmaWVyKE5ldHdvcmtEYXRhVGFzawogICAgIHJldHVy
biBtX2RhdGFUYXNrTWFwV2l0aG91dFN0YXRlLmdldCh0YXNrSWRlbnRpZmllcik7CiB9CiAKK05T
VVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqTmV0d29ya1Nlc3Npb25Db2NvYTo6ZG93bmxvYWRUYXNr
V2l0aFJlc3VtZURhdGEoTlNEYXRhICpyZXN1bWVEYXRhKQoreworICAgIHJldHVybiBbbV9zZXNz
aW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlIGRvd25sb2FkVGFza1dpdGhSZXN1bWVEYXRhOnJlc3Vt
ZURhdGFdOworfQorCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFkZERvd25sb2FkSUQoTmV0
d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBEb3dubG9h
ZElEIGRvd25sb2FkSUQpCiB7CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5j
cHAKaW5kZXggMDMyMDI5ZWU4ZjIuLjMwZTcyMDlmMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdQogICAgIG1f
cHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UocGFnZUlELCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQZW5kaW5nRG93bmxvYWQmIHBlbmRpbmdE
b3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0
X3QgZHVtbXlQYWdlSUQgPSAwOwogICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxl
bmdlVG9DaGFsbGVuZ2VNYXAoeyBkdW1teVBhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQg
QXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
UGVuZGluZ0Rvd25sb2FkJiBwCiAgICAgaWYgKHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKGR1bW15
UGFnZUlELCBjaGFsbGVuZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgcGVuZGluZ0Rvd25sb2FkLnNlbmQoTWVzc2FnZXM6OkRvd25sb2Fk
UHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKKyAgICBkb3dubG9hZC5zZW5kKE1lc3NhZ2VzOjpEb3du
bG9hZFByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuaAppbmRleCA5ZWJlZmQ0NzBhZC4uYWUzYmZhMzllMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEF1dGhlbnRpY2F0aW9uTWFuYWdlcl9oCiAK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmg+CkBAIC00NSw3ICs0Niw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQ2hpbGRQ
cm9jZXNzOwogY2xhc3MgRG93bmxvYWQ7CiBjbGFzcyBEb3dubG9hZElEOwotY2xhc3MgUGVuZGlu
Z0Rvd25sb2FkOwogY2xhc3MgV2ViRnJhbWU7CiAKIGVudW0gY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbiB7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRpbmdEb3dubG9h
ZCYsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICNpZiBV
U0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0
aGVudGljYXRlKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322141</attachid>
            <date>2017-09-28 16:33:29 -0700</date>
            <delta_ts>2017-09-29 15:54:00 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>177625_download_resuming_wip.patch</filename>
            <type>text/plain</type>
            <size>14264</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAppbmRleCA3MzEyZjcyNTJlNS4uMzVlZTZjNGVjYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpA
QCAtMTQ2LDYgKzE0NywzMyBAQCB2b2lkIERvd25sb2FkOjpjYW5jZWwoKQogICAgIHBsYXRmb3Jt
Q2FuY2VsTmV0d29ya0xvYWQoKTsKIH0KIAorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCit2b2lk
IERvd25sb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFD
SykKKyAgICBtX2NoYWxsZW5nZSA9IGNoYWxsZW5nZTsKKyAgICBtX2NoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgc2VuZChNZXNzYWdl
czo6RG93bmxvYWRQcm94eTo6Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkpKTsKKyNlbHNlCisgICAgTmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgqdGhpcywgY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CisjZW5kaWYKK30KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0sp
Cit2b2lkIERvd25sb2FkOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpCit7CisgICAgQVNTRVJUKG1fY2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXIpOworICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hh
bmdlKG1fY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIsIG51bGxwdHIpOworICAgIGlmICghY2Fu
QXV0aGVudGljYXRlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZSwgeyB9KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5hdXRo
ZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRo
aXMsICptX2NoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorI2VuZGlm
IC8vIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisjZW5kaWYgLy8gVVNFKE5F
VFdPUktfU0VTU0lPTikKKwogI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogdm9pZCBEb3dubG9h
ZDo6ZGlkU3RhcnQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggYzM3OWJjYWY4ZTcuLmIwMmQ3ZDZiZjQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAg
LTM4LDYgKzM4LDggQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBVU0UoTkVU
V09SS19TRVNTSU9OKQorI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpZiBQTEFURk9STShDT0NPQSkKIE9C
SkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlmCkBAIC0xMDEsNiArMTAz
LDEwIEBAIHB1YmxpYzoKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBzZXRT
YW5kYm94RXh0ZW5zaW9uKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNp
b24pIHsgbV9zYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKTsgfQor
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworI2lmIFVTRShQUk9U
RUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpOworI2VuZGlm
CiAjZWxzZQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkBA
IC0xNDYsNiArMTUyLDEwIEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRv
d25sb2FkVGFzaz4gbV9kb3dubG9hZFRhc2s7CiAjZW5kaWYKICAgICBQQUw6OlNlc3Npb25JRCBt
X3Nlc3Npb25JRDsKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorICAg
IHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IG1fY2hhbGxl
bmdlOworICAgIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIG1fY2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXI7CisjZW5kaWYKICNlbHNlIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBTdHJpbmcgbV9yZXNwb25zZU1J
TUVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggYTY2Yzk5NmFlNmUuLjBjMjYzNTdiMGRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTg5LDEwICs4OSwxNSBAQCB2b2lkIERvd25sb2Fk
TWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCBkb3dubG9hZElE
LCBzdGQ6OnVuaQogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiB2b2lk
IERvd25sb2FkTWFuYWdlcjo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKERvd25sb2FkSUQgZG93bmxvYWRJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCiB7Ci0g
ICAgYXV0byogcGVuZGluZ0Rvd25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRzLmdldChkb3dubG9h
ZElEKTsKLSAgICBBU1NFUlQocGVuZGluZ0Rvd25sb2FkKTsKLSAgICBpZiAocGVuZGluZ0Rvd25s
b2FkKQorICAgIGlmIChhdXRvKiBwZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMu
Z2V0KGRvd25sb2FkSUQpKSB7CiAgICAgICAgIHBlbmRpbmdEb3dubG9hZC0+Y29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGF1dG8qIGRvd25sb2FkID0gbV9kb3dubG9hZHMu
Z2V0KGRvd25sb2FkSUQpKSB7CisgICAgICAgIGRvd25sb2FkLT5jb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0aGVudGljYXRlKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KICNlbmRpZgogCkBAIC0x
NjIsMTggKzE2NywyOCBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVEZWNpZGVQZW5k
aW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRvd25sbwogI2VuZGlmCiB9CiAKLXZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxv
YWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogewogI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRo
aXMsIGRvd25sb2FkSUQsIG51bGxwdHIsIHNlc3Npb25JRCk7CiAjZWxzZQorICAgIHN0ZDo6dW5p
cXVlX3B0cjxEb3dubG9hZD4gZG93bmxvYWQ7CisjZW5kaWYKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHNlc3Npb25JRCk7CiAgICAgLy8gRG93bmxvYWQ6OnJlc3VtZSgpIGlzIHJlc3BvbnNpYmxl
IGZvciBzZXR0aW5nIHRoZSBEb3dubG9hZCdzIHJlc291cmNlIHJlcXVlc3QuCiAgICAgYXV0byBk
b3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBS
ZXNvdXJjZVJlcXVlc3QoKSk7CisjZW5kaWYKKworICAgIGlmICghZG93bmxvYWQpIHsKKyAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGRvd25s
b2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAg
ICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3du
bG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKLSNlbmRpZgogfQogCiB2
b2lkIERvd25sb2FkTWFuYWdlcjo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29j
b2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KaW5kZXggODY4ZTExOTdjOGEuLmVjOGVhNzY0MjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2Nv
YS9Eb3dubG9hZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KQEAgLTI5LDEzICsyOSwzNiBAQAogI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCiAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQg
PFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2Eu
aCIKKyNpbXBvcnQgIlNlc3Npb25UcmFja2VyLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0
d29ya1NQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBEb3dubG9hZDo6cmVzdW1l
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRo
LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKG1f
c2FuZGJveEV4dGVuc2lvbikKKyAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7
CisKKyAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vz
c2lvbihtX3Nlc3Npb25JRCk7CisgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikgeworICAgICAgICBX
VEZMb2dBbHdheXMoIkNvdWxkIG5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiB3aXRoIGdpdmVuIHNl
c3Npb25JRCIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8mIGNvY29hU2Vzc2lv
biA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPigqbmV0d29ya1Nlc3Npb24pOwor
ICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpy
ZXN1bWVEYXRhLmRhdGEoKSBsZW5ndGg6cmVzdW1lRGF0YS5zaXplKCldKTsKKworICAgIC8vIEZJ
WE1FOiBGaWd1cmUgb3V0IHdoeSBvdXIgcmVzdW1lIGRhdGEgZG9lcyBub3QgY29udGFpbiBhIHJl
c3VtZSBmaWxlIHBhdGguCisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtO
U1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gcHJvcGVydHlMaXN0V2l0aERhdGE6bnNEYXRhLmdl
dCgpIG9wdGlvbnM6TlNQcm9wZXJ0eUxpc3RJbW11dGFibGUgZm9ybWF0OjAgZXJyb3I6TlVMTF07
CisgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OihOU1N0cmluZyAqKXBhdGggZm9yS2V5OkAiTlNV
UkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworICAgIGF1dG8gdXBkYXRlZERhdGEgPSBb
TlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0OmRpY3Rpb25h
cnkgZm9ybWF0Ok5TUHJvcGVydHlMaXN0WE1MRm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOk5V
TExdOworCisgICAgbV9kb3dubG9hZFRhc2sgPSBjb2NvYVNlc3Npb24uZG93bmxvYWRUYXNrV2l0
aFJlc3VtZURhdGEodXBkYXRlZERhdGEpOworICAgIGNvY29hU2Vzc2lvbi5hZGREb3dubG9hZElE
KG1fZG93bmxvYWRUYXNrLmdldCgpLnRhc2tJZGVudGlmaWVyLCBtX2Rvd25sb2FkSUQpOworICAg
IG1fZG93bmxvYWRUYXNrLmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gcGF0aDsKKwor
ICAgIFttX2Rvd25sb2FkVGFzayByZXN1bWVdOwogfQogICAgIAogdm9pZCBEb3dubG9hZDo6cGxh
dGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCmluZGV4IDQ1OGMwYWViNWM2
Li5iNTIyYjZiMDI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKQEAgLTI3LDcgKzI3LDkgQEAKIAogI2lm
IFVTRShORVRXT1JLX1NFU1NJT04pCiAKK09CSkNfQ0xBU1MgTlNEYXRhOwogT0JKQ19DTEFTUyBO
U1VSTFNlc3Npb247CitPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzazsKIE9CSkNf
Q0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKIE9CSkNfQ0xBU1MgV0tOZXR3b3JrU2Vzc2lvbkRlbGVn
YXRlOwogCkBAIC01OCw2ICs2MCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgTmV0d29ya0Rh
dGFUYXNrQ29jb2EqIGRhdGFUYXNrRm9ySWRlbnRpZmllcihOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
VGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICBO
U1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKmRvd25sb2FkVGFza1dpdGhSZXN1bWVEYXRhKE5TRGF0
YSAqKTsKIAogICAgIHZvaWQgYWRkRG93bmxvYWRJRChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFz
a0lkZW50aWZpZXIsIERvd25sb2FkSUQpOwogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRChOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4
IDk2YWZjY2QwYzRiLi41MGE2Y2QxZmVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMjU2LDYg
KzI1NiwyMSBAQCBzdGF0aWMgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eSB0b05ldHdvcmtM
b2FkUHJpb3JpdHkoZmxvYXQgcHJpb3JpdHkpCiAgICAgICAgIH07CiAgICAgICAgIG5ldHdvcmtE
YXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIFdURk1vdmUoY2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9IGVsc2UgeworICAgICAgICBhdXRvIGRvd25sb2Fk
SUQgPSBfc2Vzc2lvbi0+ZG93bmxvYWRJRCh0YXNrLnRhc2tJZGVudGlmaWVyKTsKKyAgICAgICAg
aWYgKGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byogZG93
bmxvYWQgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5kb3dubG9hZE1hbmFn
ZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkgeworICAgICAgICAgICAgICAgIC8vIEdvdCBhdXRo
ZW50aWNhdGlvbiBjaGFsbGVuZ2UgZm9yIGEgZG93bmxvYWQgYmVpbmcgcmVzdW1lZC4KKyAgICAg
ICAgICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjaGFsbGVuZ2UpOworICAgICAgICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhh
bmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgICAgICAg
ICAgYXV0byBzZXNzaW9uSUQgPSBfc2Vzc2lvbi0+c2Vzc2lvbklEKCk7CisgICAgICAgICAgICAg
ICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IFtjb21wbGV0aW9uSGFuZGxlckNv
cHksIHNlc3Npb25JRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VdKFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3Jl
ZGVudGlhbCYgY3JlZGVudGlhbCkgeworICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24oZGlzcG9zaXRp
b24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQmxv
Y2tfcmVsZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOworICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBX
VEZNb3ZlKGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lv
biwgIiVsbHUgZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlciAoY2FuY2VsKSIs
IHRhc2tJZGVudGlmaWVyKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBuaWwpOwogICAgIH0K
QEAgLTI3OCw3ICsyOTMsNyBAQCBzdGF0aWMgV2ViQ29yZTo6TmV0d29ya0xvYWRQcmlvcml0eSB0
b05ldHdvcmtMb2FkUHJpb3JpdHkoZmxvYXQgcHJpb3JpdHkpCiAgICAgICAgICAgICAgICAgICAg
IGlmIChbdXNlckluZm8gaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCiAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bWVEYXRhID0gdXNlckluZm9bQCJOU1VSTFNlc3Npb25E
b3dubG9hZFRhc2tSZXN1bWVEYXRhIl07CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIAorCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VtZURhdGEgJiYgW3Jlc3VtZURhdGEgaXNL
aW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgICAgIGRvd25sb2Fk
LT5kaWRGYWlsKGVycm9yLCB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bWVEYXRh
LmJ5dGVzKSwgcmVzdW1lRGF0YS5sZW5ndGggfSk7CiAgICAgICAgICAgICAgICAgZWxzZQpAQCAt
NjQzLDYgKzY1OCwxMSBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYSogTmV0d29ya1Nlc3Npb25Db2Nv
YTo6ZGF0YVRhc2tGb3JJZGVudGlmaWVyKE5ldHdvcmtEYXRhVGFzawogICAgIHJldHVybiBtX2Rh
dGFUYXNrTWFwV2l0aG91dFN0YXRlLmdldCh0YXNrSWRlbnRpZmllcik7CiB9CiAKK05TVVJMU2Vz
c2lvbkRvd25sb2FkVGFzayAqTmV0d29ya1Nlc3Npb25Db2NvYTo6ZG93bmxvYWRUYXNrV2l0aFJl
c3VtZURhdGEoTlNEYXRhICpyZXN1bWVEYXRhKQoreworICAgIHJldHVybiBbbV9zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlIGRvd25sb2FkVGFza1dpdGhSZXN1bWVEYXRhOnJlc3VtZURhdGFd
OworfQorCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFkZERvd25sb2FkSUQoTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBEb3dubG9hZElEIGRv
d25sb2FkSUQpCiB7CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKaW5k
ZXggMDMyMDI5ZWU4ZjIuLjMwZTcyMDlmMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAK
QEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdQogICAgIG1fcHJvY2Vz
cy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UocGFnZUlELCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
Y2hhbGxlbmdlSUQpKTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQZW5kaW5nRG93bmxvYWQmIHBlbmRpbmdEb3dubG9h
ZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3QgZHVt
bXlQYWdlSUQgPSAwOwogICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9D
aGFsbGVuZ2VNYXAoeyBkdW1teVBhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgQXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGVuZGlu
Z0Rvd25sb2FkJiBwCiAgICAgaWYgKHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKGR1bW15UGFnZUlE
LCBjaGFsbGVuZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgcGVuZGluZ0Rvd25sb2FkLnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6
OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSwgY2hhbGxlbmdlSUQpKTsKKyAgICBkb3dubG9hZC5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFBy
b3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsIGNoYWxsZW5nZUlEKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApp
bmRleCA5ZWJlZmQ0NzBhZC4uYWUzYmZhMzllMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCkBA
IC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEF1dGhlbnRpY2F0aW9uTWFuYWdlcl9oCiAKICNpbmNs
dWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1
cHBsZW1lbnQuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+
CkBAIC00NSw3ICs0Niw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQ2hpbGRQcm9jZXNz
OwogY2xhc3MgRG93bmxvYWQ7CiBjbGFzcyBEb3dubG9hZElEOwotY2xhc3MgUGVuZGluZ0Rvd25s
b2FkOwogY2xhc3MgV2ViRnJhbWU7CiAKIGVudW0gY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbiB7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShORVRX
T1JLX1NFU1NJT04pCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRpbmdEb3dubG9hZCYsIGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXImJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
SVBDOjpNZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICNpZiBVU0UoUFJP
VEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGlj
YXRlKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322248</attachid>
            <date>2017-09-29 15:54:00 -0700</date>
            <delta_ts>2017-09-29 16:04:37 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>177625_download_resuming_wip.patch</filename>
            <type>text/plain</type>
            <size>14974</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAppbmRleCA3MzEyZjcyNTJlNS4uNWI0MGNiOWE0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTM0LDEwICsz
NCwxNiBAQAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJv
eEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVM
RUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIERv
d25sb2FkOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTE0Niw2ICsxNTIsNDEgQEAg
dm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKICAgICBwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKCk7
CiB9CiAKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQordm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2
ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGlmICghY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmlzRW1wdHkoKSAmJiAhY2hh
bGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgY2hh
bGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
I2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgbV9jaGFsbGVuZ2Ug
PSBjaGFsbGVuZ2U7CisgICAgbV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpKSk7CisjZWxzZQorICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5hdXRoZW50
aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRoaXMs
IGNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworI2VuZGlmCit9CisKKyNp
ZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQordm9pZCBEb3dubG9hZDo6Y29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVu
dGljYXRlKQoreworICAgIEFTU0VSVChtX2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAgICBpZiAoIWNhbkF1dGhlbnRpY2F0ZSkgeworICAg
ICAgICBpZiAoTmV0d29ya1Nlc3Npb246OmFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZv
ckhvc3QoKm1fY2hhbGxlbmdlKSkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIHNlcnZlclRydXN0
Q3JlZGVudGlhbCgqbV9jaGFsbGVuZ2UpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0
UHJvdGVjdGlvblNwYWNlLCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTmV0
d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgKm1fY2hhbGxlbmdlLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKKyNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQorCiAjaWYgIVVTRShO
RVRXT1JLX1NFU1NJT04pCiB2b2lkIERvd25sb2FkOjpkaWRTdGFydCgpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRleCBjMzc5
YmNhZjhlNy4uYjAyZDdkNmJmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisjaW5jbHVkZSAiTmV0
d29ya0RhdGFUYXNrLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oPgogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Eb3dubG9h
ZFRhc2s7CiAjZW5kaWYKQEAgLTEwMSw2ICsxMDMsMTAgQEAgcHVibGljOgogCiAjaWYgVVNFKE5F
VFdPUktfU0VTU0lPTikKICAgICB2b2lkIHNldFNhbmRib3hFeHRlbnNpb24oUmVmUHRyPFNhbmRi
b3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikgeyBtX3NhbmRib3hFeHRlbnNpb24gPSBX
VEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdl
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImJik7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykK
KyAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShi
b29sIGNhbkF1dGhlbnRpY2F0ZSk7CisjZW5kaWYKICNlbHNlCiAgICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKQEAgLTE0Niw2ICsxNTIsMTAgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrPiBtX2Rvd25sb2FkVGFzazsK
ICNlbmRpZgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworI2lmIFVTRShQUk9URUNU
SU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7CisgICAgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXIgbV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKKyNlbmRpZgogI2Vsc2UgLy8g
VVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1
ZXN0OwogICAgIFN0cmluZyBtX3Jlc3BvbnNlTUlNRVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApp
bmRleCBhNjZjOTk2YWU2ZS4uMGMyNjM1N2IwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAt
ODksMTAgKzg5LDE1IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd25s
b2FkVGFzayhEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5pCiAjaWYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJRCBkb3dubG9hZElE
LCBib29sIGNhbkF1dGhlbnRpY2F0ZSkKIHsKLSAgICBhdXRvKiBwZW5kaW5nRG93bmxvYWQgPSBt
X3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpOwotICAgIEFTU0VSVChwZW5kaW5nRG93
bmxvYWQpOwotICAgIGlmIChwZW5kaW5nRG93bmxvYWQpCisgICAgaWYgKGF1dG8qIHBlbmRpbmdE
b3dubG9hZCA9IG1fcGVuZGluZ0Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCkpIHsKICAgICAgICAg
cGVuZGluZ0Rvd25sb2FkLT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoY2FuQXV0aGVudGljYXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
YXV0byogZG93bmxvYWQgPSBtX2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCkpIHsKKyAgICAgICAg
ZG93bmxvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShj
YW5BdXRoZW50aWNhdGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogI2VuZGlmCiAKQEAgLTE2MiwxOCArMTY3LDI4IEBAIHZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25s
b2FkSUQgZG93bmxvCiAjZW5kaWYKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURv
d25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIERvd25s
b2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3du
bG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCiB7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGF1dG8gZG93bmxvYWQgPSBz
dGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgc2Vz
c2lvbklEKTsKICNlbHNlCisgICAgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkPiBkb3dubG9hZDsK
KyNlbmRpZgorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc2Vzc2lvbklEKTsKICAgICAvLyBEb3du
bG9hZDo6cmVzdW1lKCkgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdGhlIERvd25sb2FkJ3Mg
cmVzb3VyY2UgcmVxdWVzdC4KICAgICBhdXRvIGRvd25sb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxE
b3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIFJlc291cmNlUmVxdWVzdCgpKTsKKyNlbmRpZgor
CisgICAgaWYgKCFkb3dubG9hZCkgeworICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQogCiAgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRo
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRh
aW5zKGRvd25sb2FkSUQpKTsKICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92
ZShkb3dubG9hZCkpOwotI2VuZGlmCiB9CiAKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjYW5jZWxE
b3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQpp
bmRleCA4NjhlMTE5N2M4YS4uYTQ4NjVhY2E1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5t
bQpAQCAtMjksMTMgKzI5LDM2IEBACiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIAogI2ltcG9y
dCAiRGF0YVJlZmVyZW5jZS5oIgotI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgor
I2ltcG9ydCAiTmV0d29ya1Nlc3Npb25Db2NvYS5oIgorI2ltcG9ydCAiU2Vzc2lvblRyYWNrZXIu
aCIKKyNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBy
ZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIG1fc2FuZGJveEV4dGVuc2lvbiA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZShzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBpZiAobV9zYW5kYm94RXh0ZW5zaW9uKQorICAgICAgICBt
X3NhbmRib3hFeHRlbnNpb24tPmNvbnN1bWUoKTsKKworICAgIGF1dG8qIG5ldHdvcmtTZXNzaW9u
ID0gU2Vzc2lvblRyYWNrZXI6Om5ldHdvcmtTZXNzaW9uKG1fc2Vzc2lvbklEKTsKKyAgICBpZiAo
IW5ldHdvcmtTZXNzaW9uKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ291bGQgbm90IGZpbmQg
bmV0d29yayBzZXNzaW9uIHdpdGggZ2l2ZW4gc2Vzc2lvbklEIik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgYXV0byYgY29jb2FTZXNzaW9uID0gc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Np
b25Db2NvYSY+KCpuZXR3b3JrU2Vzc2lvbik7CisgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVzOnJlc3VtZURhdGEuZGF0YSgpIGxlbmd0aDpyZXN1
bWVEYXRhLnNpemUoKV0pOworCisgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29y
a2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzM0NzQ1MTcxPi4KKyAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBwcm9wZXJ0
eUxpc3RXaXRoRGF0YTpuc0RhdGEuZ2V0KCkgb3B0aW9uczpOU1Byb3BlcnR5TGlzdEltbXV0YWJs
ZSBmb3JtYXQ6MCBlcnJvcjpOVUxMXTsKKyAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6KE5TU3Ry
aW5nICopcGF0aCBmb3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9jYWxQYXRoIl07Cisg
ICAgTlNEYXRhICp1cGRhdGVkRGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0
YVdpdGhQcm9wZXJ0eUxpc3Q6ZGljdGlvbmFyeSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RYTUxGb3Jt
YXRfdjFfMCBvcHRpb25zOjAgZXJyb3I6TlVMTF07CisKKyAgICBtX2Rvd25sb2FkVGFzayA9IGNv
Y29hU2Vzc2lvbi5kb3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YSh1cGRhdGVkRGF0YSk7CisgICAg
Y29jb2FTZXNzaW9uLmFkZERvd25sb2FkSUQobV9kb3dubG9hZFRhc2suZ2V0KCkudGFza0lkZW50
aWZpZXIsIG1fZG93bmxvYWRJRCk7CisgICAgbV9kb3dubG9hZFRhc2suZ2V0KCkuX3BhdGhUb0Rv
d25sb2FkVGFza0ZpbGUgPSBwYXRoOworCisgICAgW21fZG93bmxvYWRUYXNrIHJlc3VtZV07CiB9
CiAgICAgCiB2b2lkIERvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLmgKaW5kZXggNWIxMGFmNjdmZGEuLjUwZWJhZDI1OGVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
aApAQCAtMjcsNyArMjcsOSBAQAogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIAorT0JKQ19D
TEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNTIE5TVVJMU2Vzc2lvbjsKK09CSkNfQ0xBU1MgTlNVUkxT
ZXNzaW9uRG93bmxvYWRUYXNrOwogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogT0JKQ19D
TEFTUyBXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGU7CiAKQEAgLTU4LDYgKzYwLDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYSogZGF0YVRhc2tGb3JJZGVudGlm
aWVyKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kpOworICAgIE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqZG93bmxv
YWRUYXNrV2l0aFJlc3VtZURhdGEoTlNEYXRhICopOwogCiAgICAgdm9pZCBhZGREb3dubG9hZElE
KE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwgRG93bmxvYWRJRCk7CiAgICAg
RG93bmxvYWRJRCBkb3dubG9hZElEKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmll
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggYTNlZmM3ZGQ4YTYuLmU4NGQxOGYyNDgwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCkBAIC0yNzIsNiArMjcyLDIxIEBAIHN0YXRpYyBXZWJDb3JlOjpOZXR3
b3JrTG9hZFByaW9yaXR5IHRvTmV0d29ya0xvYWRQcmlvcml0eShmbG9hdCBwcmlvcml0eSkKICAg
ICAgICAgfTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNo
YWxsZW5nZSwgV1RGTW92ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0gZWxz
ZSB7CisgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IF9zZXNzaW9uLT5kb3dubG9hZElEKHRhc2su
dGFza0lkZW50aWZpZXIpOworICAgICAgICBpZiAoZG93bmxvYWRJRC5kb3dubG9hZElEKCkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBkb3dubG9hZCA9IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6
OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQpKSB7Cisg
ICAgICAgICAgICAgICAgLy8gR290IGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBmb3IgYSBkb3du
bG9hZCBiZWluZyByZXN1bWVkLgorICAgICAgICAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CisgICAgICAg
ICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBhdXRvIHNlc3Npb25JRCA9IF9zZXNzaW9uLT5z
ZXNzaW9uSUQoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyID0gW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgc2Vzc2lvbklELCBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZV0oV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bv
c2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkp
OworICAgICAgICAgICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNvbXBsZXRpb25IYW5kbGVyQ29w
eSk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkUmVj
ZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIFdURk1vdmUoY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
ICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRSZWNlaXZlQ2hhbGxlbmdlIGNv
bXBsZXRpb25IYW5kbGVyIChjYW5jZWwpIiwgdGFza0lkZW50aWZpZXIpOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIG5pbCk7CiAgICAgfQpAQCAtMjk0LDcgKzMwOSw3IEBAIHN0YXRpYyBXZWJD
b3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5IHRvTmV0d29ya0xvYWRQcmlvcml0eShmbG9hdCBwcmlv
cml0eSkKICAgICAgICAgICAgICAgICAgICAgaWYgKFt1c2VySW5mbyBpc0tpbmRPZkNsYXNzOltO
U0RpY3Rpb25hcnkgY2xhc3NdXSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZURhdGEg
PSB1c2VySW5mb1tAIk5TVVJMU2Vzc2lvbkRvd25sb2FkVGFza1Jlc3VtZURhdGEiXTsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBpZiAocmVz
dW1lRGF0YSAmJiBbcmVzdW1lRGF0YSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKICAg
ICAgICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwoZXJyb3IsIHsgc3RhdGljX2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHJlc3VtZURhdGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxlbmd0aCB9KTsK
ICAgICAgICAgICAgICAgICBlbHNlCkBAIC02NTksNiArNjc0LDExIEBAIE5ldHdvcmtEYXRhVGFz
a0NvY29hKiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpkYXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29y
a0RhdGFUYXNrCiAgICAgcmV0dXJuIG1fZGF0YVRhc2tNYXBXaXRob3V0U3RhdGUuZ2V0KHRhc2tJ
ZGVudGlmaWVyKTsKIH0KIAorTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpkb3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YShOU0RhdGEgKnJlc3VtZURhdGEpCit7
CisgICAgcmV0dXJuIFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UgZG93bmxvYWRUYXNr
V2l0aFJlc3VtZURhdGE6cmVzdW1lRGF0YV07Cit9CisKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2Nv
YTo6YWRkRG93bmxvYWRJRChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIgdGFz
a0lkZW50aWZpZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCkKIHsKICNpZm5kZWYgTkRFQlVHCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRpb25NYW5hZ2VyLmNwcAppbmRleCAwMzIwMjllZThmMi4uMzBlNzIwOWYyZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgQXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0
X3QgcGFnZUlELCB1CiAgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShwYWdlSUQsIGZyYW1lSUQs
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOwogfQogCi12b2lkIEF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRp
bmdEb3dubG9hZCYgcGVuZGluZ0Rvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93
bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICB1aW50NjRfdCBkdW1teVBhZ2VJRCA9IDA7CiAgICAgdWludDY0X3QgY2hh
bGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7IGR1bW15UGFnZUlELCBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikgfSk7CkBAIC0x
NTMsNyArMTUzLDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShQZW5kaW5nRG93bmxvYWQmIHAKICAgICBpZiAoc2hvdWxkQ29h
bGVzY2VDaGFsbGVuZ2UoZHVtbXlQYWdlSUQsIGNoYWxsZW5nZUlELCBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwZW5kaW5nRG93bmxvYWQuc2Vu
ZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOworICAgIGRvd25sb2Fk
LnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCmluZGV4IDllYmVmZDQ3MGFkLi5hZTNiZmEzOWUwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25NYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQXV0aGVu
dGljYXRpb25NYW5hZ2VyX2gKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KQEAgLTQ1LDcgKzQ2LDYgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBDaGlsZFByb2Nlc3M7CiBjbGFzcyBEb3dubG9hZDsKIGNsYXNzIERvd25s
b2FkSUQ7Ci1jbGFzcyBQZW5kaW5nRG93bmxvYWQ7CiBjbGFzcyBXZWJGcmFtZTsKIAogZW51bSBj
bGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIHsKQEAgLTY1LDcgKzY1LDcg
QEAgcHVibGljOgogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKICAgICB2b2lkIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoUGVuZGluZ0Rvd25sb2FkJiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyJiYpOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAg
ICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93
bmxvYWRJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322250</attachid>
            <date>2017-09-29 16:04:37 -0700</date>
            <delta_ts>2017-10-03 15:55:56 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>177625_download_resuming_wip.patch</filename>
            <type>text/plain</type>
            <size>14206</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAppbmRleCA3MzEyZjcyNTJlNS4uNWI0MGNiOWE0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTM0LDEwICsz
NCwxNiBAQAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJv
eEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVM
RUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIERv
d25sb2FkOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTE0Niw2ICsxNTIsNDEgQEAg
dm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKICAgICBwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKCk7
CiB9CiAKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQordm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2
ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGlmICghY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmlzRW1wdHkoKSAmJiAhY2hh
bGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgY2hh
bGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
I2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgbV9jaGFsbGVuZ2Ug
PSBjaGFsbGVuZ2U7CisgICAgbV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpKSk7CisjZWxzZQorICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5hdXRoZW50
aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRoaXMs
IGNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworI2VuZGlmCit9CisKKyNp
ZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQordm9pZCBEb3dubG9hZDo6Y29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVu
dGljYXRlKQoreworICAgIEFTU0VSVChtX2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAgICBpZiAoIWNhbkF1dGhlbnRpY2F0ZSkgeworICAg
ICAgICBpZiAoTmV0d29ya1Nlc3Npb246OmFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZv
ckhvc3QoKm1fY2hhbGxlbmdlKSkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIHNlcnZlclRydXN0
Q3JlZGVudGlhbCgqbV9jaGFsbGVuZ2UpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0
UHJvdGVjdGlvblNwYWNlLCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTmV0
d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgKm1fY2hhbGxlbmdlLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Cit9CisjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKKyNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQorCiAjaWYgIVVTRShO
RVRXT1JLX1NFU1NJT04pCiB2b2lkIERvd25sb2FkOjpkaWRTdGFydCgpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaAppbmRleCBjMzc5
YmNhZjhlNy4uYjAyZDdkNmJmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaApAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisjaW5jbHVkZSAiTmV0
d29ya0RhdGFUYXNrLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oPgogI2lmIFBMQVRGT1JNKENPQ09BKQogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Eb3dubG9h
ZFRhc2s7CiAjZW5kaWYKQEAgLTEwMSw2ICsxMDMsMTAgQEAgcHVibGljOgogCiAjaWYgVVNFKE5F
VFdPUktfU0VTU0lPTikKICAgICB2b2lkIHNldFNhbmRib3hFeHRlbnNpb24oUmVmUHRyPFNhbmRi
b3hFeHRlbnNpb24+JiYgc2FuZGJveEV4dGVuc2lvbikgeyBtX3NhbmRib3hFeHRlbnNpb24gPSBX
VEZNb3ZlKHNhbmRib3hFeHRlbnNpb24pOyB9CisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdl
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXImJik7CisjaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykK
KyAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShi
b29sIGNhbkF1dGhlbnRpY2F0ZSk7CisjZW5kaWYKICNlbHNlCiAgICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKQEAgLTE0Niw2ICsxNTIsMTAgQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrPiBtX2Rvd25sb2FkVGFzazsK
ICNlbmRpZgogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworI2lmIFVTRShQUk9URUNU
SU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZT4gbV9jaGFsbGVuZ2U7CisgICAgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXIgbV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcjsKKyNlbmRpZgogI2Vsc2UgLy8g
VVNFKE5FVFdPUktfU0VTU0lPTikKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1
ZXN0OwogICAgIFN0cmluZyBtX3Jlc3BvbnNlTUlNRVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApp
bmRleCBhNjZjOTk2YWU2ZS4uZDgyOGU2YzM4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAt
ODksMTAgKzg5LDE1IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd25s
b2FkVGFzayhEb3dubG9hZElEIGRvd25sb2FkSUQsIHN0ZDo6dW5pCiAjaWYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250aW51ZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJRCBkb3dubG9hZElE
LCBib29sIGNhbkF1dGhlbnRpY2F0ZSkKIHsKLSAgICBhdXRvKiBwZW5kaW5nRG93bmxvYWQgPSBt
X3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpOwotICAgIEFTU0VSVChwZW5kaW5nRG93
bmxvYWQpOwotICAgIGlmIChwZW5kaW5nRG93bmxvYWQpCisgICAgaWYgKGF1dG8qIHBlbmRpbmdE
b3dubG9hZCA9IG1fcGVuZGluZ0Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCkpIHsKICAgICAgICAg
cGVuZGluZ0Rvd25sb2FkLT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoY2FuQXV0aGVudGljYXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
YXV0byogZG93bmxvYWQgPSBtX2Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCkpIHsKKyAgICAgICAg
ZG93bmxvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShj
YW5BdXRoZW50aWNhdGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogI2VuZGlmCiAKQEAgLTE2MiwxMyArMTY3LDE3IEBAIHZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKERvd25s
b2FkSUQgZG93bmxvCiAjZW5kaWYKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURv
d25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIERvd25s
b2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3du
bG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCiB7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyNpZiBVU0Uo
TkVUV09SS19TRVNTSU9OKSAmJiAhUExBVEZPUk0oQ09DT0EpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKICNlbHNlCisjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICBhdXRvIGRvd25sb2FkID0g
c3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIsIHNl
c3Npb25JRCk7CisjZWxzZQogICAgIC8vIERvd25sb2FkOjpyZXN1bWUoKSBpcyByZXNwb25zaWJs
ZSBmb3Igc2V0dGluZyB0aGUgRG93bmxvYWQncyByZXNvdXJjZSByZXF1ZXN0LgogICAgIGF1dG8g
ZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwg
UmVzb3VyY2VSZXF1ZXN0KCkpOworI2VuZGlmCiAKICAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3Vt
ZURhdGEsIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogICAgIEFTU0VSVCghbV9kb3du
bG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KaW5k
ZXggODY4ZTExOTdjOGEuLmE0ODY1YWNhNTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0K
QEAgLTI5LDEzICsyOSwzNiBAQAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAKICNpbXBvcnQg
IkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNp
bXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKKyNpbXBvcnQgIlNlc3Npb25UcmFja2VyLmgi
CisjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGUoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lvbikKKyAgICAgICAgbV9z
YW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CisKKyAgICBhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9
IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgaWYgKCFu
ZXR3b3JrU2Vzc2lvbikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBmaW5kIG5l
dHdvcmsgc2Vzc2lvbiB3aXRoIGdpdmVuIHNlc3Npb25JRCIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGF1dG8mIGNvY29hU2Vzc2lvbiA9IHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9u
Q29jb2EmPigqbmV0d29ya1Nlc3Npb24pOworICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05T
RGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpyZXN1bWVEYXRhLmRhdGEoKSBsZW5ndGg6cmVzdW1l
RGF0YS5zaXplKCldKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmth
cm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8zNDc0NTE3MT4uCisgICAgTlNNdXRhYmxlRGljdGlv
bmFyeSAqZGljdGlvbmFyeSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gcHJvcGVydHlM
aXN0V2l0aERhdGE6bnNEYXRhLmdldCgpIG9wdGlvbnM6TlNQcm9wZXJ0eUxpc3RJbW11dGFibGUg
Zm9ybWF0OjAgZXJyb3I6TlVMTF07CisgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OihOU1N0cmlu
ZyAqKXBhdGggZm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworICAg
IE5TRGF0YSAqdXBkYXRlZERhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFX
aXRoUHJvcGVydHlMaXN0OmRpY3Rpb25hcnkgZm9ybWF0Ok5TUHJvcGVydHlMaXN0WE1MRm9ybWF0
X3YxXzAgb3B0aW9uczowIGVycm9yOk5VTExdOworCisgICAgbV9kb3dubG9hZFRhc2sgPSBjb2Nv
YVNlc3Npb24uZG93bmxvYWRUYXNrV2l0aFJlc3VtZURhdGEodXBkYXRlZERhdGEpOworICAgIGNv
Y29hU2Vzc2lvbi5hZGREb3dubG9hZElEKG1fZG93bmxvYWRUYXNrLmdldCgpLnRhc2tJZGVudGlm
aWVyLCBtX2Rvd25sb2FkSUQpOworICAgIG1fZG93bmxvYWRUYXNrLmdldCgpLl9wYXRoVG9Eb3du
bG9hZFRhc2tGaWxlID0gcGF0aDsKKworICAgIFttX2Rvd25sb2FkVGFzayByZXN1bWVdOwogfQog
ICAgIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9hZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5oCmluZGV4IDViMTBhZjY3ZmRhLi41MGViYWQyNThlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgK
QEAgLTI3LDcgKzI3LDkgQEAKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAKK09CSkNfQ0xB
U1MgTlNEYXRhOwogT0JKQ19DTEFTUyBOU1VSTFNlc3Npb247CitPQkpDX0NMQVNTIE5TVVJMU2Vz
c2lvbkRvd25sb2FkVGFzazsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKIE9CSkNfQ0xB
U1MgV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlOwogCkBAIC01OCw2ICs2MCw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EqIGRhdGFUYXNrRm9ySWRlbnRpZmll
cihOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5KTsKKyAgICBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKmRvd25sb2Fk
VGFza1dpdGhSZXN1bWVEYXRhKE5TRGF0YSAqKTsKIAogICAgIHZvaWQgYWRkRG93bmxvYWRJRChO
ZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIERvd25sb2FkSUQpOwogICAgIERv
d25sb2FkSUQgZG93bmxvYWRJRChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGEzZWZjN2RkOGE2Li5jYzA4YWI0ZGY2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtMjcyLDYgKzI3MiwyMSBAQCBzdGF0aWMgV2ViQ29yZTo6TmV0d29y
a0xvYWRQcmlvcml0eSB0b05ldHdvcmtMb2FkUHJpb3JpdHkoZmxvYXQgcHJpb3JpdHkpCiAgICAg
ICAgIH07CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFs
bGVuZ2UsIFdURk1vdmUoY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9IGVsc2Ug
eworICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBfc2Vzc2lvbi0+ZG93bmxvYWRJRCh0YXNrLnRh
c2tJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGRvd25sb2FkSUQuZG93bmxvYWRJRCgpKSB7Cisg
ICAgICAgICAgICBpZiAoYXV0byogZG93bmxvYWQgPSBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
aW5nbGV0b24oKS5kb3dubG9hZE1hbmFnZXIoKS5kb3dubG9hZChkb3dubG9hZElEKSkgeworICAg
ICAgICAgICAgICAgIC8vIFJlY2VpdmVkIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSBmb3Ig
YSBkb3dubG9hZCBiZWluZyByZXN1bWVkLgorICAgICAgICAgICAgICAgIFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7Cisg
ICAgICAgICAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICAgICAgICAgICAgICBhdXRvIHNlc3Npb25JRCA9IF9zZXNz
aW9uLT5zZXNzaW9uSUQoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyQ29weSwgc2Vzc2lvbklELCBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZV0oV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
IGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weSh0b05TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50
aWFsKCkpOworICAgICAgICAgICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNvbXBsZXRpb25IYW5k
bGVyQ29weSk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBkb3dubG9hZC0+
ZGlkUmVjZWl2ZUNoYWxsZW5nZShjaGFsbGVuZ2UsIFdURk1vdmUoY2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBkaWRSZWNlaXZlQ2hhbGxl
bmdlIGNvbXBsZXRpb25IYW5kbGVyIChjYW5jZWwpIiwgdGFza0lkZW50aWZpZXIpOwogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UsIG5pbCk7CiAgICAgfQpAQCAtNjU5LDYgKzY3NCwxMSBAQCBOZXR3
b3JrRGF0YVRhc2tDb2NvYSogTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGF0YVRhc2tGb3JJZGVudGlm
aWVyKE5ldHdvcmtEYXRhVGFzawogICAgIHJldHVybiBtX2RhdGFUYXNrTWFwV2l0aG91dFN0YXRl
LmdldCh0YXNrSWRlbnRpZmllcik7CiB9CiAKK05TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqTmV0
d29ya1Nlc3Npb25Db2NvYTo6ZG93bmxvYWRUYXNrV2l0aFJlc3VtZURhdGEoTlNEYXRhICpyZXN1
bWVEYXRhKQoreworICAgIHJldHVybiBbbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlIGRv
d25sb2FkVGFza1dpdGhSZXN1bWVEYXRhOnJlc3VtZURhdGFdOworfQorCiB2b2lkIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OmFkZERvd25sb2FkSUQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVu
dGlmaWVyIHRhc2tJZGVudGlmaWVyLCBEb3dubG9hZElEIGRvd25sb2FkSUQpCiB7CiAjaWZuZGVm
IE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMDMyMDI5ZWU4ZjIuLjMwZTcy
MDlmMmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2
b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKHVpbnQ2NF90IHBhZ2VJRCwgdQogICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocGFnZUlE
LCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KIAot
dm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShQZW5kaW5nRG93bmxvYWQmIHBlbmRpbmdEb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6Ok1lc3NhZ2VT
ZW5kZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3QgZHVtbXlQYWdlSUQgPSAwOwogICAgIHVp
bnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoeyBkdW1teVBh
Z2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
IH0pOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGVuZGluZ0Rvd25sb2FkJiBwCiAgICAgaWYg
KHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKGR1bW15UGFnZUlELCBjaGFsbGVuZ2VJRCwgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcGVuZGluZ0Rv
d25sb2FkLnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKKyAg
ICBkb3dubG9hZC5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7
CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAppbmRleCA5ZWJlZmQ0NzBhZC4uZDY4
ZWY3NTkzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAorbmFtZXNw
YWNlIElQQyB7CitjbGFzcyBNZXNzYWdlU2VuZGVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKIGNsYXNzIENlcnRpZmljYXRlSW5mbzsK
QEAgLTQ1LDcgKzQ5LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBDaGlsZFByb2Nlc3M7
CiBjbGFzcyBEb3dubG9hZDsKIGNsYXNzIERvd25sb2FkSUQ7Ci1jbGFzcyBQZW5kaW5nRG93bmxv
YWQ7CiBjbGFzcyBXZWJGcmFtZTsKIAogZW51bSBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uIHsKQEAgLTY1LDcgKzY4LDcgQEAgcHVibGljOgogCiAjaWYgVVNFKE5FVFdP
UktfU0VTU0lPTikKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGVuZGluZ0Rvd25sb2FkJiwgY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJ
UEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogI2lmIFVTRShQUk9U
RUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJRCwgYm9vbCBjYW5BdXRoZW50aWNh
dGUpOwogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322600</attachid>
            <date>2017-10-03 15:55:56 -0700</date>
            <delta_ts>2017-10-04 14:07:05 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>177625_download_resuming_wip.patch</filename>
            <type>text/plain</type>
            <size>14255</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
LmNwcAppbmRleCA3MzEyZjcyNTJlNS4uZDA5NDA5ZmViNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKQEAgLTM0LDEwICsz
NCwxNiBAQAogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJv
eEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2lu
Y2x1ZGUgIk5ldHdvcmtEYXRhVGFza0NvY29hLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVM
RUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIERv
d25sb2FkOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKQEAgLTE0Niw2ICsxNTIsNDEgQEAg
dm9pZCBEb3dubG9hZDo6Y2FuY2VsKCkKICAgICBwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKCk7
CiB9CiAKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQordm9pZCBEb3dubG9hZDo6ZGlkUmVjZWl2
ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxl
bmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGlmIChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlKCkuaXNQYXNzd29yZEJhc2VkKCkgJiYg
IWNoYWxsZW5nZS5wcm9wb3NlZENyZWRlbnRpYWwoKS5pc0VtcHR5KCkgJiYgIWNoYWxsZW5nZS5w
cmV2aW91c0ZhaWx1cmVDb3VudCgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIGNoYWxsZW5nZS5w
cm9wb3NlZENyZWRlbnRpYWwoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBVU0Uo
UFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorICAgIG1fY2hhbGxlbmdlID0gY2hhbGxl
bmdlOworICAgIG1fY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpDYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKSkp
OworI2Vsc2UKKyAgICBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuYXV0aGVudGljYXRpb25N
YW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBjaGFsbGVu
Z2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbmRpZgorfQorCisjaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKK3ZvaWQgRG93bmxvYWQ6OmNvbnRpbnVlQ2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIGNhbkF1dGhlbnRpY2F0ZSkK
K3sKKyAgICBBU1NFUlQobV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcik7CisgICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IHN0ZDo6ZXhjaGFuZ2UobV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciwgbnVsbHB0cik7CisgICAgaWYgKCFjYW5BdXRoZW50aWNhdGUpIHsKKyAgICAgICAgaWYg
KE5ldHdvcmtTZXNzaW9uOjphbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KCpt
X2NoYWxsZW5nZSkpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBzZXJ2ZXJUcnVzdENyZWRlbnRp
YWwoKm1fY2hhbGxlbmdlKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rp
b25TcGFjZSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5ldHdvcmtQcm9j
ZXNzOjpzaW5nbGV0b24oKS5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoKnRoaXMsICptX2NoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorI2VuZGlmIC8vIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJB
Q0spCisjZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikKKwogI2lmICFVU0UoTkVUV09SS19T
RVNTSU9OKQogdm9pZCBEb3dubG9hZDo6ZGlkU3RhcnQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKaW5kZXggYzM3OWJjYWY4ZTcu
LmIwMmQ3ZDZiZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorI2luY2x1ZGUgIk5ldHdvcmtEYXRh
VGFzay5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNp
ZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwog
I2VuZGlmCkBAIC0xMDEsNiArMTAzLDEwIEBAIHB1YmxpYzoKIAogI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCiAgICAgdm9pZCBzZXRTYW5kYm94RXh0ZW5zaW9uKFJlZlB0cjxTYW5kYm94RXh0ZW5z
aW9uPiYmIHNhbmRib3hFeHRlbnNpb24pIHsgbV9zYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZShz
YW5kYm94RXh0ZW5zaW9uKTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyJiYpOworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAgdm9p
ZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5B
dXRoZW50aWNhdGUpOworI2VuZGlmCiAjZWxzZQogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQogICAgIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJik7CkBAIC0xNDYsNiArMTUyLDEwIEBAIHByaXZhdGU6CiAgICAgUmV0
YWluUHRyPE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzaz4gbV9kb3dubG9hZFRhc2s7CiAjZW5kaWYK
ICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFD
RV9BVVRIX0NBTExCQUNLKQorICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2U+IG1fY2hhbGxlbmdlOworICAgIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
IG1fY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXI7CisjZW5kaWYKICNlbHNlIC8vIFVTRShORVRX
T1JLX1NFU1NJT04pCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAg
ICBTdHJpbmcgbV9yZXNwb25zZU1JTUVUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggYTY2
Yzk5NmFlNmUuLmQ4MjhlNmMzOGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTg5LDEwICs4
OSwxNSBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2so
RG93bmxvYWRJRCBkb3dubG9hZElELCBzdGQ6OnVuaQogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNF
X0FVVEhfQ0FMTEJBQ0spCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVDYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQgZG93bmxvYWRJRCwgYm9vbCBj
YW5BdXRoZW50aWNhdGUpCiB7Ci0gICAgYXV0byogcGVuZGluZ0Rvd25sb2FkID0gbV9wZW5kaW5n
RG93bmxvYWRzLmdldChkb3dubG9hZElEKTsKLSAgICBBU1NFUlQocGVuZGluZ0Rvd25sb2FkKTsK
LSAgICBpZiAocGVuZGluZ0Rvd25sb2FkKQorICAgIGlmIChhdXRvKiBwZW5kaW5nRG93bmxvYWQg
PSBtX3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpKSB7CiAgICAgICAgIHBlbmRpbmdE
b3dubG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNh
bkF1dGhlbnRpY2F0ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGF1dG8qIGRv
d25sb2FkID0gbV9kb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpKSB7CisgICAgICAgIGRvd25sb2Fk
LT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2FuQXV0aGVu
dGljYXRlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KICNlbmRpZgogCkBAIC0xNjIsMTMgKzE2NywxNyBAQCB2b2lkIERvd25sb2FkTWFuYWdl
cjo6Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElEIGRv
d25sbwogI2VuZGlmCiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQ
QUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZE1hbmFn
ZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBk
b3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKQogewotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisjaWYgVVNFKE5FVFdPUktf
U0VTU0lPTikgJiYgIVBMQVRGT1JNKENPQ09BKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZWxz
ZQorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCisgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFr
ZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCBzZXNzaW9uSUQp
OworI2Vsc2UKICAgICAvLyBEb3dubG9hZDo6cmVzdW1lKCkgaXMgcmVzcG9uc2libGUgZm9yIHNl
dHRpbmcgdGhlIERvd25sb2FkJ3MgcmVzb3VyY2UgcmVxdWVzdC4KICAgICBhdXRvIGRvd25sb2Fk
ID0gc3RkOjptYWtlX3VuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIFJlc291cmNl
UmVxdWVzdCgpKTsKKyNlbmRpZgogCiAgICAgZG93bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBw
YXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNv
bnRhaW5zKGRvd25sb2FkSUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCmluZGV4IDg2OGUx
MTk3YzhhLi5hNDg2NWFjYTUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCkBAIC0yOSwx
MyArMjksMzYgQEAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogCiAjaW1wb3J0ICJEYXRhUmVm
ZXJlbmNlLmgiCi0jaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW1wb3J0ICJO
ZXR3b3JrU2Vzc2lvbkNvY29hLmgiCisjaW1wb3J0ICJTZXNzaW9uVHJhY2tlci5oIgorI2ltcG9y
dCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZv
aWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEs
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9zYW5k
Ym94RXh0ZW5zaW9uID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlKHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpOworICAgIGlmIChtX3NhbmRib3hFeHRlbnNpb24pCisgICAgICAgIG1fc2FuZGJveEV4
dGVuc2lvbi0+Y29uc3VtZSgpOworCisgICAgYXV0byogbmV0d29ya1Nlc3Npb24gPSBTZXNzaW9u
VHJhY2tlcjo6bmV0d29ya1Nlc3Npb24obV9zZXNzaW9uSUQpOworICAgIGlmICghbmV0d29ya1Nl
c3Npb24pIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDb3VsZCBub3QgZmluZCBuZXR3b3JrIHNl
c3Npb24gd2l0aCBnaXZlbiBzZXNzaW9uSUQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBhdXRvJiBjb2NvYVNlc3Npb24gPSBzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4o
Km5ldHdvcmtTZXNzaW9uKTsKKyAgICBhdXRvIG5zRGF0YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxs
b2NdIGluaXRXaXRoQnl0ZXM6cmVzdW1lRGF0YS5kYXRhKCkgbGVuZ3RoOnJlc3VtZURhdGEuc2l6
ZSgpXSk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIGZv
ciA8cmRhcjovL3Byb2JsZW0vMzQ3NDUxNzE+LgorICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRp
Y3Rpb25hcnkgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhE
YXRhOm5zRGF0YS5nZXQoKSBvcHRpb25zOk5TUHJvcGVydHlMaXN0SW1tdXRhYmxlIGZvcm1hdDow
IGVycm9yOk5VTExdOworICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDooTlNTdHJpbmcgKilwYXRo
IGZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUluZm9Mb2NhbFBhdGgiXTsKKyAgICBOU0RhdGEg
KnVwZGF0ZWREYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3Bl
cnR5TGlzdDpkaWN0aW9uYXJ5IGZvcm1hdDpOU1Byb3BlcnR5TGlzdFhNTEZvcm1hdF92MV8wIG9w
dGlvbnM6MCBlcnJvcjpOVUxMXTsKKworICAgIG1fZG93bmxvYWRUYXNrID0gY29jb2FTZXNzaW9u
LmRvd25sb2FkVGFza1dpdGhSZXN1bWVEYXRhKHVwZGF0ZWREYXRhKTsKKyAgICBjb2NvYVNlc3Np
b24uYWRkRG93bmxvYWRJRChtX2Rvd25sb2FkVGFzay5nZXQoKS50YXNrSWRlbnRpZmllciwgbV9k
b3dubG9hZElEKTsKKyAgICBtX2Rvd25sb2FkVGFzay5nZXQoKS5fcGF0aFRvRG93bmxvYWRUYXNr
RmlsZSA9IHBhdGg7CisKKyAgICBbbV9kb3dubG9hZFRhc2sgcmVzdW1lXTsKIH0KICAgICAKIHZv
aWQgRG93bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApp
bmRleCA1YjEwYWY2N2ZkYS4uNTBlYmFkMjU4ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCkBAIC0yNyw3
ICsyNyw5IEBACiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogCitPQkpDX0NMQVNTIE5TRGF0
YTsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uOworT0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Eb3du
bG9hZFRhc2s7CiBPQkpDX0NMQVNTIE5TT3BlcmF0aW9uUXVldWU7CiBPQkpDX0NMQVNTIFdLTmV0
d29ya1Nlc3Npb25EZWxlZ2F0ZTsKIApAQCAtNTgsNiArNjAsNyBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKiBkYXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29y
a0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSk7CisgICAgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrICpkb3dubG9hZFRhc2tXaXRo
UmVzdW1lRGF0YShOU0RhdGEgKik7CiAKICAgICB2b2lkIGFkZERvd25sb2FkSUQoTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBEb3dubG9hZElEKTsKICAgICBEb3dubG9hZElE
IGRvd25sb2FkSUQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQppbmRleCBhM2VmYzdkZDhhNi4uY2MwOGFiNGRmNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0KQEAgLTI3Miw2ICsyNzIsMjEgQEAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtMb2FkUHJp
b3JpdHkgdG9OZXR3b3JrTG9hZFByaW9yaXR5KGZsb2F0IHByaW9yaXR5KQogICAgICAgICB9Owog
ICAgICAgICBuZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBX
VEZNb3ZlKGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSBlbHNlIHsKKyAgICAg
ICAgYXV0byBkb3dubG9hZElEID0gX3Nlc3Npb24tPmRvd25sb2FkSUQodGFzay50YXNrSWRlbnRp
Zmllcik7CisgICAgICAgIGlmIChkb3dubG9hZElELmRvd25sb2FkSUQoKSkgeworICAgICAgICAg
ICAgaWYgKGF1dG8qIGRvd25sb2FkID0gV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9u
KCkuZG93bmxvYWRNYW5hZ2VyKCkuZG93bmxvYWQoZG93bmxvYWRJRCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBSZWNlaXZlZCBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UgZm9yIGEgZG93bmxv
YWQgYmVpbmcgcmVzdW1lZC4KKyAgICAgICAgICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpOworICAgICAgICAg
ICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9u
SGFuZGxlcik7CisgICAgICAgICAgICAgICAgYXV0byBzZXNzaW9uSUQgPSBfc2Vzc2lvbi0+c2Vz
c2lvbklEKCk7CisgICAgICAgICAgICAgICAgYXV0byBjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciA9IFtjb21wbGV0aW9uSGFuZGxlckNvcHksIHNlc3Npb25JRCwgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2VdKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3Np
dGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkgeworICAgICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlRGlzcG9zaXRpb24oZGlzcG9zaXRpb24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgQmxvY2tfcmVsZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkp
OworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZFJlY2Vp
dmVDaGFsbGVuZ2UoY2hhbGxlbmdlLCBXVEZNb3ZlKGNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgZGlkUmVjZWl2ZUNoYWxsZW5nZSBjb21w
bGV0aW9uSGFuZGxlciAoY2FuY2VsKSIsIHRhc2tJZGVudGlmaWVyKTsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLCBuaWwpOwogICAgIH0KQEAgLTY1OSw2ICs2NzQsMTEgQEAgTmV0d29ya0RhdGFU
YXNrQ29jb2EqIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmRhdGFUYXNrRm9ySWRlbnRpZmllcihOZXR3
b3JrRGF0YVRhc2sKICAgICByZXR1cm4gbV9kYXRhVGFza01hcFdpdGhvdXRTdGF0ZS5nZXQodGFz
a0lkZW50aWZpZXIpOwogfQogCitOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKk5ldHdvcmtTZXNz
aW9uQ29jb2E6OmRvd25sb2FkVGFza1dpdGhSZXN1bWVEYXRhKE5TRGF0YSAqcmVzdW1lRGF0YSkK
K3sKKyAgICByZXR1cm4gW21fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZSBkb3dubG9hZFRh
c2tXaXRoUmVzdW1lRGF0YTpyZXN1bWVEYXRhXTsKK30KKwogdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjphZGREb3dubG9hZElEKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciB0
YXNrSWRlbnRpZmllciwgRG93bmxvYWRJRCBkb3dubG9hZElEKQogewogI2lmbmRlZiBOREVCVUcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDAzMjAyOWVlOGYyLi4zMGU3MjA5ZjJmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50
NjRfdCBwYWdlSUQsIHUKICAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHBhZ2VJRCwgZnJhbWVJ
RCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CiB9CiAKLXZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGVu
ZGluZ0Rvd25sb2FkJiBwZW5kaW5nRG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBk
b3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIHVpbnQ2NF90IGR1bW15UGFnZUlEID0gMDsKICAgICB1aW50NjRfdCBj
aGFsbGVuZ2VJRCA9IGFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFwKHsgZHVtbXlQYWdlSUQsIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KTsKQEAg
LTE1Myw3ICsxNTMsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRpbmdEb3dubG9hZCYgcAogICAgIGlmIChzaG91bGRD
b2FsZXNjZUNoYWxsZW5nZShkdW1teVBhZ2VJRCwgY2hhbGxlbmdlSUQsIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHBlbmRpbmdEb3dubG9hZC5z
ZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CisgICAgZG93bmxv
YWQuc2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCkpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKaW5kZXggOWViZWZkNDcwYWQuLmQ2OGVmNzU5MzQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKK25hbWVzcGFjZSBJUEMg
eworY2xhc3MgTWVzc2FnZVNlbmRlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CkBAIC00NSw3
ICs0OSw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQ2hpbGRQcm9jZXNzOwogY2xhc3Mg
RG93bmxvYWQ7CiBjbGFzcyBEb3dubG9hZElEOwotY2xhc3MgUGVuZGluZ0Rvd25sb2FkOwogY2xh
c3MgV2ViRnJhbWU7CiAKIGVudW0gY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbiB7CkBAIC02NSw3ICs2OCw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRpbmdEb3dubG9hZCYsIGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
Jik7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNz
YWdlU2VuZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICNpZiBVU0UoUFJPVEVDVElPTl9T
UEFDRV9BVVRIX0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKICNl
bmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322726</attachid>
            <date>2017-10-04 14:07:07 -0700</date>
            <delta_ts>2017-10-05 09:09:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177625-20171004140706.patch</filename>
            <type>text/plain</type>
            <size>16622</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdlZjAwNGU1OTBhZDZiMjFk
NjZlZjZkNjVmYzgwYTAyZmZhYjhlNmYuLjVjN2U0NDQzOTZlZDIyZDkwYjhmMjY1MTMzMjdkMTI0
ZjEzODEzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTctMTAtMDQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtOZXR3b3JrU2Vzc2lvbl0g
QWRkIHN1cHBvcnQgZm9yIHJlc3VtaW5nIGRvd25sb2FkcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zNDM0NTk3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgcmVzdW1pbmcgZG93bmxvYWRzIGZvciB0aGUgV0syIE5FVFdP
UktfU0VTU0lPTiBjb2RlIHBhdGguCisKKyAgICAgICAgVGhpcyB3YXMgdGVzdGVkIG1hbnVhbGx5
LiBJIHdhcyB1bmFibGUgdG8gd3JpdGUgYW4gQVBJIHRlc3QgYmVjYXVzZSBvdXIgdGVzdHMKKyAg
ICAgICAgZG8gbm90IHJ1biBhbiBIVFRQIHNlcnZlciBhbmQgQ0ZOZXR3b3JrIGRvZXMgbm90IHNl
ZW0gdG8gZ2VuZXJhdGUgcmVzdW1lIGRhdGEKKyAgICAgICAgd2hlbiBjYW5jZWxsaW5nIGFuIGRv
d25sb2FkIG92ZXIgbm9uLUhUVFAuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6ZGlkUmVjZWl2ZUNo
YWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZE1hbmFnZXI6OmNv
bnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRl
IFVSTFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkb3dubG9hZFRhc2tXaXRo
UmVzdW1lRGF0YSk6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBTaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmg6CisKIDIwMTctMTAtMDMgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggQVBJ
IHRlc3RzIGFmdGVyIHIyMjI3OTQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKaW5kZXggNzMxMmY3MjUyZTU5OTcyYjk3ZDNjMTMx
NTI4MDI5ZmJhOGE5NjFjMS4uZDA5NDA5ZmViNzgwZDU3ZTEzYzlkYmRjNWQ1OThjZmYxODM0YmE5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkLmNwcApAQCAtMzQsMTAgKzM0LDE2IEBACiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFz
ay5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Np
b24uaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisj
aWYgUExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrQ29jb2EuaCIKKyNl
bmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI2RlZmluZSBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgTmV0d29yaywgIiVwIC0gRG93bmxvYWQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19f
KQpAQCAtMTQ2LDYgKzE1Miw0MSBAQCB2b2lkIERvd25sb2FkOjpjYW5jZWwoKQogICAgIHBsYXRm
b3JtQ2FuY2VsTmV0d29ya0xvYWQoKTsKIH0KIAorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCit2
b2lkIERvd25sb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uo
KS5pc1Bhc3N3b3JkQmFzZWQoKSAmJiAhY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmlz
RW1wdHkoKSAmJiAhY2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNl
Q3JlZGVudGlhbCwgY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisg
ICAgbV9jaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7CisgICAgbV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OkRv
d25sb2FkUHJveHk6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZSgpKSk7CisjZWxzZQorICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5n
bGV0b24oKS5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKnRoaXMsIGNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwor
I2VuZGlmCit9CisKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQordm9p
ZCBEb3dubG9hZDo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KGJvb2wgY2FuQXV0aGVudGljYXRlKQoreworICAgIEFTU0VSVChtX2NoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZSht
X2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAgICBpZiAoIWNhbkF1dGhl
bnRpY2F0ZSkgeworICAgICAgICBpZiAoTmV0d29ya1Nlc3Npb246OmFsbG93c1NwZWNpZmljSFRU
UFNDZXJ0aWZpY2F0ZUZvckhvc3QoKm1fY2hhbGxlbmdlKSkKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRp
YWwsIHNlcnZlclRydXN0Q3JlZGVudGlhbCgqbV9jaGFsbGVuZ2UpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlLCB7IH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFu
YWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgKm1fY2hhbGxl
bmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisjZW5kaWYgLy8gVVNFKFBST1RF
Q1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9O
KQorCiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIERvd25sb2FkOjpkaWRTdGFydCgp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuaAppbmRleCBjMzc5YmNhZjhlNzk1ZDA3M2Y2YjBiOGMzNzM0YzMxZjBhMjY4ZWUwLi5iMDJk
N2Q2YmY0NDVkYTRhYTZiNzliNzY1OGRjMTRhMzViYzdiN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTM4LDYgKzM4LDgg
QEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9O
KQorI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaD4KICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNV
UkxTZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlmCkBAIC0xMDEsNiArMTAzLDEwIEBAIHB1Ymxp
YzoKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBzZXRTYW5kYm94RXh0ZW5z
aW9uKFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNpb24pIHsgbV9zYW5k
Ym94RXh0ZW5zaW9uID0gV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKTsgfQorICAgIHZvaWQgZGlk
UmVjZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNF
X0FVVEhfQ0FMTEJBQ0spCisgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpOworI2VuZGlmCiAjZWxzZQogICAg
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVxdWVzdDsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkBAIC0xNDYsNiArMTUy
LDEwIEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzaz4g
bV9kb3dubG9hZFRhc2s7CiAjZW5kaWYKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
KyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorICAgIHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IG1fY2hhbGxlbmdlOworICAgIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIG1fY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXI7Cisj
ZW5kaWYKICNlbHNlIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBTdHJpbmcgbV9yZXNwb25zZU1JTUVUeXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5jcHAKaW5kZXggYTY2Yzk5NmFlNmU1YzdkZDg4YTQ5Yzk1NWE1ZWZjNjZjYjM0
MGQyZi4uZDgyOGU2YzM4Yzk2ZjdkNzkyYTEyMmVkODUwNTEzYzU5OTZiZjEyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCkBAIC04OSwxMCArODksMTUgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRh
dGFUYXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmkK
ICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogdm9pZCBEb3dubG9hZE1h
bmFnZXI6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb3du
bG9hZElEIGRvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKQogewotICAgIGF1dG8qIHBl
bmRpbmdEb3dubG9hZCA9IG1fcGVuZGluZ0Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCk7Ci0gICAg
QVNTRVJUKHBlbmRpbmdEb3dubG9hZCk7Ci0gICAgaWYgKHBlbmRpbmdEb3dubG9hZCkKKyAgICBp
ZiAoYXV0byogcGVuZGluZ0Rvd25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRzLmdldChkb3dubG9h
ZElEKSkgewogICAgICAgICBwZW5kaW5nRG93bmxvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChhdXRvKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChkb3dubG9h
ZElEKSkgeworICAgICAgICBkb3dubG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAjZW5kaWYKIApAQCAtMTYyLDEzICsxNjcs
MTcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2Fk
RGVzdGluYXRpb24oRG93bmxvYWRJRCBkb3dubG8KICNlbmRpZgogfQogCi12b2lkIERvd25sb2Fk
TWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxv
YWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKLSNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmICFQTEFURk9STShDT0NPQSkKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogI2Vsc2UKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorICAg
IGF1dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxv
YWRJRCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsKKyNlbHNlCiAgICAgLy8gRG93bmxvYWQ6OnJlc3Vt
ZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoZSBEb3dubG9hZCdzIHJlc291cmNlIHJl
cXVlc3QuCiAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0
aGlzLCBkb3dubG9hZElELCBSZXNvdXJjZVJlcXVlc3QoKSk7CisjZW5kaWYKIAogICAgIGRvd25s
b2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAg
ICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93
bmxvYWRDb2NvYS5tbQppbmRleCA4NjhlMTE5N2M4YTI0ZmUyZTlmYjFlMzUwMjRhOWRhYzU2ZjFm
NGFhLi5hNDg2NWFjYTUyYmIwY2M0NzZkZmZlNmMyNDJlYWMzODgzMmY1OGRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29h
L0Rvd25sb2FkQ29jb2EubW0KQEAgLTI5LDEzICsyOSwzNiBAQAogI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCiAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KKyNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKKyNpbXBvcnQg
IlNlc3Npb25UcmFja2VyLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKG1fc2FuZGJveEV4dGVu
c2lvbikKKyAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CisKKyAgICBhdXRv
KiBuZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihtX3Nlc3Np
b25JRCk7CisgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikgeworICAgICAgICBXVEZMb2dBbHdheXMo
IkNvdWxkIG5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiB3aXRoIGdpdmVuIHNlc3Npb25JRCIpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGF1dG8mIGNvY29hU2Vzc2lvbiA9IHN0YXRpY19j
YXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPigqbmV0d29ya1Nlc3Npb24pOworICAgIGF1dG8gbnNE
YXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpyZXN1bWVEYXRhLmRh
dGEoKSBsZW5ndGg6cmVzdW1lRGF0YS5zaXplKCldKTsKKworICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGEgdGVtcG9yYXJ5IHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8zNDc0NTE3MT4uCisg
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlh
bGl6YXRpb24gcHJvcGVydHlMaXN0V2l0aERhdGE6bnNEYXRhLmdldCgpIG9wdGlvbnM6TlNQcm9w
ZXJ0eUxpc3RJbW11dGFibGUgZm9ybWF0OjAgZXJyb3I6TlVMTF07CisgICAgW2RpY3Rpb25hcnkg
c2V0T2JqZWN0OihOU1N0cmluZyAqKXBhdGggZm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5m
b0xvY2FsUGF0aCJdOworICAgIE5TRGF0YSAqdXBkYXRlZERhdGEgPSBbTlNQcm9wZXJ0eUxpc3RT
ZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0OmRpY3Rpb25hcnkgZm9ybWF0Ok5TUHJv
cGVydHlMaXN0WE1MRm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOk5VTExdOworCisgICAgbV9k
b3dubG9hZFRhc2sgPSBjb2NvYVNlc3Npb24uZG93bmxvYWRUYXNrV2l0aFJlc3VtZURhdGEodXBk
YXRlZERhdGEpOworICAgIGNvY29hU2Vzc2lvbi5hZGREb3dubG9hZElEKG1fZG93bmxvYWRUYXNr
LmdldCgpLnRhc2tJZGVudGlmaWVyLCBtX2Rvd25sb2FkSUQpOworICAgIG1fZG93bmxvYWRUYXNr
LmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlID0gcGF0aDsKKworICAgIFttX2Rvd25sb2Fk
VGFzayByZXN1bWVdOwogfQogICAgIAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3
b3JrTG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCmluZGV4IDViMTBhZjY3ZmRhYzYxMDU5N2NjNmRkYmNk
Mjg0NTRmNzI2NGU2NDMuLjUwZWJhZDI1OGVhYTY3OGRiZDYwZjBjZTM0MWExODg5OGE3YWNiZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5oCkBAIC0yNyw3ICsyNyw5IEBACiAKICNpZiBVU0UoTkVUV09SS19T
RVNTSU9OKQogCitPQkpDX0NMQVNTIE5TRGF0YTsKIE9CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uOwor
T0JKQ19DTEFTUyBOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2s7CiBPQkpDX0NMQVNTIE5TT3BlcmF0
aW9uUXVldWU7CiBPQkpDX0NMQVNTIFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZTsKIApAQCAtNTgs
NiArNjAsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKiBk
YXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVy
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgTlNVUkxTZXNzaW9uRG93
bmxvYWRUYXNrICpkb3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YShOU0RhdGEgKik7CiAKICAgICB2
b2lkIGFkZERvd25sb2FkSUQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBE
b3dubG9hZElEKTsKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoTmV0d29ya0RhdGFUYXNrQ29j
b2E6OlRhc2tJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBhM2VmYzdkZDhhNjBi
ZmY3ODQyOWNjMWEzMjA0YjUyZjFmN2U3YjQ3Li5jYzA4YWI0ZGY2MGQwY2Q0MzBjZDg1MWMwZmZm
YmRiYWUwY2ZlNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNzIsNiArMjcyLDIxIEBAIHN0
YXRpYyBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5IHRvTmV0d29ya0xvYWRQcmlvcml0eShm
bG9hdCBwcmlvcml0eSkKICAgICAgICAgfTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRS
ZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgV1RGTW92ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IF9zZXNzaW9u
LT5kb3dubG9hZElEKHRhc2sudGFza0lkZW50aWZpZXIpOworICAgICAgICBpZiAoZG93bmxvYWRJ
RC5kb3dubG9hZElEKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBkb3dubG9hZCA9IFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFuYWdlcigpLmRvd25sb2Fk
KGRvd25sb2FkSUQpKSB7CisgICAgICAgICAgICAgICAgLy8gUmVjZWl2ZWQgYW4gYXV0aGVudGlj
YXRpb24gY2hhbGxlbmdlIGZvciBhIGRvd25sb2FkIGJlaW5nIHJlc3VtZWQuCisgICAgICAgICAg
ICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY2hhbGxlbmdlKTsKKyAgICAgICAgICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVy
Q29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOworICAgICAgICAgICAgICAgIGF1
dG8gc2Vzc2lvbklEID0gX3Nlc3Npb24tPnNlc3Npb25JRCgpOworICAgICAgICAgICAgICAgIGF1
dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXJDb3B5LCBz
ZXNzaW9uSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlXShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRp
YWwmIGNyZWRlbnRpYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJD
b3B5KHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwg
Y3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7CisgICAgICAgICAgICAgICAgICAgIEJsb2NrX3Jl
bGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKKyAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgV1RGTW92
ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIl
bGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXIgKGNhbmNlbCkiLCB0YXNr
SWRlbnRpZmllcik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKICAgICB9CkBAIC02
NTksNiArNjc0LDExIEBAIE5ldHdvcmtEYXRhVGFza0NvY29hKiBOZXR3b3JrU2Vzc2lvbkNvY29h
OjpkYXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNrCiAgICAgcmV0dXJuIG1fZGF0
YVRhc2tNYXBXaXRob3V0U3RhdGUuZ2V0KHRhc2tJZGVudGlmaWVyKTsKIH0KIAorTlNVUkxTZXNz
aW9uRG93bmxvYWRUYXNrICpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkb3dubG9hZFRhc2tXaXRoUmVz
dW1lRGF0YShOU0RhdGEgKnJlc3VtZURhdGEpCit7CisgICAgcmV0dXJuIFttX3Nlc3Npb25XaXRo
Q3JlZGVudGlhbFN0b3JhZ2UgZG93bmxvYWRUYXNrV2l0aFJlc3VtZURhdGE6cmVzdW1lRGF0YV07
Cit9CisKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWRkRG93bmxvYWRJRChOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIERvd25sb2FkSUQgZG93
bmxvYWRJRCkKIHsKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAppbmRl
eCAwMzIwMjllZThmMmQyNjBiY2JlNjEwM2QzY2MwZGE5Nzk4ZDQ2ZGE4Li4zMGU3MjA5ZjJmZjc1
YzhhOTgyY2Y4MzRlMDk1YzIwYTQ1NDE0ODUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAK
QEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdQogICAgIG1fcHJvY2Vz
cy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UocGFnZUlELCBmcmFtZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
Y2hhbGxlbmdlSUQpKTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQZW5kaW5nRG93bmxvYWQmIHBlbmRpbmdEb3dubG9h
ZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgdWludDY0X3QgZHVt
bXlQYWdlSUQgPSAwOwogICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9D
aGFsbGVuZ2VNYXAoeyBkdW1teVBhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgQXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGVuZGlu
Z0Rvd25sb2FkJiBwCiAgICAgaWYgKHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKGR1bW15UGFnZUlE
LCBjaGFsbGVuZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgcGVuZGluZ0Rvd25sb2FkLnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6
OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSwgY2hhbGxlbmdlSUQpKTsKKyAgICBkb3dubG9hZC5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFBy
b3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsIGNoYWxsZW5nZUlEKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApp
bmRleCA5ZWJlZmQ0NzBhZDgxYzEwODhhNWVhYmY0MTM2NDBjMTkyOGI1OGU1Li5kNjhlZjc1OTM0
NDJjODFhYjFiNjNmMzJmNjI0OWJjODNjNGJlMTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApA
QCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgTWVzc2FnZVNlbmRlcjsKK30K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBj
bGFzcyBDZXJ0aWZpY2F0ZUluZm87CkBAIC00NSw3ICs0OSw2IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgQ2hpbGRQcm9jZXNzOwogY2xhc3MgRG93bmxvYWQ7CiBjbGFzcyBEb3dubG9hZElE
OwotY2xhc3MgUGVuZGluZ0Rvd25sb2FkOwogY2xhc3MgV2ViRnJhbWU7CiAKIGVudW0gY2xhc3Mg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiB7CkBAIC02NSw3ICs2OCw3IEBAIHB1
YmxpYzoKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFBlbmRpbmdEb3dubG9hZCYsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmKTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgIHZv
aWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2Fk
SUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322842</attachid>
            <date>2017-10-05 09:09:44 -0700</date>
            <delta_ts>2017-10-16 13:29:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177625-20171005090943.patch</filename>
            <type>text/plain</type>
            <size>16925</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYwODc5YzUxYmExZDM4NzVi
NjEwMjZkMmU0ZDk3MmEzNjRlYWVlZjMuLjQ5MmIxM2FmZmM1MjI2MjVkNDVhMThkMzgxY2JiY2Q2
ZjA1MmI5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTctMTAtMDQgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtOZXR3b3JrU2Vzc2lvbl0g
QWRkIHN1cHBvcnQgZm9yIHJlc3VtaW5nIGRvd25sb2FkcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NjI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zNDM0NTk3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgcmVzdW1pbmcgZG93bmxvYWRzIGZvciB0aGUgV0syIE5FVFdP
UktfU0VTU0lPTiBjb2RlIHBhdGguCisKKyAgICAgICAgVGhpcyB3YXMgdGVzdGVkIG1hbnVhbGx5
LiBJIHdhcyB1bmFibGUgdG8gd3JpdGUgYW4gQVBJIHRlc3QgYmVjYXVzZSBvdXIgdGVzdHMKKyAg
ICAgICAgZG8gbm90IHJ1biBhbiBIVFRQIHNlcnZlciBhbmQgQ0ZOZXR3b3JrIGRvZXMgbm90IHNl
ZW0gdG8gZ2VuZXJhdGUgcmVzdW1lIGRhdGEKKyAgICAgICAgd2hlbiBjYW5jZWxsaW5nIGEgZG93
bmxvYWQgb3ZlciBub24tSFRUUC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpkaWRSZWNlaXZlQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OmNvbnRpbnVlQ2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFuYWdlcjo6Y29u
dGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkOjpyZXN1bWUpOgorICAgICAgICBUaGlzIGN1cnJlbnRseSBpbmNsdWRlcyBh
IHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS8zNDc0NTE3MT4uIFdlIHVwZGF0ZSB0aGUK
KyAgICAgICAgcmVzdW1lIGRhdGEgdG8gaW5jbHVkZSB0aGUgTlNVUkxTZXNzaW9uUmVzdW1lSW5m
b0xvY2FsUGF0aCBrZXkgd2l0aCB0aGUgZmluYWwKKyAgICAgICAgZGVzdGluYXRpb24gcGF0aCBz
byB0aGF0IENGTmV0d29yayBsb29rcyBmb3IgdGhlIHRlbXBvcmFyeSBkYXRhIGF0IHRoZSByaWdo
dAorICAgICAgICBsb2NhdGlvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUg
VVJMU2Vzc2lvbjp0YXNrOmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmRvd25sb2FkVGFza1dpdGhS
ZXN1bWVEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXV0aGVudGljYXRpb25NYW5hZ2VyOjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFNoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaDoKKwogMjAxNy0xMC0wNSAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBMaWJXZWJSVENQcm92
aWRlciBwb3J0IGFnbm9zdGljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAKaW5kZXggNzMxMmY3MjUyZTU5OTcyYjk3ZDNjMTMxNTI4
MDI5ZmJhOGE5NjFjMS4uZDA5NDA5ZmViNzgwZDU3ZTEzYzlkYmRjNWQ1OThjZmYxODM0YmE5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkLmNwcApAQCAtMzQsMTAgKzM0LDE2IEBACiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5o
IgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24u
aCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCisjaWYg
UExBVEZPUk0oQ09DT0EpCisjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrQ29jb2EuaCIKKyNlbmRp
ZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSwgTmV0d29yaywgIiVwIC0gRG93bmxvYWQ6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQpA
QCAtMTQ2LDYgKzE1Miw0MSBAQCB2b2lkIERvd25sb2FkOjpjYW5jZWwoKQogICAgIHBsYXRmb3Jt
Q2FuY2VsTmV0d29ya0xvYWQoKTsKIH0KIAorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCit2b2lk
IERvd25sb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UoKS5p
c1Bhc3N3b3JkQmFzZWQoKSAmJiAhY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpLmlzRW1w
dHkoKSAmJiAhY2hhbGxlbmdlLnByZXZpb3VzRmFpbHVyZUNvdW50KCkpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3Jl
ZGVudGlhbCwgY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCisgICAg
bV9jaGFsbGVuZ2UgPSBjaGFsbGVuZ2U7CisgICAgbV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOworICAgIHNlbmQoTWVzc2FnZXM6OkRvd25s
b2FkUHJveHk6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZSgpKSk7CisjZWxzZQorICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0
b24oKS5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoKnRoaXMsIGNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworI2Vu
ZGlmCit9CisKKyNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQordm9pZCBE
b3dubG9hZDo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJv
b2wgY2FuQXV0aGVudGljYXRlKQoreworICAgIEFTU0VSVChtX2NoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyKTsKKyAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2No
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyLCBudWxscHRyKTsKKyAgICBpZiAoIWNhbkF1dGhlbnRp
Y2F0ZSkgeworICAgICAgICBpZiAoTmV0d29ya1Nlc3Npb246OmFsbG93c1NwZWNpZmljSFRUUFND
ZXJ0aWZpY2F0ZUZvckhvc3QoKm1fY2hhbGxlbmdlKSkKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWws
IHNlcnZlclRydXN0Q3JlZGVudGlhbCgqbV9jaGFsbGVuZ2UpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlLCB7IH0pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgTmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdl
cigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgKm1fY2hhbGxlbmdl
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisjZW5kaWYgLy8gVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKKyNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQor
CiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIERvd25sb2FkOjpkaWRTdGFydCgpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
aAppbmRleCBjMzc5YmNhZjhlNzk1ZDA3M2Y2YjBiOGMzNzM0YzMxZjBhMjY4ZWUwLi5iMDJkN2Q2
YmY0NDVkYTRhYTZiNzliNzY1OGRjMTRhMzViYzdiN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgKQEAgLTM4LDYgKzM4LDggQEAK
ICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQor
I2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UuaD4KICNpZiBQTEFURk9STShDT0NPQSkKIE9CSkNfQ0xBU1MgTlNVUkxT
ZXNzaW9uRG93bmxvYWRUYXNrOwogI2VuZGlmCkBAIC0xMDEsNiArMTAzLDEwIEBAIHB1YmxpYzoK
IAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBzZXRTYW5kYm94RXh0ZW5zaW9u
KFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiYmIHNhbmRib3hFeHRlbnNpb24pIHsgbV9zYW5kYm94
RXh0ZW5zaW9uID0gV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uKTsgfQorICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FV
VEhfQ0FMTEJBQ0spCisgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpOworI2VuZGlmCiAjZWxzZQogICAgIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWVzdDsgfQogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CkBAIC0xNDYsNiArMTUyLDEw
IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzaz4gbV9k
b3dubG9hZFRhc2s7CiAjZW5kaWYKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKKyNp
ZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQorICAgIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2U+IG1fY2hhbGxlbmdlOworICAgIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyIG1fY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXI7CisjZW5k
aWYKICNlbHNlIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBTdHJpbmcgbV9yZXNwb25zZU1JTUVUeXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5jcHAKaW5kZXggYTY2Yzk5NmFlNmU1YzdkZDg4YTQ5Yzk1NWE1ZWZjNjZjYjM0MGQy
Zi4uZDgyOGU2YzM4Yzk2ZjdkNzkyYTEyMmVkODUwNTEzYzU5OTZiZjEyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuY3BwCkBAIC04OSwxMCArODksMTUgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRhdGFU
YXNrQmVjYW1lRG93bmxvYWRUYXNrKERvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RkOjp1bmkKICNp
ZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogdm9pZCBEb3dubG9hZE1hbmFn
ZXI6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb3dubG9h
ZElEIGRvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKQogewotICAgIGF1dG8qIHBlbmRp
bmdEb3dubG9hZCA9IG1fcGVuZGluZ0Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCk7Ci0gICAgQVNT
RVJUKHBlbmRpbmdEb3dubG9hZCk7Ci0gICAgaWYgKHBlbmRpbmdEb3dubG9hZCkKKyAgICBpZiAo
YXV0byogcGVuZGluZ0Rvd25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRzLmdldChkb3dubG9hZElE
KSkgewogICAgICAgICBwZW5kaW5nRG93bmxvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChhdXRvKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChkb3dubG9hZElE
KSkgeworICAgICAgICBkb3dubG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAjZW5kaWYKIApAQCAtMTYyLDEzICsxNjcsMTcg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVz
dGluYXRpb24oRG93bmxvYWRJRCBkb3dubG8KICNlbmRpZgogfQogCi12b2lkIERvd25sb2FkTWFu
YWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJ
RCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKIHsKLSNpZiBVU0UoTkVUV09SS19TRVNT
SU9OKQorI2lmIFVTRShORVRXT1JLX1NFU1NJT04pICYmICFQTEFURk9STShDT0NPQSkKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogI2Vsc2UKKyNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQorICAgIGF1
dG8gZG93bmxvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJ
RCwgbnVsbHB0ciwgc2Vzc2lvbklEKTsKKyNlbHNlCiAgICAgLy8gRG93bmxvYWQ6OnJlc3VtZSgp
IGlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHRoZSBEb3dubG9hZCdzIHJlc291cmNlIHJlcXVl
c3QuCiAgICAgYXV0byBkb3dubG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8RG93bmxvYWQ+KCp0aGlz
LCBkb3dubG9hZElELCBSZXNvdXJjZVJlcXVlc3QoKSk7CisjZW5kaWYKIAogICAgIGRvd25sb2Fk
LT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAgICAg
QVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxv
YWRDb2NvYS5tbQppbmRleCA4NjhlMTE5N2M4YTI0ZmUyZTlmYjFlMzUwMjRhOWRhYzU2ZjFmNGFh
Li5lMTBkZmEzMmMzMDg2NzMzMGU4OTU5OTMwODk2YmQ5ZjYzODQ4Y2NjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rv
d25sb2FkQ29jb2EubW0KQEAgLTI5LDEzICsyOSwzNiBAQAogI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCiAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKLSNpbXBvcnQgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKyNpbXBvcnQgIk5ldHdvcmtTZXNzaW9uQ29jb2EuaCIKKyNpbXBvcnQgIlNl
c3Npb25UcmFja2VyLmgiCisjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBtX3NhbmRib3hFeHRlbnNpb24gPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgaWYgKG1fc2FuZGJveEV4dGVuc2lv
bikKKyAgICAgICAgbV9zYW5kYm94RXh0ZW5zaW9uLT5jb25zdW1lKCk7CisKKyAgICBhdXRvKiBu
ZXR3b3JrU2Vzc2lvbiA9IFNlc3Npb25UcmFja2VyOjpuZXR3b3JrU2Vzc2lvbihtX3Nlc3Npb25J
RCk7CisgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNv
dWxkIG5vdCBmaW5kIG5ldHdvcmsgc2Vzc2lvbiB3aXRoIGdpdmVuIHNlc3Npb24gSUQiKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhdXRvJiBjb2NvYVNlc3Npb24gPSBzdGF0aWNfY2Fz
dDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oKm5ldHdvcmtTZXNzaW9uKTsKKyAgICBhdXRvIG5zRGF0
YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cmVzdW1lRGF0YS5kYXRh
KCkgbGVuZ3RoOnJlc3VtZURhdGEuc2l6ZSgpXSk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBh
IHRlbXBvcmFyeSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vMzQ3NDUxNzE+LgorICAg
IE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxp
emF0aW9uIHByb3BlcnR5TGlzdFdpdGhEYXRhOm5zRGF0YS5nZXQoKSBvcHRpb25zOk5TUHJvcGVy
dHlMaXN0SW1tdXRhYmxlIGZvcm1hdDowIGVycm9yOm51bGxwdHJdOworICAgIFtkaWN0aW9uYXJ5
IHNldE9iamVjdDpzdGF0aWNfY2FzdDxOU1N0cmluZyo+KHBhdGgpIGZvcktleTpAIk5TVVJMU2Vz
c2lvblJlc3VtZUluZm9Mb2NhbFBhdGgiXTsKKyAgICBOU0RhdGEgKnVwZGF0ZWREYXRhID0gW05T
UHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpkaWN0aW9uYXJ5
IGZvcm1hdDpOU1Byb3BlcnR5TGlzdFhNTEZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxs
cHRyXTsKKworICAgIG1fZG93bmxvYWRUYXNrID0gY29jb2FTZXNzaW9uLmRvd25sb2FkVGFza1dp
dGhSZXN1bWVEYXRhKHVwZGF0ZWREYXRhKTsKKyAgICBjb2NvYVNlc3Npb24uYWRkRG93bmxvYWRJ
RChtX2Rvd25sb2FkVGFzay5nZXQoKS50YXNrSWRlbnRpZmllciwgbV9kb3dubG9hZElEKTsKKyAg
ICBtX2Rvd25sb2FkVGFzay5nZXQoKS5fcGF0aFRvRG93bmxvYWRUYXNrRmlsZSA9IHBhdGg7CisK
KyAgICBbbV9kb3dubG9hZFRhc2sgcmVzdW1lXTsKIH0KICAgICAKIHZvaWQgRG93bmxvYWQ6OnBs
YXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAppbmRleCA1YjEwYWY2N2Zk
YWM2MTA1OTdjYzZkZGJjZDI4NDU0ZjcyNjRlNjQzLi40ZGQzMWUwYWFmNjFiZTUxMDhhOWJmMDlk
NjE4ZjQyOGYzODQwNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApAQCAtMjcsNyArMjcsOSBAQAogCiAj
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKIAorT0JKQ19DTEFTUyBOU0RhdGE7CiBPQkpDX0NMQVNT
IE5TVVJMU2Vzc2lvbjsKK09CSkNfQ0xBU1MgTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrOwogT0JK
Q19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogT0JKQ19DTEFTUyBXS05ldHdvcmtTZXNzaW9uRGVs
ZWdhdGU7CiAKQEAgLTU4LDYgKzYwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBOZXR3b3Jr
RGF0YVRhc2tDb2NvYSogZGF0YVRhc2tGb3JJZGVudGlmaWVyKE5ldHdvcmtEYXRhVGFza0NvY29h
OjpUYXNrSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAg
IE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayogZG93bmxvYWRUYXNrV2l0aFJlc3VtZURhdGEoTlNE
YXRhKik7CiAKICAgICB2b2lkIGFkZERvd25sb2FkSUQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRh
c2tJZGVudGlmaWVyLCBEb3dubG9hZElEKTsKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoTmV0
d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRl
eCBhM2VmYzdkZDhhNjBiZmY3ODQyOWNjMWEzMjA0YjUyZjFmN2U3YjQ3Li43ZTg4MWVmNWE5YTU0
ZGMxNjBkYjEzMjk1MjY1Y2FiZGVkNjJlYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNzIs
NiArMjcyLDIxIEBAIHN0YXRpYyBXZWJDb3JlOjpOZXR3b3JrTG9hZFByaW9yaXR5IHRvTmV0d29y
a0xvYWRQcmlvcml0eShmbG9hdCBwcmlvcml0eSkKICAgICAgICAgfTsKICAgICAgICAgbmV0d29y
a0RhdGFUYXNrLT5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSwgV1RGTW92ZShjaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gZG93bmxv
YWRJRCA9IF9zZXNzaW9uLT5kb3dubG9hZElEKHRhc2sudGFza0lkZW50aWZpZXIpOworICAgICAg
ICBpZiAoZG93bmxvYWRJRC5kb3dubG9hZElEKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBk
b3dubG9hZCA9IFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNpbmdsZXRvbigpLmRvd25sb2FkTWFu
YWdlcigpLmRvd25sb2FkKGRvd25sb2FkSUQpKSB7CisgICAgICAgICAgICAgICAgLy8gUmVjZWl2
ZWQgYW4gYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIGZvciBhIGRvd25sb2FkIGJlaW5nIHJlc3Vt
ZWQuCisgICAgICAgICAgICAgICAgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgeyBjaGFsbGVuZ2UgfTsKKyAgICAgICAgICAgICAgICBhdXRv
IGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwor
ICAgICAgICAgICAgICAgIGF1dG8gc2Vzc2lvbklEID0gX3Nlc3Npb24tPnNlc3Npb25JRCgpOwor
ICAgICAgICAgICAgICAgIGF1dG8gY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBbY29tcGxl
dGlvbkhhbmRsZXJDb3B5LCBzZXNzaW9uSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlXShXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXJDb3B5KHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0
aW9uKGRpc3Bvc2l0aW9uKSwgY3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKSk7CisgICAgICAgICAg
ICAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKKyAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRSZWNlaXZlQ2hhbGxlbmdl
KGNoYWxsZW5nZSwgV1RGTW92ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBMT0co
TmV0d29ya1Nlc3Npb24sICIlbGx1IGRpZFJlY2VpdmVDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRs
ZXIgKGNhbmNlbCkiLCB0YXNrSWRlbnRpZmllcik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
bmlsKTsKICAgICB9CkBAIC02NTksNiArNjc0LDExIEBAIE5ldHdvcmtEYXRhVGFza0NvY29hKiBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjpkYXRhVGFza0ZvcklkZW50aWZpZXIoTmV0d29ya0RhdGFUYXNr
CiAgICAgcmV0dXJuIG1fZGF0YVRhc2tNYXBXaXRob3V0U3RhdGUuZ2V0KHRhc2tJZGVudGlmaWVy
KTsKIH0KIAorTlNVUkxTZXNzaW9uRG93bmxvYWRUYXNrKiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpk
b3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YShOU0RhdGEqIHJlc3VtZURhdGEpCit7CisgICAgcmV0
dXJuIFttX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UgZG93bmxvYWRUYXNrV2l0aFJlc3Vt
ZURhdGE6cmVzdW1lRGF0YV07Cit9CisKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWRkRG93
bmxvYWRJRChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZp
ZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCkKIHsKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcAppbmRleCAwMzIwMjllZThmMmQyNjBiY2JlNjEwM2QzY2MwZGE5Nzk4ZDQ2
ZGE4Li4zMGU3MjA5ZjJmZjc1YzhhOTgyY2Y4MzRlMDk1YzIwYTQ1NDE0ODUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRp
Y2F0aW9uTWFuYWdlci5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJ
RCwgdQogICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpE
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UocGFnZUlELCBmcmFtZUlELCBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQZW5kaW5nRG93bmxv
YWQmIHBlbmRpbmdEb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgdWludDY0X3QgZHVtbXlQYWdlSUQgPSAwOwogICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlE
ID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoeyBkdW1teVBhZ2VJRCwgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwpAQCAtMTUzLDcgKzE1
Myw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoUGVuZGluZ0Rvd25sb2FkJiBwCiAgICAgaWYgKHNob3VsZENvYWxlc2NlQ2hh
bGxlbmdlKGR1bW15UGFnZUlELCBjaGFsbGVuZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcGVuZGluZ0Rvd25sb2FkLnNlbmQoTWVzc2Fn
ZXM6OkRvd25sb2FkUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKKyAgICBkb3dubG9hZC5zZW5kKE1l
c3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuaAppbmRleCA5ZWJlZmQ0NzBhZDgxYzEwODhhNWVhYmY0MTM2NDBjMTky
OGI1OGU1Li5kNjhlZjc1OTM0NDJjODFhYjFiNjNmMzJmNjI0OWJjODNjNGJlMTkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuaApAQCAtMzQsNiArMzQsMTAgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3Mg
TWVzc2FnZVNlbmRlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDZXJ0aWZpY2F0ZUluZm87CkBAIC00NSw3ICs0OSw2IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQ2hpbGRQcm9jZXNzOwogY2xhc3MgRG93bmxvYWQ7
CiBjbGFzcyBEb3dubG9hZElEOwotY2xhc3MgUGVuZGluZ0Rvd25sb2FkOwogY2xhc3MgV2ViRnJh
bWU7CiAKIGVudW0gY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiB7CkBA
IC02NSw3ICs2OCw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYs
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFBlbmRpbmdEb3dubG9hZCYsIGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVy
JiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRI
X0NBTExCQUNLKQogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKICNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>