<?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>174203</bug_id>
          
          <creation_ts>2017-07-06 09:26:45 -0700</creation_ts>
          <short_desc>Merge ResourceLoadStatisticsStore into WebResourceLoadStatisticsStore</short_desc>
          <delta_ts>2017-07-10 16:00:48 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>174111</dependson>
    
    <dependson>174189</dependson>
    
    <dependson>174235</dependson>
    
    <dependson>174290</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1326054</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-06 09:26:45 -0700</bug_when>
    <thetext>Merge ResourceLoadStatisticsStore into WebResourceLoadStatisticsStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327106</commentid>
    <comment_count>1</comment_count>
      <attachid>315010</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-10 12:43:18 -0700</bug_when>
    <thetext>Created attachment 315010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327109</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-07-10 12:46:25 -0700</bug_when>
    <thetext>Attachment 315010 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.cpp:837:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.h:104:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327231</commentid>
    <comment_count>3</comment_count>
      <attachid>315010</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-07-10 15:59:17 -0700</bug_when>
    <thetext>Comment on attachment 315010
Patch

Looks good, and the bots are happy. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327236</commentid>
    <comment_count>4</comment_count>
      <attachid>315010</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-10 16:00:46 -0700</bug_when>
    <thetext>Comment on attachment 315010
Patch

Clearing flags on attachment: 315010

Committed r219312: &lt;http://trac.webkit.org/changeset/219312&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1327237</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-07-10 16:00:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315010</attachid>
            <date>2017-07-10 12:43:18 -0700</date>
            <delta_ts>2017-07-10 16:00:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174203-20170710124318.patch</filename>
            <type>text/plain</type>
            <size>72825</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5Mjk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzhhYmQyYmE1NDZkMjZi
