<?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>234205</bug_id>
          
          <creation_ts>2021-12-11 19:10:44 -0800</creation_ts>
          <short_desc>Pipe ColorInterpolationMethod into Gradient</short_desc>
          <delta_ts>2021-12-12 09:33:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1823290</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-11 19:10:44 -0800</bug_when>
    <thetext>Pipe ColorInterpolationMethod into Gradient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823291</commentid>
    <comment_count>1</comment_count>
      <attachid>446917</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-11 19:15:01 -0800</bug_when>
    <thetext>Created attachment 446917
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823294</commentid>
    <comment_count>2</comment_count>
      <attachid>446920</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-11 21:18:06 -0800</bug_when>
    <thetext>Created attachment 446920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823317</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-12 09:32:52 -0800</bug_when>
    <thetext>Committed r286925 (245151@main): &lt;https://commits.webkit.org/245151@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446920.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823318</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-12 09:33:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/86383671&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446917</attachid>
            <date>2021-12-11 19:15:01 -0800</date>
            <delta_ts>2021-12-11 21:18:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234205-20211211191500.patch</filename>
            <type>text/plain</type>
            <size>62546</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NjkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDIxLTEyLTExICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBQaXBlIENvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZCBpbnRvIEdyYWRpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzQyMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGVyZSBpcyBubyBmdW5jdGlvbmFsIGNoYW5nZSB5ZXQsIHRoaXMganVz
