<?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>202373</bug_id>
          
          <creation_ts>2019-09-30 14:46:21 -0700</creation_ts>
          <short_desc>Make GenericEventQueue an ActiveDOMObject</short_desc>
          <delta_ts>2019-09-30 20:37:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</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>
          
          <blocked>202293</blocked>
    
    <blocked>202370</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1575330</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-30 14:46:21 -0700</bug_when>
    <thetext>Make GenericEventQueue an ActiveDOMObject so that it is guaranteed to never fire any events while suspended without requiring the client to explicitly suspend/resume the event queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575338</commentid>
    <comment_count>1</comment_count>
      <attachid>379845</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-30 15:32:25 -0700</bug_when>
    <thetext>Created attachment 379845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575351</commentid>
    <comment_count>2</comment_count>
      <attachid>379848</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-30 15:48:43 -0700</bug_when>
    <thetext>Created attachment 379848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575377</commentid>
    <comment_count>3</comment_count>
      <attachid>379857</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-30 16:50:36 -0700</bug_when>
    <thetext>Created attachment 379857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575378</commentid>
    <comment_count>4</comment_count>
      <attachid>379858</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-30 16:53:28 -0700</bug_when>
    <thetext>Created attachment 379858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575380</commentid>
    <comment_count>5</comment_count>
      <attachid>379860</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-09-30 16:55:43 -0700</bug_when>
    <thetext>Created attachment 379860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575422</commentid>
    <comment_count>6</comment_count>
      <attachid>379860</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-30 20:36:08 -0700</bug_when>
    <thetext>Comment on attachment 379860
Patch

Clearing flags on attachment: 379860

Committed r250542: &lt;https://trac.webkit.org/changeset/250542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575423</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-30 20:36:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575424</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-30 20:37:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/55865576&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379845</attachid>
            <date>2019-09-30 15:32:25 -0700</date>
            <delta_ts>2019-09-30 15:48:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202373-20190930153224.patch</filename>
            <type>text/plain</type>
            <size>53949</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOThkNjQ2M2M1OGQ2Y2E2
YWRmNjYxNjVhMTQ3MmMxZmVkOGNiNDg5OC4uYzBiNDJmN2Y4NTg3MTkxOTgxMDY1ZjMwZDYyNjM2
ZjIxNDQyZDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxOS0wOS0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgR2VuZXJpY0V2ZW50
UXVldWUgYW4gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDIzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIEdlbmVyaWNFdmVudFF1ZXVlIGFuIEFjdGl2ZURPTU9iamVj
dCBzbyB0aGF0IGl0IGlzIGd1YXJhbnRlZWQgdG8gbmV2ZXIgZmlyZSBhbnkgZXZlbnRzIHdoaWxl
CisgICAgICAgIHN1c3BlbmRlZCB3aXRob3V0IHJlcXVpcmluZyB0aGUgY2xpZW50IHRvIGV4cGxp
Y2l0bHkgc3VzcGVuZC9yZXN1bWUgdGhlIGV2ZW50IHF1ZXVlLgorCisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRNZWRpYUtleVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNlc3Npb246On5XZWJLaXRNZWRpYUtleVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZp
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzdG9w
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtl
eVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpNZWRpYVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpTb3Vy
Y2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpoYXNQZW5kaW5nQWN0
aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyTGlzdDo6U291cmNlQnVmZmVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJMaXN0OjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
ckxpc3Q6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c3Rv
cCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAg
KiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjp0aWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2xhcmF0aXZlQW5pbWF0aW9uOjpuZWVkc1RpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xh
cmF0aXZlQW5pbWF0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5p
bWF0aW9uOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9u
OjpyZXN1bWUpOgorICAgICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oOgor
ICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OkdlbmVyaWNFdmVudFF1ZXVlQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnNldFBhdXNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OmNhblN1c3BlbmRGb3JEb2N1bWVu
dFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0V2ZW50UXVldWVC
YXNlPFQ+OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNFdmVudFF1ZXVlQmFz
ZTxUPjo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNFdmVudFF1ZXVlQmFzZTxU
Pjo6cmVzY2hlZHVsZUFsbEV2ZW50c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVy
aWNFdmVudFF1ZXVlQmFzZTxUPjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljRXZl
bnRRdWV1ZUJhc2U8VD46OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYWlu
VGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL0dlbmVyaWNF
dmVudFF1ZXVlLmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNo
TWVzc2FnZXMpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpjYW5jZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVl
dWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlDaGFuZ2VkRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja0xpc3RCYXNlOjpUcmFja0xpc3RCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
TGlzdEJhc2U6OnNjaGVkdWxlVHJhY2tFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xp
c3RCYXNlOjpzY2hlZHVsZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlz
dEJhc2U6OmlzQ2hhbmdlRXZlbnRTY2hlZHVsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhY2tMaXN0QmFzZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6Cisg
ICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpXb3JrZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyOjp0ZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlcjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIu
aDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0
YXJ0TWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
c3RvcCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aDoKKwogMjAxOS0wOS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlZmluZSByZXN0cmljdGlvbnMgZm9yIFgtVGVtcC1UYWJsZXQgSFRUUCBoZWFkZXIgZXhw
ZXJpbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IDcyMGZjNzRkOTQ5OGRjOWI0ZDc1ZTkzNmYz
NGE0OTg0ZTFmNjE3MzcuLjU1MDhiMzc4Y2VmODg4MzY2NjdiNWRlOWNkOTZmNDI2Yzg5Mzc5ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgTWVkaWFLZXlTZXNzaW9uOjpN
ZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxN
ZWRpYUsKICAgICAsIG1fc2Vzc2lvblR5cGUoc2Vzc2lvblR5cGUpCiAgICAgLCBtX2ltcGxlbWVu
dGF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pKQogICAgICwgbV9pbnN0YW5jZVNlc3Npb24o
V1RGTW92ZShpbnN0YW5jZVNlc3Npb24pKQotICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQorICAg
ICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlz
KSkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20t
bWVkaWFrZXlzLWNyZWF0ZXNlc3Npb24KICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92
ZW1iZXIgMjAxNgpAQCAtNjE0LDcgKzYxNCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1
ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyCiAg
ICAgLy8gICAgaW50ZXJmYWNlIHdpdGggaXRzIHR5cGUgYXR0cmlidXRlIHNldCB0byBtZXNzYWdl
IGFuZCBpdHMgaXNUcnVzdGVkIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0cnVlLCBhbmQgZGlz
cGF0Y2ggaXQgYXQgdGhlCiAgICAgLy8gICAgc2Vzc2lvbi4KICAgICBhdXRvIG1lc3NhZ2VFdmVu
dCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVu
dCwge21lc3NhZ2VUeXBlLCBtZXNzYWdlLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCl9LCBFdmVudDo6
SXNUcnVzdGVkOjpZZXMpOwotICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZSht
ZXNzYWdlRXZlbnQpKTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKG1l
c3NhZ2VFdmVudCkpOwogfQogCiB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVz
ZXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbnB1dFN0YXR1c2VzKQpA
QCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNl
cyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGluCiAgICAgICAgIG1fc3Rh
dHVzZXMudW5jaGVja2VkQXBwZW5kKHsgV1RGTW92ZShzdGF0dXMuZmlyc3QpLCB0b01lZGlhS2V5
U3RhdHVzKHN0YXR1cy5zZWNvbmQpIH0pOwogCiAgICAgLy8gNS4gUXVldWUgYSB0YXNrIHRvIGZp
cmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5c3RhdHVzZXNjaGFuZ2UgYXQgdGhlIHNlc3Npb24u
Ci0gICAgbV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5rZXlzdGF0dXNlc2NoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlzdGF0dXNlc2NoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIAogICAgIC8vIDYuIFF1ZXVlIGEg
dGFzayB0byBydW4gdGhlIEF0dGVtcHQgdG8gUmVzdW1lIFBsYXliYWNrIElmIE5lY2Vzc2FyeSBh
bGdvcml0aG0gb24gZWFjaCBvZiB0aGUgbWVkaWEgZWxlbWVudChzKSB3aG9zZSBtZWRpYUtleXMg
YXR0cmlidXRlIGlzIHRoZSBNZWRpYUtleXMgb2JqZWN0IHRoYXQgY3JlYXRlZCB0aGUgc2Vzc2lv
bi4KICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzaygKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDVhNjJl
YWMyZDdmZTYzMDM1ZDBmY2VjY2IwYTY1YzNiYmE2Y2U0ZDMuLjk1YmFmMzU0OGQ3OTc4NGVhMmQ1
MWFhNDg0OWYxMGQwZmVhMmM5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMTE0LDcgKzExNCw3IEBA
IHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJl
ZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9p
bnN0YW5jZVNlc3Npb247Ci0gICAgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlIG1fZXZlbnRR
dWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50
UXVldWU7CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7CiAgICAgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAgZG91YmxlIG1f
Zmlyc3REZWNyeXB0VGltZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uY3BwCmluZGV4IDcwYzcwZTNkZGJjYzc5MWM4N2Y5ZTg3NjMyMWNlYWJiZDNlNzZkNjEu
LjllOTNjN2IyODYxZTY0MDgwNjk0YWNmYTNmZmYzNDI5OWI5NjcwYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJLaXRN
ZWRpYUtleVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBXZQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwg
bV9rZXlzKCZrZXlzKQogICAgICwgbV9rZXlTeXN0ZW0oa2V5U3lzdGVtKQotICAgICwgbV9hc3lu
Y0V2ZW50UXVldWUoKnRoaXMpCisgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2Vu
ZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3Nlc3Npb24oa2V5cy5jZG0o
KS5jcmVhdGVTZXNzaW9uKCp0aGlzKSkKICAgICAsIG1fa2V5UmVxdWVzdFRpbWVyKCp0aGlzLCAm
V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJlZCkKICAgICAsIG1fYWRk
S2V5VGltZXIoKnRoaXMsICZXZWJLaXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQp
CkBAIC02OCw3ICs2OCw3IEBAIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6fldlYktpdE1lZGlhS2V5
U2Vzc2lvbigpCiAgICAgaWYgKG1fc2Vzc2lvbikKICAgICAgICAgbV9zZXNzaW9uLT5zZXRDbGll
bnQobnVsbHB0cik7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jYW5jZWxBbGxFdmVudHMoKTsK
KyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7CiB9CiAKIHZvaWQgV2Vi
S2l0TWVkaWFLZXlTZXNzaW9uOjpjbG9zZSgpCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBXZWJL
aXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQoKQogICAgICAgICBpZiAoZGlkU3Rv
cmVLZXkpIHsKICAgICAgICAgICAgIGF1dG8ga2V5YWRkZWRFdmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLndlYmtpdGtleWFkZGVkRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBrZXlhZGRlZEV2ZW50LT5zZXRU
YXJnZXQodGhpcyk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShrZXlhZGRlZEV2ZW50KSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+
ZW5xdWV1ZUV2ZW50KFdURk1vdmUoa2V5YWRkZWRFdmVudCkpOwogCiAgICAgICAgICAgICBBU1NF
UlQobV9rZXlzKTsKICAgICAgICAgICAgIG1fa2V5cy0+a2V5QWRkZWQoKTsKQEAgLTIwNyw3ICsy
MDcsNyBAQCB2b2lkIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoVWludDhBcnJh
eSogbWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVQogewogICAgIGF1dG8gZXZlbnQgPSBXZWJL
aXRNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXltZXNz
YWdlRXZlbnQsIG1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMKTsKICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50
KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CiB9CiAKIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWVkaWFLZXlFcnJv
ckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQpAQCAtMjE2LDcgKzIxNiw3IEBA
IHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWVkaWFLZXlFcnJvckNvZGUg
ZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0CiAKICAgICBhdXRvIGtleWVycm9yRXZlbnQgPSBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgIGtleWVycm9yRXZlbnQtPnNl
dFRhcmdldCh0aGlzKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92
ZShrZXllcnJvckV2ZW50KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChX
VEZNb3ZlKGtleWVycm9yRXZlbnQpKTsKIH0KIAogU3RyaW5nIFdlYktpdE1lZGlhS2V5U2Vzc2lv
bjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC0yMzgsMjIgKzIzOCwxMSBA
QCBTdHJpbmcgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKIAogYm9vbCBXZWJLaXRNZWRpYUtleVNlc3Npb246Omhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX2tleXMgJiYgbV9zZXNzaW9uKSB8fCBtX2FzeW5j
RXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCi17Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpyZXN1bWUoKQotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAobV9rZXlzICYmIG1fc2Vzc2lv
bikgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKTsKIH0KIAogdm9pZCBX
ZWJLaXRNZWRpYUtleVNlc3Npb246OnN0b3AoKQogewotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNs
b3NlKCk7CiAgICAgY2xvc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAppbmRleCBkZGE4ZmVmMzYxM2Q3NmM0MGQyNDIxN2M0ZTVmYjAxZTM3MGMzNTVkLi40
MjMzYWNlMjY3NWM0NWZiYjYwNjBmYzBiMDk1YjhhY2Y3OTQ3NTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaApAQCAtNzcsOCArNzcsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29u
Rm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICB2b2lk
IHN0b3AoKSBmaW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24o
KSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QgZmluYWw7CkBAIC05MCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fa2V5U3lz
dGVtOwogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBSZWZQdHI8V2ViS2l0TWVkaWFLZXlF
cnJvcj4gbV9lcnJvcjsKLSAgICBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2
ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9h
c3luY0V2ZW50UXVldWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IG1f
c2Vzc2lvbjsKIAogICAgIHN0cnVjdCBQZW5kaW5nS2V5UmVxdWVzdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDdjYmM2
YTEzMzUxZTBkMzJjZTI1NWE5YmFkY2I5NzQ0ZGFmNGQ0NDguLmI5NDg5MjdhZTYyNmQ3OWY1NTY2
MTRhMzJmZGRkNGQ0ZGRkOTVkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgTWVkaWFTb3Vy
Y2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2R1cmF0aW9uKE1lZGlhVGltZTo6aW52
YWxpZFRpbWUoKSkKICAgICAsIG1fcGVuZGluZ1NlZWtUaW1lKE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQorICAgICwgbV9hc3luY0V2ZW50
UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpLmxvZ2dlcigpKQogI2VuZGlmCkBAIC05NzMsMzggKzk3MywxNCBAQCB2b2lkIE1lZGlh
U291cmNlOjpvcGVuSWZJbkVuZGVkU3RhdGUoKQogCiBib29sIE1lZGlhU291cmNlOjpoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUgfHwgbV9hc3luY0V2
ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpCisgICAgcmV0dXJuIG1fcHJpdmF0ZSB8fCBtX2Fz
eW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpCiAgICAgICAgIHx8IEFjdGl2ZURPTU9i
amVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2U6OnN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBzdGF0aWNfY2FzdDxpbnQ+KHJlYXNvbikpOwotCi0gICAgc3dpdGNoIChyZWFzb24p
IHsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAgICBjYXNlIFJl
YXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAgIG1fYXN5bmNF
dmVudFF1ZXVlLnN1c3BlbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFzb25Gb3JT
dXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBSZWFzb25Gb3JT
dXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBk
b24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU291cmNlOjpyZXN1bWUoKQotewotICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7Ci0KLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUoKTsKLX0K
LQogdm9pZCBNZWRpYVNvdXJjZTo6c3RvcCgpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNsb3NlKCk7CiAgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQogICAgICAgICBtX21lZGlhRWxlbWVudC0+ZGV0YWNoTWVkaWFTb3VyY2UoKTsKICAg
ICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpDbG9zZWQ7CkBAIC0xMDEzLDcgKzk4OSw4IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnN0b3AoKQogCiBib29sIE1lZGlhU291cmNlOjpjYW5TdXNwZW5k
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNDbG9zZWQoKSAm
JiAhbV9hc3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOworICAgIC8vIEZJWE1FOiBE
byBiZXR0ZXIuCisgICAgcmV0dXJuIGlzQ2xvc2VkKCk7CiB9CiAKIGNvbnN0IGNoYXIqIE1lZGlh
U291cmNlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTEwODAsNyArMTA1Nyw3IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRO
YW1lKQogICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICBldmVudC0+c2V0VGFy
Z2V0KHRoaXMpOwogCi0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUo
ZXZlbnQpKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZl
bnQpKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTb3VyY2U6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDJmZWIwMGJmYzVmZDkwNjEwMGQyMDUzYmNlYzQx
MjMyYmE4OGRkOTcuLjhhMWVmY2EyMjhmMWQ5NWM4NjA3ZmMzZTg5YjM5OTA4MmVlY2EwYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgK
QEAgLTEyNiw4ICsxMjYsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlh
U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgIHZvaWQgc3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIHZv
aWQgc3RvcCgpIGZpbmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lv
bigpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdCBmaW5hbDsKQEAgLTE2OCw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhVGltZSBt
X2R1cmF0aW9uOwogICAgIE1lZGlhVGltZSBtX3BlbmRpbmdTZWVrVGltZTsKICAgICBSZWFkeVN0
YXRlIG1fcmVhZHlTdGF0ZSB7IFJlYWR5U3RhdGU6OkNsb3NlZCB9OwotICAgIE1haW5UaHJlYWRH
ZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRo
cmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2
b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNDIwNmRmYmM5ZGJj
N2RhZTkyMjJlNjM4Y2RiZTlmMTMxM2U1OTliNS4uNzA4M2RjN2VmYTFiMzQxYzFlZTA5YWJmOWI2
NTY3NjRkMGM1M2ViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFNvdXJjZUJ1ZmZlcjo6
U291cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZh
dGUsIE1lZGlhCiAgICAgOiBBY3RpdmVET01PYmplY3Qoc291cmNlLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCiAgICAgLCBtX3ByaXZhdGUoV1RGTW92ZShzb3VyY2VCdWZmZXJQcml2YXRlKSkK
ICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQor
ICAgICwgbV9hc3luY0V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVh
dGUoKnRoaXMpKQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcigqdGhpcywgJlNvdXJjZUJ1ZmZl
cjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCkKICAgICAsIG1fYXBwZW5kV2luZG93U3RhcnQoTWVk
aWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9hcHBlbmRXaW5kb3dFbmQoTWVkaWFUaW1lOjpw
b3NpdGl2ZUluZmluaXRlVGltZSgpKQpAQCAtNTI4LDMxICs1MjgsMTEgQEAgTWVkaWFUaW1lIFNv
dXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUZhc3RTZWVrVGltZUZvck1lZGlhVGltZShj
b25zdCBNZWRpYVQKIAogYm9vbCBTb3VyY2VCdWZmZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fc291cmNlIHx8IG1fYXN5bmNFdmVudFF1ZXVlLmhhc1BlbmRp
bmdFdmVudHMoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXI6OnN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbiByZWFzb24pCi17Ci0gICAgc3dpdGNoIChyZWFzb24pIHsKLSAgICBjYXNlIFJlYXNv
bkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246
OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2Ny
aXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVm
ZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBw
bGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lk
IFNvdXJjZUJ1ZmZlcjo6cmVzdW1lKCkKLXsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUo
KTsKKyAgICByZXR1cm4gbV9zb3VyY2UgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdF
dmVudHMoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnN0b3AoKQogewotICAgIG1fYXN5bmNF
dmVudFF1ZXVlLmNsb3NlKCk7CiAgICAgbV9hcHBlbmRCdWZmZXJUaW1lci5zdG9wKCk7CiAgICAg
bV9yZW1vdmVUaW1lci5zdG9wKCk7CiB9CkBAIC01NzcsNyArNTU3LDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXI6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lKQogICAgIGF1
dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwog
Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAg
ICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChjb25z
dCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggMDhjNDYxZGIzZDk5
Y2I1YjNkZWE3N2YxYTg0ZTQ1ZWFmMGVmOGEwYS4uZGQ1ZGFmNmM5MDY2ZmZjNmI4OTE5NmU1ZDkx
MGY2NjEzZjUzNjEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0xNDQsOCArMTQ0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgdm9pZCBzdG9w
KCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZp
bmFsOwpAQCAtMjE3LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8U291cmNlQnVmZmVy
UHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIE1lZGlhU291cmNlKiBtX3NvdXJjZTsKLSAgICBNYWlu
VGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVm
PE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAgICAgQXBw
ZW5kTW9kZSBtX21vZGUgeyBBcHBlbmRNb2RlOjpTZWdtZW50cyB9OwogCiAgICAgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAppbmRleCA2Nzgy
MjQ2ZmQ0YzUwYjEzMTVlMWQ5MDQ1YmE0YWRkOTg0MGY5NmE1Li5iNGQ4MmM0OWM1YmZkM2ViY2Zh
OWEzNTE2NWFmZjBmZWVhYThjYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNvdXJjZUJ1ZmZlckxpc3QpOwogCiBTb3VyY2VC
dWZmZXJMaXN0OjpTb3VyY2VCdWZmZXJMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKCp0aGlzKQorICAgICwgbV9hc3luY0V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVu
dFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQpAQCAt
OTgsMzYgKzk4LDEyIEBAIHZvaWQgU291cmNlQnVmZmVyTGlzdDo6c2NoZWR1bGVFdmVudChjb25z
dCBBdG9tU3RyaW5nJiBldmVudE5hbWUpCiAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
OwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5l
bnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1
ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwogfQogCiBib29sIFNvdXJjZUJ1ZmZlckxpc3Q6OmNh
blN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAhbV9h
c3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZl
ckxpc3Q6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgc3dpdGNo
IChyZWFzb24pIHsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAg
ICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAg
IG1fYXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3Ro
aW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFNvdXJjZUJ1ZmZlckxpc3Q6OnJlc3VtZSgpCi17
Ci0gICAgbV9hc3luY0V2ZW50UXVldWUucmVzdW1lKCk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVy
TGlzdDo6c3RvcCgpCi17Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuY2xvc2UoKTsKKyAgICByZXR1
cm4gIW1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIGNvbnN0IGNo
YXIqIFNvdXJjZUJ1ZmZlckxpc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3Qu
aAppbmRleCAyNmQwYWVhYzdhNTNkNDJkMGJlODMxNTJkYTI0MTRlMWUyMTBjMjZkLi5iNDEwMDNh
M2I0MjY2MmRlOGIyOTZiOTBmYTMxNzI4MDQzNjFjNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaApAQCAtNzksMTIg
Kzc5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7
IGRlcmVmKCk7IH0KIAogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigp
IGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5h
bDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAg
IGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIE1h
aW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBVbmlxdWVS
ZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKIAogICAg
IFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyPj4gbV9saXN0OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA5ZjIzMDljY2Yz
OTJiZTc4YzJhY2VmZTEzOWQ2OGQyOTY0ZjMxYTU1Li5jNjI3ZjMzNGViYmEwOTQwY2ViODRiODI1
YWY2ZTgyMDBkM2MxMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQXVkaW9Db250ZXh0OjpBdWRp
b0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1
ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1
ZTxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1
ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgLy8g
QWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9ubHkgYWZ0ZXIgcGFnZSBu
YXZpZ2F0ZS4KICAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVu
ZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhvZC4KQEAgLTE2Niw3ICsx
NjYsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdAogI2VuZGlmCiAgICAgLCBtX2lzT2ZmbGlu
ZUNvbnRleHQodHJ1ZSkKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9ldmVudFF1ZXVlKG1ha2VVbmlxdWU8TWFpblRocmVh
ZEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUoTWFpblRocmVh
ZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1v
bigpOwogCkBAIC0zMzYsOCArMzM2LDYgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN0b3AoKQogICAg
IEFTU0VSVChkb2N1bWVudCgpKTsKICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRp
YSgpOwogCi0gICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwotCiAgICAgdW5pbml0aWFsaXplKCk7
CiAgICAgY2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCmluZGV4IGQ5OTEyOTQ5YTM5NGFiODEzNGUxOTViMWM5ZjI5Mzc5NDMwNzkz
ZjguLjM0MTk5ODFjMzU3NGMzNzNlZTk3NjFiZmZlYjVkZTBkYmRhYWFiMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNDUsNiArNDUs
NyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nSGFzaC5oPgogCkBAIC00MTcsNyArNDE4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8VmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4+IG1fc3RhdGVSZWFjdGlvbnM7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9u
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fZXZl
bnRRdWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2
ZW50UXVldWU7CiAKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwogICAg
IFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAppbmRleCAy
YTYwM2RhYWE2MDEwZDY0NjQ1NzkwMTc4NmY2NzA1NTBjNTRkNjEzLi5mNGI2OTc4MzdlNDc0NTdj
YzYwMmZiODA4MmIxZjQ4NzgwYTJmMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKERlY2xhcmF0aXZlQW5pbWF0aW9uKTsKIAogRGVjbGFyYXRpdmVB
bmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNv
bnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikKICAgICA6IFdlYkFuaW1hdGlvbihvd25p
bmdFbGVtZW50LmRvY3VtZW50KCkpCi0gICAgLCBtX2V2ZW50UXVldWUob3duaW5nRWxlbWVudCkK
KyAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShv
d25pbmdFbGVtZW50KSkKICAgICAsIG1fb3duaW5nRWxlbWVudCgmb3duaW5nRWxlbWVudCkKICAg
ICAsIG1fYmFja2luZ0FuaW1hdGlvbihjb25zdF9jYXN0PEFuaW1hdGlvbiY+KGJhY2tpbmdBbmlt
YXRpb24pKQogewpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjp0
aWNrKCkKICAgICAvLyBtYXBzIGNvbnRhaW5pbmcgcnVubmluZyBDU1MgVHJhbnNpdGlvbnMgYW5k
IENTUyBBbmltYXRpb25zIGZvciBhIGdpdmVuIGVsZW1lbnQuCiAgICAgaWYgKHdhc1JlbGV2YW50
ICYmIHBsYXlTdGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpJZGxlKSB7CiAgICAg
ICAgIGRpc2Fzc29jaWF0ZUZyb21Pd25pbmdFbGVtZW50KCk7Ci0gICAgICAgIG1fZXZlbnRRdWV1
ZS5jbG9zZSgpOworICAgICAgICBtX2V2ZW50UXVldWUtPmNsb3NlKCk7CiAgICAgfQogfQogCkBA
IC04MywxMiArODMsMTIgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZGlzYXNzb2NpYXRl
RnJvbU93bmluZ0VsZW1lbnQoKQogCiBib29sIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpuZWVkc1Rp
Y2soKSBjb25zdAogewotICAgIHJldHVybiBXZWJBbmltYXRpb246Om5lZWRzVGljaygpIHx8IG1f
ZXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7CisgICAgcmV0dXJuIFdlYkFuaW1hdGlvbjo6
bmVlZHNUaWNrKCkgfHwgbV9ldmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIHZv
aWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnJlbW92ZSgpCiB7Ci0gICAgbV9ldmVudFF1ZXVlLmNs
b3NlKCk7CisgICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwogICAgIFdlYkFuaW1hdGlvbjo6cmVt
b3ZlKCk7CiB9CiAKQEAgLTMzNSwyNiArMzM1LDIzIEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRp
b246OmVucXVldWVET01FdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFNlY29uZHMK
ICAgICBBU1NFUlQobV9vd25pbmdFbGVtZW50KTsKICAgICBhdXRvIHRpbWUgPSBzZWNvbmRzVG9X
ZWJBbmltYXRpb25zQVBJVGltZShlbGFwc2VkVGltZSkgLyAxMDAwOwogICAgIGlmIChpczxDU1NB
bmltYXRpb24+KHRoaXMpKQotICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KEFuaW1h
dGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBkb3duY2FzdDxDU1NBbmltYXRpb24+KHRoaXMp
LT5hbmltYXRpb25OYW1lKCksIHRpbWUpKTsKKyAgICAgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVl
RXZlbnQoQW5pbWF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGRvd25jYXN0PENTU0FuaW1h
dGlvbj4odGhpcyktPmFuaW1hdGlvbk5hbWUoKSwgdGltZSkpOwogICAgIGVsc2UgaWYgKGlzPENT
U1RyYW5zaXRpb24+KHRoaXMpKQotICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFRy
YW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4o
dGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0eSgpLCB0aW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9F
bGVtZW50TmFtZUZvckV2ZW50cyhtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpKSk7CisgICAg
ICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50VHlwZSwgZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4odGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0
eSgpLCB0aW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhtX293
bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpKSk7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRp
b246OnN0b3AoKQogewotICAgIG1fZXZlbnRRdWV1ZS5jbG9zZSgpOwogICAgIFdlYkFuaW1hdGlv
bjo6c3RvcCgpOwogfQogCiB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpzdXNwZW5kKFJlYXNv
bkZvclN1c3BlbnNpb24gcmVhc29uKQogewotICAgIG1fZXZlbnRRdWV1ZS5zdXNwZW5kKCk7CiAg
ICAgV2ViQW5pbWF0aW9uOjpzdXNwZW5kKHJlYXNvbik7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVB
bmltYXRpb246OnJlc3VtZSgpCiB7Ci0gICAgbV9ldmVudFF1ZXVlLnJlc3VtZSgpOwogICAgIFdl
YkFuaW1hdGlvbjo6cmVzdW1lKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5kZXggNDA3ZTkwMDMzMTlkMjVjOWY3N2NmYmNiODNl
ZmRjYzJjZTNlOTY4OS4uOGJmYWUyMTdmNWRmZTk2MjE3NTEwNTAzYTdmYWUwNzM1YTdjNDk4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgK
QEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FzUGVuZGluZyB7IGZhbHNl
IH07CiAgICAgQW5pbWF0aW9uRWZmZWN0UGhhc2UgbV9wcmV2aW91c1BoYXNlIHsgQW5pbWF0aW9u
RWZmZWN0UGhhc2U6OklkbGUgfTsKIAotICAgIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSBt
X2V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4g
bV9ldmVudFF1ZXVlOwogCiAgICAgRWxlbWVudCogbV9vd25pbmdFbGVtZW50OwogICAgIFJlZjxB
bmltYXRpb24+IG1fYmFja2luZ0FuaW1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2
ZW50UXVldWUuY3BwCmluZGV4IGU3OGJlNDgxZTlmMWQyMzY4OGVhOWRkZTZjNmFiZGYyNzNiMTE3
MGMuLjdhNDE1MzA3ZmRhYjcyNmIxMGJjMmRkYTI4MWQ3NDhiZjRiMjA2NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcApAQCAtNDYsNyArNDYsOCBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBUYXNrUXVldWVDb25zdHJ1Y3RvcjxUaW1lcj4gewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjpHZW5lcmljRXZlbnRRdWV1ZUJhc2Uo
RXZlbnRUYXJnZXQmIG93bmVyKQotICAgIDogbV9vd25lcihvd25lcikKKyAgICA6IEFjdGl2ZURP
TU9iamVjdChvd25lci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX293bmVyKG93
bmVyKQogICAgICwgbV90YXNrUXVldWUoVGFza1F1ZXVlQ29uc3RydWN0b3I8VD46OmNvbnN0cnVj
dChvd25lci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQogewogfQpAQCAtMTE5LDkgKzEyMCwz
MCBAQCBib29sIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6aGFzUGVuZGluZ0V2ZW50c09mVHlw
ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlKSBjbwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
dm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnN1c3BlbmQoKQordm9pZCBHZW5lcmljRXZl
bnRRdWV1ZUJhc2U8VD46OnNldFBhdXNlZChib29sIHNob3VsZFBhdXNlKQogewotICAgIEFTU0VS
VCghbV9pc1N1c3BlbmRlZCk7CisgICAgaWYgKG1faXNQYXVzZWRCeUNsaWVudCA9PSBzaG91bGRQ
YXVzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1BhdXNlZEJ5Q2xpZW50ID0gc2hvdWxk
UGF1c2U7CisgICAgaWYgKHNob3VsZFBhdXNlKQorICAgICAgICBtX3Rhc2tRdWV1ZS5jYW5jZWxB
bGxUYXNrcygpOworICAgIGVsc2UKKyAgICAgICAgcmVzY2hlZHVsZUFsbEV2ZW50c0lmTmVlZGVk
KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIEdlbmVyaWNFdmVudFF1ZXVlQmFz
ZTxUPjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIEdlbmVyaWNFdmVudFF1
ZXVlQmFzZTxUPjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIGlmIChtX2lz
U3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKICAgICBtX2lzU3VzcGVuZGVkID0gdHJ1ZTsK
ICAgICBtX3Rhc2tRdWV1ZS5jYW5jZWxBbGxUYXNrcygpOwogfQpAQCAtMTMzLDEyICsxNTUsNDYg
QEAgdm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnJlc3VtZSgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICByZXNjaGVkdWxlQWxsRXZlbnRz
SWZOZWVkZWQoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgR2VuZXJpY0V2ZW50
UXVldWVCYXNlPFQ+OjpyZXNjaGVkdWxlQWxsRXZlbnRzSWZOZWVkZWQoKQoreworICAgIGlmICht
X2lzUGF1c2VkQnlDbGllbnQgfHwgbV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGVuZGluZ0V2ZW50cy5zaXplKCk7ICsraSkK
ICAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soc3RkOjpiaW5kKCZHZW5lcmljRXZlbnRR
dWV1ZUJhc2U6OmRpc3BhdGNoT25lRXZlbnQsIHRoaXMpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK3ZvaWQgR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjpzdG9wKCkKK3sKKyAgICBjbG9z
ZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uc3QgY2hhciogR2VuZXJpY0V2ZW50
UXVldWVCYXNlPFQ+OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
IkdlbmVyaWNFdmVudFF1ZXVlQmFzZSI7Cit9CisKIHRlbXBsYXRlIGNsYXNzIEdlbmVyaWNFdmVu
dFF1ZXVlQmFzZTxUaW1lcj47CiB0ZW1wbGF0ZSBjbGFzcyBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dD47CiAKK1VuaXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4g
R2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQpCit7Cisg
ICAgYXV0byBldmVudFF1ZXVlID0gbWFrZVVuaXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4oZXZl
bnRUYXJnZXQpOworICAgIGV2ZW50UXVldWUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVy
biBldmVudFF1ZXVlOworfQorCitVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVl
PiBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShFdmVudFRhcmdldCYgZXZlbnRU
YXJnZXQpCit7CisgICAgYXV0byBldmVudFF1ZXVlID0gbWFrZVVuaXF1ZVJlZjxNYWluVGhyZWFk
R2VuZXJpY0V2ZW50UXVldWU+KGV2ZW50VGFyZ2V0KTsKKyAgICBldmVudFF1ZXVlLT5zdXNwZW5k
SWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZXZlbnRRdWV1ZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vR2VuZXJpY0V2ZW50UXVldWUuaAppbmRleCA0YzU2NDIzYTllMWU0N2E5MzZjMDk0ZWM0ZmY1
NDdiMjNkYzExMzBhLi4xMTBiMWZmZGNkOGM3ZGMwMDI0MTkwNWM1NGY5NzQ2ZTM3MGEzYzIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaApAQCAtMjUsMTAgKzI1LDEyIEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCw3ICs0MCw3IEBAIGNs
YXNzIFRpbWVyOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWNsYXNzIEdlbmVyaWNFdmVudFF1ZXVlQmFzZSB7CitjbGFzcyBHZW5lcmljRXZl
bnRRdWV1ZUJhc2UgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBHZW5lcmljRXZlbnRRdWV1ZUJhc2Uo
RXZlbnRUYXJnZXQmKTsKQEAgLTUxLDI0ICs1MywzNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQ
ZW5kaW5nRXZlbnRzKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzT2ZUeXBlKGNv
bnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIHZvaWQgc3VzcGVuZCgpOwotICAgIHZvaWQg
cmVzdW1lKCk7CisgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCk7CiAKICAgICBib29sIGlzU3VzcGVu
ZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N1c3BlbmRlZDsgfQogCiBwcml2YXRlOgogICAgIHZv
aWQgZGlzcGF0Y2hPbmVFdmVudCgpOwogCisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVu
c2lvbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIHZvaWQgc3Vz
cGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZSgpIGZpbmFs
OworCisgICAgdm9pZCByZXNjaGVkdWxlQWxsRXZlbnRzSWZOZWVkZWQoKTsKKwogICAgIEV2ZW50
VGFyZ2V0JiBtX293bmVyOwogICAgIEdlbmVyaWNUYXNrUXVldWU8VD4gbV90YXNrUXVldWU7CiAg
ICAgRGVxdWU8UmVmUHRyPEV2ZW50Pj4gbV9wZW5kaW5nRXZlbnRzOwogICAgIGJvb2wgbV9pc0Ns
b3NlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzUGF1c2VkQnlDbGllbnQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiB9OwogCiAvLyBBbGwgaW5zdGFuY2Vz
IG9mIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSB1c2UgYSBzaGFyZWQgVGltZXIgZm9yIGRp
c3BhdGNoaW5nIGV2ZW50cy4KIGNsYXNzIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSA6IHB1
YmxpYyBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VGltZXI+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMg
VW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gY3JlYXRlKEV2ZW50VGFyZ2V0
Jik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2
ZW50UXVldWU+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8TWFpblRo
cmVhZEdlbmVyaWNFdmVudFF1ZXVlLCBFdmVudFRhcmdldCY+KEV2ZW50VGFyZ2V0Jik7CiAgICAg
ZXhwbGljaXQgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlKEV2ZW50VGFyZ2V0JiBldmVudFRh
cmdldCkKICAgICAgICAgOiBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VGltZXI+KGV2ZW50VGFyZ2V0
KQogICAgIHsKQEAgLTc4LDYgKzkyLDEwIEBAIHB1YmxpYzoKIGNsYXNzIEdlbmVyaWNFdmVudFF1
ZXVlIDogcHVibGljIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgc3RhdGljIFVu
aXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4gY3JlYXRlKEV2ZW50VGFyZ2V0Jik7CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIFVuaXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4gV1RGOjptYWtlVW5p
cXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxHZW5lcmljRXZlbnRRdWV1ZSwgRXZlbnRUYXJn
ZXQmPihFdmVudFRhcmdldCYpOwogICAgIGV4cGxpY2l0IEdlbmVyaWNFdmVudFF1ZXVlKEV2ZW50
VGFyZ2V0JiBldmVudFRhcmdldCkKICAgICAgICAgOiBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dD4oZXZlbnRUYXJnZXQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlUG9ydC5jcHAKaW5kZXggODQyZWUyOTQzZGZjZDY3MGFiODA5MjYwZGMxMTUyYTA0NTYxMmJj
OC4uMWQ1MDQwMmQ3N2M1MWEwMjBmNDM1MGY4ZjlmYWY2YjQ5MjA0MWQ2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwCkBAIC05OCw3ICs5OCw3IEBAIE1lc3NhZ2VQb3J0OjpNZXNzYWdl
UG9ydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25z
dCBNCiAgICAgOiBBY3RpdmVET01PYmplY3QoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAg
LCBtX2lkZW50aWZpZXIobG9jYWwpCiAgICAgLCBtX3JlbW90ZUlkZW50aWZpZXIocmVtb3RlKQot
ICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQorICAgICwgbV9ldmVudFF1ZXVlKEdlbmVyaWNFdmVu
dFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIExPRyhNZXNzYWdlUG9ydHMsICJDcmVhdGVk
IE1lc3NhZ2VQb3J0ICVzICglcCkgaW4gcHJvY2VzcyAlIiBQUkl1NjQsIG1faWRlbnRpZmllci5s
b2dTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlzLCBQcm9jZXNzOjppZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CiAKQEAgLTIyOCwxNyArMjI4LDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6Y2xvc2Uo
KQogCiAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmZyb21Db250ZXh0KCptX3Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQpLm1lc3NhZ2VQb3J0Q2xvc2VkKG1faWRlbnRpZmllcik7CiAgICAg
cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKLSAgICBtX2V2ZW50UXVldWUuY2xvc2UoKTsKLX0K
LQotdm9pZCBNZXNzYWdlUG9ydDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQotewotICAg
IG1fZXZlbnRRdWV1ZS5zdXNwZW5kKCk7Ci19Ci0KLXZvaWQgTWVzc2FnZVBvcnQ6OnJlc3VtZSgp
Ci17Ci0gICAgbV9ldmVudFF1ZXVlLnJlc3VtZSgpOworICAgIG1fZXZlbnRRdWV1ZS0+Y2xvc2Uo
KTsKIH0KIAogdm9pZCBNZXNzYWdlUG9ydDo6Y29udGV4dERlc3Ryb3llZCgpCkBAIC0yODAsNyAr
MjcwLDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAgICAgICAgICAg
ICBpZiAoY29udGV4dElzV29ya2VyICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KS5pc0Nsb3NpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMo
Km1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9y
dHMpKTsKLSAgICAgICAgICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoTWVzc2FnZUV2ZW50
OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgp
KSk7CisgICAgICAgICAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkp
KTsKICAgICAgICAgfQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlUG9ydC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggYTRk
YzIyYTc2ZDZjYjljZmViNGYwZmJlYTM3ODdmZjlhZDc5YmJjZC4uMjY1NmJiNDM0Y2VlNjcxNzVm
ZDZiMTVhMGJiOTJjODMxYTA4Y2NhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTg1
LDggKzg1LDYgQEAgcHVibGljOgogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIGNvbnN0IGNo
YXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhblN1c3Bl
bmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmQo
UmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAg
ICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7
IGNsb3NlKCk7IH0KICAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwpA
QCAtMTI5LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgTWVzc2FnZVBvcnRJZGVudGlmaWVyIG1f
cmVtb3RlSWRlbnRpZmllcjsKIAogICAgIG11dGFibGUgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1f
cmVmQ291bnQgeyAxIH07Ci0gICAgR2VuZXJpY0V2ZW50UXVldWUgbV9ldmVudFF1ZXVlOworICAg
IFVuaXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggZDRkMTJhMTIzNzJlZjYzMzI5NjMxNzE4YjZkZTUwODFiZDEzMzkzMS4uMzgzYTQxNmRj
YWRlZmVhNTFhYmQxZjU2YTNlOGI5MjBjYjhkNjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00MjYsNyArNDI2LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6
SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYg
ZG9jdW0KICAgICAsIG1fc2NhblRpbWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2NhblRp
bWVyRmlyZWQpCiAgICAgLCBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmlj
dGlvbnNUaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lckZpcmVkKQogICAgICwgbV9zZWVrVG9QbGF5YmFj
a1Bvc2l0aW9uRW5kZWRUaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUb1BsYXli
YWNrUG9zaXRpb25FbmRlZFRpbWVyRmlyZWQpCi0gICAgLCBtX2FzeW5jRXZlbnRRdWV1ZSgqdGhp
cykKKyAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6
Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZShNZWRp
YVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpCiAgICAgLCBtX2ZpcnN0VGltZVBsYXlpbmco
dHJ1ZSkKICAgICAsIG1fcGxheWluZyhmYWxzZSkKQEAgLTU3Miw3ICs1NzIsNyBAQCBIVE1MTWVk
aWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgpCiAgICAgYmVnaW5JZ25vcmluZ1RyYWNrRGlz
cGxheVVwZGF0ZVJlcXVlc3RzKCk7CiAgICAgYWxsTWVkaWFFbGVtZW50cygpLnJlbW92ZSh0aGlz
KTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNsb3NlKCk7CisgICAgbV9hc3luY0V2ZW50UXVl
dWUtPmNsb3NlKCk7CiAKICAgICBzZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAg
dW5yZWdpc3RlcldpdGhEb2N1bWVudChkb2N1bWVudCgpKTsKQEAgLTEwMjEsNyArMTAyMSw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBl
dmVudE5hbWUpCiAgICAgLy8gRG9uJ3Qgc2V0IHRoZSBldmVudCB0YXJnZXQsIHRoZSBldmVudCBx
dWV1ZSB3aWxsIHNldCBpdCBpbiBHZW5lcmljRXZlbnRRdWV1ZTo6dGltZXJGaXJlZCBhbmQgc2V0
dGluZyBpdCBoZXJlCiAgICAgLy8gd2lsbCB0cmlnZ2VyIGFuIEFTU0VSVCBpZiB0aGlzIGVsZW1l
bnQgaGFzIGJlZW4gbWFya2VkIGZvciBkZWxldGlvbi4KIAotICAgIG1fYXN5bmNFdmVudFF1ZXVl
LmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVu
cXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
c2NoZWR1bGVSZXNvbHZlUGVuZGluZ1BsYXlQcm9taXNlcygpCkBAIC0xODQ5LDExICsxODQ5LDEx
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25z
dCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICAgICAgaWYgKGV2ZW50VGFzay5zZWNvbmQtPnN0
YXJ0VGltZSgpID49IGV2ZW50VGFzay5zZWNvbmQtPmVuZFRpbWUoKSkgewogICAgICAgICAgICAg
YXV0byBlbnRlckV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50ZXJFdmVudCwg
RXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICAgICAg
ICAgIGVudGVyRXZlbnQtPnNldFRhcmdldChldmVudFRhc2suc2Vjb25kKTsKLSAgICAgICAgICAg
IG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGVudGVyRXZlbnQpKTsKKyAg
ICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShlbnRlckV2
ZW50KSk7CiAKICAgICAgICAgICAgIGF1dG8gZXhpdEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZXhpdEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pOwogICAgICAgICAgICAgZXhpdEV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNrLnNl
Y29uZCk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92
ZShleGl0RXZlbnQpKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZl
bnQoV1RGTW92ZShleGl0RXZlbnQpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJl
ZlB0cjxFdmVudD4gZXZlbnQ7CiAgICAgICAgICAgICBpZiAoZXZlbnRUYXNrLmZpcnN0ID09IGV2
ZW50VGFzay5zZWNvbmQtPnN0YXJ0TWVkaWFUaW1lKCkpCkBAIC0xODYxLDcgKzE4NjEsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVk
aWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZXZl
bnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5leGl0RXZlbnQsIEV2ZW50OjpDYW5CdWJi
bGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBldmVudC0+c2V0
VGFyZ2V0KGV2ZW50VGFzay5zZWNvbmQpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUu
ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1
ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0xODc0LDcgKzE4NzQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRl
eHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgZm9yIChhdXRvJiBh
ZmZlY3RlZFRyYWNrIDogYWZmZWN0ZWRUcmFja3MpIHsKICAgICAgICAgYXV0byBldmVudCA9IEV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmN1ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxl
OjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgICAgICBldmVudC0+c2V0VGFyZ2V0
KGFmZmVjdGVkVHJhY2spOwotICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShldmVudCkpOworICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50
KFdURk1vdmUoZXZlbnQpKTsKIAogICAgICAgICAvLyAuLi4gaWYgdGhlIHRleHQgdHJhY2sgaGFz
IGEgY29ycmVzcG9uZGluZyB0cmFjayBlbGVtZW50LCB0byB0aGVuIGZpcmUgYQogICAgICAgICAv
LyBzaW1wbGUgZXZlbnQgbmFtZWQgY3VlY2hhbmdlIGF0IHRoZSB0cmFjayBlbGVtZW50IGFzIHdl
bGwuCkBAIC0xODgzLDcgKzE4ODMsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFj
dGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgICAg
ICBhdXRvIHRyYWNrRWxlbWVudCA9IG1ha2VSZWZQdHIoZG93bmNhc3Q8TG9hZGFibGVUZXh0VHJh
Y2s+KCphZmZlY3RlZFRyYWNrKS50cmFja0VsZW1lbnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQo
dHJhY2tFbGVtZW50KTsKICAgICAgICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodHJhY2tFbGVtZW50
KTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2
ZW50KSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1v
dmUoZXZlbnQpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjIyMyw3ICsyMjIzLDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGUgZXJyb3IKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVuZGlu
Z0V2ZW50c0FuZENhbGxiYWNrcygpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7Ci0g
ICAgbV9hc3luY0V2ZW50UXVldWUuY2FuY2VsQWxsRXZlbnRzKCk7CisgICAgbV9hc3luY0V2ZW50
UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOwogCiAgICAgZm9yIChhdXRvJiBzb3VyY2UgOiBjaGls
ZHJlbk9mVHlwZTxIVE1MU291cmNlRWxlbWVudD4oKnRoaXMpKQogICAgICAgICBzb3VyY2UuY2Fu
Y2VsUGVuZGluZ0Vycm9yRXZlbnQoKTsKQEAgLTI2MTQsNyArMjYxNCw3IEBAIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5
KiBpbml0RGF0YSkKIAogICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdERhdGEpOwogICAg
IGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2
ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50
KFdURk1vdmUoZXZlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjc2MSw3ICsyNzYx
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0
YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYgaW4KICAgICAvLyAgICAgIGluaXREYXRhVHlwZSA9
IGluaXREYXRhVHlwZQogICAgIC8vICAgICAgaW5pdERhdGEgPSBpbml0RGF0YQogICAgIE1lZGlh
RW5jcnlwdGVkRXZlbnRJbml0IGluaXRpYWxpemVyIHsgaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGlu
aXREYXRhKSB9OwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChNZWRpYUVuY3J5
cHRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuY3J5cHRlZEV2ZW50LCBpbml0aWFsaXpl
ciwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVl
dWVFdmVudChNZWRpYUVuY3J5cHRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuY3J5cHRl
ZEV2ZW50LCBpbml0aWFsaXplciwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKSk7CiB9CiAKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC01
NzIwLDcgKzU3MjAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlVGFza1F1ZXVlcygp
CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKICAgICBtX2VuY3J5cHRlZE1lZGlhUXVldWUu
Y2xvc2UoKTsKICNlbmRpZgotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNsb3NlKCk7CisgICAgbV9h
c3luY0V2ZW50UXVldWUtPmNsb3NlKCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBt
X3ZvbHVtZVJldmVydFRhc2tRdWV1ZS5jbG9zZSgpOwogI2VuZGlmCkBAIC01NzYxLDcgKzU3NjEs
NiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiBy
ZWFzb24pCiAgICAgc3dpdGNoIChyZWFzb24pIHsKICAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNp
b246OlBhZ2VDYWNoZToKICAgICAgICAgc3RvcFdpdGhvdXREZXN0cm95aW5nTWVkaWFQbGF5ZXIo
KTsKLSAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuc3VzcGVuZCgpOwogICAgICAgICBzZXRCdWZm
ZXJpbmdQb2xpY3koQnVmZmVyaW5nUG9saWN5OjpNYWtlUmVzb3VyY2VzUHVyZ2VhYmxlKTsKICAg
ICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50
U2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9SZXN1bWVNZWRpYSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtNTc3OSw4ICs1Nzc4LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQog
CiAgICAgc2V0SW5BY3RpdmVEb2N1bWVudCh0cnVlKTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVl
LnJlc3VtZSgpOwotCiAgICAgaWYgKCFtX21lZGlhU2Vzc2lvbi0+cGFnZUFsbG93c1BsYXliYWNr
QWZ0ZXJSZXN1bWluZygpKQogICAgICAgICBkb2N1bWVudCgpLmFkZE1lZGlhQ2FuU3RhcnRMaXN0
ZW5lcigqdGhpcyk7CiAgICAgZWxzZQpAQCAtNTgwMyw3ICs1ODAwLDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpyZXN1bWUoKQogCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChoYXNBdWRpbygpICYmIGlzUGxheWluZygp
KSB8fCBtX2FzeW5jRXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCkgfHwgbV9jcmVhdGluZ0Nv
bnRyb2xzOworICAgIHJldHVybiAoaGFzQXVkaW8oKSAmJiBpc1BsYXlpbmcoKSkgfHwgbV9hc3lu
Y0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKSB8fCBtX2NyZWF0aW5nQ29udHJvbHM7CiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFWb2x1bWVEaWRDaGFuZ2UoKQpAQCAtNTk1
Miw3ICs1OTQ5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJn
ZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQoKQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIs
ICJoYXNUYXJnZXRzID0gIiwgaGFzVGFyZ2V0cyk7CiAgICAgYXV0byBldmVudCA9IFdlYktpdFBs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0
cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkRXZlbnQsIGhhc1RhcmdldHMpOwogICAg
IGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2
ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50
KFdURk1vdmUoZXZlbnQpKTsKICAgICBzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA2MWRiYWQ1YjI4MDFkNDk1
OWE3NjI3NzhlOGE2NzExNzJiNTRiODhjLi4zMmEyNDBhMDljOTY0NTE0NzhhZGMyMDdkM2Q5MDAw
MThlZTY1NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTcy
LDcgKzk3Miw3IEBAIHByaXZhdGU6CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV9mdWxs
c2NyZWVuVGFza1F1ZXVlOwogICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fcGxheWJhY2tU
YXJnZXRJc1dpcmVsZXNzUXVldWU7CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG1fcGxheWVkVGlt
ZVJhbmdlczsKLSAgICBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVl
dWU7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2
ZW50UXVldWU7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEZWZlcnJhYmxlVGFzazxU
aW1lcj4gbV92b2x1bWVSZXZlcnRUYXNrUXVldWU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCmluZGV4IDZkMzExOGJlNzQyOTM5OGMwN2FhZTBm
OTU5ZmVjZGMxMjY3ZmZkMDMuLjkwMDNlOWMxYjIyZDJkM2VlMzc5MTUwMjU4OWMzZjI2ODdlODIx
OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcApAQCAt
NDIsNyArNDIsNyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoVHJhY2tMaXN0QmFzZSk7
CiBUcmFja0xpc3RCYXNlOjpUcmFja0xpc3RCYXNlKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCkKICAgICAsIG1fZWxlbWVudChlbGVtZW50KQotICAgICwgbV9hc3luY0V2ZW50UXVl
dWUoKnRoaXMpCisgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50
UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgQVNTRVJUKCFjb250ZXh0IHx8IGlzPERvY3Vt
ZW50Pihjb250ZXh0KSk7CiAgICAgc3VzcGVuZElmTmVlZGVkKCk7CkBAIC05OCw3ICs5OCw3IEBA
IGJvb2wgVHJhY2tMaXN0QmFzZTo6Y29udGFpbnMoVHJhY2tCYXNlJiB0cmFjaykgY29uc3QKIAog
dm9pZCBUcmFja0xpc3RCYXNlOjpzY2hlZHVsZVRyYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
ZXZlbnROYW1lLCBSZWY8VHJhY2tCYXNlPiYmIHRyYWNrKQogewotICAgIG1fYXN5bmNFdmVudFF1
ZXVlLmVucXVldWVFdmVudChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUodHJhY2spKSk7Cisg
ICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChUcmFja0V2ZW50OjpjcmVhdGUoZXZl
bnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdU
Rk1vdmUodHJhY2spKSk7CiB9CiAKIHZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1bGVBZGRUcmFj
a0V2ZW50KFJlZjxUcmFja0Jhc2U+JiYgdHJhY2spCkBAIC0xNjEsMTIgKzE2MSwxMiBAQCB2b2lk
IFRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlQ2hhbmdlRXZlbnQoKQogICAgIC8vIFdoZW5ldmVyIGEg
dHJhY2sgaW4gYSBWaWRlb1RyYWNrTGlzdCB0aGF0IHdhcyBwcmV2aW91c2x5IG5vdCBzZWxlY3Rl
ZCBpcwogICAgIC8vIHNlbGVjdGVkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHF1ZXVlIGEgdGFzayB0
byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkCiAgICAgLy8gY2hhbmdlIGF0IHRoZSBWaWRlb1Ry
YWNrTGlzdCBvYmplY3QuCi0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1
ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50LCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogYm9vbCBUcmFja0xp
c3RCYXNlOjppc0NoYW5nZUV2ZW50U2NoZWR1bGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9h
c3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50c09mVHlwZShldmVudE5hbWVzKCkuY2hhbmdl
RXZlbnQpOworICAgIHJldHVybiBtX2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50c09m
VHlwZShldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQpOwogfQogCiBib29sIFRyYWNrTGlzdEJhc2U6
OmlzQW55VHJhY2tFbmFibGVkKCkgY29uc3QKQEAgLTE4MCwzMSArMTgwLDcgQEAgYm9vbCBUcmFj
a0xpc3RCYXNlOjppc0FueVRyYWNrRW5hYmxlZCgpIGNvbnN0CiAKIGJvb2wgVHJhY2tMaXN0QmFz
ZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
ICFtX2FzeW5jRXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgVHJhY2tM
aXN0QmFzZTo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKLXsKLSAgICBzd2l0
Y2ggKHJlYXNvbikgewotICAgIGNhc2UgUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZUNhY2hlOgot
ICAgIGNhc2UgUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZVdpbGxCZVN1c3BlbmRlZDoKLSAgICAg
ICAgbV9hc3luY0V2ZW50UXVldWUuc3VzcGVuZCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFJlYXNvbkZvclN1c3BlbnNpb246OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZDoKLSAgICBjYXNl
IFJlYXNvbkZvclN1c3BlbnNpb246OldpbGxEZWZlckxvYWRpbmc6Ci0gICAgICAgIC8vIERvIG5v
dGhpbmcsIHdlIGRvbid0IHBhdXNlIG1lZGlhIHBsYXliYWNrIGluIHRoZXNlIGNhc2VzLgotICAg
ICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQgVHJhY2tMaXN0QmFzZTo6cmVzdW1lKCkKLXsK
LSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUoKTsKLX0KLQotdm9pZCBUcmFja0xpc3RCYXNl
OjpzdG9wKCkKLXsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jbG9zZSgpOworICAgIHJldHVybiB0
cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tMaXN0QmFzZS5oCmluZGV4IDBiYmQ4NTgyZjU5ZjExYTM2OTIzZmM4NTdmNzZjMzI4
OGUyZmY5ODYuLjQyNTViYzE2MDk1YzgyMjA5MDRiMTQzYzhkOTY3ODM5ZTU0MTVkMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCkBAIC03Niw5ICs3Niw2IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRyYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
ZXZlbnROYW1lLCBSZWY8VHJhY2tCYXNlPiYmKTsKIAogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRv
Y3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25G
b3JTdXNwZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwotICAgIHZvaWQg
c3RvcCgpIGZpbmFsOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2b2lkIHJlZkV2ZW50VGFy
Z2V0KCkgZmluYWwgeyByZWYoKTsgfQpAQCAtODYsNyArODMsNyBAQCBwcml2YXRlOgogCiAgICAg
SFRNTE1lZGlhRWxlbWVudCogbV9lbGVtZW50OwogCi0gICAgTWFpblRocmVhZEdlbmVyaWNFdmVu
dFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOworICAgIFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJp
Y0V2ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCmluZGV4IDIyMTAxYWM1NzM1MGQ1ZDVhZTc3
NzNiMGI1NmZjYTg2OWZjNzA1MjUuLmViZWM4OTQzMTY2ODNhNDU5NmMxOTI4NDAzNjhhNjQ0YzVk
NDBlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgaW5s
aW5lIFdvcmtlcjo6V29ya2VyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6
UnVudGltZUZsYWdzIHJ1bnRpbWUKICAgICAsIG1faWRlbnRpZmllcigid29ya2VyOiIgKyBJbnNw
ZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQogICAgICwgbV9j
b250ZXh0UHJveHkoV29ya2VyR2xvYmFsU2NvcGVQcm94eTo6Y3JlYXRlKCp0aGlzKSkKICAgICAs
IG1fcnVudGltZUZsYWdzKHJ1bnRpbWVGbGFncykKLSAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykK
KyAgICAsIG1fZXZlbnRRdWV1ZShHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKIHsK
ICAgICBzdGF0aWMgYm9vbCBhZGRlZExpc3RlbmVyOwogICAgIGlmICghYWRkZWRMaXN0ZW5lcikg
ewpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlcjo6cG9zdE1lc3Nh
Z2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgbWVzc2FnCiB2b2lkIFdvcmtl
cjo6dGVybWluYXRlKCkKIHsKICAgICBtX2NvbnRleHRQcm94eS50ZXJtaW5hdGVXb3JrZXJHbG9i
YWxTY29wZSgpOwotICAgIG1fZXZlbnRRdWV1ZS5jYW5jZWxBbGxFdmVudHMoKTsKKyAgICBtX2V2
ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOwogfQogCiBib29sIFdvcmtlcjo6Y2FuU3VzcGVu
ZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CkBAIC0xNTQsMTYgKzE1NCw2IEBAIGJvb2wg
V29ya2VyOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXI6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikK
LXsKLSAgICBtX2V2ZW50UXVldWUuc3VzcGVuZCgpOwotfQotCi12b2lkIFdvcmtlcjo6cmVzdW1l
KCkKLXsKLSAgICBtX2V2ZW50UXVldWUucmVzdW1lKCk7Ci19Ci0KIGNvbnN0IGNoYXIqIFdvcmtl
cjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICJXb3JrZXIiOwpA
QCAtMTcyLDEyICsxNjIsMTEgQEAgY29uc3QgY2hhciogV29ya2VyOjphY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QKIHZvaWQgV29ya2VyOjpzdG9wKCkKIHsKICAgICB0ZXJtaW5hdGUoKTsKLSAg
ICBtX2V2ZW50UXVldWUuY2xvc2UoKTsKIH0KIAogYm9vbCBXb3JrZXI6Omhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fY29udGV4dFByb3h5Lmhhc1BlbmRpbmdBY3Rp
dml0eSgpIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9ldmVu
dFF1ZXVlLmhhc1BlbmRpbmdFdmVudHMoKTsKKyAgICByZXR1cm4gbV9jb250ZXh0UHJveHkuaGFz
UGVuZGluZ0FjdGl2aXR5KCkgfHwgQWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHko
KSB8fCBtX2V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKTsKIH0KIAogdm9pZCBXb3JrZXI6
Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29sIGlzT25MaW5lKQpAQCAtMjE3LDEyICsyMDYs
MTIgQEAgdm9pZCBXb3JrZXI6Om5vdGlmeUZpbmlzaGVkKCkKIAogdm9pZCBXb3JrZXI6OmVucXVl
dWVFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiB7Ci0gICAgbV9ldmVudFF1ZXVlLmVucXVldWVF
dmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RG
TW92ZShldmVudCkpOwogfQogCiB2b2lkIFdvcmtlcjo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZl
bnQpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9l
dmVudFF1ZXVlLmlzU3VzcGVuZGVkKCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJ
VFlfSU1QTElDQVRJT04oIW1fZXZlbnRRdWV1ZS0+aXNTdXNwZW5kZWQoKSk7CiAKICAgICBBYnN0
cmFjdFdvcmtlcjo6ZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgaWYgKGlzPEVycm9yRXZlbnQ+
KGV2ZW50KSAmJiAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCgpICYmIGV2ZW50LmlzVHJ1c3RlZCgp
ICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5k
ZXggNTcxY2Y2N2FhNTdmMzNlYzA1ZDgwYWM2M2NjNjVmOTc2MTFkMzkyOS4uZWUzMWM3Y2VjNWVm
ZTlmZmZiYTc0MGNjMDVjM2I1ODBmNzBjZjkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBA
IC04Myw4ICs4Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFs
OwogCiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmlu
YWw7Ci0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwotICAgIHZv
aWQgcmVzdW1lKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hh
ciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogCkBAIC05OCw3ICs5Niw3IEBA
IHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX3dvcmtlckNyZWF0aW9uVGltZTsKICAgICBi
b29sIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5IHsgZmFsc2Ug
fTsKICAgICBKU0M6OlJ1bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFnczsKLSAgICBHZW5lcmljRXZl
bnRRdWV1ZSBtX2V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPEdlbmVyaWNFdmVudFF1ZXVlPiBt
X2V2ZW50UXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5j
cHAKaW5kZXggOTVkMmNlNjc0MGU2OWM2ODJiNmNmNTM4N2Y2NGI3MTJlOTI4MTlhZi4uNzIxMWVi
NmZjYjU0ZjNmNDU3MjZjZWEzNjczMjEyYTg2NTgzN2NjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApA
QCAtNzAsMTMgKzcwLDEzIEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTZXJ2aWNlV29y
a2VyQ29udGFpbmVyKTsKIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OlNlcnZpY2VXb3JrZXJDb250
YWluZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTmF2aWdhdG9yQmFzZSYgbmF2
aWdhdG9yKQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX25hdmlnYXRv
cihuYXZpZ2F0b3IpCi0gICAgLCBtX21lc3NhZ2VRdWV1ZSgqdGhpcykKKyAgICAsIG1fbWVzc2Fn
ZVF1ZXVlKEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIHN1c3BlbmRJ
Zk5lZWRlZCgpOwogICAgIAogICAgIC8vIFdlIHNob3VsZCBxdWV1ZSBtZXNzYWdlcyB1bnRpbCB0
aGUgRE9NQ29udGVudExvYWRlZCBldmVudCBoYXMgZmlyZWQgb3Igc3RhcnRNZXNzYWdlcygpIGhh
cyBiZWVuIGNhbGxlZC4KICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpICYmIGRvd25jYXN0
PERvY3VtZW50PigqY29udGV4dCkucGFyc2luZygpKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS5z
dXNwZW5kKCk7CisgICAgICAgIG1fbWVzc2FnZVF1ZXVlLT5zZXRQYXVzZWQodHJ1ZSk7CiB9CiAK
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6On5TZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkKQEAgLTMx
NCw3ICszMTQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlv
bnMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OnN0YXJ0TWVzc2FnZXMoKQogewotICAgIG1fbWVzc2FnZVF1ZXVlLnJlc3VtZSgp
OworICAgIG1fbWVzc2FnZVF1ZXVlLT5zZXRQYXVzZWQoZmFsc2UpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZFdpdGhFeGNlcHRpb24oU2VydmljZVdvcmtlckpv
YiYgam9iLCBjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKQEAgLTQxMyw3ICs0MTMsNyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnBvc3RNZXNzYWdlKE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiYgbWVzc2FnZSwgU2VydgogCiAgICAgYXV0byBtZXNzYWdlRXZlbnQgPSBNZXNzYWdl
RXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3Zl
KG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51
bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUoc291cmNlKSk7CiAgICAgCi0gICAgbV9t
ZXNzYWdlUXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUobWVzc2FnZUV2ZW50KSk7CisgICAgbV9t
ZXNzYWdlUXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKG1lc3NhZ2VFdmVudCkpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Om5vdGlmeVJlZ2lzdHJhdGlvbklzU2V0dGxlZChj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCkBAIC01
MjMsMTYgKzUyMyw2IEBAIGJvb2wgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Y2FuU3VzcGVuZEZv
ckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuICFoYXNQZW5kaW5nQWN0aXZp
dHkoKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdXNwZW5kKFJlYXNvbkZv
clN1c3BlbnNpb24pCi17Ci0gICAgbV9tZXNzYWdlUXVldWUuc3VzcGVuZCgpOwotfQotCi12b2lk
IFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlc3VtZSgpCi17Ci0gICAgbV9tZXNzYWdlUXVldWUu
cmVzdW1lKCk7Ci19Ci0KIFNXQ2xpZW50Q29ubmVjdGlvbiYgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6ZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKTsKQEAgLTU4Myw3ICs1NzMsNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OnN0b3AoKQogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKICAgICByZW1vdmVBbGxFdmVu
dExpc3RlbmVycygpOwogICAgIG1fcmVhZHlQcm9taXNlID0gbnVsbHB0cjsKLSAgICBtX21lc3Nh
Z2VRdWV1ZS5jbG9zZSgpOwogICAgIGF1dG8gam9iTWFwID0gV1RGTW92ZShtX2pvYk1hcCk7CiAg
ICAgZm9yIChhdXRvJiBvbmdvaW5nSm9iIDogam9iTWFwLnZhbHVlcygpKSB7CiAgICAgICAgIGlm
IChvbmdvaW5nSm9iLmpvYi0+Y2FuY2VsUGVuZGluZ0xvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4
IDQ5OGEwY2I0NGIxMmQ1ZGJlNTc3ZDFlYjZlNzVhYTU1MTkwNzhiOWUuLjc1ZWE5NTMyMTkwZjBj
NjZjNjYwYmJlOWIyNWQ0YmNkN2M5MWQ5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtMTExLDggKzEx
MSw2IEBAIHByaXZhdGU6CiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIq
IGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhblN1c3BlbmRG
b3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmQoUmVh
c29uRm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICAK
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7IH0KICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIFNlcnZpY2VXb3JrZXJDb250YWluZXJFdmVudFRhcmdldEludGVy
ZmFjZVR5cGU7IH0KQEAgLTE0Myw4ICsxNDEsNyBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3Qg
bV9sYXN0T25nb2luZ1NldHRsZWRSZWdpc3RyYXRpb25JZGVudGlmaWVyIHsgMCB9OwogICAgIEhh
c2hNYXA8dWludDY0X3QsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IG1fb25nb2luZ1Nl
dHRsZWRSZWdpc3RyYXRpb25zOwotICAgIEdlbmVyaWNFdmVudFF1ZXVlIG1fbWVzc2FnZVF1ZXVl
OwotCisgICAgVW5pcXVlUmVmPEdlbmVyaWNFdmVudFF1ZXVlPiBtX21lc3NhZ2VRdWV1ZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379848</attachid>
            <date>2019-09-30 15:48:43 -0700</date>
            <delta_ts>2019-09-30 16:50:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202373-20190930154842.patch</filename>
            <type>text/plain</type>
            <size>53985</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOThkNjQ2M2M1OGQ2Y2E2
YWRmNjYxNjVhMTQ3MmMxZmVkOGNiNDg5OC4uYzBiNDJmN2Y4NTg3MTkxOTgxMDY1ZjMwZDYyNjM2
ZjIxNDQyZDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxOS0wOS0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgR2VuZXJpY0V2ZW50
UXVldWUgYW4gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDIzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIEdlbmVyaWNFdmVudFF1ZXVlIGFuIEFjdGl2ZURPTU9iamVj
dCBzbyB0aGF0IGl0IGlzIGd1YXJhbnRlZWQgdG8gbmV2ZXIgZmlyZSBhbnkgZXZlbnRzIHdoaWxl
CisgICAgICAgIHN1c3BlbmRlZCB3aXRob3V0IHJlcXVpcmluZyB0aGUgY2xpZW50IHRvIGV4cGxp
Y2l0bHkgc3VzcGVuZC9yZXN1bWUgdGhlIGV2ZW50IHF1ZXVlLgorCisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRNZWRpYUtleVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNlc3Npb246On5XZWJLaXRNZWRpYUtleVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZp
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzdG9w
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtl
eVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpNZWRpYVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpTb3Vy
Y2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpoYXNQZW5kaW5nQWN0
aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyTGlzdDo6U291cmNlQnVmZmVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJMaXN0OjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
ckxpc3Q6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c3Rv
cCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAg
KiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjp0aWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2xhcmF0aXZlQW5pbWF0aW9uOjpuZWVkc1RpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xh
cmF0aXZlQW5pbWF0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5p
bWF0aW9uOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9u
OjpyZXN1bWUpOgorICAgICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oOgor
ICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OkdlbmVyaWNFdmVudFF1ZXVlQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnNldFBhdXNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OmNhblN1c3BlbmRGb3JEb2N1bWVu
dFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0V2ZW50UXVldWVC
YXNlPFQ+OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNFdmVudFF1ZXVlQmFz
ZTxUPjo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNFdmVudFF1ZXVlQmFzZTxU
Pjo6cmVzY2hlZHVsZUFsbEV2ZW50c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVy
aWNFdmVudFF1ZXVlQmFzZTxUPjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljRXZl
bnRRdWV1ZUJhc2U8VD46OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYWlu
VGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL0dlbmVyaWNF
dmVudFF1ZXVlLmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNo
TWVzc2FnZXMpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpjYW5jZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVl
dWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlDaGFuZ2VkRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja0xpc3RCYXNlOjpUcmFja0xpc3RCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
TGlzdEJhc2U6OnNjaGVkdWxlVHJhY2tFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xp
c3RCYXNlOjpzY2hlZHVsZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlz
dEJhc2U6OmlzQ2hhbmdlRXZlbnRTY2hlZHVsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhY2tMaXN0QmFzZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6Cisg
ICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpXb3JrZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyOjp0ZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlcjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIu
aDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0
YXJ0TWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
c3RvcCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aDoKKwogMjAxOS0wOS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlZmluZSByZXN0cmljdGlvbnMgZm9yIFgtVGVtcC1UYWJsZXQgSFRUUCBoZWFkZXIgZXhw
ZXJpbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IDcyMGZjNzRkOTQ5OGRjOWI0ZDc1ZTkzNmYz
NGE0OTg0ZTFmNjE3MzcuLjU1MDhiMzc4Y2VmODg4MzY2NjdiNWRlOWNkOTZmNDI2Yzg5Mzc5ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgTWVkaWFLZXlTZXNzaW9uOjpN
ZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxN
ZWRpYUsKICAgICAsIG1fc2Vzc2lvblR5cGUoc2Vzc2lvblR5cGUpCiAgICAgLCBtX2ltcGxlbWVu
dGF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pKQogICAgICwgbV9pbnN0YW5jZVNlc3Npb24o
V1RGTW92ZShpbnN0YW5jZVNlc3Npb24pKQotICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQorICAg
ICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlz
KSkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20t
bWVkaWFrZXlzLWNyZWF0ZXNlc3Npb24KICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92
ZW1iZXIgMjAxNgpAQCAtNjE0LDcgKzYxNCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1
ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyCiAg
ICAgLy8gICAgaW50ZXJmYWNlIHdpdGggaXRzIHR5cGUgYXR0cmlidXRlIHNldCB0byBtZXNzYWdl
IGFuZCBpdHMgaXNUcnVzdGVkIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0cnVlLCBhbmQgZGlz
cGF0Y2ggaXQgYXQgdGhlCiAgICAgLy8gICAgc2Vzc2lvbi4KICAgICBhdXRvIG1lc3NhZ2VFdmVu
dCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVu
dCwge21lc3NhZ2VUeXBlLCBtZXNzYWdlLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCl9LCBFdmVudDo6
SXNUcnVzdGVkOjpZZXMpOwotICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZSht
ZXNzYWdlRXZlbnQpKTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKG1l
c3NhZ2VFdmVudCkpOwogfQogCiB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVz
ZXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbnB1dFN0YXR1c2VzKQpA
QCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNl
cyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGluCiAgICAgICAgIG1fc3Rh
dHVzZXMudW5jaGVja2VkQXBwZW5kKHsgV1RGTW92ZShzdGF0dXMuZmlyc3QpLCB0b01lZGlhS2V5
U3RhdHVzKHN0YXR1cy5zZWNvbmQpIH0pOwogCiAgICAgLy8gNS4gUXVldWUgYSB0YXNrIHRvIGZp
cmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5c3RhdHVzZXNjaGFuZ2UgYXQgdGhlIHNlc3Npb24u
Ci0gICAgbV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5rZXlzdGF0dXNlc2NoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlzdGF0dXNlc2NoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIAogICAgIC8vIDYuIFF1ZXVlIGEg
dGFzayB0byBydW4gdGhlIEF0dGVtcHQgdG8gUmVzdW1lIFBsYXliYWNrIElmIE5lY2Vzc2FyeSBh
bGdvcml0aG0gb24gZWFjaCBvZiB0aGUgbWVkaWEgZWxlbWVudChzKSB3aG9zZSBtZWRpYUtleXMg
YXR0cmlidXRlIGlzIHRoZSBNZWRpYUtleXMgb2JqZWN0IHRoYXQgY3JlYXRlZCB0aGUgc2Vzc2lv
bi4KICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzaygKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDVhNjJl
YWMyZDdmZTYzMDM1ZDBmY2VjY2IwYTY1YzNiYmE2Y2U0ZDMuLjk1YmFmMzU0OGQ3OTc4NGVhMmQ1
MWFhNDg0OWYxMGQwZmVhMmM5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMTE0LDcgKzExNCw3IEBA
IHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJl
ZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9p
bnN0YW5jZVNlc3Npb247Ci0gICAgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlIG1fZXZlbnRR
dWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50
UXVldWU7CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7CiAgICAgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAgZG91YmxlIG1f
Zmlyc3REZWNyeXB0VGltZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uY3BwCmluZGV4IDcwYzcwZTNkZGJjYzc5MWM4N2Y5ZTg3NjMyMWNlYWJiZDNlNzZkNjEu
LjllOTNjN2IyODYxZTY0MDgwNjk0YWNmYTNmZmYzNDI5OWI5NjcwYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJLaXRN
ZWRpYUtleVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBXZQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwg
bV9rZXlzKCZrZXlzKQogICAgICwgbV9rZXlTeXN0ZW0oa2V5U3lzdGVtKQotICAgICwgbV9hc3lu
Y0V2ZW50UXVldWUoKnRoaXMpCisgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2Vu
ZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3Nlc3Npb24oa2V5cy5jZG0o
KS5jcmVhdGVTZXNzaW9uKCp0aGlzKSkKICAgICAsIG1fa2V5UmVxdWVzdFRpbWVyKCp0aGlzLCAm
V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJlZCkKICAgICAsIG1fYWRk
S2V5VGltZXIoKnRoaXMsICZXZWJLaXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQp
CkBAIC02OCw3ICs2OCw3IEBAIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6fldlYktpdE1lZGlhS2V5
U2Vzc2lvbigpCiAgICAgaWYgKG1fc2Vzc2lvbikKICAgICAgICAgbV9zZXNzaW9uLT5zZXRDbGll
bnQobnVsbHB0cik7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jYW5jZWxBbGxFdmVudHMoKTsK
KyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7CiB9CiAKIHZvaWQgV2Vi
S2l0TWVkaWFLZXlTZXNzaW9uOjpjbG9zZSgpCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBXZWJL
aXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQoKQogICAgICAgICBpZiAoZGlkU3Rv
cmVLZXkpIHsKICAgICAgICAgICAgIGF1dG8ga2V5YWRkZWRFdmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLndlYmtpdGtleWFkZGVkRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBrZXlhZGRlZEV2ZW50LT5zZXRU
YXJnZXQodGhpcyk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShrZXlhZGRlZEV2ZW50KSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+
ZW5xdWV1ZUV2ZW50KFdURk1vdmUoa2V5YWRkZWRFdmVudCkpOwogCiAgICAgICAgICAgICBBU1NF
UlQobV9rZXlzKTsKICAgICAgICAgICAgIG1fa2V5cy0+a2V5QWRkZWQoKTsKQEAgLTIwNyw3ICsy
MDcsNyBAQCB2b2lkIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoVWludDhBcnJh
eSogbWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVQogewogICAgIGF1dG8gZXZlbnQgPSBXZWJL
aXRNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXltZXNz
YWdlRXZlbnQsIG1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMKTsKICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50
KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CiB9CiAKIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWVkaWFLZXlFcnJv
ckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQpAQCAtMjE2LDcgKzIxNiw3IEBA
IHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWVkaWFLZXlFcnJvckNvZGUg
ZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0CiAKICAgICBhdXRvIGtleWVycm9yRXZlbnQgPSBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgIGtleWVycm9yRXZlbnQtPnNl
dFRhcmdldCh0aGlzKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92
ZShrZXllcnJvckV2ZW50KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChX
VEZNb3ZlKGtleWVycm9yRXZlbnQpKTsKIH0KIAogU3RyaW5nIFdlYktpdE1lZGlhS2V5U2Vzc2lv
bjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC0yMzgsMjIgKzIzOCwxMSBA
QCBTdHJpbmcgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKIAogYm9vbCBXZWJLaXRNZWRpYUtleVNlc3Npb246Omhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX2tleXMgJiYgbV9zZXNzaW9uKSB8fCBtX2FzeW5j
RXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCi17Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpyZXN1bWUoKQotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAobV9rZXlzICYmIG1fc2Vzc2lv
bikgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKTsKIH0KIAogdm9pZCBX
ZWJLaXRNZWRpYUtleVNlc3Npb246OnN0b3AoKQogewotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNs
b3NlKCk7CiAgICAgY2xvc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAppbmRleCBkZGE4ZmVmMzYxM2Q3NmM0MGQyNDIxN2M0ZTVmYjAxZTM3MGMzNTVkLi40
MjMzYWNlMjY3NWM0NWZiYjYwNjBmYzBiMDk1YjhhY2Y3OTQ3NTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaApAQCAtNzcsOCArNzcsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29u
Rm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICB2b2lk
IHN0b3AoKSBmaW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24o
KSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QgZmluYWw7CkBAIC05MCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fa2V5U3lz
dGVtOwogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBSZWZQdHI8V2ViS2l0TWVkaWFLZXlF
cnJvcj4gbV9lcnJvcjsKLSAgICBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2
ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9h
c3luY0V2ZW50UXVldWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IG1f
c2Vzc2lvbjsKIAogICAgIHN0cnVjdCBQZW5kaW5nS2V5UmVxdWVzdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDdjYmM2
YTEzMzUxZTBkMzJjZTI1NWE5YmFkY2I5NzQ0ZGFmNGQ0NDguLmI5NDg5MjdhZTYyNmQ3OWY1NTY2
MTRhMzJmZGRkNGQ0ZGRkOTVkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgTWVkaWFTb3Vy
Y2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2R1cmF0aW9uKE1lZGlhVGltZTo6aW52
YWxpZFRpbWUoKSkKICAgICAsIG1fcGVuZGluZ1NlZWtUaW1lKE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQorICAgICwgbV9hc3luY0V2ZW50
UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpLmxvZ2dlcigpKQogI2VuZGlmCkBAIC05NzMsMzggKzk3MywxNCBAQCB2b2lkIE1lZGlh
U291cmNlOjpvcGVuSWZJbkVuZGVkU3RhdGUoKQogCiBib29sIE1lZGlhU291cmNlOjpoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUgfHwgbV9hc3luY0V2
ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpCisgICAgcmV0dXJuIG1fcHJpdmF0ZSB8fCBtX2Fz
eW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpCiAgICAgICAgIHx8IEFjdGl2ZURPTU9i
amVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2U6OnN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBzdGF0aWNfY2FzdDxpbnQ+KHJlYXNvbikpOwotCi0gICAgc3dpdGNoIChyZWFzb24p
IHsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAgICBjYXNlIFJl
YXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAgIG1fYXN5bmNF
dmVudFF1ZXVlLnN1c3BlbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFzb25Gb3JT
dXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBSZWFzb25Gb3JT
dXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBk
b24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU291cmNlOjpyZXN1bWUoKQotewotICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7Ci0KLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUoKTsKLX0K
LQogdm9pZCBNZWRpYVNvdXJjZTo6c3RvcCgpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNsb3NlKCk7CiAgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQogICAgICAgICBtX21lZGlhRWxlbWVudC0+ZGV0YWNoTWVkaWFTb3VyY2UoKTsKICAg
ICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpDbG9zZWQ7CkBAIC0xMDEzLDcgKzk4OSw4IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnN0b3AoKQogCiBib29sIE1lZGlhU291cmNlOjpjYW5TdXNwZW5k
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNDbG9zZWQoKSAm
JiAhbV9hc3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOworICAgIC8vIEZJWE1FOiBE
byBiZXR0ZXIuCisgICAgcmV0dXJuIGlzQ2xvc2VkKCk7CiB9CiAKIGNvbnN0IGNoYXIqIE1lZGlh
U291cmNlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTEwODAsNyArMTA1Nyw3IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRO
YW1lKQogICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICBldmVudC0+c2V0VGFy
Z2V0KHRoaXMpOwogCi0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUo
ZXZlbnQpKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZl
bnQpKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTb3VyY2U6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDJmZWIwMGJmYzVmZDkwNjEwMGQyMDUzYmNlYzQx
MjMyYmE4OGRkOTcuLjhhMWVmY2EyMjhmMWQ5NWM4NjA3ZmMzZTg5YjM5OTA4MmVlY2EwYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgK
QEAgLTEyNiw4ICsxMjYsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlh
U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgIHZvaWQgc3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIHZv
aWQgc3RvcCgpIGZpbmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lv
bigpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdCBmaW5hbDsKQEAgLTE2OCw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhVGltZSBt
X2R1cmF0aW9uOwogICAgIE1lZGlhVGltZSBtX3BlbmRpbmdTZWVrVGltZTsKICAgICBSZWFkeVN0
YXRlIG1fcmVhZHlTdGF0ZSB7IFJlYWR5U3RhdGU6OkNsb3NlZCB9OwotICAgIE1haW5UaHJlYWRH
ZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRo
cmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2
b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNDIwNmRmYmM5ZGJj
N2RhZTkyMjJlNjM4Y2RiZTlmMTMxM2U1OTliNS4uNzA4M2RjN2VmYTFiMzQxYzFlZTA5YWJmOWI2
NTY3NjRkMGM1M2ViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFNvdXJjZUJ1ZmZlcjo6
U291cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZh
dGUsIE1lZGlhCiAgICAgOiBBY3RpdmVET01PYmplY3Qoc291cmNlLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCiAgICAgLCBtX3ByaXZhdGUoV1RGTW92ZShzb3VyY2VCdWZmZXJQcml2YXRlKSkK
ICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQor
ICAgICwgbV9hc3luY0V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVh
dGUoKnRoaXMpKQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcigqdGhpcywgJlNvdXJjZUJ1ZmZl
cjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCkKICAgICAsIG1fYXBwZW5kV2luZG93U3RhcnQoTWVk
aWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9hcHBlbmRXaW5kb3dFbmQoTWVkaWFUaW1lOjpw
b3NpdGl2ZUluZmluaXRlVGltZSgpKQpAQCAtNTI4LDMxICs1MjgsMTEgQEAgTWVkaWFUaW1lIFNv
dXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUZhc3RTZWVrVGltZUZvck1lZGlhVGltZShj
b25zdCBNZWRpYVQKIAogYm9vbCBTb3VyY2VCdWZmZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fc291cmNlIHx8IG1fYXN5bmNFdmVudFF1ZXVlLmhhc1BlbmRp
bmdFdmVudHMoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXI6OnN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbiByZWFzb24pCi17Ci0gICAgc3dpdGNoIChyZWFzb24pIHsKLSAgICBjYXNlIFJlYXNv
bkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246
OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2Ny
aXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVm
ZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBw
bGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lk
IFNvdXJjZUJ1ZmZlcjo6cmVzdW1lKCkKLXsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUo
KTsKKyAgICByZXR1cm4gbV9zb3VyY2UgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdF
dmVudHMoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnN0b3AoKQogewotICAgIG1fYXN5bmNF
dmVudFF1ZXVlLmNsb3NlKCk7CiAgICAgbV9hcHBlbmRCdWZmZXJUaW1lci5zdG9wKCk7CiAgICAg
bV9yZW1vdmVUaW1lci5zdG9wKCk7CiB9CkBAIC01NzcsNyArNTU3LDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXI6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lKQogICAgIGF1
dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwog
Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAg
ICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChjb25z
dCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggMDhjNDYxZGIzZDk5
Y2I1YjNkZWE3N2YxYTg0ZTQ1ZWFmMGVmOGEwYS4uZGQ1ZGFmNmM5MDY2ZmZjNmI4OTE5NmU1ZDkx
MGY2NjEzZjUzNjEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0xNDQsOCArMTQ0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgdm9pZCBzdG9w
KCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZp
bmFsOwpAQCAtMjE3LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8U291cmNlQnVmZmVy
UHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIE1lZGlhU291cmNlKiBtX3NvdXJjZTsKLSAgICBNYWlu
VGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVm
PE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAgICAgQXBw
ZW5kTW9kZSBtX21vZGUgeyBBcHBlbmRNb2RlOjpTZWdtZW50cyB9OwogCiAgICAgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAppbmRleCA2Nzgy
MjQ2ZmQ0YzUwYjEzMTVlMWQ5MDQ1YmE0YWRkOTg0MGY5NmE1Li5iNGQ4MmM0OWM1YmZkM2ViY2Zh
OWEzNTE2NWFmZjBmZWVhYThjYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNvdXJjZUJ1ZmZlckxpc3QpOwogCiBTb3VyY2VC
dWZmZXJMaXN0OjpTb3VyY2VCdWZmZXJMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKCp0aGlzKQorICAgICwgbV9hc3luY0V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVu
dFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQpAQCAt
OTgsMzYgKzk4LDEyIEBAIHZvaWQgU291cmNlQnVmZmVyTGlzdDo6c2NoZWR1bGVFdmVudChjb25z
dCBBdG9tU3RyaW5nJiBldmVudE5hbWUpCiAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
OwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5l
bnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1
ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwogfQogCiBib29sIFNvdXJjZUJ1ZmZlckxpc3Q6OmNh
blN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAhbV9h
c3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZl
ckxpc3Q6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgc3dpdGNo
IChyZWFzb24pIHsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAg
ICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAg
IG1fYXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3Ro
aW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFNvdXJjZUJ1ZmZlckxpc3Q6OnJlc3VtZSgpCi17
Ci0gICAgbV9hc3luY0V2ZW50UXVldWUucmVzdW1lKCk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVy
TGlzdDo6c3RvcCgpCi17Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuY2xvc2UoKTsKKyAgICByZXR1
cm4gIW1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIGNvbnN0IGNo
YXIqIFNvdXJjZUJ1ZmZlckxpc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3Qu
aAppbmRleCAyNmQwYWVhYzdhNTNkNDJkMGJlODMxNTJkYTI0MTRlMWUyMTBjMjZkLi5iNDEwMDNh
M2I0MjY2MmRlOGIyOTZiOTBmYTMxNzI4MDQzNjFjNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaApAQCAtNzksMTIg
Kzc5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7
IGRlcmVmKCk7IH0KIAogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigp
IGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5h
bDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAg
IGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIE1h
aW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBVbmlxdWVS
ZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKIAogICAg
IFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyPj4gbV9saXN0OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA5ZjIzMDljY2Yz
OTJiZTc4YzJhY2VmZTEzOWQ2OGQyOTY0ZjMxYTU1Li5jNjI3ZjMzNGViYmEwOTQwY2ViODRiODI1
YWY2ZTgyMDBkM2MxMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQXVkaW9Db250ZXh0OjpBdWRp
b0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1
ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1
ZTxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1
ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgLy8g
QWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9ubHkgYWZ0ZXIgcGFnZSBu
YXZpZ2F0ZS4KICAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVu
ZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhvZC4KQEAgLTE2Niw3ICsx
NjYsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdAogI2VuZGlmCiAgICAgLCBtX2lzT2ZmbGlu
ZUNvbnRleHQodHJ1ZSkKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9ldmVudFF1ZXVlKG1ha2VVbmlxdWU8TWFpblRocmVh
ZEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUoTWFpblRocmVh
ZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1v
bigpOwogCkBAIC0zMzYsOCArMzM2LDYgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN0b3AoKQogICAg
IEFTU0VSVChkb2N1bWVudCgpKTsKICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRp
YSgpOwogCi0gICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwotCiAgICAgdW5pbml0aWFsaXplKCk7
CiAgICAgY2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCmluZGV4IGQ5OTEyOTQ5YTM5NGFiODEzNGUxOTViMWM5ZjI5Mzc5NDMwNzkz
ZjguLjM0MTk5ODFjMzU3NGMzNzNlZTk3NjFiZmZlYjVkZTBkYmRhYWFiMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNDUsNiArNDUs
NyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nSGFzaC5oPgogCkBAIC00MTcsNyArNDE4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8VmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4+IG1fc3RhdGVSZWFjdGlvbnM7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9u
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fZXZl
bnRRdWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2
ZW50UXVldWU7CiAKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwogICAg
IFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAppbmRleCAy
YTYwM2RhYWE2MDEwZDY0NjQ1NzkwMTc4NmY2NzA1NTBjNTRkNjEzLi5mNGI2OTc4MzdlNDc0NTdj
YzYwMmZiODA4MmIxZjQ4NzgwYTJmMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKERlY2xhcmF0aXZlQW5pbWF0aW9uKTsKIAogRGVjbGFyYXRpdmVB
bmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNv
bnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikKICAgICA6IFdlYkFuaW1hdGlvbihvd25p
bmdFbGVtZW50LmRvY3VtZW50KCkpCi0gICAgLCBtX2V2ZW50UXVldWUob3duaW5nRWxlbWVudCkK
KyAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShv
d25pbmdFbGVtZW50KSkKICAgICAsIG1fb3duaW5nRWxlbWVudCgmb3duaW5nRWxlbWVudCkKICAg
ICAsIG1fYmFja2luZ0FuaW1hdGlvbihjb25zdF9jYXN0PEFuaW1hdGlvbiY+KGJhY2tpbmdBbmlt
YXRpb24pKQogewpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjp0
aWNrKCkKICAgICAvLyBtYXBzIGNvbnRhaW5pbmcgcnVubmluZyBDU1MgVHJhbnNpdGlvbnMgYW5k
IENTUyBBbmltYXRpb25zIGZvciBhIGdpdmVuIGVsZW1lbnQuCiAgICAgaWYgKHdhc1JlbGV2YW50
ICYmIHBsYXlTdGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpJZGxlKSB7CiAgICAg
ICAgIGRpc2Fzc29jaWF0ZUZyb21Pd25pbmdFbGVtZW50KCk7Ci0gICAgICAgIG1fZXZlbnRRdWV1
ZS5jbG9zZSgpOworICAgICAgICBtX2V2ZW50UXVldWUtPmNsb3NlKCk7CiAgICAgfQogfQogCkBA
IC04MywxMiArODMsMTIgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZGlzYXNzb2NpYXRl
RnJvbU93bmluZ0VsZW1lbnQoKQogCiBib29sIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpuZWVkc1Rp
Y2soKSBjb25zdAogewotICAgIHJldHVybiBXZWJBbmltYXRpb246Om5lZWRzVGljaygpIHx8IG1f
ZXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7CisgICAgcmV0dXJuIFdlYkFuaW1hdGlvbjo6
bmVlZHNUaWNrKCkgfHwgbV9ldmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIHZv
aWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnJlbW92ZSgpCiB7Ci0gICAgbV9ldmVudFF1ZXVlLmNs
b3NlKCk7CisgICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwogICAgIFdlYkFuaW1hdGlvbjo6cmVt
b3ZlKCk7CiB9CiAKQEAgLTMzNSwyNiArMzM1LDIzIEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRp
b246OmVucXVldWVET01FdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFNlY29uZHMK
ICAgICBBU1NFUlQobV9vd25pbmdFbGVtZW50KTsKICAgICBhdXRvIHRpbWUgPSBzZWNvbmRzVG9X
ZWJBbmltYXRpb25zQVBJVGltZShlbGFwc2VkVGltZSkgLyAxMDAwOwogICAgIGlmIChpczxDU1NB
bmltYXRpb24+KHRoaXMpKQotICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KEFuaW1h
dGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBkb3duY2FzdDxDU1NBbmltYXRpb24+KHRoaXMp
LT5hbmltYXRpb25OYW1lKCksIHRpbWUpKTsKKyAgICAgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVl
RXZlbnQoQW5pbWF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGRvd25jYXN0PENTU0FuaW1h
dGlvbj4odGhpcyktPmFuaW1hdGlvbk5hbWUoKSwgdGltZSkpOwogICAgIGVsc2UgaWYgKGlzPENT
U1RyYW5zaXRpb24+KHRoaXMpKQotICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFRy
YW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4o
dGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0eSgpLCB0aW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9F
bGVtZW50TmFtZUZvckV2ZW50cyhtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpKSk7CisgICAg
ICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50VHlwZSwgZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4odGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0
eSgpLCB0aW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhtX293
bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpKSk7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRp
b246OnN0b3AoKQogewotICAgIG1fZXZlbnRRdWV1ZS5jbG9zZSgpOwogICAgIFdlYkFuaW1hdGlv
bjo6c3RvcCgpOwogfQogCiB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpzdXNwZW5kKFJlYXNv
bkZvclN1c3BlbnNpb24gcmVhc29uKQogewotICAgIG1fZXZlbnRRdWV1ZS5zdXNwZW5kKCk7CiAg
ICAgV2ViQW5pbWF0aW9uOjpzdXNwZW5kKHJlYXNvbik7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVB
bmltYXRpb246OnJlc3VtZSgpCiB7Ci0gICAgbV9ldmVudFF1ZXVlLnJlc3VtZSgpOwogICAgIFdl
YkFuaW1hdGlvbjo6cmVzdW1lKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5kZXggNDA3ZTkwMDMzMTlkMjVjOWY3N2NmYmNiODNl
ZmRjYzJjZTNlOTY4OS4uOGJmYWUyMTdmNWRmZTk2MjE3NTEwNTAzYTdmYWUwNzM1YTdjNDk4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgK
QEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FzUGVuZGluZyB7IGZhbHNl
IH07CiAgICAgQW5pbWF0aW9uRWZmZWN0UGhhc2UgbV9wcmV2aW91c1BoYXNlIHsgQW5pbWF0aW9u
RWZmZWN0UGhhc2U6OklkbGUgfTsKIAotICAgIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSBt
X2V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4g
bV9ldmVudFF1ZXVlOwogCiAgICAgRWxlbWVudCogbV9vd25pbmdFbGVtZW50OwogICAgIFJlZjxB
bmltYXRpb24+IG1fYmFja2luZ0FuaW1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2
ZW50UXVldWUuY3BwCmluZGV4IGU3OGJlNDgxZTlmMWQyMzY4OGVhOWRkZTZjNmFiZGYyNzNiMTE3
MGMuLjdhNDE1MzA3ZmRhYjcyNmIxMGJjMmRkYTI4MWQ3NDhiZjRiMjA2NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcApAQCAtNDYsNyArNDYsOCBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBUYXNrUXVldWVDb25zdHJ1Y3RvcjxUaW1lcj4gewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjpHZW5lcmljRXZlbnRRdWV1ZUJhc2Uo
RXZlbnRUYXJnZXQmIG93bmVyKQotICAgIDogbV9vd25lcihvd25lcikKKyAgICA6IEFjdGl2ZURP
TU9iamVjdChvd25lci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX293bmVyKG93
bmVyKQogICAgICwgbV90YXNrUXVldWUoVGFza1F1ZXVlQ29uc3RydWN0b3I8VD46OmNvbnN0cnVj
dChvd25lci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQogewogfQpAQCAtMTE5LDkgKzEyMCwz
MCBAQCBib29sIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6aGFzUGVuZGluZ0V2ZW50c09mVHlw
ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlKSBjbwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
dm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnN1c3BlbmQoKQordm9pZCBHZW5lcmljRXZl
bnRRdWV1ZUJhc2U8VD46OnNldFBhdXNlZChib29sIHNob3VsZFBhdXNlKQogewotICAgIEFTU0VS
VCghbV9pc1N1c3BlbmRlZCk7CisgICAgaWYgKG1faXNQYXVzZWRCeUNsaWVudCA9PSBzaG91bGRQ
YXVzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1BhdXNlZEJ5Q2xpZW50ID0gc2hvdWxk
UGF1c2U7CisgICAgaWYgKHNob3VsZFBhdXNlKQorICAgICAgICBtX3Rhc2tRdWV1ZS5jYW5jZWxB
bGxUYXNrcygpOworICAgIGVsc2UKKyAgICAgICAgcmVzY2hlZHVsZUFsbEV2ZW50c0lmTmVlZGVk
KCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29sIEdlbmVyaWNFdmVudFF1ZXVlQmFz
ZTxUPjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIEdlbmVyaWNFdmVudFF1
ZXVlQmFzZTxUPjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQoreworICAgIGlmIChtX2lz
U3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKICAgICBtX2lzU3VzcGVuZGVkID0gdHJ1ZTsK
ICAgICBtX3Rhc2tRdWV1ZS5jYW5jZWxBbGxUYXNrcygpOwogfQpAQCAtMTMzLDEyICsxNTUsNDYg
QEAgdm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnJlc3VtZSgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICByZXNjaGVkdWxlQWxsRXZlbnRz
SWZOZWVkZWQoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgR2VuZXJpY0V2ZW50
UXVldWVCYXNlPFQ+OjpyZXNjaGVkdWxlQWxsRXZlbnRzSWZOZWVkZWQoKQoreworICAgIGlmICht
X2lzUGF1c2VkQnlDbGllbnQgfHwgbV9pc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGVuZGluZ0V2ZW50cy5zaXplKCk7ICsraSkK
ICAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soc3RkOjpiaW5kKCZHZW5lcmljRXZlbnRR
dWV1ZUJhc2U6OmRpc3BhdGNoT25lRXZlbnQsIHRoaXMpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK3ZvaWQgR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjpzdG9wKCkKK3sKKyAgICBjbG9z
ZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uc3QgY2hhciogR2VuZXJpY0V2ZW50
UXVldWVCYXNlPFQ+OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
IkdlbmVyaWNFdmVudFF1ZXVlQmFzZSI7Cit9CisKIHRlbXBsYXRlIGNsYXNzIEdlbmVyaWNFdmVu
dFF1ZXVlQmFzZTxUaW1lcj47CiB0ZW1wbGF0ZSBjbGFzcyBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dD47CiAKK1VuaXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4g
R2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQpCit7Cisg
ICAgYXV0byBldmVudFF1ZXVlID0gbWFrZVVuaXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4oZXZl
bnRUYXJnZXQpOworICAgIGV2ZW50UXVldWUtPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVy
biBldmVudFF1ZXVlOworfQorCitVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVl
PiBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShFdmVudFRhcmdldCYgZXZlbnRU
YXJnZXQpCit7CisgICAgYXV0byBldmVudFF1ZXVlID0gbWFrZVVuaXF1ZVJlZjxNYWluVGhyZWFk
R2VuZXJpY0V2ZW50UXVldWU+KGV2ZW50VGFyZ2V0KTsKKyAgICBldmVudFF1ZXVlLT5zdXNwZW5k
SWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZXZlbnRRdWV1ZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vR2VuZXJpY0V2ZW50UXVldWUuaAppbmRleCA0YzU2NDIzYTllMWU0N2E5MzZjMDk0ZWM0ZmY1
NDdiMjNkYzExMzBhLi44NmJkOWQzYTAwYmVmZDk2MWNhNzE3MThjNzdlNjliYmZmZmE4YzY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaApAQCAtMjUsMTAgKzI1LDEyIEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCw3ICs0MCw3IEBAIGNs
YXNzIFRpbWVyOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KLWNsYXNzIEdlbmVyaWNFdmVudFF1ZXVlQmFzZSB7CitjbGFzcyBHZW5lcmljRXZl
bnRRdWV1ZUJhc2UgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBHZW5lcmljRXZlbnRRdWV1ZUJhc2Uo
RXZlbnRUYXJnZXQmKTsKQEAgLTUxLDI0ICs1MywzNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQ
ZW5kaW5nRXZlbnRzKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzT2ZUeXBlKGNv
bnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIHZvaWQgc3VzcGVuZCgpOwotICAgIHZvaWQg
cmVzdW1lKCk7CisgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCk7CiAKICAgICBib29sIGlzU3VzcGVu
ZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N1c3BlbmRlZDsgfQogCiBwcml2YXRlOgogICAgIHZv
aWQgZGlzcGF0Y2hPbmVFdmVudCgpOwogCisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVu
c2lvbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFsOworICAgIHZvaWQgc3Vz
cGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lkIHJlc3VtZSgpIGZpbmFs
OworCisgICAgdm9pZCByZXNjaGVkdWxlQWxsRXZlbnRzSWZOZWVkZWQoKTsKKwogICAgIEV2ZW50
VGFyZ2V0JiBtX293bmVyOwogICAgIEdlbmVyaWNUYXNrUXVldWU8VD4gbV90YXNrUXVldWU7CiAg
ICAgRGVxdWU8UmVmUHRyPEV2ZW50Pj4gbV9wZW5kaW5nRXZlbnRzOwogICAgIGJvb2wgbV9pc0Ns
b3NlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lzUGF1c2VkQnlDbGllbnQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNlIH07CiB9OwogCiAvLyBBbGwgaW5zdGFuY2Vz
IG9mIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSB1c2UgYSBzaGFyZWQgVGltZXIgZm9yIGRp
c3BhdGNoaW5nIGV2ZW50cy4KIGNsYXNzIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSA6IHB1
YmxpYyBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VGltZXI+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMg
VW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gY3JlYXRlKEV2ZW50VGFyZ2V0
Jik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2
ZW50UXVldWU+IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8TWFpblRo
cmVhZEdlbmVyaWNFdmVudFF1ZXVlLCBXZWJDb3JlOjpFdmVudFRhcmdldCY+KFdlYkNvcmU6OkV2
ZW50VGFyZ2V0Jik7CiAgICAgZXhwbGljaXQgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlKEV2
ZW50VGFyZ2V0JiBldmVudFRhcmdldCkKICAgICAgICAgOiBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8
VGltZXI+KGV2ZW50VGFyZ2V0KQogICAgIHsKQEAgLTc4LDYgKzkyLDEwIEBAIHB1YmxpYzoKIGNs
YXNzIEdlbmVyaWNFdmVudFF1ZXVlIDogcHVibGljIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CisgICAgc3RhdGljIFVuaXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4gY3JlYXRlKEV2ZW50
VGFyZ2V0Jik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIFVuaXF1ZVJlZjxHZW5lcmljRXZlbnRR
dWV1ZT4gV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxHZW5lcmljRXZl
bnRRdWV1ZSwgV2ViQ29yZTo6RXZlbnRUYXJnZXQmPihXZWJDb3JlOjpFdmVudFRhcmdldCYpOwog
ICAgIGV4cGxpY2l0IEdlbmVyaWNFdmVudFF1ZXVlKEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCkK
ICAgICAgICAgOiBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4o
ZXZlbnRUYXJnZXQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggODQy
ZWUyOTQzZGZjZDY3MGFiODA5MjYwZGMxMTUyYTA0NTYxMmJjOC4uMWQ1MDQwMmQ3N2M1MWEwMjBm
NDM1MGY4ZjlmYWY2YjQ5MjA0MWQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBA
IC05OCw3ICs5OCw3IEBAIE1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBNCiAgICAgOiBBY3RpdmVET01P
YmplY3QoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgLCBtX2lkZW50aWZpZXIobG9jYWwp
CiAgICAgLCBtX3JlbW90ZUlkZW50aWZpZXIocmVtb3RlKQotICAgICwgbV9ldmVudFF1ZXVlKCp0
aGlzKQorICAgICwgbV9ldmVudFF1ZXVlKEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMp
KQogewogICAgIExPRyhNZXNzYWdlUG9ydHMsICJDcmVhdGVkIE1lc3NhZ2VQb3J0ICVzICglcCkg
aW4gcHJvY2VzcyAlIiBQUkl1NjQsIG1faWRlbnRpZmllci5sb2dTdHJpbmcoKS51dGY4KCkuZGF0
YSgpLCB0aGlzLCBQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKQEAgLTIyOCwx
NyArMjI4LDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6Y2xvc2UoKQogCiAgICAgTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6OmZyb21Db250ZXh0KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLm1l
c3NhZ2VQb3J0Q2xvc2VkKG1faWRlbnRpZmllcik7CiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5l
cnMoKTsKLSAgICBtX2V2ZW50UXVldWUuY2xvc2UoKTsKLX0KLQotdm9pZCBNZXNzYWdlUG9ydDo6
c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQotewotICAgIG1fZXZlbnRRdWV1ZS5zdXNwZW5k
KCk7Ci19Ci0KLXZvaWQgTWVzc2FnZVBvcnQ6OnJlc3VtZSgpCi17Ci0gICAgbV9ldmVudFF1ZXVl
LnJlc3VtZSgpOworICAgIG1fZXZlbnRRdWV1ZS0+Y2xvc2UoKTsKIH0KIAogdm9pZCBNZXNzYWdl
UG9ydDo6Y29udGV4dERlc3Ryb3llZCgpCkBAIC0yODAsNyArMjcwLDcgQEAgdm9pZCBNZXNzYWdl
UG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAgICAgICAgICAgICBpZiAoY29udGV4dElzV29ya2Vy
ICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KS5pc0Nsb3NpbmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBhdXRv
IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKLSAgICAgICAgICAgIG1f
ZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0
cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgICAgICAgICBtX2V2
ZW50UXVldWUtPmVucXVldWVFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRz
KSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKICAgICAgICAgfQogICAgIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggYTRkYzIyYTc2ZDZjYjljZmViNGYwZmJl
YTM3ODdmZjlhZDc5YmJjZC4uMjY1NmJiNDM0Y2VlNjcxNzVmZDZiMTVhMGJiOTJjODMxYTA4Y2Nh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTg1LDggKzg1LDYgQEAgcHVibGljOgog
ICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5h
bWUoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNp
b24oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikg
ZmluYWw7Ci0gICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICB2b2lkIGNvbnRleHREZXN0cm95
ZWQoKSBmaW5hbDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IGNsb3NlKCk7IH0KICAgICBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwpAQCAtMTI5LDcgKzEyNyw3IEBAIHBy
aXZhdGU6CiAgICAgTWVzc2FnZVBvcnRJZGVudGlmaWVyIG1fcmVtb3RlSWRlbnRpZmllcjsKIAog
ICAgIG11dGFibGUgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1fcmVmQ291bnQgeyAxIH07Ci0gICAg
R2VuZXJpY0V2ZW50UXVldWUgbV9ldmVudFF1ZXVlOworICAgIFVuaXF1ZVJlZjxHZW5lcmljRXZl
bnRRdWV1ZT4gbV9ldmVudFF1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDRkMTJhMTIzNzJlZjYz
MzI5NjMxNzE4YjZkZTUwODFiZDEzMzkzMS4uMzgzYTQxNmRjYWRlZmVhNTFhYmQxZjU2YTNlOGI5
MjBjYjhkNjIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBA
IC00MjYsNyArNDI2LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1fc2NhblRp
bWVyKCp0aGlzLCAmSFRNTE1lZGlhRWxlbWVudDo6c2NhblRpbWVyRmlyZWQpCiAgICAgLCBtX3Bs
YXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcigqdGhpcywgJkhU
TUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlv
bnNUaW1lckZpcmVkKQogICAgICwgbV9zZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1lcigq
dGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRpbWVy
RmlyZWQpCi0gICAgLCBtX2FzeW5jRXZlbnRRdWV1ZSgqdGhpcykKKyAgICAsIG1fYXN5bmNFdmVu
dFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKICAgICAs
IG1fbGFzdFRpbWVVcGRhdGVFdmVudE1vdmllVGltZShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCkpCiAgICAgLCBtX2ZpcnN0VGltZVBsYXlpbmcodHJ1ZSkKICAgICAsIG1fcGxheWlu
ZyhmYWxzZSkKQEAgLTU3Miw3ICs1NzIsNyBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlh
RWxlbWVudCgpCiAgICAgYmVnaW5JZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCk7
CiAgICAgYWxsTWVkaWFFbGVtZW50cygpLnJlbW92ZSh0aGlzKTsKIAotICAgIG1fYXN5bmNFdmVu
dFF1ZXVlLmNsb3NlKCk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmNsb3NlKCk7CiAKICAgICBz
ZXRTaG91bGREZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAgdW5yZWdpc3RlcldpdGhEb2N1bWVu
dChkb2N1bWVudCgpKTsKQEAgLTEwMjEsNyArMTAyMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2NoZWR1bGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUpCiAgICAgLy8gRG9u
J3Qgc2V0IHRoZSBldmVudCB0YXJnZXQsIHRoZSBldmVudCBxdWV1ZSB3aWxsIHNldCBpdCBpbiBH
ZW5lcmljRXZlbnRRdWV1ZTo6dGltZXJGaXJlZCBhbmQgc2V0dGluZyBpdCBoZXJlCiAgICAgLy8g
d2lsbCB0cmlnZ2VyIGFuIEFTU0VSVCBpZiB0aGlzIGVsZW1lbnQgaGFzIGJlZW4gbWFya2VkIGZv
ciBkZWxldGlvbi4KIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3Zl
KGV2ZW50KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2
ZW50KSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVSZXNvbHZlUGVuZGlu
Z1BsYXlQcm9taXNlcygpCkBAIC0xODQ5LDExICsxODQ5LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGlt
ZSkKICAgICAgICAgaWYgKGV2ZW50VGFzay5zZWNvbmQtPnN0YXJ0VGltZSgpID49IGV2ZW50VGFz
ay5zZWNvbmQtPmVuZFRpbWUoKSkgewogICAgICAgICAgICAgYXV0byBlbnRlckV2ZW50ID0gRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW50ZXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICAgICAgICAgIGVudGVyRXZlbnQtPnNldFRh
cmdldChldmVudFRhc2suc2Vjb25kKTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVu
cXVldWVFdmVudChXVEZNb3ZlKGVudGVyRXZlbnQpKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVu
dFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShlbnRlckV2ZW50KSk7CiAKICAgICAgICAgICAg
IGF1dG8gZXhpdEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXhpdEV2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgICAgICAg
ICAgZXhpdEV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNrLnNlY29uZCk7Ci0gICAgICAgICAgICBt
X2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShleGl0RXZlbnQpKTsKKyAgICAg
ICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShleGl0RXZlbnQp
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQ7CiAg
ICAgICAgICAgICBpZiAoZXZlbnRUYXNrLmZpcnN0ID09IGV2ZW50VGFzay5zZWNvbmQtPnN0YXJ0
TWVkaWFUaW1lKCkpCkBAIC0xODYxLDcgKzE4NjEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS5leGl0RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5j
ZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFzay5zZWNv
bmQpOwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUo
ZXZlbnQpKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RG
TW92ZShldmVudCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xODc0LDcgKzE4NzQsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVk
aWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgZm9yIChhdXRvJiBhZmZlY3RlZFRyYWNrIDogYWZmZWN0
ZWRUcmFja3MpIHsKICAgICAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmN1ZWNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pOwogICAgICAgICBldmVudC0+c2V0VGFyZ2V0KGFmZmVjdGVkVHJhY2spOwotICAg
ICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAg
ICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIAog
ICAgICAgICAvLyAuLi4gaWYgdGhlIHRleHQgdHJhY2sgaGFzIGEgY29ycmVzcG9uZGluZyB0cmFj
ayBlbGVtZW50LCB0byB0aGVuIGZpcmUgYQogICAgICAgICAvLyBzaW1wbGUgZXZlbnQgbmFtZWQg
Y3VlY2hhbmdlIGF0IHRoZSB0cmFjayBlbGVtZW50IGFzIHdlbGwuCkBAIC0xODgzLDcgKzE4ODMs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29u
c3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgICAgICBhdXRvIHRyYWNrRWxlbWVudCA9
IG1ha2VSZWZQdHIoZG93bmNhc3Q8TG9hZGFibGVUZXh0VHJhY2s+KCphZmZlY3RlZFRyYWNrKS50
cmFja0VsZW1lbnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQodHJhY2tFbGVtZW50KTsKICAgICAg
ICAgICAgIGV2ZW50LT5zZXRUYXJnZXQodHJhY2tFbGVtZW50KTsKLSAgICAgICAgICAgIG1fYXN5
bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAgICAgICBt
X2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMjIyMyw3ICsyMjIzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgZXJyb3IK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVuZGluZ0V2ZW50c0FuZENhbGxiYWNrcygp
CiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUu
Y2FuY2VsQWxsRXZlbnRzKCk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50
cygpOwogCiAgICAgZm9yIChhdXRvJiBzb3VyY2UgOiBjaGlsZHJlbk9mVHlwZTxIVE1MU291cmNl
RWxlbWVudD4oKnRoaXMpKQogICAgICAgICBzb3VyY2UuY2FuY2VsUGVuZGluZ0Vycm9yRXZlbnQo
KTsKQEAgLTI2MTQsNyArMjYxNCw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5
ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KiBpbml0RGF0YSkKIAogICAgIGF1
dG8gZXZlbnQgPSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LndlYmtpdG5lZWRrZXlFdmVudCwgaW5pdERhdGEpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhp
cyk7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsK
KyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjc2MSw3ICsyNzYxLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0
cmluZyYgaW4KICAgICAvLyAgICAgIGluaXREYXRhVHlwZSA9IGluaXREYXRhVHlwZQogICAgIC8v
ICAgICAgaW5pdERhdGEgPSBpbml0RGF0YQogICAgIE1lZGlhRW5jcnlwdGVkRXZlbnRJbml0IGlu
aXRpYWxpemVyIHsgaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSB9OwotICAgIG1fYXN5
bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChNZWRpYUVuY3J5cHRlZEV2ZW50OjpjcmVhdGUoZXZl
bnROYW1lcygpLmVuY3J5cHRlZEV2ZW50LCBpbml0aWFsaXplciwgRXZlbnQ6OklzVHJ1c3RlZDo6
WWVzKSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChNZWRpYUVuY3J5cHRl
ZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuY3J5cHRlZEV2ZW50LCBpbml0aWFsaXplciwg
RXZlbnQ6OklzVHJ1c3RlZDo6WWVzKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJXYWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC01NzIwLDcgKzU3MjAsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlVGFza1F1ZXVlcygpCiAjaWYgRU5BQkxFKEVOQ1JZUFRF
RF9NRURJQSkKICAgICBtX2VuY3J5cHRlZE1lZGlhUXVldWUuY2xvc2UoKTsKICNlbmRpZgotICAg
IG1fYXN5bmNFdmVudFF1ZXVlLmNsb3NlKCk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmNsb3Nl
KCk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX3ZvbHVtZVJldmVydFRhc2tRdWV1
ZS5jbG9zZSgpOwogI2VuZGlmCkBAIC01NzYxLDcgKzU3NjEsNiBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAgICAgc3dpdGNoIChy
ZWFzb24pIHsKICAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKICAgICAg
ICAgc3RvcFdpdGhvdXREZXN0cm95aW5nTWVkaWFQbGF5ZXIoKTsKLSAgICAgICAgbV9hc3luY0V2
ZW50UXVldWUuc3VzcGVuZCgpOwogICAgICAgICBzZXRCdWZmZXJpbmdQb2xpY3koQnVmZmVyaW5n
UG9saWN5OjpNYWtlUmVzb3VyY2VzUHVyZ2VhYmxlKTsKICAgICAgICAgbV9tZWRpYVNlc3Npb24t
PmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBhZ2VD
b25zZW50VG9SZXN1bWVNZWRpYSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTc3OSw4ICs1Nzc4LDYg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogCiAgICAgc2V0SW5BY3RpdmVEb2N1
bWVudCh0cnVlKTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLnJlc3VtZSgpOwotCiAgICAgaWYg
KCFtX21lZGlhU2Vzc2lvbi0+cGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZygpKQogICAg
ICAgICBkb2N1bWVudCgpLmFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigqdGhpcyk7CiAgICAgZWxz
ZQpAQCAtNTgwMyw3ICs1ODAwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQog
CiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIChoYXNBdWRpbygpICYmIGlzUGxheWluZygpKSB8fCBtX2FzeW5jRXZlbnRRdWV1
ZS5oYXNQZW5kaW5nRXZlbnRzKCkgfHwgbV9jcmVhdGluZ0NvbnRyb2xzOworICAgIHJldHVybiAo
aGFzQXVkaW8oKSAmJiBpc1BsYXlpbmcoKSkgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRp
bmdFdmVudHMoKSB8fCBtX2NyZWF0aW5nQ29udHJvbHM7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFWb2x1bWVEaWRDaGFuZ2UoKQpAQCAtNTk1Miw3ICs1OTQ5LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2Vk
RXZlbnQoKQogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJoYXNUYXJnZXRzID0gIiwgaGFz
VGFyZ2V0cyk7CiAgICAgYXV0byBldmVudCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmls
aXR5RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFi
aWxpdHljaGFuZ2VkRXZlbnQsIGhhc1RhcmdldHMpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhp
cyk7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsK
KyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKICAg
ICBzY2hlZHVsZVVwZGF0ZU1lZGlhU3RhdGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaAppbmRleCA2MWRiYWQ1YjI4MDFkNDk1OWE3NjI3NzhlOGE2NzExNzJiNTRi
ODhjLi4zMmEyNDBhMDljOTY0NTE0NzhhZGMyMDdkM2Q5MDAwMThlZTY1NTY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTcyLDcgKzk3Miw3IEBAIHByaXZhdGU6
CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV9mdWxsc2NyZWVuVGFza1F1ZXVlOwogICAg
IEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fcGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzUXVldWU7
CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG1fcGxheWVkVGltZVJhbmdlczsKLSAgICBNYWluVGhy
ZWFkR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPE1h
aW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBEZWZlcnJhYmxlVGFzazxUaW1lcj4gbV92b2x1bWVSZXZlcnRU
YXNrUXVldWU7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VHJhY2tMaXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJh
c2UuY3BwCmluZGV4IDZkMzExOGJlNzQyOTM5OGMwN2FhZTBmOTU5ZmVjZGMxMjY3ZmZkMDMuLjkw
MDNlOWMxYjIyZDJkM2VlMzc5MTUwMjU4OWMzZjI2ODdlODIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNwcApAQCAtNDIsNyArNDIsNyBAQCBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoVHJhY2tMaXN0QmFzZSk7CiBUcmFja0xpc3RCYXNlOjpUcmFj
a0xpc3RCYXNlKEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fZWxl
bWVudChlbGVtZW50KQotICAgICwgbV9hc3luY0V2ZW50UXVldWUoKnRoaXMpCisgICAgLCBtX2Fz
eW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykp
CiB7CiAgICAgQVNTRVJUKCFjb250ZXh0IHx8IGlzPERvY3VtZW50Pihjb250ZXh0KSk7CiAgICAg
c3VzcGVuZElmTmVlZGVkKCk7CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgVHJhY2tMaXN0QmFzZTo6
Y29udGFpbnMoVHJhY2tCYXNlJiB0cmFjaykgY29uc3QKIAogdm9pZCBUcmFja0xpc3RCYXNlOjpz
Y2hlZHVsZVRyYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lLCBSZWY8VHJhY2tC
YXNlPiYmIHRyYWNrKQogewotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChUcmFj
a0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUodHJhY2spKSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUt
PmVucXVldWVFdmVudChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUodHJhY2spKSk7CiB9CiAK
IHZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1bGVBZGRUcmFja0V2ZW50KFJlZjxUcmFja0Jhc2U+
JiYgdHJhY2spCkBAIC0xNjEsMTIgKzE2MSwxMiBAQCB2b2lkIFRyYWNrTGlzdEJhc2U6OnNjaGVk
dWxlQ2hhbmdlRXZlbnQoKQogICAgIC8vIFdoZW5ldmVyIGEgdHJhY2sgaW4gYSBWaWRlb1RyYWNr
TGlzdCB0aGF0IHdhcyBwcmV2aW91c2x5IG5vdCBzZWxlY3RlZCBpcwogICAgIC8vIHNlbGVjdGVk
LCB0aGUgdXNlciBhZ2VudCBtdXN0IHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50
IG5hbWVkCiAgICAgLy8gY2hhbmdlIGF0IHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QuCi0gICAg
bV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6
Tm8pKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKIH0KIAogYm9vbCBUcmFja0xpc3RCYXNlOjppc0NoYW5nZUV2ZW50
U2NoZWR1bGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9hc3luY0V2ZW50UXVldWUuaGFzUGVu
ZGluZ0V2ZW50c09mVHlwZShldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQpOworICAgIHJldHVybiBt
X2FzeW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50c09mVHlwZShldmVudE5hbWVzKCkuY2hh
bmdlRXZlbnQpOwogfQogCiBib29sIFRyYWNrTGlzdEJhc2U6OmlzQW55VHJhY2tFbmFibGVkKCkg
Y29uc3QKQEAgLTE4MCwzMSArMTgwLDcgQEAgYm9vbCBUcmFja0xpc3RCYXNlOjppc0FueVRyYWNr
RW5hYmxlZCgpIGNvbnN0CiAKIGJvb2wgVHJhY2tMaXN0QmFzZTo6Y2FuU3VzcGVuZEZvckRvY3Vt
ZW50U3VzcGVuc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX2FzeW5jRXZlbnRRdWV1ZS5o
YXNQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgVHJhY2tMaXN0QmFzZTo6c3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKLXsKLSAgICBzd2l0Y2ggKHJlYXNvbikgewotICAgIGNh
c2UgUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZUNhY2hlOgotICAgIGNhc2UgUmVhc29uRm9yU3Vz
cGVuc2lvbjo6UGFnZVdpbGxCZVN1c3BlbmRlZDoKLSAgICAgICAgbV9hc3luY0V2ZW50UXVldWUu
c3VzcGVuZCgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246
OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZDoKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246
OldpbGxEZWZlckxvYWRpbmc6Ci0gICAgICAgIC8vIERvIG5vdGhpbmcsIHdlIGRvbid0IHBhdXNl
IG1lZGlhIHBsYXliYWNrIGluIHRoZXNlIGNhc2VzLgotICAgICAgICBicmVhazsKLSAgICB9Ci19
Ci0KLXZvaWQgVHJhY2tMaXN0QmFzZTo6cmVzdW1lKCkKLXsKLSAgICBtX2FzeW5jRXZlbnRRdWV1
ZS5yZXN1bWUoKTsKLX0KLQotdm9pZCBUcmFja0xpc3RCYXNlOjpzdG9wKCkKLXsKLSAgICBtX2Fz
eW5jRXZlbnRRdWV1ZS5jbG9zZSgpOworICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNr
TGlzdEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCmlu
ZGV4IDBiYmQ4NTgyZjU5ZjExYTM2OTIzZmM4NTdmNzZjMzI4OGUyZmY5ODYuLjQyNTViYzE2MDk1
YzgyMjA5MDRiMTQzYzhkOTY3ODM5ZTU0MTVkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tMaXN0QmFzZS5oCkBAIC03Niw5ICs3Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
Y2hlZHVsZVRyYWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lLCBSZWY8VHJhY2tC
YXNlPiYmKTsKIAogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNv
bnN0IGZpbmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsK
LSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogCiAgICAg
Ly8gRXZlbnRUYXJnZXQKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsg
fQpAQCAtODYsNyArODMsNyBAQCBwcml2YXRlOgogCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbV9l
bGVtZW50OwogCi0gICAgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1
ZXVlOworICAgIFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fYXN5bmNF
dmVudFF1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuY3BwCmluZGV4IDIyMTAxYWM1NzM1MGQ1ZDVhZTc3NzNiMGI1NmZjYTg2OWZjNzA1MjUu
LmViZWM4OTQzMTY2ODNhNDU5NmMxOTI4NDAzNjhhNjQ0YzVkNDBlY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgaW5saW5lIFdvcmtlcjo6V29ya2VyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWUK
ICAgICAsIG1faWRlbnRpZmllcigid29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFj
dG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpKQogICAgICwgbV9jb250ZXh0UHJveHkoV29ya2VyR2xv
YmFsU2NvcGVQcm94eTo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRp
bWVGbGFncykKLSAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKKyAgICAsIG1fZXZlbnRRdWV1ZShH
ZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBzdGF0aWMgYm9vbCBhZGRl
ZExpc3RlbmVyOwogICAgIGlmICghYWRkZWRMaXN0ZW5lcikgewpAQCAtMTQ2LDcgKzE0Niw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFdvcmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU0M6OkpTVmFsdWUgbWVzc2FnCiB2b2lkIFdvcmtlcjo6dGVybWluYXRlKCkKIHsKICAg
ICBtX2NvbnRleHRQcm94eS50ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOwotICAgIG1fZXZl
bnRRdWV1ZS5jYW5jZWxBbGxFdmVudHMoKTsKKyAgICBtX2V2ZW50UXVldWUtPmNhbmNlbEFsbEV2
ZW50cygpOwogfQogCiBib29sIFdvcmtlcjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lv
bigpIGNvbnN0CkBAIC0xNTQsMTYgKzE1NCw2IEBAIGJvb2wgV29ya2VyOjpjYW5TdXNwZW5kRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBX
b3JrZXI6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKLXsKLSAgICBtX2V2ZW50UXVldWUu
c3VzcGVuZCgpOwotfQotCi12b2lkIFdvcmtlcjo6cmVzdW1lKCkKLXsKLSAgICBtX2V2ZW50UXVl
dWUucmVzdW1lKCk7Ci19Ci0KIGNvbnN0IGNoYXIqIFdvcmtlcjo6YWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICJXb3JrZXIiOwpAQCAtMTcyLDEyICsxNjIsMTEgQEAg
Y29uc3QgY2hhciogV29ya2VyOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKIHZvaWQgV29y
a2VyOjpzdG9wKCkKIHsKICAgICB0ZXJtaW5hdGUoKTsKLSAgICBtX2V2ZW50UXVldWUuY2xvc2Uo
KTsKIH0KIAogYm9vbCBXb3JrZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fY29udGV4dFByb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IEFjdGl2ZURPTU9i
amVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9ldmVudFF1ZXVlLmhhc1BlbmRpbmdFdmVu
dHMoKTsKKyAgICByZXR1cm4gbV9jb250ZXh0UHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwg
QWN0aXZlRE9NT2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBtX2V2ZW50UXVldWUtPmhh
c1BlbmRpbmdFdmVudHMoKTsKIH0KIAogdm9pZCBXb3JrZXI6Om5vdGlmeU5ldHdvcmtTdGF0ZUNo
YW5nZShib29sIGlzT25MaW5lKQpAQCAtMjE3LDEyICsyMDYsMTIgQEAgdm9pZCBXb3JrZXI6Om5v
dGlmeUZpbmlzaGVkKCkKIAogdm9pZCBXb3JrZXI6OmVucXVldWVFdmVudChSZWY8RXZlbnQ+JiYg
ZXZlbnQpCiB7Ci0gICAgbV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CisgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwogfQogCiB2
b2lkIFdvcmtlcjo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiB7Ci0gICAgUkVMRUFTRV9B
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9ldmVudFF1ZXVlLmlzU3VzcGVuZGVk
KCkpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW1fZXZl
bnRRdWV1ZS0+aXNTdXNwZW5kZWQoKSk7CiAKICAgICBBYnN0cmFjdFdvcmtlcjo6ZGlzcGF0Y2hF
dmVudChldmVudCk7CiAgICAgaWYgKGlzPEVycm9yRXZlbnQ+KGV2ZW50KSAmJiAhZXZlbnQuZGVm
YXVsdFByZXZlbnRlZCgpICYmIGV2ZW50LmlzVHJ1c3RlZCgpICYmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggNTcxY2Y2N2FhNTdmMzNlYzA1
ZDgwYWM2M2NjNjVmOTc2MTFkMzkyOS4uZWUzMWM3Y2VjNWVmZTlmZmZiYTc0MGNjMDVjM2I1ODBm
NzBjZjkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC04Myw4ICs4Myw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCiAgICAgYm9vbCBjYW5TdXNw
ZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5k
KFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAg
ICAgdm9pZCBzdG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0IGZpbmFsOwogCkBAIC05OCw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgTW9ub3Rv
bmljVGltZSBtX3dvcmtlckNyZWF0aW9uVGltZTsKICAgICBib29sIG1fc2hvdWxkQnlwYXNzTWFp
bldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5IHsgZmFsc2UgfTsKICAgICBKU0M6OlJ1bnRpbWVG
bGFncyBtX3J1bnRpbWVGbGFnczsKLSAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX2V2ZW50UXVldWU7
CisgICAgVW5pcXVlUmVmPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggOTVkMmNlNjc0MGU2
OWM2ODJiNmNmNTM4N2Y2NGI3MTJlOTI4MTlhZi4uNzIxMWViNmZjYjU0ZjNmNDU3MjZjZWEzNjcz
MjEyYTg2NTgzN2NjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtNzAsMTMgKzcwLDEzIEBAIFdU
Rl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTZXJ2aWNlV29ya2VyQ29udGFpbmVyKTsKIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OlNlcnZpY2VXb3JrZXJDb250YWluZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgTmF2aWdhdG9yQmFzZSYgbmF2aWdhdG9yKQogICAgIDogQWN0aXZl
RE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX25hdmlnYXRvcihuYXZpZ2F0b3IpCi0gICAgLCBt
X21lc3NhZ2VRdWV1ZSgqdGhpcykKKyAgICAsIG1fbWVzc2FnZVF1ZXVlKEdlbmVyaWNFdmVudFF1
ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogICAgIAogICAg
IC8vIFdlIHNob3VsZCBxdWV1ZSBtZXNzYWdlcyB1bnRpbCB0aGUgRE9NQ29udGVudExvYWRlZCBl
dmVudCBoYXMgZmlyZWQgb3Igc3RhcnRNZXNzYWdlcygpIGhhcyBiZWVuIGNhbGxlZC4KICAgICBp
ZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpICYmIGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCku
cGFyc2luZygpKQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS5zdXNwZW5kKCk7CisgICAgICAgIG1f
bWVzc2FnZVF1ZXVlLT5zZXRQYXVzZWQodHJ1ZSk7CiB9CiAKIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6On5TZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taXNlKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0TWVzc2Fn
ZXMoKQogewotICAgIG1fbWVzc2FnZVF1ZXVlLnJlc3VtZSgpOworICAgIG1fbWVzc2FnZVF1ZXVl
LT5zZXRQYXVzZWQoZmFsc2UpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Ompv
YkZhaWxlZFdpdGhFeGNlcHRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBFeGNlcHRp
b24mIGV4Y2VwdGlvbikKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6OnBvc3RNZXNzYWdlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2Vy
dgogCiAgICAgYXV0byBtZXNzYWdlRXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdl
UG9ydDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQ
b3J0cykpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7
IH0sIFdURk1vdmUoc291cmNlKSk7CiAgICAgCi0gICAgbV9tZXNzYWdlUXVldWUuZW5xdWV1ZUV2
ZW50KFdURk1vdmUobWVzc2FnZUV2ZW50KSk7CisgICAgbV9tZXNzYWdlUXVldWUtPmVucXVldWVF
dmVudChXVEZNb3ZlKG1lc3NhZ2VFdmVudCkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250
YWluZXI6Om5vdGlmeVJlZ2lzdHJhdGlvbklzU2V0dGxlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCkBAIC01MjMsMTYgKzUyMyw2IEBAIGJvb2wg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigp
IGNvbnN0CiAgICAgcmV0dXJuICFoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KIAotdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCi17Ci0gICAg
bV9tZXNzYWdlUXVldWUuc3VzcGVuZCgpOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnJlc3VtZSgpCi17Ci0gICAgbV9tZXNzYWdlUXVldWUucmVzdW1lKCk7Ci19Ci0KIFNXQ2xp
ZW50Q29ubmVjdGlvbiYgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZW5zdXJlU1dDbGllbnRDb25u
ZWN0aW9uKCkKIHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKQEAgLTU4
Myw3ICs1NzMsNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0b3AoKQogICAgIG1f
aXNTdG9wcGVkID0gdHJ1ZTsKICAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogICAgIG1f
cmVhZHlQcm9taXNlID0gbnVsbHB0cjsKLSAgICBtX21lc3NhZ2VRdWV1ZS5jbG9zZSgpOwogICAg
IGF1dG8gam9iTWFwID0gV1RGTW92ZShtX2pvYk1hcCk7CiAgICAgZm9yIChhdXRvJiBvbmdvaW5n
Sm9iIDogam9iTWFwLnZhbHVlcygpKSB7CiAgICAgICAgIGlmIChvbmdvaW5nSm9iLmpvYi0+Y2Fu
Y2VsUGVuZGluZ0xvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDQ5OGEwY2I0NGIxMmQ1ZGJlNTc3
ZDFlYjZlNzVhYTU1MTkwNzhiOWUuLjc1ZWE5NTMyMTkwZjBjNjZjNjYwYmJlOWIyNWQ0YmNkN2M5
MWQ5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtMTExLDggKzExMSw2IEBAIHByaXZhdGU6CiAgICAg
Ly8gQWN0aXZlRE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24o
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmlu
YWw7Ci0gICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICAKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0
aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAgICBFdmVudFRhcmdl
dEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNl
cnZpY2VXb3JrZXJDb250YWluZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KQEAgLTE0Myw4
ICsxNDEsNyBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9sYXN0T25nb2luZ1NldHRsZWRS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHsgMCB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXk+IG1fb25nb2luZ1NldHRsZWRSZWdpc3RyYXRpb25zOwot
ICAgIEdlbmVyaWNFdmVudFF1ZXVlIG1fbWVzc2FnZVF1ZXVlOwotCisgICAgVW5pcXVlUmVmPEdl
bmVyaWNFdmVudFF1ZXVlPiBtX21lc3NhZ2VRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379857</attachid>
            <date>2019-09-30 16:50:36 -0700</date>
            <delta_ts>2019-09-30 16:53:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202373-20190930165036.patch</filename>
            <type>text/plain</type>
            <size>54261</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOThkNjQ2M2M1OGQ2Y2E2
YWRmNjYxNjVhMTQ3MmMxZmVkOGNiNDg5OC4uYzBiNDJmN2Y4NTg3MTkxOTgxMDY1ZjMwZDYyNjM2
ZjIxNDQyZDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxOS0wOS0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgR2VuZXJpY0V2ZW50
UXVldWUgYW4gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDIzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIEdlbmVyaWNFdmVudFF1ZXVlIGFuIEFjdGl2ZURPTU9iamVj
dCBzbyB0aGF0IGl0IGlzIGd1YXJhbnRlZWQgdG8gbmV2ZXIgZmlyZSBhbnkgZXZlbnRzIHdoaWxl
CisgICAgICAgIHN1c3BlbmRlZCB3aXRob3V0IHJlcXVpcmluZyB0aGUgY2xpZW50IHRvIGV4cGxp
Y2l0bHkgc3VzcGVuZC9yZXN1bWUgdGhlIGV2ZW50IHF1ZXVlLgorCisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRNZWRpYUtleVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNlc3Npb246On5XZWJLaXRNZWRpYUtleVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZp
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzdG9w
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtl
eVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpNZWRpYVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpTb3Vy
Y2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpoYXNQZW5kaW5nQWN0
aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyTGlzdDo6U291cmNlQnVmZmVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJMaXN0OjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
ckxpc3Q6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c3Rv
cCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAg
KiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjp0aWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2xhcmF0aXZlQW5pbWF0aW9uOjpuZWVkc1RpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xh
cmF0aXZlQW5pbWF0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5p
bWF0aW9uOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9u
OjpyZXN1bWUpOgorICAgICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oOgor
ICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OkdlbmVyaWNFdmVudFF1ZXVlQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnNldFBhdXNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OmNhblN1c3BlbmRGb3JEb2N1bWVu
dFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0V2ZW50UXVldWVC
YXNlPFQ+OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNFdmVudFF1ZXVlQmFz
ZTxUPjo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNFdmVudFF1ZXVlQmFzZTxU
Pjo6cmVzY2hlZHVsZUFsbEV2ZW50c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVy
aWNFdmVudFF1ZXVlQmFzZTxUPjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljRXZl
bnRRdWV1ZUJhc2U8VD46OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYWlu
VGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL0dlbmVyaWNF
dmVudFF1ZXVlLmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNo
TWVzc2FnZXMpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpjYW5jZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVl
dWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlDaGFuZ2VkRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja0xpc3RCYXNlOjpUcmFja0xpc3RCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
TGlzdEJhc2U6OnNjaGVkdWxlVHJhY2tFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xp
c3RCYXNlOjpzY2hlZHVsZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlz
dEJhc2U6OmlzQ2hhbmdlRXZlbnRTY2hlZHVsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhY2tMaXN0QmFzZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6Cisg
ICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpXb3JrZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyOjp0ZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlcjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIu
aDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0
YXJ0TWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
c3RvcCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aDoKKwogMjAxOS0wOS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlZmluZSByZXN0cmljdGlvbnMgZm9yIFgtVGVtcC1UYWJsZXQgSFRUUCBoZWFkZXIgZXhw
ZXJpbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IDcyMGZjNzRkOTQ5OGRjOWI0ZDc1ZTkzNmYz
NGE0OTg0ZTFmNjE3MzcuLjU1MDhiMzc4Y2VmODg4MzY2NjdiNWRlOWNkOTZmNDI2Yzg5Mzc5ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgTWVkaWFLZXlTZXNzaW9uOjpN
ZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxN
ZWRpYUsKICAgICAsIG1fc2Vzc2lvblR5cGUoc2Vzc2lvblR5cGUpCiAgICAgLCBtX2ltcGxlbWVu
dGF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pKQogICAgICwgbV9pbnN0YW5jZVNlc3Npb24o
V1RGTW92ZShpbnN0YW5jZVNlc3Npb24pKQotICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQorICAg
ICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlz
KSkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20t
bWVkaWFrZXlzLWNyZWF0ZXNlc3Npb24KICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92
ZW1iZXIgMjAxNgpAQCAtNjE0LDcgKzYxNCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1
ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyCiAg
ICAgLy8gICAgaW50ZXJmYWNlIHdpdGggaXRzIHR5cGUgYXR0cmlidXRlIHNldCB0byBtZXNzYWdl
IGFuZCBpdHMgaXNUcnVzdGVkIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0cnVlLCBhbmQgZGlz
cGF0Y2ggaXQgYXQgdGhlCiAgICAgLy8gICAgc2Vzc2lvbi4KICAgICBhdXRvIG1lc3NhZ2VFdmVu
dCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVu
dCwge21lc3NhZ2VUeXBlLCBtZXNzYWdlLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCl9LCBFdmVudDo6
SXNUcnVzdGVkOjpZZXMpOwotICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZSht
ZXNzYWdlRXZlbnQpKTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKG1l
c3NhZ2VFdmVudCkpOwogfQogCiB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVz
ZXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbnB1dFN0YXR1c2VzKQpA
QCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNl
cyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGluCiAgICAgICAgIG1fc3Rh
dHVzZXMudW5jaGVja2VkQXBwZW5kKHsgV1RGTW92ZShzdGF0dXMuZmlyc3QpLCB0b01lZGlhS2V5
U3RhdHVzKHN0YXR1cy5zZWNvbmQpIH0pOwogCiAgICAgLy8gNS4gUXVldWUgYSB0YXNrIHRvIGZp
cmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5c3RhdHVzZXNjaGFuZ2UgYXQgdGhlIHNlc3Npb24u
Ci0gICAgbV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5rZXlzdGF0dXNlc2NoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlzdGF0dXNlc2NoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIAogICAgIC8vIDYuIFF1ZXVlIGEg
dGFzayB0byBydW4gdGhlIEF0dGVtcHQgdG8gUmVzdW1lIFBsYXliYWNrIElmIE5lY2Vzc2FyeSBh
bGdvcml0aG0gb24gZWFjaCBvZiB0aGUgbWVkaWEgZWxlbWVudChzKSB3aG9zZSBtZWRpYUtleXMg
YXR0cmlidXRlIGlzIHRoZSBNZWRpYUtleXMgb2JqZWN0IHRoYXQgY3JlYXRlZCB0aGUgc2Vzc2lv
bi4KICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzaygKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDVhNjJl
YWMyZDdmZTYzMDM1ZDBmY2VjY2IwYTY1YzNiYmE2Y2U0ZDMuLjk1YmFmMzU0OGQ3OTc4NGVhMmQ1
MWFhNDg0OWYxMGQwZmVhMmM5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMTE0LDcgKzExNCw3IEBA
IHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJl
ZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9p
bnN0YW5jZVNlc3Npb247Ci0gICAgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlIG1fZXZlbnRR
dWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50
UXVldWU7CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7CiAgICAgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAgZG91YmxlIG1f
Zmlyc3REZWNyeXB0VGltZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uY3BwCmluZGV4IDcwYzcwZTNkZGJjYzc5MWM4N2Y5ZTg3NjMyMWNlYWJiZDNlNzZkNjEu
LjllOTNjN2IyODYxZTY0MDgwNjk0YWNmYTNmZmYzNDI5OWI5NjcwYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJLaXRN
ZWRpYUtleVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBXZQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwg
bV9rZXlzKCZrZXlzKQogICAgICwgbV9rZXlTeXN0ZW0oa2V5U3lzdGVtKQotICAgICwgbV9hc3lu
Y0V2ZW50UXVldWUoKnRoaXMpCisgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2Vu
ZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3Nlc3Npb24oa2V5cy5jZG0o
KS5jcmVhdGVTZXNzaW9uKCp0aGlzKSkKICAgICAsIG1fa2V5UmVxdWVzdFRpbWVyKCp0aGlzLCAm
V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJlZCkKICAgICAsIG1fYWRk
S2V5VGltZXIoKnRoaXMsICZXZWJLaXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQp
CkBAIC02OCw3ICs2OCw3IEBAIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6fldlYktpdE1lZGlhS2V5
U2Vzc2lvbigpCiAgICAgaWYgKG1fc2Vzc2lvbikKICAgICAgICAgbV9zZXNzaW9uLT5zZXRDbGll
bnQobnVsbHB0cik7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jYW5jZWxBbGxFdmVudHMoKTsK
KyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7CiB9CiAKIHZvaWQgV2Vi
S2l0TWVkaWFLZXlTZXNzaW9uOjpjbG9zZSgpCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBXZWJL
aXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQoKQogICAgICAgICBpZiAoZGlkU3Rv
cmVLZXkpIHsKICAgICAgICAgICAgIGF1dG8ga2V5YWRkZWRFdmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLndlYmtpdGtleWFkZGVkRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBrZXlhZGRlZEV2ZW50LT5zZXRU
YXJnZXQodGhpcyk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShrZXlhZGRlZEV2ZW50KSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+
ZW5xdWV1ZUV2ZW50KFdURk1vdmUoa2V5YWRkZWRFdmVudCkpOwogCiAgICAgICAgICAgICBBU1NF
UlQobV9rZXlzKTsKICAgICAgICAgICAgIG1fa2V5cy0+a2V5QWRkZWQoKTsKQEAgLTIwNyw3ICsy
MDcsNyBAQCB2b2lkIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoVWludDhBcnJh
eSogbWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVQogewogICAgIGF1dG8gZXZlbnQgPSBXZWJL
aXRNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXltZXNz
YWdlRXZlbnQsIG1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMKTsKICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50
KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CiB9CiAKIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWVkaWFLZXlFcnJv
ckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQpAQCAtMjE2LDcgKzIxNiw3IEBA
IHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWVkaWFLZXlFcnJvckNvZGUg
ZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0CiAKICAgICBhdXRvIGtleWVycm9yRXZlbnQgPSBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgIGtleWVycm9yRXZlbnQtPnNl
dFRhcmdldCh0aGlzKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92
ZShrZXllcnJvckV2ZW50KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChX
VEZNb3ZlKGtleWVycm9yRXZlbnQpKTsKIH0KIAogU3RyaW5nIFdlYktpdE1lZGlhS2V5U2Vzc2lv
bjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC0yMzgsMjIgKzIzOCwxMSBA
QCBTdHJpbmcgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKIAogYm9vbCBXZWJLaXRNZWRpYUtleVNlc3Npb246Omhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX2tleXMgJiYgbV9zZXNzaW9uKSB8fCBtX2FzeW5j
RXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCi17Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpyZXN1bWUoKQotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAobV9rZXlzICYmIG1fc2Vzc2lv
bikgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKTsKIH0KIAogdm9pZCBX
ZWJLaXRNZWRpYUtleVNlc3Npb246OnN0b3AoKQogewotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNs
b3NlKCk7CiAgICAgY2xvc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAppbmRleCBkZGE4ZmVmMzYxM2Q3NmM0MGQyNDIxN2M0ZTVmYjAxZTM3MGMzNTVkLi40
MjMzYWNlMjY3NWM0NWZiYjYwNjBmYzBiMDk1YjhhY2Y3OTQ3NTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaApAQCAtNzcsOCArNzcsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29u
Rm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICB2b2lk
IHN0b3AoKSBmaW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24o
KSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QgZmluYWw7CkBAIC05MCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fa2V5U3lz
dGVtOwogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBSZWZQdHI8V2ViS2l0TWVkaWFLZXlF
cnJvcj4gbV9lcnJvcjsKLSAgICBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2
ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9h
c3luY0V2ZW50UXVldWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IG1f
c2Vzc2lvbjsKIAogICAgIHN0cnVjdCBQZW5kaW5nS2V5UmVxdWVzdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDdjYmM2
YTEzMzUxZTBkMzJjZTI1NWE5YmFkY2I5NzQ0ZGFmNGQ0NDguLmI5NDg5MjdhZTYyNmQ3OWY1NTY2
MTRhMzJmZGRkNGQ0ZGRkOTVkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgTWVkaWFTb3Vy
Y2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2R1cmF0aW9uKE1lZGlhVGltZTo6aW52
YWxpZFRpbWUoKSkKICAgICAsIG1fcGVuZGluZ1NlZWtUaW1lKE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQorICAgICwgbV9hc3luY0V2ZW50
UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpLmxvZ2dlcigpKQogI2VuZGlmCkBAIC05NzMsMzggKzk3MywxNCBAQCB2b2lkIE1lZGlh
U291cmNlOjpvcGVuSWZJbkVuZGVkU3RhdGUoKQogCiBib29sIE1lZGlhU291cmNlOjpoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUgfHwgbV9hc3luY0V2
ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpCisgICAgcmV0dXJuIG1fcHJpdmF0ZSB8fCBtX2Fz
eW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpCiAgICAgICAgIHx8IEFjdGl2ZURPTU9i
amVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2U6OnN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBzdGF0aWNfY2FzdDxpbnQ+KHJlYXNvbikpOwotCi0gICAgc3dpdGNoIChyZWFzb24p
IHsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAgICBjYXNlIFJl
YXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAgIG1fYXN5bmNF
dmVudFF1ZXVlLnN1c3BlbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFzb25Gb3JT
dXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBSZWFzb25Gb3JT
dXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBk
b24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU291cmNlOjpyZXN1bWUoKQotewotICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7Ci0KLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUoKTsKLX0K
LQogdm9pZCBNZWRpYVNvdXJjZTo6c3RvcCgpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNsb3NlKCk7CiAgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQogICAgICAgICBtX21lZGlhRWxlbWVudC0+ZGV0YWNoTWVkaWFTb3VyY2UoKTsKICAg
ICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpDbG9zZWQ7CkBAIC0xMDEzLDcgKzk4OSw4IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnN0b3AoKQogCiBib29sIE1lZGlhU291cmNlOjpjYW5TdXNwZW5k
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNDbG9zZWQoKSAm
JiAhbV9hc3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOworICAgIC8vIEZJWE1FOiBE
byBiZXR0ZXIuCisgICAgcmV0dXJuIGlzQ2xvc2VkKCk7CiB9CiAKIGNvbnN0IGNoYXIqIE1lZGlh
U291cmNlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTEwODAsNyArMTA1Nyw3IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRO
YW1lKQogICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICBldmVudC0+c2V0VGFy
Z2V0KHRoaXMpOwogCi0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUo
ZXZlbnQpKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZl
bnQpKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTb3VyY2U6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDJmZWIwMGJmYzVmZDkwNjEwMGQyMDUzYmNlYzQx
MjMyYmE4OGRkOTcuLjhhMWVmY2EyMjhmMWQ5NWM4NjA3ZmMzZTg5YjM5OTA4MmVlY2EwYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgK
QEAgLTEyNiw4ICsxMjYsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlh
U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgIHZvaWQgc3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIHZv
aWQgc3RvcCgpIGZpbmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lv
bigpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdCBmaW5hbDsKQEAgLTE2OCw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhVGltZSBt
X2R1cmF0aW9uOwogICAgIE1lZGlhVGltZSBtX3BlbmRpbmdTZWVrVGltZTsKICAgICBSZWFkeVN0
YXRlIG1fcmVhZHlTdGF0ZSB7IFJlYWR5U3RhdGU6OkNsb3NlZCB9OwotICAgIE1haW5UaHJlYWRH
ZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRo
cmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2
b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNDIwNmRmYmM5ZGJj
N2RhZTkyMjJlNjM4Y2RiZTlmMTMxM2U1OTliNS4uNzA4M2RjN2VmYTFiMzQxYzFlZTA5YWJmOWI2
NTY3NjRkMGM1M2ViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFNvdXJjZUJ1ZmZlcjo6
U291cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZh
dGUsIE1lZGlhCiAgICAgOiBBY3RpdmVET01PYmplY3Qoc291cmNlLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCiAgICAgLCBtX3ByaXZhdGUoV1RGTW92ZShzb3VyY2VCdWZmZXJQcml2YXRlKSkK
ICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQor
ICAgICwgbV9hc3luY0V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVh
dGUoKnRoaXMpKQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcigqdGhpcywgJlNvdXJjZUJ1ZmZl
cjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCkKICAgICAsIG1fYXBwZW5kV2luZG93U3RhcnQoTWVk
aWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9hcHBlbmRXaW5kb3dFbmQoTWVkaWFUaW1lOjpw
b3NpdGl2ZUluZmluaXRlVGltZSgpKQpAQCAtNTI4LDMxICs1MjgsMTEgQEAgTWVkaWFUaW1lIFNv
dXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUZhc3RTZWVrVGltZUZvck1lZGlhVGltZShj
b25zdCBNZWRpYVQKIAogYm9vbCBTb3VyY2VCdWZmZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fc291cmNlIHx8IG1fYXN5bmNFdmVudFF1ZXVlLmhhc1BlbmRp
bmdFdmVudHMoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXI6OnN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbiByZWFzb24pCi17Ci0gICAgc3dpdGNoIChyZWFzb24pIHsKLSAgICBjYXNlIFJlYXNv
bkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246
OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2Ny
aXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVm
ZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBw
bGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lk
IFNvdXJjZUJ1ZmZlcjo6cmVzdW1lKCkKLXsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUo
KTsKKyAgICByZXR1cm4gbV9zb3VyY2UgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdF
dmVudHMoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnN0b3AoKQogewotICAgIG1fYXN5bmNF
dmVudFF1ZXVlLmNsb3NlKCk7CiAgICAgbV9hcHBlbmRCdWZmZXJUaW1lci5zdG9wKCk7CiAgICAg
bV9yZW1vdmVUaW1lci5zdG9wKCk7CiB9CkBAIC01NzcsNyArNTU3LDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXI6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lKQogICAgIGF1
dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwog
Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAg
ICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChjb25z
dCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggMDhjNDYxZGIzZDk5
Y2I1YjNkZWE3N2YxYTg0ZTQ1ZWFmMGVmOGEwYS4uZGQ1ZGFmNmM5MDY2ZmZjNmI4OTE5NmU1ZDkx
MGY2NjEzZjUzNjEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0xNDQsOCArMTQ0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgdm9pZCBzdG9w
KCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZp
bmFsOwpAQCAtMjE3LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8U291cmNlQnVmZmVy
UHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIE1lZGlhU291cmNlKiBtX3NvdXJjZTsKLSAgICBNYWlu
VGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVm
PE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAgICAgQXBw
ZW5kTW9kZSBtX21vZGUgeyBBcHBlbmRNb2RlOjpTZWdtZW50cyB9OwogCiAgICAgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAppbmRleCA2Nzgy
MjQ2ZmQ0YzUwYjEzMTVlMWQ5MDQ1YmE0YWRkOTg0MGY5NmE1Li5iNGQ4MmM0OWM1YmZkM2ViY2Zh
OWEzNTE2NWFmZjBmZWVhYThjYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNvdXJjZUJ1ZmZlckxpc3QpOwogCiBTb3VyY2VC
dWZmZXJMaXN0OjpTb3VyY2VCdWZmZXJMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKCp0aGlzKQorICAgICwgbV9hc3luY0V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVu
dFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQpAQCAt
OTgsMzYgKzk4LDEyIEBAIHZvaWQgU291cmNlQnVmZmVyTGlzdDo6c2NoZWR1bGVFdmVudChjb25z
dCBBdG9tU3RyaW5nJiBldmVudE5hbWUpCiAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
OwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5l
bnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1
ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwogfQogCiBib29sIFNvdXJjZUJ1ZmZlckxpc3Q6OmNh
blN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAhbV9h
c3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZl
ckxpc3Q6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgc3dpdGNo
IChyZWFzb24pIHsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAg
ICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAg
IG1fYXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3Ro
aW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFNvdXJjZUJ1ZmZlckxpc3Q6OnJlc3VtZSgpCi17
Ci0gICAgbV9hc3luY0V2ZW50UXVldWUucmVzdW1lKCk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVy
TGlzdDo6c3RvcCgpCi17Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuY2xvc2UoKTsKKyAgICByZXR1
cm4gIW1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIGNvbnN0IGNo
YXIqIFNvdXJjZUJ1ZmZlckxpc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3Qu
aAppbmRleCAyNmQwYWVhYzdhNTNkNDJkMGJlODMxNTJkYTI0MTRlMWUyMTBjMjZkLi5iNDEwMDNh
M2I0MjY2MmRlOGIyOTZiOTBmYTMxNzI4MDQzNjFjNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaApAQCAtNzksMTIg
Kzc5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7
IGRlcmVmKCk7IH0KIAogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigp
IGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5h
bDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAg
IGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIE1h
aW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBVbmlxdWVS
ZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKIAogICAg
IFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyPj4gbV9saXN0OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA5ZjIzMDljY2Yz
OTJiZTc4YzJhY2VmZTEzOWQ2OGQyOTY0ZjMxYTU1Li5jNjI3ZjMzNGViYmEwOTQwY2ViODRiODI1
YWY2ZTgyMDBkM2MxMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQXVkaW9Db250ZXh0OjpBdWRp
b0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1
ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1
ZTxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1
ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgLy8g
QWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9ubHkgYWZ0ZXIgcGFnZSBu
YXZpZ2F0ZS4KICAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVu
ZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhvZC4KQEAgLTE2Niw3ICsx
NjYsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdAogI2VuZGlmCiAgICAgLCBtX2lzT2ZmbGlu
ZUNvbnRleHQodHJ1ZSkKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9ldmVudFF1ZXVlKG1ha2VVbmlxdWU8TWFpblRocmVh
ZEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUoTWFpblRocmVh
ZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1v
bigpOwogCkBAIC0zMzYsOCArMzM2LDYgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN0b3AoKQogICAg
IEFTU0VSVChkb2N1bWVudCgpKTsKICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRp
YSgpOwogCi0gICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwotCiAgICAgdW5pbml0aWFsaXplKCk7
CiAgICAgY2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCmluZGV4IGQ5OTEyOTQ5YTM5NGFiODEzNGUxOTViMWM5ZjI5Mzc5NDMwNzkz
ZjguLjM0MTk5ODFjMzU3NGMzNzNlZTk3NjFiZmZlYjVkZTBkYmRhYWFiMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNDUsNiArNDUs
NyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nSGFzaC5oPgogCkBAIC00MTcsNyArNDE4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8VmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4+IG1fc3RhdGVSZWFjdGlvbnM7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9u
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fZXZl
bnRRdWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2
ZW50UXVldWU7CiAKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwogICAg
IFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAppbmRleCAy
YTYwM2RhYWE2MDEwZDY0NjQ1NzkwMTc4NmY2NzA1NTBjNTRkNjEzLi5mNGI2OTc4MzdlNDc0NTdj
YzYwMmZiODA4MmIxZjQ4NzgwYTJmMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKERlY2xhcmF0aXZlQW5pbWF0aW9uKTsKIAogRGVjbGFyYXRpdmVB
bmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNv
bnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikKICAgICA6IFdlYkFuaW1hdGlvbihvd25p
bmdFbGVtZW50LmRvY3VtZW50KCkpCi0gICAgLCBtX2V2ZW50UXVldWUob3duaW5nRWxlbWVudCkK
KyAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShv
d25pbmdFbGVtZW50KSkKICAgICAsIG1fb3duaW5nRWxlbWVudCgmb3duaW5nRWxlbWVudCkKICAg
ICAsIG1fYmFja2luZ0FuaW1hdGlvbihjb25zdF9jYXN0PEFuaW1hdGlvbiY+KGJhY2tpbmdBbmlt
YXRpb24pKQogewpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjp0
aWNrKCkKICAgICAvLyBtYXBzIGNvbnRhaW5pbmcgcnVubmluZyBDU1MgVHJhbnNpdGlvbnMgYW5k
IENTUyBBbmltYXRpb25zIGZvciBhIGdpdmVuIGVsZW1lbnQuCiAgICAgaWYgKHdhc1JlbGV2YW50
ICYmIHBsYXlTdGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpJZGxlKSB7CiAgICAg
ICAgIGRpc2Fzc29jaWF0ZUZyb21Pd25pbmdFbGVtZW50KCk7Ci0gICAgICAgIG1fZXZlbnRRdWV1
ZS5jbG9zZSgpOworICAgICAgICBtX2V2ZW50UXVldWUtPmNsb3NlKCk7CiAgICAgfQogfQogCkBA
IC04MywxMiArODMsMTIgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZGlzYXNzb2NpYXRl
RnJvbU93bmluZ0VsZW1lbnQoKQogCiBib29sIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpuZWVkc1Rp
Y2soKSBjb25zdAogewotICAgIHJldHVybiBXZWJBbmltYXRpb246Om5lZWRzVGljaygpIHx8IG1f
ZXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7CisgICAgcmV0dXJuIFdlYkFuaW1hdGlvbjo6
bmVlZHNUaWNrKCkgfHwgbV9ldmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIHZv
aWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnJlbW92ZSgpCiB7Ci0gICAgbV9ldmVudFF1ZXVlLmNs
b3NlKCk7CisgICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwogICAgIFdlYkFuaW1hdGlvbjo6cmVt
b3ZlKCk7CiB9CiAKQEAgLTMzNSwyNiArMzM1LDIzIEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRp
b246OmVucXVldWVET01FdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFNlY29uZHMK
ICAgICBBU1NFUlQobV9vd25pbmdFbGVtZW50KTsKICAgICBhdXRvIHRpbWUgPSBzZWNvbmRzVG9X
ZWJBbmltYXRpb25zQVBJVGltZShlbGFwc2VkVGltZSkgLyAxMDAwOwogICAgIGlmIChpczxDU1NB
bmltYXRpb24+KHRoaXMpKQotICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KEFuaW1h
dGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBkb3duY2FzdDxDU1NBbmltYXRpb24+KHRoaXMp
LT5hbmltYXRpb25OYW1lKCksIHRpbWUpKTsKKyAgICAgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVl
RXZlbnQoQW5pbWF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGRvd25jYXN0PENTU0FuaW1h
dGlvbj4odGhpcyktPmFuaW1hdGlvbk5hbWUoKSwgdGltZSkpOwogICAgIGVsc2UgaWYgKGlzPENT
U1RyYW5zaXRpb24+KHRoaXMpKQotICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFRy
YW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4o
dGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0eSgpLCB0aW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9F
bGVtZW50TmFtZUZvckV2ZW50cyhtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpKSk7CisgICAg
ICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50VHlwZSwgZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4odGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0
eSgpLCB0aW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhtX293
bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpKSk7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRp
b246OnN0b3AoKQogewotICAgIG1fZXZlbnRRdWV1ZS5jbG9zZSgpOwogICAgIFdlYkFuaW1hdGlv
bjo6c3RvcCgpOwogfQogCiB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpzdXNwZW5kKFJlYXNv
bkZvclN1c3BlbnNpb24gcmVhc29uKQogewotICAgIG1fZXZlbnRRdWV1ZS5zdXNwZW5kKCk7CiAg
ICAgV2ViQW5pbWF0aW9uOjpzdXNwZW5kKHJlYXNvbik7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVB
bmltYXRpb246OnJlc3VtZSgpCiB7Ci0gICAgbV9ldmVudFF1ZXVlLnJlc3VtZSgpOwogICAgIFdl
YkFuaW1hdGlvbjo6cmVzdW1lKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5kZXggNDA3ZTkwMDMzMTlkMjVjOWY3N2NmYmNiODNl
ZmRjYzJjZTNlOTY4OS4uOGJmYWUyMTdmNWRmZTk2MjE3NTEwNTAzYTdmYWUwNzM1YTdjNDk4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgK
QEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FzUGVuZGluZyB7IGZhbHNl
IH07CiAgICAgQW5pbWF0aW9uRWZmZWN0UGhhc2UgbV9wcmV2aW91c1BoYXNlIHsgQW5pbWF0aW9u
RWZmZWN0UGhhc2U6OklkbGUgfTsKIAotICAgIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSBt
X2V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4g
bV9ldmVudFF1ZXVlOwogCiAgICAgRWxlbWVudCogbV9vd25pbmdFbGVtZW50OwogICAgIFJlZjxB
bmltYXRpb24+IG1fYmFja2luZ0FuaW1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2
ZW50UXVldWUuY3BwCmluZGV4IGU3OGJlNDgxZTlmMWQyMzY4OGVhOWRkZTZjNmFiZGYyNzNiMTE3
MGMuLmZkMTUzMjkwMTc1OGFkZDE4ZDZjNDNlNjk3NzEwYzhhMzgzOTY1Y2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcApAQCAtNDYsNyArNDYsOCBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBUYXNrUXVldWVDb25zdHJ1Y3RvcjxUaW1lcj4gewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjpHZW5lcmljRXZlbnRRdWV1ZUJhc2Uo
RXZlbnRUYXJnZXQmIG93bmVyKQotICAgIDogbV9vd25lcihvd25lcikKKyAgICA6IEFjdGl2ZURP
TU9iamVjdChvd25lci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX293bmVyKG93
bmVyKQogICAgICwgbV90YXNrUXVldWUoVGFza1F1ZXVlQ29uc3RydWN0b3I8VD46OmNvbnN0cnVj
dChvd25lci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQogewogfQpAQCAtNjUsNyArNjYsNyBA
QCB2b2lkIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6ZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVu
dD4mJiBldmVudCkKIAogICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoV1RGTW92ZShldmVudCkp
OwogCi0gICAgaWYgKG1faXNTdXNwZW5kZWQpCisgICAgaWYgKG1faXNTdXNwZW5kZWQgfHwgbV9p
c1BhdXNlZEJ5Q2xpZW50KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Rhc2tRdWV1ZS5lbnF1
ZXVlVGFzayhzdGQ6OmJpbmQoJkdlbmVyaWNFdmVudFF1ZXVlQmFzZTo6ZGlzcGF0Y2hPbmVFdmVu
dCwgdGhpcykpOwpAQCAtMTE5LDkgKzEyMCwzMCBAQCBib29sIEdlbmVyaWNFdmVudFF1ZXVlQmFz
ZTxUPjo6aGFzUGVuZGluZ0V2ZW50c09mVHlwZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlKSBjbwog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46
OnN1c3BlbmQoKQordm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnNldFBhdXNlZChib29s
IHNob3VsZFBhdXNlKQogewotICAgIEFTU0VSVCghbV9pc1N1c3BlbmRlZCk7CisgICAgaWYgKG1f
aXNQYXVzZWRCeUNsaWVudCA9PSBzaG91bGRQYXVzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9pc1BhdXNlZEJ5Q2xpZW50ID0gc2hvdWxkUGF1c2U7CisgICAgaWYgKHNob3VsZFBhdXNlKQor
ICAgICAgICBtX3Rhc2tRdWV1ZS5jYW5jZWxBbGxUYXNrcygpOworICAgIGVsc2UKKyAgICAgICAg
cmVzY2hlZHVsZUFsbEV2ZW50c0lmTmVlZGVkKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Citib29sIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3Vz
cGVuc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+Cit2b2lkIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6c3VzcGVuZChSZWFzb25Gb3JT
dXNwZW5zaW9uKQoreworICAgIGlmIChtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisK
ICAgICBtX2lzU3VzcGVuZGVkID0gdHJ1ZTsKICAgICBtX3Rhc2tRdWV1ZS5jYW5jZWxBbGxUYXNr
cygpOwogfQpAQCAtMTMzLDEyICsxNTUsNDYgQEAgdm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8
VD46OnJlc3VtZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNTdXNwZW5kZWQgPSBmYWxz
ZTsKKyAgICByZXNjaGVkdWxlQWxsRXZlbnRzSWZOZWVkZWQoKTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK3ZvaWQgR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjpyZXNjaGVkdWxlQWxsRXZl
bnRzSWZOZWVkZWQoKQoreworICAgIGlmIChtX2lzUGF1c2VkQnlDbGllbnQgfHwgbV9pc1N1c3Bl
bmRlZCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
cGVuZGluZ0V2ZW50cy5zaXplKCk7ICsraSkKICAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRh
c2soc3RkOjpiaW5kKCZHZW5lcmljRXZlbnRRdWV1ZUJhc2U6OmRpc3BhdGNoT25lRXZlbnQsIHRo
aXMpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgR2VuZXJpY0V2ZW50UXVldWVC
YXNlPFQ+OjpzdG9wKCkKK3sKKyAgICBjbG9zZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgorY29uc3QgY2hhciogR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjphY3RpdmVET01PYmplY3RO
YW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIkdlbmVyaWNFdmVudFF1ZXVlQmFzZSI7Cit9CisK
IHRlbXBsYXRlIGNsYXNzIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUaW1lcj47CiB0ZW1wbGF0ZSBj
bGFzcyBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD47CiAKK1Vu
aXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4gR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShFdmVu
dFRhcmdldCYgZXZlbnRUYXJnZXQpCit7CisgICAgYXV0byBldmVudFF1ZXVlID0gbWFrZVVuaXF1
ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4oZXZlbnRUYXJnZXQpOworICAgIGV2ZW50UXVldWUtPnN1
c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiBldmVudFF1ZXVlOworfQorCitVbmlxdWVSZWY8
TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6
OmNyZWF0ZShFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQpCit7CisgICAgYXV0byBldmVudFF1ZXVl
ID0gbWFrZVVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+KGV2ZW50VGFyZ2V0
KTsKKyAgICBldmVudFF1ZXVlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZXZlbnRR
dWV1ZTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyaWNFdmVu
dFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaAppbmRleCA0
YzU2NDIzYTllMWU0N2E5MzZjMDk0ZWM0ZmY1NDdiMjNkYzExMzBhLi4xMTBiMWZmZGNkOGM3ZGMw
MDI0MTkwNWM1NGY5NzQ2ZTM3MGEzYzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
R2VuZXJpY0V2ZW50UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50
UXVldWUuaApAQCAtMjUsMTAgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zOCw3ICs0MCw3IEBAIGNsYXNzIFRpbWVyOwogY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEdlbmVyaWNFdmVudFF1
ZXVlQmFzZSB7CitjbGFzcyBHZW5lcmljRXZlbnRRdWV1ZUJhc2UgOiBwdWJsaWMgQWN0aXZlRE9N
T2JqZWN0IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBs
aWNpdCBHZW5lcmljRXZlbnRRdWV1ZUJhc2UoRXZlbnRUYXJnZXQmKTsKQEAgLTUxLDI0ICs1Mywz
NiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgY29uc3Q7CiAgICAgYm9v
bCBoYXNQZW5kaW5nRXZlbnRzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAg
IHZvaWQgc3VzcGVuZCgpOwotICAgIHZvaWQgcmVzdW1lKCk7CisgICAgdm9pZCBzZXRQYXVzZWQo
Ym9vbCk7CiAKICAgICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N1c3Bl
bmRlZDsgfQogCiBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hPbmVFdmVudCgpOwogCisgICAg
Y29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQg
c3RvcCgpIGZpbmFsOworICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5h
bDsKKyAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOworCisgICAgdm9pZCByZXNjaGVkdWxlQWxsRXZl
bnRzSWZOZWVkZWQoKTsKKwogICAgIEV2ZW50VGFyZ2V0JiBtX293bmVyOwogICAgIEdlbmVyaWNU
YXNrUXVldWU8VD4gbV90YXNrUXVldWU7CiAgICAgRGVxdWU8UmVmUHRyPEV2ZW50Pj4gbV9wZW5k
aW5nRXZlbnRzOwogICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2lz
UGF1c2VkQnlDbGllbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1N1c3BlbmRlZCB7IGZhbHNl
IH07CiB9OwogCiAvLyBBbGwgaW5zdGFuY2VzIG9mIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZSB1c2UgYSBzaGFyZWQgVGltZXIgZm9yIGRpc3BhdGNoaW5nIGV2ZW50cy4KIGNsYXNzIE1haW5U
aHJlYWRHZW5lcmljRXZlbnRRdWV1ZSA6IHB1YmxpYyBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VGlt
ZXI+IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZl
bnRRdWV1ZT4gY3JlYXRlKEV2ZW50VGFyZ2V0Jik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIFVu
aXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IFdURjo6bWFrZVVuaXF1ZVJlZldp
dGhvdXRGYXN0TWFsbG9jQ2hlY2s8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlLCBFdmVudFRh
cmdldCY+KEV2ZW50VGFyZ2V0Jik7CiAgICAgZXhwbGljaXQgTWFpblRocmVhZEdlbmVyaWNFdmVu
dFF1ZXVlKEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCkKICAgICAgICAgOiBHZW5lcmljRXZlbnRR
dWV1ZUJhc2U8VGltZXI+KGV2ZW50VGFyZ2V0KQogICAgIHsKQEAgLTc4LDYgKzkyLDEwIEBAIHB1
YmxpYzoKIGNsYXNzIEdlbmVyaWNFdmVudFF1ZXVlIDogcHVibGljIEdlbmVyaWNFdmVudFF1ZXVl
QmFzZTxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CisgICAgc3RhdGljIFVuaXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4gY3Jl
YXRlKEV2ZW50VGFyZ2V0Jik7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIFVuaXF1ZVJlZjxHZW5l
cmljRXZlbnRRdWV1ZT4gV1RGOjptYWtlVW5pcXVlUmVmV2l0aG91dEZhc3RNYWxsb2NDaGVjazxH
ZW5lcmljRXZlbnRRdWV1ZSwgRXZlbnRUYXJnZXQmPihFdmVudFRhcmdldCYpOwogICAgIGV4cGxp
Y2l0IEdlbmVyaWNFdmVudFF1ZXVlKEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCkKICAgICAgICAg
OiBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4oZXZlbnRUYXJn
ZXQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggODQyZWUyOTQzZGZj
ZDY3MGFiODA5MjYwZGMxMTUyYTA0NTYxMmJjOC4uMWQ1MDQwMmQ3N2M1MWEwMjBmNDM1MGY4Zjlm
YWY2YjQ5MjA0MWQ2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC05OCw3ICs5
OCw3IEBAIE1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBNCiAgICAgOiBBY3RpdmVET01PYmplY3QoJnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpCiAgICAgLCBtX2lkZW50aWZpZXIobG9jYWwpCiAgICAgLCBt
X3JlbW90ZUlkZW50aWZpZXIocmVtb3RlKQotICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQorICAg
ICwgbV9ldmVudFF1ZXVlKEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAg
IExPRyhNZXNzYWdlUG9ydHMsICJDcmVhdGVkIE1lc3NhZ2VQb3J0ICVzICglcCkgaW4gcHJvY2Vz
cyAlIiBQUkl1NjQsIG1faWRlbnRpZmllci5sb2dTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0aGlz
LCBQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CiAKQEAgLTIyOCwxNyArMjI4LDcg
QEAgdm9pZCBNZXNzYWdlUG9ydDo6Y2xvc2UoKQogCiAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXI6OmZyb21Db250ZXh0KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLm1lc3NhZ2VQb3J0
Q2xvc2VkKG1faWRlbnRpZmllcik7CiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKLSAg
ICBtX2V2ZW50UXVldWUuY2xvc2UoKTsKLX0KLQotdm9pZCBNZXNzYWdlUG9ydDo6c3VzcGVuZChS
ZWFzb25Gb3JTdXNwZW5zaW9uKQotewotICAgIG1fZXZlbnRRdWV1ZS5zdXNwZW5kKCk7Ci19Ci0K
LXZvaWQgTWVzc2FnZVBvcnQ6OnJlc3VtZSgpCi17Ci0gICAgbV9ldmVudFF1ZXVlLnJlc3VtZSgp
OworICAgIG1fZXZlbnRRdWV1ZS0+Y2xvc2UoKTsKIH0KIAogdm9pZCBNZXNzYWdlUG9ydDo6Y29u
dGV4dERlc3Ryb3llZCgpCkBAIC0yODAsNyArMjcwLDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGlz
cGF0Y2hNZXNzYWdlcygpCiAgICAgICAgICAgICBpZiAoY29udGV4dElzV29ya2VyICYmIGRvd25j
YXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS5pc0Nsb3Np
bmcoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBhdXRvIHBvcnRzID0g
TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgV1RG
TW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKLSAgICAgICAgICAgIG1fZXZlbnRRdWV1
ZS5lbnF1ZXVlRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3Nh
Z2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgICAgICAgICBtX2V2ZW50UXVldWUt
PmVucXVldWVFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2Fn
ZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKICAgICAgICAgfQogICAgIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggYTRkYzIyYTc2ZDZjYjljZmViNGYwZmJlYTM3ODdmZjlh
ZDc5YmJjZC4uMjY1NmJiNDM0Y2VlNjcxNzVmZDZiMTVhMGJiOTJjODMxYTA4Y2NhNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTg1LDggKzg1LDYgQEAgcHVibGljOgogICAgIC8vIEFj
dGl2ZURPTU9iamVjdAogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25z
dCBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7Ci0g
ICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5h
bDsKICAgICB2b2lkIHN0b3AoKSBmaW5hbCB7IGNsb3NlKCk7IH0KICAgICBib29sIGhhc1BlbmRp
bmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwpAQCAtMTI5LDcgKzEyNyw3IEBAIHByaXZhdGU6CiAg
ICAgTWVzc2FnZVBvcnRJZGVudGlmaWVyIG1fcmVtb3RlSWRlbnRpZmllcjsKIAogICAgIG11dGFi
bGUgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1fcmVmQ291bnQgeyAxIH07Ci0gICAgR2VuZXJpY0V2
ZW50UXVldWUgbV9ldmVudFF1ZXVlOworICAgIFVuaXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4g
bV9ldmVudFF1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDRkMTJhMTIzNzJlZjYzMzI5NjMxNzE4
YjZkZTUwODFiZDEzMzkzMS4uMzgzYTQxNmRjYWRlZmVhNTFhYmQxZjU2YTNlOGI5MjBjYjhkNjIw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00MjYsNyAr
NDI2LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1fc2NhblRpbWVyKCp0aGlz
LCAmSFRNTE1lZGlhRWxlbWVudDo6c2NhblRpbWVyRmlyZWQpCiAgICAgLCBtX3BsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lcigqdGhpcywgJkhUTUxNZWRpYUVs
ZW1lbnQ6OnBsYXliYWNrQ29udHJvbHNNYW5hZ2VyQmVoYXZpb3JSZXN0cmljdGlvbnNUaW1lckZp
cmVkKQogICAgICwgbV9zZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1lcigqdGhpcywgJkhU
TUxNZWRpYUVsZW1lbnQ6OnNlZWtUb1BsYXliYWNrUG9zaXRpb25FbmRlZFRpbWVyRmlyZWQpCi0g
ICAgLCBtX2FzeW5jRXZlbnRRdWV1ZSgqdGhpcykKKyAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKE1h
aW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fbGFzdFRp
bWVVcGRhdGVFdmVudE1vdmllVGltZShNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkp
CiAgICAgLCBtX2ZpcnN0VGltZVBsYXlpbmcodHJ1ZSkKICAgICAsIG1fcGxheWluZyhmYWxzZSkK
QEAgLTU3Miw3ICs1NzIsNyBAQCBIVE1MTWVkaWFFbGVtZW50Ojp+SFRNTE1lZGlhRWxlbWVudCgp
CiAgICAgYmVnaW5JZ25vcmluZ1RyYWNrRGlzcGxheVVwZGF0ZVJlcXVlc3RzKCk7CiAgICAgYWxs
TWVkaWFFbGVtZW50cygpLnJlbW92ZSh0aGlzKTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNs
b3NlKCk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmNsb3NlKCk7CiAKICAgICBzZXRTaG91bGRE
ZWxheUxvYWRFdmVudChmYWxzZSk7CiAgICAgdW5yZWdpc3RlcldpdGhEb2N1bWVudChkb2N1bWVu
dCgpKTsKQEAgLTEwMjEsNyArMTAyMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1
bGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWUpCiAgICAgLy8gRG9uJ3Qgc2V0IHRo
ZSBldmVudCB0YXJnZXQsIHRoZSBldmVudCBxdWV1ZSB3aWxsIHNldCBpdCBpbiBHZW5lcmljRXZl
bnRRdWV1ZTo6dGltZXJGaXJlZCBhbmQgc2V0dGluZyBpdCBoZXJlCiAgICAgLy8gd2lsbCB0cmln
Z2VyIGFuIEFTU0VSVCBpZiB0aGlzIGVsZW1lbnQgaGFzIGJlZW4gbWFya2VkIGZvciBkZWxldGlv
bi4KIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiB9
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVSZXNvbHZlUGVuZGluZ1BsYXlQcm9t
aXNlcygpCkBAIC0xODQ5LDExICsxODQ5LDExIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICAg
ICAgaWYgKGV2ZW50VGFzay5zZWNvbmQtPnN0YXJ0VGltZSgpID49IGV2ZW50VGFzay5zZWNvbmQt
PmVuZFRpbWUoKSkgewogICAgICAgICAgICAgYXV0byBlbnRlckV2ZW50ID0gRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZW50ZXJFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJ
c0NhbmNlbGFibGU6Ok5vKTsKICAgICAgICAgICAgIGVudGVyRXZlbnQtPnNldFRhcmdldChldmVu
dFRhc2suc2Vjb25kKTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVu
dChXVEZNb3ZlKGVudGVyRXZlbnQpKTsKKyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5l
bnF1ZXVlRXZlbnQoV1RGTW92ZShlbnRlckV2ZW50KSk7CiAKICAgICAgICAgICAgIGF1dG8gZXhp
dEV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXhpdEV2ZW50LCBFdmVudDo6Q2Fu
QnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgICAgICAgICAgZXhpdEV2
ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNrLnNlY29uZCk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZl
bnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShleGl0RXZlbnQpKTsKKyAgICAgICAgICAgIG1f
YXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShleGl0RXZlbnQpKTsKICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQ7CiAgICAgICAgICAg
ICBpZiAoZXZlbnRUYXNrLmZpcnN0ID09IGV2ZW50VGFzay5zZWNvbmQtPnN0YXJ0TWVkaWFUaW1l
KCkpCkBAIC0xODYxLDcgKzE4NjEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFj
dGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5leGl0RXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpO
byk7CiAgICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFzay5zZWNvbmQpOwotICAg
ICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsK
KyAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVu
dCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xODc0LDcgKzE4NzQsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBt
b3ZpZVRpbWUpCiAgICAgZm9yIChhdXRvJiBhZmZlY3RlZFRyYWNrIDogYWZmZWN0ZWRUcmFja3Mp
IHsKICAgICAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmN1ZWNo
YW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
OwogICAgICAgICBldmVudC0+c2V0VGFyZ2V0KGFmZmVjdGVkVHJhY2spOwotICAgICAgICBtX2Fz
eW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgICAgICBtX2Fz
eW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIAogICAgICAgICAv
LyAuLi4gaWYgdGhlIHRleHQgdHJhY2sgaGFzIGEgY29ycmVzcG9uZGluZyB0cmFjayBlbGVtZW50
LCB0byB0aGVuIGZpcmUgYQogICAgICAgICAvLyBzaW1wbGUgZXZlbnQgbmFtZWQgY3VlY2hhbmdl
IGF0IHRoZSB0cmFjayBlbGVtZW50IGFzIHdlbGwuCkBAIC0xODgzLDcgKzE4ODMsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFU
aW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgICAgICBhdXRvIHRyYWNrRWxlbWVudCA9IG1ha2VSZWZQ
dHIoZG93bmNhc3Q8TG9hZGFibGVUZXh0VHJhY2s+KCphZmZlY3RlZFRyYWNrKS50cmFja0VsZW1l
bnQoKSk7CiAgICAgICAgICAgICBBU1NFUlQodHJhY2tFbGVtZW50KTsKICAgICAgICAgICAgIGV2
ZW50LT5zZXRUYXJnZXQodHJhY2tFbGVtZW50KTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1
ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAgICAgICBtX2FzeW5jRXZl
bnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtMjIyMyw3ICsyMjIzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYUxvYWRp
bmdGYWlsZWRGYXRhbGx5KE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgZXJyb3IKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6Y2FuY2VsUGVuZGluZ0V2ZW50c0FuZENhbGxiYWNrcygpCiB7CiAgICAg
SU5GT19MT0coTE9HSURFTlRJRklFUik7Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuY2FuY2VsQWxs
RXZlbnRzKCk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOwogCiAg
ICAgZm9yIChhdXRvJiBzb3VyY2UgOiBjaGlsZHJlbk9mVHlwZTxIVE1MU291cmNlRWxlbWVudD4o
KnRoaXMpKQogICAgICAgICBzb3VyY2UuY2FuY2VsUGVuZGluZ0Vycm9yRXZlbnQoKTsKQEAgLTI2
MTQsNyArMjYxNCw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJLZXlOZWVk
ZWQoTWVkaWFQbGF5ZXIqLCBVaW50OEFycmF5KiBpbml0RGF0YSkKIAogICAgIGF1dG8gZXZlbnQg
PSBXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdG5l
ZWRrZXlFdmVudCwgaW5pdERhdGEpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAg
bV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBtX2Fz
eW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtMjc2MSw3ICsyNzYxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpt
ZWRpYVBsYXllckluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYgaW4K
ICAgICAvLyAgICAgIGluaXREYXRhVHlwZSA9IGluaXREYXRhVHlwZQogICAgIC8vICAgICAgaW5p
dERhdGEgPSBpbml0RGF0YQogICAgIE1lZGlhRW5jcnlwdGVkRXZlbnRJbml0IGluaXRpYWxpemVy
IHsgaW5pdERhdGFUeXBlLCBXVEZNb3ZlKGluaXREYXRhKSB9OwotICAgIG1fYXN5bmNFdmVudFF1
ZXVlLmVucXVldWVFdmVudChNZWRpYUVuY3J5cHRlZEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmVuY3J5cHRlZEV2ZW50LCBpbml0aWFsaXplciwgRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKSk7Cisg
ICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChNZWRpYUVuY3J5cHRlZEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmVuY3J5cHRlZEV2ZW50LCBpbml0aWFsaXplciwgRXZlbnQ6Oklz
VHJ1c3RlZDo6WWVzKSk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJX
YWl0aW5nRm9yS2V5Q2hhbmdlZCgpCkBAIC01NzIwLDcgKzU3MjAsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmNsb3NlVGFza1F1ZXVlcygpCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
ICAgICBtX2VuY3J5cHRlZE1lZGlhUXVldWUuY2xvc2UoKTsKICNlbmRpZgotICAgIG1fYXN5bmNF
dmVudFF1ZXVlLmNsb3NlKCk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmNsb3NlKCk7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBtX3ZvbHVtZVJldmVydFRhc2tRdWV1ZS5jbG9zZSgp
OwogI2VuZGlmCkBAIC01NzYxLDcgKzU3NjEsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN1
c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCiAgICAgc3dpdGNoIChyZWFzb24pIHsK
ICAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKICAgICAgICAgc3RvcFdp
dGhvdXREZXN0cm95aW5nTWVkaWFQbGF5ZXIoKTsKLSAgICAgICAgbV9hc3luY0V2ZW50UXVldWUu
c3VzcGVuZCgpOwogICAgICAgICBzZXRCdWZmZXJpbmdQb2xpY3koQnVmZmVyaW5nUG9saWN5OjpN
YWtlUmVzb3VyY2VzUHVyZ2VhYmxlKTsKICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2
aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9S
ZXN1bWVNZWRpYSk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTc3OSw4ICs1Nzc4LDYgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogCiAgICAgc2V0SW5BY3RpdmVEb2N1bWVudCh0cnVl
KTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLnJlc3VtZSgpOwotCiAgICAgaWYgKCFtX21lZGlh
U2Vzc2lvbi0+cGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZygpKQogICAgICAgICBkb2N1
bWVudCgpLmFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigqdGhpcyk7CiAgICAgZWxzZQpAQCAtNTgw
Myw3ICs1ODAwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXN1bWUoKQogCiBib29sIEhU
TUxNZWRpYUVsZW1lbnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IChoYXNBdWRpbygpICYmIGlzUGxheWluZygpKSB8fCBtX2FzeW5jRXZlbnRRdWV1ZS5oYXNQZW5k
aW5nRXZlbnRzKCkgfHwgbV9jcmVhdGluZ0NvbnRyb2xzOworICAgIHJldHVybiAoaGFzQXVkaW8o
KSAmJiBpc1BsYXlpbmcoKSkgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMo
KSB8fCBtX2NyZWF0aW5nQ29udHJvbHM7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFWb2x1bWVEaWRDaGFuZ2UoKQpAQCAtNTk1Miw3ICs1OTQ5LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkRXZlbnQoKQog
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJoYXNUYXJnZXRzID0gIiwgaGFzVGFyZ2V0cyk7
CiAgICAgYXV0byBldmVudCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFu
Z2VkRXZlbnQsIGhhc1RhcmdldHMpOwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7Ci0gICAg
bV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICBtX2Fz
eW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKICAgICBzY2hlZHVs
ZVVwZGF0ZU1lZGlhU3RhdGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAppbmRleCA2MWRiYWQ1YjI4MDFkNDk1OWE3NjI3NzhlOGE2NzExNzJiNTRiODhjLi4zMmEy
NDBhMDljOTY0NTE0NzhhZGMyMDdkM2Q5MDAwMThlZTY1NTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtOTcyLDcgKzk3Miw3IEBAIHByaXZhdGU6CiAgICAgR2Vu
ZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV9mdWxsc2NyZWVuVGFza1F1ZXVlOwogICAgIEdlbmVyaWNU
YXNrUXVldWU8VGltZXI+IG1fcGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzUXVldWU7CiAgICAgUmVm
UHRyPFRpbWVSYW5nZXM+IG1fcGxheWVkVGltZVJhbmdlczsKLSAgICBNYWluVGhyZWFkR2VuZXJp
Y0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRH
ZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICBEZWZlcnJhYmxlVGFzazxUaW1lcj4gbV92b2x1bWVSZXZlcnRUYXNrUXVldWU7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCmlu
ZGV4IDZkMzExOGJlNzQyOTM5OGMwN2FhZTBmOTU5ZmVjZGMxMjY3ZmZkMDMuLjkwMDNlOWMxYjIy
ZDJkM2VlMzc5MTUwMjU4OWMzZjI2ODdlODIxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UcmFja0xpc3RCYXNlLmNwcApAQCAtNDIsNyArNDIsNyBAQCBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEX0lNUEwoVHJhY2tMaXN0QmFzZSk7CiBUcmFja0xpc3RCYXNlOjpUcmFja0xpc3RCYXNl
KEhUTUxNZWRpYUVsZW1lbnQqIGVsZW1lbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKICAgICAsIG1fZWxlbWVudChlbGVt
ZW50KQotICAgICwgbV9hc3luY0V2ZW50UXVldWUoKnRoaXMpCisgICAgLCBtX2FzeW5jRXZlbnRR
dWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAg
QVNTRVJUKCFjb250ZXh0IHx8IGlzPERvY3VtZW50Pihjb250ZXh0KSk7CiAgICAgc3VzcGVuZElm
TmVlZGVkKCk7CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgVHJhY2tMaXN0QmFzZTo6Y29udGFpbnMo
VHJhY2tCYXNlJiB0cmFjaykgY29uc3QKIAogdm9pZCBUcmFja0xpc3RCYXNlOjpzY2hlZHVsZVRy
YWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lLCBSZWY8VHJhY2tCYXNlPiYmIHRy
YWNrKQogewotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChUcmFja0V2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8sIFdURk1vdmUodHJhY2spKSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVF
dmVudChUcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8sIFdURk1vdmUodHJhY2spKSk7CiB9CiAKIHZvaWQgVHJh
Y2tMaXN0QmFzZTo6c2NoZWR1bGVBZGRUcmFja0V2ZW50KFJlZjxUcmFja0Jhc2U+JiYgdHJhY2sp
CkBAIC0xNjEsMTIgKzE2MSwxMiBAQCB2b2lkIFRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlQ2hhbmdl
RXZlbnQoKQogICAgIC8vIFdoZW5ldmVyIGEgdHJhY2sgaW4gYSBWaWRlb1RyYWNrTGlzdCB0aGF0
IHdhcyBwcmV2aW91c2x5IG5vdCBzZWxlY3RlZCBpcwogICAgIC8vIHNlbGVjdGVkLCB0aGUgdXNl
ciBhZ2VudCBtdXN0IHF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkCiAg
ICAgLy8gY2hhbmdlIGF0IHRoZSBWaWRlb1RyYWNrTGlzdCBvYmplY3QuCi0gICAgbV9hc3luY0V2
ZW50UXVldWUuZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNoYW5nZUV2
ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAg
ICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmNoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pKTsKIH0KIAogYm9vbCBUcmFja0xpc3RCYXNlOjppc0NoYW5nZUV2ZW50U2NoZWR1bGVk
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9hc3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50
c09mVHlwZShldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQpOworICAgIHJldHVybiBtX2FzeW5jRXZl
bnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50c09mVHlwZShldmVudE5hbWVzKCkuY2hhbmdlRXZlbnQp
OwogfQogCiBib29sIFRyYWNrTGlzdEJhc2U6OmlzQW55VHJhY2tFbmFibGVkKCkgY29uc3QKQEAg
LTE4MCwzMSArMTgwLDcgQEAgYm9vbCBUcmFja0xpc3RCYXNlOjppc0FueVRyYWNrRW5hYmxlZCgp
IGNvbnN0CiAKIGJvb2wgVHJhY2tMaXN0QmFzZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVu
c2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX2FzeW5jRXZlbnRRdWV1ZS5oYXNQZW5kaW5n
RXZlbnRzKCk7Ci19Ci0KLXZvaWQgVHJhY2tMaXN0QmFzZTo6c3VzcGVuZChSZWFzb25Gb3JTdXNw
ZW5zaW9uIHJlYXNvbikKLXsKLSAgICBzd2l0Y2ggKHJlYXNvbikgewotICAgIGNhc2UgUmVhc29u
Rm9yU3VzcGVuc2lvbjo6UGFnZUNhY2hlOgotICAgIGNhc2UgUmVhc29uRm9yU3VzcGVuc2lvbjo6
UGFnZVdpbGxCZVN1c3BlbmRlZDoKLSAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuc3VzcGVuZCgp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OkphdmFTY3Jp
cHREZWJ1Z2dlclBhdXNlZDoKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OldpbGxEZWZl
ckxvYWRpbmc6Ci0gICAgICAgIC8vIERvIG5vdGhpbmcsIHdlIGRvbid0IHBhdXNlIG1lZGlhIHBs
YXliYWNrIGluIHRoZXNlIGNhc2VzLgotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXZvaWQg
VHJhY2tMaXN0QmFzZTo6cmVzdW1lKCkKLXsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUo
KTsKLX0KLQotdm9pZCBUcmFja0xpc3RCYXNlOjpzdG9wKCkKLXsKLSAgICBtX2FzeW5jRXZlbnRR
dWV1ZS5jbG9zZSgpOworICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oCmluZGV4IDBiYmQ4
NTgyZjU5ZjExYTM2OTIzZmM4NTdmNzZjMzI4OGUyZmY5ODYuLjQyNTViYzE2MDk1YzgyMjA5MDRi
MTQzYzhkOTY3ODM5ZTU0MTVkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVHJhY2tMaXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tM
aXN0QmFzZS5oCkBAIC03Niw5ICs3Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRy
YWNrRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lLCBSZWY8VHJhY2tCYXNlPiYmKTsK
IAogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFs
OwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lk
IHJlc3VtZSgpIGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogCiAgICAgLy8gRXZlbnRU
YXJnZXQKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQpAQCAtODYs
NyArODMsNyBAQCBwcml2YXRlOgogCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbV9lbGVtZW50Owog
Ci0gICAgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOworICAg
IFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3Bw
CmluZGV4IDIyMTAxYWM1NzM1MGQ1ZDVhZTc3NzNiMGI1NmZjYTg2OWZjNzA1MjUuLmViZWM4OTQz
MTY2ODNhNDU5NmMxOTI4NDAzNjhhNjQ0YzVkNDBlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgaW5saW5lIFdvcmtlcjo6V29ya2VyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRpbWUKICAgICAsIG1f
aWRlbnRpZmllcigid29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3Jl
YXRlSWRlbnRpZmllcigpKQogICAgICwgbV9jb250ZXh0UHJveHkoV29ya2VyR2xvYmFsU2NvcGVQ
cm94eTo6Y3JlYXRlKCp0aGlzKSkKICAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRpbWVGbGFncykK
LSAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykKKyAgICAsIG1fZXZlbnRRdWV1ZShHZW5lcmljRXZl
bnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBzdGF0aWMgYm9vbCBhZGRlZExpc3RlbmVy
OwogICAgIGlmICghYWRkZWRMaXN0ZW5lcikgewpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFdvcmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUgbWVzc2FnCiB2b2lkIFdvcmtlcjo6dGVybWluYXRlKCkKIHsKICAgICBtX2NvbnRl
eHRQcm94eS50ZXJtaW5hdGVXb3JrZXJHbG9iYWxTY29wZSgpOwotICAgIG1fZXZlbnRRdWV1ZS5j
YW5jZWxBbGxFdmVudHMoKTsKKyAgICBtX2V2ZW50UXVldWUtPmNhbmNlbEFsbEV2ZW50cygpOwog
fQogCiBib29sIFdvcmtlcjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0
CkBAIC0xNTQsMTYgKzE1NCw2IEBAIGJvb2wgV29ya2VyOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRT
dXNwZW5zaW9uKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXb3JrZXI6OnN1
c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKLXsKLSAgICBtX2V2ZW50UXVldWUuc3VzcGVuZCgp
OwotfQotCi12b2lkIFdvcmtlcjo6cmVzdW1lKCkKLXsKLSAgICBtX2V2ZW50UXVldWUucmVzdW1l
KCk7Ci19Ci0KIGNvbnN0IGNoYXIqIFdvcmtlcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuICJXb3JrZXIiOwpAQCAtMTcyLDEyICsxNjIsMTEgQEAgY29uc3QgY2hh
ciogV29ya2VyOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKIHZvaWQgV29ya2VyOjpzdG9w
KCkKIHsKICAgICB0ZXJtaW5hdGUoKTsKLSAgICBtX2V2ZW50UXVldWUuY2xvc2UoKTsKIH0KIAog
Ym9vbCBXb3JrZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
Y29udGV4dFByb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFz
UGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9ldmVudFF1ZXVlLmhhc1BlbmRpbmdFdmVudHMoKTsKKyAg
ICByZXR1cm4gbV9jb250ZXh0UHJveHkuaGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgQWN0aXZlRE9N
T2JqZWN0OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBtX2V2ZW50UXVldWUtPmhhc1BlbmRpbmdF
dmVudHMoKTsKIH0KIAogdm9pZCBXb3JrZXI6Om5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29s
IGlzT25MaW5lKQpAQCAtMjE3LDEyICsyMDYsMTIgQEAgdm9pZCBXb3JrZXI6Om5vdGlmeUZpbmlz
aGVkKCkKIAogdm9pZCBXb3JrZXI6OmVucXVldWVFdmVudChSZWY8RXZlbnQ+JiYgZXZlbnQpCiB7
Ci0gICAgbV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgbV9l
dmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwogfQogCiB2b2lkIFdvcmtl
cjo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlRfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTighbV9ldmVudFF1ZXVlLmlzU3VzcGVuZGVkKCkpOworICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW1fZXZlbnRRdWV1ZS0+
aXNTdXNwZW5kZWQoKSk7CiAKICAgICBBYnN0cmFjdFdvcmtlcjo6ZGlzcGF0Y2hFdmVudChldmVu
dCk7CiAgICAgaWYgKGlzPEVycm9yRXZlbnQ+KGV2ZW50KSAmJiAhZXZlbnQuZGVmYXVsdFByZXZl
bnRlZCgpICYmIGV2ZW50LmlzVHJ1c3RlZCgpICYmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggNTcxY2Y2N2FhNTdmMzNlYzA1ZDgwYWM2M2Nj
NjVmOTc2MTFkMzkyOS4uZWUzMWM3Y2VjNWVmZTlmZmZiYTc0MGNjMDVjM2I1ODBmNzBjZjkyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC04Myw4ICs4Myw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBub3RpZnlGaW5pc2hlZCgpIGZpbmFsOwogCiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9j
dW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZv
clN1c3BlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgdm9pZCBz
dG9wKCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwogCkBAIC05OCw3ICs5Niw3IEBAIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBt
X3dvcmtlckNyZWF0aW9uVGltZTsKICAgICBib29sIG1fc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29u
dGVudFNlY3VyaXR5UG9saWN5IHsgZmFsc2UgfTsKICAgICBKU0M6OlJ1bnRpbWVGbGFncyBtX3J1
bnRpbWVGbGFnczsKLSAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX2V2ZW50UXVldWU7CisgICAgVW5p
cXVlUmVmPEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50UXVldWU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKaW5kZXggOTVkMmNlNjc0MGU2OWM2ODJiNmNm
NTM4N2Y2NGI3MTJlOTI4MTlhZi4uNzIxMWViNmZjYjU0ZjNmNDU3MjZjZWEzNjczMjEyYTg2NTgz
N2NjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtNzAsMTMgKzcwLDEzIEBAIFdURl9NQUtFX0lT
T19BTExPQ0FURURfSU1QTChTZXJ2aWNlV29ya2VyQ29udGFpbmVyKTsKIFNlcnZpY2VXb3JrZXJD
b250YWluZXI6OlNlcnZpY2VXb3JrZXJDb250YWluZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgTmF2aWdhdG9yQmFzZSYgbmF2aWdhdG9yKQogICAgIDogQWN0aXZlRE9NT2JqZWN0
KGNvbnRleHQpCiAgICAgLCBtX25hdmlnYXRvcihuYXZpZ2F0b3IpCi0gICAgLCBtX21lc3NhZ2VR
dWV1ZSgqdGhpcykKKyAgICAsIG1fbWVzc2FnZVF1ZXVlKEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVh
dGUoKnRoaXMpKQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogICAgIAogICAgIC8vIFdlIHNo
b3VsZCBxdWV1ZSBtZXNzYWdlcyB1bnRpbCB0aGUgRE9NQ29udGVudExvYWRlZCBldmVudCBoYXMg
ZmlyZWQgb3Igc3RhcnRNZXNzYWdlcygpIGhhcyBiZWVuIGNhbGxlZC4KICAgICBpZiAoaXM8RG9j
dW1lbnQ+KGNvbnRleHQpICYmIGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCkucGFyc2luZygp
KQotICAgICAgICBtX21lc3NhZ2VRdWV1ZS5zdXNwZW5kKCk7CisgICAgICAgIG1fbWVzc2FnZVF1
ZXVlLT5zZXRQYXVzZWQodHJ1ZSk7CiB9CiAKIFNlcnZpY2VXb3JrZXJDb250YWluZXI6On5TZXJ2
aWNlV29ya2VyQ29udGFpbmVyKCkKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0YXJ0TWVzc2FnZXMoKQogewot
ICAgIG1fbWVzc2FnZVF1ZXVlLnJlc3VtZSgpOworICAgIG1fbWVzc2FnZVF1ZXVlLT5zZXRQYXVz
ZWQoZmFsc2UpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZhaWxlZFdp
dGhFeGNlcHRpb24oU2VydmljZVdvcmtlckpvYiYgam9iLCBjb25zdCBFeGNlcHRpb24mIGV4Y2Vw
dGlvbikKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnBv
c3RNZXNzYWdlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydgogCiAgICAg
YXV0byBtZXNzYWdlRXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6ZW50
YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpLCBt
ZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1v
dmUoc291cmNlKSk7CiAgICAgCi0gICAgbV9tZXNzYWdlUXVldWUuZW5xdWV1ZUV2ZW50KFdURk1v
dmUobWVzc2FnZUV2ZW50KSk7CisgICAgbV9tZXNzYWdlUXVldWUtPmVucXVldWVFdmVudChXVEZN
b3ZlKG1lc3NhZ2VFdmVudCkpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Om5v
dGlmeVJlZ2lzdHJhdGlvbklzU2V0dGxlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiByZWdpc3RyYXRpb25LZXkpCkBAIC01MjMsMTYgKzUyMyw2IEBAIGJvb2wgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiAg
ICAgcmV0dXJuICFoYXNQZW5kaW5nQWN0aXZpdHkoKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCi17Ci0gICAgbV9tZXNzYWdl
UXVldWUuc3VzcGVuZCgpOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlc3Vt
ZSgpCi17Ci0gICAgbV9tZXNzYWdlUXVldWUucmVzdW1lKCk7Ci19Ci0KIFNXQ2xpZW50Q29ubmVj
dGlvbiYgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6ZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkK
IHsKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKQEAgLTU4Myw3ICs1NzMs
NiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0b3AoKQogICAgIG1faXNTdG9wcGVk
ID0gdHJ1ZTsKICAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogICAgIG1fcmVhZHlQcm9t
aXNlID0gbnVsbHB0cjsKLSAgICBtX21lc3NhZ2VRdWV1ZS5jbG9zZSgpOwogICAgIGF1dG8gam9i
TWFwID0gV1RGTW92ZShtX2pvYk1hcCk7CiAgICAgZm9yIChhdXRvJiBvbmdvaW5nSm9iIDogam9i
TWFwLnZhbHVlcygpKSB7CiAgICAgICAgIGlmIChvbmdvaW5nSm9iLmpvYi0+Y2FuY2VsUGVuZGlu
Z0xvYWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IDQ5OGEwY2I0NGIxMmQ1ZGJlNTc3ZDFlYjZlNzVh
YTU1MTkwNzhiOWUuLjc1ZWE5NTMyMTkwZjBjNjZjNjYwYmJlOWIyNWQ0YmNkN2M5MWQ5YzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDb250YWluZXIuaApAQCAtMTExLDggKzExMSw2IEBAIHByaXZhdGU6CiAgICAgLy8gQWN0aXZl
RE9NT2JqZWN0LgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBm
aW5hbDsKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAg
dm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2Jq
ZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAgICBFdmVudFRhcmdldEludGVyZmFj
ZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KQEAgLTE0Myw4ICsxNDEsNyBA
QCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9sYXN0T25nb2luZ1NldHRsZWRSZWdpc3RyYXRp
b25JZGVudGlmaWVyIHsgMCB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25LZXk+IG1fb25nb2luZ1NldHRsZWRSZWdpc3RyYXRpb25zOwotICAgIEdlbmVy
aWNFdmVudFF1ZXVlIG1fbWVzc2FnZVF1ZXVlOwotCisgICAgVW5pcXVlUmVmPEdlbmVyaWNFdmVu
dFF1ZXVlPiBtX21lc3NhZ2VRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379858</attachid>
            <date>2019-09-30 16:53:28 -0700</date>
            <delta_ts>2019-09-30 16:55:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202373-20190930165327.patch</filename>
            <type>text/plain</type>
            <size>54343</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOThkNjQ2M2M1OGQ2Y2E2
YWRmNjYxNjVhMTQ3MmMxZmVkOGNiNDg5OC4uYzBiNDJmN2Y4NTg3MTkxOTgxMDY1ZjMwZDYyNjM2
ZjIxNDQyZDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxOS0wOS0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgR2VuZXJpY0V2ZW50
UXVldWUgYW4gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDIzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIEdlbmVyaWNFdmVudFF1ZXVlIGFuIEFjdGl2ZURPTU9iamVj
dCBzbyB0aGF0IGl0IGlzIGd1YXJhbnRlZWQgdG8gbmV2ZXIgZmlyZSBhbnkgZXZlbnRzIHdoaWxl
CisgICAgICAgIHN1c3BlbmRlZCB3aXRob3V0IHJlcXVpcmluZyB0aGUgY2xpZW50IHRvIGV4cGxp
Y2l0bHkgc3VzcGVuZC9yZXN1bWUgdGhlIGV2ZW50IHF1ZXVlLgorCisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRNZWRpYUtleVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNlc3Npb246On5XZWJLaXRNZWRpYUtleVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZp
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzdG9w
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtl
eVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpNZWRpYVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpTb3Vy
Y2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpoYXNQZW5kaW5nQWN0
aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyTGlzdDo6U291cmNlQnVmZmVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJMaXN0OjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
ckxpc3Q6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c3Rv
cCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAg
KiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjp0aWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2xhcmF0aXZlQW5pbWF0aW9uOjpuZWVkc1RpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xh
cmF0aXZlQW5pbWF0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5p
bWF0aW9uOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9u
OjpyZXN1bWUpOgorICAgICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oOgor
ICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OkdlbmVyaWNFdmVudFF1ZXVlQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnNldFBhdXNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OmNhblN1c3BlbmRGb3JEb2N1bWVu
dFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0V2ZW50UXVldWVC
YXNlPFQ+OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNFdmVudFF1ZXVlQmFz
ZTxUPjo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNFdmVudFF1ZXVlQmFzZTxU
Pjo6cmVzY2hlZHVsZUFsbEV2ZW50c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVy
aWNFdmVudFF1ZXVlQmFzZTxUPjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljRXZl
bnRRdWV1ZUJhc2U8VD46OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYWlu
VGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL0dlbmVyaWNF
dmVudFF1ZXVlLmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNo
TWVzc2FnZXMpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpjYW5jZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVl
dWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlDaGFuZ2VkRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja0xpc3RCYXNlOjpUcmFja0xpc3RCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
TGlzdEJhc2U6OnNjaGVkdWxlVHJhY2tFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xp
c3RCYXNlOjpzY2hlZHVsZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlz
dEJhc2U6OmlzQ2hhbmdlRXZlbnRTY2hlZHVsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhY2tMaXN0QmFzZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6Cisg
ICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpXb3JrZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyOjp0ZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlcjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIu
aDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0
YXJ0TWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
c3RvcCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aDoKKwogMjAxOS0wOS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlZmluZSByZXN0cmljdGlvbnMgZm9yIFgtVGVtcC1UYWJsZXQgSFRUUCBoZWFkZXIgZXhw
ZXJpbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IDcyMGZjNzRkOTQ5OGRjOWI0ZDc1ZTkzNmYz
NGE0OTg0ZTFmNjE3MzcuLjU1MDhiMzc4Y2VmODg4MzY2NjdiNWRlOWNkOTZmNDI2Yzg5Mzc5ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgTWVkaWFLZXlTZXNzaW9uOjpN
ZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxN
ZWRpYUsKICAgICAsIG1fc2Vzc2lvblR5cGUoc2Vzc2lvblR5cGUpCiAgICAgLCBtX2ltcGxlbWVu
dGF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pKQogICAgICwgbV9pbnN0YW5jZVNlc3Npb24o
V1RGTW92ZShpbnN0YW5jZVNlc3Npb24pKQotICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQorICAg
ICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlz
KSkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20t
bWVkaWFrZXlzLWNyZWF0ZXNlc3Npb24KICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92
ZW1iZXIgMjAxNgpAQCAtNjE0LDcgKzYxNCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1
ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyCiAg
ICAgLy8gICAgaW50ZXJmYWNlIHdpdGggaXRzIHR5cGUgYXR0cmlidXRlIHNldCB0byBtZXNzYWdl
IGFuZCBpdHMgaXNUcnVzdGVkIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0cnVlLCBhbmQgZGlz
cGF0Y2ggaXQgYXQgdGhlCiAgICAgLy8gICAgc2Vzc2lvbi4KICAgICBhdXRvIG1lc3NhZ2VFdmVu
dCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVu
dCwge21lc3NhZ2VUeXBlLCBtZXNzYWdlLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCl9LCBFdmVudDo6
SXNUcnVzdGVkOjpZZXMpOwotICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZSht
ZXNzYWdlRXZlbnQpKTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKG1l
c3NhZ2VFdmVudCkpOwogfQogCiB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVz
ZXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbnB1dFN0YXR1c2VzKQpA
QCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNl
cyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGluCiAgICAgICAgIG1fc3Rh
dHVzZXMudW5jaGVja2VkQXBwZW5kKHsgV1RGTW92ZShzdGF0dXMuZmlyc3QpLCB0b01lZGlhS2V5
U3RhdHVzKHN0YXR1cy5zZWNvbmQpIH0pOwogCiAgICAgLy8gNS4gUXVldWUgYSB0YXNrIHRvIGZp
cmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5c3RhdHVzZXNjaGFuZ2UgYXQgdGhlIHNlc3Npb24u
Ci0gICAgbV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5rZXlzdGF0dXNlc2NoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlzdGF0dXNlc2NoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIAogICAgIC8vIDYuIFF1ZXVlIGEg
dGFzayB0byBydW4gdGhlIEF0dGVtcHQgdG8gUmVzdW1lIFBsYXliYWNrIElmIE5lY2Vzc2FyeSBh
bGdvcml0aG0gb24gZWFjaCBvZiB0aGUgbWVkaWEgZWxlbWVudChzKSB3aG9zZSBtZWRpYUtleXMg
YXR0cmlidXRlIGlzIHRoZSBNZWRpYUtleXMgb2JqZWN0IHRoYXQgY3JlYXRlZCB0aGUgc2Vzc2lv
bi4KICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzaygKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDVhNjJl
YWMyZDdmZTYzMDM1ZDBmY2VjY2IwYTY1YzNiYmE2Y2U0ZDMuLjk1YmFmMzU0OGQ3OTc4NGVhMmQ1
MWFhNDg0OWYxMGQwZmVhMmM5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMTE0LDcgKzExNCw3IEBA
IHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJl
ZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9p
bnN0YW5jZVNlc3Npb247Ci0gICAgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlIG1fZXZlbnRR
dWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50
UXVldWU7CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7CiAgICAgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAgZG91YmxlIG1f
Zmlyc3REZWNyeXB0VGltZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uY3BwCmluZGV4IDcwYzcwZTNkZGJjYzc5MWM4N2Y5ZTg3NjMyMWNlYWJiZDNlNzZkNjEu
LjllOTNjN2IyODYxZTY0MDgwNjk0YWNmYTNmZmYzNDI5OWI5NjcwYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJLaXRN
ZWRpYUtleVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBXZQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwg
bV9rZXlzKCZrZXlzKQogICAgICwgbV9rZXlTeXN0ZW0oa2V5U3lzdGVtKQotICAgICwgbV9hc3lu
Y0V2ZW50UXVldWUoKnRoaXMpCisgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2Vu
ZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3Nlc3Npb24oa2V5cy5jZG0o
KS5jcmVhdGVTZXNzaW9uKCp0aGlzKSkKICAgICAsIG1fa2V5UmVxdWVzdFRpbWVyKCp0aGlzLCAm
V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJlZCkKICAgICAsIG1fYWRk
S2V5VGltZXIoKnRoaXMsICZXZWJLaXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQp
CkBAIC02OCw3ICs2OCw3IEBAIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6fldlYktpdE1lZGlhS2V5
U2Vzc2lvbigpCiAgICAgaWYgKG1fc2Vzc2lvbikKICAgICAgICAgbV9zZXNzaW9uLT5zZXRDbGll
bnQobnVsbHB0cik7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jYW5jZWxBbGxFdmVudHMoKTsK
KyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7CiB9CiAKIHZvaWQgV2Vi
S2l0TWVkaWFLZXlTZXNzaW9uOjpjbG9zZSgpCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBXZWJL
aXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQoKQogICAgICAgICBpZiAoZGlkU3Rv
cmVLZXkpIHsKICAgICAgICAgICAgIGF1dG8ga2V5YWRkZWRFdmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLndlYmtpdGtleWFkZGVkRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBrZXlhZGRlZEV2ZW50LT5zZXRU
YXJnZXQodGhpcyk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShrZXlhZGRlZEV2ZW50KSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+
ZW5xdWV1ZUV2ZW50KFdURk1vdmUoa2V5YWRkZWRFdmVudCkpOwogCiAgICAgICAgICAgICBBU1NF
UlQobV9rZXlzKTsKICAgICAgICAgICAgIG1fa2V5cy0+a2V5QWRkZWQoKTsKQEAgLTIwNyw3ICsy
MDcsNyBAQCB2b2lkIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoVWludDhBcnJh
eSogbWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVQogewogICAgIGF1dG8gZXZlbnQgPSBXZWJL
aXRNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXltZXNz
YWdlRXZlbnQsIG1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMKTsKICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50
KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CiB9CiAKIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWVkaWFLZXlFcnJv
ckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQpAQCAtMjE2LDcgKzIxNiw3IEBA
IHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWVkaWFLZXlFcnJvckNvZGUg
ZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0CiAKICAgICBhdXRvIGtleWVycm9yRXZlbnQgPSBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgIGtleWVycm9yRXZlbnQtPnNl
dFRhcmdldCh0aGlzKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92
ZShrZXllcnJvckV2ZW50KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChX
VEZNb3ZlKGtleWVycm9yRXZlbnQpKTsKIH0KIAogU3RyaW5nIFdlYktpdE1lZGlhS2V5U2Vzc2lv
bjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC0yMzgsMjIgKzIzOCwxMSBA
QCBTdHJpbmcgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKIAogYm9vbCBXZWJLaXRNZWRpYUtleVNlc3Npb246Omhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX2tleXMgJiYgbV9zZXNzaW9uKSB8fCBtX2FzeW5j
RXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCi17Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpyZXN1bWUoKQotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAobV9rZXlzICYmIG1fc2Vzc2lv
bikgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKTsKIH0KIAogdm9pZCBX
ZWJLaXRNZWRpYUtleVNlc3Npb246OnN0b3AoKQogewotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNs
b3NlKCk7CiAgICAgY2xvc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAppbmRleCBkZGE4ZmVmMzYxM2Q3NmM0MGQyNDIxN2M0ZTVmYjAxZTM3MGMzNTVkLi40
MjMzYWNlMjY3NWM0NWZiYjYwNjBmYzBiMDk1YjhhY2Y3OTQ3NTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaApAQCAtNzcsOCArNzcsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29u
Rm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICB2b2lk
IHN0b3AoKSBmaW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24o
KSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QgZmluYWw7CkBAIC05MCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fa2V5U3lz
dGVtOwogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBSZWZQdHI8V2ViS2l0TWVkaWFLZXlF
cnJvcj4gbV9lcnJvcjsKLSAgICBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2
ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9h
c3luY0V2ZW50UXVldWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IG1f
c2Vzc2lvbjsKIAogICAgIHN0cnVjdCBQZW5kaW5nS2V5UmVxdWVzdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDdjYmM2
YTEzMzUxZTBkMzJjZTI1NWE5YmFkY2I5NzQ0ZGFmNGQ0NDguLmI5NDg5MjdhZTYyNmQ3OWY1NTY2
MTRhMzJmZGRkNGQ0ZGRkOTVkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgTWVkaWFTb3Vy
Y2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2R1cmF0aW9uKE1lZGlhVGltZTo6aW52
YWxpZFRpbWUoKSkKICAgICAsIG1fcGVuZGluZ1NlZWtUaW1lKE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQorICAgICwgbV9hc3luY0V2ZW50
UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpLmxvZ2dlcigpKQogI2VuZGlmCkBAIC05NzMsMzggKzk3MywxNCBAQCB2b2lkIE1lZGlh
U291cmNlOjpvcGVuSWZJbkVuZGVkU3RhdGUoKQogCiBib29sIE1lZGlhU291cmNlOjpoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUgfHwgbV9hc3luY0V2
ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpCisgICAgcmV0dXJuIG1fcHJpdmF0ZSB8fCBtX2Fz
eW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpCiAgICAgICAgIHx8IEFjdGl2ZURPTU9i
amVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2U6OnN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBzdGF0aWNfY2FzdDxpbnQ+KHJlYXNvbikpOwotCi0gICAgc3dpdGNoIChyZWFzb24p
IHsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAgICBjYXNlIFJl
YXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAgIG1fYXN5bmNF
dmVudFF1ZXVlLnN1c3BlbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFzb25Gb3JT
dXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBSZWFzb25Gb3JT
dXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBk
b24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU291cmNlOjpyZXN1bWUoKQotewotICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7Ci0KLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUoKTsKLX0K
LQogdm9pZCBNZWRpYVNvdXJjZTo6c3RvcCgpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNsb3NlKCk7CiAgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQogICAgICAgICBtX21lZGlhRWxlbWVudC0+ZGV0YWNoTWVkaWFTb3VyY2UoKTsKICAg
ICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpDbG9zZWQ7CkBAIC0xMDEzLDcgKzk4OSw4IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnN0b3AoKQogCiBib29sIE1lZGlhU291cmNlOjpjYW5TdXNwZW5k
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNDbG9zZWQoKSAm
JiAhbV9hc3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOworICAgIC8vIEZJWE1FOiBE
byBiZXR0ZXIuCisgICAgcmV0dXJuIGlzQ2xvc2VkKCk7CiB9CiAKIGNvbnN0IGNoYXIqIE1lZGlh
U291cmNlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTEwODAsNyArMTA1Nyw3IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRO
YW1lKQogICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICBldmVudC0+c2V0VGFy
Z2V0KHRoaXMpOwogCi0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUo
ZXZlbnQpKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZl
bnQpKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTb3VyY2U6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDJmZWIwMGJmYzVmZDkwNjEwMGQyMDUzYmNlYzQx
MjMyYmE4OGRkOTcuLjhhMWVmY2EyMjhmMWQ5NWM4NjA3ZmMzZTg5YjM5OTA4MmVlY2EwYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgK
QEAgLTEyNiw4ICsxMjYsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlh
U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgIHZvaWQgc3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIHZv
aWQgc3RvcCgpIGZpbmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lv
bigpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdCBmaW5hbDsKQEAgLTE2OCw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhVGltZSBt
X2R1cmF0aW9uOwogICAgIE1lZGlhVGltZSBtX3BlbmRpbmdTZWVrVGltZTsKICAgICBSZWFkeVN0
YXRlIG1fcmVhZHlTdGF0ZSB7IFJlYWR5U3RhdGU6OkNsb3NlZCB9OwotICAgIE1haW5UaHJlYWRH
ZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRo
cmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2
b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNDIwNmRmYmM5ZGJj
N2RhZTkyMjJlNjM4Y2RiZTlmMTMxM2U1OTliNS4uNzA4M2RjN2VmYTFiMzQxYzFlZTA5YWJmOWI2
NTY3NjRkMGM1M2ViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFNvdXJjZUJ1ZmZlcjo6
U291cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZh
dGUsIE1lZGlhCiAgICAgOiBBY3RpdmVET01PYmplY3Qoc291cmNlLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCiAgICAgLCBtX3ByaXZhdGUoV1RGTW92ZShzb3VyY2VCdWZmZXJQcml2YXRlKSkK
ICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQor
ICAgICwgbV9hc3luY0V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVh
dGUoKnRoaXMpKQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcigqdGhpcywgJlNvdXJjZUJ1ZmZl
cjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCkKICAgICAsIG1fYXBwZW5kV2luZG93U3RhcnQoTWVk
aWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9hcHBlbmRXaW5kb3dFbmQoTWVkaWFUaW1lOjpw
b3NpdGl2ZUluZmluaXRlVGltZSgpKQpAQCAtNTI4LDMxICs1MjgsMTEgQEAgTWVkaWFUaW1lIFNv
dXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUZhc3RTZWVrVGltZUZvck1lZGlhVGltZShj
b25zdCBNZWRpYVQKIAogYm9vbCBTb3VyY2VCdWZmZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fc291cmNlIHx8IG1fYXN5bmNFdmVudFF1ZXVlLmhhc1BlbmRp
bmdFdmVudHMoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXI6OnN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbiByZWFzb24pCi17Ci0gICAgc3dpdGNoIChyZWFzb24pIHsKLSAgICBjYXNlIFJlYXNv
bkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246
OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2Ny
aXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVm
ZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBw
bGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lk
IFNvdXJjZUJ1ZmZlcjo6cmVzdW1lKCkKLXsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUo
KTsKKyAgICByZXR1cm4gbV9zb3VyY2UgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdF
dmVudHMoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnN0b3AoKQogewotICAgIG1fYXN5bmNF
dmVudFF1ZXVlLmNsb3NlKCk7CiAgICAgbV9hcHBlbmRCdWZmZXJUaW1lci5zdG9wKCk7CiAgICAg
bV9yZW1vdmVUaW1lci5zdG9wKCk7CiB9CkBAIC01NzcsNyArNTU3LDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXI6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lKQogICAgIGF1
dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwog
Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAg
ICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChjb25z
dCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggMDhjNDYxZGIzZDk5
Y2I1YjNkZWE3N2YxYTg0ZTQ1ZWFmMGVmOGEwYS4uZGQ1ZGFmNmM5MDY2ZmZjNmI4OTE5NmU1ZDkx
MGY2NjEzZjUzNjEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0xNDQsOCArMTQ0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgdm9pZCBzdG9w
KCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZp
bmFsOwpAQCAtMjE3LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8U291cmNlQnVmZmVy
UHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIE1lZGlhU291cmNlKiBtX3NvdXJjZTsKLSAgICBNYWlu
VGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVm
PE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAgICAgQXBw
ZW5kTW9kZSBtX21vZGUgeyBBcHBlbmRNb2RlOjpTZWdtZW50cyB9OwogCiAgICAgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAppbmRleCA2Nzgy
MjQ2ZmQ0YzUwYjEzMTVlMWQ5MDQ1YmE0YWRkOTg0MGY5NmE1Li5iNGQ4MmM0OWM1YmZkM2ViY2Zh
OWEzNTE2NWFmZjBmZWVhYThjYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNvdXJjZUJ1ZmZlckxpc3QpOwogCiBTb3VyY2VC
dWZmZXJMaXN0OjpTb3VyY2VCdWZmZXJMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKCp0aGlzKQorICAgICwgbV9hc3luY0V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVu
dFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQpAQCAt
OTgsMzYgKzk4LDEyIEBAIHZvaWQgU291cmNlQnVmZmVyTGlzdDo6c2NoZWR1bGVFdmVudChjb25z
dCBBdG9tU3RyaW5nJiBldmVudE5hbWUpCiAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
OwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5l
bnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1
ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwogfQogCiBib29sIFNvdXJjZUJ1ZmZlckxpc3Q6OmNh
blN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAhbV9h
c3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZl
ckxpc3Q6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgc3dpdGNo
IChyZWFzb24pIHsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAg
ICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAg
IG1fYXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3Ro
aW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFNvdXJjZUJ1ZmZlckxpc3Q6OnJlc3VtZSgpCi17
Ci0gICAgbV9hc3luY0V2ZW50UXVldWUucmVzdW1lKCk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVy
TGlzdDo6c3RvcCgpCi17Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuY2xvc2UoKTsKKyAgICByZXR1
cm4gIW1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIGNvbnN0IGNo
YXIqIFNvdXJjZUJ1ZmZlckxpc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3Qu
aAppbmRleCAyNmQwYWVhYzdhNTNkNDJkMGJlODMxNTJkYTI0MTRlMWUyMTBjMjZkLi5iNDEwMDNh
M2I0MjY2MmRlOGIyOTZiOTBmYTMxNzI4MDQzNjFjNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaApAQCAtNzksMTIg
Kzc5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7
IGRlcmVmKCk7IH0KIAogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigp
IGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5h
bDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAg
IGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIE1h
aW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBVbmlxdWVS
ZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKIAogICAg
IFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyPj4gbV9saXN0OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA5ZjIzMDljY2Yz
OTJiZTc4YzJhY2VmZTEzOWQ2OGQyOTY0ZjMxYTU1Li5jNjI3ZjMzNGViYmEwOTQwY2ViODRiODI1
YWY2ZTgyMDBkM2MxMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQXVkaW9Db250ZXh0OjpBdWRp
b0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1
ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1
ZTxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1
ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgLy8g
QWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9ubHkgYWZ0ZXIgcGFnZSBu
YXZpZ2F0ZS4KICAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVu
ZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhvZC4KQEAgLTE2Niw3ICsx
NjYsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdAogI2VuZGlmCiAgICAgLCBtX2lzT2ZmbGlu
ZUNvbnRleHQodHJ1ZSkKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9ldmVudFF1ZXVlKG1ha2VVbmlxdWU8TWFpblRocmVh
ZEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUoTWFpblRocmVh
ZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1v
bigpOwogCkBAIC0zMzYsOCArMzM2LDYgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN0b3AoKQogICAg
IEFTU0VSVChkb2N1bWVudCgpKTsKICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRp
YSgpOwogCi0gICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwotCiAgICAgdW5pbml0aWFsaXplKCk7
CiAgICAgY2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCmluZGV4IGQ5OTEyOTQ5YTM5NGFiODEzNGUxOTViMWM5ZjI5Mzc5NDMwNzkz
ZjguLjM0MTk5ODFjMzU3NGMzNzNlZTk3NjFiZmZlYjVkZTBkYmRhYWFiMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNDUsNiArNDUs
NyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nSGFzaC5oPgogCkBAIC00MTcsNyArNDE4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8VmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4+IG1fc3RhdGVSZWFjdGlvbnM7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9u
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fZXZl
bnRRdWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2
ZW50UXVldWU7CiAKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwogICAg
IFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAppbmRleCAy
YTYwM2RhYWE2MDEwZDY0NjQ1NzkwMTc4NmY2NzA1NTBjNTRkNjEzLi5mNGI2OTc4MzdlNDc0NTdj
YzYwMmZiODA4MmIxZjQ4NzgwYTJmMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKERlY2xhcmF0aXZlQW5pbWF0aW9uKTsKIAogRGVjbGFyYXRpdmVB
bmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNv
bnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikKICAgICA6IFdlYkFuaW1hdGlvbihvd25p
bmdFbGVtZW50LmRvY3VtZW50KCkpCi0gICAgLCBtX2V2ZW50UXVldWUob3duaW5nRWxlbWVudCkK
KyAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShv
d25pbmdFbGVtZW50KSkKICAgICAsIG1fb3duaW5nRWxlbWVudCgmb3duaW5nRWxlbWVudCkKICAg
ICAsIG1fYmFja2luZ0FuaW1hdGlvbihjb25zdF9jYXN0PEFuaW1hdGlvbiY+KGJhY2tpbmdBbmlt
YXRpb24pKQogewpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjp0
aWNrKCkKICAgICAvLyBtYXBzIGNvbnRhaW5pbmcgcnVubmluZyBDU1MgVHJhbnNpdGlvbnMgYW5k
IENTUyBBbmltYXRpb25zIGZvciBhIGdpdmVuIGVsZW1lbnQuCiAgICAgaWYgKHdhc1JlbGV2YW50
ICYmIHBsYXlTdGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpJZGxlKSB7CiAgICAg
ICAgIGRpc2Fzc29jaWF0ZUZyb21Pd25pbmdFbGVtZW50KCk7Ci0gICAgICAgIG1fZXZlbnRRdWV1
ZS5jbG9zZSgpOworICAgICAgICBtX2V2ZW50UXVldWUtPmNsb3NlKCk7CiAgICAgfQogfQogCkBA
IC04MywxMiArODMsMTIgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZGlzYXNzb2NpYXRl
RnJvbU93bmluZ0VsZW1lbnQoKQogCiBib29sIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpuZWVkc1Rp
Y2soKSBjb25zdAogewotICAgIHJldHVybiBXZWJBbmltYXRpb246Om5lZWRzVGljaygpIHx8IG1f
ZXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7CisgICAgcmV0dXJuIFdlYkFuaW1hdGlvbjo6
bmVlZHNUaWNrKCkgfHwgbV9ldmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIHZv
aWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnJlbW92ZSgpCiB7Ci0gICAgbV9ldmVudFF1ZXVlLmNs
b3NlKCk7CisgICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwogICAgIFdlYkFuaW1hdGlvbjo6cmVt
b3ZlKCk7CiB9CiAKQEAgLTMzNSwyNiArMzM1LDIzIEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRp
b246OmVucXVldWVET01FdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFNlY29uZHMK
ICAgICBBU1NFUlQobV9vd25pbmdFbGVtZW50KTsKICAgICBhdXRvIHRpbWUgPSBzZWNvbmRzVG9X
ZWJBbmltYXRpb25zQVBJVGltZShlbGFwc2VkVGltZSkgLyAxMDAwOwogICAgIGlmIChpczxDU1NB
bmltYXRpb24+KHRoaXMpKQotICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KEFuaW1h
dGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBkb3duY2FzdDxDU1NBbmltYXRpb24+KHRoaXMp
LT5hbmltYXRpb25OYW1lKCksIHRpbWUpKTsKKyAgICAgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVl
RXZlbnQoQW5pbWF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGRvd25jYXN0PENTU0FuaW1h
dGlvbj4odGhpcyktPmFuaW1hdGlvbk5hbWUoKSwgdGltZSkpOwogICAgIGVsc2UgaWYgKGlzPENT
U1RyYW5zaXRpb24+KHRoaXMpKQotICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFRy
YW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4o
dGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0eSgpLCB0aW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9F
bGVtZW50TmFtZUZvckV2ZW50cyhtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpKSk7CisgICAg
ICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50VHlwZSwgZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4odGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0
eSgpLCB0aW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhtX293
bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpKSk7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRp
b246OnN0b3AoKQogewotICAgIG1fZXZlbnRRdWV1ZS5jbG9zZSgpOwogICAgIFdlYkFuaW1hdGlv
bjo6c3RvcCgpOwogfQogCiB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpzdXNwZW5kKFJlYXNv
bkZvclN1c3BlbnNpb24gcmVhc29uKQogewotICAgIG1fZXZlbnRRdWV1ZS5zdXNwZW5kKCk7CiAg
ICAgV2ViQW5pbWF0aW9uOjpzdXNwZW5kKHJlYXNvbik7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVB
bmltYXRpb246OnJlc3VtZSgpCiB7Ci0gICAgbV9ldmVudFF1ZXVlLnJlc3VtZSgpOwogICAgIFdl
YkFuaW1hdGlvbjo6cmVzdW1lKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5kZXggNDA3ZTkwMDMzMTlkMjVjOWY3N2NmYmNiODNl
ZmRjYzJjZTNlOTY4OS4uOGJmYWUyMTdmNWRmZTk2MjE3NTEwNTAzYTdmYWUwNzM1YTdjNDk4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgK
QEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FzUGVuZGluZyB7IGZhbHNl
IH07CiAgICAgQW5pbWF0aW9uRWZmZWN0UGhhc2UgbV9wcmV2aW91c1BoYXNlIHsgQW5pbWF0aW9u
RWZmZWN0UGhhc2U6OklkbGUgfTsKIAotICAgIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSBt
X2V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4g
bV9ldmVudFF1ZXVlOwogCiAgICAgRWxlbWVudCogbV9vd25pbmdFbGVtZW50OwogICAgIFJlZjxB
bmltYXRpb24+IG1fYmFja2luZ0FuaW1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2
ZW50UXVldWUuY3BwCmluZGV4IGU3OGJlNDgxZTlmMWQyMzY4OGVhOWRkZTZjNmFiZGYyNzNiMTE3
MGMuLmUzYTdlMmY3NjA4MzM3NzI1MDQzMWMyZGY0ZmRkZWRkNWQ3NjA3YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcApAQCAtNDYsNyArNDYsOCBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBUYXNrUXVldWVDb25zdHJ1Y3RvcjxUaW1lcj4gewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjpHZW5lcmljRXZlbnRRdWV1ZUJhc2Uo
RXZlbnRUYXJnZXQmIG93bmVyKQotICAgIDogbV9vd25lcihvd25lcikKKyAgICA6IEFjdGl2ZURP
TU9iamVjdChvd25lci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX293bmVyKG93
bmVyKQogICAgICwgbV90YXNrUXVldWUoVGFza1F1ZXVlQ29uc3RydWN0b3I8VD46OmNvbnN0cnVj
dChvd25lci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQogewogfQpAQCAtNjUsNyArNjYsNyBA
QCB2b2lkIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6ZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVu
dD4mJiBldmVudCkKIAogICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoV1RGTW92ZShldmVudCkp
OwogCi0gICAgaWYgKG1faXNTdXNwZW5kZWQpCisgICAgaWYgKGlzU3VzcGVuZGVkT3JQYXVzZWRC
eUNsaWVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFz
ayhzdGQ6OmJpbmQoJkdlbmVyaWNFdmVudFF1ZXVlQmFzZTo6ZGlzcGF0Y2hPbmVFdmVudCwgdGhp
cykpOwpAQCAtMTE5LDkgKzEyMCwzMCBAQCBib29sIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6
aGFzUGVuZGluZ0V2ZW50c09mVHlwZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlKSBjbwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnN1c3Bl
bmQoKQordm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnNldFBhdXNlZChib29sIHNob3Vs
ZFBhdXNlKQogewotICAgIEFTU0VSVCghbV9pc1N1c3BlbmRlZCk7CisgICAgaWYgKG1faXNQYXVz
ZWRCeUNsaWVudCA9PSBzaG91bGRQYXVzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1Bh
dXNlZEJ5Q2xpZW50ID0gc2hvdWxkUGF1c2U7CisgICAgaWYgKHNob3VsZFBhdXNlKQorICAgICAg
ICBtX3Rhc2tRdWV1ZS5jYW5jZWxBbGxUYXNrcygpOworICAgIGVsc2UKKyAgICAgICAgcmVzY2hl
ZHVsZUFsbEV2ZW50c0lmTmVlZGVkKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29s
IEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Cit2b2lkIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5z
aW9uKQoreworICAgIGlmIChtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKICAgICBt
X2lzU3VzcGVuZGVkID0gdHJ1ZTsKICAgICBtX3Rhc2tRdWV1ZS5jYW5jZWxBbGxUYXNrcygpOwog
fQpAQCAtMTMzLDEyICsxNTUsNDYgQEAgdm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnJl
c3VtZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKKyAg
ICByZXNjaGVkdWxlQWxsRXZlbnRzSWZOZWVkZWQoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3ZvaWQgR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjpyZXNjaGVkdWxlQWxsRXZlbnRzSWZO
ZWVkZWQoKQoreworICAgIGlmIChpc1N1c3BlbmRlZE9yUGF1c2VkQnlDbGllbnQoKSkKKyAgICAg
ICAgcmV0dXJuOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGVuZGluZ0V2ZW50
cy5zaXplKCk7ICsraSkKICAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soc3RkOjpiaW5k
KCZHZW5lcmljRXZlbnRRdWV1ZUJhc2U6OmRpc3BhdGNoT25lRXZlbnQsIHRoaXMpKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjpzdG9w
KCkKK3sKKyAgICBjbG9zZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uc3QgY2hh
ciogR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gIkdlbmVyaWNFdmVudFF1ZXVlQmFzZSI7Cit9CisKIHRlbXBsYXRlIGNs
YXNzIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUaW1lcj47CiB0ZW1wbGF0ZSBjbGFzcyBHZW5lcmlj
RXZlbnRRdWV1ZUJhc2U8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD47CiAKK1VuaXF1ZVJlZjxHZW5l
cmljRXZlbnRRdWV1ZT4gR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShFdmVudFRhcmdldCYgZXZl
bnRUYXJnZXQpCit7CisgICAgYXV0byBldmVudFF1ZXVlID0gbWFrZVVuaXF1ZVJlZjxHZW5lcmlj
RXZlbnRRdWV1ZT4oZXZlbnRUYXJnZXQpOworICAgIGV2ZW50UXVldWUtPnN1c3BlbmRJZk5lZWRl
ZCgpOworICAgIHJldHVybiBldmVudFF1ZXVlOworfQorCitVbmlxdWVSZWY8TWFpblRocmVhZEdl
bmVyaWNFdmVudFF1ZXVlPiBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShFdmVu
dFRhcmdldCYgZXZlbnRUYXJnZXQpCit7CisgICAgYXV0byBldmVudFF1ZXVlID0gbWFrZVVuaXF1
ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+KGV2ZW50VGFyZ2V0KTsKKyAgICBldmVu
dFF1ZXVlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZXZlbnRRdWV1ZTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaAppbmRleCA0YzU2NDIzYTllMWU0
N2E5MzZjMDk0ZWM0ZmY1NDdiMjNkYzExMzBhLi4zN2IwYzRmMjQ3MWM5YmE4OWY2ZDY3YTllYTQ5
YmZjN2NmZGE1OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50
UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaApAQCAt
MjUsMTAgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0z
OCw3ICs0MCw3IEBAIGNsYXNzIFRpbWVyOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEdlbmVyaWNFdmVudFF1ZXVlQmFzZSB7Citj
bGFzcyBHZW5lcmljRXZlbnRRdWV1ZUJhc2UgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBHZW5lcmlj
RXZlbnRRdWV1ZUJhc2UoRXZlbnRUYXJnZXQmKTsKQEAgLTUxLDI0ICs1MywzNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNQZW5kaW5n
RXZlbnRzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIHZvaWQgc3VzcGVu
ZCgpOwotICAgIHZvaWQgcmVzdW1lKCk7CisgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCk7CiAKICAg
ICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N1c3BlbmRlZDsgfQogCiBw
cml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hPbmVFdmVudCgpOwogCisgICAgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgY2FuU3VzcGVuZEZv
ckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFs
OworICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lk
IHJlc3VtZSgpIGZpbmFsOworCisgICAgdm9pZCByZXNjaGVkdWxlQWxsRXZlbnRzSWZOZWVkZWQo
KTsKKyAgICBib29sIGlzU3VzcGVuZGVkT3JQYXVzZWRCeUNsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdXNwZW5kZWQgfHwgbV9pc1BhdXNlZEJ5Q2xpZW50OyB9CisKICAgICBFdmVudFRhcmdl
dCYgbV9vd25lcjsKICAgICBHZW5lcmljVGFza1F1ZXVlPFQ+IG1fdGFza1F1ZXVlOwogICAgIERl
cXVlPFJlZlB0cjxFdmVudD4+IG1fcGVuZGluZ0V2ZW50czsKICAgICBib29sIG1faXNDbG9zZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1BhdXNlZEJ5Q2xpZW50IHsgZmFsc2UgfTsKICAgICBi
b29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogfTsKIAogLy8gQWxsIGluc3RhbmNlcyBvZiBN
YWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgdXNlIGEgc2hhcmVkIFRpbWVyIGZvciBkaXNwYXRj
aGluZyBldmVudHMuCiBjbGFzcyBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgOiBwdWJsaWMg
R2VuZXJpY0V2ZW50UXVldWVCYXNlPFRpbWVyPiB7CiBwdWJsaWM6CisgICAgc3RhdGljIFVuaXF1
ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IGNyZWF0ZShFdmVudFRhcmdldCYpOwor
Citwcml2YXRlOgorICAgIGZyaWVuZCBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1
ZXVlPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPE1haW5UaHJlYWRH
ZW5lcmljRXZlbnRRdWV1ZSwgRXZlbnRUYXJnZXQmPihFdmVudFRhcmdldCYpOwogICAgIGV4cGxp
Y2l0IE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZShFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQp
CiAgICAgICAgIDogR2VuZXJpY0V2ZW50UXVldWVCYXNlPFRpbWVyPihldmVudFRhcmdldCkKICAg
ICB7CkBAIC03OCw2ICs5MywxMCBAQCBwdWJsaWM6CiBjbGFzcyBHZW5lcmljRXZlbnRRdWV1ZSA6
IHB1YmxpYyBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIHN0YXRpYyBVbmlxdWVS
ZWY8R2VuZXJpY0V2ZW50UXVldWU+IGNyZWF0ZShFdmVudFRhcmdldCYpOworCitwcml2YXRlOgor
ICAgIGZyaWVuZCBVbmlxdWVSZWY8R2VuZXJpY0V2ZW50UXVldWU+IFdURjo6bWFrZVVuaXF1ZVJl
ZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8R2VuZXJpY0V2ZW50UXVldWUsIEV2ZW50VGFyZ2V0Jj4o
RXZlbnRUYXJnZXQmKTsKICAgICBleHBsaWNpdCBHZW5lcmljRXZlbnRRdWV1ZShFdmVudFRhcmdl
dCYgZXZlbnRUYXJnZXQpCiAgICAgICAgIDogR2VuZXJpY0V2ZW50UXVldWVCYXNlPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ+KGV2ZW50VGFyZ2V0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuY3BwCmluZGV4IDg0MmVlMjk0M2RmY2Q2NzBhYjgwOTI2MGRjMTE1MmEwNDU2MTJiYzguLjFk
NTA0MDJkNzdjNTFhMDIwZjQzNTBmOGY5ZmFmNmI0OTIwNDFkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcApAQCAtOTgsNyArOTgsNyBAQCBNZXNzYWdlUG9ydDo6TWVzc2FnZVBvcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgTQog
ICAgIDogQWN0aXZlRE9NT2JqZWN0KCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICwgbV9p
ZGVudGlmaWVyKGxvY2FsKQogICAgICwgbV9yZW1vdGVJZGVudGlmaWVyKHJlbW90ZSkKLSAgICAs
IG1fZXZlbnRRdWV1ZSgqdGhpcykKKyAgICAsIG1fZXZlbnRRdWV1ZShHZW5lcmljRXZlbnRRdWV1
ZTo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBMT0coTWVzc2FnZVBvcnRzLCAiQ3JlYXRlZCBNZXNz
YWdlUG9ydCAlcyAoJXApIGluIHByb2Nlc3MgJSIgUFJJdTY0LCBtX2lkZW50aWZpZXIubG9nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSwgdGhpcywgUHJvY2Vzczo6aWRlbnRpZmllcigpLnRvVUludDY0
KCkpOwogCkBAIC0yMjgsMTcgKzIyOCw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmNsb3NlKCkKIAog
ICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCgqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KS5tZXNzYWdlUG9ydENsb3NlZChtX2lkZW50aWZpZXIpOwogICAgIHJlbW92
ZUFsbEV2ZW50TGlzdGVuZXJzKCk7Ci0gICAgbV9ldmVudFF1ZXVlLmNsb3NlKCk7Ci19Ci0KLXZv
aWQgTWVzc2FnZVBvcnQ6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKLXsKLSAgICBtX2V2
ZW50UXVldWUuc3VzcGVuZCgpOwotfQotCi12b2lkIE1lc3NhZ2VQb3J0OjpyZXN1bWUoKQotewot
ICAgIG1fZXZlbnRRdWV1ZS5yZXN1bWUoKTsKKyAgICBtX2V2ZW50UXVldWUtPmNsb3NlKCk7CiB9
CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OmNvbnRleHREZXN0cm95ZWQoKQpAQCAtMjgwLDcgKzI3MCw3
IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMoKQogICAgICAgICAgICAgaWYg
KGNvbnRleHRJc1dvcmtlciAmJiBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkuaXNDbG9zaW5nKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7
Ci0gICAgICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKFdURk1vdmUocG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSkpOwor
ICAgICAgICAgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVh
dGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7CiAg
ICAgICAgIH0KICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2Fn
ZVBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4IGE0ZGMyMmE3
NmQ2Y2I5Y2ZlYjRmMGZiZWEzNzg3ZmY5YWQ3OWJiY2QuLjI2NTZiYjQzNGNlZTY3MTc1ZmQ2YjE1
YTBiYjkyYzgzMWEwOGNjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCkBAIC04NSw4ICs4
NSw2IEBAIHB1YmxpYzoKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kKFJlYXNv
bkZvclN1c3BlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgdm9p
ZCBjb250ZXh0RGVzdHJveWVkKCkgZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWwgeyBjbG9z
ZSgpOyB9CiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKQEAgLTEy
OSw3ICsxMjcsNyBAQCBwcml2YXRlOgogICAgIE1lc3NhZ2VQb3J0SWRlbnRpZmllciBtX3JlbW90
ZUlkZW50aWZpZXI7CiAKICAgICBtdXRhYmxlIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBtX3JlZkNv
dW50IHsgMSB9OwotICAgIEdlbmVyaWNFdmVudFF1ZXVlIG1fZXZlbnRRdWV1ZTsKKyAgICBVbmlx
dWVSZWY8R2VuZXJpY0V2ZW50UXVldWU+IG1fZXZlbnRRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4
IGQ0ZDEyYTEyMzcyZWY2MzMyOTYzMTcxOGI2ZGU1MDgxYmQxMzM5MzEuLjM4M2E0MTZkY2FkZWZl
YTUxYWJkMWY1NmEzZThiOTIwY2I4ZDYyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtNDI2LDcgKzQyNiw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxN
ZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
CiAgICAgLCBtX3NjYW5UaW1lcigqdGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNjYW5UaW1lckZp
cmVkKQogICAgICwgbV9wbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25z
VGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlckJl
aGF2aW9yUmVzdHJpY3Rpb25zVGltZXJGaXJlZCkKICAgICAsIG1fc2Vla1RvUGxheWJhY2tQb3Np
dGlvbkVuZGVkVGltZXIoKnRoaXMsICZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVG9QbGF5YmFja1Bv
c2l0aW9uRW5kZWRUaW1lckZpcmVkKQotICAgICwgbV9hc3luY0V2ZW50UXVldWUoKnRoaXMpCisg
ICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0
ZSgqdGhpcykpCiAgICAgLCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3ZpZVRpbWUoTWVkaWFUaW1l
Ojpwb3NpdGl2ZUluZmluaXRlVGltZSgpKQogICAgICwgbV9maXJzdFRpbWVQbGF5aW5nKHRydWUp
CiAgICAgLCBtX3BsYXlpbmcoZmFsc2UpCkBAIC01NzIsNyArNTcyLDcgQEAgSFRNTE1lZGlhRWxl
bWVudDo6fkhUTUxNZWRpYUVsZW1lbnQoKQogICAgIGJlZ2luSWdub3JpbmdUcmFja0Rpc3BsYXlV
cGRhdGVSZXF1ZXN0cygpOwogICAgIGFsbE1lZGlhRWxlbWVudHMoKS5yZW1vdmUodGhpcyk7CiAK
LSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jbG9zZSgpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5j
bG9zZSgpOwogCiAgICAgc2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoZmFsc2UpOwogICAgIHVucmVn
aXN0ZXJXaXRoRG9jdW1lbnQoZG9jdW1lbnQoKSk7CkBAIC0xMDIxLDcgKzEwMjEsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRO
YW1lKQogICAgIC8vIERvbid0IHNldCB0aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZlbnQgcXVldWUg
d2lsbCBzZXQgaXQgaW4gR2VuZXJpY0V2ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5kIHNldHRpbmcg
aXQgaGVyZQogICAgIC8vIHdpbGwgdHJpZ2dlciBhbiBBU1NFUlQgaWYgdGhpcyBlbGVtZW50IGhh
cyBiZWVuIG1hcmtlZCBmb3IgZGVsZXRpb24uCiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1
ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVl
RXZlbnQoV1RGTW92ZShldmVudCkpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVk
dWxlUmVzb2x2ZVBlbmRpbmdQbGF5UHJvbWlzZXMoKQpAQCAtMTg0OSwxMSArMTg0OSwxMSBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVk
aWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAgICAgIGlmIChldmVudFRhc2suc2Vjb25kLT5zdGFydFRp
bWUoKSA+PSBldmVudFRhc2suc2Vjb25kLT5lbmRUaW1lKCkpIHsKICAgICAgICAgICAgIGF1dG8g
ZW50ZXJFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVudGVyRXZlbnQsIEV2ZW50
OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBl
bnRlckV2ZW50LT5zZXRUYXJnZXQoZXZlbnRUYXNrLnNlY29uZCk7Ci0gICAgICAgICAgICBtX2Fz
eW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShlbnRlckV2ZW50KSk7CisgICAgICAg
ICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZW50ZXJFdmVudCkp
OwogCiAgICAgICAgICAgICBhdXRvIGV4aXRFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLmV4aXRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
Ok5vKTsKICAgICAgICAgICAgIGV4aXRFdmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFzay5zZWNvbmQp
OwotICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXhp
dEV2ZW50KSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdU
Rk1vdmUoZXhpdEV2ZW50KSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8
RXZlbnQ+IGV2ZW50OwogICAgICAgICAgICAgaWYgKGV2ZW50VGFzay5maXJzdCA9PSBldmVudFRh
c2suc2Vjb25kLT5zdGFydE1lZGlhVGltZSgpKQpAQCAtMTg2MSw3ICsxODYxLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGlt
ZSYgbW92aWVUaW1lKQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGV2ZW50ID0g
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXhpdEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpO
bywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgICAgICAgICAgZXZlbnQtPnNldFRhcmdl
dChldmVudFRhc2suc2Vjb25kKTsKLSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVl
dWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+
ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTg3
NCw3ICsxODc0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJh
Y2tDdWVzKGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogICAgIGZvciAoYXV0byYgYWZmZWN0
ZWRUcmFjayA6IGFmZmVjdGVkVHJhY2tzKSB7CiAgICAgICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICAgICAgZXZlbnQtPnNldFRhcmdldChhZmZl
Y3RlZFRyYWNrKTsKLSAgICAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1v
dmUoZXZlbnQpKTsKKyAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZN
b3ZlKGV2ZW50KSk7CiAKICAgICAgICAgLy8gLi4uIGlmIHRoZSB0ZXh0IHRyYWNrIGhhcyBhIGNv
cnJlc3BvbmRpbmcgdHJhY2sgZWxlbWVudCwgdG8gdGhlbiBmaXJlIGEKICAgICAgICAgLy8gc2lt
cGxlIGV2ZW50IG5hbWVkIGN1ZWNoYW5nZSBhdCB0aGUgdHJhY2sgZWxlbWVudCBhcyB3ZWxsLgpA
QCAtMTg4Myw3ICsxODgzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVU
ZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogICAgICAgICAgICAgYXV0
byB0cmFja0VsZW1lbnQgPSBtYWtlUmVmUHRyKGRvd25jYXN0PExvYWRhYmxlVGV4dFRyYWNrPigq
YWZmZWN0ZWRUcmFjaykudHJhY2tFbGVtZW50KCkpOwogICAgICAgICAgICAgQVNTRVJUKHRyYWNr
RWxlbWVudCk7CiAgICAgICAgICAgICBldmVudC0+c2V0VGFyZ2V0KHRyYWNrRWxlbWVudCk7Ci0g
ICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkp
OworICAgICAgICAgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2
ZW50KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyMjMsNyArMjIyMyw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFMb2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0
d29ya1N0YXRlIGVycm9yCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNhbmNlbFBlbmRpbmdFdmVu
dHNBbmRDYWxsYmFja3MoKQogewogICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwotICAgIG1f
YXN5bmNFdmVudFF1ZXVlLmNhbmNlbEFsbEV2ZW50cygpOworICAgIG1fYXN5bmNFdmVudFF1ZXVl
LT5jYW5jZWxBbGxFdmVudHMoKTsKIAogICAgIGZvciAoYXV0byYgc291cmNlIDogY2hpbGRyZW5P
ZlR5cGU8SFRNTFNvdXJjZUVsZW1lbnQ+KCp0aGlzKSkKICAgICAgICAgc291cmNlLmNhbmNlbFBl
bmRpbmdFcnJvckV2ZW50KCk7CkBAIC0yNjE0LDcgKzI2MTQsNyBAQCBib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSogaW5p
dERhdGEpCiAKICAgICBhdXRvIGV2ZW50ID0gV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS53ZWJraXRuZWVka2V5RXZlbnQsIGluaXREYXRhKTsKICAgICBldmVu
dC0+c2V0VGFyZ2V0KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChX
VEZNb3ZlKGV2ZW50KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZN
b3ZlKGV2ZW50KSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTI3NjEsNyArMjc2MSw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNv
dW50ZXJlZChjb25zdCBTdHJpbmcmIGluCiAgICAgLy8gICAgICBpbml0RGF0YVR5cGUgPSBpbml0
RGF0YVR5cGUKICAgICAvLyAgICAgIGluaXREYXRhID0gaW5pdERhdGEKICAgICBNZWRpYUVuY3J5
cHRlZEV2ZW50SW5pdCBpbml0aWFsaXplciB7IGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0
YSkgfTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoTWVkaWFFbmNyeXB0ZWRF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmNyeXB0ZWRFdmVudCwgaW5pdGlhbGl6ZXIsIEV2
ZW50OjpJc1RydXN0ZWQ6OlllcykpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZl
bnQoTWVkaWFFbmNyeXB0ZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmNyeXB0ZWRFdmVu
dCwgaW5pdGlhbGl6ZXIsIEV2ZW50OjpJc1RydXN0ZWQ6OlllcykpOwogfQogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyV2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtNTcyMCw3
ICs1NzIwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbG9zZVRhc2tRdWV1ZXMoKQogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCiAgICAgbV9lbmNyeXB0ZWRNZWRpYVF1ZXVlLmNsb3Nl
KCk7CiAjZW5kaWYKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jbG9zZSgpOworICAgIG1fYXN5bmNF
dmVudFF1ZXVlLT5jbG9zZSgpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV92b2x1
bWVSZXZlcnRUYXNrUXVldWUuY2xvc2UoKTsKICNlbmRpZgpAQCAtNTc2MSw3ICs1NzYxLDYgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29u
KQogICAgIHN3aXRjaCAocmVhc29uKSB7CiAgICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpQ
YWdlQ2FjaGU6CiAgICAgICAgIHN0b3BXaXRob3V0RGVzdHJveWluZ01lZGlhUGxheWVyKCk7Ci0g
ICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQoKTsKICAgICAgICAgc2V0QnVmZmVyaW5n
UG9saWN5KEJ1ZmZlcmluZ1BvbGljeTo6TWFrZVJlc291cmNlc1B1cmdlYWJsZSk7CiAgICAgICAg
IG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Np
b246OlJlcXVpcmVQYWdlQ29uc2VudFRvUmVzdW1lTWVkaWEpOwogICAgICAgICBicmVhazsKQEAg
LTU3NzksOCArNTc3OCw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKCkKIAogICAg
IHNldEluQWN0aXZlRG9jdW1lbnQodHJ1ZSk7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1
bWUoKTsKLQogICAgIGlmICghbV9tZWRpYVNlc3Npb24tPnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVy
UmVzdW1pbmcoKSkKICAgICAgICAgZG9jdW1lbnQoKS5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIo
KnRoaXMpOwogICAgIGVsc2UKQEAgLTU4MDMsNyArNTgwMCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVzdW1lKCkKIAogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdAogewotICAgIHJldHVybiAoaGFzQXVkaW8oKSAmJiBpc1BsYXlpbmcoKSkgfHwg
bV9hc3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpIHx8IG1fY3JlYXRpbmdDb250cm9s
czsKKyAgICByZXR1cm4gKGhhc0F1ZGlvKCkgJiYgaXNQbGF5aW5nKCkpIHx8IG1fYXN5bmNFdmVu
dFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCkgfHwgbV9jcmVhdGluZ0NvbnRyb2xzOwogfQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkKQEAgLTU5NTIsNyAr
NTk0OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZh
aWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiaGFz
VGFyZ2V0cyA9ICIsIGhhc1RhcmdldHMpOwogICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHBsYXli
YWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEV2ZW50LCBoYXNUYXJnZXRzKTsKICAgICBldmVu
dC0+c2V0VGFyZ2V0KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChX
VEZNb3ZlKGV2ZW50KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZN
b3ZlKGV2ZW50KSk7CiAgICAgc2NoZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXggNjFkYmFkNWIyODAxZDQ5NTlhNzYy
Nzc4ZThhNjcxMTcyYjU0Yjg4Yy4uMzJhMjQwYTA5Yzk2NDUxNDc4YWRjMjA3ZDNkOTAwMDE4ZWU2
NTU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk3Miw3ICs5
NzIsNyBAQCBwcml2YXRlOgogICAgIEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fZnVsbHNjcmVl
blRhc2tRdWV1ZTsKICAgICBHZW5lcmljVGFza1F1ZXVlPFRpbWVyPiBtX3BsYXliYWNrVGFyZ2V0
SXNXaXJlbGVzc1F1ZXVlOwogICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5n
ZXM7Ci0gICAgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOwor
ICAgIFVuaXF1ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1
ZXVlOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRGVmZXJyYWJsZVRhc2s8VGltZXI+
IG1fdm9sdW1lUmV2ZXJ0VGFza1F1ZXVlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UcmFja0xpc3RCYXNlLmNwcAppbmRleCA2ZDMxMThiZTc0MjkzOThjMDdhYWUwZjk1OWZl
Y2RjMTI2N2ZmZDAzLi45MDAzZTljMWIyMmQyZDNlZTM3OTE1MDI1ODljM2YyNjg3ZTgyMTlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFRyYWNrTGlzdEJhc2UpOwogVHJh
Y2tMaXN0QmFzZTo6VHJhY2tMaXN0QmFzZShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRl
eHQpCiAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0
aGlzKQorICAgICwgbV9hc3luY0V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVl
OjpjcmVhdGUoKnRoaXMpKQogewogICAgIEFTU0VSVCghY29udGV4dCB8fCBpczxEb2N1bWVudD4o
Y29udGV4dCkpOwogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwpAQCAtOTgsNyArOTgsNyBAQCBib29s
IFRyYWNrTGlzdEJhc2U6OmNvbnRhaW5zKFRyYWNrQmFzZSYgdHJhY2spIGNvbnN0CiAKIHZvaWQg
VHJhY2tMaXN0QmFzZTo6c2NoZWR1bGVUcmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
TmFtZSwgUmVmPFRyYWNrQmFzZT4mJiB0cmFjaykKIHsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5l
bnF1ZXVlRXZlbnQoVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBXVEZNb3ZlKHRyYWNrKSkpOworICAgIG1f
YXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBXVEZNb3Zl
KHRyYWNrKSkpOwogfQogCiB2b2lkIFRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlQWRkVHJhY2tFdmVu
dChSZWY8VHJhY2tCYXNlPiYmIHRyYWNrKQpAQCAtMTYxLDEyICsxNjEsMTIgQEAgdm9pZCBUcmFj
a0xpc3RCYXNlOjpzY2hlZHVsZUNoYW5nZUV2ZW50KCkKICAgICAvLyBXaGVuZXZlciBhIHRyYWNr
IGluIGEgVmlkZW9UcmFja0xpc3QgdGhhdCB3YXMgcHJldmlvdXNseSBub3Qgc2VsZWN0ZWQgaXMK
ICAgICAvLyBzZWxlY3RlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBxdWV1ZSBhIHRhc2sgdG8gZmly
ZSBhIHNpbXBsZSBldmVudCBuYW1lZAogICAgIC8vIGNoYW5nZSBhdCB0aGUgVmlkZW9UcmFja0xp
c3Qgb2JqZWN0LgotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50
OjpJc0NhbmNlbGFibGU6Ok5vKSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVu
dChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJs
ZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiB9CiAKIGJvb2wgVHJhY2tMaXN0QmFz
ZTo6aXNDaGFuZ2VFdmVudFNjaGVkdWxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYXN5bmNF
dmVudFF1ZXVlLmhhc1BlbmRpbmdFdmVudHNPZlR5cGUoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50
KTsKKyAgICByZXR1cm4gbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHNPZlR5cGUo
ZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50KTsKIH0KIAogYm9vbCBUcmFja0xpc3RCYXNlOjppc0Fu
eVRyYWNrRW5hYmxlZCgpIGNvbnN0CkBAIC0xODAsMzEgKzE4MCw3IEBAIGJvb2wgVHJhY2tMaXN0
QmFzZTo6aXNBbnlUcmFja0VuYWJsZWQoKSBjb25zdAogCiBib29sIFRyYWNrTGlzdEJhc2U6OmNh
blN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAhbV9h
c3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOwotfQotCi12b2lkIFRyYWNrTGlzdEJh
c2U6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgc3dpdGNoIChy
ZWFzb24pIHsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAgICBj
YXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAgIG1f
YXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFz
b25Gb3JTdXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBSZWFz
b25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3RoaW5n
LCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFRyYWNrTGlzdEJhc2U6OnJlc3VtZSgpCi17Ci0gICAg
bV9hc3luY0V2ZW50UXVldWUucmVzdW1lKCk7Ci19Ci0KLXZvaWQgVHJhY2tMaXN0QmFzZTo6c3Rv
cCgpCi17Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuY2xvc2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Ry
YWNrTGlzdEJhc2UuaAppbmRleCAwYmJkODU4MmY1OWYxMWEzNjkyM2ZjODU3Zjc2YzMyODhlMmZm
OTg2Li40MjU1YmMxNjA5NWM4MjIwOTA0YjE0M2M4ZDk2NzgzOWU1NDE1ZDJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaApAQCAtNzYsOSArNzYsNiBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2NoZWR1bGVUcmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
TmFtZSwgUmVmPFRyYWNrQmFzZT4mJik7CiAKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVu
dFN1c3BlbnNpb24oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3Ao
KSBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgp
IGZpbmFsIHsgcmVmKCk7IH0KQEAgLTg2LDcgKzgzLDcgQEAgcHJpdmF0ZToKIAogICAgIEhUTUxN
ZWRpYUVsZW1lbnQqIG1fZWxlbWVudDsKIAotICAgIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1
ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVu
dFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAppbmRleCAyMjEwMWFjNTczNTBkNWQ1YWU3NzczYjBi
NTZmY2E4NjlmYzcwNTI1Li5lYmVjODk0MzE2NjgzYTQ1OTZjMTkyODQwMzY4YTY0NGM1ZDQwZWNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGlubGluZSBX
b3JrZXI6OldvcmtlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU0M6OlJ1bnRp
bWVGbGFncyBydW50aW1lCiAgICAgLCBtX2lkZW50aWZpZXIoIndvcmtlcjoiICsgSW5zcGVjdG9y
OjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSkKICAgICAsIG1fY29udGV4
dFByb3h5KFdvcmtlckdsb2JhbFNjb3BlUHJveHk6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3J1
bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCi0gICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCisgICAg
LCBtX2V2ZW50UXVldWUoR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAg
c3RhdGljIGJvb2wgYWRkZWRMaXN0ZW5lcjsKICAgICBpZiAoIWFkZGVkTGlzdGVuZXIpIHsKQEAg
LTE0Niw3ICsxNDYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXb3JrZXI6OnBvc3RNZXNzYWdlKEpT
Qzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIG1lc3NhZwogdm9pZCBXb3JrZXI6OnRl
cm1pbmF0ZSgpCiB7CiAgICAgbV9jb250ZXh0UHJveHkudGVybWluYXRlV29ya2VyR2xvYmFsU2Nv
cGUoKTsKLSAgICBtX2V2ZW50UXVldWUuY2FuY2VsQWxsRXZlbnRzKCk7CisgICAgbV9ldmVudFF1
ZXVlLT5jYW5jZWxBbGxFdmVudHMoKTsKIH0KIAogYm9vbCBXb3JrZXI6OmNhblN1c3BlbmRGb3JE
b2N1bWVudFN1c3BlbnNpb24oKSBjb25zdApAQCAtMTU0LDE2ICsxNTQsNiBAQCBib29sIFdvcmtl
cjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgV29ya2VyOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCi17Ci0g
ICAgbV9ldmVudFF1ZXVlLnN1c3BlbmQoKTsKLX0KLQotdm9pZCBXb3JrZXI6OnJlc3VtZSgpCi17
Ci0gICAgbV9ldmVudFF1ZXVlLnJlc3VtZSgpOwotfQotCiBjb25zdCBjaGFyKiBXb3JrZXI6OmFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdAogewogICAgIHJldHVybiAiV29ya2VyIjsKQEAgLTE3
MiwxMiArMTYyLDExIEBAIGNvbnN0IGNoYXIqIFdvcmtlcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgp
IGNvbnN0CiB2b2lkIFdvcmtlcjo6c3RvcCgpCiB7CiAgICAgdGVybWluYXRlKCk7Ci0gICAgbV9l
dmVudFF1ZXVlLmNsb3NlKCk7CiB9CiAKIGJvb2wgV29ya2VyOjpoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRleHRQcm94eS5oYXNQZW5kaW5nQWN0aXZpdHko
KSB8fCBBY3RpdmVET01PYmplY3Q6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1fZXZlbnRRdWV1
ZS5oYXNQZW5kaW5nRXZlbnRzKCk7CisgICAgcmV0dXJuIG1fY29udGV4dFByb3h5Lmhhc1BlbmRp
bmdBY3Rpdml0eSgpIHx8IEFjdGl2ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwg
bV9ldmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIHZvaWQgV29ya2VyOjpub3Rp
ZnlOZXR3b3JrU3RhdGVDaGFuZ2UoYm9vbCBpc09uTGluZSkKQEAgLTIxNywxMiArMjA2LDEyIEBA
IHZvaWQgV29ya2VyOjpub3RpZnlGaW5pc2hlZCgpCiAKIHZvaWQgV29ya2VyOjplbnF1ZXVlRXZl
bnQoUmVmPEV2ZW50PiYmIGV2ZW50KQogewotICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShldmVudCkpOworICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUo
ZXZlbnQpKTsKIH0KIAogdm9pZCBXb3JrZXI6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQog
ewotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW1fZXZlbnRR
dWV1ZS5pc1N1c3BlbmRlZCgpKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKCFtX2V2ZW50UXVldWUtPmlzU3VzcGVuZGVkKCkpOwogCiAgICAgQWJzdHJhY3RX
b3JrZXI6OmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAgIGlmIChpczxFcnJvckV2ZW50PihldmVu
dCkgJiYgIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQoKSAmJiBldmVudC5pc1RydXN0ZWQoKSAmJiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IDU3
MWNmNjdhYTU3ZjMzZWMwNWQ4MGFjNjNjYzY1Zjk3NjExZDM5MjkuLmVlMzFjN2NlYzVlZmU5ZmZm
YmE3NDBjYzA1YzNiNTgwZjcwY2Y5MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtODMs
OCArODMsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKIAog
ICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwot
ICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lkIHJl
c3VtZSgpIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFj
dGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIApAQCAtOTgsNyArOTYsNyBAQCBwcml2
YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV93b3JrZXJDcmVhdGlvblRpbWU7CiAgICAgYm9vbCBt
X3Nob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSB7IGZhbHNlIH07CiAg
ICAgSlNDOjpSdW50aW1lRmxhZ3MgbV9ydW50aW1lRmxhZ3M7Ci0gICAgR2VuZXJpY0V2ZW50UXVl
dWUgbV9ldmVudFF1ZXVlOworICAgIFVuaXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVu
dFF1ZXVlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmlu
ZGV4IDk1ZDJjZTY3NDBlNjljNjgyYjZjZjUzODdmNjRiNzEyZTkyODE5YWYuLjcyMTFlYjZmY2I1
NGYzZjQ1NzI2Y2VhMzY3MzIxMmE4NjU4MzdjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTcw
LDEzICs3MCwxMyBAQCBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU2VydmljZVdvcmtlckNv
bnRhaW5lcik7CiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5hdmlnYXRvckJhc2UmIG5hdmlnYXRv
cikKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV9uYXZpZ2F0b3IobmF2
aWdhdG9yKQotICAgICwgbV9tZXNzYWdlUXVldWUoKnRoaXMpCisgICAgLCBtX21lc3NhZ2VRdWV1
ZShHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBzdXNwZW5kSWZOZWVk
ZWQoKTsKICAgICAKICAgICAvLyBXZSBzaG91bGQgcXVldWUgbWVzc2FnZXMgdW50aWwgdGhlIERP
TUNvbnRlbnRMb2FkZWQgZXZlbnQgaGFzIGZpcmVkIG9yIHN0YXJ0TWVzc2FnZXMoKSBoYXMgYmVl
biBjYWxsZWQuCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSAmJiBkb3duY2FzdDxEb2N1
bWVudD4oKmNvbnRleHQpLnBhcnNpbmcoKSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUuc3VzcGVu
ZCgpOworICAgICAgICBtX21lc3NhZ2VRdWV1ZS0+c2V0UGF1c2VkKHRydWUpOwogfQogCiBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjp+U2VydmljZVdvcmtlckNvbnRhaW5lcigpCkBAIC0zMTQsNyAr
MzE0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb25zKFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpzdGFydE1lc3NhZ2VzKCkKIHsKLSAgICBtX21lc3NhZ2VRdWV1ZS5yZXN1bWUoKTsKKyAg
ICBtX21lc3NhZ2VRdWV1ZS0+c2V0UGF1c2VkKGZhbHNlKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpqb2JGYWlsZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpv
YiwgY29uc3QgRXhjZXB0aW9uJiBleGNlcHRpb24pCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpwb3N0TWVzc2FnZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmIG1lc3NhZ2UsIFNlcnYKIAogICAgIGF1dG8gbWVzc2FnZUV2ZW50ID0gTWVzc2FnZUV2ZW50
OjpjcmVhdGUoTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtZXNz
YWdlLnRyYW5zZmVycmVkUG9ydHMpKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCks
IHNvdXJjZU9yaWdpbiwgeyB9LCBXVEZNb3ZlKHNvdXJjZSkpOwogICAgIAotICAgIG1fbWVzc2Fn
ZVF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKG1lc3NhZ2VFdmVudCkpOworICAgIG1fbWVzc2Fn
ZVF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShtZXNzYWdlRXZlbnQpKTsKIH0KIAogdm9pZCBT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpub3RpZnlSZWdpc3RyYXRpb25Jc1NldHRsZWQoY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpAQCAtNTIzLDE2
ICs1MjMsNiBAQCBib29sIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmNhblN1c3BlbmRGb3JEb2N1
bWVudFN1c3BlbnNpb24oKSBjb25zdAogICAgIHJldHVybiAhaGFzUGVuZGluZ0FjdGl2aXR5KCk7
CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6c3VzcGVuZChSZWFzb25Gb3JTdXNw
ZW5zaW9uKQotewotICAgIG1fbWVzc2FnZVF1ZXVlLnN1c3BlbmQoKTsKLX0KLQotdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpyZXN1bWUoKQotewotICAgIG1fbWVzc2FnZVF1ZXVlLnJlc3Vt
ZSgpOwotfQotCiBTV0NsaWVudENvbm5lY3Rpb24mIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmVu
c3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CkBAIC01ODMsNyArNTczLDYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OjpzdG9wKCkKICAgICBtX2lzU3RvcHBlZCA9IHRydWU7CiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0
ZW5lcnMoKTsKICAgICBtX3JlYWR5UHJvbWlzZSA9IG51bGxwdHI7Ci0gICAgbV9tZXNzYWdlUXVl
dWUuY2xvc2UoKTsKICAgICBhdXRvIGpvYk1hcCA9IFdURk1vdmUobV9qb2JNYXApOwogICAgIGZv
ciAoYXV0byYgb25nb2luZ0pvYiA6IGpvYk1hcC52YWx1ZXMoKSkgewogICAgICAgICBpZiAob25n
b2luZ0pvYi5qb2ItPmNhbmNlbFBlbmRpbmdMb2FkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAppbmRleCA0OThh
MGNiNDRiMTJkNWRiZTU3N2QxZWI2ZTc1YWE1NTE5MDc4YjllLi43NWVhOTUzMjE5MGYwYzY2YzY2
MGJiZTliMjVkNGJjZDdjOTFkOWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKQEAgLTExMSw4ICsxMTEsNiBA
QCBwcml2YXRlOgogICAgIC8vIEFjdGl2ZURPTU9iamVjdC4KICAgICBjb25zdCBjaGFyKiBhY3Rp
dmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9j
dW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZv
clN1c3BlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgCiAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9
CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyRXZlbnRUYXJnZXRJbnRlcmZhY2VU
eXBlOyB9CkBAIC0xNDMsOCArMTQxLDcgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fbGFz
dE9uZ29pbmdTZXR0bGVkUmVnaXN0cmF0aW9uSWRlbnRpZmllciB7IDAgfTsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiBtX29uZ29pbmdTZXR0bGVk
UmVnaXN0cmF0aW9uczsKLSAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX21lc3NhZ2VRdWV1ZTsKLQor
ICAgIFVuaXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4gbV9tZXNzYWdlUXVldWU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379860</attachid>
            <date>2019-09-30 16:55:43 -0700</date>
            <delta_ts>2019-09-30 20:36:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202373-20190930165542.patch</filename>
            <type>text/plain</type>
            <size>54379</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOThkNjQ2M2M1OGQ2Y2E2
YWRmNjYxNjVhMTQ3MmMxZmVkOGNiNDg5OC4uYzBiNDJmN2Y4NTg3MTkxOTgxMDY1ZjMwZDYyNjM2
ZjIxNDQyZDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxOS0wOS0zMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgR2VuZXJpY0V2ZW50
UXVldWUgYW4gQWN0aXZlRE9NT2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDIzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNYWtlIEdlbmVyaWNFdmVudFF1ZXVlIGFuIEFjdGl2ZURPTU9iamVj
dCBzbyB0aGF0IGl0IGlzIGd1YXJhbnRlZWQgdG8gbmV2ZXIgZmlyZSBhbnkgZXZlbnRzIHdoaWxl
CisgICAgICAgIHN1c3BlbmRlZCB3aXRob3V0IHJlcXVpcmluZyB0aGUgY2xpZW50IHRvIGV4cGxp
Y2l0bHkgc3VzcGVuZC9yZXN1bWUgdGhlIGV2ZW50IHF1ZXVlLgorCisgICAgICAgICogTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFLZXlTZXNzaW9uOjplbnF1ZXVlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRNZWRpYUtleVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRNZWRpYUtleVNlc3Npb246On5XZWJLaXRNZWRpYUtleVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjphZGRLZXlUaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpoYXNQZW5kaW5nQWN0aXZp
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzdG9w
KToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtl
eVNlc3Npb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpNZWRpYVNvdXJjZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlOjpjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpTb3Vy
Y2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpoYXNQZW5kaW5nQWN0
aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzdG9wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c2NoZWR1bGVFdmVudCk6CisgICAgICAgICog
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyTGlzdDo6U291cmNlQnVmZmVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJMaXN0OjpzY2hlZHVsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
ckxpc3Q6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29u
dGV4dDo6QXVkaW9Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6c3Rv
cCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaDoKKyAgICAgICAg
KiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjp0aWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRl
Y2xhcmF0aXZlQW5pbWF0aW9uOjpuZWVkc1RpY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RGVjbGFyYXRpdmVBbmltYXRpb246OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJh
dGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xh
cmF0aXZlQW5pbWF0aW9uOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5p
bWF0aW9uOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9u
OjpyZXN1bWUpOgorICAgICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oOgor
ICAgICAgICAqIGRvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
ZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OkdlbmVyaWNFdmVudFF1ZXVlQmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnNldFBhdXNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OmNhblN1c3BlbmRGb3JEb2N1bWVu
dFN1c3BlbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0V2ZW50UXVldWVC
YXNlPFQ+OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNFdmVudFF1ZXVlQmFz
ZTxUPjo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNFdmVudFF1ZXVlQmFzZTxU
Pjo6cmVzY2hlZHVsZUFsbEV2ZW50c0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVy
aWNFdmVudFF1ZXVlQmFzZTxUPjo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljRXZl
bnRRdWV1ZUJhc2U8VD46OmFjdGl2ZURPTU9iamVjdE5hbWUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNYWlu
VGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL0dlbmVyaWNF
dmVudFF1ZXVlLmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0OjpNZXNzYWdlUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNo
TWVzc2FnZXMpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5oOgorICAgICAgICAqIGh0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
On5IVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OnNjaGVkdWxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBk
YXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpjYW5jZWxQZW5kaW5nRXZlbnRzQW5kQ2FsbGJhY2tzKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5TmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVySW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VUYXNrUXVl
dWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnF1ZXVlUGxheWJhY2tUYXJnZXRBdmFpbGFi
aWxpdHlDaGFuZ2VkRXZlbnQpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
ICAgICAgICAqIGh0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFja0xpc3RCYXNlOjpUcmFja0xpc3RCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNr
TGlzdEJhc2U6OnNjaGVkdWxlVHJhY2tFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja0xp
c3RCYXNlOjpzY2hlZHVsZUNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRyYWNrTGlz
dEJhc2U6OmlzQ2hhbmdlRXZlbnRTY2hlZHVsZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
VHJhY2tMaXN0QmFzZTo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbiBjb25zdCk6Cisg
ICAgICAgICogaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmg6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpXb3JrZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyOjp0ZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyOjpz
dG9wKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6aGFzUGVuZGluZ0FjdGl2aXR5IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcjo6ZW5xdWV1ZUV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlcjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXIu
aDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0
YXJ0TWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cG9zdE1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
c3RvcCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIu
aDoKKwogMjAxOS0wOS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlZmluZSByZXN0cmljdGlvbnMgZm9yIFgtVGVtcC1UYWJsZXQgSFRUUCBoZWFkZXIgZXhw
ZXJpbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IDcyMGZjNzRkOTQ5OGRjOWI0ZDc1ZTkzNmYz
NGE0OTg0ZTFmNjE3MzcuLjU1MDhiMzc4Y2VmODg4MzY2NjdiNWRlOWNkOTZmNDI2Yzg5Mzc5ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgTWVkaWFLZXlTZXNzaW9uOjpN
ZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxN
ZWRpYUsKICAgICAsIG1fc2Vzc2lvblR5cGUoc2Vzc2lvblR5cGUpCiAgICAgLCBtX2ltcGxlbWVu
dGF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pKQogICAgICwgbV9pbnN0YW5jZVNlc3Npb24o
V1RGTW92ZShpbnN0YW5jZVNlc3Npb24pKQotICAgICwgbV9ldmVudFF1ZXVlKCp0aGlzKQorICAg
ICwgbV9ldmVudFF1ZXVlKE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlz
KSkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20t
bWVkaWFrZXlzLWNyZWF0ZXNlc3Npb24KICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92
ZW1iZXIgMjAxNgpAQCAtNjE0LDcgKzYxNCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjplbnF1
ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBjb25zdCBTaGFyCiAg
ICAgLy8gICAgaW50ZXJmYWNlIHdpdGggaXRzIHR5cGUgYXR0cmlidXRlIHNldCB0byBtZXNzYWdl
IGFuZCBpdHMgaXNUcnVzdGVkIGF0dHJpYnV0ZSBpbml0aWFsaXplZCB0byB0cnVlLCBhbmQgZGlz
cGF0Y2ggaXQgYXQgdGhlCiAgICAgLy8gICAgc2Vzc2lvbi4KICAgICBhdXRvIG1lc3NhZ2VFdmVu
dCA9IE1lZGlhS2V5TWVzc2FnZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVu
dCwge21lc3NhZ2VUeXBlLCBtZXNzYWdlLnRyeUNyZWF0ZUFycmF5QnVmZmVyKCl9LCBFdmVudDo6
SXNUcnVzdGVkOjpZZXMpOwotICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZSht
ZXNzYWdlRXZlbnQpKTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKG1l
c3NhZ2VFdmVudCkpOwogfQogCiB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVz
ZXMoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbnB1dFN0YXR1c2VzKQpA
QCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGVLZXlTdGF0dXNl
cyhDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGluCiAgICAgICAgIG1fc3Rh
dHVzZXMudW5jaGVja2VkQXBwZW5kKHsgV1RGTW92ZShzdGF0dXMuZmlyc3QpLCB0b01lZGlhS2V5
U3RhdHVzKHN0YXR1cy5zZWNvbmQpIH0pOwogCiAgICAgLy8gNS4gUXVldWUgYSB0YXNrIHRvIGZp
cmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQga2V5c3RhdHVzZXNjaGFuZ2UgYXQgdGhlIHNlc3Npb24u
Ci0gICAgbV9ldmVudFF1ZXVlLmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5rZXlzdGF0dXNlc2NoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6Oklz
Q2FuY2VsYWJsZTo6Tm8pKTsKKyAgICBtX2V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5rZXlzdGF0dXNlc2NoYW5nZUV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKIAogICAgIC8vIDYuIFF1ZXVlIGEg
dGFzayB0byBydW4gdGhlIEF0dGVtcHQgdG8gUmVzdW1lIFBsYXliYWNrIElmIE5lY2Vzc2FyeSBh
bGdvcml0aG0gb24gZWFjaCBvZiB0aGUgbWVkaWEgZWxlbWVudChzKSB3aG9zZSBtZWRpYUtleXMg
YXR0cmlidXRlIGlzIHRoZSBNZWRpYUtleXMgb2JqZWN0IHRoYXQgY3JlYXRlZCB0aGUgc2Vzc2lv
bi4KICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFzaygKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IDVhNjJl
YWMyZDdmZTYzMDM1ZDBmY2VjY2IwYTY1YzNiYmE2Y2U0ZDMuLjk1YmFmMzU0OGQ3OTc4NGVhMmQ1
MWFhNDg0OWYxMGQwZmVhMmM5ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtMTE0LDcgKzExNCw3IEBA
IHByaXZhdGU6CiAgICAgTWVkaWFLZXlTZXNzaW9uVHlwZSBtX3Nlc3Npb25UeXBlOwogICAgIFJl
ZjxDRE0+IG1faW1wbGVtZW50YXRpb247CiAgICAgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4gbV9p
bnN0YW5jZVNlc3Npb247Ci0gICAgTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlIG1fZXZlbnRR
dWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2ZW50
UXVldWU7CiAgICAgR2VuZXJpY1Rhc2tRdWV1ZTxUaW1lcj4gbV90YXNrUXVldWU7CiAgICAgVmVj
dG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBtX3JlY29yZE9mS2V5VXNhZ2U7CiAgICAgZG91YmxlIG1f
Zmlyc3REZWNyeXB0VGltZSB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uY3BwCmluZGV4IDcwYzcwZTNkZGJjYzc5MWM4N2Y5ZTg3NjMyMWNlYWJiZDNlNzZkNjEu
LjllOTNjN2IyODYxZTY0MDgwNjk0YWNmYTNmZmYzNDI5OWI5NjcwYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvbGVnYWN5L1dlYktpdE1lZGlhS2V5
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9s
ZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJLaXRN
ZWRpYUtleVNlc3Npb246OldlYktpdE1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBXZQogICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwg
bV9rZXlzKCZrZXlzKQogICAgICwgbV9rZXlTeXN0ZW0oa2V5U3lzdGVtKQotICAgICwgbV9hc3lu
Y0V2ZW50UXVldWUoKnRoaXMpCisgICAgLCBtX2FzeW5jRXZlbnRRdWV1ZShNYWluVGhyZWFkR2Vu
ZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3Nlc3Npb24oa2V5cy5jZG0o
KS5jcmVhdGVTZXNzaW9uKCp0aGlzKSkKICAgICAsIG1fa2V5UmVxdWVzdFRpbWVyKCp0aGlzLCAm
V2ViS2l0TWVkaWFLZXlTZXNzaW9uOjprZXlSZXF1ZXN0VGltZXJGaXJlZCkKICAgICAsIG1fYWRk
S2V5VGltZXIoKnRoaXMsICZXZWJLaXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQp
CkBAIC02OCw3ICs2OCw3IEBAIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6fldlYktpdE1lZGlhS2V5
U2Vzc2lvbigpCiAgICAgaWYgKG1fc2Vzc2lvbikKICAgICAgICAgbV9zZXNzaW9uLT5zZXRDbGll
bnQobnVsbHB0cik7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5jYW5jZWxBbGxFdmVudHMoKTsK
KyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7CiB9CiAKIHZvaWQgV2Vi
S2l0TWVkaWFLZXlTZXNzaW9uOjpjbG9zZSgpCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBXZWJL
aXRNZWRpYUtleVNlc3Npb246OmFkZEtleVRpbWVyRmlyZWQoKQogICAgICAgICBpZiAoZGlkU3Rv
cmVLZXkpIHsKICAgICAgICAgICAgIGF1dG8ga2V5YWRkZWRFdmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLndlYmtpdGtleWFkZGVkRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBF
dmVudDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBrZXlhZGRlZEV2ZW50LT5zZXRU
YXJnZXQodGhpcyk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShrZXlhZGRlZEV2ZW50KSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+
ZW5xdWV1ZUV2ZW50KFdURk1vdmUoa2V5YWRkZWRFdmVudCkpOwogCiAgICAgICAgICAgICBBU1NF
UlQobV9rZXlzKTsKICAgICAgICAgICAgIG1fa2V5cy0+a2V5QWRkZWQoKTsKQEAgLTIwNyw3ICsy
MDcsNyBAQCB2b2lkIFdlYktpdE1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UoVWludDhBcnJh
eSogbWVzc2FnZSwgU3RyaW5nIGRlc3RpbmF0aW9uVQogewogICAgIGF1dG8gZXZlbnQgPSBXZWJL
aXRNZWRpYUtleU1lc3NhZ2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXltZXNz
YWdlRXZlbnQsIG1lc3NhZ2UsIGRlc3RpbmF0aW9uVVJMKTsKICAgICBldmVudC0+c2V0VGFyZ2V0
KHRoaXMpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50
KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7
CiB9CiAKIHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWVkaWFLZXlFcnJv
ckNvZGUgZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2RlKQpAQCAtMjE2LDcgKzIxNiw3IEBA
IHZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpzZW5kRXJyb3IoTWVkaWFLZXlFcnJvckNvZGUg
ZXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0CiAKICAgICBhdXRvIGtleWVycm9yRXZlbnQgPSBFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJraXRrZXllcnJvckV2ZW50LCBFdmVudDo6Q2FuQnVi
YmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogICAgIGtleWVycm9yRXZlbnQtPnNl
dFRhcmdldCh0aGlzKTsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92
ZShrZXllcnJvckV2ZW50KSk7CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChX
VEZNb3ZlKGtleWVycm9yRXZlbnQpKTsKIH0KIAogU3RyaW5nIFdlYktpdE1lZGlhS2V5U2Vzc2lv
bjo6bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0CkBAIC0yMzgsMjIgKzIzOCwxMSBA
QCBTdHJpbmcgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjptZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QKIAogYm9vbCBXZWJLaXRNZWRpYUtleVNlc3Npb246Omhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIChtX2tleXMgJiYgbV9zZXNzaW9uKSB8fCBtX2FzeW5j
RXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7Ci19Ci0KLXZvaWQgV2ViS2l0TWVkaWFLZXlT
ZXNzaW9uOjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCi17Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0KLXZvaWQgV2ViS2l0TWVkaWFLZXlTZXNzaW9uOjpyZXN1bWUoKQotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAobV9rZXlzICYmIG1fc2Vzc2lv
bikgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHMoKTsKIH0KIAogdm9pZCBX
ZWJLaXRNZWRpYUtleVNlc3Npb246OnN0b3AoKQogewotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNs
b3NlKCk7CiAgICAgY2xvc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9sZWdhY3kvV2ViS2l0TWVkaWFLZXlTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAppbmRleCBkZGE4ZmVmMzYxM2Q3NmM0MGQyNDIxN2M0ZTVmYjAxZTM3MGMzNTVkLi40
MjMzYWNlMjY3NWM0NWZiYjYwNjBmYzBiMDk1YjhhY2Y3OTQ3NTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2FjeS9XZWJLaXRNZWRpYUtleVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL2xlZ2Fj
eS9XZWJLaXRNZWRpYUtleVNlc3Npb24uaApAQCAtNzcsOCArNzcsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29u
Rm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAgdm9pZCByZXN1bWUoKSBmaW5hbDsKICAgICB2b2lk
IHN0b3AoKSBmaW5hbDsKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24o
KSBjb25zdCBmaW5hbDsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QgZmluYWw7CkBAIC05MCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fa2V5U3lz
dGVtOwogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBSZWZQdHI8V2ViS2l0TWVkaWFLZXlF
cnJvcj4gbV9lcnJvcjsKLSAgICBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2
ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9h
c3luY0V2ZW50UXVldWU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPExlZ2FjeUNETVNlc3Npb24+IG1f
c2Vzc2lvbjsKIAogICAgIHN0cnVjdCBQZW5kaW5nS2V5UmVxdWVzdCB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IDdjYmM2
YTEzMzUxZTBkMzJjZTI1NWE5YmFkY2I5NzQ0ZGFmNGQ0NDguLmI5NDg5MjdhZTYyNmQ3OWY1NTY2
MTRhMzJmZGRkNGQ0ZGRkOTVkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgTWVkaWFTb3Vy
Y2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBB
Y3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX2R1cmF0aW9uKE1lZGlhVGltZTo6aW52
YWxpZFRpbWUoKSkKICAgICAsIG1fcGVuZGluZ1NlZWtUaW1lKE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQorICAgICwgbV9hc3luY0V2ZW50
UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgICwgbV9sb2dnZXIoZG93bmNhc3Q8RG9jdW1lbnQ+KGNv
bnRleHQpLmxvZ2dlcigpKQogI2VuZGlmCkBAIC05NzMsMzggKzk3MywxNCBAQCB2b2lkIE1lZGlh
U291cmNlOjpvcGVuSWZJbkVuZGVkU3RhdGUoKQogCiBib29sIE1lZGlhU291cmNlOjpoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUgfHwgbV9hc3luY0V2
ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpCisgICAgcmV0dXJuIG1fcHJpdmF0ZSB8fCBtX2Fz
eW5jRXZlbnRRdWV1ZS0+aGFzUGVuZGluZ0V2ZW50cygpCiAgICAgICAgIHx8IEFjdGl2ZURPTU9i
amVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2U6OnN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCBzdGF0aWNfY2FzdDxpbnQ+KHJlYXNvbikpOwotCi0gICAgc3dpdGNoIChyZWFzb24p
IHsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAgICBjYXNlIFJl
YXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAgIG1fYXN5bmNF
dmVudFF1ZXVlLnN1c3BlbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFzb25Gb3JT
dXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBSZWFzb25Gb3JT
dXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBk
b24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotfQotCi12b2lkIE1lZGlhU291cmNlOjpyZXN1bWUoKQotewotICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUik7Ci0KLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUoKTsKLX0K
LQogdm9pZCBNZWRpYVNvdXJjZTo6c3RvcCgpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKIAotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNsb3NlKCk7CiAgICAgaWYgKG1fbWVkaWFF
bGVtZW50KQogICAgICAgICBtX21lZGlhRWxlbWVudC0+ZGV0YWNoTWVkaWFTb3VyY2UoKTsKICAg
ICBtX3JlYWR5U3RhdGUgPSBSZWFkeVN0YXRlOjpDbG9zZWQ7CkBAIC0xMDEzLDcgKzk4OSw4IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnN0b3AoKQogCiBib29sIE1lZGlhU291cmNlOjpjYW5TdXNwZW5k
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaXNDbG9zZWQoKSAm
JiAhbV9hc3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOworICAgIC8vIEZJWE1FOiBE
byBiZXR0ZXIuCisgICAgcmV0dXJuIGlzQ2xvc2VkKCk7CiB9CiAKIGNvbnN0IGNoYXIqIE1lZGlh
U291cmNlOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKQEAgLTEwODAsNyArMTA1Nyw3IEBA
IHZvaWQgTWVkaWFTb3VyY2U6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRO
YW1lKQogICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNh
bkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICBldmVudC0+c2V0VGFy
Z2V0KHRoaXMpOwogCi0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUo
ZXZlbnQpKTsKKyAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZl
bnQpKTsKIH0KIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTb3VyY2U6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDJmZWIwMGJmYzVmZDkwNjEwMGQyMDUzYmNlYzQx
MjMyYmE4OGRkOTcuLjhhMWVmY2EyMjhmMWQ5NWM4NjA3ZmMzZTg5YjM5OTA4MmVlY2EwYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgK
QEAgLTEyNiw4ICsxMjYsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlh
U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgIHZvaWQgc3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIHZv
aWQgc3RvcCgpIGZpbmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lv
bigpIGNvbnN0IGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdCBmaW5hbDsKQEAgLTE2OCw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAgIE1lZGlhVGltZSBt
X2R1cmF0aW9uOwogICAgIE1lZGlhVGltZSBtX3BlbmRpbmdTZWVrVGltZTsKICAgICBSZWFkeVN0
YXRlIG1fcmVhZHlTdGF0ZSB7IFJlYWR5U3RhdGU6OkNsb3NlZCB9OwotICAgIE1haW5UaHJlYWRH
ZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRo
cmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2
b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggNDIwNmRmYmM5ZGJj
N2RhZTkyMjJlNjM4Y2RiZTlmMTMxM2U1OTliNS4uNzA4M2RjN2VmYTFiMzQxYzFlZTA5YWJmOWI2
NTY3NjRkMGM1M2ViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvU291cmNlQnVmZmVyLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFNvdXJjZUJ1ZmZlcjo6
U291cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZh
dGUsIE1lZGlhCiAgICAgOiBBY3RpdmVET01PYmplY3Qoc291cmNlLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpCiAgICAgLCBtX3ByaXZhdGUoV1RGTW92ZShzb3VyY2VCdWZmZXJQcml2YXRlKSkK
ICAgICAsIG1fc291cmNlKHNvdXJjZSkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQor
ICAgICwgbV9hc3luY0V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVh
dGUoKnRoaXMpKQogICAgICwgbV9hcHBlbmRCdWZmZXJUaW1lcigqdGhpcywgJlNvdXJjZUJ1ZmZl
cjo6YXBwZW5kQnVmZmVyVGltZXJGaXJlZCkKICAgICAsIG1fYXBwZW5kV2luZG93U3RhcnQoTWVk
aWFUaW1lOjp6ZXJvVGltZSgpKQogICAgICwgbV9hcHBlbmRXaW5kb3dFbmQoTWVkaWFUaW1lOjpw
b3NpdGl2ZUluZmluaXRlVGltZSgpKQpAQCAtNTI4LDMxICs1MjgsMTEgQEAgTWVkaWFUaW1lIFNv
dXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUZhc3RTZWVrVGltZUZvck1lZGlhVGltZShj
b25zdCBNZWRpYVQKIAogYm9vbCBTb3VyY2VCdWZmZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fc291cmNlIHx8IG1fYXN5bmNFdmVudFF1ZXVlLmhhc1BlbmRp
bmdFdmVudHMoKTsKLX0KLQotdm9pZCBTb3VyY2VCdWZmZXI6OnN1c3BlbmQoUmVhc29uRm9yU3Vz
cGVuc2lvbiByZWFzb24pCi17Ci0gICAgc3dpdGNoIChyZWFzb24pIHsKLSAgICBjYXNlIFJlYXNv
bkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246
OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQo
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2Ny
aXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVm
ZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBw
bGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lk
IFNvdXJjZUJ1ZmZlcjo6cmVzdW1lKCkKLXsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUo
KTsKKyAgICByZXR1cm4gbV9zb3VyY2UgfHwgbV9hc3luY0V2ZW50UXVldWUtPmhhc1BlbmRpbmdF
dmVudHMoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnN0b3AoKQogewotICAgIG1fYXN5bmNF
dmVudFF1ZXVlLmNsb3NlKCk7CiAgICAgbV9hcHBlbmRCdWZmZXJUaW1lci5zdG9wKCk7CiAgICAg
bV9yZW1vdmVUaW1lci5zdG9wKCk7CiB9CkBAIC01NzcsNyArNTU3LDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXI6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lKQogICAgIGF1
dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8s
IEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwog
Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAg
ICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAog
RXhjZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbChjb25z
dCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggMDhjNDYxZGIzZDk5
Y2I1YjNkZWE3N2YxYTg0ZTQ1ZWFmMGVmOGEwYS4uZGQ1ZGFmNmM5MDY2ZmZjNmI4OTE5NmU1ZDkx
MGY2NjEzZjUzNjEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC0xNDQsOCArMTQ0LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1
c3BlbnNpb24pIGZpbmFsOwotICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgdm9pZCBzdG9w
KCkgZmluYWw7CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZp
bmFsOwpAQCAtMjE3LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8U291cmNlQnVmZmVy
UHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIE1lZGlhU291cmNlKiBtX3NvdXJjZTsKLSAgICBNYWlu
VGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgbV9hc3luY0V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVm
PE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4gbV9hc3luY0V2ZW50UXVldWU7CiAgICAgQXBw
ZW5kTW9kZSBtX21vZGUgeyBBcHBlbmRNb2RlOjpTZWdtZW50cyB9OwogCiAgICAgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+IG1fcGVuZGluZ0FwcGVuZERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmNwcAppbmRleCA2Nzgy
MjQ2ZmQ0YzUwYjEzMTVlMWQ5MDQ1YmE0YWRkOTg0MGY5NmE1Li5iNGQ4MmM0OWM1YmZkM2ViY2Zh
OWEzNTE2NWFmZjBmZWVhYThjYmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAg
V1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFNvdXJjZUJ1ZmZlckxpc3QpOwogCiBTb3VyY2VC
dWZmZXJMaXN0OjpTb3VyY2VCdWZmZXJMaXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAsIG1fYXN5bmNFdmVudFF1
ZXVlKCp0aGlzKQorICAgICwgbV9hc3luY0V2ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVu
dFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIHN1c3BlbmRJZk5lZWRlZCgpOwogfQpAQCAt
OTgsMzYgKzk4LDEyIEBAIHZvaWQgU291cmNlQnVmZmVyTGlzdDo6c2NoZWR1bGVFdmVudChjb25z
dCBBdG9tU3RyaW5nJiBldmVudE5hbWUpCiAgICAgYXV0byBldmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8p
OwogICAgIGV2ZW50LT5zZXRUYXJnZXQodGhpcyk7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5l
bnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1
ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOwogfQogCiBib29sIFNvdXJjZUJ1ZmZlckxpc3Q6OmNh
blN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAhbV9h
c3luY0V2ZW50UXVldWUuaGFzUGVuZGluZ0V2ZW50cygpOwotfQotCi12b2lkIFNvdXJjZUJ1ZmZl
ckxpc3Q6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgc3dpdGNo
IChyZWFzb24pIHsKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAg
ICBjYXNlIFJlYXNvbkZvclN1c3BlbnNpb246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAg
IG1fYXN5bmNFdmVudFF1ZXVlLnN1c3BlbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBS
ZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3Ro
aW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotfQotCi12b2lkIFNvdXJjZUJ1ZmZlckxpc3Q6OnJlc3VtZSgpCi17
Ci0gICAgbV9hc3luY0V2ZW50UXVldWUucmVzdW1lKCk7Ci19Ci0KLXZvaWQgU291cmNlQnVmZmVy
TGlzdDo6c3RvcCgpCi17Ci0gICAgbV9hc3luY0V2ZW50UXVldWUuY2xvc2UoKTsKKyAgICByZXR1
cm4gIW1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIGNvbnN0IGNo
YXIqIFNvdXJjZUJ1ZmZlckxpc3Q6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3Qu
aAppbmRleCAyNmQwYWVhYzdhNTNkNDJkMGJlODMxNTJkYTI0MTRlMWUyMTBjMjZkLi5iNDEwMDNh
M2I0MjY2MmRlOGIyOTZiOTBmYTMxNzI4MDQzNjFjNmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlckxpc3QuaApAQCAtNzksMTIg
Kzc5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7
IGRlcmVmKCk7IH0KIAogICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigp
IGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5h
bDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwogICAg
IGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAotICAgIE1h
aW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsKKyAgICBVbmlxdWVS
ZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRRdWV1ZTsKIAogICAg
IFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyPj4gbV9saXN0OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA5ZjIzMDljY2Yz
OTJiZTc4YzJhY2VmZTEzOWQ2OGQyOTY0ZjMxYTU1Li5jNjI3ZjMzNGViYmEwOTQwY2ViODRiODI1
YWY2ZTgyMDBkM2MxMzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0NvbnRleHQuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgQXVkaW9Db250ZXh0OjpBdWRp
b0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9sb2dJZGVudGlmaWVyKHVuaXF1
ZUxvZ0lkZW50aWZpZXIoKSkKICNlbmRpZgogICAgICwgbV9tZWRpYVNlc3Npb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246OmNyZWF0ZSgqdGhpcykpCi0gICAgLCBtX2V2ZW50UXVldWUobWFrZVVuaXF1
ZTxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+KCp0aGlzKSkKKyAgICAsIG1fZXZlbnRRdWV1
ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgLy8g
QWNjb3JkaW5nIHRvIHNwZWMgQXVkaW9Db250ZXh0IG11c3QgZGllIG9ubHkgYWZ0ZXIgcGFnZSBu
YXZpZ2F0ZS4KICAgICAvLyBMZXRzIG1hcmsgaXQgYXMgQWN0aXZlRE9NT2JqZWN0IHdpdGggcGVu
ZGluZyBhY3Rpdml0eSBhbmQgdW5tYXJrIGl0IGluIGNsZWFyIG1ldGhvZC4KQEAgLTE2Niw3ICsx
NjYsNyBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdAogI2VuZGlmCiAgICAgLCBtX2lzT2ZmbGlu
ZUNvbnRleHQodHJ1ZSkKICAgICAsIG1fbWVkaWFTZXNzaW9uKFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpjcmVhdGUoKnRoaXMpKQotICAgICwgbV9ldmVudFF1ZXVlKG1ha2VVbmlxdWU8TWFpblRocmVh
ZEdlbmVyaWNFdmVudFF1ZXVlPigqdGhpcykpCisgICAgLCBtX2V2ZW50UXVldWUoTWFpblRocmVh
ZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewogICAgIGNvbnN0cnVjdENvbW1v
bigpOwogCkBAIC0zMzYsOCArMzM2LDYgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN0b3AoKQogICAg
IEFTU0VSVChkb2N1bWVudCgpKTsKICAgICBkb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRp
YSgpOwogCi0gICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwotCiAgICAgdW5pbml0aWFsaXplKCk7
CiAgICAgY2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCmluZGV4IGQ5OTEyOTQ5YTM5NGFiODEzNGUxOTViMWM5ZjI5Mzc5NDMwNzkz
ZjguLjM0MTk5ODFjMzU3NGMzNzNlZTk3NjFiZmZlYjVkZTBkYmRhYWFiMmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtNDUsNiArNDUs
NyBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nSGFzaC5oPgogCkBAIC00MTcsNyArNDE4LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8VmVjdG9yPERPTVByb21pc2VEZWZlcnJlZDx2b2lkPj4+IG1fc3RhdGVSZWFjdGlvbnM7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1NZWRpYVNlc3Npb24+IG1fbWVkaWFTZXNzaW9u
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fZXZl
bnRRdWV1ZTsKKyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2V2
ZW50UXVldWU7CiAKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fcmVuZGVyVGFyZ2V0OwogICAg
IFJlZlB0cjxBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gbV9kZXN0aW5hdGlvbk5vZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAppbmRleCAy
YTYwM2RhYWE2MDEwZDY0NjQ1NzkwMTc4NmY2NzA1NTBjNTRkNjEzLi5mNGI2OTc4MzdlNDc0NTdj
YzYwMmZiODA4MmIxZjQ4NzgwYTJmMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgV1RGX01BS0Vf
SVNPX0FMTE9DQVRFRF9JTVBMKERlY2xhcmF0aXZlQW5pbWF0aW9uKTsKIAogRGVjbGFyYXRpdmVB
bmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNv
bnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikKICAgICA6IFdlYkFuaW1hdGlvbihvd25p
bmdFbGVtZW50LmRvY3VtZW50KCkpCi0gICAgLCBtX2V2ZW50UXVldWUob3duaW5nRWxlbWVudCkK
KyAgICAsIG1fZXZlbnRRdWV1ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShv
d25pbmdFbGVtZW50KSkKICAgICAsIG1fb3duaW5nRWxlbWVudCgmb3duaW5nRWxlbWVudCkKICAg
ICAsIG1fYmFja2luZ0FuaW1hdGlvbihjb25zdF9jYXN0PEFuaW1hdGlvbiY+KGJhY2tpbmdBbmlt
YXRpb24pKQogewpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjp0
aWNrKCkKICAgICAvLyBtYXBzIGNvbnRhaW5pbmcgcnVubmluZyBDU1MgVHJhbnNpdGlvbnMgYW5k
IENTUyBBbmltYXRpb25zIGZvciBhIGdpdmVuIGVsZW1lbnQuCiAgICAgaWYgKHdhc1JlbGV2YW50
ICYmIHBsYXlTdGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpJZGxlKSB7CiAgICAg
ICAgIGRpc2Fzc29jaWF0ZUZyb21Pd25pbmdFbGVtZW50KCk7Ci0gICAgICAgIG1fZXZlbnRRdWV1
ZS5jbG9zZSgpOworICAgICAgICBtX2V2ZW50UXVldWUtPmNsb3NlKCk7CiAgICAgfQogfQogCkBA
IC04MywxMiArODMsMTIgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZGlzYXNzb2NpYXRl
RnJvbU93bmluZ0VsZW1lbnQoKQogCiBib29sIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpuZWVkc1Rp
Y2soKSBjb25zdAogewotICAgIHJldHVybiBXZWJBbmltYXRpb246Om5lZWRzVGljaygpIHx8IG1f
ZXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7CisgICAgcmV0dXJuIFdlYkFuaW1hdGlvbjo6
bmVlZHNUaWNrKCkgfHwgbV9ldmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZlbnRzKCk7CiB9CiAKIHZv
aWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnJlbW92ZSgpCiB7Ci0gICAgbV9ldmVudFF1ZXVlLmNs
b3NlKCk7CisgICAgbV9ldmVudFF1ZXVlLT5jbG9zZSgpOwogICAgIFdlYkFuaW1hdGlvbjo6cmVt
b3ZlKCk7CiB9CiAKQEAgLTMzNSwyNiArMzM1LDIzIEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRp
b246OmVucXVldWVET01FdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFNlY29uZHMK
ICAgICBBU1NFUlQobV9vd25pbmdFbGVtZW50KTsKICAgICBhdXRvIHRpbWUgPSBzZWNvbmRzVG9X
ZWJBbmltYXRpb25zQVBJVGltZShlbGFwc2VkVGltZSkgLyAxMDAwOwogICAgIGlmIChpczxDU1NB
bmltYXRpb24+KHRoaXMpKQotICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KEFuaW1h
dGlvbkV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBkb3duY2FzdDxDU1NBbmltYXRpb24+KHRoaXMp
LT5hbmltYXRpb25OYW1lKCksIHRpbWUpKTsKKyAgICAgICAgbV9ldmVudFF1ZXVlLT5lbnF1ZXVl
RXZlbnQoQW5pbWF0aW9uRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGRvd25jYXN0PENTU0FuaW1h
dGlvbj4odGhpcyktPmFuaW1hdGlvbk5hbWUoKSwgdGltZSkpOwogICAgIGVsc2UgaWYgKGlzPENT
U1RyYW5zaXRpb24+KHRoaXMpKQotICAgICAgICBtX2V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFRy
YW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4o
dGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0eSgpLCB0aW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9F
bGVtZW50TmFtZUZvckV2ZW50cyhtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpKSk7CisgICAg
ICAgIG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFRyYW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2
ZW50VHlwZSwgZG93bmNhc3Q8Q1NTVHJhbnNpdGlvbj4odGhpcyktPnRyYW5zaXRpb25Qcm9wZXJ0
eSgpLCB0aW1lLCBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhtX293
bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpKSk7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRp
b246OnN0b3AoKQogewotICAgIG1fZXZlbnRRdWV1ZS5jbG9zZSgpOwogICAgIFdlYkFuaW1hdGlv
bjo6c3RvcCgpOwogfQogCiB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpzdXNwZW5kKFJlYXNv
bkZvclN1c3BlbnNpb24gcmVhc29uKQogewotICAgIG1fZXZlbnRRdWV1ZS5zdXNwZW5kKCk7CiAg
ICAgV2ViQW5pbWF0aW9uOjpzdXNwZW5kKHJlYXNvbik7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVB
bmltYXRpb246OnJlc3VtZSgpCiB7Ci0gICAgbV9ldmVudFF1ZXVlLnJlc3VtZSgpOwogICAgIFdl
YkFuaW1hdGlvbjo6cmVzdW1lKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgKaW5kZXggNDA3ZTkwMDMzMTlkMjVjOWY3N2NmYmNiODNl
ZmRjYzJjZTNlOTY4OS4uOGJmYWUyMTdmNWRmZTk2MjE3NTEwNTAzYTdmYWUwNzM1YTdjNDk4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmgK
QEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fd2FzUGVuZGluZyB7IGZhbHNl
IH07CiAgICAgQW5pbWF0aW9uRWZmZWN0UGhhc2UgbV9wcmV2aW91c1BoYXNlIHsgQW5pbWF0aW9u
RWZmZWN0UGhhc2U6OklkbGUgfTsKIAotICAgIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSBt
X2V2ZW50UXVldWU7CisgICAgVW5pcXVlUmVmPE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZT4g
bV9ldmVudFF1ZXVlOwogCiAgICAgRWxlbWVudCogbV9vd25pbmdFbGVtZW50OwogICAgIFJlZjxB
bmltYXRpb24+IG1fYmFja2luZ0FuaW1hdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2
ZW50UXVldWUuY3BwCmluZGV4IGU3OGJlNDgxZTlmMWQyMzY4OGVhOWRkZTZjNmFiZGYyNzNiMTE3
MGMuLmUzYTdlMmY3NjA4MzM3NzI1MDQzMWMyZGY0ZmRkZWRkNWQ3NjA3YTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9HZW5lcmljRXZlbnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmNwcApAQCAtNDYsNyArNDYsOCBAQCB0ZW1wbGF0
ZTw+IHN0cnVjdCBUYXNrUXVldWVDb25zdHJ1Y3RvcjxUaW1lcj4gewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjpHZW5lcmljRXZlbnRRdWV1ZUJhc2Uo
RXZlbnRUYXJnZXQmIG93bmVyKQotICAgIDogbV9vd25lcihvd25lcikKKyAgICA6IEFjdGl2ZURP
TU9iamVjdChvd25lci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgLCBtX293bmVyKG93
bmVyKQogICAgICwgbV90YXNrUXVldWUoVGFza1F1ZXVlQ29uc3RydWN0b3I8VD46OmNvbnN0cnVj
dChvd25lci5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQogewogfQpAQCAtNjUsNyArNjYsNyBA
QCB2b2lkIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6ZW5xdWV1ZUV2ZW50KFJlZlB0cjxFdmVu
dD4mJiBldmVudCkKIAogICAgIG1fcGVuZGluZ0V2ZW50cy5hcHBlbmQoV1RGTW92ZShldmVudCkp
OwogCi0gICAgaWYgKG1faXNTdXNwZW5kZWQpCisgICAgaWYgKGlzU3VzcGVuZGVkT3JQYXVzZWRC
eUNsaWVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Rhc2tRdWV1ZS5lbnF1ZXVlVGFz
ayhzdGQ6OmJpbmQoJkdlbmVyaWNFdmVudFF1ZXVlQmFzZTo6ZGlzcGF0Y2hPbmVFdmVudCwgdGhp
cykpOwpAQCAtMTE5LDkgKzEyMCwzMCBAQCBib29sIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6
aGFzUGVuZGluZ0V2ZW50c09mVHlwZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlKSBjbwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnN1c3Bl
bmQoKQordm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnNldFBhdXNlZChib29sIHNob3Vs
ZFBhdXNlKQogewotICAgIEFTU0VSVCghbV9pc1N1c3BlbmRlZCk7CisgICAgaWYgKG1faXNQYXVz
ZWRCeUNsaWVudCA9PSBzaG91bGRQYXVzZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1Bh
dXNlZEJ5Q2xpZW50ID0gc2hvdWxkUGF1c2U7CisgICAgaWYgKHNob3VsZFBhdXNlKQorICAgICAg
ICBtX3Rhc2tRdWV1ZS5jYW5jZWxBbGxUYXNrcygpOworICAgIGVsc2UKKyAgICAgICAgcmVzY2hl
ZHVsZUFsbEV2ZW50c0lmTmVlZGVkKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Citib29s
IEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+
Cit2b2lkIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUPjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5z
aW9uKQoreworICAgIGlmIChtX2lzU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKICAgICBt
X2lzU3VzcGVuZGVkID0gdHJ1ZTsKICAgICBtX3Rhc2tRdWV1ZS5jYW5jZWxBbGxUYXNrcygpOwog
fQpAQCAtMTMzLDEyICsxNTUsNDYgQEAgdm9pZCBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8VD46OnJl
c3VtZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKKyAg
ICByZXNjaGVkdWxlQWxsRXZlbnRzSWZOZWVkZWQoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VD4KK3ZvaWQgR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjpyZXNjaGVkdWxlQWxsRXZlbnRzSWZO
ZWVkZWQoKQoreworICAgIGlmIChpc1N1c3BlbmRlZE9yUGF1c2VkQnlDbGllbnQoKSkKKyAgICAg
ICAgcmV0dXJuOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGVuZGluZ0V2ZW50
cy5zaXplKCk7ICsraSkKICAgICAgICAgbV90YXNrUXVldWUuZW5xdWV1ZVRhc2soc3RkOjpiaW5k
KCZHZW5lcmljRXZlbnRRdWV1ZUJhc2U6OmRpc3BhdGNoT25lRXZlbnQsIHRoaXMpKTsKIH0KIAor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjpzdG9w
KCkKK3sKKyAgICBjbG9zZSgpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY29uc3QgY2hh
ciogR2VuZXJpY0V2ZW50UXVldWVCYXNlPFQ+OjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gIkdlbmVyaWNFdmVudFF1ZXVlQmFzZSI7Cit9CisKIHRlbXBsYXRlIGNs
YXNzIEdlbmVyaWNFdmVudFF1ZXVlQmFzZTxUaW1lcj47CiB0ZW1wbGF0ZSBjbGFzcyBHZW5lcmlj
RXZlbnRRdWV1ZUJhc2U8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD47CiAKK1VuaXF1ZVJlZjxHZW5l
cmljRXZlbnRRdWV1ZT4gR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShFdmVudFRhcmdldCYgZXZl
bnRUYXJnZXQpCit7CisgICAgYXV0byBldmVudFF1ZXVlID0gbWFrZVVuaXF1ZVJlZjxHZW5lcmlj
RXZlbnRRdWV1ZT4oZXZlbnRUYXJnZXQpOworICAgIGV2ZW50UXVldWUtPnN1c3BlbmRJZk5lZWRl
ZCgpOworICAgIHJldHVybiBldmVudFF1ZXVlOworfQorCitVbmlxdWVSZWY8TWFpblRocmVhZEdl
bmVyaWNFdmVudFF1ZXVlPiBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZShFdmVu
dFRhcmdldCYgZXZlbnRUYXJnZXQpCit7CisgICAgYXV0byBldmVudFF1ZXVlID0gbWFrZVVuaXF1
ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+KGV2ZW50VGFyZ2V0KTsKKyAgICBldmVu
dFF1ZXVlLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gZXZlbnRRdWV1ZTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0dlbmVyaWNFdmVudFF1ZXVlLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaAppbmRleCA0YzU2NDIzYTllMWU0
N2E5MzZjMDk0ZWM0ZmY1NDdiMjNkYzExMzBhLi4wMTNmYWRjZDdmYjEyZmRlMTBkYjk5Mjk3ZTZl
ZmFhMDAwNjdlNWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50
UXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vR2VuZXJpY0V2ZW50UXVldWUuaApAQCAt
MjUsMTAgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiR2VuZXJpY1Rhc2tRdWV1ZS5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0z
OCw3ICs0MCw3IEBAIGNsYXNzIFRpbWVyOwogY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIEdlbmVyaWNFdmVudFF1ZXVlQmFzZSB7Citj
bGFzcyBHZW5lcmljRXZlbnRRdWV1ZUJhc2UgOiBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBHZW5lcmlj
RXZlbnRRdWV1ZUJhc2UoRXZlbnRUYXJnZXQmKTsKQEAgLTUxLDI0ICs1MywzNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNQZW5kaW5n
RXZlbnRzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKIAotICAgIHZvaWQgc3VzcGVu
ZCgpOwotICAgIHZvaWQgcmVzdW1lKCk7CisgICAgdm9pZCBzZXRQYXVzZWQoYm9vbCk7CiAKICAg
ICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N1c3BlbmRlZDsgfQogCiBw
cml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hPbmVFdmVudCgpOwogCisgICAgY29uc3QgY2hhciog
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgY2FuU3VzcGVuZEZv
ckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3RvcCgpIGZpbmFs
OworICAgIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKKyAgICB2b2lk
IHJlc3VtZSgpIGZpbmFsOworCisgICAgdm9pZCByZXNjaGVkdWxlQWxsRXZlbnRzSWZOZWVkZWQo
KTsKKyAgICBib29sIGlzU3VzcGVuZGVkT3JQYXVzZWRCeUNsaWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTdXNwZW5kZWQgfHwgbV9pc1BhdXNlZEJ5Q2xpZW50OyB9CisKICAgICBFdmVudFRhcmdl
dCYgbV9vd25lcjsKICAgICBHZW5lcmljVGFza1F1ZXVlPFQ+IG1fdGFza1F1ZXVlOwogICAgIERl
cXVlPFJlZlB0cjxFdmVudD4+IG1fcGVuZGluZ0V2ZW50czsKICAgICBib29sIG1faXNDbG9zZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9pc1BhdXNlZEJ5Q2xpZW50IHsgZmFsc2UgfTsKICAgICBi
b29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogfTsKIAogLy8gQWxsIGluc3RhbmNlcyBvZiBN
YWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgdXNlIGEgc2hhcmVkIFRpbWVyIGZvciBkaXNwYXRj
aGluZyBldmVudHMuCiBjbGFzcyBNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWUgOiBwdWJsaWMg
R2VuZXJpY0V2ZW50UXVldWVCYXNlPFRpbWVyPiB7CiBwdWJsaWM6CisgICAgc3RhdGljIFVuaXF1
ZVJlZjxNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU+IGNyZWF0ZShFdmVudFRhcmdldCYpOwor
Citwcml2YXRlOgorICAgIGZyaWVuZCBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1
ZXVlPiBXVEY6Om1ha2VVbmlxdWVSZWZXaXRob3V0RmFzdE1hbGxvY0NoZWNrPE1haW5UaHJlYWRH
ZW5lcmljRXZlbnRRdWV1ZSwgV2ViQ29yZTo6RXZlbnRUYXJnZXQmPihXZWJDb3JlOjpFdmVudFRh
cmdldCYpOwogICAgIGV4cGxpY2l0IE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZShFdmVudFRh
cmdldCYgZXZlbnRUYXJnZXQpCiAgICAgICAgIDogR2VuZXJpY0V2ZW50UXVldWVCYXNlPFRpbWVy
PihldmVudFRhcmdldCkKICAgICB7CkBAIC03OCw2ICs5MywxMCBAQCBwdWJsaWM6CiBjbGFzcyBH
ZW5lcmljRXZlbnRRdWV1ZSA6IHB1YmxpYyBHZW5lcmljRXZlbnRRdWV1ZUJhc2U8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgor
ICAgIHN0YXRpYyBVbmlxdWVSZWY8R2VuZXJpY0V2ZW50UXVldWU+IGNyZWF0ZShFdmVudFRhcmdl
dCYpOworCitwcml2YXRlOgorICAgIGZyaWVuZCBVbmlxdWVSZWY8R2VuZXJpY0V2ZW50UXVldWU+
IFdURjo6bWFrZVVuaXF1ZVJlZldpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8R2VuZXJpY0V2ZW50UXVl
dWUsIFdlYkNvcmU6OkV2ZW50VGFyZ2V0Jj4oV2ViQ29yZTo6RXZlbnRUYXJnZXQmKTsKICAgICBl
eHBsaWNpdCBHZW5lcmljRXZlbnRRdWV1ZShFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQpCiAgICAg
ICAgIDogR2VuZXJpY0V2ZW50UXVldWVCYXNlPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+KGV2ZW50
VGFyZ2V0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IDg0MmVlMjk0
M2RmY2Q2NzBhYjgwOTI2MGRjMTE1MmEwNDU2MTJiYzguLjFkNTA0MDJkNzdjNTFhMDIwZjQzNTBm
OGY5ZmFmNmI0OTIwNDFkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtOTgs
NyArOTgsNyBAQCBNZXNzYWdlUG9ydDo6TWVzc2FnZVBvcnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgTQogICAgIDogQWN0aXZlRE9NT2JqZWN0
KCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICwgbV9pZGVudGlmaWVyKGxvY2FsKQogICAg
ICwgbV9yZW1vdGVJZGVudGlmaWVyKHJlbW90ZSkKLSAgICAsIG1fZXZlbnRRdWV1ZSgqdGhpcykK
KyAgICAsIG1fZXZlbnRRdWV1ZShHZW5lcmljRXZlbnRRdWV1ZTo6Y3JlYXRlKCp0aGlzKSkKIHsK
ICAgICBMT0coTWVzc2FnZVBvcnRzLCAiQ3JlYXRlZCBNZXNzYWdlUG9ydCAlcyAoJXApIGluIHBy
b2Nlc3MgJSIgUFJJdTY0LCBtX2lkZW50aWZpZXIubG9nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
dGhpcywgUHJvY2Vzczo6aWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCkBAIC0yMjgsMTcgKzIy
OCw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmNsb3NlKCkKIAogICAgIE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpmcm9tQ29udGV4dCgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS5tZXNzYWdl
UG9ydENsb3NlZChtX2lkZW50aWZpZXIpOwogICAgIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7
Ci0gICAgbV9ldmVudFF1ZXVlLmNsb3NlKCk7Ci19Ci0KLXZvaWQgTWVzc2FnZVBvcnQ6OnN1c3Bl
bmQoUmVhc29uRm9yU3VzcGVuc2lvbikKLXsKLSAgICBtX2V2ZW50UXVldWUuc3VzcGVuZCgpOwot
fQotCi12b2lkIE1lc3NhZ2VQb3J0OjpyZXN1bWUoKQotewotICAgIG1fZXZlbnRRdWV1ZS5yZXN1
bWUoKTsKKyAgICBtX2V2ZW50UXVldWUtPmNsb3NlKCk7CiB9CiAKIHZvaWQgTWVzc2FnZVBvcnQ6
OmNvbnRleHREZXN0cm95ZWQoKQpAQCAtMjgwLDcgKzI3MCw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6
OmRpc3BhdGNoTWVzc2FnZXMoKQogICAgICAgICAgICAgaWYgKGNvbnRleHRJc1dvcmtlciAmJiBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuaXND
bG9zaW5nKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYXV0byBwb3J0
cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgICAgICBtX2V2ZW50
UXVldWUuZW5xdWV1ZUV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBt
ZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSkpOworICAgICAgICAgICAgbV9ldmVudFF1
ZXVlLT5lbnF1ZXVlRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1l
c3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7CiAgICAgICAgIH0KICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5oCmluZGV4IGE0ZGMyMmE3NmQ2Y2I5Y2ZlYjRmMGZiZWEzNzg3
ZmY5YWQ3OWJiY2QuLjI2NTZiYjQzNGNlZTY3MTc1ZmQ2YjE1YTBiYjkyYzgzMWEwOGNjYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oCkBAIC04NSw4ICs4NSw2IEBAIHB1YmxpYzoKICAgICAv
LyBBY3RpdmVET01PYmplY3QKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkg
Y29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkg
Y29uc3QgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFs
OwotICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkg
ZmluYWw7CiAgICAgdm9pZCBzdG9wKCkgZmluYWwgeyBjbG9zZSgpOyB9CiAgICAgYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKQEAgLTEyOSw3ICsxMjcsNyBAQCBwcml2YXRl
OgogICAgIE1lc3NhZ2VQb3J0SWRlbnRpZmllciBtX3JlbW90ZUlkZW50aWZpZXI7CiAKICAgICBt
dXRhYmxlIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBtX3JlZkNvdW50IHsgMSB9OwotICAgIEdlbmVy
aWNFdmVudFF1ZXVlIG1fZXZlbnRRdWV1ZTsKKyAgICBVbmlxdWVSZWY8R2VuZXJpY0V2ZW50UXVl
dWU+IG1fZXZlbnRRdWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGQ0ZDEyYTEyMzcyZWY2MzMyOTYz
MTcxOGI2ZGU1MDgxYmQxMzM5MzEuLjM4M2E0MTZkY2FkZWZlYTUxYWJkMWY1NmEzZThiOTIwY2I4
ZDYyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDI2
LDcgKzQyNiw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgLCBtX3NjYW5UaW1lcigq
dGhpcywgJkhUTUxNZWRpYUVsZW1lbnQ6OnNjYW5UaW1lckZpcmVkKQogICAgICwgbV9wbGF5YmFj
a0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGltZXIoKnRoaXMsICZIVE1MTWVk
aWFFbGVtZW50OjpwbGF5YmFja0NvbnRyb2xzTWFuYWdlckJlaGF2aW9yUmVzdHJpY3Rpb25zVGlt
ZXJGaXJlZCkKICAgICAsIG1fc2Vla1RvUGxheWJhY2tQb3NpdGlvbkVuZGVkVGltZXIoKnRoaXMs
ICZIVE1MTWVkaWFFbGVtZW50OjpzZWVrVG9QbGF5YmFja1Bvc2l0aW9uRW5kZWRUaW1lckZpcmVk
KQotICAgICwgbV9hc3luY0V2ZW50UXVldWUoKnRoaXMpCisgICAgLCBtX2FzeW5jRXZlbnRRdWV1
ZShNYWluVGhyZWFkR2VuZXJpY0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX2xh
c3RUaW1lVXBkYXRlRXZlbnRNb3ZpZVRpbWUoTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGlt
ZSgpKQogICAgICwgbV9maXJzdFRpbWVQbGF5aW5nKHRydWUpCiAgICAgLCBtX3BsYXlpbmcoZmFs
c2UpCkBAIC01NzIsNyArNTcyLDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6fkhUTUxNZWRpYUVsZW1l
bnQoKQogICAgIGJlZ2luSWdub3JpbmdUcmFja0Rpc3BsYXlVcGRhdGVSZXF1ZXN0cygpOwogICAg
IGFsbE1lZGlhRWxlbWVudHMoKS5yZW1vdmUodGhpcyk7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1
ZS5jbG9zZSgpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5jbG9zZSgpOwogCiAgICAgc2V0U2hv
dWxkRGVsYXlMb2FkRXZlbnQoZmFsc2UpOwogICAgIHVucmVnaXN0ZXJXaXRoRG9jdW1lbnQoZG9j
dW1lbnQoKSk7CkBAIC0xMDIxLDcgKzEwMjEsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNj
aGVkdWxlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lKQogICAgIC8vIERvbid0IHNl
dCB0aGUgZXZlbnQgdGFyZ2V0LCB0aGUgZXZlbnQgcXVldWUgd2lsbCBzZXQgaXQgaW4gR2VuZXJp
Y0V2ZW50UXVldWU6OnRpbWVyRmlyZWQgYW5kIHNldHRpbmcgaXQgaGVyZQogICAgIC8vIHdpbGwg
dHJpZ2dlciBhbiBBU1NFUlQgaWYgdGhpcyBlbGVtZW50IGhhcyBiZWVuIG1hcmtlZCBmb3IgZGVs
ZXRpb24uCiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVu
dCkpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkp
OwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlUmVzb2x2ZVBlbmRpbmdQbGF5
UHJvbWlzZXMoKQpAQCAtMTg0OSwxMSArMTg0OSwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAg
ICAgICAgIGlmIChldmVudFRhc2suc2Vjb25kLT5zdGFydFRpbWUoKSA+PSBldmVudFRhc2suc2Vj
b25kLT5lbmRUaW1lKCkpIHsKICAgICAgICAgICAgIGF1dG8gZW50ZXJFdmVudCA9IEV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLmVudGVyRXZlbnQsIEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVu
dDo6SXNDYW5jZWxhYmxlOjpObyk7CiAgICAgICAgICAgICBlbnRlckV2ZW50LT5zZXRUYXJnZXQo
ZXZlbnRUYXNrLnNlY29uZCk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVl
RXZlbnQoV1RGTW92ZShlbnRlckV2ZW50KSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1
ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZW50ZXJFdmVudCkpOwogCiAgICAgICAgICAgICBhdXRv
IGV4aXRFdmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmV4aXRFdmVudCwgRXZlbnQ6
OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKICAgICAgICAgICAgIGV4
aXRFdmVudC0+c2V0VGFyZ2V0KGV2ZW50VGFzay5zZWNvbmQpOwotICAgICAgICAgICAgbV9hc3lu
Y0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXhpdEV2ZW50KSk7CisgICAgICAgICAg
ICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXhpdEV2ZW50KSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50OwogICAgICAg
ICAgICAgaWYgKGV2ZW50VGFzay5maXJzdCA9PSBldmVudFRhc2suc2Vjb25kLT5zdGFydE1lZGlh
VGltZSgpKQpAQCAtMTg2MSw3ICsxODYxLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGltZSYgbW92aWVUaW1lKQogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuZXhpdEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pOwogICAgICAgICAgICAgZXZlbnQtPnNldFRhcmdldChldmVudFRhc2suc2Vjb25kKTsK
LSAgICAgICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50
KSk7CisgICAgICAgICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUo
ZXZlbnQpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTg3NCw3ICsxODc0LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1lZGlhVGlt
ZSYgbW92aWVUaW1lKQogICAgIGZvciAoYXV0byYgYWZmZWN0ZWRUcmFjayA6IGFmZmVjdGVkVHJh
Y2tzKSB7CiAgICAgICAgIGF1dG8gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5j
dWVjaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6
Ok5vKTsKICAgICAgICAgZXZlbnQtPnNldFRhcmdldChhZmZlY3RlZFRyYWNrKTsKLSAgICAgICAg
bV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKKyAgICAgICAg
bV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiAKICAgICAg
ICAgLy8gLi4uIGlmIHRoZSB0ZXh0IHRyYWNrIGhhcyBhIGNvcnJlc3BvbmRpbmcgdHJhY2sgZWxl
bWVudCwgdG8gdGhlbiBmaXJlIGEKICAgICAgICAgLy8gc2ltcGxlIGV2ZW50IG5hbWVkIGN1ZWNo
YW5nZSBhdCB0aGUgdHJhY2sgZWxlbWVudCBhcyB3ZWxsLgpAQCAtMTg4Myw3ICsxODgzLDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGNvbnN0IE1l
ZGlhVGltZSYgbW92aWVUaW1lKQogICAgICAgICAgICAgYXV0byB0cmFja0VsZW1lbnQgPSBtYWtl
UmVmUHRyKGRvd25jYXN0PExvYWRhYmxlVGV4dFRyYWNrPigqYWZmZWN0ZWRUcmFjaykudHJhY2tF
bGVtZW50KCkpOwogICAgICAgICAgICAgQVNTRVJUKHRyYWNrRWxlbWVudCk7CiAgICAgICAgICAg
ICBldmVudC0+c2V0VGFyZ2V0KHRyYWNrRWxlbWVudCk7Ci0gICAgICAgICAgICBtX2FzeW5jRXZl
bnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAgICAgICAgICAgbV9hc3lu
Y0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTIyMjMsNyArMjIyMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFM
b2FkaW5nRmFpbGVkRmF0YWxseShNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIGVycm9yCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmNhbmNlbFBlbmRpbmdFdmVudHNBbmRDYWxsYmFja3MoKQogewog
ICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwotICAgIG1fYXN5bmNFdmVudFF1ZXVlLmNhbmNl
bEFsbEV2ZW50cygpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5jYW5jZWxBbGxFdmVudHMoKTsK
IAogICAgIGZvciAoYXV0byYgc291cmNlIDogY2hpbGRyZW5PZlR5cGU8SFRNTFNvdXJjZUVsZW1l
bnQ+KCp0aGlzKSkKICAgICAgICAgc291cmNlLmNhbmNlbFBlbmRpbmdFcnJvckV2ZW50KCk7CkBA
IC0yNjE0LDcgKzI2MTQsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyS2V5
TmVlZGVkKE1lZGlhUGxheWVyKiwgVWludDhBcnJheSogaW5pdERhdGEpCiAKICAgICBhdXRvIGV2
ZW50ID0gV2ViS2l0TWVkaWFLZXlOZWVkZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53ZWJr
aXRuZWVka2V5RXZlbnQsIGluaXREYXRhKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwot
ICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAg
bV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTI3NjEsNyArMjc2MSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJJbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChjb25zdCBTdHJpbmcm
IGluCiAgICAgLy8gICAgICBpbml0RGF0YVR5cGUgPSBpbml0RGF0YVR5cGUKICAgICAvLyAgICAg
IGluaXREYXRhID0gaW5pdERhdGEKICAgICBNZWRpYUVuY3J5cHRlZEV2ZW50SW5pdCBpbml0aWFs
aXplciB7IGluaXREYXRhVHlwZSwgV1RGTW92ZShpbml0RGF0YSkgfTsKLSAgICBtX2FzeW5jRXZl
bnRRdWV1ZS5lbnF1ZXVlRXZlbnQoTWVkaWFFbmNyeXB0ZWRFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5lbmNyeXB0ZWRFdmVudCwgaW5pdGlhbGl6ZXIsIEV2ZW50OjpJc1RydXN0ZWQ6Olllcykp
OworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1ZXVlRXZlbnQoTWVkaWFFbmNyeXB0ZWRFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmNyeXB0ZWRFdmVudCwgaW5pdGlhbGl6ZXIsIEV2ZW50
OjpJc1RydXN0ZWQ6OlllcykpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyV2FpdGluZ0ZvcktleUNoYW5nZWQoKQpAQCAtNTcyMCw3ICs1NzIwLDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpjbG9zZVRhc2tRdWV1ZXMoKQogI2lmIEVOQUJMRShFTkNSWVBURURfTUVE
SUEpCiAgICAgbV9lbmNyeXB0ZWRNZWRpYVF1ZXVlLmNsb3NlKCk7CiAjZW5kaWYKLSAgICBtX2Fz
eW5jRXZlbnRRdWV1ZS5jbG9zZSgpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5jbG9zZSgpOwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgbV92b2x1bWVSZXZlcnRUYXNrUXVldWUuY2xv
c2UoKTsKICNlbmRpZgpAQCAtNTc2MSw3ICs1NzYxLDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgIHN3aXRjaCAocmVhc29u
KSB7CiAgICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpQYWdlQ2FjaGU6CiAgICAgICAgIHN0
b3BXaXRob3V0RGVzdHJveWluZ01lZGlhUGxheWVyKCk7Ci0gICAgICAgIG1fYXN5bmNFdmVudFF1
ZXVlLnN1c3BlbmQoKTsKICAgICAgICAgc2V0QnVmZmVyaW5nUG9saWN5KEJ1ZmZlcmluZ1BvbGlj
eTo6TWFrZVJlc291cmNlc1B1cmdlYWJsZSk7CiAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRC
ZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVQYWdlQ29uc2Vu
dFRvUmVzdW1lTWVkaWEpOwogICAgICAgICBicmVhazsKQEAgLTU3NzksOCArNTc3OCw2IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKCkKIAogICAgIHNldEluQWN0aXZlRG9jdW1lbnQo
dHJ1ZSk7CiAKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUoKTsKLQogICAgIGlmICghbV9t
ZWRpYVNlc3Npb24tPnBhZ2VBbGxvd3NQbGF5YmFja0FmdGVyUmVzdW1pbmcoKSkKICAgICAgICAg
ZG9jdW1lbnQoKS5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKnRoaXMpOwogICAgIGVsc2UKQEAg
LTU4MDMsNyArNTgwMCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzdW1lKCkKIAogYm9v
bCBIVE1MTWVkaWFFbGVtZW50OjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJl
dHVybiAoaGFzQXVkaW8oKSAmJiBpc1BsYXlpbmcoKSkgfHwgbV9hc3luY0V2ZW50UXVldWUuaGFz
UGVuZGluZ0V2ZW50cygpIHx8IG1fY3JlYXRpbmdDb250cm9sczsKKyAgICByZXR1cm4gKGhhc0F1
ZGlvKCkgJiYgaXNQbGF5aW5nKCkpIHx8IG1fYXN5bmNFdmVudFF1ZXVlLT5oYXNQZW5kaW5nRXZl
bnRzKCkgfHwgbV9jcmVhdGluZ0NvbnRyb2xzOwogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkKQEAgLTU5NTIsNyArNTk0OSw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6ZW5xdWV1ZVBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50
KCkKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAiaGFzVGFyZ2V0cyA9ICIsIGhhc1Rhcmdl
dHMpOwogICAgIGF1dG8gZXZlbnQgPSBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5
Y2hhbmdlZEV2ZW50LCBoYXNUYXJnZXRzKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KHRoaXMpOwot
ICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CisgICAg
bV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChXVEZNb3ZlKGV2ZW50KSk7CiAgICAgc2No
ZWR1bGVVcGRhdGVNZWRpYVN0YXRlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKaW5kZXggNjFkYmFkNWIyODAxZDQ5NTlhNzYyNzc4ZThhNjcxMTcyYjU0Yjg4Yy4u
MzJhMjQwYTA5Yzk2NDUxNDc4YWRjMjA3ZDNkOTAwMDE4ZWU2NTU2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTk3Miw3ICs5NzIsNyBAQCBwcml2YXRlOgogICAg
IEdlbmVyaWNUYXNrUXVldWU8VGltZXI+IG1fZnVsbHNjcmVlblRhc2tRdWV1ZTsKICAgICBHZW5l
cmljVGFza1F1ZXVlPFRpbWVyPiBtX3BsYXliYWNrVGFyZ2V0SXNXaXJlbGVzc1F1ZXVlOwogICAg
IFJlZlB0cjxUaW1lUmFuZ2VzPiBtX3BsYXllZFRpbWVSYW5nZXM7Ci0gICAgTWFpblRocmVhZEdl
bmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOworICAgIFVuaXF1ZVJlZjxNYWluVGhy
ZWFkR2VuZXJpY0V2ZW50UXVldWU+IG1fYXN5bmNFdmVudFF1ZXVlOwogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgRGVmZXJyYWJsZVRhc2s8VGltZXI+IG1fdm9sdW1lUmV2ZXJ0VGFza1F1
ZXVlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNr
TGlzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmNw
cAppbmRleCA2ZDMxMThiZTc0MjkzOThjMDdhYWUwZjk1OWZlY2RjMTI2N2ZmZDAzLi45MDAzZTlj
MWIyMmQyZDNlZTM3OTE1MDI1ODljM2YyNjg3ZTgyMTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRF9JTVBMKFRyYWNrTGlzdEJhc2UpOwogVHJhY2tMaXN0QmFzZTo6VHJhY2tMaXN0
QmFzZShIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQogICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX2VsZW1lbnQo
ZWxlbWVudCkKLSAgICAsIG1fYXN5bmNFdmVudFF1ZXVlKCp0aGlzKQorICAgICwgbV9hc3luY0V2
ZW50UXVldWUoTWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlOjpjcmVhdGUoKnRoaXMpKQogewog
ICAgIEFTU0VSVCghY29udGV4dCB8fCBpczxEb2N1bWVudD4oY29udGV4dCkpOwogICAgIHN1c3Bl
bmRJZk5lZWRlZCgpOwpAQCAtOTgsNyArOTgsNyBAQCBib29sIFRyYWNrTGlzdEJhc2U6OmNvbnRh
aW5zKFRyYWNrQmFzZSYgdHJhY2spIGNvbnN0CiAKIHZvaWQgVHJhY2tMaXN0QmFzZTo6c2NoZWR1
bGVUcmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSwgUmVmPFRyYWNrQmFzZT4m
JiB0cmFjaykKIHsKLSAgICBtX2FzeW5jRXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoVHJhY2tFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vLCBXVEZNb3ZlKHRyYWNrKSkpOworICAgIG1fYXN5bmNFdmVudFF1ZXVlLT5lbnF1
ZXVlRXZlbnQoVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZSwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vLCBXVEZNb3ZlKHRyYWNrKSkpOwogfQogCiB2b2lk
IFRyYWNrTGlzdEJhc2U6OnNjaGVkdWxlQWRkVHJhY2tFdmVudChSZWY8VHJhY2tCYXNlPiYmIHRy
YWNrKQpAQCAtMTYxLDEyICsxNjEsMTIgQEAgdm9pZCBUcmFja0xpc3RCYXNlOjpzY2hlZHVsZUNo
YW5nZUV2ZW50KCkKICAgICAvLyBXaGVuZXZlciBhIHRyYWNrIGluIGEgVmlkZW9UcmFja0xpc3Qg
dGhhdCB3YXMgcHJldmlvdXNseSBub3Qgc2VsZWN0ZWQgaXMKICAgICAvLyBzZWxlY3RlZCwgdGhl
IHVzZXIgYWdlbnQgbXVzdCBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1l
ZAogICAgIC8vIGNoYW5nZSBhdCB0aGUgVmlkZW9UcmFja0xpc3Qgb2JqZWN0LgotICAgIG1fYXN5
bmNFdmVudFF1ZXVlLmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jaGFu
Z2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7
CisgICAgbV9hc3luY0V2ZW50UXVldWUtPmVucXVldWVFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5jaGFuZ2VFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNl
bGFibGU6Ok5vKSk7CiB9CiAKIGJvb2wgVHJhY2tMaXN0QmFzZTo6aXNDaGFuZ2VFdmVudFNjaGVk
dWxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYXN5bmNFdmVudFF1ZXVlLmhhc1BlbmRpbmdF
dmVudHNPZlR5cGUoZXZlbnROYW1lcygpLmNoYW5nZUV2ZW50KTsKKyAgICByZXR1cm4gbV9hc3lu
Y0V2ZW50UXVldWUtPmhhc1BlbmRpbmdFdmVudHNPZlR5cGUoZXZlbnROYW1lcygpLmNoYW5nZUV2
ZW50KTsKIH0KIAogYm9vbCBUcmFja0xpc3RCYXNlOjppc0FueVRyYWNrRW5hYmxlZCgpIGNvbnN0
CkBAIC0xODAsMzEgKzE4MCw3IEBAIGJvb2wgVHJhY2tMaXN0QmFzZTo6aXNBbnlUcmFja0VuYWJs
ZWQoKSBjb25zdAogCiBib29sIFRyYWNrTGlzdEJhc2U6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1
c3BlbnNpb24oKSBjb25zdAogewotICAgIHJldHVybiAhbV9hc3luY0V2ZW50UXVldWUuaGFzUGVu
ZGluZ0V2ZW50cygpOwotfQotCi12b2lkIFRyYWNrTGlzdEJhc2U6OnN1c3BlbmQoUmVhc29uRm9y
U3VzcGVuc2lvbiByZWFzb24pCi17Ci0gICAgc3dpdGNoIChyZWFzb24pIHsKLSAgICBjYXNlIFJl
YXNvbkZvclN1c3BlbnNpb246OlBhZ2VDYWNoZToKLSAgICBjYXNlIFJlYXNvbkZvclN1c3BlbnNp
b246OlBhZ2VXaWxsQmVTdXNwZW5kZWQ6Ci0gICAgICAgIG1fYXN5bmNFdmVudFF1ZXVlLnN1c3Bl
bmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZh
U2NyaXB0RGVidWdnZXJQYXVzZWQ6Ci0gICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxs
RGVmZXJMb2FkaW5nOgotICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRp
YSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi12
b2lkIFRyYWNrTGlzdEJhc2U6OnJlc3VtZSgpCi17Ci0gICAgbV9hc3luY0V2ZW50UXVldWUucmVz
dW1lKCk7Ci19Ci0KLXZvaWQgVHJhY2tMaXN0QmFzZTo6c3RvcCgpCi17Ci0gICAgbV9hc3luY0V2
ZW50UXVldWUuY2xvc2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RC
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrTGlzdEJhc2UuaAppbmRleCAw
YmJkODU4MmY1OWYxMWEzNjkyM2ZjODU3Zjc2YzMyODhlMmZmOTg2Li40MjU1YmMxNjA5NWM4MjIw
OTA0YjE0M2M4ZDk2NzgzOWU1NDE1ZDJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RyYWNrTGlzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Ry
YWNrTGlzdEJhc2UuaApAQCAtNzYsOSArNzYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1
bGVUcmFja0V2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSwgUmVmPFRyYWNrQmFzZT4m
Jik7CiAKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBm
aW5hbDsKLSAgICB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikgZmluYWw7Ci0gICAg
dm9pZCByZXN1bWUoKSBmaW5hbDsKLSAgICB2b2lkIHN0b3AoKSBmaW5hbDsKIAogICAgIC8vIEV2
ZW50VGFyZ2V0CiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KQEAg
LTg2LDcgKzgzLDcgQEAgcHJpdmF0ZToKIAogICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fZWxlbWVu
dDsKIAotICAgIE1haW5UaHJlYWRHZW5lcmljRXZlbnRRdWV1ZSBtX2FzeW5jRXZlbnRRdWV1ZTsK
KyAgICBVbmlxdWVSZWY8TWFpblRocmVhZEdlbmVyaWNFdmVudFF1ZXVlPiBtX2FzeW5jRXZlbnRR
dWV1ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
LmNwcAppbmRleCAyMjEwMWFjNTczNTBkNWQ1YWU3NzczYjBiNTZmY2E4NjlmYzcwNTI1Li5lYmVj
ODk0MzE2NjgzYTQ1OTZjMTkyODQwMzY4YTY0NGM1ZDQwZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIGlubGluZSBXb3JrZXI6OldvcmtlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBKU0M6OlJ1bnRpbWVGbGFncyBydW50aW1lCiAgICAg
LCBtX2lkZW50aWZpZXIoIndvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6
OmNyZWF0ZUlkZW50aWZpZXIoKSkKICAgICAsIG1fY29udGV4dFByb3h5KFdvcmtlckdsb2JhbFNj
b3BlUHJveHk6OmNyZWF0ZSgqdGhpcykpCiAgICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxh
Z3MpCi0gICAgLCBtX2V2ZW50UXVldWUoKnRoaXMpCisgICAgLCBtX2V2ZW50UXVldWUoR2VuZXJp
Y0V2ZW50UXVldWU6OmNyZWF0ZSgqdGhpcykpCiB7CiAgICAgc3RhdGljIGJvb2wgYWRkZWRMaXN0
ZW5lcjsKICAgICBpZiAoIWFkZGVkTGlzdGVuZXIpIHsKQEAgLTE0Niw3ICsxNDYsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBXb3JrZXI6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpKU1ZhbHVlIG1lc3NhZwogdm9pZCBXb3JrZXI6OnRlcm1pbmF0ZSgpCiB7CiAgICAgbV9j
b250ZXh0UHJveHkudGVybWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKTsKLSAgICBtX2V2ZW50UXVl
dWUuY2FuY2VsQWxsRXZlbnRzKCk7CisgICAgbV9ldmVudFF1ZXVlLT5jYW5jZWxBbGxFdmVudHMo
KTsKIH0KIAogYm9vbCBXb3JrZXI6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBj
b25zdApAQCAtMTU0LDE2ICsxNTQsNiBAQCBib29sIFdvcmtlcjo6Y2FuU3VzcGVuZEZvckRvY3Vt
ZW50U3VzcGVuc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV29ya2Vy
OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pCi17Ci0gICAgbV9ldmVudFF1ZXVlLnN1c3Bl
bmQoKTsKLX0KLQotdm9pZCBXb3JrZXI6OnJlc3VtZSgpCi17Ci0gICAgbV9ldmVudFF1ZXVlLnJl
c3VtZSgpOwotfQotCiBjb25zdCBjaGFyKiBXb3JrZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdAogewogICAgIHJldHVybiAiV29ya2VyIjsKQEAgLTE3MiwxMiArMTYyLDExIEBAIGNvbnN0
IGNoYXIqIFdvcmtlcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiB2b2lkIFdvcmtlcjo6
c3RvcCgpCiB7CiAgICAgdGVybWluYXRlKCk7Ci0gICAgbV9ldmVudFF1ZXVlLmNsb3NlKCk7CiB9
CiAKIGJvb2wgV29ya2VyOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdAogewotICAgIHJldHVy
biBtX2NvbnRleHRQcm94eS5oYXNQZW5kaW5nQWN0aXZpdHkoKSB8fCBBY3RpdmVET01PYmplY3Q6
Omhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IG1fZXZlbnRRdWV1ZS5oYXNQZW5kaW5nRXZlbnRzKCk7
CisgICAgcmV0dXJuIG1fY29udGV4dFByb3h5Lmhhc1BlbmRpbmdBY3Rpdml0eSgpIHx8IEFjdGl2
ZURPTU9iamVjdDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgfHwgbV9ldmVudFF1ZXVlLT5oYXNQZW5k
aW5nRXZlbnRzKCk7CiB9CiAKIHZvaWQgV29ya2VyOjpub3RpZnlOZXR3b3JrU3RhdGVDaGFuZ2Uo
Ym9vbCBpc09uTGluZSkKQEAgLTIxNywxMiArMjA2LDEyIEBAIHZvaWQgV29ya2VyOjpub3RpZnlG
aW5pc2hlZCgpCiAKIHZvaWQgV29ya2VyOjplbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmIGV2ZW50
KQogewotICAgIG1fZXZlbnRRdWV1ZS5lbnF1ZXVlRXZlbnQoV1RGTW92ZShldmVudCkpOworICAg
IG1fZXZlbnRRdWV1ZS0+ZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0KIAogdm9pZCBX
b3JrZXI6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50KQogewotICAgIFJFTEVBU0VfQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIW1fZXZlbnRRdWV1ZS5pc1N1c3BlbmRlZCgpKTsK
KyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFtX2V2ZW50UXVl
dWUtPmlzU3VzcGVuZGVkKCkpOwogCiAgICAgQWJzdHJhY3RXb3JrZXI6OmRpc3BhdGNoRXZlbnQo
ZXZlbnQpOwogICAgIGlmIChpczxFcnJvckV2ZW50PihldmVudCkgJiYgIWV2ZW50LmRlZmF1bHRQ
cmV2ZW50ZWQoKSAmJiBldmVudC5pc1RydXN0ZWQoKSAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5oCmluZGV4IDU3MWNmNjdhYTU3ZjMzZWMwNWQ4MGFj
NjNjYzY1Zjk3NjExZDM5MjkuLmVlMzFjN2NlYzVlZmU5ZmZmYmE3NDBjYzA1YzNiNTgwZjcwY2Y5
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaApAQCAtODMsOCArODMsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoKSBmaW5hbDsKIAogICAgIGJvb2wgY2FuU3VzcGVuZEZv
ckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgc3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uKSBmaW5hbDsKLSAgICB2b2lkIHJlc3VtZSgpIGZpbmFsOwogICAgIHZv
aWQgc3RvcCgpIGZpbmFsOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdCBmaW5hbDsKIApAQCAtOTgsNyArOTYsNyBAQCBwcml2YXRlOgogICAgIE1vbm90b25pY1Rp
bWUgbV93b3JrZXJDcmVhdGlvblRpbWU7CiAgICAgYm9vbCBtX3Nob3VsZEJ5cGFzc01haW5Xb3Js
ZENvbnRlbnRTZWN1cml0eVBvbGljeSB7IGZhbHNlIH07CiAgICAgSlNDOjpSdW50aW1lRmxhZ3Mg
bV9ydW50aW1lRmxhZ3M7Ci0gICAgR2VuZXJpY0V2ZW50UXVldWUgbV9ldmVudFF1ZXVlOworICAg
IFVuaXF1ZVJlZjxHZW5lcmljRXZlbnRRdWV1ZT4gbV9ldmVudFF1ZXVlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDk1ZDJjZTY3NDBlNjljNjgy
YjZjZjUzODdmNjRiNzEyZTkyODE5YWYuLjcyMTFlYjZmY2I1NGYzZjQ1NzI2Y2VhMzY3MzIxMmE4
NjU4MzdjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTcwLDEzICs3MCwxMyBAQCBXVEZfTUFL
RV9JU09fQUxMT0NBVEVEX0lNUEwoU2VydmljZVdvcmtlckNvbnRhaW5lcik7CiBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIE5hdmlnYXRvckJhc2UmIG5hdmlnYXRvcikKICAgICA6IEFjdGl2ZURPTU9i
amVjdChjb250ZXh0KQogICAgICwgbV9uYXZpZ2F0b3IobmF2aWdhdG9yKQotICAgICwgbV9tZXNz
YWdlUXVldWUoKnRoaXMpCisgICAgLCBtX21lc3NhZ2VRdWV1ZShHZW5lcmljRXZlbnRRdWV1ZTo6
Y3JlYXRlKCp0aGlzKSkKIHsKICAgICBzdXNwZW5kSWZOZWVkZWQoKTsKICAgICAKICAgICAvLyBX
ZSBzaG91bGQgcXVldWUgbWVzc2FnZXMgdW50aWwgdGhlIERPTUNvbnRlbnRMb2FkZWQgZXZlbnQg
aGFzIGZpcmVkIG9yIHN0YXJ0TWVzc2FnZXMoKSBoYXMgYmVlbiBjYWxsZWQuCiAgICAgaWYgKGlz
PERvY3VtZW50Pihjb250ZXh0KSAmJiBkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnBhcnNp
bmcoKSkKLSAgICAgICAgbV9tZXNzYWdlUXVldWUuc3VzcGVuZCgpOworICAgICAgICBtX21lc3Nh
Z2VRdWV1ZS0+c2V0UGF1c2VkKHRydWUpOwogfQogCiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjp+
U2VydmljZVdvcmtlckNvbnRhaW5lcigpCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyOjpnZXRSZWdpc3RyYXRpb25zKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydE1lc3NhZ2VzKCkK
IHsKLSAgICBtX21lc3NhZ2VRdWV1ZS5yZXN1bWUoKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS0+c2V0
UGF1c2VkKGZhbHNlKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWls
ZWRXaXRoRXhjZXB0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QgRXhjZXB0aW9uJiBl
eGNlcHRpb24pCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojpwb3N0TWVzc2FnZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnYKIAog
ICAgIGF1dG8gbWVzc2FnZUV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2FnZVBvcnQ6
OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMp
KSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIHNvdXJjZU9yaWdpbiwgeyB9LCBX
VEZNb3ZlKHNvdXJjZSkpOwogICAgIAotICAgIG1fbWVzc2FnZVF1ZXVlLmVucXVldWVFdmVudChX
VEZNb3ZlKG1lc3NhZ2VFdmVudCkpOworICAgIG1fbWVzc2FnZVF1ZXVlLT5lbnF1ZXVlRXZlbnQo
V1RGTW92ZShtZXNzYWdlRXZlbnQpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy
Ojpub3RpZnlSZWdpc3RyYXRpb25Jc1NldHRsZWQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQpAQCAtNTIzLDE2ICs1MjMsNiBAQCBib29sIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25z
dAogICAgIHJldHVybiAhaGFzUGVuZGluZ0FjdGl2aXR5KCk7CiB9CiAKLXZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKQotewotICAgIG1fbWVz
c2FnZVF1ZXVlLnN1c3BlbmQoKTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpy
ZXN1bWUoKQotewotICAgIG1fbWVzc2FnZVF1ZXVlLnJlc3VtZSgpOwotfQotCiBTV0NsaWVudENv
bm5lY3Rpb24mIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmVuc3VyZVNXQ2xpZW50Q29ubmVjdGlv
bigpCiB7CiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CkBAIC01ODMsNyAr
NTczLDYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdG9wKCkKICAgICBtX2lzU3Rv
cHBlZCA9IHRydWU7CiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKICAgICBtX3JlYWR5
UHJvbWlzZSA9IG51bGxwdHI7Ci0gICAgbV9tZXNzYWdlUXVldWUuY2xvc2UoKTsKICAgICBhdXRv
IGpvYk1hcCA9IFdURk1vdmUobV9qb2JNYXApOwogICAgIGZvciAoYXV0byYgb25nb2luZ0pvYiA6
IGpvYk1hcC52YWx1ZXMoKSkgewogICAgICAgICBpZiAob25nb2luZ0pvYi5qb2ItPmNhbmNlbFBl
bmRpbmdMb2FkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuaAppbmRleCA0OThhMGNiNDRiMTJkNWRiZTU3N2QxZWI2
ZTc1YWE1NTE5MDc4YjllLi43NWVhOTUzMjE5MGYwYzY2YzY2MGJiZTliMjVkNGJjZDdjOTFkOWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmgKQEAgLTExMSw4ICsxMTEsNiBAQCBwcml2YXRlOgogICAgIC8vIEFj
dGl2ZURPTU9iamVjdC4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QgZmluYWw7CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29u
c3QgZmluYWw7Ci0gICAgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24pIGZpbmFsOwot
ICAgIHZvaWQgcmVzdW1lKCkgZmluYWw7CiAgICAgCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAgICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CkBAIC0xNDMsOCArMTQx
LDcgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fbGFzdE9uZ29pbmdTZXR0bGVkUmVnaXN0
cmF0aW9uSWRlbnRpZmllciB7IDAgfTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5PiBtX29uZ29pbmdTZXR0bGVkUmVnaXN0cmF0aW9uczsKLSAgICBH
ZW5lcmljRXZlbnRRdWV1ZSBtX21lc3NhZ2VRdWV1ZTsKLQorICAgIFVuaXF1ZVJlZjxHZW5lcmlj
RXZlbnRRdWV1ZT4gbV9tZXNzYWdlUXVldWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>