Y2ZiZjNiOWQ1OTNmODNlMDVhNjBiNDVkMC4uODBmNzI2ZTYzOGEyZjkzY2Y4MzlmNjVmODZkMGE1
MjJhMThjMzQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDgxIEBACiAyMDE3LTA3LTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTWVyZ2UgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlIGludG8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQyMDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZXJnZSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgaW50byBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
IFRoZSAyIGNsYXNzZXMKKyAgICAgICAgaGF2ZSBhIHNpbWlsYXIgcHVycG9zZSBhbmQgdGhlcmUg
aXMgbm8gY2xlYW4gc2VwYXJhdGlvbiBiZXR3ZWVuIHRoZSAyLiBJdCBtYWtlcyBtb3JlCisgICAg
ICAgIHNlbnNlIHRvIGhhdmUgYSBzaW5nbGUgc3RvcmUgY2xhc3MgZm9yIHJlc291cmNlIGxvYWQg
c3RhdGlzdGljcy4KKworICAgICAgICBJZiB3ZSB3YW50IHRvIHNpbXBsaWZ5IHRoZSBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xhc3MsIEkgdGhpbmsgaXQnZCBtYWtlCisgICAgICAg
IG1vcmUgc2Vuc2UgdG8gc3BsaXQgdGhlIGZpbGUgc3lzdGVtIEkvTyBjb2RlIG91dC4gVGhpcyBj
b2RlIGFkZHMgcXVpdGUgYSBiaXQgb2YKKyAgICAgICAgY29tcGxleGl0eS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmddKToKKyAgICAgICAgKC1bV0tXZWJz
aXRlRGF0YVN0b3JlIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0U2hvdWxkUGFydGl0aW9uQ29v
a2llczpmb3JIb3N0Ol0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlXSk6CisgICAgICAg
ICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnM6XSk6CisgICAgICAgICgtW1dL
V2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc1Jlc2V0VG9Db25zaXN0ZW50
U3RhdGVdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVt
b3ZlRGF0YVJlY29yZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVmcmVz
aEZyb21EaXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjp3cml0ZVN0b3JlVG9EaXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzdGFydE1vbml0b3JpbmdTdGF0aXN0aWNzU3RvcmFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5
VGFza3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnN1Ym1pdFRlbGVtZXRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6bG9nVXNlckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhclVzZXJJbnRlcmFjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzSGFkVXNlckludGVy
YWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0R3Jh
bmRmYXRoZXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6aXNHcmFuZGZhdGhlcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNvb2tpZVBh
cnRpdGlvbmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c2NoZWR1bGVDb29raWVQYXJ0aXRpb25pbmdVcGRhdGVGb3JEb21haW5zKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVs
ZUNsZWFySW5NZW1vcnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRpbWVUb0xpdmVVc2Vy
SW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnNldFRpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZUVuY29kZXJGcm9tRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cG9wdWxhdGVG
cm9tRGVjb2Rlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Y2xlYXJJbk1lbW9yeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRQYXJ0aXRpb25Db29raWVzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQ
YXJ0aXRpb25pbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnByb2Nlc3NTdGF0aXN0aWNzKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNIYWRV
bmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9S
ZW1vdmVXZWJzaXRlRGF0YUZvcik6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0YXRp
c3RpY3NFeHBpcmVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnkuY3BwOgorICAgICAgICAoV2ViS2l0Ojpzb3J0ZWRQcmV2YWxlbnRSZXNvdXJj
ZVRlbGVtZXRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZWxlbWV0cnk6OmNhbGN1bGF0ZUFuZFN1Ym1pdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6OnJlbW92ZURhdGEpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKworMjAxNy0wNy0xMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCiAgICAgICAgIEZ1cnRoZXIgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIC8gUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGNsZWFuIHVwCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQzMDEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRl
eCA5ZGYzNzZlYzlhMDY0YjhkZTEwMGQxNDIyYmRhN2U0MDI1ZmMyZjYxLi4xNWU3MWYxMmM2NDVj
NTZjZDlmY2RmMzU4MzM1OGRkNjk0ZGY0OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtNDM0
LDcgKzQzNCw2IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKIAogICAgIFVJUHJvY2Vzcy9TdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAogICAgIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5jcHAKLSAgICBVSVByb2Nlc3MvU3RvcmFnZS9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAKICAgICBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXIuY3BwCiAgICAgVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA0YmEwNzRhOWZh
ZjY0Y2JiOGNmNTFmMTI5YzA0ZjUwMjI0MzNjMTg3Li5jYmQyNzQ3NGNjNGIzNWQ5NjI0MzE5MzRh
YzZiODg4ZTVlODc4YzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMzYwLDcgKzM2MCw3IEBAIC0g
KHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVDb29raWVQYXJ0aXRpb25pbmcKICAg
ICBpZiAoIXN0b3JlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+dXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nKCk7CisgICAgc3RvcmUtPnNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBk
YXRlKCk7CiB9CiAKIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0
aXRpb25Db29raWVzOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TU3RyaW5nICopaG9zdApAQCAtMzcw
LDkgKzM3MCw5IEBAIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTZXRTaG91bGRQYXJ0
aXRpb25Db29raWVzOihCT09MKXZhbHVlIGZvckhvc3Q6KE5TCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmICh2YWx1ZSkKLSAgICAgICAgc3RvcmUtPnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0Zv
ckRvbWFpbnMoeyB9LCB7IGhvc3QgfSwgV2ViS2l0OjpTaG91bGRDbGVhckZpcnN0OjpObyk7Cisg
ICAgICAgIHN0b3JlLT5zY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1VwZGF0ZUZvckRvbWFpbnMo
eyB9LCB7IGhvc3QgfSwgV2ViS2l0OjpTaG91bGRDbGVhckZpcnN0OjpObyk7CiAgICAgZWxzZQot
ICAgICAgICBzdG9yZS0+dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IGhvc3Qg
fSwgeyB9LCBXZWJLaXQ6OlNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKKyAgICAgICAgc3RvcmUtPnNj
aGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBkYXRlRm9yRG9tYWlucyh7IGhvc3QgfSwgeyB9LCBX
ZWJLaXQ6OlNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKIH0KIAogLSAodm9pZClfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeQpAQCAtNDIyLDcgKzQyMiw3IEBAIC0gKHZvaWQpX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlCiAgICAg
aWYgKCFzdG9yZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RvcmUtPmNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50KCk7CisgICAgc3RvcmUtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnQoKTsKIH0KIAogLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnM6KHVuc2lnbmVkKWhvdXJzCkBA
IC00MzEsNyArNDMxLDcgQEAgLSAodm9pZClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVNb2RpZmllZFNpbmNlSG91cnMKICAgICBpZiAoIXN0b3Jl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdG9yZS0+Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6bm93KCkgLSBzdGQ6OmNocm9ubzo6aG91cnMo
aG91cnMpKTsKKyAgICBzdG9yZS0+c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjpub3coKSAtIHN0ZDo6Y2hyb25vOjpob3Vycyhob3Vy
cykpOwogfQogCiAtICh2b2lkKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZQpAQCAtNDQ4LDcgKzQ0OCw3IEBAIC0gKHZvaWQpX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NSZXNldFRvQ29uc2lzdGVudFN0YXRlCiAgICAgc3RvcmUtPnNldE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQoZmFsc2UpOwogICAgIFdlYktpdDo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVy
ZWQoZmFsc2UpOwogICAgIHN0b3JlLT5zZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURh
dGFSZWNvcmRzUmVtb3ZhbCh0cnVlKTsKLSAgICBzdG9yZS0+Y2xlYXJJbk1lbW9yeSgpOworICAg
IHN0b3JlLT5zY2hlZHVsZUNsZWFySW5NZW1vcnkoKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNWE3MDg2
NzcyNGY2NGYwZjBiNDY1NGZkNzQxNWY0M2M0NDQ2YjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2Uv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0KLSNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5oPgotI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgotI2luY2x1ZGUgPHd0Zi9Dcm9zc1RocmVhZENv
cGllci5oPgotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotY29uc3QgdW5zaWduZWQgb3BlcmF0aW5nRGF0
ZXNXaW5kb3cgeyAzMCB9OwotY29uc3QgdW5zaWduZWQgc3RhdGlzdGljc01vZGVsVmVyc2lvbiB7
IDYgfTsKLQotUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjcmVhdGUoVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hh
bmRsZXImJiB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcikKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoV1RGTW92
ZSh1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcikpKTsKLX0KLQotUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoVXBk
YXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXImJiB1cGRhdGVDb29raWVQYXJ0
aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcikKLSAgICA6IG1fdXBkYXRlQ29va2llUGFydGl0aW9u
aW5nRm9yRG9tYWluc0hhbmRsZXIoV1RGTW92ZSh1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JE
b21haW5zSGFuZGxlcikpCi17Ci19Ci0KLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojppc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikgY29uc3QK
LXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBhdXRvIG1hcEVudHJ5ID0g
bV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChwcmltYXJ5RG9tYWluKTsKLSAgICBpZiAobWFw
RW50cnkgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHJldHVybiBtYXBFbnRyeS0+dmFsdWUuaXNQcmV2YWxlbnRSZXNvdXJjZTsK
LX0KLQotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzR3JhbmRGYXRoZXJlZChj
b25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7Ci0gICAgYXV0byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFw
LmZpbmQocHJpbWFyeURvbWFpbik7Ci0gICAgaWYgKG1hcEVudHJ5ID09IG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbWFw
RW50cnktPnZhbHVlLmdyYW5kZmF0aGVyZWQ7Ci19Ci0KLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpoYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwcmlt
YXJ5RG9tYWluKQotewotICAgIGF1dG8gbWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlzdGljc01h
cC5maW5kKHByaW1hcnlEb21haW4pOwotICAgIGlmIChtYXBFbnRyeSA9PSBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGhh
c0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihtYXBFbnRyeS0+dmFsdWUpOwotfQot
ICAgIAotUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjplbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYg
cHJpbWFyeURvbWFpbikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBy
ZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5zdXJlKHByaW1hcnlEb21haW4sIFsmcHJp
bWFyeURvbWFpbl0gewotICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwcmlt
YXJ5RG9tYWluKTsKLSAgICB9KS5pdGVyYXRvci0+dmFsdWU7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0
cjxLZXllZEVuY29kZXI+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRW5jb2Rl
ckZyb21EYXRhKCkgY29uc3QKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAg
ICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKLSAgICBlbmNvZGVyLT5l
bmNvZGVVSW50MzIoInZlcnNpb24iLCBzdGF0aXN0aWNzTW9kZWxWZXJzaW9uKTsKLSAgICBlbmNv
ZGVyLT5lbmNvZGVEb3VibGUoImVuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAiLCBtX2VuZE9m
R3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKLSAg
ICAKLSAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3RzKCJicm93c2luZ1N0YXRpc3RpY3MiLCBtX3Jl
c291cmNlU3RhdGlzdGljc01hcC5iZWdpbigpLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQo
KSwgW10oS2V5ZWRFbmNvZGVyJiBlbmNvZGVySW5uZXIsIGNvbnN0IGF1dG8mIG9yaWdpbikgewot
ICAgICAgICBvcmlnaW4udmFsdWUuZW5jb2RlKGVuY29kZXJJbm5lcik7Ci0gICAgfSk7Ci0KLSAg
ICBlbmNvZGVyLT5lbmNvZGVPYmplY3RzKCJvcGVyYXRpbmdEYXRlcyIsIG1fb3BlcmF0aW5nRGF0
ZXMuYmVnaW4oKSwgbV9vcGVyYXRpbmdEYXRlcy5lbmQoKSwgW10oS2V5ZWRFbmNvZGVyJiBlbmNv
ZGVySW5uZXIsIFdhbGxUaW1lIGRhdGUpIHsKLSAgICAgICAgZW5jb2RlcklubmVyLmVuY29kZURv
dWJsZSgiZGF0ZSIsIGRhdGUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKLSAgICB9KTsK
LSAgICAKLSAgICByZXR1cm4gZW5jb2RlcjsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnBvcHVsYXRlRnJvbURlY29kZXIoS2V5ZWREZWNvZGVyJiBkZWNvZGVyKQotewot
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIGlmICghbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1bnNpZ25lZCB2ZXJz
aW9uT25EaXNrOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVVSW50MzIoInZlcnNpb24iLCB2ZXJz
aW9uT25EaXNrKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHZlcnNpb25PbkRpc2sgIT0g
c3RhdGlzdGljc01vZGVsVmVyc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZG91YmxlIGVu
ZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXA7Ci0gICAgaWYgKGRlY29kZXIuZGVjb2RlRG91Ymxl
KCJlbmRPZkdyYW5kZmF0aGVyaW5nVGltZXN0YW1wIiwgZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVz
dGFtcCkpCi0gICAgICAgIG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcCA9IFdhbGxUaW1l
Ojpmcm9tUmF3U2Vjb25kcyhlbmRPZkdyYW5kZmF0aGVyaW5nVGltZXN0YW1wKTsKLSAgICBlbHNl
Ci0gICAgICAgIG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcCA9IHsgfTsKLQotICAgIFZl
Y3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBsb2FkZWRTdGF0aXN0aWNzOwotICAgIGJvb2wg
c3VjY2VlZGVkID0gZGVjb2Rlci5kZWNvZGVPYmplY3RzKCJicm93c2luZ1N0YXRpc3RpY3MiLCBs
b2FkZWRTdGF0aXN0aWNzLCBbXShLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYgc3RhdGlzdGljcykgewotICAgICAgICByZXR1cm4gc3RhdGlzdGljcy5k
ZWNvZGUoZGVjb2RlcklubmVyKTsKLSAgICB9KTsKLQotICAgIGlmICghc3VjY2VlZGVkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBWZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRSZXNvdXJjZURvbWFp
bnNXaXRob3V0VXNlckludGVyYWN0aW9uOwotICAgIHByZXZhbGVudFJlc291cmNlRG9tYWluc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb24ucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShsb2FkZWRTdGF0aXN0
aWNzLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiBzdGF0aXN0aWNzIDogbG9hZGVkU3RhdGlzdGlj
cykgewotICAgICAgICBpZiAoc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlICYmICFzdGF0
aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbikgewotICAgICAgICAgICAgcHJldmFsZW50UmVzb3Vy
Y2VEb21haW5zV2l0aG91dFVzZXJJbnRlcmFjdGlvbi51bmNoZWNrZWRBcHBlbmQoc3RhdGlzdGlj
cy5oaWdoTGV2ZWxEb21haW4pOwotICAgICAgICAgICAgc3RhdGlzdGljcy5pc01hcmtlZEZvckNv
b2tpZVBhcnRpdGlvbmluZyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgbV9yZXNvdXJjZVN0
YXRpc3RpY3NNYXAuYWRkKHN0YXRpc3RpY3MuaGlnaExldmVsRG9tYWluLCBXVEZNb3ZlKHN0YXRp
c3RpY3MpKTsKLSAgICB9Ci0KLSAgICBzdWNjZWVkZWQgPSBkZWNvZGVyLmRlY29kZU9iamVjdHMo
Im9wZXJhdGluZ0RhdGVzIiwgbV9vcGVyYXRpbmdEYXRlcywgW10oS2V5ZWREZWNvZGVyJiBkZWNv
ZGVyLCBXYWxsVGltZSYgd2FsbFRpbWUpIHsKLSAgICAgICAgZG91YmxlIHZhbHVlOwotICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRG91YmxlKCJkYXRlIiwgdmFsdWUpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgd2FsbFRpbWUgPSBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHModmFsdWUpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9KTsKLQotICAg
IGlmICghc3VjY2VlZGVkKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgdXBkYXRlQ29va2ll
UGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IH0sIHByZXZhbGVudFJlc291cmNlRG9tYWluc1dpdGhv
dXRVc2VySW50ZXJhY3Rpb24sIFNob3VsZENsZWFyRmlyc3Q6Olllcyk7Ci19Ci0KLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjbGVhckluTWVtb3J5KCkKLXsKLSAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigp
OwotICAgIG1fb3BlcmF0aW5nRGF0ZXMuY2xlYXIoKTsKLQotICAgIHVwZGF0ZUNvb2tpZVBhcnRp
dGlvbmluZ0ZvckRvbWFpbnMoeyB9LCB7IH0sIFNob3VsZENsZWFyRmlyc3Q6Olllcyk7Ci19Ci0K
LXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXJnZVN0YXRpc3RpY3MoVmVjdG9y
PFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgc3RhdGlzdGljcykKLXsKLSAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKLSAgICBmb3IgKGF1dG8mIHN0YXRpc3RpYyA6IHN0YXRpc3RpY3Mp
IHsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbnN1cmUo
c3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbiwgWyZzdGF0aXN0aWNdIHsKLSAgICAgICAgICAgIHJl
dHVybiBXVEZNb3ZlKHN0YXRpc3RpYyk7Ci0gICAgICAgIH0pOwotICAgICAgICBpZiAoIXJlc3Vs
dC5pc05ld0VudHJ5KQotICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tZXJnZShz
dGF0aXN0aWMpOwotICAgIH0KLX0KLQotaW5saW5lIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpzaG91bGRQYXJ0aXRpb25Db29raWVzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmIHN0YXRpc3RpYykgY29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGlzdGljLmlzUHJldmFsZW50
UmVzb3VyY2UgJiYgKCFzdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uIHx8IFdhbGxUaW1lOjpu
b3coKSA+IHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSArIG1fdGltZVRv
TGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUpOwotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCkKLXsKLSAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKLQotICAgIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb1JlbW92ZTsKLSAg
ICBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9BZGQ7Ci0gICAgZm9yIChhdXRvJiByZXNvdXJjZVN0
YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGJv
b2wgc2hvdWxkUGFydGl0aW9uID0gc2hvdWxkUGFydGl0aW9uQ29va2llcyhyZXNvdXJjZVN0YXRp
c3RpYyk7Ci0gICAgICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5pc01hcmtlZEZvckNvb2tpZVBh
cnRpdGlvbmluZyAmJiAhc2hvdWxkUGFydGl0aW9uKSB7Ci0gICAgICAgICAgICByZXNvdXJjZVN0
YXRpc3RpYy5pc01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZyA9IGZhbHNlOwotICAgICAgICAg
ICAgZG9tYWluc1RvUmVtb3ZlLmFwcGVuZChyZXNvdXJjZVN0YXRpc3RpYy5oaWdoTGV2ZWxEb21h
aW4pOwotICAgICAgICB9IGVsc2UgaWYgKCFyZXNvdXJjZVN0YXRpc3RpYy5pc01hcmtlZEZvckNv
b2tpZVBhcnRpdGlvbmluZyAmJiBzaG91bGRQYXJ0aXRpb24pIHsKLSAgICAgICAgICAgIHJlc291
cmNlU3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nID0gdHJ1ZTsKLSAgICAg
ICAgICAgIGRvbWFpbnNUb0FkZC5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9t
YWluKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChkb21haW5zVG9SZW1vdmUuaXNFbXB0
eSgpICYmIGRvbWFpbnNUb0FkZC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBkb21haW5zVG9SZW1vdmUgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46
OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwgZG9tYWluc1RvQWRkID0gQ3Jvc3NUaHJlYWRDb3BpZXI8
VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb0FkZCldICgpIHsKLSAgICAgICAgbV91cGRh
dGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRv
bWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdDo6Tm8pOwotICAgIH0pOwotfQotCi12b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9t
YWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3Qp
Ci17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgaWYgKGRvbWFpbnNUb1Jl
bW92ZS5pc0VtcHR5KCkgJiYgZG9tYWluc1RvQWRkLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2hvdWxkQ2xlYXJG
aXJzdCwgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9SZW1vdmUgPSBD
cm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwg
ZG9tYWluc1RvQWRkID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRv
bWFpbnNUb0FkZCldICgpIHsKLSAgICAgICAgbV91cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JE
b21haW5zSGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgc2hvdWxkQ2xlYXJG
aXJzdCk7Ci0gICAgfSk7Ci0gICAgCi0gICAgaWYgKHNob3VsZENsZWFyRmlyc3QgPT0gU2hvdWxk
Q2xlYXJGaXJzdDo6WWVzKSB7Ci0gICAgICAgIGZvciAoYXV0byYgcmVzb3VyY2VTdGF0aXN0aWMg
OiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkKLSAgICAgICAgICAgIHJlc291cmNl
U3RhdGlzdGljLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9uaW5nID0gZmFsc2U7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zVG9SZW1vdmUpCi0gICAg
ICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGRvbWFpbiku
aXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBmb3Ig
KGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb0FkZCkKLSAgICAgICAgZW5zdXJlUmVzb3VyY2VTdGF0
aXN0aWNzRm9yUHJpbWFyeURvbWFpbihkb21haW4pLmlzTWFya2VkRm9yQ29va2llUGFydGl0aW9u
aW5nID0gdHJ1ZTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBzZWNvbmRzKQot
ewotICAgIEFTU0VSVCghc2Vjb25kcyB8fCBzZWNvbmRzLnZhbHVlKCkgPj0gMF9zKTsKLSAgICBt
X3RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24gPSBzZWNvbmRzOwotfQotCi12b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUoU2Vj
b25kcyBzZWNvbmRzKQotewotICAgIEFTU0VSVChzZWNvbmRzID49IDBfcyk7Ci0gICAgbV90aW1l
VG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSA9IHNlY29uZHM7Ci19Ci0KLXZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyBzZWNvbmRz
KQotewotICAgIEFTU0VSVChzZWNvbmRzID49IDBfcyk7Ci0gICAgbV9ncmFuZGZhdGhlcmluZ1Rp
bWUgPSBzZWNvbmRzOwotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJv
Y2Vzc1N0YXRpc3RpY3MoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmKT4mIHByb2Nlc3NGdW5jdGlvbikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBmb3IgKGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAudmFsdWVzKCkpCi0gICAgICAgIHByb2Nlc3NGdW5jdGlvbihyZXNvdXJjZVN0YXRp
c3RpYyk7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzU3Rh
dGlzdGljcyhjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmKT4mIHByb2Nlc3NGdW5jdGlvbikgY29uc3QKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKLSAgICBmb3IgKGF1dG8mIHJlc291cmNlU3RhdGlzdGljIDogbV9yZXNvdXJj
ZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpCi0gICAgICAgIHByb2Nlc3NGdW5jdGlvbihyZXNvdXJj
ZVN0YXRpc3RpYyk7Ci19Ci0KLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNI
YWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYg
cmVzb3VyY2VTdGF0aXN0aWMpIGNvbnN0Ci17Ci0gICAgaWYgKCFyZXNvdXJjZVN0YXRpc3RpYy5o
YWRVc2VySW50ZXJhY3Rpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChoYXNT
dGF0aXN0aWNzRXhwaXJlZChyZXNvdXJjZVN0YXRpc3RpYykpIHsKLSAgICAgICAgLy8gRHJvcCBw
cml2YWN5IHNlbnNpdGl2ZSBkYXRhIGJlY2F1c2Ugd2Ugbm8gbG9uZ2VyIG5lZWQgaXQuCi0gICAg
ICAgIC8vIFNldCB0aW1lc3RhbXAgdG8gMCBzbyB0aGF0IHN0YXRpc3RpY3MgbWVyZ2Ugd2lsbCBr
bm93Ci0gICAgICAgIC8vIGl0IGhhcyBiZWVuIHJlc2V0IGFzIG9wcG9zZWQgdG8gaXRzIGRlZmF1
bHQgLTEuCi0gICAgICAgIHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rp
b25UaW1lID0geyB9OwotICAgICAgICByZXNvdXJjZVN0YXRpc3RpYy5oYWRVc2VySW50ZXJhY3Rp
b24gPSBmYWxzZTsKLQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCkKLXsK
LSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGJvb2wgc2hvdWxkQ2hlY2tG
b3JHcmFuZGZhdGhlcmluZyA9IG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcCA+IFdhbGxU
aW1lOjpub3coKTsKLSAgICBib29sIHNob3VsZENsZWFyR3JhbmRmYXRoZXJpbmcgPSAhc2hvdWxk
Q2hlY2tGb3JHcmFuZGZhdGhlcmluZyAmJiBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXA7
Ci0KLSAgICBpZiAoc2hvdWxkQ2xlYXJHcmFuZGZhdGhlcmluZykKLSAgICAgICAgbV9lbmRPZkdy
YW5kZmF0aGVyaW5nVGltZXN0YW1wID0geyB9OwotCi0gICAgVmVjdG9yPFN0cmluZz4gcHJldmFs
ZW50UmVzb3VyY2VzOwotICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHN0YXRpc3RpYy5pc1ByZXZhbGVudFJl
c291cmNlICYmICFoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24oc3RhdGlzdGlj
KSAmJiAoIXNob3VsZENoZWNrRm9yR3JhbmRmYXRoZXJpbmcgfHwgIXN0YXRpc3RpYy5ncmFuZGZh
dGhlcmVkKSkKLSAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNlcy5hcHBlbmQoc3RhdGlzdGlj
LmhpZ2hMZXZlbERvbWFpbik7Ci0KLSAgICAgICAgaWYgKHNob3VsZENsZWFyR3JhbmRmYXRoZXJp
bmcgJiYgc3RhdGlzdGljLmdyYW5kZmF0aGVyZWQpCi0gICAgICAgICAgICBzdGF0aXN0aWMuZ3Jh
bmRmYXRoZXJlZCA9IGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiBwcmV2YWxlbnRSZXNvdXJj
ZXM7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVTdGF0aXN0
aWNzRm9yUmVtb3ZlZERhdGFSZWNvcmRzKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgcHJldmFsZW50
UmVzb3VyY2VEb21haW5zKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
IGZvciAoYXV0byYgcHJldmFsZW50UmVzb3VyY2VEb21haW4gOiBwcmV2YWxlbnRSZXNvdXJjZURv
bWFpbnMpIHsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbihwcmV2YWxlbnRSZXNvdXJjZURvbWFpbik7Ci0gICAgICAgICsr
c3RhdGlzdGljLmRhdGFSZWNvcmRzUmVtb3ZlZDsKLSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpoYW5kbGVGcmVzaFN0YXJ0V2l0aEVtcHR5T3JOb1N0b3JlKEhh
c2hTZXQ8U3RyaW5nPiYmIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9HcmFuZGZhdGhl
cikKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBmb3IgKGF1dG8mIHRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW4gOiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
c1RvR3JhbmRmYXRoZXIpIHsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljID0gZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
KTsKLSAgICAgICAgc3RhdGlzdGljLmdyYW5kZmF0aGVyZWQgPSB0cnVlOwotICAgIH0KLSAgICBt
X2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAgPSBXYWxsVGltZTo6bm93KCkgKyBtX2dyYW5k
ZmF0aGVyaW5nVGltZTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omlu
Y2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCkKLXsKLSAgICBpZiAoIW1fb3Bl
cmF0aW5nRGF0ZXMuaXNFbXB0eSgpICYmIChXYWxsVGltZTo6bm93KCkgLSBtX29wZXJhdGluZ0Rh
dGVzLmxhc3QoKSA8IDI0X2gpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB3aGlsZSAobV9vcGVy
YXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3cpCi0gICAgICAgIG1fb3Bl
cmF0aW5nRGF0ZXMucmVtb3ZlRmlyc3QoKTsKLQotICAgIG1fb3BlcmF0aW5nRGF0ZXMuYXBwZW5k
KFdhbGxUaW1lOjpub3coKSk7Ci19Ci0gICAgCi1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6aGFzU3RhdGlzdGljc0V4cGlyZWQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYg
cmVzb3VyY2VTdGF0aXN0aWMpIGNvbnN0Ci17Ci0gICAgaWYgKG1fb3BlcmF0aW5nRGF0ZXMuc2l6
ZSgpID49IG9wZXJhdGluZ0RhdGVzV2luZG93KSB7Ci0gICAgICAgIGlmIChyZXNvdXJjZVN0YXRp
c3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA8IG1fb3BlcmF0aW5nRGF0ZXMuZmly
c3QoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIElmIHdlIGRv
bid0IG1lZXQgdGhlIHJlYWwgY3JpdGVyaWEgZm9yIGFuIGV4cGlyZWQgc3RhdGlzdGljLCBjaGVj
ayB0aGUgdXNlcgotICAgIC8vIHNldHRpbmcgZm9yIGEgdGlnaHRlciByZXN0cmljdGlvbiAobWFp
bmx5IGZvciB0ZXN0aW5nKS4KLSAgICBpZiAobV90aW1lVG9MaXZlVXNlckludGVyYWN0aW9uKSB7
Ci0gICAgICAgIGlmIChXYWxsVGltZTo6bm93KCkgPiByZXNvdXJjZVN0YXRpc3RpYy5tb3N0UmVj
ZW50VXNlckludGVyYWN0aW9uVGltZSArIG1fdGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbi52YWx1
ZSgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBm
YWxzZTsKLX0KLSAgICAKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
dG9yYWdlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDFiMWUyMDJiYTQ2MDBmZjc5ZmU1NGNlNjQzMzQ2MGFhNmI1ZjQz
ZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3Rm
L0RlcXVlLmg+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNU
aW1lLmg+Ci0jaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEtleWVkRGVjb2RlcjsKLWNs
YXNzIEtleWVkRW5jb2RlcjsKLXN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwotfQotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotZW51bSBjbGFzcyBTaG91bGRDbGVhckZpcnN0OwotCi0vLyBG
SVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IGNvbnNpZGVyIG1lcmdpbmcgdGhpcyB3aXRoIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS4KLWNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU+IHsKLXB1YmxpYzoKLSAgICB1c2luZyBVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JE
b21haW5zSGFuZGxlciA9IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBTaG91
bGRDbGVhckZpcnN0KT47Ci0gICAgc3RhdGljIFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU+IGNyZWF0ZShVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmKTsK
LQotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpLZXllZEVuY29kZXI+IGNyZWF0ZUVuY29k
ZXJGcm9tRGF0YSgpIGNvbnN0OwotICAgIHZvaWQgcG9wdWxhdGVGcm9tRGVjb2RlcihXZWJDb3Jl
OjpLZXllZERlY29kZXImKTsKLQotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsgfQotICAgIHZvaWQgY2xlYXJJbk1lbW9y
eSgpOwotCi0gICAgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgZW5zdXJlUmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJpbmcmKTsKLQotICAgIGJvb2wg
aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBib29sIGlzR3Jh
bmRGYXRoZXJlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBib29sIGhhc0hhZFJlY2VudFVz
ZXJJbnRlcmFjdGlvbihjb25zdCBTdHJpbmcmKTsKLSAgICAKLSAgICB2b2lkIG1lcmdlU3RhdGlz
dGljcyhWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7Ci0KLSAgICB2
b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oc3RkOjpvcHRpb25hbDxTZWNvbmRzPik7
Ci0gICAgdm9pZCBzZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShTZWNvbmRzKTsKLSAg
ICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzKTsKLQotICAgIHZvaWQgdXBkYXRl
Q29va2llUGFydGl0aW9uaW5nKCk7Ci0gICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdG
b3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3QpOwotCi0gICAgdm9p
ZCBwcm9jZXNzU3RhdGlzdGljcyhjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3MmKT4mKTsKLSAgICB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYpPiYpIGNvbnN0OwotCi0gICAgVmVjdG9yPFN0cmluZz4gdG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbnNUb1JlbW92ZVdlYnNpdGVEYXRhRm9yKCk7Ci0gICAgdm9pZCB1cGRhdGVTdGF0
aXN0aWNzRm9yUmVtb3ZlZERhdGFSZWNvcmRzKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgcHJldmFs
ZW50UmVzb3VyY2VEb21haW5zKTsKLQotICAgIHZvaWQgaGFuZGxlRnJlc2hTdGFydFdpdGhFbXB0
eU9yTm9TdG9yZShIYXNoU2V0PFN0cmluZz4mJiB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
c1RvR3JhbmRmYXRoZXIpOwotICAgIHZvaWQgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZO
ZWNlc3NhcnkoKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUoVXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXImJik7Ci0K
LSAgICBib29sIHNob3VsZFBhcnRpdGlvbkNvb2tpZXMoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYpIGNvbnN0OwotICAgIGJvb2wgaGFzU3RhdGlzdGljc0V4cGlyZWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpIGNvbnN0OwotICAgIGJvb2wgaGFz
SGFkVW5leHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9uKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3MmKSBjb25zdDsKLQotICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKLSAgICBEZXF1ZTxXVEY6
OldhbGxUaW1lPiBtX29wZXJhdGluZ0RhdGVzOwotCi0gICAgVXBkYXRlQ29va2llUGFydGl0aW9u
aW5nRm9yRG9tYWluc0hhbmRsZXIgbV91cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5z
SGFuZGxlcjsKLQotICAgIHN0ZDo6b3B0aW9uYWw8U2Vjb25kcz4gbV90aW1lVG9MaXZlVXNlcklu
dGVyYWN0aW9uOwotICAgIFNlY29uZHMgbV90aW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZSB7
IDI0X2ggfTsKLSAgICBTZWNvbmRzIG1fZ3JhbmRmYXRoZXJpbmdUaW1lIHsgMV9oIH07Ci0KLSAg
ICBXYWxsVGltZSBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXA7Ci19OwotICAgIAotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGY1OGM1YjhiZjJl
N2RiNmRhNDZhNTFhMDgwM2I3MjkyYWE4MDljMTIuLjI4Y2JiMGVkZmUxYWE2ZDJlOWZiYzAzMDJk
ZWQyMDc4ZjkyMzVhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNyw3ICsyNyw2IEBA
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIK
QEAgLTUwLDYgKzQ5LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY29uc3RleHByIFNlY29uZHMgbWluaW11bVN0YXRpc3RpY3NGaWxlV3JpdGVJbnRl
cnZhbCB7IDVfbWluIH07Citjb25zdGV4cHIgdW5zaWduZWQgb3BlcmF0aW5nRGF0ZXNXaW5kb3cg
eyAzMCB9OworY29uc3RleHByIHVuc2lnbmVkIHN0YXRpc3RpY3NNb2RlbFZlcnNpb24geyA2IH07
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBpbmxpbmUgU3RyaW5nIHByaW1hcnlEb21h
aW4oY29uc3QgVCYgdmFsdWUpCiB7CkBAIC04MSw4ICs4Miw4IEBAIHN0YXRpYyBjb25zdCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiYgZGF0YVR5cGVzVG9SZW1vdmUoKQogfQogCiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShj
b25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFVwZGF0ZUNvb2tp
ZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyJiYgdXBkYXRlQ29va2llUGFydGl0aW9uaW5n
Rm9yRG9tYWluc0hhbmRsZXIpCi0gICAgOiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShXVEZNb3ZlKHVwZGF0ZUNvb2tpZVBh
cnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKSkpCi0gICAgLCBtX3N0YXRpc3RpY3NRdWV1ZShX
b3JrUXVldWU6OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3Mg
RGF0YSBRdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRp
bGl0eSkpCisgICAgOiBtX3N0YXRpc3RpY3NRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdvcmtRdWV1ZTo6
VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpCisgICAgLCBtX3VwZGF0ZUNv
b2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyKFdURk1vdmUodXBkYXRlQ29va2llUGFy
dGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIpKQogICAgICwgbV9zdGF0aXN0aWNzU3RvcmFnZVBh
dGgocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKICAgICAsIG1fZGFpbHlUYXNrc1Rp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cGVyZm9ybURhaWx5VGFza3MpCiB7CkBAIC05OCw3ICs5OSw3IEBAIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0
cmluZyYgcmVzCiAgICAgfSk7CiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoQWZ0ZXIo
NV9zLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIGlm
IChtX3Nob3VsZFN1Ym1pdFRlbGVtZXRyeSkKLSAgICAgICAgICAgIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NUZWxlbWV0cnk6OmNhbGN1bGF0ZUFuZFN1Ym1pdChjb3JlU3RvcmUoKSk7CisgICAg
ICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpjYWxjdWxhdGVBbmRT
dWJtaXQoKnRoaXMpOwogICAgIH0pOwogCiAgICAgbV9kYWlseVRhc2tzVGltZXIuc3RhcnRSZXBl
YXRpbmcoMjRfaCk7CkBAIC0xMDgsMTIgKzEwOSw2IEBAIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6fldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpCiB7CiB9CiAgICAgCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xhc3NpZnlSZXNvdXJjZShSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykKLXsKLSAgICBpZiAoIXJlc291
cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzQ2xhc3NpZmllci5oYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcyhyZXNvdXJj
ZVN0YXRpc3RpYykpCi0gICAgICAgIHJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3Vy
Y2UgPSB0cnVlOwotfQotICAgIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlbW92ZURhdGFSZWNvcmRzKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTEyMSw3ICsxMTYsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVtb3ZlRGF0YVJlY29yZHMoKQogICAgIGlmICghc2hvdWxkUmVtb3ZlRGF0YVJlY29yZHMoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnMgPSBj
b3JlU3RvcmUoKS50b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURh
dGFGb3IoKTsKKyAgICBhdXRvIHByZXZhbGVudFJlc291cmNlRG9tYWlucyA9IHRvcFByaXZhdGVs
eUNvbnRyb2xsZWREb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpOwogICAgIGlmIChwcmV2
YWxlbnRSZXNvdXJjZURvbWFpbnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCkBA
IC0xMzAsNyArMTI1LDEwIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZW1vdmVEYXRhUmVjb3JkcygpCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcmV2YWxl
bnRSZXNvdXJjZURvbWFpbnMgPSBDcm9zc1RocmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNv
cHkocHJldmFsZW50UmVzb3VyY2VEb21haW5zKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgV2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVX
ZWJzaXRlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zSW5BbGxQZXJzaXN0ZW50
RGF0YVN0b3JlcyhkYXRhVHlwZXNUb1JlbW92ZSgpLCBXVEZNb3ZlKHByZXZhbGVudFJlc291cmNl
RG9tYWlucyksIG1fc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRvcERvbWFpbnMgPSBDcm9zc1RocmVhZENvcGll
cjxIYXNoU2V0PFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNXaXRoRGVsZXRlZFdlYnNpdGVEYXRhKV0g
KCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29yZVN0b3JlKCkudXBkYXRlU3RhdGlzdGlj
c0ZvclJlbW92ZWREYXRhUmVjb3Jkcyh0b3BEb21haW5zKTsKKyAgICAgICAgICAgICAgICBmb3Ig
KGF1dG8mIHByZXZhbGVudFJlc291cmNlRG9tYWluIDogdG9wRG9tYWlucykgeworICAgICAgICAg
ICAgICAgICAgICBhdXRvJiBzdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKHByZXZhbGVudFJlc291cmNlRG9tYWluKTsKKyAgICAgICAgICAgICAgICAg
ICAgKytzdGF0aXN0aWMuZGF0YVJlY29yZHNSZW1vdmVkOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBzZXREYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZChmYWxzZSk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfSk7CkBAIC0xNDEsOSArMTM5LDEwIEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCkK
IHsKICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKCkgewogICAgICAgICBpZiAobV9zaG91bGRDbGFzc2lmeVJlc291
cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCkgewotICAgICAgICAgICAgY29yZVN0b3JlKCku
cHJvY2Vzc1N0YXRpc3RpY3MoW3RoaXNdIChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJj
ZVN0YXRpc3RpYykgewotICAgICAgICAgICAgICAgIGNsYXNzaWZ5UmVzb3VyY2UocmVzb3VyY2VT
dGF0aXN0aWMpOwotICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHJlc291
cmNlU3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFsdWVzKCkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIXJlc291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oYXNQcmV2YWxlbnRSZXNvdXJjZUNo
YXJhY3RlcmlzdGljcyhyZXNvdXJjZVN0YXRpc3RpYykpCisgICAgICAgICAgICAgICAgICAgIHJl
c291cmNlU3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgICAgIHJlbW92ZURhdGFSZWNvcmRzKCk7CiAgICAgICAgIApAQCAt
MTYxLDkgKzE2MCw5IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yCiB7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBjb3JlU3RvcmUoKS5tZXJnZVN0YXRpc3RpY3MoV1RG
TW92ZShvcmlnaW5zKSk7CisgICAgbWVyZ2VTdGF0aXN0aWNzKFdURk1vdmUob3JpZ2lucykpOwog
ICAgIC8vIEZpcmUgYmVmb3JlIHByb2Nlc3Npbmcgc3RhdGlzdGljcyB0byBwcm9wYWdhdGUgdXNl
ciBpbnRlcmFjdGlvbiBhcyBmYXN0IGFzIHBvc3NpYmxlIHRvIHRoZSBuZXR3b3JrIHByb2Nlc3Mu
Ci0gICAgY29yZVN0b3JlKCkudXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CisgICAgdXBkYXRl
Q29va2llUGFydGl0aW9uaW5nKCk7CiAgICAgcHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jk
cygpOwogfQogCkBAIC0xNzQsNyArMTczLDExIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoKQogICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgV2ViUHJvY2Vzc1Byb3h5Ojp0b3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YShkYXRhVHlwZXNUb1JlbW92ZSgpLCBtX3Nob3VsZE5v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQsIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0gKEhhc2hTZXQ8U3RyaW5nPiYmIHRvcFByaXZhdGVs
eUNvbnRyb2xsZWREb21haW5zV2l0aFdlYnNpdGVEYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIHRvcERvbWFpbnMgPSBDcm9zc1RocmVhZENvcGllcjxIYXNoU2V0
PFN0cmluZz4+Ojpjb3B5KHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdlYnNpdGVE
YXRhKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgY29yZVN0b3JlKCkuaGFuZGxlRnJl
c2hTdGFydFdpdGhFbXB0eU9yTm9TdG9yZShXVEZNb3ZlKHRvcERvbWFpbnMpKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKGF1dG8mIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4gOiB0b3BEb21h
aW5zKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8mIHN0YXRpc3RpYyA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFp
bik7CisgICAgICAgICAgICAgICAgICAgIHN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9lbmRPZkdyYW5kZmF0aGVyaW5n
VGltZXN0YW1wID0gV2FsbFRpbWU6Om5vdygpICsgbV9ncmFuZGZhdGhlcmluZ1RpbWU7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0yMTgsMTUgKzIyMSwxNSBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGlza0lmTmVl
ZGVkKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvcmVTdG9yZSgpLmNsZWFySW5N
ZW1vcnkoKTsKLSAgICBjb3JlU3RvcmUoKS5wb3B1bGF0ZUZyb21EZWNvZGVyKCpkZWNvZGVyKTsK
KyAgICBjbGVhckluTWVtb3J5KCk7CisgICAgcG9wdWxhdGVGcm9tRGVjb2RlcigqZGVjb2Rlcik7
CiAKICAgICBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNUaW1lID0gcmVhZFRpbWU7CiAKLSAgICBp
ZiAoY29yZVN0b3JlKCkuaXNFbXB0eSgpKQorICAgIGlmIChtX3Jlc291cmNlU3RhdGlzdGljc01h
cC5pc0VtcHR5KCkpCiAgICAgICAgIGdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgpOwog
Ci0gICAgY29yZVN0b3JlKCkuaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3Nhcnko
KTsKKyAgICBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwogfQogICAg
IAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZnJlc2hGcm9tRGlzaygp
CkBAIC0yNDksNyArMjUyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlZnJlc2hGcm9tRGlzaygpCiAgICAgaWYgKCFkZWNvZGVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBjb3JlU3RvcmUoKS5wb3B1bGF0ZUZyb21EZWNvZGVyKCpkZWNvZGVyKTsKKyAgICBwb3B1
bGF0ZUZyb21EZWNvZGVyKCpkZWNvZGVyKTsKICAgICBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNU
aW1lID0gcmVhZFRpbWU7CiB9CiAgICAgCkBAIC0yOTksMTAgKzMwMiwyNiBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVTdG9yZVRvRGlzaygpCiAKICAgICBzeW5j
V2l0aEV4aXN0aW5nU3RhdGlzdGljc1N0b3JhZ2VJZk5lZWRlZCgpOwogCi0gICAgYXV0byBlbmNv
ZGVyID0gY29yZVN0b3JlKCkuY3JlYXRlRW5jb2RlckZyb21EYXRhKCk7CisgICAgYXV0byBlbmNv
ZGVyID0gY3JlYXRlRW5jb2RlckZyb21EYXRhKCk7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmF3RGF0YSA9IGVuY29kZXItPmZpbmlzaEVuY29kaW5nKCk7CisgICAgaWYgKCFyYXdEYXRhKQor
ICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgcmVzb3VyY2VMb2cgPSByZXNvdXJjZUxvZ0Zp
bGVQYXRoKCk7Ci0gICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLCByZXNvdXJjZUxvZyk7
CisgICAgYXV0byBzdGF0aXN0aWNzU3RvcmFnZVBhdGggPSB0aGlzLT5zdGF0aXN0aWNzU3RvcmFn
ZVBhdGgoKTsKKyAgICBpZiAoIXN0YXRpc3RpY3NTdG9yYWdlUGF0aC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgbWFrZUFsbERpcmVjdG9yaWVzKHN0YXRpc3RpY3NTdG9yYWdlUGF0aCk7CisgICAgICAg
IHBsYXRmb3JtRXhjbHVkZUZyb21CYWNrdXAoKTsKKyAgICB9CisKKyAgICBhdXRvIGhhbmRsZSA9
IG9wZW5BbmRMb2NrRmlsZShyZXNvdXJjZUxvZ0ZpbGVQYXRoKCksIE9wZW5Gb3JXcml0ZSk7Cisg
ICAgaWYgKGhhbmRsZSA9PSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IHdyaXRlVG9GaWxlKGhhbmRsZSwgcmF3
RGF0YS0+ZGF0YSgpLCByYXdEYXRhLT5zaXplKCkpOworICAgIHVubG9ja0FuZENsb3NlRmlsZSho
YW5kbGUpOworCisgICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90Pihy
YXdEYXRhLT5zaXplKCkpKQorICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOiBXZSBvbmx5IHdyb3Rl
ICVkIG91dCBvZiAlZCBieXRlcyB0byBkaXNrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdyaXR0
ZW5CeXRlcyksIHJhd0RhdGEtPnNpemUoKSk7CiAKICAgICBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5
bmNUaW1lID0gV2FsbFRpbWU6Om5vdygpOwogICAgIG1fbGFzdFN0YXRpc3RpY3NXcml0ZVRpbWUg
PSBNb25vdG9uaWNUaW1lOjpub3coKTsKQEAgLTMzMCwzMSArMzQ5LDYgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlT3JXcml0ZVN0b3JlVG9EaXNrKCkKICAg
ICB3cml0ZVN0b3JlVG9EaXNrKCk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjp3cml0ZUVuY29kZXJUb0Rpc2soS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBT
dHJpbmcmIHBhdGgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0g
ICAgCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmF3RGF0YSA9IGVuY29kZXIuZmluaXNoRW5j
b2RpbmcoKTsKLSAgICBpZiAoIXJhd0RhdGEpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8g
c3RhdGlzdGljc1N0b3JhZ2VQYXRoID0gdGhpcy0+c3RhdGlzdGljc1N0b3JhZ2VQYXRoKCk7Ci0g
ICAgaWYgKCFzdGF0aXN0aWNzU3RvcmFnZVBhdGguaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1ha2VB
bGxEaXJlY3RvcmllcyhzdGF0aXN0aWNzU3RvcmFnZVBhdGgpOwotICAgICAgICBwbGF0Zm9ybUV4
Y2x1ZGVGcm9tQmFja3VwKCk7Ci0gICAgfQotCi0gICAgYXV0byBoYW5kbGUgPSBvcGVuQW5kTG9j
a0ZpbGUocGF0aCwgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAoaGFuZGxlID09IGludmFsaWRQbGF0
Zm9ybUZpbGVIYW5kbGUpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpbnQ2NF90IHdyaXR0
ZW5CeXRlcyA9IHdyaXRlVG9GaWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0YSgpLCByYXdEYXRhLT5z
aXplKCkpOwotICAgIHVubG9ja0FuZENsb3NlRmlsZShoYW5kbGUpOwotCi0gICAgaWYgKHdyaXR0
ZW5CeXRlcyAhPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihyYXdEYXRhLT5zaXplKCkpKQotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAiV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOiBXZSBvbmx5IHdyb3RlICVkIG91dCBvZiAlZCBieXRlcyB0byBk
aXNrIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHdyaXR0ZW5CeXRlcyksIHJhd0RhdGEtPnNpemUo
KSk7Ci19Ci0KIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWxldGVTdG9y
ZUZyb21EaXNrKCkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTM4NSw3
ICszNzksNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3RhcnRNb25p
dG9yaW5nU3RhdGlzdGljc1N0b3JhZ2UoKQogICAgICAgICAgICAgcmVmcmVzaEZyb21EaXNrKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBGaWxlTW9uaXRvcjo6RmlsZUNoYW5n
ZVR5cGU6OlJlbW92YWw6Ci0gICAgICAgICAgICBjb3JlU3RvcmUoKS5jbGVhckluTWVtb3J5KCk7
CisgICAgICAgICAgICBjbGVhckluTWVtb3J5KCk7CiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NT
dG9yYWdlTW9uaXRvciA9IG51bGxwdHI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtNDUxLDcgKzQ0NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpw
ZXJmb3JtRGFpbHlUYXNrcygpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAot
ICAgIGNvcmVTdG9yZSgpLmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7
CisgICAgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKTsKICAgICBpZiAo
bV9zaG91bGRTdWJtaXRUZWxlbWV0cnkpCiAgICAgICAgIHN1Ym1pdFRlbGVtZXRyeSgpOwogfQpA
QCAtNDYwLDcgKzQ1NCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
dWJtaXRUZWxlbWV0cnkoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
bV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyldIHsKLSAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6
Y2FsY3VsYXRlQW5kU3VibWl0KGNvcmVTdG9yZSgpKTsKKyAgICAgICAgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeTo6Y2FsY3VsYXRlQW5kU3VibWl0KCp0aGlzKTsKICAgICB9KTsK
IH0KIApAQCAtNDcwLDExICs0NjQsMTEgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHVy
bCkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9y
ZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFp
blN0cmluZyk7CisgICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0YXRp
c3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW5TdHJpbmcpOwogICAgICAgICBzdGF0
aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9IHRydWU7CiAgICAgICAgIHN0YXRpc3RpY3MubW9z
dFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSBXYWxsVGltZTo6bm93KCk7CiAKLSAgICAgICAg
Y29yZVN0b3JlKCkudXBkYXRlQ29va2llUGFydGl0aW9uaW5nRm9yRG9tYWlucyh7IHByaW1hcnlE
b21haW5TdHJpbmcgfSwgeyB9LCBTaG91bGRDbGVhckZpcnN0OjpObyk7CisgICAgICAgIHVwZGF0
ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoeyBwcmltYXJ5RG9tYWluU3RyaW5nIH0sIHsg
fSwgU2hvdWxkQ2xlYXJGaXJzdDo6Tm8pOwogICAgIH0pOwogfQogCkBAIC00ODQsNyArNDc4LDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyVXNlckludGVyYWN0
aW9uKGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3N0YXRpc3RpY3NR
dWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdXJs
ID0gdXJsLmlzb2xhdGVkQ29weSgpXSB7Ci0gICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBjb3Jl
U3RvcmUoKS5lbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlE
b21haW4odXJsKSk7CisgICAgICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4odXJsKSk7CiAgICAgICAgIHN0
YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uID0gZmFsc2U7CiAgICAgICAgIHN0YXRpc3RpY3Mu
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgPSB7IH07CiAgICAgfSk7CkBAIC00OTgsNyAr
NDkyLDggQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc0hhZFVzZXJJ
bnRlcmFjdGlvbihjb25zdCBVUkwmIHVybCwgV1RGOjoKICAgICB9CiAKICAgICBtX3N0YXRpc3Rp
Y3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dXJsID0gdXJsLmlzb2xhdGVkQ29weSgpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYm9vbCBoYWRVc2VySW50ZXJh
Y3Rpb24gPSBjb3JlU3RvcmUoKS5oYXNIYWRSZWNlbnRVc2VySW50ZXJhY3Rpb24ocHJpbWFyeURv
bWFpbih1cmwpKTsKKyAgICAgICAgYXV0byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0aXN0aWNz
TWFwLmZpbmQocHJpbWFyeURvbWFpbih1cmwpKTsKKyAgICAgICAgYm9vbCBoYWRVc2VySW50ZXJh
Y3Rpb24gPSBtYXBFbnRyeSA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSA/IGZhbHNl
OiBoYXNIYWRVbmV4cGlyZWRSZWNlbnRVc2VySW50ZXJhY3Rpb24obWFwRW50cnktPnZhbHVlKTsK
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtoYWRVc2VySW50ZXJhY3Rpb24sIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGhhZFVzZXJJbnRlcmFjdGlvbik7CiAgICAgICAgIH0pOwpA
QCAtNTExLDcgKzUwNiw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpz
ZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHVybCA9IHVybC5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBhdXRvJiBz
dGF0aXN0aWNzID0gY29yZVN0b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbihwcmltYXJ5RG9tYWluKHVybCkpOworICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0g
ZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKHVy
bCkpOwogICAgICAgICBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2UgPSB0cnVlOwogICAg
IH0pOwogfQpAQCAtNTI0LDkgKzUxOSwxMCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmIHVybCwgV1RGOjpGdQogICAg
IH0KIAogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewotICAgICAg
ICBib29sIHByZXZhbGVudFJlc291cmNlID0gY29yZVN0b3JlKCkuaXNQcmV2YWxlbnRSZXNvdXJj
ZShwcmltYXJ5RG9tYWluKHVybCkpOwotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3ByZXZhbGVudFJlc291cmNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihwcmV2YWxlbnRSZXNv
dXJjZSk7CisgICAgICAgIGF1dG8gbWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5m
aW5kKHByaW1hcnlEb21haW4odXJsKSk7CisgICAgICAgIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJj
ZSA9IG1hcEVudHJ5ID09IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpID8gZmFsc2UgOiBt
YXBFbnRyeS0+dmFsdWUuaXNQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtpc1ByZXZhbGVudFJlc291cmNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihpc1ByZXZhbGVudFJlc291cmNlKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC01Mzcs
NyArNTMzLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFyUHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
c3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCB1cmwgPSB1cmwuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byYgc3RhdGlz
dGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21h
aW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3Vy
ZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsK
ICAgICAgICAgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlID0gZmFsc2U7CiAgICAgfSk7
CiB9CkBAIC01NDgsNyArNTQ0LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldEdyYW5kZmF0aGVyZWQoY29uc3QgVVJMJiB1cmwsIGJvb2wgdmFsdWUKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHVybCA9IHVybC5pc29sYXRlZENvcHkoKSwgdmFsdWVd
IHsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbih1cmwpKTsKKyAgICAgICAg
YXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21h
aW4ocHJpbWFyeURvbWFpbih1cmwpKTsKICAgICAgICAgc3RhdGlzdGljcy5ncmFuZGZhdGhlcmVk
ID0gdmFsdWU7CiAgICAgfSk7CiB9CkBAIC01NjEsOSArNTU3LDEwIEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjppc0dyYW5kZmF0aGVyZWQoY29uc3QgVVJMJiB1cmwsIFdU
Rjo6RnVuY3RpCiAgICAgfQogCiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIHVybCA9IHVybC5pc29sYXRlZENvcHkoKV0gKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGJvb2wgZ3JhbmRGYXRoZXJlZCA9IGNvcmVTdG9yZSgpLmlzR3JhbmRG
YXRoZXJlZChwcmltYXJ5RG9tYWluKHVybCkpOwotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2dyYW5kRmF0aGVyZWQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIHsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGdyYW5kRmF0aGVy
ZWQpOworICAgICAgICBhdXRvIG1hcEVudHJ5ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmlu
ZChwcmltYXJ5RG9tYWluKHVybCkpOworICAgICAgICBib29sIGlzR3JhbmRGYXRoZXJlZCA9IG1h
cEVudHJ5ID09IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpID8gZmFsc2UgOiBtYXBFbnRy
eS0+dmFsdWUuZ3JhbmRmYXRoZXJlZDsKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtpc0dyYW5kRmF0aGVyZWQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzR3JhbmRGYXRoZXJl
ZCk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtNTc0LDcgKzU3MSw3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW4oY29uc3QgVVJMJiBzCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc3RhdGlzdGljc1F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcmltYXJ5
VG9wRnJhbWVEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHRvcEZyYW1lKS5pc29sYXRlZENv
cHkoKSwgcHJpbWFyeVN1YkZyYW1lRG9tYWluU3RyaW5nID0gcHJpbWFyeURvbWFpbihzdWJmcmFt
ZSkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGNvcmVTdG9y
ZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YkZy
YW1lRG9tYWluU3RyaW5nKTsKKyAgICAgICAgYXV0byYgc3RhdGlzdGljcyA9IGVuc3VyZVJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeVN1YkZyYW1lRG9tYWluU3RyaW5n
KTsKICAgICAgICAgc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChw
cmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOwogICAgIH0pOwogfQpAQCAtNTg1LDcgKzU4Miw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW4oY29uc3QgVVJMCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc3Rh
dGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHRvcEZyYW1l
KS5pc29sYXRlZENvcHkoKSwgcHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5nID0gcHJpbWFy
eURvbWFpbihzdWJyZXNvdXJjZSkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgYXV0byYgc3Rh
dGlzdGljcyA9IGNvcmVTdG9yZSgpLmVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4ocHJpbWFyeVN1YnJlc291cmNlRG9tYWluU3RyaW5nKTsKKyAgICAgICAgYXV0byYgc3Rh
dGlzdGljcyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFy
eVN1YnJlc291cmNlRG9tYWluU3RyaW5nKTsKICAgICAgICAgc3RhdGlzdGljcy5zdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZChwcmltYXJ5VG9wRnJhbWVEb21haW5TdHJpbmcpOwog
ICAgIH0pOwogfQpAQCAtNTk2LDYzICs1OTMsNjUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnNldFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBVUkwmIHMK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByaW1hcnlSZWRpcmVjdERvbWFpblN0
cmluZyA9IHByaW1hcnlEb21haW4oaG9zdE5hbWVSZWRpcmVjdGVkVG8pLmlzb2xhdGVkQ29weSgp
LCBwcmltYXJ5U3VicmVzb3VyY2VEb21haW5TdHJpbmcgPSBwcmltYXJ5RG9tYWluKHN1YnJlc291
cmNlKS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gY29yZVN0
b3JlKCkuZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3Vi
cmVzb3VyY2VEb21haW5TdHJpbmcpOworICAgICAgICBhdXRvJiBzdGF0aXN0aWNzID0gZW5zdXJl
UmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5U3VicmVzb3VyY2VEb21h
aW5TdHJpbmcpOwogICAgICAgICBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG8uYWRkKHByaW1hcnlSZWRpcmVjdERvbWFpblN0cmluZyk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmco
KQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ29va2llUGFy
dGl0aW9uaW5nVXBkYXRlKCkKIHsKICAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0ZXN0
aW5nIHN5c3RlbS4gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAg
ICBjb3JlU3RvcmUoKS51cGRhdGVDb29raWVQYXJ0aXRpb25pbmcoKTsKKyAgICAgICAgdXBkYXRl
Q29va2llUGFydGl0aW9uaW5nKCk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjp1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkKK3ZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNvb2tpZVBhcnRpdGlvbmluZ1Vw
ZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRD
bGVhckZpcnN0KQogewogICAgIC8vIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRlc3Rpbmcgc3lz
dGVtLiBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZG9tYWluc1RvUmVtb3ZlID0g
Q3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNUb1JlbW92ZSks
IGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3RvcjxTdHJpbmc+Pjo6Y29weShk
b21haW5zVG9BZGQpLCBzaG91bGRDbGVhckZpcnN0XSB7Ci0gICAgICAgIGNvcmVTdG9yZSgpLnVw
ZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnMoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5z
VG9BZGQsIHNob3VsZENsZWFyRmlyc3QpOworICAgICAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25p
bmdGb3JEb21haW5zKGRvbWFpbnNUb1JlbW92ZSwgZG9tYWluc1RvQWRkLCBzaG91bGRDbGVhckZp
cnN0KTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNsZWFySW5NZW1vcnkoKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNj
aGVkdWxlQ2xlYXJJbk1lbW9yeSgpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gewotICAgICAgICBjb3JlU3RvcmUoKS5jbGVhckluTWVtb3J5KCk7Cisg
ICAgICAgIGNsZWFySW5NZW1vcnkoKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCkKK3ZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50KCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fc3RhdGlz
dGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7Ci0gICAgICAgIGNvcmVTdG9yZSgpLmNsZWFySW5NZW1vcnkoKTsKKyAgICAgICAgY2xlYXJJ
bk1lbW9yeSgpOwogICAgICAgICBkZWxldGVTdG9yZUZyb21EaXNrKCk7CiAgICAgICAgIGdyYW5k
ZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQordm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnQoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNl
KQogewogICAgIC8vIEZvciBub3csIGJlIGNvbnNlcnZhdGl2ZSBhbmQgY2xlYXIgZXZlcnl0aGlu
ZyByZWdhcmRsZXNzIG9mIG1vZGlmaWVkU2luY2UuCiAgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVk
U2luY2UpOwotICAgIGNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KCk7CisgICAgc2NoZWR1bGVD
bGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihzdGQ6Om9wdGlvbmFs
PFNlY29uZHM+IHNlY29uZHMpCiB7Ci0gICAgY29yZVN0b3JlKCkuc2V0VGltZVRvTGl2ZVVzZXJJ
bnRlcmFjdGlvbihzZWNvbmRzKTsKKyAgICBBU1NFUlQoIXNlY29uZHMgfHwgc2Vjb25kcy52YWx1
ZSgpID49IDBfcyk7CisgICAgbV90aW1lVG9MaXZlVXNlckludGVyYWN0aW9uID0gc2Vjb25kczsK
IH0KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFRpbWVUb0xpdmVD
b29raWVQYXJ0aXRpb25GcmVlKFNlY29uZHMgc2Vjb25kcykKIHsKLSAgICBjb3JlU3RvcmUoKS5z
ZXRUaW1lVG9MaXZlQ29va2llUGFydGl0aW9uRnJlZShzZWNvbmRzKTsKKyAgICBBU1NFUlQoc2Vj
b25kcyA+PSAwX3MpOworICAgIG1fdGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlvbkZyZWUgPSBzZWNv
bmRzOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0TWluaW11
bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMgc2Vjb25kcykKQEAgLTY2Myw3
ICs2NjIsOCBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0TWluaW11
bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlYwogCiB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMgc2Vjb25kcykK
IHsKLSAgICBjb3JlU3RvcmUoKS5zZXRHcmFuZGZhdGhlcmluZ1RpbWUoc2Vjb25kcyk7CisgICAg
QVNTRVJUKHNlY29uZHMgPj0gMF9zKTsKKyAgICBtX2dyYW5kZmF0aGVyaW5nVGltZSA9IHNlY29u
ZHM7CiB9CiAKIGJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzaG91bGRSZW1v
dmVEYXRhUmVjb3JkcygpIGNvbnN0CkBAIC02ODIsNSArNjgyLDIyNiBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0RGF0YVJlY29yZHNCZWluZ1JlbW92ZWQoYm9vbCB2
YWx1ZSkKICAgICBpZiAobV9kYXRhUmVjb3Jkc0JlaW5nUmVtb3ZlZCkKICAgICAgICAgbV9sYXN0
VGltZURhdGFSZWNvcmRzV2VyZVJlbW92ZWQgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIH0KKwor
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpl
bnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYgcHJp
bWFyeURvbWFpbikKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICByZXR1
cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5zdXJlKHByaW1hcnlEb21haW4sIFsmcHJpbWFy
eURvbWFpbl0geworICAgICAgICByZXR1cm4gUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwcmltYXJ5
RG9tYWluKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxL
ZXllZEVuY29kZXI+IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRW5jb2Rl
ckZyb21EYXRhKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAg
ICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICBlbmNvZGVyLT5l
bmNvZGVVSW50MzIoInZlcnNpb24iLCBzdGF0aXN0aWNzTW9kZWxWZXJzaW9uKTsKKyAgICBlbmNv
ZGVyLT5lbmNvZGVEb3VibGUoImVuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAiLCBtX2VuZE9m
R3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKwor
ICAgIGVuY29kZXItPmVuY29kZU9iamVjdHMoImJyb3dzaW5nU3RhdGlzdGljcyIsIG1fcmVzb3Vy
Y2VTdGF0aXN0aWNzTWFwLmJlZ2luKCksIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpLCBb
XShLZXllZEVuY29kZXImIGVuY29kZXJJbm5lciwgY29uc3QgYXV0byYgb3JpZ2luKSB7CisgICAg
ICAgIG9yaWdpbi52YWx1ZS5lbmNvZGUoZW5jb2RlcklubmVyKTsKKyAgICB9KTsKKworICAgIGVu
Y29kZXItPmVuY29kZU9iamVjdHMoIm9wZXJhdGluZ0RhdGVzIiwgbV9vcGVyYXRpbmdEYXRlcy5i
ZWdpbigpLCBtX29wZXJhdGluZ0RhdGVzLmVuZCgpLCBbXShLZXllZEVuY29kZXImIGVuY29kZXJJ
bm5lciwgV2FsbFRpbWUgZGF0ZSkgeworICAgICAgICBlbmNvZGVySW5uZXIuZW5jb2RlRG91Ymxl
KCJkYXRlIiwgZGF0ZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOworICAgIH0pOworCisg
ICAgcmV0dXJuIGVuY29kZXI7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpwb3B1bGF0ZUZyb21EZWNvZGVyKEtleWVkRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBpZiAoIW1fcmVzb3VyY2VTdGF0aXN0aWNz
TWFwLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdW5zaWduZWQgdmVyc2lvbk9u
RGlzazsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDMyKCJ2ZXJzaW9uIiwgdmVyc2lvbk9u
RGlzaykpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2ZXJzaW9uT25EaXNrICE9IHN0YXRp
c3RpY3NNb2RlbFZlcnNpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGRvdWJsZSBlbmRPZkdy
YW5kZmF0aGVyaW5nVGltZXN0YW1wOworICAgIGlmIChkZWNvZGVyLmRlY29kZURvdWJsZSgiZW5k
T2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcCIsIGVuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAp
KQorICAgICAgICBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAgPSBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcCk7CisgICAgZWxzZQorICAg
ICAgICBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAgPSB7IH07CisKKyAgICBWZWN0b3I8
UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gbG9hZGVkU3RhdGlzdGljczsKKyAgICBib29sIHN1Y2Nl
ZWRlZCA9IGRlY29kZXIuZGVjb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNzIiwgbG9hZGVk
U3RhdGlzdGljcywgW10oS2V5ZWREZWNvZGVyJiBkZWNvZGVySW5uZXIsIFJlc291cmNlTG9hZFN0
YXRpc3RpY3MmIHN0YXRpc3RpY3MpIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpc3RpY3MuZGVjb2Rl
KGRlY29kZXJJbm5lcik7CisgICAgfSk7CisKKyAgICBpZiAoIXN1Y2NlZWRlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgVmVjdG9yPFN0cmluZz4gcHJldmFsZW50UmVzb3VyY2VEb21haW5zV2l0
aG91dFVzZXJJbnRlcmFjdGlvbjsKKyAgICBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnNXaXRob3V0
VXNlckludGVyYWN0aW9uLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobG9hZGVkU3RhdGlzdGljcy5z
aXplKCkpOworICAgIGZvciAoYXV0byYgc3RhdGlzdGljcyA6IGxvYWRlZFN0YXRpc3RpY3MpIHsK
KyAgICAgICAgaWYgKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSAmJiAhc3RhdGlzdGlj
cy5oYWRVc2VySW50ZXJhY3Rpb24pIHsKKyAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNlRG9t
YWluc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24udW5jaGVja2VkQXBwZW5kKHN0YXRpc3RpY3MuaGln
aExldmVsRG9tYWluKTsKKyAgICAgICAgICAgIHN0YXRpc3RpY3MuaXNNYXJrZWRGb3JDb29raWVQ
YXJ0aXRpb25pbmcgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0
aWNzTWFwLmFkZChzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbiwgV1RGTW92ZShzdGF0aXN0aWNz
KSk7CisgICAgfQorCisgICAgc3VjY2VlZGVkID0gZGVjb2Rlci5kZWNvZGVPYmplY3RzKCJvcGVy
YXRpbmdEYXRlcyIsIG1fb3BlcmF0aW5nRGF0ZXMsIFtdKEtleWVkRGVjb2RlciYgZGVjb2Rlciwg
V2FsbFRpbWUmIHdhbGxUaW1lKSB7CisgICAgICAgIGRvdWJsZSB2YWx1ZTsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZURvdWJsZSgiZGF0ZSIsIHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICB3YWxsVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh2
YWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworCisgICAgaWYgKCFzdWNjZWVk
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRv
bWFpbnMoeyB9LCBwcmV2YWxlbnRSZXNvdXJjZURvbWFpbnNXaXRob3V0VXNlckludGVyYWN0aW9u
LCBTaG91bGRDbGVhckZpcnN0OjpZZXMpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y2xlYXJJbk1lbW9yeSgpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CisgICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY2xlYXIoKTsKKyAgICBtX29wZXJh
dGluZ0RhdGVzLmNsZWFyKCk7CisKKyAgICB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21h
aW5zKHsgfSwgeyB9LCBTaG91bGRDbGVhckZpcnN0OjpZZXMpOworfQorCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiYmIHN0YXRpc3RpY3MpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CisgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNzKSB7CisgICAgICAg
IGF1dG8gcmVzdWx0ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5zdXJlKHN0YXRpc3RpYy5o
aWdoTGV2ZWxEb21haW4sIFsmc3RhdGlzdGljXSB7CisgICAgICAgICAgICByZXR1cm4gV1RGTW92
ZShzdGF0aXN0aWMpOworICAgICAgICB9KTsKKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRy
eSkKKyAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUubWVyZ2Uoc3RhdGlzdGljKTsK
KyAgICB9Cit9CisKK2lubGluZSBib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2hvdWxkUGFydGl0aW9uQ29va2llcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0
aXN0aWMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291cmNl
ICYmICghc3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbiB8fCBXYWxsVGltZTo6bm93KCkgPiBz
dGF0aXN0aWMubW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgKyBtX3RpbWVUb0xpdmVDb29r
aWVQYXJ0aXRpb25GcmVlKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZygpCit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9SZW1vdmU7CisgICAgVmVj
dG9yPFN0cmluZz4gZG9tYWluc1RvQWRkOworICAgIGZvciAoYXV0byYgcmVzb3VyY2VTdGF0aXN0
aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgeworICAgICAgICBib29sIHNo
b3VsZFBhcnRpdGlvbiA9IHNob3VsZFBhcnRpdGlvbkNvb2tpZXMocmVzb3VyY2VTdGF0aXN0aWMp
OworICAgICAgICBpZiAocmVzb3VyY2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRp
b25pbmcgJiYgIXNob3VsZFBhcnRpdGlvbikgeworICAgICAgICAgICAgcmVzb3VyY2VTdGF0aXN0
aWMuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIGRv
bWFpbnNUb1JlbW92ZS5hcHBlbmQocmVzb3VyY2VTdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsK
KyAgICAgICAgfSBlbHNlIGlmICghcmVzb3VyY2VTdGF0aXN0aWMuaXNNYXJrZWRGb3JDb29raWVQ
YXJ0aXRpb25pbmcgJiYgc2hvdWxkUGFydGl0aW9uKSB7CisgICAgICAgICAgICByZXNvdXJjZVN0
YXRpc3RpYy5pc01hcmtlZEZvckNvb2tpZVBhcnRpdGlvbmluZyA9IHRydWU7CisgICAgICAgICAg
ICBkb21haW5zVG9BZGQuYXBwZW5kKHJlc291cmNlU3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZG9tYWluc1RvUmVtb3ZlLmlzRW1wdHkoKSAm
JiBkb21haW5zVG9BZGQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
ZG9tYWluc1RvUmVtb3ZlID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5
KGRvbWFpbnNUb1JlbW92ZSksIGRvbWFpbnNUb0FkZCA9IENyb3NzVGhyZWFkQ29waWVyPFZlY3Rv
cjxTdHJpbmc+Pjo6Y29weShkb21haW5zVG9BZGQpXSAoKSB7CisgICAgICAgIG1fdXBkYXRlQ29v
a2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXIoZG9tYWluc1RvUmVtb3ZlLCBkb21haW5z
VG9BZGQsIFNob3VsZENsZWFyRmlyc3Q6Ok5vKTsKKyAgICB9KTsKK30KKwordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFp
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGRvbWFpbnNUb0FkZCwgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KQor
eworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGlmIChkb21haW5zVG9SZW1v
dmUuaXNFbXB0eSgpICYmIGRvbWFpbnNUb0FkZC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbdGhpcywgc2hvdWxkQ2xlYXJGaXJzdCwg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBkb21haW5zVG9SZW1vdmUgPSBDcm9zc1Ro
cmVhZENvcGllcjxWZWN0b3I8U3RyaW5nPj46OmNvcHkoZG9tYWluc1RvUmVtb3ZlKSwgZG9tYWlu
c1RvQWRkID0gQ3Jvc3NUaHJlYWRDb3BpZXI8VmVjdG9yPFN0cmluZz4+Ojpjb3B5KGRvbWFpbnNU
b0FkZCldICgpIHsKKyAgICAgICAgbV91cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5z
SGFuZGxlcihkb21haW5zVG9SZW1vdmUsIGRvbWFpbnNUb0FkZCwgc2hvdWxkQ2xlYXJGaXJzdCk7
CisgICAgfSk7CisKKyAgICBpZiAoc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0
OjpZZXMpIHsKKyAgICAgICAgZm9yIChhdXRvJiByZXNvdXJjZVN0YXRpc3RpYyA6IG1fcmVzb3Vy
Y2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKQorICAgICAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWMu
aXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSBmYWxzZTsKKyAgICB9IGVsc2UgeworICAg
ICAgICBmb3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnNUb1JlbW92ZSkKKyAgICAgICAgICAgIGVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oZG9tYWluKS5pc01hcmtlZEZv
ckNvb2tpZVBhcnRpdGlvbmluZyA9IGZhbHNlOworICAgIH0KKworICAgIGZvciAoYXV0byYgZG9t
YWluIDogZG9tYWluc1RvQWRkKQorICAgICAgICBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKGRvbWFpbikuaXNNYXJrZWRGb3JDb29raWVQYXJ0aXRpb25pbmcgPSB0cnVl
OworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvY2Vzc1N0YXRp
c3RpY3MoY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJik+JiBwcm9jZXNzRnVuY3Rpb24pIGNvbnN0Cit7CisgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CisgICAgZm9yIChhdXRvJiByZXNvdXJjZVN0YXRpc3RpYyA6IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLnZhbHVlcygpKQorICAgICAgICBwcm9jZXNzRnVuY3Rpb24ocmVzb3VyY2VT
dGF0aXN0aWMpOworfQorCitib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFz
SGFkVW5leHBpcmVkUmVjZW50VXNlckludGVyYWN0aW9uKFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IHJlc291cmNlU3RhdGlzdGljKSBjb25zdAoreworICAgIGlmIChyZXNvdXJjZVN0YXRpc3RpYy5o
YWRVc2VySW50ZXJhY3Rpb24gJiYgaGFzU3RhdGlzdGljc0V4cGlyZWQocmVzb3VyY2VTdGF0aXN0
aWMpKSB7CisgICAgICAgIC8vIERyb3AgcHJpdmFjeSBzZW5zaXRpdmUgZGF0YSBiZWNhdXNlIHdl
IG5vIGxvbmdlciBuZWVkIGl0LgorICAgICAgICAvLyBTZXQgdGltZXN0YW1wIHRvIDAgc28gdGhh
dCBzdGF0aXN0aWNzIG1lcmdlIHdpbGwga25vdworICAgICAgICAvLyBpdCBoYXMgYmVlbiByZXNl
dCBhcyBvcHBvc2VkIHRvIGl0cyBkZWZhdWx0IC0xLgorICAgICAgICByZXNvdXJjZVN0YXRpc3Rp
Yy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA9IHsgfTsKKyAgICAgICAgcmVzb3VyY2VT
dGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uID0gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHJlc291cmNlU3RhdGlzdGljLmhhZFVzZXJJbnRlcmFjdGlvbjsKK30KKworVmVjdG9yPFN0cmlu
Zz4gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0b3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluc1RvUmVtb3ZlV2Vic2l0ZURhdGFGb3IoKQoreworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgYm9vbCBzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5nID0gbV9l
bmRPZkdyYW5kZmF0aGVyaW5nVGltZXN0YW1wID4gV2FsbFRpbWU6Om5vdygpOworICAgIGJvb2wg
c2hvdWxkQ2xlYXJHcmFuZGZhdGhlcmluZyA9ICFzaG91bGRDaGVja0ZvckdyYW5kZmF0aGVyaW5n
ICYmIG1fZW5kT2ZHcmFuZGZhdGhlcmluZ1RpbWVzdGFtcDsKKworICAgIGlmIChzaG91bGRDbGVh
ckdyYW5kZmF0aGVyaW5nKQorICAgICAgICBtX2VuZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXAg
PSB7IH07CisKKyAgICBWZWN0b3I8U3RyaW5nPiBwcmV2YWxlbnRSZXNvdXJjZXM7CisgICAgZm9y
IChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkgewor
ICAgICAgICBpZiAoc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UgJiYgIWhhc0hhZFVuZXhw
aXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWMpICYmICghc2hvdWxkQ2hlY2tGb3JH
cmFuZGZhdGhlcmluZyB8fCAhc3RhdGlzdGljLmdyYW5kZmF0aGVyZWQpKQorICAgICAgICAgICAg
cHJldmFsZW50UmVzb3VyY2VzLmFwcGVuZChzdGF0aXN0aWMuaGlnaExldmVsRG9tYWluKTsKKwor
ICAgICAgICBpZiAoc2hvdWxkQ2xlYXJHcmFuZGZhdGhlcmluZyAmJiBzdGF0aXN0aWMuZ3JhbmRm
YXRoZXJlZCkKKyAgICAgICAgICAgIHN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkID0gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHByZXZhbGVudFJlc291cmNlczsKK30KKwordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVj
ZXNzYXJ5KCkKK3sKKyAgICBpZiAoIW1fb3BlcmF0aW5nRGF0ZXMuaXNFbXB0eSgpICYmIChXYWxs
VGltZTo6bm93KCkgLSBtX29wZXJhdGluZ0RhdGVzLmxhc3QoKSA8IDI0X2gpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB3aGlsZSAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5n
RGF0ZXNXaW5kb3cpCisgICAgICAgIG1fb3BlcmF0aW5nRGF0ZXMucmVtb3ZlRmlyc3QoKTsKKwor
ICAgIG1fb3BlcmF0aW5nRGF0ZXMuYXBwZW5kKFdhbGxUaW1lOjpub3coKSk7Cit9CisKK2Jvb2wg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdGF0aXN0aWNzRXhwaXJlZChjb25z
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpYykgY29uc3QKK3sKKyAg
ICBpZiAobV9vcGVyYXRpbmdEYXRlcy5zaXplKCkgPj0gb3BlcmF0aW5nRGF0ZXNXaW5kb3cpIHsK
KyAgICAgICAgaWYgKHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25U
aW1lIDwgbV9vcGVyYXRpbmdEYXRlcy5maXJzdCgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgLy8gSWYgd2UgZG9uJ3QgbWVldCB0aGUgcmVhbCBjcml0ZXJpYSBmb3Ig
YW4gZXhwaXJlZCBzdGF0aXN0aWMsIGNoZWNrIHRoZSB1c2VyCisgICAgLy8gc2V0dGluZyBmb3Ig
YSB0aWdodGVyIHJlc3RyaWN0aW9uIChtYWlubHkgZm9yIHRlc3RpbmcpLgorICAgIGlmIChtX3Rp
bWVUb0xpdmVVc2VySW50ZXJhY3Rpb24pIHsKKyAgICAgICAgaWYgKFdhbGxUaW1lOjpub3coKSA+
IHJlc291cmNlU3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lICsgbV90aW1l
VG9MaXZlVXNlckludGVyYWN0aW9uLnZhbHVlKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBmMmRkYmU4YzI3MWRmNmIzMTZhNGQxNzUwYmVjYTQx
MTE4ZmMxODc2Li5lY2EwNDUxOTMzNjkyYmIzOGQ0NDI2MWM0Y2Y5MTc5YjQxM2QxYzdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCkBAIC01MSw3ICs1MSw2IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBlbnVtIGNsYXNzIFNob3VsZENs
ZWFyRmlyc3Q7CkBAIC04OCwyOSArODcsMjcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3ViZnJhbWUsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmRlclRv
cEZyYW1lT3JpZ2luKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNv
cmU6OlVSTCYgdG9wRnJhbWUpOwogICAgIHZvaWQgc2V0U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dFRvKGNvbnN0IFdlYkNvcmU6OlVSTCYgc3VicmVzb3VyY2UsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
aG9zdE5hbWVSZWRpcmVjdGVkVG8pOwotICAgIHZvaWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5n
KCk7Ci0gICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21h
aW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3QpOworICAgIHZvaWQgc2NoZWR1bGVDb29raWVQYXJ0
aXRpb25pbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVkdWxlQ29va2llUGFydGl0aW9uaW5nVXBk
YXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRkLCBTaG91bGRDbGVhckZpcnN0KTsKICAgICB2
b2lkIHByb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKICAgICB2b2lkIHN1Ym1pdFRl
bGVtZXRyeSgpOwogCi0gICAgdm9pZCBjbGVhckluTWVtb3J5KCk7Ci0gICAgdm9pZCBjbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudCgpOwotICAgIHZvaWQgY2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsK
KyAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeSgpOworICAgIHZvaWQgc2NoZWR1bGVDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOworICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlm
aWVkU2luY2UpOwogCiAgICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKHN0ZDo6
b3B0aW9uYWw8U2Vjb25kcz4pOwogICAgIHZvaWQgc2V0VGltZVRvTGl2ZUNvb2tpZVBhcnRpdGlv
bkZyZWUoU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jk
c1JlbW92YWwoU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25k
cyk7CiAKKyAgICB2b2lkIHByb2Nlc3NTdGF0aXN0aWNzKGNvbnN0IFdURjo6RnVuY3Rpb248dm9p
ZCAoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpPiYpIGNvbnN0OworCiBw
cml2YXRlOgogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcm
LCBVcGRhdGVDb29raWVQYXJ0aXRpb25pbmdGb3JEb21haW5zSGFuZGxlciYmKTsKIAotICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgY29yZVN0b3JlKCkgeyByZXR1cm4gbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuZ2V0KCk7IH0KLSAgICBjb25zdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUmIGNvcmVTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmdldCgpOyB9Ci0KICAgICB2b2lkIHJlYWREYXRhRnJvbURpc2tJZk5lZWRl
ZCgpOwogCi0gICAgdm9pZCBjbGFzc2lmeVJlc291cmNlKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3MmKTsKICAgICB2b2lkIHJlbW92ZURhdGFSZWNvcmRzKCk7CiAgICAgdm9pZCBzdGFy
dE1vbml0b3JpbmdTdGF0aXN0aWNzU3RvcmFnZSgpOwogICAgIHZvaWQgc3RvcE1vbml0b3JpbmdT
dGF0aXN0aWNzU3RvcmFnZSgpOwpAQCAtMTI1LDcgKzEyMiw2IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIHdyaXRlU3RvcmVUb0Rpc2soKTsKICAgICB2b2lkIHNjaGVkdWxlT3JXcml0ZVN0b3JlVG9E
aXNrKCk7Ci0gICAgdm9pZCB3cml0ZUVuY29kZXJUb0Rpc2soV2ViQ29yZTo6S2V5ZWRFbmNvZGVy
JiwgY29uc3QgU3RyaW5nJiBwYXRoKSBjb25zdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29y
ZTo6S2V5ZWREZWNvZGVyPiBjcmVhdGVEZWNvZGVyRnJvbURpc2soY29uc3QgU3RyaW5nJiBwYXRo
KSBjb25zdDsKICAgICBXYWxsVGltZSBzdGF0aXN0aWNzRmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBsYWJlbCkgY29uc3Q7CiAgICAgdm9pZCBwbGF0Zm9ybUV4Y2x1ZGVGcm9tQmFj
a3VwKCkgY29uc3Q7CkBAIC0xMzcsMTEgKzEzMywyNCBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hv
dWxkUmVtb3ZlRGF0YVJlY29yZHMoKSBjb25zdDsKICAgICB2b2lkIHNldERhdGFSZWNvcmRzQmVp
bmdSZW1vdmVkKGJvb2wpOwogCisgICAgYm9vbCBzaG91bGRQYXJ0aXRpb25Db29raWVzKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKKyAgICBib29sIGhhc1N0
YXRpc3RpY3NFeHBpcmVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBj
b25zdDsKKyAgICBib29sIGhhc0hhZFVuZXhwaXJlZFJlY2VudFVzZXJJbnRlcmFjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJikgY29uc3Q7CisgICAgdm9pZCBpbmNsdWRlVG9k
YXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOworICAgIFZlY3RvcjxTdHJpbmc+IHRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW5zVG9SZW1vdmVXZWJzaXRlRGF0YUZvcigpOworICAgIHZv
aWQgdXBkYXRlQ29va2llUGFydGl0aW9uaW5nKCk7CisgICAgdm9pZCB1cGRhdGVDb29raWVQYXJ0
aXRpb25pbmdGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIFNob3VsZENsZWFyRmlyc3QpOwor
ICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWNzKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzPiYmKTsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBlbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpLZXllZEVuY29kZXI+IGNyZWF0ZUVuY29kZXJGcm9tRGF0
YSgpIGNvbnN0OworICAgIHZvaWQgcG9wdWxhdGVGcm9tRGVjb2RlcihXZWJDb3JlOjpLZXllZERl
Y29kZXImKTsKKyAgICB2b2lkIGNsZWFySW5NZW1vcnkoKTsKKwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZvaWQgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOwogI2VuZGlmCiAKLSAg
ICBSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTsKKyAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAjaWYgSEFWRShDT1JFX1BSRURJQ1RJT04p
CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXJDb2NvYSBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NDbGFzc2lmaWVyOwogI2Vsc2UKQEAgLTE0OSwxMiArMTU4LDIwIEBAIHByaXZh
dGU6CiAjZW5kaWYKICAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1fc3RhdGlzdGljc1F1ZXVlOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpGaWxlTW9uaXRvcj4gbV9zdGF0aXN0aWNzU3Rv
cmFnZU1vbml0b3I7CisgICAgRGVxdWU8V1RGOjpXYWxsVGltZT4gbV9vcGVyYXRpbmdEYXRlczsK
KworICAgIFVwZGF0ZUNvb2tpZVBhcnRpdGlvbmluZ0ZvckRvbWFpbnNIYW5kbGVyIG1fdXBkYXRl
Q29va2llUGFydGl0aW9uaW5nRm9yRG9tYWluc0hhbmRsZXI7CisKKyAgICBXYWxsVGltZSBtX2Vu
ZE9mR3JhbmRmYXRoZXJpbmdUaW1lc3RhbXA7CiAgICAgY29uc3QgU3RyaW5nIG1fc3RhdGlzdGlj
c1N0b3JhZ2VQYXRoOwogICAgIFdhbGxUaW1lIG1fbGFzdFN0YXRpc3RpY3NGaWxlU3luY1RpbWU7
CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RTdGF0aXN0aWNzV3JpdGVUaW1lOwogICAgIFJ1bkxv
b3A6OlRpbWVyPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9kYWlseVRhc2tzVGlt
ZXI7CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RUaW1lRGF0YVJlY29yZHNXZXJlUmVtb3ZlZDsK
ICAgICBTZWNvbmRzIG1fbWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsIHsgMV9o
IH07CisgICAgc3RkOjpvcHRpb25hbDxTZWNvbmRzPiBtX3RpbWVUb0xpdmVVc2VySW50ZXJhY3Rp
b247CisgICAgU2Vjb25kcyBtX3RpbWVUb0xpdmVDb29raWVQYXJ0aXRpb25GcmVlIHsgMjRfaCB9
OworICAgIFNlY29uZHMgbV9ncmFuZGZhdGhlcmluZ1RpbWUgeyAxX2ggfTsKICAgICBib29sIG1f
ZGF0YVJlY29yZHNCZWluZ1JlbW92ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kaWRTY2hlZHVs
ZVdyaXRlIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJl
Y29yZHNXZXJlU2Nhbm5lZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAK
aW5kZXggZTEyMTIxM2E5ZjVmZDU5NTVhOWE5ZWQwZDVhMDdmODVmOGZmMTE0Yi4uZTIwOWU3YmQ0
YmI4YTk5MmRlMjQ0MjhlNTBkNmNiYmVhMWM1ZWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1l
dHJ5LmNwcApAQCAtMjYsOSArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCIKIAotI2luY2x1ZGUgIlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgUHJldmFsZW50UmVz
b3VyY2VUZWxlbWV0cnkgewogICAgIHVuc2lnbmVkIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG87CiB9OwogCi1zdGF0aWMgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiBzb3J0
ZWRQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUmIHN0b3JlKQorc3RhdGljIFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4g
c29ydGVkUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkoY29uc3QgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlJiBzdG9yZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+IHNvcnRlZDsKQEAgLTIyNCw3
ICsyMjQsNyBAQCB2b2lkIHN0YXRpYyBub3RpZnlQYWdlcyhjb25zdCBWZWN0b3I8UHJldmFsZW50
UmVzb3VyY2VUZWxlbWV0cnk+JiBzb3J0ZWRQcmV2YWxlbgogICAgIG5vdGlmeVBhZ2VzKHNvcnRl
ZFByZXZhbGVudFJlc291cmNlcy5zaXplKCksIHRvdGFsTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRoVXNlckludGVyYWN0aW9uLCBtZWRpYW4oc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0
aG91dFVzZXJJbnRlcmFjdGlvbiwgMCwgMiwgc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc0dl
dHRlcikpOwogfQogICAgIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
OjpjYWxjdWxhdGVBbmRTdWJtaXQoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnk6OmNhbGN1bGF0ZUFuZFN1Ym1pdChjb25zdCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSkKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oCmluZGV4
IDdjMmZmNTg3NWE4NTJhYmUxMjY4ZGRkNGVhYzgxMzliMTIxM2Y2YzguLmQ4OWZhZmEyZmNiNDUz
ZDY0MzM0MGVmMTRhNzQ0NGJmMTc5MmZlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaApA
QCAtMjksMTEgKzI5LDExIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU7CitjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU7CiAKIG5hbWVzcGFjZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5IHsKICAg
ICAKLXZvaWQgY2FsY3VsYXRlQW5kU3VibWl0KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSYpOwordm9pZCBjYWxjdWxhdGVBbmRTdWJtaXQoY29uc3QgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlJik7CiB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKGJvb2wpOwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDdiY2Y2OTk1NWEzNGI3
MzkzYTAzMjMwMjQxYjgzZmMyMzI5NWY1NzMuLjM2ZmEzMGNlNTk0ZjQxYjQyMzk4YjUxZTZjZDA5
OWQ2NmFkNDhiMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4g
ZGF0YVR5cGVzLCBzdGQ6OmNocgogI2VuZGlmCiAKICAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcykgJiYgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKQotICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KG1vZGlmaWVkU2luY2UpOworICAgICAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQobW9kaWZpZWRT
aW5jZSk7CiAKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkg
cGVuZGluZyBjYWxsYmFja3MuIElmIHNvLCB3ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0
aW9uIGhhbmRsZXIgcmlnaHQgYXdheS4KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5l
ZWRlZCgpOwpAQCAtMTA4Myw3ICsxMDgzLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1v
dmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICNl
bmRpZgogCiAgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3MpICYmIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKLSAgICAgICAg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5jbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCgpOwor
ICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFu
ZFBlcnNpc3RlbnQoKTsKIAogICAgIC8vIFRoZXJlJ3MgYSBjaGFuY2UgdGhhdCB3ZSBkb24ndCBo
YXZlIGFueSBwZW5kaW5nIGNhbGxiYWNrcy4gSWYgc28sIHdlIHdhbnQgdG8gZGlzcGF0Y2ggdGhl
IGNvbXBsZXRpb24gaGFuZGxlciByaWdodCBhd2F5LgogICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
Y2FsbElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggY2QwMGYyM2Y5NDFjYzYyY2JkZWVjOTI4YWYxZGU5NWY4Mjcx
YmQxNS4uNmZlMmEyNDUxYWVhOGZiODIzNGNiM2YyZjdiYWZiNjU4NmIzN2Q0ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM1
NSw3ICsxMzU1LDYgQEAKIAkJODM5OTAyMDMxQkU5QTAyQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2Fk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzk5MDFG
RTFCRTlBMDFCMDAwRjM2NTMgLyogTmV0d29ya0xvYWQuaCAqLzsgfTsKIAkJODM5QTJGMzExRTIw
Njc0NTAwMzkwNTdFIC8qIEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzOUEyRjJGMUUy
MDY3MzkwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFwaGljc1VzYWdlU2FtcGxlci5jcHAg
Ki87IH07CiAJCTgzOUEyRjMyMUUyMDY3NDUwMDM5MDU3RSAvKiBIaWdoUGVyZm9ybWFuY2VHcmFw
aGljc1VzYWdlU2FtcGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODM5QTJGMzAxRTIwNjczOTAwMzkwNTdFIC8qIEhpZ2hQZXJmb3JtYW5jZUdyYXBo
aWNzVXNhZ2VTYW1wbGVyLmggKi87IH07Ci0JCTgzQUZEQzBBMUYwNkNFRUEwMDQ3MjgxNSAvKiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODNBRkRDMDgxRjA2Q0VFMDAwNDcyODE1IC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi87IH07CiAJCTgzQkRDQ0I5MUFDNUZEQjYwMDNGNjQ0
MSAvKiBOZXR3b3JrQ2FjaGVTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzQkRDQ0I4MUFDNUZEQjYwMDNGNjQ0MSAvKiBOZXR3b3Jr
Q2FjaGVTdGF0aXN0aWNzLmNwcCAqLzsgfTsKIAkJODNCRkFDNDIxRDk2MTM3QzAwNDMzNDkwIC8q
IEJsb2JEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODNCRkFDNDAxRDk2MTM2MDAwNDMzNDkwIC8qIEJsb2JEb3dubG9hZENsaWVu
dC5oICovOyB9OwogCQk4M0JGQUM0MzFEOTYxMzdDMDA0MzM0OTAgLyogQmxvYkRvd25sb2FkQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgz
QkZBQzQxMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovOyB9OwpA
QCAtMzY1Miw4ICszNjUxLDYgQEAKIAkJODM5OTAxRkYxQkU5QTAxQjAwMEYzNjUzIC8qIE5ldHdv
cmtMb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtM
b2FkLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QTJGMkYxRTIwNjczOTAwMzkwNTdFIC8qIEhpZ2hQZXJm
b3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODM5QTJGMzAxRTIwNjczOTAwMzkwNTdFIC8qIEhp
Z2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhpZ2hQZXJmb3JtYW5jZUdyYXBoaWNzVXNhZ2VTYW1wbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTgzQUZEQzA4MUYwNkNFRTAwMDQ3MjgxNSAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJODNBRkRDMDkxRjA2Q0VFMDAwNDcyODE1IC8qIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODNC
RENDQjgxQUM1RkRCNjAwM0Y2NDQxIC8qIE5ldHdvcmtDYWNoZVN0YXRpc3RpY3MuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya0NhY2hlU3RhdGlzdGljcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkZBQzQwMUQ5NjEzNjAwMDQzMzQ5
MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQmxvYkRvd25sb2FkQ2xpZW50Lmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
QmxvYkRvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQkZB
QzQxMUQ5NjEzNjAwMDQzMzQ5MCAvKiBCbG9iRG93bmxvYWRDbGllbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQmxvYkRvd25sb2FkQ2xpZW50LmNwcDsgcGF0aCA9
IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9CbG9iRG93bmxvYWRDbGllbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDcwMyw4ICs0NzAwLDYgQEAKIAkJCQkxQTFEOEJBMDE3
MzFBMzYzMDAxNDFEQTQgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2UuaCAqLywKIAkJCQkxQThDNzI4
QTE3Mzg0NzdDMDAwQTY1NTQgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcCAqLywK
IAkJCQkxQThDNzI4QjE3Mzg0NzdDMDAwQTY1NTQgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmggKi8sCi0JCQkJODNBRkRDMDgxRjA2Q0VFMDAwNDcyODE1IC8qIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAgKi8sCi0JCQkJODNBRkRDMDkxRjA2Q0VFMDAwNDcyODE1IC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovLAogCQkJCTFBNDRCOTU5MTZCNzNGOUYwMEI3
QkJEOCAvKiBTdG9yYWdlTWFuYWdlci5jcHAgKi8sCiAJCQkJMUE0NEI5NUExNkI3M0Y5RjAwQjdC
QkQ4IC8qIFN0b3JhZ2VNYW5hZ2VyLmggKi8sCiAJCQkJMUFCMzFBOTMxNkJDNjVBQjAwRjZEQkM5
IC8qIFN0b3JhZ2VNYW5hZ2VyLm1lc3NhZ2VzLmluICovLApAQCAtOTk0OCw3ICs5OTQzLDYgQEAK
IAkJCQk3QTgyMUY0RTFFMkY2N0E4MDA2MDQ1NzcgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyQ2xpZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MUQxQzIzRjhDRjAwRDQxMTgz
IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMjk4NEY1ODgxNjRCQTA5NTAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdl
ck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk4M0FGREMwQTFGMDZDRUVB
MDA0NzI4MTUgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdBODIxRjRBMUUyRjY1RTkwMDYwNDU3NyAvKiBMZWdhY3lDdXN0b21Qcm90b2NvbE1h
bmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyOTg0RjU3QzE2NEI5MTVGMDA0QkMw
QzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGREU2NUQxOTU0RThENTAwQzQ4RkZBIC8qIExlZ2FjeVNl
c3Npb25TdGF0ZUNvZGluZy5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>