dCBhZGRzIGEgcmVxdWlyZWQgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHBhcmFtZXRlciB0bwor
ICAgICAgICBHcmFkaWVudCwgd2hpY2ggZm9yIHRoZSBtb21lbnQgaGFzIHRvIGJlIFNSR0IgYW5k
IG5vbi1wcmVtdWx0aXBsaWVkIGFscGhhLiBTdWJzZXF1ZW50IGNoYW5nZXMgd2lsbAorICAgICAg
ICBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIGludGVycG9sYXRpb24gbWV0aG9kIHZpYSBDU1Mg
Z3JhZGllbnRzIGFzIHdlbGwgYXMgaW1wbGVtZW50aW5nIHN1cHBvcnQKKyAgICAgICAgZm9yIHRo
YXQgaW4gdGhlIHBsYXRmb3JtIGdyYWRpZW50IGJhY2tlbmRzLgorCisgICAgICAgICogSGVhZGVy
cy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
R3JhZGllbnRWYWx1ZTo6ZXF1YWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVh
ckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Jh
ZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0NvbmljR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAqIGNzcy9DU1NH
cmFkaWVudFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjpDU1NH
cmFkaWVudFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OmNvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCBjb25zdCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzOjpjb25zdW1lRGVwcmVjYXRlZEdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5UGFyc2VySGVscGVyczo6Y29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVS
YWRpYWxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0eVBhcnNlckhlbHBl
cnM6OmNvbnN1bWVMaW5lYXJHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9wZXJ0
eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVDb25pY0dyYWRpZW50KToKKyAgICAgICAgKiBodG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YXV0b0ZpbGxTdHJvbmdQYXNz
d29yZE1hc2tJbWFnZSk6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzR3JhZGllbnQ6OkNhbnZhc0dyYWRpZW50KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OmludGVycG9sYXRlQ29sb3JDb21wb25lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6ZW5jb2RlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6ZGVjb2RlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb25NZXRob2QuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25NZXRob2Q6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25NZXRob2Q6OmRl
Y29kZSk6CisgICAgICAgIChXZWJDb3JlOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhZGllbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVu
dDo6R3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6Omhhc2ggY29uc3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFkaWVudDo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50Ojpk
ZWNvZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lSU9TOjpjaGVja2JveFJhZGlvQmFja2dyb3VuZEdyYWRpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludENvbG9yV2VsbERlY29yYXRp
b25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3Jh
ZGllbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFk
aWVudDo6YnVpbGRHcmFkaWVudCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQ6OmJ1aWxkR3JhZGllbnQgY29uc3QpOgorCiAyMDIx
LTEyLTExICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4Njg5My4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQko
cmV2aXNpb24gMjg2OTExKQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5OSw2ICsxMzk5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yQ29udmVyc2lvbi5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JIYXNoLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ckludGVycG9sYXRpb24uaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JMdW1pbmFuY2UuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0NvbG9yTWF0cml4LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ck1vZGVscy5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODY5MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNTQsOCAr
MTI1NCw4IEBACiAJCTQzNjcwOERGMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQzNjcwOEEwMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaCAq
LzsgfTsKIAkJNDM2NzA4RTExMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlUmFk
aWFsR3JhZGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzNjcwOEEyMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50LmggKi87IH07CiAJCTQzNjcwOEUzMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdS
ZXNvdXJjZVNvbGlkQ29sb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQzNjcwOEE0MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZVNv
bGlkQ29sb3IuaCAqLzsgfTsKLQkJNDM2NzA4RTUxMkQ5REI0QjAwMDQ0MjM0IC8qIFJlbmRlclNW
R1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
NjcwOEE2MTJEOURCNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSb290LmggKi87IH07CiAJCTQzNjcw
OEU1MTJEOUNBNEIwMDA0NDIzNCAvKiBMZWdhY3lSZW5kZXJTVkdSb290LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDhBNjEyRDlDQTRCMDAwNDQy
MzQgLyogTGVnYWN5UmVuZGVyU1ZHUm9vdC5oICovOyB9OworCQk0MzY3MDhFNTEyRDlEQjRCMDAw
NDQyMzQgLyogUmVuZGVyU1ZHUm9vdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDM2NzA4QTYxMkQ5REI0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jvb3Qu
aCAqLzsgfTsKIAkJNDM2NzA4RTkxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQzNjcwOEFBMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyLmggKi87IH07CiAJCTQzNjcwOEVCMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJT
VkdWaWV3cG9ydENvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDM2NzA4QUMxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1ZpZXdwb3J0
Q29udGFpbmVyLmggKi87IH07CiAJCTQzNjcwOEVFMTJEOUNBNEIwMDA0NDIzNCAvKiBTVkdNYXJr
ZXJEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MzY3MDhBRjEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHTWFya2VyRGF0YS5oICovOyB9OwpAQCAtNDA5
NSw2ICs0MDk1LDcgQEAKIAkJQkMyQjQxMzEyNzM0QTA4NjAwQTJEMTkxIC8qIER1bW15TW9kZWxQ
bGF5ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMyQjQxMjAyNzMzNUNCOTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJD
MkNCRjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAz
ODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OwogCQlCQzJDQ0ExMDI2NTVEREIy
MDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVz
dGluYXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJQkMyRUU4RUEyNzY1OTQzQTAwNzc3NjhCIC8qIENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMyRUU4RTgyNzY1OTQyQTAwNzc3NjhCIC8qIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMzA1
QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNUM3ODBDMDc2QkIzMDBDRDIw
RjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oICovOyB9OwogCQlCQzM0OEJENDBEQjdGODA0MDA0
QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMzNDhCRDIwREI3RjgwNDAwNEFCQUI5IC8qIEpTWE1MSHR0cFJl
cXVlc3QuaCAqLzsgfTsKIAkJQkMzNDhCRDQwREI3RjgwNDAwNEFCQUJBIC8qIFdlYkNvcmVKU0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzM0OEJEMjBEQjdGODA0MDA0QUJBQkEgLyogV2ViQ29yZUpTQnVpbHRpbnMuaCAqLzsgfTsKQEAg
LTg5ODYsMTAgKzg5ODcsMTAgQEAKIAkJNDM2NzA4QTIxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRl
clNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0MzY3MDhBMzEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVzb3Vy
Y2VTb2xpZENvbG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bmRlclNWR1Jlc291cmNlU29saWRDb2xvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQzNjcwOEE0MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29s
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUmVzb3VyY2VT
b2xpZENvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQzNjcwOEE1MTJEOUNB
NUMwMDA0NDIzNCAvKiBSZW5kZXJTVkdSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbmRlclNWR1Jvb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk0MzY3MDhBNjEyRDlEQjRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUm9vdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdSb290Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQzNjcwOEE1MTJEOUNBNEIwMDA0NDIzNCAvKiBMZWdhY3lSZW5kZXJT
VkdSb290LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExlZ2FjeVJl
bmRlclNWR1Jvb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MzY3MDhBNTEy
RDlDQTVDMDAwNDQyMzQgLyogUmVuZGVyU1ZHUm9vdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdSb290LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDM2NzA4QTYxMkQ5Q0E0QjAwMDQ0MjM0IC8qIExlZ2FjeVJlbmRlclNWR1Jvb3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5UmVuZGVyU1ZHUm9vdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MzY3MDhBNjEyRDlEQjRCMDAwNDQyMzQg
LyogUmVuZGVyU1ZHUm9vdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5k
ZXJTVkdSb290Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNjcwOEE5MTJEOUNB
NEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250
YWluZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDhBQTEyRDlDQTRC
MDAwNDQyMzQgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNjcwOEFCMTJEOUNBNEIwMDA0NDIzNCAv
KiBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMDQ3NSwxNCArMTA0NzYsNiBAQAogCQk1QjdBQjlGNjI1NjdE
QjdFMDA2NTkyRDAgLyogU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbFNuYXBPZmZzZXRzSW5mby5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVCOTJDNDI5MjcxNkUyMzMwMEEzN0NDMCAvKiBTY3JvbGxp
bmdUcmVlU3RpY2t5Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVCOTJDNDJCMjcxNkUyMzMwMEEzN0NDMCAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzFCMUQxRTI2RjE1QjE5MDA4ODJE
QTIgLyogU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1QzFCMUQyMDI2RjE1QjFBMDA4ODJEQTIgLyogU2hhcmVkV29ya2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDMUIxRDIxMjZGMTVCMUEwMDg4MkRB
MiAvKiBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1QzFCMUQyMjI2RjE1QjFBMDA4ODJEQTIgLyogU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMxQjFEMjMyNkYxNUIxQTAwODgyREEy
IC8qIFNoYXJlZFdvcmtlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hhcmVkV29ya2Vy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMxQjFEMjQyNkYxNUIxQTAwODgy
REEyIC8qIFNoYXJlZFdvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
aGFyZWRXb3JrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMwMDE1MjEyNTAw
MTEwMDAwOTRBQTkzIC8qIFRleHRDb2RlY1NpbmdsZUJ5dGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dENvZGVjU2luZ2xlQnl0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTVDMDAxNTIzMjUwMDExMDEwMDk0QUE5MyAvKiBUZXh0Q29kZWNT
aW5nbGVCeXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDb2RlY1Np
bmdsZUJ5dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxQjFEMjUyNkYxODhE
ODAwODgyREEyIC8qIFdvcmtlck9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdv
cmtlck9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzFCMUQyNjI2
RjE4QTRCMDA4ODJEQTIgLyogV29ya2VyT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXb3JrZXJPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDMUIxRDNEMjZGMzk3N0YwMDg4MkRBMiAvKiBSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTE0MSw2ICsxNTEzNCw3IEBACiAJ
CUJDMkNDQTBGMjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRUQ1NTQwQzZCOUJEMzAwOTIwQkZGIC8qIEpTRWxlbWVudEN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0VsZW1lbnRD
dXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJFRDZCQjBDNkJEMkYw
MDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQXR0ckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDMkVFOEU4Mjc2NTk0MkEwMDc3NzY4QiAvKiBDb2xvckludGVycG9sYXRpb25NZXRob2QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUJDMzA1Qzc3MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxP
YmplY3RFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDVDNzgw
QzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkMzM0ZCMUEwRjMwRUU4NTAwMkNERDdDIC8qIFJlbmRlckxpbmVCb3hM
aXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckxpbmVC
b3hMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NjEzLDYgKzI4NjA3
LDcgQEAKIAkJCQkzMTAzQjdERTFEQjAxNTU2MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggKi8sCiAJ
CQkJQkNEQzY0MjQyNzUxN0IwNDAwMzhGQjM5IC8qIENvbG9ySW50ZXJwb2xhdGlvbi5jcHAgKi8s
CiAJCQkJQkNEQzY0MjUyNzUxN0IwNDAwMzhGQjM5IC8qIENvbG9ySW50ZXJwb2xhdGlvbi5oICov
LAorCQkJCUJDMkVFOEU4Mjc2NTk0MkEwMDc3NzY4QiAvKiBDb2xvckludGVycG9sYXRpb25NZXRo
b2QuaCAqLywKIAkJCQlCQzZFQjg0NTI2MjY2QjYxMDAzMjI1QTcgLyogQ29sb3JMdW1pbmFuY2Uu
Y3BwICovLAogCQkJCUJDNEEyM0VCMjVFQzE2MDIwMEFBQzYzMCAvKiBDb2xvckx1bWluYW5jZS5o
ICovLAogCQkJCTdDQUM2QUU4MjQ3RjA4MjAwMEU2MUQ1OSAvKiBDb2xvck1hdHJpeC5oICovLApA
QCAtMzM1NjYsNiArMzM1NjEsNyBAQAogCQkJCTMxMDNCN0RGMURCMDE1NjcwMDhCQjg5MCAvKiBD
b2xvckhhc2guaCBpbiBIZWFkZXJzICovLAogCQkJCUY1NUIzREI0MTI1MUYxMkQwMDNFRjI2OSAv
KiBDb2xvcklucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQTAwQzgyNzU0NDk2RDAw
NDdDMEU1IC8qIENvbG9ySW50ZXJwb2xhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyRUU4
RUEyNzY1OTQzQTAwNzc3NjhCIC8qIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkM0QTIzRUMyNUVDMTYwMjAwQUFDNjMwIC8qIENvbG9yTHVtaW5hbmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDQUM2QUU5MjQ3RjA4MkYwMEU2MUQ1OSAvKiBDb2xvck1h
dHJpeC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuY3BwCShyZXZpc2lvbiAyODY5MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcsOCBAQCBib29sIENT
U0dyYWRpZW50VmFsdWU6OmVxdWFscyhjb25zdCBDU1NHCiAgICAgICAgICYmIGNvbXBhcmVDU1NW
YWx1ZVB0cihtX3NlY29uZFksIG90aGVyLm1fc2Vjb25kWSkKICAgICAgICAgJiYgbV9zdG9wcyA9
PSBvdGhlci5tX3N0b3BzCiAgICAgICAgICYmIG1fZ3JhZGllbnRUeXBlID09IG90aGVyLm1fZ3Jh
ZGllbnRUeXBlCi0gICAgICAgICYmIG1fcmVwZWF0aW5nID09IG90aGVyLm1fcmVwZWF0aW5nOwor
ICAgICAgICAmJiBtX3JlcGVhdGluZyA9PSBvdGhlci5tX3JlcGVhdGluZworICAgICAgICAmJiBt
X2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCA9PSBvdGhlci5tX2NvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZDsKIH0KIAogc3RhdGljIHZvaWQgYXBwZW5kR3JhZGllbnRTdG9wcyhTdHJpbmdCdWlsZGVy
JiBidWlsZGVyLCBjb25zdCBWZWN0b3I8Q1NTR3JhZGllbnRDb2xvclN0b3AsIDI+JiBzdG9wcykK
QEAgLTg3MSw3ICs4NzIsNyBAQCBSZWY8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6
OmNyCiAgICAgTGluZWFyR3JhZGllbnRBZGFwdGVyIGFkYXB0ZXIgeyBkYXRhIH07CiAgICAgYXV0
byBzdG9wcyA9IGNvbXB1dGVTdG9wcyhhZGFwdGVyLCBjb252ZXJzaW9uRGF0YSwgcmVuZGVyZXIu
c3R5bGUoKSwgMSk7CiAKLSAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKKyAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShXVEZNb3Zl
KGRhdGEpLCBjb2xvckludGVycG9sYXRpb25NZXRob2QoKSk7CiAgICAgZ3JhZGllbnQtPnNldFNv
cnRlZENvbG9yU3RvcHMoV1RGTW92ZShzdG9wcykpOwogICAgIHJldHVybiBncmFkaWVudDsKIH0K
QEAgLTEyMDUsNyArMTIwNiw3IEBAIFJlZjxHcmFkaWVudD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1
ZTo6Y3IKICAgICBSYWRpYWxHcmFkaWVudEFkYXB0ZXIgYWRhcHRlciB7IGRhdGEgfTsKICAgICBh
dXRvIHN0b3BzID0gY29tcHV0ZVN0b3BzKGFkYXB0ZXIsIGNvbnZlcnNpb25EYXRhLCByZW5kZXJl
ci5zdHlsZSgpLCBtYXhFeHRlbnQpOwogCi0gICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50Ojpj
cmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVh
dGUoV1RGTW92ZShkYXRhKSwgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKCkpOwogICAgIGdyYWRp
ZW50LT5zZXRTb3J0ZWRDb2xvclN0b3BzKFdURk1vdmUoc3RvcHMpKTsKICAgICByZXR1cm4gZ3Jh
ZGllbnQ7CiB9CkBAIC0xMjc5LDcgKzEyODAsNyBAQCBSZWY8R3JhZGllbnQ+IENTU0NvbmljR3Jh
ZGllbnRWYWx1ZTo6Y3JlCiAgICAgQ29uaWNHcmFkaWVudEFkYXB0ZXIgYWRhcHRlcjsKICAgICBh
dXRvIHN0b3BzID0gY29tcHV0ZVN0b3BzKGFkYXB0ZXIsIGNvbnZlcnNpb25EYXRhLCByZW5kZXJl
ci5zdHlsZSgpLCAxKTsKIAotICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOworICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1v
dmUoZGF0YSksIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpKTsKICAgICBncmFkaWVudC0+c2V0
U29ydGVkQ29sb3JTdG9wcyhXVEZNb3ZlKHN0b3BzKSk7CiAgICAgcmV0dXJuIGdyYWRpZW50Owog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCShyZXZpc2lvbiAyODY5
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJDb2xvckludGVy
cG9sYXRpb25NZXRob2QuaCIKICNpbmNsdWRlICJHcmFkaWVudC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC04MSwxMCArODIsMTEgQEAgcHVibGljOgogICAgIFJlZjxDU1NHcmFkaWVudFZh
bHVlPiB2YWx1ZVdpdGhTdHlsZXNSZXNvbHZlZChTdHlsZTo6QnVpbGRlclN0YXRlJik7CiAKIHBy
b3RlY3RlZDoKLSAgICBDU1NHcmFkaWVudFZhbHVlKENsYXNzVHlwZSBjbGFzc1R5cGUsIENTU0dy
YWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSkKKyAgICBD
U1NHcmFkaWVudFZhbHVlKENsYXNzVHlwZSBjbGFzc1R5cGUsIENTU0dyYWRpZW50UmVwZWF0IHJl
cGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKICAgICAgICAgOiBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlKGNsYXNzVHlwZSkKICAgICAgICAgLCBtX2dyYWRpZW50VHlwZShncmFkaWVudFR5cGUp
CiAgICAgICAgICwgbV9yZXBlYXRpbmcocmVwZWF0ID09IFJlcGVhdGluZykKKyAgICAgICAgLCBt
X2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZChjb2xvckludGVycG9sYXRpb25NZXRob2QpCiAgICAg
ewogICAgIH0KIApAQCAtOTcsNiArOTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9zdG9w
cyhvdGhlci5tX3N0b3BzKQogICAgICAgICAsIG1fZ3JhZGllbnRUeXBlKG90aGVyLm1fZ3JhZGll
bnRUeXBlKQogICAgICAgICAsIG1fcmVwZWF0aW5nKG90aGVyLm1fcmVwZWF0aW5nKQorICAgICAg
ICAsIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKG90aGVyLm1fY29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kKQogICAgICAgICAsIG1faGFzQ29sb3JEZXJpdmVkRnJvbUVsZW1lbnQob3RoZXIubV9o
YXNDb2xvckRlcml2ZWRGcm9tRWxlbWVudCkKICAgICB7CiAgICAgfQpAQCAtMTA5LDYgKzExMiw3
IEBAIHByb3RlY3RlZDoKICAgICBhdXRvIHNlY29uZFkoKSBjb25zdCB7IHJldHVybiBtX3NlY29u
ZFkuZ2V0KCk7IH0KICAgICBhdXRvJiBzdG9wcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcHM7IH0K
ICAgICBib29sIGlzUmVwZWF0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9yZXBlYXRpbmc7IH0KKyAg
ICBhdXRvIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kOyB9CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NHcmFkaWVu
dFZhbHVlJikgY29uc3Q7CiAKQEAgLTEyMywxNSArMTI3LDE2IEBAIHByaXZhdGU6CiAgICAgVmVj
dG9yPENTU0dyYWRpZW50Q29sb3JTdG9wLCAyPiBtX3N0b3BzOwogICAgIENTU0dyYWRpZW50VHlw
ZSBtX2dyYWRpZW50VHlwZTsKICAgICBib29sIG1fcmVwZWF0aW5nIHsgZmFsc2UgfTsKKyAgICBD
b2xvckludGVycG9sYXRpb25NZXRob2QgbV9jb2xvckludGVycG9sYXRpb25NZXRob2Q7CiAKICAg
ICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9oYXNDb2xvckRlcml2ZWRGcm9tRWxlbWVu
dDsKIH07CiAKIGNsYXNzIENTU0xpbmVhckdyYWRpZW50VmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NT
R3JhZGllbnRWYWx1ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlPiBjcmVhdGUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUg
Z3JhZGllbnRUeXBlID0gQ1NTTGluZWFyR3JhZGllbnQpCisgICAgc3RhdGljIFJlZjxDU1NMaW5l
YXJHcmFkaWVudFZhbHVlPiBjcmVhdGUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFk
aWVudFR5cGUgZ3JhZGllbnRUeXBlLCBDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
TGluZWFyR3JhZGllbnRWYWx1ZShyZXBlYXQsIGdyYWRpZW50VHlwZSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlKHJlcGVhdCwgZ3JhZGllbnRU
eXBlLCBjb2xvckludGVycG9sYXRpb25NZXRob2QpKTsKICAgICB9CiAKICAgICB2b2lkIHNldEFu
Z2xlKFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4mJiB2YWx1ZSkgeyBtX2FuZ2xlID0gV1RGTW92ZSh2
YWx1ZSk7IH0KQEAgLTE0OSw4ICsxNTQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBlcXVhbHMoY29u
c3QgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0xp
bmVhckdyYWRpZW50VmFsdWUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5
cGUgZ3JhZGllbnRUeXBlID0gQ1NTTGluZWFyR3JhZGllbnQpCi0gICAgICAgIDogQ1NTR3JhZGll
bnRWYWx1ZShMaW5lYXJHcmFkaWVudENsYXNzLCByZXBlYXQsIGdyYWRpZW50VHlwZSkKKyAgICBD
U1NMaW5lYXJHcmFkaWVudFZhbHVlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGll
bnRUeXBlIGdyYWRpZW50VHlwZSwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZCkKKyAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKExpbmVhckdyYWRpZW50
Q2xhc3MsIHJlcGVhdCwgZ3JhZGllbnRUeXBlLCBjb2xvckludGVycG9sYXRpb25NZXRob2QpCiAg
ICAgewogICAgIH0KIApAQCAtMTY1LDkgKzE3MCw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIENTU1Jh
ZGlhbEdyYWRpZW50VmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTR3JhZGllbnRWYWx1ZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiBjcmVhdGUoQ1NTR3Jh
ZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlID0gQ1NTUmFk
aWFsR3JhZGllbnQpCisgICAgc3RhdGljIFJlZjxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiBjcmVh
dGUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBl
LCBDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShy
ZXBlYXQsIGdyYWRpZW50VHlwZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NS
YWRpYWxHcmFkaWVudFZhbHVlKHJlcGVhdCwgZ3JhZGllbnRUeXBlLCBjb2xvckludGVycG9sYXRp
b25NZXRob2QpKTsKICAgICB9CiAKICAgICBSZWY8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gY2xv
bmUoKSBjb25zdApAQCAtMTkyLDggKzE5Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGVxdWFscyhj
b25zdCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlJikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQ1NT
UmFkaWFsR3JhZGllbnRWYWx1ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIENTU0dyYWRpZW50
VHlwZSBncmFkaWVudFR5cGUgPSBDU1NSYWRpYWxHcmFkaWVudCkKLSAgICAgICAgOiBDU1NHcmFk
aWVudFZhbHVlKFJhZGlhbEdyYWRpZW50Q2xhc3MsIHJlcGVhdCwgZ3JhZGllbnRUeXBlKQorICAg
IENTU1JhZGlhbEdyYWRpZW50VmFsdWUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFk
aWVudFR5cGUgZ3JhZGllbnRUeXBlLCBDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kKQorICAgICAgICA6IENTU0dyYWRpZW50VmFsdWUoUmFkaWFsR3JhZGll
bnRDbGFzcywgcmVwZWF0LCBncmFkaWVudFR5cGUsIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkK
ICAgICB7CiAgICAgfQogCkBAIC0yMjUsOSArMjMwLDkgQEAgcHJpdmF0ZToKIAogY2xhc3MgQ1NT
Q29uaWNHcmFkaWVudFZhbHVlIGZpbmFsIDogcHVibGljIENTU0dyYWRpZW50VmFsdWUgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPiBjcmVhdGUoQ1NTR3Jh
ZGllbnRSZXBlYXQgcmVwZWF0KQorICAgIHN0YXRpYyBSZWY8Q1NTQ29uaWNHcmFkaWVudFZhbHVl
PiBjcmVhdGUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBDb2xvckludGVycG9sYXRpb25NZXRo
b2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ1NTQ29uaWNHcmFkaWVudFZhbHVlKHJlcGVhdCkpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBDU1NDb25pY0dyYWRpZW50VmFsdWUocmVwZWF0LCBjb2xvckludGVycG9s
YXRpb25NZXRob2QpKTsKICAgICB9CiAKICAgICBSZWY8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPiBj
bG9uZSgpIGNvbnN0CkBAIC0yNDUsOCArMjUwLDggQEAgcHVibGljOgogICAgIGJvb2wgZXF1YWxz
KGNvbnN0IENTU0NvbmljR3JhZGllbnRWYWx1ZSYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4
cGxpY2l0IENTU0NvbmljR3JhZGllbnRWYWx1ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQpCi0g
ICAgICAgIDogQ1NTR3JhZGllbnRWYWx1ZShDb25pY0dyYWRpZW50Q2xhc3MsIHJlcGVhdCwgQ1NT
Q29uaWNHcmFkaWVudCkKKyAgICBleHBsaWNpdCBDU1NDb25pY0dyYWRpZW50VmFsdWUoQ1NTR3Jh
ZGllbnRSZXBlYXQgcmVwZWF0LCBDb2xvckludGVycG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kKQorICAgICAgICA6IENTU0dyYWRpZW50VmFsdWUoQ29uaWNHcmFkaWVudENs
YXNzLCByZXBlYXQsIENTU0NvbmljR3JhZGllbnQsIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkK
ICAgICB7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3Bl
cnR5UGFyc2VySGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCShyZXZpc2lvbiAyODY5MTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VySGVscGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5NTIsOSArMjk1Miw5IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVEZXByZWNhdGUKICAgICBDU1NWYWx1ZUlEIGlkID0gYXJncy5jb25zdW1lSW5jbHVk
aW5nV2hpdGVzcGFjZSgpLmlkKCk7CiAgICAgYm9vbCBpc0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVu
dCA9IChpZCA9PSBDU1NWYWx1ZVJhZGlhbCk7CiAgICAgaWYgKGlzRGVwcmVjYXRlZFJhZGlhbEdy
YWRpZW50KQotICAgICAgICByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUo
Tm9uUmVwZWF0aW5nLCBDU1NEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpOworICAgICAgICByZXN1
bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUoTm9uUmVwZWF0aW5nLCBDU1NEZXBy
ZWNhdGVkUmFkaWFsR3JhZGllbnQsIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsg
fSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogICAgIGVsc2Ug
aWYgKGlkID09IENTU1ZhbHVlTGluZWFyKQotICAgICAgICByZXN1bHQgPSBDU1NMaW5lYXJHcmFk
aWVudFZhbHVlOjpjcmVhdGUoTm9uUmVwZWF0aW5nLCBDU1NEZXByZWNhdGVkTGluZWFyR3JhZGll
bnQpOworICAgICAgICByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUoTm9u
UmVwZWF0aW5nLCBDU1NEZXByZWNhdGVkTGluZWFyR3JhZGllbnQsIHsgQ29sb3JJbnRlcnBvbGF0
aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBs
aWVkIH0pOwogICAgIGlmICghcmVzdWx0IHx8ICFjb25zdW1lQ29tbWFJbmNsdWRpbmdXaGl0ZXNw
YWNlKGFyZ3MpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMzA1NCw3ICszMDU0LDcg
QEAgc3RhdGljIGJvb2wgY29uc3VtZUdyYWRpZW50Q29sb3JTdG9wcyhDUwogCiBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KENTU1BhcnNlclRv
a2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRleHQsIENTU0dyYWRp
ZW50UmVwZWF0IHJlcGVhdGluZykKIHsKLSAgICBhdXRvIHJlc3VsdCA9IENTU1JhZGlhbEdyYWRp
ZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIENTU1ByZWZpeGVkUmFkaWFsR3JhZGllbnQpOwor
ICAgIGF1dG8gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGlu
ZywgQ1NTUHJlZml4ZWRSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6
OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAK
ICAgICBhdXRvIGNlbnRlckNvb3JkaW5hdGUgPSBjb25zdW1lT25lT3JUd29WYWx1ZWRQb3NpdGlv
bkNvb3JkaW5hdGVzKGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkKTsK
ICAgICBpZiAoY2VudGVyQ29vcmRpbmF0ZSAmJiAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVz
cGFjZShhcmdzKSkKQEAgLTMwOTgsNyArMzA5OCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVEZXByZWNhdGUKIAogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVJhZGlh
bEdyYWRpZW50KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRl
eHQmIGNvbnRleHQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKIHsKLSAgICBSZWZQdHI8
Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6
Y3JlYXRlKHJlcGVhdGluZywgQ1NTUmFkaWFsR3JhZGllbnQpOworICAgIFJlZlB0cjxDU1NSYWRp
YWxHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGUo
cmVwZWF0aW5nLCBDU1NSYWRpYWxHcmFkaWVudCwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6
OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAK
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHNoYXBlOwogICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gc2l6ZUtleXdvcmQ7CkBAIC0zMTg2LDcgKzMxODYsNyBAQCBzdGF0aWMgUmVm
UHRyPENTU1ZhbHVlPiBjb25zdW1lUmFkaWFsR3JhCiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+
IGNvbnN1bWVMaW5lYXJHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBD
U1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcsIENT
U0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUpCiB7Ci0gICAgUmVmUHRyPENTU0xpbmVhckdyYWRp
ZW50VmFsdWU+IHJlc3VsdCA9IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRp
bmcsIGdyYWRpZW50VHlwZSk7CisgICAgUmVmUHRyPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IHJl
c3VsdCA9IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIGdyYWRpZW50
VHlwZSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAKICAgICBib29sIGV4cGVjdENvbW1hID0g
dHJ1ZTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGFuZ2xlID0gY29uc3VtZUFuZ2xl
KGFyZ3MsIGNvbnRleHQubW9kZSwgVW5pdGxlc3NRdWlyazo6Rm9yYmlkLCBVbml0bGVzc1plcm9R
dWlyazo6QWxsb3cpOwpAQCAtMzIyMCw3ICszMjIwLDcgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1
ZT4gY29uc3VtZUxpbmVhckdyYQogc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZUNvbmlj
R3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2VyQ29udGV4
dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nKQogewogI2lmIEVOQUJMRShD
U1NfQ09OSUNfR1JBRElFTlRTKQotICAgIFJlZlB0cjxDU1NDb25pY0dyYWRpZW50VmFsdWU+IHJl
c3VsdCA9IENTU0NvbmljR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGluZyk7CisgICAgUmVm
UHRyPENTU0NvbmljR3JhZGllbnRWYWx1ZT4gcmVzdWx0ID0gQ1NTQ29uaWNHcmFkaWVudFZhbHVl
OjpjcmVhdGUocmVwZWF0aW5nLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0s
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKIAogICAgIGJvb2wg
ZXhwZWN0Q29tbWEgPSBmYWxzZTsKICAgICBpZiAoYXJncy5wZWVrKCkudHlwZSgpID09IElkZW50
VG9rZW4pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAko
cmV2aXNpb24gMjg2OTExKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzOSw3ICsyMTM5LDcgQEAgc3RhdGljIFJlZjxDU1NM
aW5lYXJHcmFkaWVudFZhbHVlPiBhdXRvRgogICAgIHNlY29uZFN0b3AuY29sb3IgPSBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUNvbG9yVmFsdWUoQ29sb3I6OnRyYW5zcGFyZW50Qmxh
Y2spOwogICAgIHNlY29uZFN0b3AucG9zaXRpb24gPSBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigp
LmNyZWF0ZVZhbHVlKDEwMCwgQ1NTVW5pdFR5cGU6OkNTU19QRVJDRU5UQUdFKTsKIAotICAgIGF1
dG8gZ3JhZGllbnQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUoQ1NTR3JhZGllbnRS
ZXBlYXQ6Ok5vblJlcGVhdGluZywgQ1NTR3JhZGllbnRUeXBlOjpDU1NMaW5lYXJHcmFkaWVudCk7
CisgICAgYXV0byBncmFkaWVudCA9IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZShDU1NH
cmFkaWVudFJlcGVhdDo6Tm9uUmVwZWF0aW5nLCBDU1NHcmFkaWVudFR5cGU6OkNTU0xpbmVhckdy
YWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICBncmFkaWVudC0+c2V0QW5nbGUo
Q1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSg5MCwgQ1NTVW5pdFR5cGU6OkNT
U19ERUcpKTsKICAgICBncmFkaWVudC0+YWRkU3RvcChXVEZNb3ZlKGZpcnN0U3RvcCkpOwogICAg
IGdyYWRpZW50LT5hZGRTdG9wKFdURk1vdmUoc2Vjb25kU3RvcCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcAkocmV2aXNpb24gMjg2OTEx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzR3JhZGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwxOSArMzQsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2Fu
dmFzR3JhZGllbnQ6OkNhbnZhc0dyYWRpZW50KGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBjb25zdCBG
bG9hdFBvaW50JiBwMSwgQ2FudmFzQmFzZSYgY2FudmFzQmFzZSkKLSAgICA6IG1fZ3JhZGllbnQo
R3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IHAwLCBwMSB9KSkKKyAgICA6
IG1fZ3JhZGllbnQoR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IHAwLCBw
MSB9LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KSkKICAgICAsIG1fY2FudmFzKGNhbnZhc0Jhc2Up
CiB7CiB9CiAKIENhbnZhc0dyYWRpZW50OjpDYW52YXNHcmFkaWVudChjb25zdCBGbG9hdFBvaW50
JiBwMCwgZmxvYXQgcjAsIGNvbnN0IEZsb2F0UG9pbnQmIHAxLCBmbG9hdCByMSwgQ2FudmFzQmFz
ZSYgY2FudmFzQmFzZSkKLSAgICA6IG1fZ3JhZGllbnQoR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVu
dDo6UmFkaWFsRGF0YSB7IHAwLCBwMSwgcjAsIHIxLCAxIH0pKQorICAgIDogbV9ncmFkaWVudChH
cmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpSYWRpYWxEYXRhIHsgcDAsIHAxLCByMCwgcjEsIDEg
fSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSkpCiAgICAgLCBtX2NhbnZhcyhjYW52YXNCYXNlKQog
ewogfQogCiBDYW52YXNHcmFkaWVudDo6Q2FudmFzR3JhZGllbnQoY29uc3QgRmxvYXRQb2ludCYg
Y2VudGVyUG9pbnQsIGZsb2F0IGFuZ2xlSW5SYWRpYW5zLCBDYW52YXNCYXNlJiBjYW52YXNCYXNl
KQotICAgIDogbV9ncmFkaWVudChHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpDb25pY0RhdGEg
eyBjZW50ZXJQb2ludCwgYW5nbGVJblJhZGlhbnMgfSkpCisgICAgOiBtX2dyYWRpZW50KEdyYWRp
ZW50OjpjcmVhdGUoR3JhZGllbnQ6OkNvbmljRGF0YSB7IGNlbnRlclBvaW50LCBhbmdsZUluUmFk
aWFucyB9LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KSkKICAgICAsIG1fY2FudmFzKGNhbnZhc0Jh
c2UpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvcklu
dGVycG9sYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckludGVycG9sYXRpb24uaAkocmV2aXNpb24gMjg2OTExKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDg3ICsyNiwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgorI2luY2x1ZGUgIkNv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5oIgogI2luY2x1ZGUgIkNvbG9yTm9ybWFsaXphdGlvbi5o
IgotI2luY2x1ZGUgPG9wdGlvbmFsPgotI2luY2x1ZGUgPHZhcmlhbnQ+Ci0jaW5jbHVkZSA8d3Rm
L0VudW1UcmFpdHMuaD4KKyNpbmNsdWRlICJDb2xvclR5cGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotZW51bSBjbGFzcyBIdWVJbnRlcnBvbGF0aW9uTWV0aG9kIDogdWludDhfdCB7Ci0g
ICAgU2hvcnRlciwKLSAgICBMb25nZXIsCi0gICAgSW5jcmVhc2luZywKLSAgICBEZWNyZWFzaW5n
LAotICAgIFNwZWNpZmllZAotfTsKLQotZW51bSBjbGFzcyBDb2xvckludGVycG9sYXRpb25Db2xv
clNwYWNlIDogdWludDhfdCB7Ci0gICAgSFNMLAotICAgIEhXQiwKLSAgICBMQ0gsCi0gICAgTGFi
LAotICAgIE9LTENILAotICAgIE9LTGFiLAotICAgIFNSR0IsCi0gICAgU1JHQkxpbmVhciwKLSAg
ICBYWVpENTAsCi0gICAgWFlaRDY1Ci19OwotICAgIAotc3RydWN0IENvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZCB7Ci0gICAgc3RydWN0IEhTTCB7Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0
byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6
OkhTTDsKLSAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6SFNMQTxmbG9hdD47Ci0g
ICAgICAgIEh1ZUludGVycG9sYXRpb25NZXRob2QgaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCA9IEh1
ZUludGVycG9sYXRpb25NZXRob2Q6OlNob3J0ZXI7Ci0gICAgfTsKLSAgICBzdHJ1Y3QgSFdCIHsK
LSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9sYXRpb25Db2xvclNwYWNlID0g
Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6SFdCOwotICAgICAgICB1c2luZyBDb2xvclR5
cGUgPSBXZWJDb3JlOjpIV0JBPGZsb2F0PjsKLSAgICAgICAgSHVlSW50ZXJwb2xhdGlvbk1ldGhv
ZCBodWVJbnRlcnBvbGF0aW9uTWV0aG9kID0gSHVlSW50ZXJwb2xhdGlvbk1ldGhvZDo6U2hvcnRl
cjsKLSAgICB9OwotICAgIHN0cnVjdCBMQ0ggewotICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNl
OjpMQ0g7Ci0gICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6OkxDSEE8ZmxvYXQ+Owot
ICAgICAgICBIdWVJbnRlcnBvbGF0aW9uTWV0aG9kIGh1ZUludGVycG9sYXRpb25NZXRob2QgPSBI
dWVJbnRlcnBvbGF0aW9uTWV0aG9kOjpTaG9ydGVyOwotICAgIH07Ci0gICAgc3RydWN0IExhYiB7
Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9
IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OkxhYjsKLSAgICAgICAgdXNpbmcgQ29sb3JU
eXBlID0gV2ViQ29yZTo6TGFiPGZsb2F0PjsKLSAgICB9OwotICAgIHN0cnVjdCBPS0xDSCB7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENv
bG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6Ok9LTENIOwotICAgICAgICB1c2luZyBDb2xvclR5
cGUgPSBXZWJDb3JlOjpPS0xDSEE8ZmxvYXQ+OwotICAgICAgICBIdWVJbnRlcnBvbGF0aW9uTWV0
aG9kIGh1ZUludGVycG9sYXRpb25NZXRob2QgPSBIdWVJbnRlcnBvbGF0aW9uTWV0aG9kOjpTaG9y
dGVyOwotICAgIH07Ci0gICAgc3RydWN0IE9LTGFiIHsKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGludGVycG9sYXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JT
cGFjZTo6T0tMYWI7Ci0gICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6Ok9LTGFiPGZs
b2F0PjsKLSAgICB9OwotICAgIHN0cnVjdCBTUkdCIHsKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGludGVycG9sYXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JT
cGFjZTo6U1JHQjsKLSAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6U1JHQkE8Zmxv
YXQ+OwotICAgIH07Ci0gICAgc3RydWN0IFNSR0JMaW5lYXIgewotICAgICAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9sYXRpb25D
b2xvclNwYWNlOjpTUkdCTGluZWFyOwotICAgICAgICB1c2luZyBDb2xvclR5cGUgPSBXZWJDb3Jl
OjpMaW5lYXJTUkdCQTxmbG9hdD47Ci0gICAgfTsKLSAgICBzdHJ1Y3QgWFlaRDUwIHsKLSAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9sYXRpb25Db2xvclNwYWNlID0gQ29sb3JJ
bnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6WFlaRDUwOwotICAgICAgICB1c2luZyBDb2xvclR5cGUg
PSBXZWJDb3JlOjpYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENTA+OwotICAgIH07Ci0gICAgc3Ry
dWN0IFhZWkQ2NSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9u
Q29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlhZWkQ2NTsKLSAgICAg
ICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1
PjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUo
RW5jb2RlciYpIGNvbnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZD4gZGVjb2RlKERlY29kZXImKTsK
LQotICAgIHN0ZDo6dmFyaWFudDxIU0wsIEhXQiwgTENILCBMYWIsIE9LTENILCBPS0xhYiwgU1JH
QiwgU1JHQkxpbmVhciwgWFlaRDUwLCBYWVpENjU+IGNvbG9yU3BhY2U7Ci0gICAgQWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uOwotfTsKKy8vIE1BUks6IC0gUHJl
LWludGVycG9sYXRpb24gbm9ybWFsaXphdGlvbi9maXh1cAogCiBzdGQ6OnBhaXI8ZmxvYXQsIGZs
b2F0PiBmaXh1cEh1ZUNvbXBvbmVudHNQcmlvclRvSW50ZXJwb2xhdGlvbihIdWVJbnRlcnBvbGF0
aW9uTWV0aG9kLCBmbG9hdCwgZmxvYXQpOwogCkBAIC0xMzksNiArNjUsOSBAQCBzdGQ6OnBhaXI8
Q29sb3JDb21wb25lbnRzPGZsb2F0LCA0PiwgQ29sCiAgICAgfTsKIH0KIAorCisvLyBNQVJLOiAt
IFBvc3QtaW50ZXJwb2xhdGlvbiBub3JtYWxpemF0aW9uL2ZpeHVwCisKIHRlbXBsYXRlPHNpemVf
dCBJLCBBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVsdGlwbGljYXRpb24sIHR5cGVu
YW1lIEludGVycG9sYXRpb25NZXRob2Q+CiBmbG9hdCBwb3N0SW50ZXJwb2xhdGlvbk5vcm1hbGl6
YXRpb25Gb3JDb21wb25lbnQoSW50ZXJwb2xhdGlvbk1ldGhvZCwgQ29sb3JDb21wb25lbnRzPGZs
b2F0LCA0PiBjb2xvckNvbXBvbmVudHMpCiB7CkBAIC0xNjQsMTI2ICs5MywyNSBAQCBDb2xvckNv
bXBvbmVudHM8ZmxvYXQsIDQ+IHBvc3RJbnRlcnBvbGF0CiAgICAgfTsKICB9CiAKKworLy8gTUFS
SzogLSBJbnRlcnBvbGF0aW9uCisKIHRlbXBsYXRlPEFscGhhUHJlbXVsdGlwbGljYXRpb24gYWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiwgdHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZD4KIHR5cGVu
YW1lIEludGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZSBpbnRlcnBvbGF0ZUNvbG9yQ29tcG9u
ZW50cyhJbnRlcnBvbGF0aW9uTWV0aG9kIGludGVycG9sYXRpb25NZXRob2QsIHR5cGVuYW1lIElu
dGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZSBjb2xvcjEsIGRvdWJsZSBjb2xvcjFNdWx0aXBs
aWVyLCB0eXBlbmFtZSBJbnRlcnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5cGUgY29sb3IyLCBkb3Vi
bGUgY29sb3IyTXVsdGlwbGllcikKIHsKKyAgICAvLyAxLiBBcHBseSBwcmUtaW50ZXJwb2xhdGlv
biB0cmFuc2Zvcm1zIChodWUgZml4dXAgZm9yIHBvbGFyIGNvbG9yIHNwYWNlcywgYWxwaGEgcHJl
bXVsdGlwbGljYXRpb24gaWYgcmVxdWlyZWQpLgogICAgIGF1dG8gW25vcm1hbGl6ZWRDb2xvckNv
bXBvbmVudHMxLCBub3JtYWxpemVkQ29sb3JDb21wb25lbnRzMl0gPSBwcmVJbnRlcnBvbGF0aW9u
Tm9ybWFsaXphdGlvbjxhbHBoYVByZW11bHRpcGxpY2F0aW9uPihpbnRlcnBvbGF0aW9uTWV0aG9k
LCBhc0NvbG9yQ29tcG9uZW50cyhjb2xvcjEpLCBhc0NvbG9yQ29tcG9uZW50cyhjb2xvcjIpKTsK
IAorICAgIC8vIDIuIEludGVycG9sYXRlIHVzaW5nIHRoZSBub3JtYWxpemVkIGNvbXBvbmVudHMu
CiAgICAgYXV0byBpbnRlcnBvbGF0ZWRDb2xvckNvbXBvbmVudHMgPSBtYXBDb2xvckNvbXBvbmVu
dHMoWyZdIChhdXRvIGNvbXBvbmVudEZyb21Db2xvcjEsIGF1dG8gY29tcG9uZW50RnJvbUNvbG9y
MikgLT4gZmxvYXQgewogICAgICAgICByZXR1cm4gKGNvbXBvbmVudEZyb21Db2xvcjEgKiBjb2xv
cjFNdWx0aXBsaWVyKSArIChjb21wb25lbnRGcm9tQ29sb3IyICogY29sb3IyTXVsdGlwbGllcik7
CiAgICAgfSwgbm9ybWFsaXplZENvbG9yQ29tcG9uZW50czEsIG5vcm1hbGl6ZWRDb2xvckNvbXBv
bmVudHMyKTsKIAorICAgIC8vIDMuIEFwcGx5IHBvc3QtaW50ZXJwb2xhdGlvbiB0cmFzZm9ybXMg
KGFscGhhIHVuLXByZW11bHRpcGxpY2F0aW9uIGlmIHJlcXVpcmVkKS4KICAgICBhdXRvIG5vcm1h
bGl6ZWRJbnRlcnBvbGF0ZWRDb2xvckNvbXBvbmVudHMgPSBwb3N0SW50ZXJwb2xhdGlvbk5vcm1h
bGl6YXRpb248YWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZCwgaW50
ZXJwb2xhdGVkQ29sb3JDb21wb25lbnRzKTsKIAorICAgIC8vIDQuIENyZWF0ZSBjb2xvciB0eXBl
IGZyb20gY29tcG9uZW50cywgbm9ybWFsaXppbmcgYW55IGNvbXBvbmVudHMgdGhhdCBtYXkgYmUg
b3V0IG9mIHJhbmdlLgogICAgIHJldHVybiBtYWtlQ29sb3JUeXBlQnlOb3JtYWxpemluZ0NvbXBv
bmVudHM8dHlwZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZDo6Q29sb3JUeXBlPihub3JtYWxpemVk
SW50ZXJwb2xhdGVkQ29sb3JDb21wb25lbnRzKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgRW5j
b2Rlcj4gdm9pZCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgYWxwaGFQcmVtdWx0aXBsaWNhdGlvbjsKLQot
ICAgIFdURjo6c3dpdGNoT24oY29sb3JTcGFjZSwKLSAgICAgICAgWyZdIChhdXRvJiB0eXBlKSB7
Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IHR5cGUuaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U7Ci0g
ICAgICAgICAgICBpZiBjb25zdGV4cHIgKGRlY2x0eXBlKHR5cGUpOjpDb2xvclR5cGU6Ok1vZGVs
Ojpjb29yZGluYXRlU3lzdGVtID09IENvbG9yU3BhY2VDb29yZGluYXRlU3lzdGVtOjpDeWxpbmRy
aWNhbFBvbGFyKSB7Ci0gICAgICAgICAgICAgICAgZW5jb2RlciA8PCB0eXBlLmh1ZUludGVycG9s
YXRpb25NZXRob2Q7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICApOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsPENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZD4gQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikK
LXsKLSAgICBzdGQ6Om9wdGlvbmFsPEFscGhhUHJlbXVsdGlwbGljYXRpb24+IGFscGhhUHJlbXVs
dGlwbGljYXRpb247Ci0gICAgZGVjb2RlciA+PiBhbHBoYVByZW11bHRpcGxpY2F0aW9uOwotICAg
IGlmICghYWxwaGFQcmVtdWx0aXBsaWNhdGlvbikKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKLQotICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZT4gaW50
ZXJwb2xhdGlvbkNvbG9yU3BhY2U7Ci0gICAgZGVjb2RlciA+PiBpbnRlcnBvbGF0aW9uQ29sb3JT
cGFjZTsKLSAgICBpZiAoIWludGVycG9sYXRpb25Db2xvclNwYWNlKQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgc3dpdGNoICgqaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UpIHsK
LSAgICBjYXNlIENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OkhTTDogewotICAgICAgICBz
dGQ6Om9wdGlvbmFsPEh1ZUludGVycG9sYXRpb25NZXRob2Q+IGh1ZUludGVycG9sYXRpb25NZXRo
b2Q7Ci0gICAgICAgIGRlY29kZXIgPj4gaHVlSW50ZXJwb2xhdGlvbk1ldGhvZDsKLSAgICAgICAg
aWYgKCFodWVJbnRlcnBvbGF0aW9uTWV0aG9kKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgICAgICByZXR1cm4gQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kOjpIU0wgeyAqaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCB9LCAqYWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiB9OwotICAgIH0KLSAgICBjYXNlIENvbG9ySW50ZXJwb2xhdGlv
bkNvbG9yU3BhY2U6OkhXQjogewotICAgICAgICBzdGQ6Om9wdGlvbmFsPEh1ZUludGVycG9sYXRp
b25NZXRob2Q+IGh1ZUludGVycG9sYXRpb25NZXRob2Q7Ci0gICAgICAgIGRlY29kZXIgPj4gaHVl
SW50ZXJwb2xhdGlvbk1ldGhvZDsKLSAgICAgICAgaWYgKCFodWVJbnRlcnBvbGF0aW9uTWV0aG9k
KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICByZXR1cm4gQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpIV0IgeyAq
aHVlSW50ZXJwb2xhdGlvbk1ldGhvZCB9LCAqYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiB9OwotICAg
IH0KLSAgICBjYXNlIENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OkxDSDogewotICAgICAg
ICBzdGQ6Om9wdGlvbmFsPEh1ZUludGVycG9sYXRpb25NZXRob2Q+IGh1ZUludGVycG9sYXRpb25N
ZXRob2Q7Ci0gICAgICAgIGRlY29kZXIgPj4gaHVlSW50ZXJwb2xhdGlvbk1ldGhvZDsKLSAgICAg
ICAgaWYgKCFodWVJbnRlcnBvbGF0aW9uTWV0aG9kKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLQotICAgICAgICByZXR1cm4gQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpMQ0ggeyAqaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCB9LCAq
YWxwaGFQcmVtdWx0aXBsaWNhdGlvbiB9OwotICAgIH0KLSAgICBjYXNlIENvbG9ySW50ZXJwb2xh
dGlvbkNvbG9yU3BhY2U6Ok9LTENIOiB7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8SHVlSW50ZXJw
b2xhdGlvbk1ldGhvZD4gaHVlSW50ZXJwb2xhdGlvbk1ldGhvZDsKLSAgICAgICAgZGVjb2RlciA+
PiBodWVJbnRlcnBvbGF0aW9uTWV0aG9kOwotICAgICAgICBpZiAoIWh1ZUludGVycG9sYXRpb25N
ZXRob2QpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgICAgIHJldHVy
biBDb2xvckludGVycG9sYXRpb25NZXRob2QgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6Ok9L
TENIIHsgKmh1ZUludGVycG9sYXRpb25NZXRob2QgfSwgKmFscGhhUHJlbXVsdGlwbGljYXRpb24g
fTsKLSAgICB9Ci0gICAgY2FzZSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpMYWI6Ci0g
ICAgICAgIHJldHVybiBDb2xvckludGVycG9sYXRpb25NZXRob2QgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OkxhYiB7IH0sICphbHBoYVByZW11bHRpcGxpY2F0aW9uIH07Ci0gICAgY2FzZSBD
b2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpPS0xhYjoKLSAgICAgICAgcmV0dXJuIENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6T0tMYWIgeyB9
LCAqYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiB9OwotICAgIGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9u
Q29sb3JTcGFjZTo6U1JHQjoKLSAgICAgICAgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sICphbHBoYVByZW11bHRpcGxp
Y2F0aW9uIH07Ci0gICAgY2FzZSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpTUkdCTGlu
ZWFyOgotICAgICAgICByZXR1cm4gQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kOjpTUkdCTGluZWFyIHsgfSwgKmFscGhhUHJlbXVsdGlwbGljYXRpb24g
fTsKLSAgICBjYXNlIENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlhZWkQ1MDoKLSAgICAg
ICAgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZDo6WFlaRDUwIHsgfSwgKmFscGhhUHJlbXVsdGlwbGljYXRpb24gfTsKLSAgICBjYXNlIENv
bG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlhZWkQ2NToKLSAgICAgICAgcmV0dXJuIENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6WFlaRDY1IHsg
fSwgKmFscGhhUHJlbXVsdGlwbGljYXRpb24gfTsKLSAgICB9Ci0KLSAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KLX0KLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViQ29yZTo6SHVl
SW50ZXJwb2xhdGlvbk1ldGhvZD4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0g
ICAgICAgIFdlYkNvcmU6Okh1ZUludGVycG9sYXRpb25NZXRob2QsCi0gICAgICAgIFdlYkNvcmU6
Okh1ZUludGVycG9sYXRpb25NZXRob2Q6OlNob3J0ZXIsCi0gICAgICAgIFdlYkNvcmU6Okh1ZUlu
dGVycG9sYXRpb25NZXRob2Q6OkxvbmdlciwKLSAgICAgICAgV2ViQ29yZTo6SHVlSW50ZXJwb2xh
dGlvbk1ldGhvZDo6SW5jcmVhc2luZywKLSAgICAgICAgV2ViQ29yZTo6SHVlSW50ZXJwb2xhdGlv
bk1ldGhvZDo6RGVjcmVhc2luZywKLSAgICAgICAgV2ViQ29yZTo6SHVlSW50ZXJwb2xhdGlvbk1l
dGhvZDo6U3BlY2lmaWVkCi0gICAgPjsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFp
dHM8V2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZT4gewotICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYkNvcmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNv
bG9yU3BhY2UsCi0gICAgICAgIFdlYkNvcmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6
OkhTTCwKLSAgICAgICAgV2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6SFdC
LAotICAgICAgICBXZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpMQ0gsCi0g
ICAgICAgIFdlYkNvcmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OkxhYiwKLSAgICAg
ICAgV2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6T0tMQ0gsCi0gICAgICAg
IFdlYkNvcmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6Ok9LTGFiLAotICAgICAgICBX
ZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpTUkdCLAotICAgICAgICBXZWJD
b3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpTUkdCTGluZWFyLAotICAgICAgICBX
ZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpYWVpENTAsCi0gICAgICAgIFdl
YkNvcmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlhZWkQ2NQotICAgID47Ci19Owot
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9s
YXRpb25NZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvckludGVycG9sYXRpb25NZXRob2QuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb25NZXRob2QuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDI4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJBbHBoYVByZW11bHRpcGxpY2F0aW9uLmgiCisjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgor
I2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUgPHZhcmlhbnQ+CisjaW5jbHVkZSA8d3RmL0Vu
dW1UcmFpdHMuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworZW51bSBjbGFzcyBIdWVJbnRlcnBvbGF0aW9uTWV0aG9kIDogdWludDhfdCB7CisgICAg
U2hvcnRlciwKKyAgICBMb25nZXIsCisgICAgSW5jcmVhc2luZywKKyAgICBEZWNyZWFzaW5nLAor
ICAgIFNwZWNpZmllZAorfTsKKworZW51bSBjbGFzcyBDb2xvckludGVycG9sYXRpb25Db2xvclNw
YWNlIDogdWludDhfdCB7CisgICAgSFNMLAorICAgIEhXQiwKKyAgICBMQ0gsCisgICAgTGFiLAor
ICAgIE9LTENILAorICAgIE9LTGFiLAorICAgIFNSR0IsCisgICAgU1JHQkxpbmVhciwKKyAgICBY
WVpENTAsCisgICAgWFlaRDY1Cit9OworICAgIAorc3RydWN0IENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCB7CisgICAgc3RydWN0IEhTTCB7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBp
bnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OkhT
TDsKKyAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6SFNMQTxmbG9hdD47CisgICAg
ICAgIEh1ZUludGVycG9sYXRpb25NZXRob2QgaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCA9IEh1ZUlu
dGVycG9sYXRpb25NZXRob2Q6OlNob3J0ZXI7CisgICAgfTsKKyAgICBzdHJ1Y3QgSFdCIHsKKyAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9sYXRpb25Db2xvclNwYWNlID0gQ29s
b3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6SFdCOworICAgICAgICB1c2luZyBDb2xvclR5cGUg
PSBXZWJDb3JlOjpIV0JBPGZsb2F0PjsKKyAgICAgICAgSHVlSW50ZXJwb2xhdGlvbk1ldGhvZCBo
dWVJbnRlcnBvbGF0aW9uTWV0aG9kID0gSHVlSW50ZXJwb2xhdGlvbk1ldGhvZDo6U2hvcnRlcjsK
KyAgICB9OworICAgIHN0cnVjdCBMQ0ggeworICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8g
aW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpM
Q0g7CisgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6OkxDSEE8ZmxvYXQ+OworICAg
ICAgICBIdWVJbnRlcnBvbGF0aW9uTWV0aG9kIGh1ZUludGVycG9sYXRpb25NZXRob2QgPSBIdWVJ
bnRlcnBvbGF0aW9uTWV0aG9kOjpTaG9ydGVyOworICAgIH07CisgICAgc3RydWN0IExhYiB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENv
bG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OkxhYjsKKyAgICAgICAgdXNpbmcgQ29sb3JUeXBl
ID0gV2ViQ29yZTo6TGFiPGZsb2F0PjsKKyAgICB9OworICAgIHN0cnVjdCBPS0xDSCB7CisgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9y
SW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6Ok9LTENIOworICAgICAgICB1c2luZyBDb2xvclR5cGUg
PSBXZWJDb3JlOjpPS0xDSEE8ZmxvYXQ+OworICAgICAgICBIdWVJbnRlcnBvbGF0aW9uTWV0aG9k
IGh1ZUludGVycG9sYXRpb25NZXRob2QgPSBIdWVJbnRlcnBvbGF0aW9uTWV0aG9kOjpTaG9ydGVy
OworICAgIH07CisgICAgc3RydWN0IE9LTGFiIHsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGludGVycG9sYXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFj
ZTo6T0tMYWI7CisgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6Ok9LTGFiPGZsb2F0
PjsKKyAgICB9OworICAgIHN0cnVjdCBTUkdCIHsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGludGVycG9sYXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFj
ZTo6U1JHQjsKKyAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6U1JHQkE8ZmxvYXQ+
OworICAgIH07CisgICAgc3RydWN0IFNSR0JMaW5lYXIgeworICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9sYXRpb25Db2xv
clNwYWNlOjpTUkdCTGluZWFyOworICAgICAgICB1c2luZyBDb2xvclR5cGUgPSBXZWJDb3JlOjpM
aW5lYXJTUkdCQTxmbG9hdD47CisgICAgfTsKKyAgICBzdHJ1Y3QgWFlaRDUwIHsKKyAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9sYXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRl
cnBvbGF0aW9uQ29sb3JTcGFjZTo6WFlaRDUwOworICAgICAgICB1c2luZyBDb2xvclR5cGUgPSBX
ZWJDb3JlOjpYWVpBPGZsb2F0LCBXaGl0ZVBvaW50OjpENTA+OworICAgIH07CisgICAgc3RydWN0
IFhZWkQ2NSB7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29s
b3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlhZWkQ2NTsKKyAgICAgICAg
dXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDY1PjsK
KyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZD4gZGVjb2RlKERlY29kZXImKTsKKwor
ICAgIHN0ZDo6dmFyaWFudDxIU0wsIEhXQiwgTENILCBMYWIsIE9LTENILCBPS0xhYiwgU1JHQiwg
U1JHQkxpbmVhciwgWFlaRDUwLCBYWVpENjU+IGNvbG9yU3BhY2U7CisgICAgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uOworfTsKKwordGVtcGxhdGU8dHlwZW5h
bWUgRW5jb2Rlcj4gdm9pZCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgYWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjsKKworICAgIFdURjo6c3dpdGNoT24oY29sb3JTcGFjZSwKKyAgICAgICAgWyZdIChhdXRvJiB0
eXBlKSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHR5cGUuaW50ZXJwb2xhdGlvbkNvbG9yU3Bh
Y2U7CisgICAgICAgICAgICBpZiBjb25zdGV4cHIgKHN0ZDo6cmVtb3ZlX3JlZmVyZW5jZV90PGRl
Y2x0eXBlKHR5cGUpPjo6Q29sb3JUeXBlOjpNb2RlbDo6Y29vcmRpbmF0ZVN5c3RlbSA9PSBDb2xv
clNwYWNlQ29vcmRpbmF0ZVN5c3RlbTo6Q3lsaW5kcmljYWxQb2xhcikgeworICAgICAgICAgICAg
ICAgIGVuY29kZXIgPDwgdHlwZS5odWVJbnRlcnBvbGF0aW9uTWV0aG9kOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3Rk
OjpvcHRpb25hbDxDb2xvckludGVycG9sYXRpb25NZXRob2Q+IENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxBbHBo
YVByZW11bHRpcGxpY2F0aW9uPiBhbHBoYVByZW11bHRpcGxpY2F0aW9uOworICAgIGRlY29kZXIg
Pj4gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbjsKKyAgICBpZiAoIWFscGhhUHJlbXVsdGlwbGljYXRp
b24pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPENv
bG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U+IGludGVycG9sYXRpb25Db2xvclNwYWNlOworICAg
IGRlY29kZXIgPj4gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U7CisgICAgaWYgKCFpbnRlcnBvbGF0
aW9uQ29sb3JTcGFjZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN3aXRj
aCAoKmludGVycG9sYXRpb25Db2xvclNwYWNlKSB7CisgICAgY2FzZSBDb2xvckludGVycG9sYXRp
b25Db2xvclNwYWNlOjpIU0w6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxIdWVJbnRlcnBvbGF0
aW9uTWV0aG9kPiBodWVJbnRlcnBvbGF0aW9uTWV0aG9kOworICAgICAgICBkZWNvZGVyID4+IGh1
ZUludGVycG9sYXRpb25NZXRob2Q7CisgICAgICAgIGlmICghaHVlSW50ZXJwb2xhdGlvbk1ldGhv
ZCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIENv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6SFNMIHsg
Kmh1ZUludGVycG9sYXRpb25NZXRob2QgfSwgKmFscGhhUHJlbXVsdGlwbGljYXRpb24gfTsKKyAg
ICB9CisgICAgY2FzZSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpIV0I6IHsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxIdWVJbnRlcnBvbGF0aW9uTWV0aG9kPiBodWVJbnRlcnBvbGF0aW9u
TWV0aG9kOworICAgICAgICBkZWNvZGVyID4+IGh1ZUludGVycG9sYXRpb25NZXRob2Q7CisgICAg
ICAgIGlmICghaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IENv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6SFdCIHsgKmh1ZUludGVycG9sYXRpb25NZXRob2QgfSwg
KmFscGhhUHJlbXVsdGlwbGljYXRpb24gfTsKKyAgICB9CisgICAgY2FzZSBDb2xvckludGVycG9s
YXRpb25Db2xvclNwYWNlOjpMQ0g6IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxIdWVJbnRlcnBv
bGF0aW9uTWV0aG9kPiBodWVJbnRlcnBvbGF0aW9uTWV0aG9kOworICAgICAgICBkZWNvZGVyID4+
IGh1ZUludGVycG9sYXRpb25NZXRob2Q7CisgICAgICAgIGlmICghaHVlSW50ZXJwb2xhdGlvbk1l
dGhvZCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAgcmV0dXJu
IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6TENI
IHsgKmh1ZUludGVycG9sYXRpb25NZXRob2QgfSwgKmFscGhhUHJlbXVsdGlwbGljYXRpb24gfTsK
KyAgICB9CisgICAgY2FzZSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpPS0xDSDogewor
ICAgICAgICBzdGQ6Om9wdGlvbmFsPEh1ZUludGVycG9sYXRpb25NZXRob2Q+IGh1ZUludGVycG9s
YXRpb25NZXRob2Q7CisgICAgICAgIGRlY29kZXIgPj4gaHVlSW50ZXJwb2xhdGlvbk1ldGhvZDsK
KyAgICAgICAgaWYgKCFodWVJbnRlcnBvbGF0aW9uTWV0aG9kKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKworICAgICAgICByZXR1cm4gQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
IHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpPS0xDSCB7ICpodWVJbnRlcnBvbGF0aW9uTWV0
aG9kIH0sICphbHBoYVByZW11bHRpcGxpY2F0aW9uIH07CisgICAgfQorICAgIGNhc2UgQ29sb3JJ
bnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6TGFiOgorICAgICAgICByZXR1cm4gQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpMYWIgeyB9LCAqYWxwaGFQ
cmVtdWx0aXBsaWNhdGlvbiB9OworICAgIGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFj
ZTo6T0tMYWI6CisgICAgICAgIHJldHVybiBDb2xvckludGVycG9sYXRpb25NZXRob2QgeyBDb2xv
ckludGVycG9sYXRpb25NZXRob2Q6Ok9LTGFiIHsgfSwgKmFscGhhUHJlbXVsdGlwbGljYXRpb24g
fTsKKyAgICBjYXNlIENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlNSR0I6CisgICAgICAg
IHJldHVybiBDb2xvckludGVycG9sYXRpb25NZXRob2QgeyBDb2xvckludGVycG9sYXRpb25NZXRo
b2Q6OlNSR0IgeyB9LCAqYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiB9OworICAgIGNhc2UgQ29sb3JJ
bnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6U1JHQkxpbmVhcjoKKyAgICAgICAgcmV0dXJuIENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQkxpbmVh
ciB7IH0sICphbHBoYVByZW11bHRpcGxpY2F0aW9uIH07CisgICAgY2FzZSBDb2xvckludGVycG9s
YXRpb25Db2xvclNwYWNlOjpYWVpENTA6CisgICAgICAgIHJldHVybiBDb2xvckludGVycG9sYXRp
b25NZXRob2QgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlhZWkQ1MCB7IH0sICphbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIH07CisgICAgY2FzZSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNl
OjpYWVpENjU6CisgICAgICAgIHJldHVybiBDb2xvckludGVycG9sYXRpb25NZXRob2QgeyBDb2xv
ckludGVycG9sYXRpb25NZXRob2Q6OlhZWkQ2NSB7IH0sICphbHBoYVByZW11bHRpcGxpY2F0aW9u
IH07CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworfQorCitpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNv
bnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCYgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKQor
eworICAgIGFkZChoYXNoZXIsIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5hbHBoYVByZW11bHRp
cGxpY2F0aW9uKTsKKyAgICBXVEY6OnN3aXRjaE9uKGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5j
b2xvclNwYWNlLAorICAgICAgICBbJl0gKGF1dG8mIHR5cGUpIHsKKyAgICAgICAgICAgIGFkZCho
YXNoZXIsIHR5cGUuaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UpOworICAgICAgICAgICAgaWYgY29u
c3RleHByIChzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxkZWNsdHlwZSh0eXBlKT46OkNvbG9yVHlw
ZTo6TW9kZWw6OmNvb3JkaW5hdGVTeXN0ZW0gPT0gQ29sb3JTcGFjZUNvb3JkaW5hdGVTeXN0ZW06
OkN5bGluZHJpY2FsUG9sYXIpIHsKKyAgICAgICAgICAgICAgICBhZGQoaGFzaGVyLCB0eXBlLmh1
ZUludGVycG9sYXRpb25NZXRob2QpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgKTsK
K30KKworaW5saW5lIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpIU0wmIGEsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6SFNM
JiBiKQoreworICAgIHJldHVybiBhLmh1ZUludGVycG9sYXRpb25NZXRob2QgPT0gYi5odWVJbnRl
cnBvbGF0aW9uTWV0aG9kOworfQorCitpbmxpbmUgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OkhXQiYgYSwgY29uc3QgQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpIV0ImIGIpCit7CisgICAgcmV0dXJuIGEuaHVlSW50ZXJwb2xhdGlvbk1l
dGhvZCA9PSBiLmh1ZUludGVycG9sYXRpb25NZXRob2Q7Cit9CisKK2lubGluZSBjb25zdGV4cHIg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6TENIJiBhLCBj
b25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OkxDSCYgYikKK3sKKyAgICByZXR1cm4gYS5o
dWVJbnRlcnBvbGF0aW9uTWV0aG9kID09IGIuaHVlSW50ZXJwb2xhdGlvbk1ldGhvZDsKK30KKwor
aW5saW5lIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kOjpPS0xDSCYgYSwgY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpPS0xDSCYg
YikKK3sKKyAgICByZXR1cm4gYS5odWVJbnRlcnBvbGF0aW9uTWV0aG9kID09IGIuaHVlSW50ZXJw
b2xhdGlvbk1ldGhvZDsKK30KKworaW5saW5lIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpMYWImLCBjb25zdCBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OkxhYiYpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6T0tMYWIm
LCBjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6Ok9LTGFiJikKK3sKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworaW5saW5lIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCJiwgY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
OjpTUkdCJikKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworaW5saW5lIGNvbnN0ZXhwciBib29s
IG9wZXJhdG9yPT0oY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCTGluZWFyJiwg
Y29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCTGluZWFyJikKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworaW5saW5lIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpYWVpENTAmLCBjb25zdCBDb2xvckludGVycG9sYXRpb25N
ZXRob2Q6OlhZWkQ1MCYpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBjb25zdGV4
cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6WFlaRDY1
JiwgY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpYWVpENjUmKQoreworICAgIHJldHVy
biB0cnVlOworfQorCitpbmxpbmUgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb2xv
ckludGVycG9sYXRpb25NZXRob2QmIGEsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCYg
YikKK3sKKyAgICByZXR1cm4gYS5hbHBoYVByZW11bHRpcGxpY2F0aW9uID09IGIuYWxwaGFQcmVt
dWx0aXBsaWNhdGlvbiAmJiBhLmNvbG9yU3BhY2UgPT0gYi5jb2xvclNwYWNlOworfQorCit9CisK
K25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6
Okh1ZUludGVycG9sYXRpb25NZXRob2Q+IHsKKyAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVz
PAorICAgICAgICBXZWJDb3JlOjpIdWVJbnRlcnBvbGF0aW9uTWV0aG9kLAorICAgICAgICBXZWJD
b3JlOjpIdWVJbnRlcnBvbGF0aW9uTWV0aG9kOjpTaG9ydGVyLAorICAgICAgICBXZWJDb3JlOjpI
dWVJbnRlcnBvbGF0aW9uTWV0aG9kOjpMb25nZXIsCisgICAgICAgIFdlYkNvcmU6Okh1ZUludGVy
cG9sYXRpb25NZXRob2Q6OkluY3JlYXNpbmcsCisgICAgICAgIFdlYkNvcmU6Okh1ZUludGVycG9s
YXRpb25NZXRob2Q6OkRlY3JlYXNpbmcsCisgICAgICAgIFdlYkNvcmU6Okh1ZUludGVycG9sYXRp
b25NZXRob2Q6OlNwZWNpZmllZAorICAgID47Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPFdlYkNvcmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U+IHsKKyAgICB1c2lu
ZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAorICAgICAgICBXZWJDb3JlOjpDb2xvckludGVycG9sYXRp
b25Db2xvclNwYWNlLAorICAgICAgICBXZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNw
YWNlOjpIU0wsCisgICAgICAgIFdlYkNvcmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6
OkhXQiwKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6TENI
LAorICAgICAgICBXZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpMYWIsCisg
ICAgICAgIFdlYkNvcmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6Ok9LTENILAorICAg
ICAgICBXZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpPS0xhYiwKKyAgICAg
ICAgV2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6U1JHQiwKKyAgICAgICAg
V2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6U1JHQkxpbmVhciwKKyAgICAg
ICAgV2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6WFlaRDUwLAorICAgICAg
ICBXZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpYWVpENjUKKyAgICA+Owor
fTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRp
ZW50LmNwcAkocmV2aXNpb24gMjg2OTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMyArMzQsMTQgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8R3JhZGllbnQ+IEdyYWRpZW50OjpjcmVhdGUoRGF0
YSYmIGRhdGEpCitSZWY8R3JhZGllbnQ+IEdyYWRpZW50OjpjcmVhdGUoRGF0YSYmIGRhdGEsIENv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgR3JhZGllbnQoV1RGTW92ZShkYXRhKSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEdyYWRpZW50KFdURk1vdmUoZGF0YSksIGNvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZCkpOwogfQogCi1HcmFkaWVudDo6R3JhZGllbnQoRGF0YSYmIGRhdGEpCi0gICAgOiBt
X2RhdGEoV1RGTW92ZShkYXRhKSkKK0dyYWRpZW50OjpHcmFkaWVudChEYXRhJiYgZGF0YSwgQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKKyAgICA6IG1f
ZGF0YSB7IFdURk1vdmUoZGF0YSkgfQorICAgICwgbV9jb2xvckludGVycG9sYXRpb25NZXRob2Qg
eyBjb2xvckludGVycG9sYXRpb25NZXRob2QgfQogewogfQogCkBAIC0xNTQsNyArMTU1LDcgQEAg
dW5zaWduZWQgR3JhZGllbnQ6Omhhc2goKSBjb25zdAogewogICAgIGlmICghbV9jYWNoZWRIYXNo
KSB7CiAgICAgICAgIHNvcnRTdG9wcygpOwotICAgICAgICBtX2NhY2hlZEhhc2ggPSBjb21wdXRl
SGFzaChtX2RhdGEsIG1fc3ByZWFkTWV0aG9kLCBtX3N0b3BzKTsKKyAgICAgICAgbV9jYWNoZWRI
YXNoID0gY29tcHV0ZUhhc2gobV9kYXRhLCBtX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCwgbV9z
cHJlYWRNZXRob2QsIG1fc3RvcHMpOwogICAgIH0KICAgICByZXR1cm4gbV9jYWNoZWRIYXNoOwog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oCShy
ZXZpc2lvbiAyODY5MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFk
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJHcmFw
aGljc1R5cGVzLmgiCiAjaW5jbHVkZSA8dmFyaWFudD4KQEAgLTEwMiw3ICsxMDMsNyBAQCBwdWJs
aWM6CiAKICAgICB1c2luZyBEYXRhID0gc3RkOjp2YXJpYW50PExpbmVhckRhdGEsIFJhZGlhbERh
dGEsIENvbmljRGF0YT47CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEdyYWRpZW50
PiBjcmVhdGUoRGF0YSYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEdyYWRpZW50
PiBjcmVhdGUoRGF0YSYmLCBDb2xvckludGVycG9sYXRpb25NZXRob2QpOwogCiAgICAgYm9vbCBp
c1plcm9TaXplKCkgY29uc3Q7CiAKQEAgLTEzOCw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UmVmPEdyYWRpZW50
Pj4gZGVjb2RlKERlY29kZXImKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBHcmFkaWVudChE
YXRhJiYpOworICAgIGV4cGxpY2l0IEdyYWRpZW50KERhdGEmJiwgQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kKTsKIAogICAgIHZvaWQgc29ydFN0b3BzKCkgY29uc3Q7CiAgICAgdm9pZCBzdG9wc0No
YW5nZWQoKTsKQEAgLTE0OSw2ICsxNTAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBEYXRh
IG1fZGF0YTsKKyAgICBDb2xvckludGVycG9sYXRpb25NZXRob2QgbV9jb2xvckludGVycG9sYXRp
b25NZXRob2Q7CiAgICAgbXV0YWJsZSBDb2xvclN0b3BWZWN0b3IgbV9zdG9wczsKICAgICBtdXRh
YmxlIGJvb2wgbV9zdG9wc1NvcnRlZCB7IGZhbHNlIH07CiAgICAgR3JhZGllbnRTcHJlYWRNZXRo
b2QgbV9zcHJlYWRNZXRob2QgeyBHcmFkaWVudFNwcmVhZE1ldGhvZDo6UGFkIH07CkBAIC0yNjgs
NiArMjcwLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbAogdGVt
cGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4gdm9pZCBHcmFkaWVudDo6ZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBtX2RhdGE7CisgICAgZW5jb2RlciA8PCBt
X2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDsKICAgICBlbmNvZGVyIDw8IG1fc3RvcHM7CiAgICAg
ZW5jb2RlciA8PCBtX3N0b3BzU29ydGVkOwogICAgIGVuY29kZXIgPDwgbV9zcHJlYWRNZXRob2Q7
CkBAIC0yNzksNyArMjgyLDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0
aW9uYWwKICAgICBkZWNvZGVyID4+IGRhdGE7CiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdU
Rk1vdmUoKmRhdGEpKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kPiBjb2xvckludGVycG9sYXRpb25NZXRob2Q7CisgICAgZGVjb2RlciA+PiBjb2xvckludGVy
cG9sYXRpb25NZXRob2Q7CisgICAgaWYgKCFjb2xvckludGVycG9sYXRpb25NZXRob2QpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6
OmNyZWF0ZShXVEZNb3ZlKCpkYXRhKSwgKmNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCk7CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPENvbG9yU3RvcFZlY3Rvcj4gc3RvcHM7CiAgICAgZGVjb2RlciA+PiBz
dG9wczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0J
KHJldmlzaW9uIDI4NjkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEyMSw3ICsxMTIxLDcgQEAgYm9vbCBSZW5kZXJU
aGVtZUlPUzo6cGFpbnRQcm9ncmVzc0JhcihjbwogICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUo
U29saWRTdHJva2UpOwogCiAgICAgY29uc3QgZmxvYXQgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlv
biA9IHJlY3QueSgpICsgdmVydGljYWxPZmZzZXQ7Ci0gICAgYXV0byBzdHJva2VHcmFkaWVudCA9
IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3Qu
eCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVy
dGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAg
YXV0byBzdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRh
dGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxv
YXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFy
SGVpZ2h0IC0gMSkgfSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgc3Ryb2tlR3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDAuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgMTQxLCAxNDEsIDE0MSB9
IH0pOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjQ1ZiwgU1JHQkE8dWlu
dDhfdD4geyAyMzgsIDIzOCwgMjM4IH0gfSk7CiAgICAgc3Ryb2tlR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuNTVmLCBTUkdCQTx1aW50OF90PiB7IDIzOCwgMjM4LCAyMzggfSB9KTsKQEAgLTEx
NDEsNyArMTE0MSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY28K
ICAgICBwYWludEluZm8uY29udGV4dCgpLmNsaXBSb3VuZGVkUmVjdChGbG9hdFJvdW5kZWRSZWN0
KGJvcmRlciwgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cywgcm91bmRl
ZENvcm5lclJhZGl1cywgcm91bmRlZENvcm5lclJhZGl1cykpOwogCiAgICAgZmxvYXQgdXBwZXJH
cmFkaWVudEhlaWdodCA9IHByb2dyZXNzQmFySGVpZ2h0IC8gMi47Ci0gICAgYXV0byB1cHBlckdy
YWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9p
bnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjVmKSwgRmxvYXRQb2lu
dChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHVwcGVyR3JhZGllbnRIZWln
aHQgLSAxLjUpIH0pOworICAgIGF1dG8gdXBwZXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUo
R3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRl
cmluZ1Bvc2l0aW9uICsgMC41ZiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVy
aW5nUG9zaXRpb24gKyB1cHBlckdyYWRpZW50SGVpZ2h0IC0gMS41KSB9LCB7IENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVs
dGlwbGllZCB9KTsKICAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjBmLCBTUkdC
QTx1aW50OF90PiB7IDEzMywgMTMzLCAxMzMsIDE4OCB9IH0pOwogICAgIHVwcGVyR3JhZGllbnQt
PmFkZENvbG9yU3RvcCh7IDEuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgMTgsIDE4LCAxOCwgNTEgfSB9
KTsKICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKHVwcGVyR3JhZGllbnQpKTsK
QEAgLTExNTMsNyArMTE1Myw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NC
YXIoY28KICAgICAgICAgLy8gMikgRHJhdyB0aGUgcHJvZ3Jlc3MgYmFyLgogICAgICAgICBkb3Vi
bGUgcG9zaXRpb24gPSBjbGFtcFRvKHJlbmRlclByb2dyZXNzLnBvc2l0aW9uKCksIDAuMCwgMS4w
KTsKICAgICAgICAgZmxvYXQgYmFyV2lkdGggPSBwb3NpdGlvbiAqIHJlY3Qud2lkdGgoKTsKLSAg
ICAgICAgYXV0byBiYXJHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVh
ckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsg
MC41ZiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBw
cm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOworICAgICAgICBhdXRvIGJhckdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCks
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyAwLjVmKSwgRmxvYXRQb2ludChyZWN0LngoKSwg
dmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSwgeyBD
b2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyAwLjBmLCBTUkdCQTx1aW50OF90PiB7IDE5NSwgMjE3LCAyNDcgfSB9KTsKICAgICAgICAgYmFy
R3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuNDVmLCBTUkdCQTx1aW50OF90PiB7IDExOCwgMTY0
LCAyMjggfSB9KTsKICAgICAgICAgYmFyR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuNDlmLCBT
UkdCQTx1aW50OF90PiB7IDExOCwgMTY0LCAyMjggfSB9KTsKQEAgLTExNjIsNyArMTE2Miw3IEBA
IGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50UHJvZ3Jlc3NCYXIoY28KICAgICAgICAgYmFyR3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDEuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgNTcsIDE0MiwgMjQ0
IH0gfSk7CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KFdURk1vdmUoYmFyR3JhZGll
bnQpKTsKIAotICAgICAgICBhdXRvIGJhclN0cm9rZUdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0
ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVu
ZGVyaW5nUG9zaXRpb24pLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uICsgcHJvZ3Jlc3NCYXJIZWlnaHQgLSAxKSB9KTsKKyAgICAgICAgYXV0byBiYXJTdHJv
a2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9h
dFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uKSwgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIHByb2dyZXNzQmFySGVpZ2h0IC0g
MSkgfSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAgIGJhclN0cm9rZUdyYWRpZW50
LT5hZGRDb2xvclN0b3AoeyAwLjBmLCBTUkdCQTx1aW50OF90PiB7IDk1LCAxMDcsIDE4MyB9IH0p
OwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC41ZiwgU1JHQkE8
dWludDhfdD4geyA2NiwgMTA2LCAxNzQsIDI0MCB9IH0pOwogICAgICAgICBiYXJTdHJva2VHcmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMS4wZiwgU1JHQkE8dWludDhfdD4geyAzOCwgMTA0LCAxNjYg
fSB9KTsKQEAgLTIyNDMsNyArMjI0Myw3IEBAIFJlZlB0cjxHcmFkaWVudD4gUmVuZGVyVGhlbWVJ
T1M6OmNoZWNrYm8KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBib29sIGlzRW1wdHkg
PSAhc3RhdGVzLmNvbnRhaW5zQW55KHsgQ29udHJvbFN0YXRlczo6U3RhdGVzOjpDaGVja2VkLCBD
b250cm9sU3RhdGVzOjpTdGF0ZXM6OkluZGV0ZXJtaW5hdGUgfSk7Ci0gICAgYXV0byBncmFkaWVu
dCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyByZWN0Lm1pblhNaW5Z
Q29ybmVyKCksIHJlY3QubWF4WE1heFlDb3JuZXIoKSB9KTsKKyAgICBhdXRvIGdyYWRpZW50ID0g
R3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IHJlY3QubWluWE1pbllDb3Ju
ZXIoKSwgcmVjdC5tYXhYTWF4WUNvcm5lcigpIH0sIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
OjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwog
ICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjBmLCBEaXNwbGF5UDM8ZmxvYXQ+IHsgMCwg
MCwgMCwgaXNFbXB0eSA/IDAuMDVmIDogMC4xMjVmIH19KTsKICAgICBncmFkaWVudC0+YWRkQ29s
b3JTdG9wKHsgMS4wZiwgRGlzcGxheVAzPGZsb2F0PiB7IDAsIDAsIDAsIDAgfX0pOwogICAgIHJl
dHVybiBncmFkaWVudDsKQEAgLTI4MTYsNyArMjgxNiw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6
OnBhaW50Q29sb3JXZWxsRGVjb3IKICAgICB9OwogICAgIGNvbnN0ZXhwciBpbnQgbnVtQ29sb3JT
dG9wcyA9IHN0ZDo6c2l6ZShjb2xvclN0b3BzKTsKIAotICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFk
aWVudDo6Y3JlYXRlKEdyYWRpZW50OjpDb25pY0RhdGEgeyByZWN0LmNlbnRlcigpLCAwIH0pOwor
ICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpDb25pY0RhdGEg
eyByZWN0LmNlbnRlcigpLCAwIH0sIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsg
fSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtQ29sb3JTdG9wczsgKytpKQogICAgICAgICBncmFkaWVudC0+YWRk
Q29sb3JTdG9wKHsgaSAqIDEuMGYgLyAobnVtQ29sb3JTdG9wcyAtIDEpLCBjb2xvclN0b3BzW2ld
IH0pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWVudC5jcHAJKHJldmlzaW9uIDI4
NjkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VM
aW5lYXJHcmFkaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgRmxvYXRQ
b2ludCBSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZQogCiBSZWY8R3JhZGllbnQ+IFJlbmRl
clNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ6OmJ1aWxkR3JhZGllbnQoY29uc3QgUmVuZGVyU3R5
bGUmIHN0eWxlKSBjb25zdAogewotICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgc3RhcnRQb2ludChtX2F0dHJpYnV0ZXMpLCBlbmRQb2lu
dChtX2F0dHJpYnV0ZXMpIH0pOworICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgc3RhcnRQb2ludChtX2F0dHJpYnV0ZXMpLCBlbmRQb2lu
dChtX2F0dHJpYnV0ZXMpIH0sIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwg
QWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogICAgIGdyYWRpZW50
LT5zZXRTcHJlYWRNZXRob2QocGxhdGZvcm1TcHJlYWRNZXRob2RGcm9tU1ZHVHlwZShtX2F0dHJp
YnV0ZXMuc3ByZWFkTWV0aG9kKCkpKTsKICAgICBhZGRTdG9wcyhncmFkaWVudCwgbV9hdHRyaWJ1
dGVzLnN0b3BzKCksIHN0eWxlKTsKICAgICByZXR1cm4gZ3JhZGllbnQ7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VSYWRpYWxHcmFkaWVudC5jcHAJKHJldmlzaW9uIDI4NjkxMSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgZmxvYXQgUmVuZGVyU1ZHUmVzb3VyY2VSYWRp
YWxHcmFkaWVudDo6ZgogCiBSZWY8R3JhZGllbnQ+IFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3Jh
ZGllbnQ6OmJ1aWxkR3JhZGllbnQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewot
ICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpSYWRpYWxEYXRh
IHsgZm9jYWxQb2ludChtX2F0dHJpYnV0ZXMpLCBjZW50ZXJQb2ludChtX2F0dHJpYnV0ZXMpLCBm
b2NhbFJhZGl1cyhtX2F0dHJpYnV0ZXMpLCByYWRpdXMobV9hdHRyaWJ1dGVzKSwgMSB9KTsKKyAg
ICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6UmFkaWFsRGF0YSB7
IGZvY2FsUG9pbnQobV9hdHRyaWJ1dGVzKSwgY2VudGVyUG9pbnQobV9hdHRyaWJ1dGVzKSwgZm9j
YWxSYWRpdXMobV9hdHRyaWJ1dGVzKSwgcmFkaXVzKG1fYXR0cmlidXRlcyksIDEgfSwgeyBDb2xv
ckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpV
bnByZW11bHRpcGxpZWQgfSk7CiAgICAgZ3JhZGllbnQtPnNldFNwcmVhZE1ldGhvZChwbGF0Zm9y
bVNwcmVhZE1ldGhvZEZyb21TVkdUeXBlKG1fYXR0cmlidXRlcy5zcHJlYWRNZXRob2QoKSkpOwog
ICAgIGFkZFN0b3BzKGdyYWRpZW50LCBtX2F0dHJpYnV0ZXMuc3RvcHMoKSwgc3R5bGUpOwogICAg
IHJldHVybiBncmFkaWVudDsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NjkyMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEyLTExICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KKworICAgICAgICBQaXBlIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBp
bnRvIEdyYWRpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQyMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3Rz
Q0cuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMTItMTEgIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJldmVydGluZyByMjg2ODkzLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9EaXNwbGF5TGlzdFRlc3RzLmNwcAkocmV2aXNpb24gMjg2OTEx
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyB1aW50OF90IGdsb2Jh
bEl0ZW1CdWZmZXJbZ2xvYmFsSXQKIAogc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRlR3JhZGll
bnQoKQogewotICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpD
b25pY0RhdGEgeyB7IDAuLCAwLiB9LCAxLjI1IH0pOworICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFk
aWVudDo6Y3JlYXRlKEdyYWRpZW50OjpDb25pY0RhdGEgeyB7IDAuLCAwLiB9LCAxLjI1IH0sIHsg
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEs
IENvbG9yOjpyZWQgfSk7CiAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuNSwgQ29sb3I6
OmdyZWVuIH0pOwogICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjksIENvbG9yOjpibHVl
IH0pOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2NnL0JpZnVyY2F0
ZWRHcmFwaGljc0NvbnRleHRUZXN0c0NHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cu
Y3BwCShyZXZpc2lvbiAyODY5MTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzksNyArMTM5LDcgQEAgVEVTVChCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHMs
IERyYQogICAgIEdyYXBoaWNzQ29udGV4dENHIHNlY29uZGFyeUNvbnRleHQoc2Vjb25kYXJ5Q0dD
b250ZXh0LmdldCgpKTsKICAgICBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0IGN0eChwcmltYXJ5
Q29udGV4dCwgc2Vjb25kYXJ5Q29udGV4dCk7CiAKLSAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGll
bnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0YSB7IHsgMCwgMCB9LCB7IDEsIDEgfSB9KTsK
KyAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6TGluZWFyRGF0
YSB7IHsgMCwgMCB9LCB7IDEsIDEgfSB9LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JH
QiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICBn
cmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMCwgQ29sb3I6OnJlZCB9KTsKIAogICAgIGF1dG8gZ3Jh
ZGllbnRJbWFnZSA9IEdyYWRpZW50SW1hZ2U6OmNyZWF0ZShncmFkaWVudCwgRmxvYXRTaXplIHsg
MSwgMSB9KTsKQEAgLTE3MSw3ICsxNzEsNyBAQCBURVNUKEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRl
eHRUZXN0cywgRHJhCiAgICAgR3JhcGhpY3NDb250ZXh0Q0cgc2Vjb25kYXJ5Q29udGV4dChzZWNv
bmRhcnlDR0NvbnRleHQuZ2V0KCkpOwogICAgIEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQgY3R4
KHByaW1hcnlDb250ZXh0LCBzZWNvbmRhcnlDb250ZXh0KTsKIAotICAgIGF1dG8gZ3JhZGllbnQg
PSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgeyAwLCAwIH0sIHsgMSwg
MSB9IH0pOworICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpM
aW5lYXJEYXRhIHsgeyAwLCAwIH0sIHsgMSwgMSB9IH0sIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0p
OwogICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLCBDb2xvcjo6cmVkIH0pOwogCiAgICAg
YXV0byBncmFkaWVudEltYWdlID0gR3JhZGllbnRJbWFnZTo6Y3JlYXRlKGdyYWRpZW50LCBGbG9h
dFNpemUgeyAxLCAxIH0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446920</attachid>
            <date>2021-12-11 21:18:06 -0800</date>
            <delta_ts>2021-12-12 09:32:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234205-20211211211805.patch</filename>
            <type>text/plain</type>
            <size>62749</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NjkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDIxLTEyLTExICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBQaXBlIENvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZCBpbnRvIEdyYWRpZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzQyMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGVyZSBpcyBubyBmdW5jdGlvbmFsIGNoYW5nZSB5ZXQsIHRoaXMganVz
dCBhZGRzIGEgcmVxdWlyZWQgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHBhcmFtZXRlciB0bwor
ICAgICAgICBHcmFkaWVudCwgd2hpY2ggZm9yIHRoZSBtb21lbnQgaGFzIHRvIGJlIFNSR0IgYW5k
IG5vbi1wcmVtdWx0aXBsaWVkIGFscGhhLiBTdWJzZXF1ZW50IGNoYW5nZXMgd2lsbAorICAgICAg
ICBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIGludGVycG9sYXRpb24gbWV0aG9kIHZpYSBDU1Mg
Z3JhZGllbnRzIGFzIHdlbGwgYXMgaW1wbGVtZW50aW5nIHN1cHBvcnQKKyAgICAgICAgZm9yIHRo
YXQgaW4gdGhlIHBsYXRmb3JtIGdyYWRpZW50IGJhY2tlbmRzLgorCisgICAgICAgIEFsc28gbW92
ZXMgdGhlIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBzdHJ1Y3QgaW50byBpdHMgb3duIGZpbGUg
YXMgaXQgd2FzIGdldHRpbmcgcXVpdGUgbG9uZy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50
VmFsdWU6OmVxdWFscyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlOjpjcmVhdGVHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxHcmFk
aWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb25pY0dy
YWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRW
YWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6Q1NTR3JhZGllbnRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjpjb2xvckludGVycG9s
YXRpb25NZXRob2QgY29uc3QpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXJIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VySGVscGVy
czo6Y29uc3VtZURlcHJlY2F0ZWRHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcm9w
ZXJ0eVBhcnNlckhlbHBlcnM6OmNvbnN1bWVEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25zdW1lUmFkaWFsR3Jh
ZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJIZWxwZXJzOjpjb25z
dW1lTGluZWFyR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJzZXJI
ZWxwZXJzOjpjb25zdW1lQ29uaWNHcmFkaWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmF1dG9GaWxsU3Ryb25nUGFzc3dvcmRNYXNr
SW1hZ2UpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc0dyYWRpZW50OjpDYW52YXNHcmFkaWVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjppbnRlcnBvbGF0ZUNvbG9yQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklu
dGVycG9sYXRpb25NZXRob2Q6OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpDb2xvckludGVycG9sYXRpb25NZXRob2Q6OmRlY29kZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpkZWNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYWRpZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGllbnQ6OkdyYWRp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYWRpZW50OjpoYXNoIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhZGll
bnQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFkaWVudDo6ZGVjb2RlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRQcm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUlPUzo6Y2hlY2tib3hSYWRpb0JhY2tncm91bmRHcmFkaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRDb2xvcldlbGxEZWNvcmF0aW9ucyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQ6OmJ1
aWxkR3JhZGllbnQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VSYWRpYWxHcmFkaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNv
dXJjZVJhZGlhbEdyYWRpZW50OjpidWlsZEdyYWRpZW50IGNvbnN0KToKKwogMjAyMS0xMi0xMSAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcmV2ZXJ0aW5nIHIyODY4OTMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHJldmlzaW9u
IDI4NjkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdvcmtpbmcgY29weSkK
QEAgLTEzOTksNiArMTM5OSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURF
UlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckNvbnZlcnNpb24uaAogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9ySGFzaC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBv
bGF0aW9uLmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvckludGVycG9sYXRpb25NZXRob2Qu
aAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yTHVtaW5hbmNlLmgKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Db2xvck1hdHJpeC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JNb2RlbHMu
aApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjg2OTExKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjU0LDggKzEyNTQsOCBA
QAogCQk0MzY3MDhERjEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDhB
MDEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmggKi87IH07CiAJ
CTQzNjcwOEUxMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3
MDhBMjEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5o
ICovOyB9OwogCQk0MzY3MDhFMzEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVzb3VyY2VT
b2xpZENvbG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MzY3MDhBNDEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9y
LmggKi87IH07Ci0JCTQzNjcwOEU1MTJEOURCNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSb290Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzY3MDhBNjEy
RDlEQjRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUm9vdC5oICovOyB9OwogCQk0MzY3MDhFNTEyRDlD
QTRCMDAwNDQyMzQgLyogTGVnYWN5UmVuZGVyU1ZHUm9vdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2NzA4QTYxMkQ5Q0E0QjAwMDQ0MjM0IC8qIExl
Z2FjeVJlbmRlclNWR1Jvb3QuaCAqLzsgfTsKKwkJNDM2NzA4RTUxMkQ5REI0QjAwMDQ0MjM0IC8q
IFJlbmRlclNWR1Jvb3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQzNjcwOEE2MTJEOURCNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSb290LmggKi87IH07
CiAJCTQzNjcwOEU5MTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
MzY3MDhBQTEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5l
ci5oICovOyB9OwogCQk0MzY3MDhFQjEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHVmlld3Bv
cnRDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQzNjcwOEFDMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5l
ci5oICovOyB9OwogCQk0MzY3MDhFRTEyRDlDQTRCMDAwNDQyMzQgLyogU1ZHTWFya2VyRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDM2NzA4QUYx
MkQ5Q0E0QjAwMDQ0MjM0IC8qIFNWR01hcmtlckRhdGEuaCAqLzsgfTsKQEAgLTQwOTUsNiArNDA5
NSw3IEBACiAJCUJDMkI0MTMxMjczNEEwODYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MkI0MTIwMjczMzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzJDQkY0RTE0
MEYxQUJEMDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8q
IEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKIAkJQkMyQ0NBMTAyNjU1RERCMjAwQjhDMDM1
IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyQ0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9u
Q29sb3JTcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUJDMkVFOEVBMjc2NTk0M0EwMDc3NzY4QiAvKiBDb2xvckludGVycG9sYXRpb25NZXRo
b2QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkVF
OEU4Mjc2NTk0MkEwMDc3NzY4QiAvKiBDb2xvckludGVycG9sYXRpb25NZXRob2QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzMwNUM3QTBDMDc2
QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMDVDNzgwQzA3NkJCMzAwQ0QyMEYwIC8qIEpT
SFRNTE9iamVjdEVsZW1lbnQuaCAqLzsgfTsKIAkJQkMzNDhCRDQwREI3RjgwNDAwNEFCQUI5IC8q
IEpTWE1MSHR0cFJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMzQ4QkQyMERCN0Y4MDQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0Lmgg
Ki87IH07CiAJCUJDMzQ4QkQ0MERCN0Y4MDQwMDRBQkFCQSAvKiBXZWJDb3JlSlNCdWlsdGlucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzNDhCRDIw
REI3RjgwNDAwNEFCQUJBIC8qIFdlYkNvcmVKU0J1aWx0aW5zLmggKi87IH07CkBAIC04OTg2LDEw
ICs4OTg3LDEwIEBACiAJCTQzNjcwOEEyMTJEOUNBNEIwMDA0NDIzNCAvKiBSZW5kZXJTVkdSZXNv
dXJjZVJhZGlhbEdyYWRpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJl
bmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDM2NzA4QTMxMkQ5Q0E0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jlc291cmNlU29saWRD
b2xvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdS
ZXNvdXJjZVNvbGlkQ29sb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3
MDhBNDEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1Jlc291cmNlU29saWRDb2xv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MzY3MDhBNTEyRDlDQTVDMDAwNDQy
MzQgLyogUmVuZGVyU1ZHUm9vdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZW5kZXJTVkdSb290LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDM2
NzA4QTYxMkQ5REI0QjAwMDQ0MjM0IC8qIFJlbmRlclNWR1Jvb3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUm9vdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MzY3MDhBNTEyRDlDQTRCMDAwNDQyMzQgLyogTGVnYWN5UmVuZGVyU1ZHUm9vdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMZWdhY3lSZW5kZXJTVkdS
b290LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM2NzA4QTUxMkQ5Q0E1QzAw
MDQ0MjM0IC8qIFJlbmRlclNWR1Jvb3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyU1ZHUm9vdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQzNjcwOEE2MTJEOUNBNEIwMDA0NDIzNCAvKiBMZWdhY3lSZW5kZXJTVkdSb290LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExlZ2FjeVJlbmRlclNWR1Jvb3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDM2NzA4QTYxMkQ5REI0QjAwMDQ0MjM0IC8qIFJlbmRl
clNWR1Jvb3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHUm9v
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDhBOTEyRDlDQTRCMDAwNDQy
MzQgLyogUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDM2NzA4QUExMkQ5Q0E0QjAwMDQ0MjM0
IC8qIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MzY3MDhBQjEyRDlDQTRCMDAwNDQyMzQgLyogUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTA0NzUsMTQgKzEwNDc2LDYgQEAKIAkJNUI3QUI5RjYyNTY3REI3RTAwNjU5
MkQwIC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QjkyQzQyOTI3MTZFMjMzMDBBMzdDQzAgLyogU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xs
aW5nVHJlZVN0aWNreU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qjky
QzQyQjI3MTZFMjMzMDBBMzdDQzAgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUMxQjFEMUUyNkYxNUIxOTAwODgyREEyIC8qIFNo
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNUMxQjFEMjAyNkYxNUIxQTAwODgyREEyIC8qIFNoYXJlZFdvcmtlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFyZWRXb3JrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzFCMUQyMTI2RjE1QjFBMDA4ODJEQTIgLyogU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NUMxQjFEMjIyNkYxNUIxQTAwODgyREEyIC8qIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDMUIxRDIzMjZGMTVCMUEwMDg4MkRBMiAvKiBTaGFy
ZWRXb3JrZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNoYXJlZFdvcmtlci5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDMUIxRDI0MjZGMTVCMUEwMDg4MkRBMiAvKiBT
aGFyZWRXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29y
a2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDMDAxNTIxMjUwMDExMDAwMDk0
QUE5MyAvKiBUZXh0Q29kZWNTaW5nbGVCeXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRleHRDb2RlY1NpbmdsZUJ5dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1QzAwMTUyMzI1MDAxMTAxMDA5NEFBOTMgLyogVGV4dENvZGVjU2luZ2xlQnl0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0Q29kZWNTaW5nbGVCeXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMUIxRDI1MjZGMTg4RDgwMDg4MkRB
MiAvKiBXb3JrZXJPcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXb3JrZXJPcHRp
b25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxQjFEMjYyNkYxOEE0QjAw
ODgyREEyIC8qIFdvcmtlck9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV29ya2VyT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzFCMUQz
RDI2RjM5NzdGMDA4ODJEQTIgLyogUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZGVySWRlbnRpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUxNDEsNiArMTUxMzQsNyBAQAogCQlCQzJDQ0Ew
RjI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFbGVtZW50Q3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZG
IC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0F0dHJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJFRThF
ODI3NjU5NDJBMDA3Nzc2OEIgLyogQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA1Qzc4MEMwNzZCQjMw
MENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0hUTUxPYmplY3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDMzNGQjFBMEYzMEVFODUwMDJDREQ3QyAvKiBSZW5kZXJMaW5lQm94TGlzdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJMaW5lQm94TGlzdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODYxMyw2ICsyODYwNyw3IEBACiAJ
CQkJMzEwM0I3REUxREIwMTU1NjAwOEJCODkwIC8qIENvbG9ySGFzaC5oICovLAogCQkJCUJDREM2
NDI0Mjc1MTdCMDQwMDM4RkIzOSAvKiBDb2xvckludGVycG9sYXRpb24uY3BwICovLAogCQkJCUJD
REM2NDI1Mjc1MTdCMDQwMDM4RkIzOSAvKiBDb2xvckludGVycG9sYXRpb24uaCAqLywKKwkJCQlC
QzJFRThFODI3NjU5NDJBMDA3Nzc2OEIgLyogQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmggKi8s
CiAJCQkJQkM2RUI4NDUyNjI2NkI2MTAwMzIyNUE3IC8qIENvbG9yTHVtaW5hbmNlLmNwcCAqLywK
IAkJCQlCQzRBMjNFQjI1RUMxNjAyMDBBQUM2MzAgLyogQ29sb3JMdW1pbmFuY2UuaCAqLywKIAkJ
CQk3Q0FDNkFFODI0N0YwODIwMDBFNjFENTkgLyogQ29sb3JNYXRyaXguaCAqLywKQEAgLTMzNTY2
LDYgKzMzNTYxLDcgQEAKIAkJCQkzMTAzQjdERjFEQjAxNTY3MDA4QkI4OTAgLyogQ29sb3JIYXNo
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNTVCM0RCNDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJ
bnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0EwMEM4Mjc1NDQ5NkQwMDQ3QzBFNSAv
KiBDb2xvckludGVycG9sYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkVFOEVBMjc2NTk0
M0EwMDc3NzY4QiAvKiBDb2xvckludGVycG9sYXRpb25NZXRob2QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNEEyM0VDMjVFQzE2MDIwMEFBQzYzMCAvKiBDb2xvckx1bWluYW5jZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0FDNkFFOTI0N0YwODJGMDBFNjFENTkgLyogQ29sb3JNYXRyaXguaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNw
cAkocmV2aXNpb24gMjg2OTExKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTcsNyArNjU3LDggQEAgYm9vbCBDU1NHcmFkaWVu
dFZhbHVlOjplcXVhbHMoY29uc3QgQ1NTRwogICAgICAgICAmJiBjb21wYXJlQ1NTVmFsdWVQdHIo
bV9zZWNvbmRZLCBvdGhlci5tX3NlY29uZFkpCiAgICAgICAgICYmIG1fc3RvcHMgPT0gb3RoZXIu
bV9zdG9wcwogICAgICAgICAmJiBtX2dyYWRpZW50VHlwZSA9PSBvdGhlci5tX2dyYWRpZW50VHlw
ZQotICAgICAgICAmJiBtX3JlcGVhdGluZyA9PSBvdGhlci5tX3JlcGVhdGluZzsKKyAgICAgICAg
JiYgbV9yZXBlYXRpbmcgPT0gb3RoZXIubV9yZXBlYXRpbmcKKyAgICAgICAgJiYgbV9jb2xvcklu
dGVycG9sYXRpb25NZXRob2QgPT0gb3RoZXIubV9jb2xvckludGVycG9sYXRpb25NZXRob2Q7CiB9
CiAKIHN0YXRpYyB2b2lkIGFwcGVuZEdyYWRpZW50U3RvcHMoU3RyaW5nQnVpbGRlciYgYnVpbGRl
ciwgY29uc3QgVmVjdG9yPENTU0dyYWRpZW50Q29sb3JTdG9wLCAyPiYgc3RvcHMpCkBAIC04NzEs
NyArODcyLDcgQEAgUmVmPEdyYWRpZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcgogICAg
IExpbmVhckdyYWRpZW50QWRhcHRlciBhZGFwdGVyIHsgZGF0YSB9OwogICAgIGF1dG8gc3RvcHMg
PSBjb21wdXRlU3RvcHMoYWRhcHRlciwgY29udmVyc2lvbkRhdGEsIHJlbmRlcmVyLnN0eWxlKCks
IDEpOwogCi0gICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShkYXRh
KSk7CisgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShkYXRhKSwg
Y29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKCkpOwogICAgIGdyYWRpZW50LT5zZXRTb3J0ZWRDb2xv
clN0b3BzKFdURk1vdmUoc3RvcHMpKTsKICAgICByZXR1cm4gZ3JhZGllbnQ7CiB9CkBAIC0xMjA1
LDcgKzEyMDYsNyBAQCBSZWY8R3JhZGllbnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyCiAg
ICAgUmFkaWFsR3JhZGllbnRBZGFwdGVyIGFkYXB0ZXIgeyBkYXRhIH07CiAgICAgYXV0byBzdG9w
cyA9IGNvbXB1dGVTdG9wcyhhZGFwdGVyLCBjb252ZXJzaW9uRGF0YSwgcmVuZGVyZXIuc3R5bGUo
KSwgbWF4RXh0ZW50KTsKIAotICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZGF0YSkpOworICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1v
dmUoZGF0YSksIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCgpKTsKICAgICBncmFkaWVudC0+c2V0
U29ydGVkQ29sb3JTdG9wcyhXVEZNb3ZlKHN0b3BzKSk7CiAgICAgcmV0dXJuIGdyYWRpZW50Owog
fQpAQCAtMTI3OSw3ICsxMjgwLDcgQEAgUmVmPEdyYWRpZW50PiBDU1NDb25pY0dyYWRpZW50VmFs
dWU6OmNyZQogICAgIENvbmljR3JhZGllbnRBZGFwdGVyIGFkYXB0ZXI7CiAgICAgYXV0byBzdG9w
cyA9IGNvbXB1dGVTdG9wcyhhZGFwdGVyLCBjb252ZXJzaW9uRGF0YSwgcmVuZGVyZXIuc3R5bGUo
KSwgMSk7CiAKLSAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShXVEZNb3ZlKGRh
dGEpKTsKKyAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShXVEZNb3ZlKGRhdGEp
LCBjb2xvckludGVycG9sYXRpb25NZXRob2QoKSk7CiAgICAgZ3JhZGllbnQtPnNldFNvcnRlZENv
bG9yU3RvcHMoV1RGTW92ZShzdG9wcykpOwogICAgIHJldHVybiBncmFkaWVudDsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkocmV2aXNpb24gMjg2OTExKQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiQ29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kLmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtODEsMTAgKzgyLDExIEBAIHB1YmxpYzoKICAgICBSZWY8Q1NTR3JhZGllbnRWYWx1ZT4gdmFs
dWVXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGU6OkJ1aWxkZXJTdGF0ZSYpOwogCiBwcm90ZWN0ZWQ6
Ci0gICAgQ1NTR3JhZGllbnRWYWx1ZShDbGFzc1R5cGUgY2xhc3NUeXBlLCBDU1NHcmFkaWVudFJl
cGVhdCByZXBlYXQsIENTU0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUpCisgICAgQ1NTR3JhZGll
bnRWYWx1ZShDbGFzc1R5cGUgY2xhc3NUeXBlLCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIENT
U0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUsIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xv
ckludGVycG9sYXRpb25NZXRob2QpCiAgICAgICAgIDogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZShj
bGFzc1R5cGUpCiAgICAgICAgICwgbV9ncmFkaWVudFR5cGUoZ3JhZGllbnRUeXBlKQogICAgICAg
ICAsIG1fcmVwZWF0aW5nKHJlcGVhdCA9PSBSZXBlYXRpbmcpCisgICAgICAgICwgbV9jb2xvcklu
dGVycG9sYXRpb25NZXRob2QoY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKQogICAgIHsKICAgICB9
CiAKQEAgLTk3LDYgKzk5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fc3RvcHMob3RoZXIu
bV9zdG9wcykKICAgICAgICAgLCBtX2dyYWRpZW50VHlwZShvdGhlci5tX2dyYWRpZW50VHlwZSkK
ICAgICAgICAgLCBtX3JlcGVhdGluZyhvdGhlci5tX3JlcGVhdGluZykKKyAgICAgICAgLCBtX2Nv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZChvdGhlci5tX2NvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkK
ICAgICAgICAgLCBtX2hhc0NvbG9yRGVyaXZlZEZyb21FbGVtZW50KG90aGVyLm1faGFzQ29sb3JE
ZXJpdmVkRnJvbUVsZW1lbnQpCiAgICAgewogICAgIH0KQEAgLTEwOSw2ICsxMTIsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgYXV0byBzZWNvbmRZKCkgY29uc3QgeyByZXR1cm4gbV9zZWNvbmRZLmdldCgp
OyB9CiAgICAgYXV0byYgc3RvcHMoKSBjb25zdCB7IHJldHVybiBtX3N0b3BzOyB9CiAgICAgYm9v
bCBpc1JlcGVhdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmVwZWF0aW5nOyB9CisgICAgYXV0byBj
b2xvckludGVycG9sYXRpb25NZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2NvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZDsgfQogCiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTR3JhZGllbnRWYWx1ZSYp
IGNvbnN0OwogCkBAIC0xMjMsMTUgKzEyNywxNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxDU1NH
cmFkaWVudENvbG9yU3RvcCwgMj4gbV9zdG9wczsKICAgICBDU1NHcmFkaWVudFR5cGUgbV9ncmFk
aWVudFR5cGU7CiAgICAgYm9vbCBtX3JlcGVhdGluZyB7IGZhbHNlIH07CisgICAgQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOwogCiAgICAgbXV0YWJs
ZSBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1faGFzQ29sb3JEZXJpdmVkRnJvbUVsZW1lbnQ7CiB9Owog
CiBjbGFzcyBDU1NMaW5lYXJHcmFkaWVudFZhbHVlIGZpbmFsIDogcHVibGljIENTU0dyYWRpZW50
VmFsdWUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4g
Y3JlYXRlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50
VHlwZSA9IENTU0xpbmVhckdyYWRpZW50KQorICAgIHN0YXRpYyBSZWY8Q1NTTGluZWFyR3JhZGll
bnRWYWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBl
IGdyYWRpZW50VHlwZSwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0xpbmVhckdy
YWRpZW50VmFsdWUocmVwZWF0LCBncmFkaWVudFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZShyZXBlYXQsIGdyYWRpZW50VHlwZSwgY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRBbmdsZShSZWY8
Q1NTUHJpbWl0aXZlVmFsdWU+JiYgdmFsdWUpIHsgbV9hbmdsZSA9IFdURk1vdmUodmFsdWUpOyB9
CkBAIC0xNDksOCArMTU0LDggQEAgcHVibGljOgogICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0xp
bmVhckdyYWRpZW50VmFsdWUmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDU1NMaW5lYXJHcmFk
aWVudFZhbHVlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRp
ZW50VHlwZSA9IENTU0xpbmVhckdyYWRpZW50KQotICAgICAgICA6IENTU0dyYWRpZW50VmFsdWUo
TGluZWFyR3JhZGllbnRDbGFzcywgcmVwZWF0LCBncmFkaWVudFR5cGUpCisgICAgQ1NTTGluZWFy
R3JhZGllbnRWYWx1ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIENTU0dyYWRpZW50VHlwZSBn
cmFkaWVudFR5cGUsIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25N
ZXRob2QpCisgICAgICAgIDogQ1NTR3JhZGllbnRWYWx1ZShMaW5lYXJHcmFkaWVudENsYXNzLCBy
ZXBlYXQsIGdyYWRpZW50VHlwZSwgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKQogICAgIHsKICAg
ICB9CiAKQEAgLTE2NSw5ICsxNzAsOSBAQCBwcml2YXRlOgogCiBjbGFzcyBDU1NSYWRpYWxHcmFk
aWVudFZhbHVlIGZpbmFsIDogcHVibGljIENTU0dyYWRpZW50VmFsdWUgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVw
ZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSA9IENTU1JhZGlhbEdyYWRp
ZW50KQorICAgIHN0YXRpYyBSZWY8Q1NTUmFkaWFsR3JhZGllbnRWYWx1ZT4gY3JlYXRlKENTU0dy
YWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBlIGdyYWRpZW50VHlwZSwgQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU1JhZGlhbEdyYWRpZW50VmFsdWUocmVwZWF0LCBn
cmFkaWVudFR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZShyZXBlYXQsIGdyYWRpZW50VHlwZSwgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
KSk7CiAgICAgfQogCiAgICAgUmVmPENTU1JhZGlhbEdyYWRpZW50VmFsdWU+IGNsb25lKCkgY29u
c3QKQEAgLTE5Miw4ICsxOTcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NT
UmFkaWFsR3JhZGllbnRWYWx1ZSYpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU1JhZGlhbEdy
YWRpZW50VmFsdWUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0LCBDU1NHcmFkaWVudFR5cGUgZ3Jh
ZGllbnRUeXBlID0gQ1NTUmFkaWFsR3JhZGllbnQpCi0gICAgICAgIDogQ1NTR3JhZGllbnRWYWx1
ZShSYWRpYWxHcmFkaWVudENsYXNzLCByZXBlYXQsIGdyYWRpZW50VHlwZSkKKyAgICBDU1NSYWRp
YWxHcmFkaWVudFZhbHVlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ1NTR3JhZGllbnRUeXBl
IGdyYWRpZW50VHlwZSwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZCkKKyAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKFJhZGlhbEdyYWRpZW50Q2xhc3Ms
IHJlcGVhdCwgZ3JhZGllbnRUeXBlLCBjb2xvckludGVycG9sYXRpb25NZXRob2QpCiAgICAgewog
ICAgIH0KIApAQCAtMjI1LDkgKzIzMCw5IEBAIHByaXZhdGU6CiAKIGNsYXNzIENTU0NvbmljR3Jh
ZGllbnRWYWx1ZSBmaW5hbCA6IHB1YmxpYyBDU1NHcmFkaWVudFZhbHVlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPENTU0NvbmljR3JhZGllbnRWYWx1ZT4gY3JlYXRlKENTU0dyYWRpZW50UmVw
ZWF0IHJlcGVhdCkKKyAgICBzdGF0aWMgUmVmPENTU0NvbmljR3JhZGllbnRWYWx1ZT4gY3JlYXRl
KENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU0NvbmljR3JhZGllbnRWYWx1ZShyZXBlYXQpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQ1NTQ29uaWNHcmFkaWVudFZhbHVlKHJlcGVhdCwgY29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kKSk7CiAgICAgfQogCiAgICAgUmVmPENTU0NvbmljR3JhZGllbnRWYWx1ZT4gY2xvbmUoKSBj
b25zdApAQCAtMjQ1LDggKzI1MCw4IEBAIHB1YmxpYzoKICAgICBib29sIGVxdWFscyhjb25zdCBD
U1NDb25pY0dyYWRpZW50VmFsdWUmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBD
U1NDb25pY0dyYWRpZW50VmFsdWUoQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0KQotICAgICAgICA6
IENTU0dyYWRpZW50VmFsdWUoQ29uaWNHcmFkaWVudENsYXNzLCByZXBlYXQsIENTU0NvbmljR3Jh
ZGllbnQpCisgICAgZXhwbGljaXQgQ1NTQ29uaWNHcmFkaWVudFZhbHVlKENTU0dyYWRpZW50UmVw
ZWF0IHJlcGVhdCwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIGNvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCkKKyAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKENvbmljR3JhZGllbnRDbGFzcywgcmVw
ZWF0LCBDU1NDb25pY0dyYWRpZW50LCBjb2xvckludGVycG9sYXRpb25NZXRob2QpCiAgICAgewog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ckhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXJIZWxwZXJzLmNwcAkocmV2aXNpb24gMjg2OTExKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlckhlbHBlcnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTUyLDkgKzI5NTIsOSBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1l
RGVwcmVjYXRlCiAgICAgQ1NTVmFsdWVJRCBpZCA9IGFyZ3MuY29uc3VtZUluY2x1ZGluZ1doaXRl
c3BhY2UoKS5pZCgpOwogICAgIGJvb2wgaXNEZXByZWNhdGVkUmFkaWFsR3JhZGllbnQgPSAoaWQg
PT0gQ1NTVmFsdWVSYWRpYWwpOwogICAgIGlmIChpc0RlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudCkK
LSAgICAgICAgcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVh
dGluZywgQ1NTRGVwcmVjYXRlZFJhZGlhbEdyYWRpZW50KTsKKyAgICAgICAgcmVzdWx0ID0gQ1NT
UmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZFJh
ZGlhbEdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICBlbHNlIGlmIChpZCA9
PSBDU1NWYWx1ZUxpbmVhcikKLSAgICAgICAgcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1
ZTo6Y3JlYXRlKE5vblJlcGVhdGluZywgQ1NTRGVwcmVjYXRlZExpbmVhckdyYWRpZW50KTsKKyAg
ICAgICAgcmVzdWx0ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKE5vblJlcGVhdGlu
ZywgQ1NTRGVwcmVjYXRlZExpbmVhckdyYWRpZW50LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhv
ZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsK
ICAgICBpZiAoIXJlc3VsdCB8fCAhY29uc3VtZUNvbW1hSW5jbHVkaW5nV2hpdGVzcGFjZShhcmdz
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTMwNTQsNyArMzA1NCw3IEBAIHN0YXRp
YyBib29sIGNvbnN1bWVHcmFkaWVudENvbG9yU3RvcHMoQ1MKIAogc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZT4gY29uc3VtZURlcHJlY2F0ZWRSYWRpYWxHcmFkaWVudChDU1NQYXJzZXJUb2tlblJhbmdl
JiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBDU1NHcmFkaWVudFJlcGVh
dCByZXBlYXRpbmcpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBDU1NSYWRpYWxHcmFkaWVudFZhbHVl
OjpjcmVhdGUocmVwZWF0aW5nLCBDU1NQcmVmaXhlZFJhZGlhbEdyYWRpZW50KTsKKyAgICBhdXRv
IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcsIENTU1By
ZWZpeGVkUmFkaWFsR3JhZGllbnQsIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsg
fSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogCiAgICAgYXV0
byBjZW50ZXJDb29yZGluYXRlID0gY29uc3VtZU9uZU9yVHdvVmFsdWVkUG9zaXRpb25Db29yZGlu
YXRlcyhhcmdzLCBjb250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCk7CiAgICAgaWYg
KGNlbnRlckNvb3JkaW5hdGUgJiYgIWNvbnN1bWVDb21tYUluY2x1ZGluZ1doaXRlc3BhY2UoYXJn
cykpCkBAIC0zMDk4LDcgKzMwOTgsNyBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1l
RGVwcmVjYXRlCiAKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVSYWRpYWxHcmFkaWVu
dChDU1NQYXJzZXJUb2tlblJhbmdlJiBhcmdzLCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250
ZXh0LCBDU1NHcmFkaWVudFJlcGVhdCByZXBlYXRpbmcpCiB7Ci0gICAgUmVmUHRyPENTU1JhZGlh
bEdyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZShy
ZXBlYXRpbmcsIENTU1JhZGlhbEdyYWRpZW50KTsKKyAgICBSZWZQdHI8Q1NTUmFkaWFsR3JhZGll
bnRWYWx1ZT4gcmVzdWx0ID0gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKHJlcGVhdGlu
ZywgQ1NTUmFkaWFsR3JhZGllbnQsIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsg
fSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogCiAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBzaGFwZTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHNpemVLZXl3b3JkOwpAQCAtMzE4Niw3ICszMTg2LDcgQEAgc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZT4gY29uc3VtZVJhZGlhbEdyYQogCiBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1l
TGluZWFyR3JhZGllbnQoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgYXJncywgY29uc3QgQ1NTUGFyc2Vy
Q29udGV4dCYgY29udGV4dCwgQ1NTR3JhZGllbnRSZXBlYXQgcmVwZWF0aW5nLCBDU1NHcmFkaWVu
dFR5cGUgZ3JhZGllbnRUeXBlKQogewotICAgIFJlZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVl
PiByZXN1bHQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFk
aWVudFR5cGUpOworICAgIFJlZlB0cjxDU1NMaW5lYXJHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBD
U1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUocmVwZWF0aW5nLCBncmFkaWVudFR5cGUsIHsg
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogCiAgICAgYm9vbCBleHBlY3RDb21tYSA9IHRydWU7CiAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBhbmdsZSA9IGNvbnN1bWVBbmdsZShhcmdzLCBj
b250ZXh0Lm1vZGUsIFVuaXRsZXNzUXVpcms6OkZvcmJpZCwgVW5pdGxlc3NaZXJvUXVpcms6OkFs
bG93KTsKQEAgLTMyMjAsNyArMzIyMCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVMaW5lYXJHcmEKIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVDb25pY0dyYWRpZW50
KENTU1BhcnNlclRva2VuUmFuZ2UmIGFyZ3MsIGNvbnN0IENTU1BhcnNlckNvbnRleHQmIGNvbnRl
eHQsIENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdGluZykKIHsKICNpZiBFTkFCTEUoQ1NTX0NPTklD
X0dSQURJRU5UUykKLSAgICBSZWZQdHI8Q1NTQ29uaWNHcmFkaWVudFZhbHVlPiByZXN1bHQgPSBD
U1NDb25pY0dyYWRpZW50VmFsdWU6OmNyZWF0ZShyZXBlYXRpbmcpOworICAgIFJlZlB0cjxDU1ND
b25pY0dyYWRpZW50VmFsdWU+IHJlc3VsdCA9IENTU0NvbmljR3JhZGllbnRWYWx1ZTo6Y3JlYXRl
KHJlcGVhdGluZywgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAKICAgICBib29sIGV4cGVjdENv
bW1hID0gZmFsc2U7CiAgICAgaWYgKGFyZ3MucGVlaygpLnR5cGUoKSA9PSBJZGVudFRva2VuKSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9u
IDI4NjkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxMzksNyArMjEzOSw3IEBAIHN0YXRpYyBSZWY8Q1NTTGluZWFyR3Jh
ZGllbnRWYWx1ZT4gYXV0b0YKICAgICBzZWNvbmRTdG9wLmNvbG9yID0gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVDb2xvclZhbHVlKENvbG9yOjp0cmFuc3BhcmVudEJsYWNrKTsKICAg
ICBzZWNvbmRTdG9wLnBvc2l0aW9uID0gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVW
YWx1ZSgxMDAsIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRSk7CiAKLSAgICBhdXRvIGdyYWRp
ZW50ID0gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlKENTU0dyYWRpZW50UmVwZWF0OjpO
b25SZXBlYXRpbmcsIENTU0dyYWRpZW50VHlwZTo6Q1NTTGluZWFyR3JhZGllbnQpOworICAgIGF1
dG8gZ3JhZGllbnQgPSBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGUoQ1NTR3JhZGllbnRS
ZXBlYXQ6Ok5vblJlcGVhdGluZywgQ1NTR3JhZGllbnRUeXBlOjpDU1NMaW5lYXJHcmFkaWVudCwg
eyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgZ3JhZGllbnQtPnNldEFuZ2xlKENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoOTAsIENTU1VuaXRUeXBlOjpDU1NfREVHKSk7
CiAgICAgZ3JhZGllbnQtPmFkZFN0b3AoV1RGTW92ZShmaXJzdFN0b3ApKTsKICAgICBncmFkaWVu
dC0+YWRkU3RvcChXVEZNb3ZlKHNlY29uZFN0b3ApKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNHcmFkaWVudC5jcHAJKHJldmlzaW9uIDI4NjkxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc0dyYWRpZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsMTkgKzM0LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENhbnZhc0dyYWRp
ZW50OjpDYW52YXNHcmFkaWVudChjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2lu
dCYgcDEsIENhbnZhc0Jhc2UmIGNhbnZhc0Jhc2UpCi0gICAgOiBtX2dyYWRpZW50KEdyYWRpZW50
OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBwMCwgcDEgfSkpCisgICAgOiBtX2dyYWRp
ZW50KEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBwMCwgcDEgfSwgeyBD
b2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpVbnByZW11bHRpcGxpZWQgfSkpCiAgICAgLCBtX2NhbnZhcyhjYW52YXNCYXNlKQogewogfQog
CiBDYW52YXNHcmFkaWVudDo6Q2FudmFzR3JhZGllbnQoY29uc3QgRmxvYXRQb2ludCYgcDAsIGZs
b2F0IHIwLCBjb25zdCBGbG9hdFBvaW50JiBwMSwgZmxvYXQgcjEsIENhbnZhc0Jhc2UmIGNhbnZh
c0Jhc2UpCi0gICAgOiBtX2dyYWRpZW50KEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OlJhZGlh
bERhdGEgeyBwMCwgcDEsIHIwLCByMSwgMSB9KSkKKyAgICA6IG1fZ3JhZGllbnQoR3JhZGllbnQ6
OmNyZWF0ZShHcmFkaWVudDo6UmFkaWFsRGF0YSB7IHAwLCBwMSwgcjAsIHIxLCAxIH0sIHsgQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkIH0pKQogICAgICwgbV9jYW52YXMoY2FudmFzQmFzZSkKIHsKIH0KIAog
Q2FudmFzR3JhZGllbnQ6OkNhbnZhc0dyYWRpZW50KGNvbnN0IEZsb2F0UG9pbnQmIGNlbnRlclBv
aW50LCBmbG9hdCBhbmdsZUluUmFkaWFucywgQ2FudmFzQmFzZSYgY2FudmFzQmFzZSkKLSAgICA6
IG1fZ3JhZGllbnQoR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6Q29uaWNEYXRhIHsgY2VudGVy
UG9pbnQsIGFuZ2xlSW5SYWRpYW5zIH0pKQorICAgIDogbV9ncmFkaWVudChHcmFkaWVudDo6Y3Jl
YXRlKEdyYWRpZW50OjpDb25pY0RhdGEgeyBjZW50ZXJQb2ludCwgYW5nbGVJblJhZGlhbnMgfSwg
eyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0
aW9uOjpVbnByZW11bHRpcGxpZWQgfSkpCiAgICAgLCBtX2NhbnZhcyhjYW52YXNCYXNlKQogewog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JJbnRlcnBvbGF0aW9uLmgJKHJldmlzaW9uIDI4NjkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbG9ySW50ZXJwb2xhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4NyArMjYsMTMgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQWxwaGFQcmVtdWx0aXBs
aWNhdGlvbi5oIgotI2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKKyNpbmNsdWRlICJDb2xvckludGVy
cG9sYXRpb25NZXRob2QuaCIKICNpbmNsdWRlICJDb2xvck5vcm1hbGl6YXRpb24uaCIKLSNpbmNs
dWRlIDxvcHRpb25hbD4KLSNpbmNsdWRlIDx2YXJpYW50PgotI2luY2x1ZGUgPHd0Zi9FbnVtVHJh
aXRzLmg+CisjaW5jbHVkZSAiQ29sb3JUeXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWVudW0gY2xhc3MgSHVlSW50ZXJwb2xhdGlvbk1ldGhvZCA6IHVpbnQ4X3QgewotICAgIFNob3J0
ZXIsCi0gICAgTG9uZ2VyLAotICAgIEluY3JlYXNpbmcsCi0gICAgRGVjcmVhc2luZywKLSAgICBT
cGVjaWZpZWQKLX07Ci0KLWVudW0gY2xhc3MgQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA6
IHVpbnQ4X3QgewotICAgIEhTTCwKLSAgICBIV0IsCi0gICAgTENILAotICAgIExhYiwKLSAgICBP
S0xDSCwKLSAgICBPS0xhYiwKLSAgICBTUkdCLAotICAgIFNSR0JMaW5lYXIsCi0gICAgWFlaRDUw
LAotICAgIFhZWkQ2NQotfTsKLSAgICAKLXN0cnVjdCBDb2xvckludGVycG9sYXRpb25NZXRob2Qg
ewotICAgIHN0cnVjdCBIU0wgewotICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaW50ZXJw
b2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpIU0w7Ci0g
ICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6OkhTTEE8ZmxvYXQ+OwotICAgICAgICBI
dWVJbnRlcnBvbGF0aW9uTWV0aG9kIGh1ZUludGVycG9sYXRpb25NZXRob2QgPSBIdWVJbnRlcnBv
bGF0aW9uTWV0aG9kOjpTaG9ydGVyOwotICAgIH07Ci0gICAgc3RydWN0IEhXQiB7Ci0gICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50
ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OkhXQjsKLSAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2Vi
Q29yZTo6SFdCQTxmbG9hdD47Ci0gICAgICAgIEh1ZUludGVycG9sYXRpb25NZXRob2QgaHVlSW50
ZXJwb2xhdGlvbk1ldGhvZCA9IEh1ZUludGVycG9sYXRpb25NZXRob2Q6OlNob3J0ZXI7Ci0gICAg
fTsKLSAgICBzdHJ1Y3QgTENIIHsKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVy
cG9sYXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6TENIOwot
ICAgICAgICB1c2luZyBDb2xvclR5cGUgPSBXZWJDb3JlOjpMQ0hBPGZsb2F0PjsKLSAgICAgICAg
SHVlSW50ZXJwb2xhdGlvbk1ldGhvZCBodWVJbnRlcnBvbGF0aW9uTWV0aG9kID0gSHVlSW50ZXJw
b2xhdGlvbk1ldGhvZDo6U2hvcnRlcjsKLSAgICB9OwotICAgIHN0cnVjdCBMYWIgewotICAgICAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvcklu
dGVycG9sYXRpb25Db2xvclNwYWNlOjpMYWI7Ci0gICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdl
YkNvcmU6OkxhYjxmbG9hdD47Ci0gICAgfTsKLSAgICBzdHJ1Y3QgT0tMQ0ggewotICAgICAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVy
cG9sYXRpb25Db2xvclNwYWNlOjpPS0xDSDsKLSAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2Vi
Q29yZTo6T0tMQ0hBPGZsb2F0PjsKLSAgICAgICAgSHVlSW50ZXJwb2xhdGlvbk1ldGhvZCBodWVJ
bnRlcnBvbGF0aW9uTWV0aG9kID0gSHVlSW50ZXJwb2xhdGlvbk1ldGhvZDo6U2hvcnRlcjsKLSAg
ICB9OwotICAgIHN0cnVjdCBPS0xhYiB7Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBp
bnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6Ok9L
TGFiOwotICAgICAgICB1c2luZyBDb2xvclR5cGUgPSBXZWJDb3JlOjpPS0xhYjxmbG9hdD47Ci0g
ICAgfTsKLSAgICBzdHJ1Y3QgU1JHQiB7Ci0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBp
bnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlNS
R0I7Ci0gICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6OlNSR0JBPGZsb2F0PjsKLSAg
ICB9OwotICAgIHN0cnVjdCBTUkdCTGluZWFyIHsKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGludGVycG9sYXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFj
ZTo6U1JHQkxpbmVhcjsKLSAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6TGluZWFy
U1JHQkE8ZmxvYXQ+OwotICAgIH07Ci0gICAgc3RydWN0IFhZWkQ1MCB7Ci0gICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xh
dGlvbkNvbG9yU3BhY2U6OlhZWkQ1MDsKLSAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29y
ZTo6WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPjsKLSAgICB9OwotICAgIHN0cnVjdCBYWVpE
NjUgewotICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3Bh
Y2UgPSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpYWVpENjU7Ci0gICAgICAgIHVzaW5n
IENvbG9yVHlwZSA9IFdlYkNvcmU6OlhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT47Ci0gICAg
fTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxDb2xvckludGVycG9sYXRpb25NZXRob2Q+IGRlY29kZShEZWNvZGVyJik7Ci0KLSAgICBz
dGQ6OnZhcmlhbnQ8SFNMLCBIV0IsIExDSCwgTGFiLCBPS0xDSCwgT0tMYWIsIFNSR0IsIFNSR0JM
aW5lYXIsIFhZWkQ1MCwgWFlaRDY1PiBjb2xvclNwYWNlOwotICAgIEFscGhhUHJlbXVsdGlwbGlj
YXRpb24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbjsKLX07CisvLyBNQVJLOiAtIFByZS1pbnRlcnBv
bGF0aW9uIG5vcm1hbGl6YXRpb24vZml4dXAKIAogc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZml4
dXBIdWVDb21wb25lbnRzUHJpb3JUb0ludGVycG9sYXRpb24oSHVlSW50ZXJwb2xhdGlvbk1ldGhv
ZCwgZmxvYXQsIGZsb2F0KTsKIApAQCAtMTM5LDYgKzY1LDkgQEAgc3RkOjpwYWlyPENvbG9yQ29t
cG9uZW50czxmbG9hdCwgND4sIENvbAogICAgIH07CiB9CiAKKworLy8gTUFSSzogLSBQb3N0LWlu
dGVycG9sYXRpb24gbm9ybWFsaXphdGlvbi9maXh1cAorCiB0ZW1wbGF0ZTxzaXplX3QgSSwgQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbiBhbHBoYVByZW11bHRpcGxpY2F0aW9uLCB0eXBlbmFtZSBJbnRl
cnBvbGF0aW9uTWV0aG9kPgogZmxvYXQgcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9uRm9y
Q29tcG9uZW50KEludGVycG9sYXRpb25NZXRob2QsIENvbG9yQ29tcG9uZW50czxmbG9hdCwgND4g
Y29sb3JDb21wb25lbnRzKQogewpAQCAtMTY0LDEyNiArOTMsMjUgQEAgQ29sb3JDb21wb25lbnRz
PGZsb2F0LCA0PiBwb3N0SW50ZXJwb2xhdAogICAgIH07CiAgfQogCisKKy8vIE1BUks6IC0gSW50
ZXJwb2xhdGlvbgorCiB0ZW1wbGF0ZTxBbHBoYVByZW11bHRpcGxpY2F0aW9uIGFscGhhUHJlbXVs
dGlwbGljYXRpb24sIHR5cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q+CiB0eXBlbmFtZSBJbnRl
cnBvbGF0aW9uTWV0aG9kOjpDb2xvclR5cGUgaW50ZXJwb2xhdGVDb2xvckNvbXBvbmVudHMoSW50
ZXJwb2xhdGlvbk1ldGhvZCBpbnRlcnBvbGF0aW9uTWV0aG9kLCB0eXBlbmFtZSBJbnRlcnBvbGF0
aW9uTWV0aG9kOjpDb2xvclR5cGUgY29sb3IxLCBkb3VibGUgY29sb3IxTXVsdGlwbGllciwgdHlw
ZW5hbWUgSW50ZXJwb2xhdGlvbk1ldGhvZDo6Q29sb3JUeXBlIGNvbG9yMiwgZG91YmxlIGNvbG9y
Mk11bHRpcGxpZXIpCiB7CisgICAgLy8gMS4gQXBwbHkgcHJlLWludGVycG9sYXRpb24gdHJhbnNm
b3JtcyAoaHVlIGZpeHVwIGZvciBwb2xhciBjb2xvciBzcGFjZXMsIGFscGhhIHByZW11bHRpcGxp
Y2F0aW9uIGlmIHJlcXVpcmVkKS4KICAgICBhdXRvIFtub3JtYWxpemVkQ29sb3JDb21wb25lbnRz
MSwgbm9ybWFsaXplZENvbG9yQ29tcG9uZW50czJdID0gcHJlSW50ZXJwb2xhdGlvbk5vcm1hbGl6
YXRpb248YWxwaGFQcmVtdWx0aXBsaWNhdGlvbj4oaW50ZXJwb2xhdGlvbk1ldGhvZCwgYXNDb2xv
ckNvbXBvbmVudHMoY29sb3IxKSwgYXNDb2xvckNvbXBvbmVudHMoY29sb3IyKSk7CiAKKyAgICAv
LyAyLiBJbnRlcnBvbGF0ZSB1c2luZyB0aGUgbm9ybWFsaXplZCBjb21wb25lbnRzLgogICAgIGF1
dG8gaW50ZXJwb2xhdGVkQ29sb3JDb21wb25lbnRzID0gbWFwQ29sb3JDb21wb25lbnRzKFsmXSAo
YXV0byBjb21wb25lbnRGcm9tQ29sb3IxLCBhdXRvIGNvbXBvbmVudEZyb21Db2xvcjIpIC0+IGZs
b2F0IHsKICAgICAgICAgcmV0dXJuIChjb21wb25lbnRGcm9tQ29sb3IxICogY29sb3IxTXVsdGlw
bGllcikgKyAoY29tcG9uZW50RnJvbUNvbG9yMiAqIGNvbG9yMk11bHRpcGxpZXIpOwogICAgIH0s
IG5vcm1hbGl6ZWRDb2xvckNvbXBvbmVudHMxLCBub3JtYWxpemVkQ29sb3JDb21wb25lbnRzMik7
CiAKKyAgICAvLyAzLiBBcHBseSBwb3N0LWludGVycG9sYXRpb24gdHJhc2Zvcm1zIChhbHBoYSB1
bi1wcmVtdWx0aXBsaWNhdGlvbiBpZiByZXF1aXJlZCkuCiAgICAgYXV0byBub3JtYWxpemVkSW50
ZXJwb2xhdGVkQ29sb3JDb21wb25lbnRzID0gcG9zdEludGVycG9sYXRpb25Ob3JtYWxpemF0aW9u
PGFscGhhUHJlbXVsdGlwbGljYXRpb24+KGludGVycG9sYXRpb25NZXRob2QsIGludGVycG9sYXRl
ZENvbG9yQ29tcG9uZW50cyk7CiAKKyAgICAvLyA0LiBDcmVhdGUgY29sb3IgdHlwZSBmcm9tIGNv
bXBvbmVudHMsIG5vcm1hbGl6aW5nIGFueSBjb21wb25lbnRzIHRoYXQgbWF5IGJlIG91dCBvZiBy
YW5nZS4KICAgICByZXR1cm4gbWFrZUNvbG9yVHlwZUJ5Tm9ybWFsaXppbmdDb21wb25lbnRzPHR5
cGVuYW1lIEludGVycG9sYXRpb25NZXRob2Q6OkNvbG9yVHlwZT4obm9ybWFsaXplZEludGVycG9s
YXRlZENvbG9yQ29tcG9uZW50cyk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZv
aWQgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKLXsKLSAgICBlbmNvZGVyIDw8IGFscGhhUHJlbXVsdGlwbGljYXRpb247Ci0KLSAgICBXVEY6
OnN3aXRjaE9uKGNvbG9yU3BhY2UsCi0gICAgICAgIFsmXSAoYXV0byYgdHlwZSkgewotICAgICAg
ICAgICAgZW5jb2RlciA8PCB0eXBlLmludGVycG9sYXRpb25Db2xvclNwYWNlOwotICAgICAgICAg
ICAgaWYgY29uc3RleHByIChkZWNsdHlwZSh0eXBlKTo6Q29sb3JUeXBlOjpNb2RlbDo6Y29vcmRp
bmF0ZVN5c3RlbSA9PSBDb2xvclNwYWNlQ29vcmRpbmF0ZVN5c3RlbTo6Q3lsaW5kcmljYWxQb2xh
cikgewotICAgICAgICAgICAgICAgIGVuY29kZXIgPDwgdHlwZS5odWVJbnRlcnBvbGF0aW9uTWV0
aG9kOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgKTsKLX0KLQotdGVtcGxhdGU8dHlw
ZW5hbWUgRGVjb2Rlcj4gc3RkOjpvcHRpb25hbDxDb2xvckludGVycG9sYXRpb25NZXRob2Q+IENv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAg
c3RkOjpvcHRpb25hbDxBbHBoYVByZW11bHRpcGxpY2F0aW9uPiBhbHBoYVByZW11bHRpcGxpY2F0
aW9uOwotICAgIGRlY29kZXIgPj4gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbjsKLSAgICBpZiAoIWFs
cGhhUHJlbXVsdGlwbGljYXRpb24pCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICBzdGQ6Om9wdGlvbmFsPENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U+IGludGVycG9sYXRp
b25Db2xvclNwYWNlOwotICAgIGRlY29kZXIgPj4gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U7Ci0g
ICAgaWYgKCFpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLQotICAgIHN3aXRjaCAoKmludGVycG9sYXRpb25Db2xvclNwYWNlKSB7Ci0gICAgY2Fz
ZSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpIU0w6IHsKLSAgICAgICAgc3RkOjpvcHRp
b25hbDxIdWVJbnRlcnBvbGF0aW9uTWV0aG9kPiBodWVJbnRlcnBvbGF0aW9uTWV0aG9kOwotICAg
ICAgICBkZWNvZGVyID4+IGh1ZUludGVycG9sYXRpb25NZXRob2Q7Ci0gICAgICAgIGlmICghaHVl
SW50ZXJwb2xhdGlvbk1ldGhvZCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0K
LSAgICAgICAgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZDo6SFNMIHsgKmh1ZUludGVycG9sYXRpb25NZXRob2QgfSwgKmFscGhhUHJlbXVs
dGlwbGljYXRpb24gfTsKLSAgICB9Ci0gICAgY2FzZSBDb2xvckludGVycG9sYXRpb25Db2xvclNw
YWNlOjpIV0I6IHsKLSAgICAgICAgc3RkOjpvcHRpb25hbDxIdWVJbnRlcnBvbGF0aW9uTWV0aG9k
PiBodWVJbnRlcnBvbGF0aW9uTWV0aG9kOwotICAgICAgICBkZWNvZGVyID4+IGh1ZUludGVycG9s
YXRpb25NZXRob2Q7Ci0gICAgICAgIGlmICghaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCkKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAgICAgcmV0dXJuIENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6SFdCIHsgKmh1ZUludGVy
cG9sYXRpb25NZXRob2QgfSwgKmFscGhhUHJlbXVsdGlwbGljYXRpb24gfTsKLSAgICB9Ci0gICAg
Y2FzZSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpMQ0g6IHsKLSAgICAgICAgc3RkOjpv
cHRpb25hbDxIdWVJbnRlcnBvbGF0aW9uTWV0aG9kPiBodWVJbnRlcnBvbGF0aW9uTWV0aG9kOwot
ICAgICAgICBkZWNvZGVyID4+IGh1ZUludGVycG9sYXRpb25NZXRob2Q7Ci0gICAgICAgIGlmICgh
aHVlSW50ZXJwb2xhdGlvbk1ldGhvZCkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0KLSAgICAgICAgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZDo6TENIIHsgKmh1ZUludGVycG9sYXRpb25NZXRob2QgfSwgKmFscGhhUHJl
bXVsdGlwbGljYXRpb24gfTsKLSAgICB9Ci0gICAgY2FzZSBDb2xvckludGVycG9sYXRpb25Db2xv
clNwYWNlOjpPS0xDSDogewotICAgICAgICBzdGQ6Om9wdGlvbmFsPEh1ZUludGVycG9sYXRpb25N
ZXRob2Q+IGh1ZUludGVycG9sYXRpb25NZXRob2Q7Ci0gICAgICAgIGRlY29kZXIgPj4gaHVlSW50
ZXJwb2xhdGlvbk1ldGhvZDsKLSAgICAgICAgaWYgKCFodWVJbnRlcnBvbGF0aW9uTWV0aG9kKQot
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgICAgICByZXR1cm4gQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpPS0xDSCB7ICpo
dWVJbnRlcnBvbGF0aW9uTWV0aG9kIH0sICphbHBoYVByZW11bHRpcGxpY2F0aW9uIH07Ci0gICAg
fQotICAgIGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6TGFiOgotICAgICAgICBy
ZXR1cm4gQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
OjpMYWIgeyB9LCAqYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiB9OwotICAgIGNhc2UgQ29sb3JJbnRl
cnBvbGF0aW9uQ29sb3JTcGFjZTo6T0tMYWI6Ci0gICAgICAgIHJldHVybiBDb2xvckludGVycG9s
YXRpb25NZXRob2QgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6Ok9LTGFiIHsgfSwgKmFscGhh
UHJlbXVsdGlwbGljYXRpb24gfTsKLSAgICBjYXNlIENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3Bh
Y2U6OlNSR0I6Ci0gICAgICAgIHJldHVybiBDb2xvckludGVycG9sYXRpb25NZXRob2QgeyBDb2xv
ckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCAqYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiB9
OwotICAgIGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6U1JHQkxpbmVhcjoKLSAg
ICAgICAgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IENvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZDo6U1JHQkxpbmVhciB7IH0sICphbHBoYVByZW11bHRpcGxpY2F0aW9uIH07Ci0gICAg
Y2FzZSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpYWVpENTA6Ci0gICAgICAgIHJldHVy
biBDb2xvckludGVycG9sYXRpb25NZXRob2QgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlhZ
WkQ1MCB7IH0sICphbHBoYVByZW11bHRpcGxpY2F0aW9uIH07Ci0gICAgY2FzZSBDb2xvckludGVy
cG9sYXRpb25Db2xvclNwYWNlOjpYWVpENjU6Ci0gICAgICAgIHJldHVybiBDb2xvckludGVycG9s
YXRpb25NZXRob2QgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlhZWkQ2NSB7IH0sICphbHBo
YVByZW11bHRpcGxpY2F0aW9uIH07Ci0gICAgfQotCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi19Ci0KLW5hbWVzcGFjZSBX
VEYgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6Okh1ZUludGVycG9s
YXRpb25NZXRob2Q+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBX
ZWJDb3JlOjpIdWVJbnRlcnBvbGF0aW9uTWV0aG9kLAotICAgICAgICBXZWJDb3JlOjpIdWVJbnRl
cnBvbGF0aW9uTWV0aG9kOjpTaG9ydGVyLAotICAgICAgICBXZWJDb3JlOjpIdWVJbnRlcnBvbGF0
aW9uTWV0aG9kOjpMb25nZXIsCi0gICAgICAgIFdlYkNvcmU6Okh1ZUludGVycG9sYXRpb25NZXRo
b2Q6OkluY3JlYXNpbmcsCi0gICAgICAgIFdlYkNvcmU6Okh1ZUludGVycG9sYXRpb25NZXRob2Q6
OkRlY3JlYXNpbmcsCi0gICAgICAgIFdlYkNvcmU6Okh1ZUludGVycG9sYXRpb25NZXRob2Q6OlNw
ZWNpZmllZAotICAgID47Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNv
cmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U+IHsKLSAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAotICAgICAgICBXZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNl
LAotICAgICAgICBXZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpIU0wsCi0g
ICAgICAgIFdlYkNvcmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OkhXQiwKLSAgICAg
ICAgV2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6TENILAotICAgICAgICBX
ZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpMYWIsCi0gICAgICAgIFdlYkNv
cmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6Ok9LTENILAotICAgICAgICBXZWJDb3Jl
OjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpPS0xhYiwKLSAgICAgICAgV2ViQ29yZTo6
Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6U1JHQiwKLSAgICAgICAgV2ViQ29yZTo6Q29s
b3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6U1JHQkxpbmVhciwKLSAgICAgICAgV2ViQ29yZTo6
Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6WFlaRDUwLAotICAgICAgICBXZWJDb3JlOjpD
b2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpYWVpENjUKLSAgICA+OwotfTsKLQogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0aW9uTWV0
aG9kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWxw
aGFQcmVtdWx0aXBsaWNhdGlvbi5oIgorI2luY2x1ZGUgIkNvbG9yVHlwZXMuaCIKKyNpbmNsdWRl
IDxvcHRpb25hbD4KKyNpbmNsdWRlIDx2YXJpYW50PgorI2luY2x1ZGUgPHd0Zi9FbnVtVHJhaXRz
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Vu
dW0gY2xhc3MgSHVlSW50ZXJwb2xhdGlvbk1ldGhvZCA6IHVpbnQ4X3QgeworICAgIFNob3J0ZXIs
CisgICAgTG9uZ2VyLAorICAgIEluY3JlYXNpbmcsCisgICAgRGVjcmVhc2luZywKKyAgICBTcGVj
aWZpZWQKK307CisKK2VudW0gY2xhc3MgQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA6IHVp
bnQ4X3QgeworICAgIEhTTCwKKyAgICBIV0IsCisgICAgTENILAorICAgIExhYiwKKyAgICBPS0xD
SCwKKyAgICBPS0xhYiwKKyAgICBTUkdCLAorICAgIFNSR0JMaW5lYXIsCisgICAgWFlaRDUwLAor
ICAgIFhZWkQ2NQorfTsKKyAgICAKK3N0cnVjdCBDb2xvckludGVycG9sYXRpb25NZXRob2Qgewor
ICAgIHN0cnVjdCBIU0wgeworICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaW50ZXJwb2xh
dGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpIU0w7CisgICAg
ICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6OkhTTEE8ZmxvYXQ+OworICAgICAgICBIdWVJ
bnRlcnBvbGF0aW9uTWV0aG9kIGh1ZUludGVycG9sYXRpb25NZXRob2QgPSBIdWVJbnRlcnBvbGF0
aW9uTWV0aG9kOjpTaG9ydGVyOworICAgIH07CisgICAgc3RydWN0IEhXQiB7CisgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJw
b2xhdGlvbkNvbG9yU3BhY2U6OkhXQjsKKyAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29y
ZTo6SFdCQTxmbG9hdD47CisgICAgICAgIEh1ZUludGVycG9sYXRpb25NZXRob2QgaHVlSW50ZXJw
b2xhdGlvbk1ldGhvZCA9IEh1ZUludGVycG9sYXRpb25NZXRob2Q6OlNob3J0ZXI7CisgICAgfTsK
KyAgICBzdHJ1Y3QgTENIIHsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGludGVycG9s
YXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6TENIOworICAg
ICAgICB1c2luZyBDb2xvclR5cGUgPSBXZWJDb3JlOjpMQ0hBPGZsb2F0PjsKKyAgICAgICAgSHVl
SW50ZXJwb2xhdGlvbk1ldGhvZCBodWVJbnRlcnBvbGF0aW9uTWV0aG9kID0gSHVlSW50ZXJwb2xh
dGlvbk1ldGhvZDo6U2hvcnRlcjsKKyAgICB9OworICAgIHN0cnVjdCBMYWIgeworICAgICAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVy
cG9sYXRpb25Db2xvclNwYWNlOjpMYWI7CisgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNv
cmU6OkxhYjxmbG9hdD47CisgICAgfTsKKyAgICBzdHJ1Y3QgT0tMQ0ggeworICAgICAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2UgPSBDb2xvckludGVycG9s
YXRpb25Db2xvclNwYWNlOjpPS0xDSDsKKyAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29y
ZTo6T0tMQ0hBPGZsb2F0PjsKKyAgICAgICAgSHVlSW50ZXJwb2xhdGlvbk1ldGhvZCBodWVJbnRl
cnBvbGF0aW9uTWV0aG9kID0gSHVlSW50ZXJwb2xhdGlvbk1ldGhvZDo6U2hvcnRlcjsKKyAgICB9
OworICAgIHN0cnVjdCBPS0xhYiB7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRl
cnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6Ok9LTGFi
OworICAgICAgICB1c2luZyBDb2xvclR5cGUgPSBXZWJDb3JlOjpPS0xhYjxmbG9hdD47CisgICAg
fTsKKyAgICBzdHJ1Y3QgU1JHQiB7CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpbnRl
cnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlNSR0I7
CisgICAgICAgIHVzaW5nIENvbG9yVHlwZSA9IFdlYkNvcmU6OlNSR0JBPGZsb2F0PjsKKyAgICB9
OworICAgIHN0cnVjdCBTUkdCTGluZWFyIHsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGludGVycG9sYXRpb25Db2xvclNwYWNlID0gQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6
U1JHQkxpbmVhcjsKKyAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6TGluZWFyU1JH
QkE8ZmxvYXQ+OworICAgIH07CisgICAgc3RydWN0IFhZWkQ1MCB7CisgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZSA9IENvbG9ySW50ZXJwb2xhdGlv
bkNvbG9yU3BhY2U6OlhZWkQ1MDsKKyAgICAgICAgdXNpbmcgQ29sb3JUeXBlID0gV2ViQ29yZTo6
WFlaQTxmbG9hdCwgV2hpdGVQb2ludDo6RDUwPjsKKyAgICB9OworICAgIHN0cnVjdCBYWVpENjUg
eworICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaW50ZXJwb2xhdGlvbkNvbG9yU3BhY2Ug
PSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpYWVpENjU7CisgICAgICAgIHVzaW5nIENv
bG9yVHlwZSA9IFdlYkNvcmU6OlhZWkE8ZmxvYXQsIFdoaXRlUG9pbnQ6OkQ2NT47CisgICAgfTsK
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxDb2xvckludGVycG9sYXRpb25NZXRob2Q+IGRlY29kZShEZWNvZGVyJik7CisKKyAgICBzdGQ6
OnZhcmlhbnQ8SFNMLCBIV0IsIExDSCwgTGFiLCBPS0xDSCwgT0tMYWIsIFNSR0IsIFNSR0JMaW5l
YXIsIFhZWkQ1MCwgWFlaRDY1PiBjb2xvclNwYWNlOworICAgIEFscGhhUHJlbXVsdGlwbGljYXRp
b24gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbjsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEVuY29k
ZXI+IHZvaWQgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IGFscGhhUHJlbXVsdGlwbGljYXRpb247CisKKyAg
ICBXVEY6OnN3aXRjaE9uKGNvbG9yU3BhY2UsCisgICAgICAgIFsmXSAoYXV0byYgdHlwZSkgewor
ICAgICAgICAgICAgZW5jb2RlciA8PCB0eXBlLmludGVycG9sYXRpb25Db2xvclNwYWNlOworICAg
ICAgICAgICAgaWYgY29uc3RleHByIChzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxkZWNsdHlwZSh0
eXBlKT46OkNvbG9yVHlwZTo6TW9kZWw6OmNvb3JkaW5hdGVTeXN0ZW0gPT0gQ29sb3JTcGFjZUNv
b3JkaW5hdGVTeXN0ZW06OkN5bGluZHJpY2FsUG9sYXIpIHsKKyAgICAgICAgICAgICAgICBlbmNv
ZGVyIDw8IHR5cGUuaHVlSW50ZXJwb2xhdGlvbk1ldGhvZDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9u
YWw8Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kPiBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8QWxwaGFQcmVtdWx0
aXBsaWNhdGlvbj4gYWxwaGFQcmVtdWx0aXBsaWNhdGlvbjsKKyAgICBkZWNvZGVyID4+IGFscGhh
UHJlbXVsdGlwbGljYXRpb247CisgICAgaWYgKCFhbHBoYVByZW11bHRpcGxpY2F0aW9uKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxDb2xvckludGVy
cG9sYXRpb25Db2xvclNwYWNlPiBpbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTsKKyAgICBkZWNvZGVy
ID4+IGludGVycG9sYXRpb25Db2xvclNwYWNlOworICAgIGlmICghaW50ZXJwb2xhdGlvbkNvbG9y
U3BhY2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzd2l0Y2ggKCppbnRl
cnBvbGF0aW9uQ29sb3JTcGFjZSkgeworICAgIGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JT
cGFjZTo6SFNMOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SHVlSW50ZXJwb2xhdGlvbk1ldGhv
ZD4gaHVlSW50ZXJwb2xhdGlvbk1ldGhvZDsKKyAgICAgICAgZGVjb2RlciA+PiBodWVJbnRlcnBv
bGF0aW9uTWV0aG9kOworICAgICAgICBpZiAoIWh1ZUludGVycG9sYXRpb25NZXRob2QpCisgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiBDb2xvckludGVy
cG9sYXRpb25NZXRob2QgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OkhTTCB7ICpodWVJbnRl
cnBvbGF0aW9uTWV0aG9kIH0sICphbHBoYVByZW11bHRpcGxpY2F0aW9uIH07CisgICAgfQorICAg
IGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6SFdCOiB7CisgICAgICAgIHN0ZDo6
b3B0aW9uYWw8SHVlSW50ZXJwb2xhdGlvbk1ldGhvZD4gaHVlSW50ZXJwb2xhdGlvbk1ldGhvZDsK
KyAgICAgICAgZGVjb2RlciA+PiBodWVJbnRlcnBvbGF0aW9uTWV0aG9kOworICAgICAgICBpZiAo
IWh1ZUludGVycG9sYXRpb25NZXRob2QpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCisgICAgICAgIHJldHVybiBDb2xvckludGVycG9sYXRpb25NZXRob2QgeyBDb2xvckludGVy
cG9sYXRpb25NZXRob2Q6OkhXQiB7ICpodWVJbnRlcnBvbGF0aW9uTWV0aG9kIH0sICphbHBoYVBy
ZW11bHRpcGxpY2F0aW9uIH07CisgICAgfQorICAgIGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9uQ29s
b3JTcGFjZTo6TENIOiB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8SHVlSW50ZXJwb2xhdGlvbk1l
dGhvZD4gaHVlSW50ZXJwb2xhdGlvbk1ldGhvZDsKKyAgICAgICAgZGVjb2RlciA+PiBodWVJbnRl
cnBvbGF0aW9uTWV0aG9kOworICAgICAgICBpZiAoIWh1ZUludGVycG9sYXRpb25NZXRob2QpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIHJldHVybiBDb2xvcklu
dGVycG9sYXRpb25NZXRob2QgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OkxDSCB7ICpodWVJ
bnRlcnBvbGF0aW9uTWV0aG9kIH0sICphbHBoYVByZW11bHRpcGxpY2F0aW9uIH07CisgICAgfQor
ICAgIGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6T0tMQ0g6IHsKKyAgICAgICAg
c3RkOjpvcHRpb25hbDxIdWVJbnRlcnBvbGF0aW9uTWV0aG9kPiBodWVJbnRlcnBvbGF0aW9uTWV0
aG9kOworICAgICAgICBkZWNvZGVyID4+IGh1ZUludGVycG9sYXRpb25NZXRob2Q7CisgICAgICAg
IGlmICghaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICAgICAgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCB7IENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZDo6T0tMQ0ggeyAqaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCB9LCAq
YWxwaGFQcmVtdWx0aXBsaWNhdGlvbiB9OworICAgIH0KKyAgICBjYXNlIENvbG9ySW50ZXJwb2xh
dGlvbkNvbG9yU3BhY2U6OkxhYjoKKyAgICAgICAgcmV0dXJuIENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6TGFiIHsgfSwgKmFscGhhUHJlbXVsdGlw
bGljYXRpb24gfTsKKyAgICBjYXNlIENvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6Ok9LTGFi
OgorICAgICAgICByZXR1cm4gQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpPS0xhYiB7IH0sICphbHBoYVByZW11bHRpcGxpY2F0aW9uIH07CisgICAg
Y2FzZSBDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpTUkdCOgorICAgICAgICByZXR1cm4g
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdC
IHsgfSwgKmFscGhhUHJlbXVsdGlwbGljYXRpb24gfTsKKyAgICBjYXNlIENvbG9ySW50ZXJwb2xh
dGlvbkNvbG9yU3BhY2U6OlNSR0JMaW5lYXI6CisgICAgICAgIHJldHVybiBDb2xvckludGVycG9s
YXRpb25NZXRob2QgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0JMaW5lYXIgeyB9LCAq
YWxwaGFQcmVtdWx0aXBsaWNhdGlvbiB9OworICAgIGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9uQ29s
b3JTcGFjZTo6WFlaRDUwOgorICAgICAgICByZXR1cm4gQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
IHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpYWVpENTAgeyB9LCAqYWxwaGFQcmVtdWx0aXBs
aWNhdGlvbiB9OworICAgIGNhc2UgQ29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6WFlaRDY1
OgorICAgICAgICByZXR1cm4gQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpYWVpENjUgeyB9LCAqYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiB9OworICAg
IH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKK30KKworaW5saW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBDb2xv
ckludGVycG9sYXRpb25NZXRob2QmIGNvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCkKK3sKKyAgICBh
ZGQoaGFzaGVyLCBjb2xvckludGVycG9sYXRpb25NZXRob2QuYWxwaGFQcmVtdWx0aXBsaWNhdGlv
bik7CisgICAgV1RGOjpzd2l0Y2hPbihjb2xvckludGVycG9sYXRpb25NZXRob2QuY29sb3JTcGFj
ZSwKKyAgICAgICAgWyZdIChhdXRvJiB0eXBlKSB7CisgICAgICAgICAgICBhZGQoaGFzaGVyLCB0
eXBlLmludGVycG9sYXRpb25Db2xvclNwYWNlKTsKKyAgICAgICAgICAgIGlmIGNvbnN0ZXhwciAo
c3RkOjpyZW1vdmVfcmVmZXJlbmNlX3Q8ZGVjbHR5cGUodHlwZSk+OjpDb2xvclR5cGU6Ok1vZGVs
Ojpjb29yZGluYXRlU3lzdGVtID09IENvbG9yU3BhY2VDb29yZGluYXRlU3lzdGVtOjpDeWxpbmRy
aWNhbFBvbGFyKSB7CisgICAgICAgICAgICAgICAgYWRkKGhhc2hlciwgdHlwZS5odWVJbnRlcnBv
bGF0aW9uTWV0aG9kKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICk7Cit9CisKK2lu
bGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZDo6SFNMJiBhLCBjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OkhTTCYgYikKK3sK
KyAgICByZXR1cm4gYS5odWVJbnRlcnBvbGF0aW9uTWV0aG9kID09IGIuaHVlSW50ZXJwb2xhdGlv
bk1ldGhvZDsKK30KKworaW5saW5lIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpIV0ImIGEsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1l
dGhvZDo6SFdCJiBiKQoreworICAgIHJldHVybiBhLmh1ZUludGVycG9sYXRpb25NZXRob2QgPT0g
Yi5odWVJbnRlcnBvbGF0aW9uTWV0aG9kOworfQorCitpbmxpbmUgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OkxDSCYgYSwgY29uc3QgQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpMQ0gmIGIpCit7CisgICAgcmV0dXJuIGEuaHVlSW50ZXJw
b2xhdGlvbk1ldGhvZCA9PSBiLmh1ZUludGVycG9sYXRpb25NZXRob2Q7Cit9CisKK2lubGluZSBj
b25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6
T0tMQ0gmIGEsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6T0tMQ0gmIGIpCit7Cisg
ICAgcmV0dXJuIGEuaHVlSW50ZXJwb2xhdGlvbk1ldGhvZCA9PSBiLmh1ZUludGVycG9sYXRpb25N
ZXRob2Q7Cit9CisKK2lubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9y
SW50ZXJwb2xhdGlvbk1ldGhvZDo6TGFiJiwgY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
OjpMYWImKQoreworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgY29uc3RleHByIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6Ok9LTGFiJiwgY29uc3Qg
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpPS0xhYiYpCit7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2lubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZDo6U1JHQiYsIGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiYp
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2lubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQkxpbmVhciYsIGNvbnN0IENv
bG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQkxpbmVhciYpCit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2lubGluZSBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZDo6WFlaRDUwJiwgY29uc3QgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpY
WVpENTAmKQoreworICAgIHJldHVybiB0cnVlOworfQorCitpbmxpbmUgY29uc3RleHByIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlhZWkQ2NSYsIGNvbnN0
IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6WFlaRDY1JikKK3sKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworaW5saW5lIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kJiBhLCBjb25zdCBDb2xvckludGVycG9sYXRpb25NZXRob2QmIGIpCit7Cisg
ICAgcmV0dXJuIGEuYWxwaGFQcmVtdWx0aXBsaWNhdGlvbiA9PSBiLmFscGhhUHJlbXVsdGlwbGlj
YXRpb24gJiYgYS5jb2xvclNwYWNlID09IGIuY29sb3JTcGFjZTsKK30KKworfQorCituYW1lc3Bh
Y2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpIdWVJbnRl
cnBvbGF0aW9uTWV0aG9kPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAg
ICAgV2ViQ29yZTo6SHVlSW50ZXJwb2xhdGlvbk1ldGhvZCwKKyAgICAgICAgV2ViQ29yZTo6SHVl
SW50ZXJwb2xhdGlvbk1ldGhvZDo6U2hvcnRlciwKKyAgICAgICAgV2ViQ29yZTo6SHVlSW50ZXJw
b2xhdGlvbk1ldGhvZDo6TG9uZ2VyLAorICAgICAgICBXZWJDb3JlOjpIdWVJbnRlcnBvbGF0aW9u
TWV0aG9kOjpJbmNyZWFzaW5nLAorICAgICAgICBXZWJDb3JlOjpIdWVJbnRlcnBvbGF0aW9uTWV0
aG9kOjpEZWNyZWFzaW5nLAorICAgICAgICBXZWJDb3JlOjpIdWVJbnRlcnBvbGF0aW9uTWV0aG9k
OjpTcGVjaWZpZWQKKyAgICA+OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlPiB7CisgICAgdXNpbmcgdmFsdWVz
ID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JT
cGFjZSwKKyAgICAgICAgV2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6SFNM
LAorICAgICAgICBXZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpIV0IsCisg
ICAgICAgIFdlYkNvcmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OkxDSCwKKyAgICAg
ICAgV2ViQ29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6TGFiLAorICAgICAgICBX
ZWJDb3JlOjpDb2xvckludGVycG9sYXRpb25Db2xvclNwYWNlOjpPS0xDSCwKKyAgICAgICAgV2Vi
Q29yZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6T0tMYWIsCisgICAgICAgIFdlYkNv
cmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlNSR0IsCisgICAgICAgIFdlYkNvcmU6
OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlNSR0JMaW5lYXIsCisgICAgICAgIFdlYkNv
cmU6OkNvbG9ySW50ZXJwb2xhdGlvbkNvbG9yU3BhY2U6OlhZWkQ1MCwKKyAgICAgICAgV2ViQ29y
ZTo6Q29sb3JJbnRlcnBvbGF0aW9uQ29sb3JTcGFjZTo6WFlaRDY1CisgICAgPjsKK307CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAJ
KHJldmlzaW9uIDI4NjkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTMgKzM0LDE0IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotUmVmPEdyYWRpZW50PiBHcmFkaWVudDo6Y3JlYXRlKERhdGEmJiBkYXRh
KQorUmVmPEdyYWRpZW50PiBHcmFkaWVudDo6Y3JlYXRlKERhdGEmJiBkYXRhLCBDb2xvckludGVy
cG9sYXRpb25NZXRob2QgY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKQogewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEdyYWRpZW50KFdURk1vdmUoZGF0YSkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBHcmFkaWVudChXVEZNb3ZlKGRhdGEpLCBjb2xvckludGVycG9sYXRpb25NZXRob2Qp
KTsKIH0KIAotR3JhZGllbnQ6OkdyYWRpZW50KERhdGEmJiBkYXRhKQotICAgIDogbV9kYXRhKFdU
Rk1vdmUoZGF0YSkpCitHcmFkaWVudDo6R3JhZGllbnQoRGF0YSYmIGRhdGEsIENvbG9ySW50ZXJw
b2xhdGlvbk1ldGhvZCBjb2xvckludGVycG9sYXRpb25NZXRob2QpCisgICAgOiBtX2RhdGEgeyBX
VEZNb3ZlKGRhdGEpIH0KKyAgICAsIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIHsgY29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kIH0KIHsKIH0KIApAQCAtMTU0LDcgKzE1NSw3IEBAIHVuc2lnbmVk
IEdyYWRpZW50OjpoYXNoKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2FjaGVkSGFzaCkgewogICAg
ICAgICBzb3J0U3RvcHMoKTsKLSAgICAgICAgbV9jYWNoZWRIYXNoID0gY29tcHV0ZUhhc2gobV9k
YXRhLCBtX3NwcmVhZE1ldGhvZCwgbV9zdG9wcyk7CisgICAgICAgIG1fY2FjaGVkSGFzaCA9IGNv
bXB1dGVIYXNoKG1fZGF0YSwgbV9jb2xvckludGVycG9sYXRpb25NZXRob2QsIG1fc3ByZWFkTWV0
aG9kLCBtX3N0b3BzKTsKICAgICB9CiAgICAgcmV0dXJuIG1fY2FjaGVkSGFzaDsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAkocmV2aXNpb24g
Mjg2OTExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNm
b3JtLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDb2xvckludGVycG9sYXRpb25N
ZXRob2QuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBl
cy5oIgogI2luY2x1ZGUgPHZhcmlhbnQ+CkBAIC0xMDIsNyArMTAzLDcgQEAgcHVibGljOgogCiAg
ICAgdXNpbmcgRGF0YSA9IHN0ZDo6dmFyaWFudDxMaW5lYXJEYXRhLCBSYWRpYWxEYXRhLCBDb25p
Y0RhdGE+OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRl
KERhdGEmJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxHcmFkaWVudD4gY3JlYXRl
KERhdGEmJiwgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKTsKIAogICAgIGJvb2wgaXNaZXJvU2l6
ZSgpIGNvbnN0OwogCkBAIC0xMzgsNyArMTM5LDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFJlZjxHcmFkaWVudD4+IGRlY29k
ZShEZWNvZGVyJik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgR3JhZGllbnQoRGF0YSYmKTsK
KyAgICBleHBsaWNpdCBHcmFkaWVudChEYXRhJiYsIENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZCk7
CiAKICAgICB2b2lkIHNvcnRTdG9wcygpIGNvbnN0OwogICAgIHZvaWQgc3RvcHNDaGFuZ2VkKCk7
CkBAIC0xNDksNiArMTUwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgRGF0YSBtX2RhdGE7
CisgICAgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kIG1fY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
OwogICAgIG11dGFibGUgQ29sb3JTdG9wVmVjdG9yIG1fc3RvcHM7CiAgICAgbXV0YWJsZSBib29s
IG1fc3RvcHNTb3J0ZWQgeyBmYWxzZSB9OwogICAgIEdyYWRpZW50U3ByZWFkTWV0aG9kIG1fc3By
ZWFkTWV0aG9kIHsgR3JhZGllbnRTcHJlYWRNZXRob2Q6OlBhZCB9OwpAQCAtMjY4LDYgKzI3MCw3
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+IHN0ZDo6b3B0aW9uYWwKIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+IHZvaWQgR3JhZGllbnQ6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewogICAgIGVuY29kZXIgPDwgbV9kYXRhOworICAgIGVuY29kZXIgPDwgbV9jb2xvcklu
dGVycG9sYXRpb25NZXRob2Q7CiAgICAgZW5jb2RlciA8PCBtX3N0b3BzOwogICAgIGVuY29kZXIg
PDwgbV9zdG9wc1NvcnRlZDsKICAgICBlbmNvZGVyIDw8IG1fc3ByZWFkTWV0aG9kOwpAQCAtMjc5
LDcgKzI4MiwxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPiBzdGQ6Om9wdGlvbmFsCiAg
ICAgZGVjb2RlciA+PiBkYXRhOwogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShXVEZNb3ZlKCpk
YXRhKSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZD4gY29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kOworICAgIGRlY29kZXIgPj4gY29sb3JJbnRlcnBvbGF0aW9u
TWV0aG9kOworICAgIGlmICghY29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUo
V1RGTW92ZSgqZGF0YSksICpjb2xvckludGVycG9sYXRpb25NZXRob2QpOwogCiAgICAgc3RkOjpv
cHRpb25hbDxDb2xvclN0b3BWZWN0b3I+IHN0b3BzOwogICAgIGRlY29kZXIgPj4gc3RvcHM7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCShyZXZpc2lv
biAyODY5MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTExMjEsNyArMTEyMSw3IEBAIGJvb2wgUmVuZGVyVGhlbWVJT1M6
OnBhaW50UHJvZ3Jlc3NCYXIoY28KICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFNvbGlkU3Ry
b2tlKTsKIAogICAgIGNvbnN0IGZsb2F0IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gPSByZWN0
LnkoKSArIHZlcnRpY2FsT2Zmc2V0OwotICAgIGF1dG8gc3Ryb2tlR3JhZGllbnQgPSBHcmFkaWVu
dDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVy
dGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2FsUmVu
ZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0pOworICAgIGF1dG8gc3Ry
b2tlR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxv
YXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQo
cmVjdC54KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAt
IDEpIH0sIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRD
b2xvclN0b3AoeyAwLjBmLCBTUkdCQTx1aW50OF90PiB7IDE0MSwgMTQxLCAxNDEgfSB9KTsKICAg
ICBzdHJva2VHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC40NWYsIFNSR0JBPHVpbnQ4X3Q+IHsg
MjM4LCAyMzgsIDIzOCB9IH0pOwogICAgIHN0cm9rZUdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAw
LjU1ZiwgU1JHQkE8dWludDhfdD4geyAyMzgsIDIzOCwgMjM4IH0gfSk7CkBAIC0xMTQxLDcgKzEx
NDEsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvCiAgICAgcGFp
bnRJbmZvLmNvbnRleHQoKS5jbGlwUm91bmRlZFJlY3QoRmxvYXRSb3VuZGVkUmVjdChib3JkZXIs
IHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMsIHJvdW5kZWRDb3JuZXJS
YWRpdXMsIHJvdW5kZWRDb3JuZXJSYWRpdXMpKTsKIAogICAgIGZsb2F0IHVwcGVyR3JhZGllbnRI
ZWlnaHQgPSBwcm9ncmVzc0JhckhlaWdodCAvIDIuOwotICAgIGF1dG8gdXBwZXJHcmFkaWVudCA9
IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3Qu
eCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41ZiksIEZsb2F0UG9pbnQocmVjdC54
KCksIHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyB1cHBlckdyYWRpZW50SGVpZ2h0IC0gMS41
KSB9KTsKKyAgICBhdXRvIHVwcGVyR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50
OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3Np
dGlvbiArIDAuNWYpLCBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0
aW9uICsgdXBwZXJHcmFkaWVudEhlaWdodCAtIDEuNSkgfSwgeyBDb2xvckludGVycG9sYXRpb25N
ZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQg
fSk7CiAgICAgdXBwZXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4wZiwgU1JHQkE8dWludDhf
dD4geyAxMzMsIDEzMywgMTMzLCAxODggfSB9KTsKICAgICB1cHBlckdyYWRpZW50LT5hZGRDb2xv
clN0b3AoeyAxLjBmLCBTUkdCQTx1aW50OF90PiB7IDE4LCAxOCwgMTgsIDUxIH0gfSk7CiAgICAg
Y29udGV4dC5zZXRGaWxsR3JhZGllbnQoV1RGTW92ZSh1cHBlckdyYWRpZW50KSk7CkBAIC0xMTUz
LDcgKzExNTMsNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvCiAg
ICAgICAgIC8vIDIpIERyYXcgdGhlIHByb2dyZXNzIGJhci4KICAgICAgICAgZG91YmxlIHBvc2l0
aW9uID0gY2xhbXBUbyhyZW5kZXJQcm9ncmVzcy5wb3NpdGlvbigpLCAwLjAsIDEuMCk7CiAgICAg
ICAgIGZsb2F0IGJhcldpZHRoID0gcG9zaXRpb24gKiByZWN0LndpZHRoKCk7Ci0gICAgICAgIGF1
dG8gYmFyR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsg
RmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiArIDAuNWYpLCBG
bG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bvc2l0aW9uICsgcHJvZ3Jlc3NC
YXJIZWlnaHQgLSAxKSB9KTsKKyAgICAgICAgYXV0byBiYXJHcmFkaWVudCA9IEdyYWRpZW50Ojpj
cmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNh
bFJlbmRlcmluZ1Bvc2l0aW9uICsgMC41ZiksIEZsb2F0UG9pbnQocmVjdC54KCksIHZlcnRpY2Fs
UmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0sIHsgQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkIH0pOwogICAgICAgICBiYXJHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4wZiwg
U1JHQkE8dWludDhfdD4geyAxOTUsIDIxNywgMjQ3IH0gfSk7CiAgICAgICAgIGJhckdyYWRpZW50
LT5hZGRDb2xvclN0b3AoeyAwLjQ1ZiwgU1JHQkE8dWludDhfdD4geyAxMTgsIDE2NCwgMjI4IH0g
fSk7CiAgICAgICAgIGJhckdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjQ5ZiwgU1JHQkE8dWlu
dDhfdD4geyAxMTgsIDE2NCwgMjI4IH0gfSk7CkBAIC0xMTYyLDcgKzExNjIsNyBAQCBib29sIFJl
bmRlclRoZW1lSU9TOjpwYWludFByb2dyZXNzQmFyKGNvCiAgICAgICAgIGJhckdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoeyAxLjBmLCBTUkdCQTx1aW50OF90PiB7IDU3LCAxNDIsIDI0NCB9IH0pOwog
ICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChXVEZNb3ZlKGJhckdyYWRpZW50KSk7CiAK
LSAgICAgICAgYXV0byBiYXJTdHJva2VHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGll
bnQ6OkxpbmVhckRhdGEgeyBGbG9hdFBvaW50KHJlY3QueCgpLCB2ZXJ0aWNhbFJlbmRlcmluZ1Bv
c2l0aW9uKSwgRmxvYXRQb2ludChyZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiAr
IHByb2dyZXNzQmFySGVpZ2h0IC0gMSkgfSk7CisgICAgICAgIGF1dG8gYmFyU3Ryb2tlR3JhZGll
bnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgRmxvYXRQb2ludChy
ZWN0LngoKSwgdmVydGljYWxSZW5kZXJpbmdQb3NpdGlvbiksIEZsb2F0UG9pbnQocmVjdC54KCks
IHZlcnRpY2FsUmVuZGVyaW5nUG9zaXRpb24gKyBwcm9ncmVzc0JhckhlaWdodCAtIDEpIH0sIHsg
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogICAgICAgICBiYXJTdHJva2VHcmFkaWVudC0+YWRkQ29s
b3JTdG9wKHsgMC4wZiwgU1JHQkE8dWludDhfdD4geyA5NSwgMTA3LCAxODMgfSB9KTsKICAgICAg
ICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuNWYsIFNSR0JBPHVpbnQ4X3Q+
IHsgNjYsIDEwNiwgMTc0LCAyNDAgfSB9KTsKICAgICAgICAgYmFyU3Ryb2tlR3JhZGllbnQtPmFk
ZENvbG9yU3RvcCh7IDEuMGYsIFNSR0JBPHVpbnQ4X3Q+IHsgMzgsIDEwNCwgMTY2IH0gfSk7CkBA
IC0yMjQzLDcgKzIyNDMsNyBAQCBSZWZQdHI8R3JhZGllbnQ+IFJlbmRlclRoZW1lSU9TOjpjaGVj
a2JvCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYm9vbCBpc0VtcHR5ID0gIXN0YXRl
cy5jb250YWluc0FueSh7IENvbnRyb2xTdGF0ZXM6OlN0YXRlczo6Q2hlY2tlZCwgQ29udHJvbFN0
YXRlczo6U3RhdGVzOjpJbmRldGVybWluYXRlIH0pOwotICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFk
aWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgcmVjdC5taW5YTWluWUNvcm5lcigp
LCByZWN0Lm1heFhNYXhZQ29ybmVyKCkgfSk7CisgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50
OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyByZWN0Lm1pblhNaW5ZQ29ybmVyKCksIHJl
Y3QubWF4WE1heFlDb3JuZXIoKSB9LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7
IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMC4wZiwgRGlzcGxheVAzPGZsb2F0PiB7IDAsIDAsIDAsIGlz
RW1wdHkgPyAwLjA1ZiA6IDAuMTI1ZiB9fSk7CiAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7
IDEuMGYsIERpc3BsYXlQMzxmbG9hdD4geyAwLCAwLCAwLCAwIH19KTsKICAgICByZXR1cm4gZ3Jh
ZGllbnQ7CkBAIC0yODE2LDcgKzI4MTYsNyBAQCB2b2lkIFJlbmRlclRoZW1lSU9TOjpwYWludENv
bG9yV2VsbERlY29yCiAgICAgfTsKICAgICBjb25zdGV4cHIgaW50IG51bUNvbG9yU3RvcHMgPSBz
dGQ6OnNpemUoY29sb3JTdG9wcyk7CiAKLSAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNy
ZWF0ZShHcmFkaWVudDo6Q29uaWNEYXRhIHsgcmVjdC5jZW50ZXIoKSwgMCB9KTsKKyAgICBhdXRv
IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6Q29uaWNEYXRhIHsgcmVjdC5j
ZW50ZXIoKSwgMCB9LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bUNvbG9yU3RvcHM7ICsraSkKICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3Rv
cCh7IGkgKiAxLjBmIC8gKG51bUNvbG9yU3RvcHMgLSAxKSwgY29sb3JTdG9wc1tpXSB9KTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVh
ckdyYWRpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyODY5MTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3Jh
ZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBAIEZsb2F0UG9pbnQgUmVu
ZGVyU1ZHUmVzb3VyY2VMaW5lYXJHcmFkaWUKIAogUmVmPEdyYWRpZW50PiBSZW5kZXJTVkdSZXNv
dXJjZUxpbmVhckdyYWRpZW50OjpidWlsZEdyYWRpZW50KGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSkgY29uc3QKIHsKLSAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVu
dDo6TGluZWFyRGF0YSB7IHN0YXJ0UG9pbnQobV9hdHRyaWJ1dGVzKSwgZW5kUG9pbnQobV9hdHRy
aWJ1dGVzKSB9KTsKKyAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVu
dDo6TGluZWFyRGF0YSB7IHN0YXJ0UG9pbnQobV9hdHRyaWJ1dGVzKSwgZW5kUG9pbnQobV9hdHRy
aWJ1dGVzKSB9LCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICBncmFkaWVudC0+c2V0U3By
ZWFkTWV0aG9kKHBsYXRmb3JtU3ByZWFkTWV0aG9kRnJvbVNWR1R5cGUobV9hdHRyaWJ1dGVzLnNw
cmVhZE1ldGhvZCgpKSk7CiAgICAgYWRkU3RvcHMoZ3JhZGllbnQsIG1fYXR0cmlidXRlcy5zdG9w
cygpLCBzdHlsZSk7CiAgICAgcmV0dXJuIGdyYWRpZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFk
aWFsR3JhZGllbnQuY3BwCShyZXZpc2lvbiAyODY5MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw3ICs2NCw3IEBAIGZsb2F0IFJlbmRlclNWR1Jlc291cmNlUmFkaWFsR3JhZGll
bnQ6OmYKIAogUmVmPEdyYWRpZW50PiBSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50Ojpi
dWlsZEdyYWRpZW50KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKLSAgICBhdXRv
IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShHcmFkaWVudDo6UmFkaWFsRGF0YSB7IGZvY2Fs
UG9pbnQobV9hdHRyaWJ1dGVzKSwgY2VudGVyUG9pbnQobV9hdHRyaWJ1dGVzKSwgZm9jYWxSYWRp
dXMobV9hdHRyaWJ1dGVzKSwgcmFkaXVzKG1fYXR0cmlidXRlcyksIDEgfSk7CisgICAgYXV0byBn
cmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OlJhZGlhbERhdGEgeyBmb2NhbFBv
aW50KG1fYXR0cmlidXRlcyksIGNlbnRlclBvaW50KG1fYXR0cmlidXRlcyksIGZvY2FsUmFkaXVz
KG1fYXR0cmlidXRlcyksIHJhZGl1cyhtX2F0dHJpYnV0ZXMpLCAxIH0sIHsgQ29sb3JJbnRlcnBv
bGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0
aXBsaWVkIH0pOwogICAgIGdyYWRpZW50LT5zZXRTcHJlYWRNZXRob2QocGxhdGZvcm1TcHJlYWRN
ZXRob2RGcm9tU1ZHVHlwZShtX2F0dHJpYnV0ZXMuc3ByZWFkTWV0aG9kKCkpKTsKICAgICBhZGRT
dG9wcyhncmFkaWVudCwgbV9hdHRyaWJ1dGVzLnN0b3BzKCksIHN0eWxlKTsKICAgICByZXR1cm4g
Z3JhZGllbnQ7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY5MjIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0xMi0xMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUGlwZSBDb2xvckludGVycG9sYXRpb25NZXRob2QgaW50byBHcmFk
aWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0
MjA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIGNhbGxzIHRvIEdyYWRpZW50OjpjcmVhdGUoKSB0byBwYXNzIHRoZSBub3cgcmVxdWlyZWQg
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0Rpc3BsYXlMaXN0VGVzdHMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9j
Zy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAyMS0xMi0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODY4OTMuCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Rpc3Bs
YXlMaXN0VGVzdHMuY3BwCShyZXZpc2lvbiAyODY5MTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvRGlzcGxheUxpc3RUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDcgKzQyLDcgQEAgc3RhdGljIHVpbnQ4X3QgZ2xvYmFsSXRlbUJ1ZmZlcltnbG9iYWxJdAogCiBz
dGF0aWMgUmVmPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudCgpCiB7Ci0gICAgYXV0byBncmFkaWVu
dCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkNvbmljRGF0YSB7IHsgMC4sIDAuIH0sIDEu
MjUgfSk7CisgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkNv
bmljRGF0YSB7IHsgMC4sIDAuIH0sIDEuMjUgfSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6
OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAg
ICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3I6OnJlZCB9KTsKICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMC41LCBDb2xvcjo6Z3JlZW4gfSk7CiAgICAgZ3JhZGllbnQt
PmFkZENvbG9yU3RvcCh7IDAuOSwgQ29sb3I6OmJsdWUgfSk7CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvY2cvQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzQ0cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9C
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0VGVzdHNDRy5jcHAJKHJldmlzaW9uIDI4NjkxMSkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jZy9CaWZ1cmNhdGVkR3JhcGhpY3ND
b250ZXh0VGVzdHNDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCBURVNU
KEJpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHRUZXN0cywgRHJhCiAgICAgR3JhcGhpY3NDb250ZXh0
Q0cgc2Vjb25kYXJ5Q29udGV4dChzZWNvbmRhcnlDR0NvbnRleHQuZ2V0KCkpOwogICAgIEJpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHQgY3R4KHByaW1hcnlDb250ZXh0LCBzZWNvbmRhcnlDb250ZXh0
KTsKIAotICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5l
YXJEYXRhIHsgeyAwLCAwIH0sIHsgMSwgMSB9IH0pOworICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFk
aWVudDo6Y3JlYXRlKEdyYWRpZW50OjpMaW5lYXJEYXRhIHsgeyAwLCAwIH0sIHsgMSwgMSB9IH0s
IHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAw
LCBDb2xvcjo6cmVkIH0pOwogCiAgICAgYXV0byBncmFkaWVudEltYWdlID0gR3JhZGllbnRJbWFn
ZTo6Y3JlYXRlKGdyYWRpZW50LCBGbG9hdFNpemUgeyAxLCAxIH0pOwpAQCAtMTcxLDcgKzE3MSw3
IEBAIFRFU1QoQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dFRlc3RzLCBEcmEKICAgICBHcmFwaGlj
c0NvbnRleHRDRyBzZWNvbmRhcnlDb250ZXh0KHNlY29uZGFyeUNHQ29udGV4dC5nZXQoKSk7CiAg
ICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjdHgocHJpbWFyeUNvbnRleHQsIHNlY29uZGFy
eUNvbnRleHQpOwogCi0gICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGll
bnQ6OkxpbmVhckRhdGEgeyB7IDAsIDAgfSwgeyAxLCAxIH0gfSk7CisgICAgYXV0byBncmFkaWVu
dCA9IEdyYWRpZW50OjpjcmVhdGUoR3JhZGllbnQ6OkxpbmVhckRhdGEgeyB7IDAsIDAgfSwgeyAx
LCAxIH0gfSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgZ3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAsIENvbG9yOjpyZWQgfSk7CiAKICAgICBhdXRvIGdyYWRpZW50SW1hZ2UgPSBHcmFk
aWVudEltYWdlOjpjcmVhdGUoZ3JhZGllbnQsIEZsb2F0U2l6ZSB7IDEsIDEgfSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>