<?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>232167</bug_id>
          
          <creation_ts>2021-10-22 12:52:32 -0700</creation_ts>
          <short_desc>Rename ClipPathOperation to PathOperation</short_desc>
          <delta_ts>2021-10-22 15:18:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231801</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kiet Ho">kiet.ho</reporter>
          <assigned_to name="Kiet Ho">kiet.ho</assigned_to>
          <cc>annulen</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1807833</commentid>
    <comment_count>0</comment_count>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-10-22 12:52:32 -0700</bug_when>
    <thetext>Rename ClipPathOperation to PathOperation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807860</commentid>
    <comment_count>1</comment_count>
      <attachid>442194</attachid>
    <who name="Kiet Ho">kiet.ho</who>
    <bug_when>2021-10-22 13:48:27 -0700</bug_when>
    <thetext>Created attachment 442194
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807895</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-22 15:17:10 -0700</bug_when>
    <thetext>Committed r284718 (243432@main): &lt;https://commits.webkit.org/243432@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442194.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1807896</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-22 15:18:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/84565683&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442194</attachid>
            <date>2021-10-22 13:48:27 -0700</date>
            <delta_ts>2021-10-22 15:17:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232167-20211022154825.patch</filename>
            <type>text/plain</type>
            <size>50334</size>
            <attacher name="Kiet Ho">kiet.ho</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0NjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmM3NjViODBiYmNlNDQw
MGI4MzU3NWY3YjZhNTY2YTY3MzllM2NiNS4uODhlYjlmNjljZjMzMjk1MzE4NmRjYTA5NTNhZDgx
ODM5YzJjMjZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIxLTEwLTIyICBLaWV0
IEhvICA8dGhvMjJAYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBDbGlwUGF0aE9wZXJhdGlv
biB0byBQYXRoT3BlcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzIxNjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBmdW5jdGlvbmFsIGNoYW5nZXMsIG5vIHRlc3RzIHJlcXVpcmVkLgorCisg
ICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmJsZW5kRnVuYyk6CisgICAgICAgICogY3NzL0NTU0Jhc2lj
U2hhcGVzLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJv
cGVydHlJblN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUGF0aE9wZXJhdGlvbi5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmguCisg
ICAgICAgIChXZWJDb3JlOjpQYXRoT3BlcmF0aW9uOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhdGhPcGVyYXRpb246OmlzU2FtZVR5cGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6UGF0aE9wZXJhdGlvbjo6UGF0aE9wZXJhdGlvbik6CisgICAgICAgICogcmVuZGVy
aW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVmZXJl
bmNlZFNWR1Jlc291cmNlczo6cmVmZXJlbmNlZFNWR1Jlc291cmNlSURzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OnJlZmVyZW5jZWRDbGlwcGVyUmVuZGVyZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6
OmhpdFRlc3RDbGlwUGF0aCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp3aWxsQ29tcG9zaXRlQ2xpcFBh
dGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbXB1dGVDbGlwUGF0
aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZU1hc2tpbmdMYXllckdlb21ldHJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlTWFza2luZ0xheWVy
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OmNsaXBQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpp
bml0aWFsQ2xpcFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldENsaXBQ
YXRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjppc1BvaW50SW5DU1NDbGlwcGluZ0FyZWEpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcENvbnRleHRUb0NTU0NsaXBwaW5nQXJlYSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6d3JpdGVSZXNvdXJjZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJpbmdDb250ZXh0
OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1Jlc291cmNlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OmJ1aWxkQ2Fj
aGVkUmVzb3VyY2VzKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0Q2xpcFBh
dGgpOgorCiAyMDIxLTEwLTIxICBDYXRoaWUgQ2hlbiAgPGNhdGhpZWNoZW5AaWdhbGlhLmNvbT4K
IAogICAgICAgICBUaGUgaW50cmlzaWMgc2l6ZSBvZiBwaWN0dXJlIGltYWdlIGluc2lkZSBhIHRl
bXBsYXRlIGlzIGFsd2F5cyB6ZXJvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCA2OTE1OTZjMTkwZGJi
YTRmZmQzNWIxMTQ1NTExYmE1OTdjOWZlZWI1Li42NWU4ZTg1ZDA0MjJjZDQzMjVhMDYzZDBjYTMz
NDdiNDIxZDM3MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE1OTAsNyArMTU5MCw2IEBAIHNl
dChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbHVnaW5zL25wdHlwZXMu
aAogCiAgICAgcmVuZGVyaW5nL0JyZWFrTGluZXMuaAotICAgIHJlbmRlcmluZy9DbGlwUGF0aE9w
ZXJhdGlvbi5oCiAgICAgcmVuZGVyaW5nL0NsaXBSZWN0LmgKICAgICByZW5kZXJpbmcvRXZlbnRS
ZWdpb24uaAogICAgIHJlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaApAQCAtMTYxNCw2ICsxNjEz
LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHJlbmRlcmlu
Zy9QYWludEZyZXF1ZW5jeVRyYWNrZXIuaAogICAgIHJlbmRlcmluZy9QYWludEluZm8uaAogICAg
IHJlbmRlcmluZy9QYWludFBoYXNlLmgKKyAgICByZW5kZXJpbmcvUGF0aE9wZXJhdGlvbi5oCiAg
ICAgcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaAogICAgIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCiAgICAgcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTg0MGFhMjgyNDI2NGY2
OTFlZTMzOWMwMzcxMTUxMTc3YTQ0MTE1NC4uZmI3MjMyZDJiMmU5YzQ0NjA1OGVlYzY0Y2EzMDUz
MDc3YjAwYmMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNTUyNCw3ICs1NTI0LDcgQEAKIAkJRkIyQzE1QzMxNjVENjQ5RDAw
MzlDOUY4IC8qIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjJDMTVDMjE2NUQ2NDkwMDAzOUM5RjggLyog
Q2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlGQjMwNTZDMjE2OUU1REFDMDA5NkEyMzIgLyogQ1NTR3Jv
dXBpbmdSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGQjMwNTZDMTE2OUU1REFDMDA5NkEyMzIgLyogQ1NTR3JvdXBpbmdSdWxlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkI0ODRGNEQxNzFGODIx
RTAwMDQwNzU1IC8qIFRyYW5zZm9ybUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI0ODRGNEIxNzFGODIxRTAwMDQwNzU1IC8qIFRyYW5z
Zm9ybUZ1bmN0aW9ucy5oICovOyB9OwotCQlGQjkyREY0QjE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xp
cFBhdGhPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZCOTJERjQ5MTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZCOTJERjRC
MTVGRUQwODcwMDk5NDQzMyAvKiBQYXRoT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjkyREY0OTE1RkVEMDg3MDA5OTQ0MzMgLyogUGF0
aE9wZXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUZCQjBDNUI4MTdCQkQ2MjkwMDNEMzY3NyAvKiBDU1NGaWx0ZXJJbWFnZVZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjk2NUI4MTE3
QkJCNUY5MDBFODM1QjkgLyogQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKCk7IH07IH07CiAJCUZCRDZBRjg4MTVFRjI1QzkwMDhCNzExMCAvKiBDU1NC
YXNpY1NoYXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkJENkFGODcxNUVGMjFENDAwOEI3MTEwIC8qIENTU0Jhc2ljU2hhcGVzLmggKi87IH07CiAJ
CUZCRDZBRjhBMTVFRjI1REYwMDhCNzExMCAvKiBCYXNpY1NoYXBlRnVuY3Rpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQkQ2QUY4NTE1RUYyMUQ0
MDA4QjcxMTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oICovOyB9OwpAQCAtMTcxMTAsNyArMTcx
MTAsNyBAQAogCQlGQjMwNTZDMTE2OUU1REFDMDA5NkEyMzIgLyogQ1NTR3JvdXBpbmdSdWxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyb3VwaW5nUnVsZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjQ4NEY0QTE3MUY4MjFFMDAwNDA3NTUgLyogVHJh
bnNmb3JtRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFRyYW5zZm9ybUZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZC
NDg0RjRCMTcxRjgyMUUwMDA0MDc1NSAvKiBUcmFuc2Zvcm1GdW5jdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNmb3JtRnVuY3Rpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUZCOTJERjQ5MTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9w
ZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwUGF0aE9wZXJh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQjkyREY0OTE1RkVEMDg3MDA5
OTQ0MzMgLyogUGF0aE9wZXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYXRoT3BlcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCOTY1Qjgx
MTdCQkI1RjkwMEU4MzVCOSAvKiBDU1NGaWx0ZXJJbWFnZVZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENTU0ZpbHRlckltYWdlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRkI5NjVCODIxN0JCQjYyQzAwRTgzNUI5IC8qIENTU0ZpbHRlckltYWdl
VmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZCRDZBRjgyMTVF
RjIxQTMwMDhCNzExMCAvKiBCYXNpY1NoYXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBCYXNpY1NoYXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zMDE5Niw3ICszMDE5Niw2IEBACiAJCQkJQkNFQTQ4MTYwOTdEOTMwMjAwOTRDOUU0IC8q
IEJyZWFrTGluZXMuaCAqLywKIAkJCQlFNEYwQkUzMDI1NzEwQTc2MDA5RTc0MzEgLyogQ2FyZXRS
ZWN0Q29tcHV0YXRpb24uY3BwICovLAogCQkJCUU0RjBCRTJFMjU3MTBBNzUwMDlFNzQzMSAvKiBD
YXJldFJlY3RDb21wdXRhdGlvbi5oICovLAotCQkJCUZCOTJERjQ5MTVGRUQwODcwMDk5NDQzMyAv
KiBDbGlwUGF0aE9wZXJhdGlvbi5oICovLAogCQkJCTU4MDM3MTVGMUE2NkYwMEEwMEJBRjUxOSAv
KiBDbGlwUmVjdC5jcHAgKi8sCiAJCQkJNTgwMzcxNjAxQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBS
ZWN0LmggKi8sCiAJCQkJQkNERDQ1NEQxMjM2Qzk1QzAwOUE3OTg1IC8qIENvbHVtbkluZm8uaCAq
LywKQEAgLTMwMjc0LDYgKzMwMjczLDcgQEAKIAkJCQk1NUVDOTU5NzIwNjlDOTJEMDA3REQwQTkg
LyogUGFpbnRGcmVxdWVuY3lUcmFja2VyLmggKi8sCiAJCQkJMDg4NTA2N0QxMURBMDQ1QjAwMTgy
Qjk4IC8qIFBhaW50SW5mby5oICovLAogCQkJCTA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5OCAvKiBQ
YWludFBoYXNlLmggKi8sCisJCQkJRkI5MkRGNDkxNUZFRDA4NzAwOTk0NDMzIC8qIFBhdGhPcGVy
YXRpb24uaCAqLywKIAkJCQlCMkIxRjcxNDBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRlckV2ZW50
c0hpdFJ1bGVzLmNwcCAqLywKIAkJCQlCMkIxRjcxNTBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRl
ckV2ZW50c0hpdFJ1bGVzLmggKi8sCiAJCQkJMEZDMjc2QkEyNkRBRjlFOTAwOTNFOEVEIC8qIFJl
ZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwICovLApAQCAtMzIwNzYsNyArMzIwNzYsNiBAQAogCQkJ
CUY0NkM0NDdFMjM0NjU0NTQwMDM5QTc5RCAvKiBDbGlwYm9hcmRJdGVtQmluZGluZ3NEYXRhU291
cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNEQwNzU1ODIzNEQ4MjJEMDA4ODFFNzMgLyogQ2xp
cGJvYXJkSXRlbURhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RDA3NTU5MjM0RDgy
MzMwMDg4MUU3MyAvKiBDbGlwYm9hcmRJdGVtUGFzdGVib2FyZERhdGFTb3VyY2UuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUZCOTJERjRCMTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTgwMzcxNjIxQTY2RjAwQTAwQkFGNTE5IC8qIENsaXBS
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQxMzE0RkEwOUQ1MDA3NDU3QUUgLyogQ2xv
c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzBDMDU0Q0IxMTE4QzhFNDAwQ0UyNjM2IC8q
IENvZGVHZW5lcmF0b3IucG0gaW4gSGVhZGVycyAqLywKQEAgLTM0NzMxLDYgKzM0NzMwLDcgQEAK
IAkJCQkxQUY1RTRENTFFNTY3MzVCMDA0QTFGMDEgLyogUGFzdGVib2FyZFdyaXRlckRhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCUIyNzUzNTgwMEIwNTM4MTQwMDJDRTY0RiAvKiBQYXRoLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QzE5M0JDMjFGNUUwRUVEMDA4OEYzRTYgLyogUGF0aDJELmggaW4g
SGVhZGVycyAqLywKKwkJCQlGQjkyREY0QjE1RkVEMDg3MDA5OTQ0MzMgLyogUGF0aE9wZXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4REQ0ODcwQjQ2MjlBMzAwQzAyOTkwIC8qIFBhdGhU
cmF2ZXJzYWxTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1MDAyRkMxQjU2RDc5OTAwMjBB
QUY3IC8qIFBhdGhVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RkE2RTVEMEU0Q0ZE
RUQwMEQ1Q0Y0OSAvKiBQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmluZGV4IDJmZTBhNTBjYTQw
ODc4MGIxZDAwNzhiOGNhNjMwYzE5YzNiODBkYzIuLjRkMzQyYzBkMTdmZGM1ODY0MDNjMGEyODg4
NmYyY2MxNjM5MjYyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhbGN1bGF0
aW9uVmFsdWUuaCIKLSNpbmNsdWRlICJDbGlwUGF0aE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkNv
bG9yQmxlbmRpbmcuaCIKICNpbmNsdWRlICJDb21wb3NpdGVPcGVyYXRpb24uaCIKICNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKQEAgLTU1LDYgKzU0LDcgQEAKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJN
YXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJQYXRoT3BlcmF0aW9uLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQm94LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRl
ICJTdHlsZUNhY2hlZEltYWdlLmgiCkBAIC0yNzEsMjIgKzI3MSwyMiBAQCBzdGF0aWMgUmVmUHRy
PFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmRGdW5jKFRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbgogICAgIHJldHVybiBudWxscHRyOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0
cjxDbGlwUGF0aE9wZXJhdGlvbj4gYmxlbmRGdW5jKENsaXBQYXRoT3BlcmF0aW9uKiBmcm9tLCBD
bGlwUGF0aE9wZXJhdGlvbiogdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBj
b250ZXh0KQorc3RhdGljIGlubGluZSBSZWZQdHI8UGF0aE9wZXJhdGlvbj4gYmxlbmRGdW5jKFBh
dGhPcGVyYXRpb24qIGZyb20sIFBhdGhPcGVyYXRpb24qIHRvLCBjb25zdCBDU1NQcm9wZXJ0eUJs
ZW5kaW5nQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBpZiAoIWZyb20gfHwgIXRvKQogICAgICAg
ICByZXR1cm4gdG87CiAKICAgICAvLyBPdGhlciBjbGlwLXBhdGggb3BlcmF0aW9ucyB0aGFuIEJh
c2ljU2hhcGVzIGNhbiBub3QgYmUgYW5pbWF0ZWQuCi0gICAgaWYgKGZyb20tPnR5cGUoKSAhPSBD
bGlwUGF0aE9wZXJhdGlvbjo6U2hhcGUgfHwgdG8tPnR5cGUoKSAhPSBDbGlwUGF0aE9wZXJhdGlv
bjo6U2hhcGUpCisgICAgaWYgKGZyb20tPnR5cGUoKSAhPSBQYXRoT3BlcmF0aW9uOjpTaGFwZSB8
fCB0by0+dHlwZSgpICE9IFBhdGhPcGVyYXRpb246OlNoYXBlKQogICAgICAgICByZXR1cm4gdG87
CiAKLSAgICBjb25zdCBCYXNpY1NoYXBlJiBmcm9tU2hhcGUgPSBkb3duY2FzdDxTaGFwZUNsaXBQ
YXRoT3BlcmF0aW9uPigqZnJvbSkuYmFzaWNTaGFwZSgpOwotICAgIGNvbnN0IEJhc2ljU2hhcGUm
IHRvU2hhcGUgPSBkb3duY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPigqdG8pLmJhc2ljU2hh
cGUoKTsKKyAgICBjb25zdCBCYXNpY1NoYXBlJiBmcm9tU2hhcGUgPSBkb3duY2FzdDxTaGFwZVBh
dGhPcGVyYXRpb24+KCpmcm9tKS5iYXNpY1NoYXBlKCk7CisgICAgY29uc3QgQmFzaWNTaGFwZSYg
dG9TaGFwZSA9IGRvd25jYXN0PFNoYXBlUGF0aE9wZXJhdGlvbj4oKnRvKS5iYXNpY1NoYXBlKCk7
CiAKICAgICBpZiAoIWZyb21TaGFwZS5jYW5CbGVuZCh0b1NoYXBlKSkKICAgICAgICAgcmV0dXJu
IHRvOwogCi0gICAgcmV0dXJuIFNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OmNyZWF0ZSh0b1NoYXBl
LmJsZW5kKGZyb21TaGFwZSwgY29udGV4dCkpOworICAgIHJldHVybiBTaGFwZVBhdGhPcGVyYXRp
b246OmNyZWF0ZSh0b1NoYXBlLmJsZW5kKGZyb21TaGFwZSwgY29udGV4dCkpOwogfQogCiBzdGF0
aWMgaW5saW5lIFJlZlB0cjxTaGFwZVZhbHVlPiBibGVuZEZ1bmMoU2hhcGVWYWx1ZSogZnJvbSwg
U2hhcGVWYWx1ZSogdG8sIGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDb250ZXh0JiBjb250ZXh0
KQpAQCAtMTAxOSwxMSArMTAxOSwxMSBAQCBwcml2YXRlOgogICAgIH0KIH07CiAKLWNsYXNzIFBy
b3BlcnR5V3JhcHBlckNsaXBQYXRoIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWRQcm9wZXJ0eVdy
YXBwZXI8Q2xpcFBhdGhPcGVyYXRpb24+IHsKK2NsYXNzIFByb3BlcnR5V3JhcHBlckNsaXBQYXRo
IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWRQcm9wZXJ0eVdyYXBwZXI8UGF0aE9wZXJhdGlvbj4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFByb3BlcnR5V3Jh
cHBlckNsaXBQYXRoKENTU1Byb3BlcnR5SUQgcHJvcGVydHksIENsaXBQYXRoT3BlcmF0aW9uKiAo
UmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0eWxlOjoqc2V0dGVy
KShSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+JiYpKQotICAgICAgICA6IFJlZkNvdW50ZWRQcm9w
ZXJ0eVdyYXBwZXI8Q2xpcFBhdGhPcGVyYXRpb24+KHByb3BlcnR5LCBnZXR0ZXIsIHNldHRlcikK
KyAgICBQcm9wZXJ0eVdyYXBwZXJDbGlwUGF0aChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBQYXRo
T3BlcmF0aW9uKiAoUmVuZGVyU3R5bGU6OipnZXR0ZXIpKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0
eWxlOjoqc2V0dGVyKShSZWZQdHI8UGF0aE9wZXJhdGlvbj4mJikpCisgICAgICAgIDogUmVmQ291
bnRlZFByb3BlcnR5V3JhcHBlcjxQYXRoT3BlcmF0aW9uPihwcm9wZXJ0eSwgZ2V0dGVyLCBzZXR0
ZXIpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jh
c2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5jcHAKaW5k
ZXggMjU2MjY3MjgyMmMxZmZmZjhmNTYwN2UxNzc0NDk2ZmMzYTU0OTk1Mi4uMmNiYzFjZWZkMjNl
OGE5MDFmZWFlMGQyMGM5ZjZmNzVmMGZjYjUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0Jhc2ljU2hhcGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQmFzaWNT
aGFwZXMuY3BwCkBAIC0zOTcsNCArMzk3LDMgQEAgYm9vbCBDU1NCYXNpY1NoYXBlSW5zZXQ6OmVx
dWFscyhjb25zdCBDU1NCYXNpY1NoYXBlJiBzaGFwZSkgY29uc3QKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCmluZGV4IGVlYTZmN2JhZDRjZGI4NWJjZGI2NzYzYTI4YmFkNWYwMjky
NTlmZjAuLmFjOTQ1MWIwMzQ0ZmU4YzExMTZjNDI5OTdjOTQyYjVjM2E5YTc1N2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBA
IC0zNzkzLDE3ICszNzkzLDE3IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJh
Y3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAg
ICBhdXRvKiBvcGVyYXRpb24gPSBzdHlsZS5jbGlwUGF0aCgpOwogICAgICAgICAgICAgaWYgKCFv
cGVyYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVu
dGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKTsKLSAgICAgICAgICAgIGlmIChpczxSZWZlcmVuY2VD
bGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoZG93bmNhc3Q8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRp
b24+KCpvcGVyYXRpb24pLnVybCgpLCBDU1NVbml0VHlwZTo6Q1NTX1VSSSk7CisgICAgICAgICAg
ICBpZiAoaXM8UmVmZXJlbmNlUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUoZG93bmNhc3Q8UmVmZXJlbmNl
UGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikudXJsKCksIENTU1VuaXRUeXBlOjpDU1NfVVJJKTsK
ICAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0
ZWQoKTsKLSAgICAgICAgICAgIGlmIChpczxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0
aW9uKSkgewotICAgICAgICAgICAgICAgIGF1dG8mIHNoYXBlT3BlcmF0aW9uID0gZG93bmNhc3Q8
U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbik7CisgICAgICAgICAgICBpZiAoaXM8
U2hhcGVQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKSkgeworICAgICAgICAgICAgICAgIGF1dG8m
IHNoYXBlT3BlcmF0aW9uID0gZG93bmNhc3Q8U2hhcGVQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9u
KTsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JCYXNpY1NoYXBlKHN0eWxl
LCBzaGFwZU9wZXJhdGlvbi5iYXNpY1NoYXBlKCkpKTsKICAgICAgICAgICAgICAgICBpZiAoc2hh
cGVPcGVyYXRpb24ucmVmZXJlbmNlQm94KCkgIT0gQ1NTQm94VHlwZTo6Qm94TWlzc2luZykKICAg
ICAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShz
aGFwZU9wZXJhdGlvbi5yZWZlcmVuY2VCb3goKSkpOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKGlzPEJveENsaXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKSkKLSAgICAgICAgICAg
ICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZVZhbHVlKGRvd25jYXN0PEJveENs
aXBQYXRoT3BlcmF0aW9uPigqb3BlcmF0aW9uKS5yZWZlcmVuY2VCb3goKSkpOworICAgICAgICAg
ICAgaWYgKGlzPEJveFBhdGhPcGVyYXRpb24+KCpvcGVyYXRpb24pKQorICAgICAgICAgICAgICAg
IGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoZG93bmNhc3Q8Qm94UGF0aE9w
ZXJhdGlvbj4oKm9wZXJhdGlvbikucmVmZXJlbmNlQm94KCkpKTsKICAgICAgICAgICAgIHJldHVy
biBsaXN0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFwZU1hcmdpbjoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNjVlZjVjOTVmNjc0YmVhODRhNWIyOTQ0NWRjMWI0NzI3
NTU5MDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NsaXBQYXRoT3BlcmF0aW9uLmgKKysrIC9kZXYvbnVsbApA
QCAtMSwxNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBZG9iZSBT
eXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCi0gKiAgICBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwotICogICAgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKLSAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCi0gKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SCi0gKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YKLSAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotICogU1VDSCBEQU1BR0UuCi0gKi8KLQot
I3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJCYXNpY1NoYXBlcy5oIgotI2luY2x1ZGUgIlBhdGgu
aCIKLSNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgotI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENsaXBQYXRoT3Bl
cmF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Q2xpcFBhdGhPcGVyYXRpb24+IHsKLXB1YmxpYzoK
LSAgICBlbnVtIE9wZXJhdGlvblR5cGUgewotICAgICAgICBSZWZlcmVuY2UsCi0gICAgICAgIFNo
YXBlLAotICAgICAgICBCb3gKLSAgICB9OwotCi0gICAgdmlydHVhbCB+Q2xpcFBhdGhPcGVyYXRp
b24oKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDbGlw
UGF0aE9wZXJhdGlvbiYpIGNvbnN0ID0gMDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2xp
cFBhdGhPcGVyYXRpb24mIG8pIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KLQotICAg
IE9wZXJhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIGJvb2wg
aXNTYW1lVHlwZShjb25zdCBDbGlwUGF0aE9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby50
eXBlKCkgPT0gbV90eXBlOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBDbGlwUGF0aE9w
ZXJhdGlvbihPcGVyYXRpb25UeXBlIHR5cGUpCi0gICAgICAgIDogbV90eXBlKHR5cGUpCi0gICAg
ewotICAgIH0KLQotICAgIE9wZXJhdGlvblR5cGUgbV90eXBlOwotfTsKLQotY2xhc3MgUmVmZXJl
bmNlQ2xpcFBhdGhPcGVyYXRpb24gZmluYWwgOiBwdWJsaWMgQ2xpcFBhdGhPcGVyYXRpb24gewot
cHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKHVybCwg
ZnJhZ21lbnQpKTsKLSAgICB9Ci0KLSAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1fdXJsOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhZ21lbnQ7IH0KLQotcHJpdmF0ZToKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xp
cFBhdGhPcGVyYXRpb24mIG90aGVyKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYg
KCFpc1NhbWVUeXBlKG90aGVyKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
YXV0byYgcmVmZXJlbmNlQ2xpcCA9IGRvd25jYXN0PFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9u
PihvdGhlcik7Ci0gICAgICAgIHJldHVybiBtX3VybCA9PSByZWZlcmVuY2VDbGlwLm1fdXJsOwot
ICAgIH0KLQotICAgIFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KQotICAgICAgICA6IENsaXBQYXRoT3BlcmF0aW9uKFJl
ZmVyZW5jZSkKLSAgICAgICAgLCBtX3VybCh1cmwpCi0gICAgICAgICwgbV9mcmFnbWVudChmcmFn
bWVudCkKLSAgICB7Ci0gICAgfQotCi0gICAgU3RyaW5nIG1fdXJsOwotICAgIFN0cmluZyBtX2Zy
YWdtZW50OwotfTsKLQotY2xhc3MgU2hhcGVDbGlwUGF0aE9wZXJhdGlvbiBmaW5hbCA6IHB1Ymxp
YyBDbGlwUGF0aE9wZXJhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTaGFwZUNsaXBQ
YXRoT3BlcmF0aW9uPiBjcmVhdGUoUmVmPEJhc2ljU2hhcGU+JiYgc2hhcGUpCi0gICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKFdURk1vdmUo
c2hhcGUpKSk7Ci0gICAgfQotCi0gICAgY29uc3QgQmFzaWNTaGFwZSYgYmFzaWNTaGFwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2hhcGU7IH0KLSAgICBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhcGUuZ2V0KCkud2luZFJ1bGUoKTsgfQotICAgIGNvbnN0IFBhdGgmIHBhdGhG
b3JSZWZlcmVuY2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdSZWN0KSB7IHJldHVybiBt
X3NoYXBlLmdldCgpLnBhdGgoYm91bmRpbmdSZWN0KTsgfQotCi0gICAgdm9pZCBzZXRSZWZlcmVu
Y2VCb3goQ1NTQm94VHlwZSByZWZlcmVuY2VCb3gpIHsgbV9yZWZlcmVuY2VCb3ggPSByZWZlcmVu
Y2VCb3g7IH0KLSAgICBDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVmZXJlbmNlQm94OyB9Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENs
aXBQYXRoT3BlcmF0aW9uJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlm
ICghaXNTYW1lVHlwZShvdGhlcikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGF1dG8mIHNoYXBlQ2xpcCA9IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KG90aGVy
KTsKLSAgICAgICAgcmV0dXJuIG1fcmVmZXJlbmNlQm94ID09IHNoYXBlQ2xpcC5yZWZlcmVuY2VC
b3goKQotICAgICAgICAgICAgJiYgKG1fc2hhcGUucHRyKCkgPT0gc2hhcGVDbGlwLm1fc2hhcGUu
cHRyKCkgfHwgbV9zaGFwZS5nZXQoKSA9PSBzaGFwZUNsaXAubV9zaGFwZS5nZXQoKSk7Ci0gICAg
fQotCi0gICAgZXhwbGljaXQgU2hhcGVDbGlwUGF0aE9wZXJhdGlvbihSZWY8QmFzaWNTaGFwZT4m
JiBzaGFwZSkKLSAgICAgICAgOiBDbGlwUGF0aE9wZXJhdGlvbihTaGFwZSkKLSAgICAgICAgLCBt
X3NoYXBlKFdURk1vdmUoc2hhcGUpKQotICAgICAgICAsIG1fcmVmZXJlbmNlQm94KENTU0JveFR5
cGU6OkJveE1pc3NpbmcpCi0gICAgewotICAgIH0KLQotICAgIFJlZjxCYXNpY1NoYXBlPiBtX3No
YXBlOwotICAgIENTU0JveFR5cGUgbV9yZWZlcmVuY2VCb3g7Ci19OwotCi1jbGFzcyBCb3hDbGlw
UGF0aE9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxCb3hDbGlwUGF0aE9wZXJhdGlvbj4gY3JlYXRlKENTU0JveFR5cGUg
cmVmZXJlbmNlQm94KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQm94Q2xp
cFBhdGhPcGVyYXRpb24ocmVmZXJlbmNlQm94KSk7Ci0gICAgfQotCi0gICAgY29uc3QgUGF0aCBw
YXRoRm9yUmVmZXJlbmNlUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBib3VuZGluZ1JlY3Qp
IGNvbnN0Ci0gICAgewotICAgICAgICBQYXRoIHBhdGg7Ci0gICAgICAgIHBhdGguYWRkUm91bmRl
ZFJlY3QoYm91bmRpbmdSZWN0KTsKLSAgICAgICAgcmV0dXJuIHBhdGg7Ci0gICAgfQotICAgIENT
U0JveFR5cGUgcmVmZXJlbmNlQm94KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VCb3g7IH0K
LQotcHJpdmF0ZToKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2xpcFBhdGhPcGVyYXRpb24m
IG90aGVyKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG90
aGVyKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0byYgYm94Q2xpcCA9
IGRvd25jYXN0PEJveENsaXBQYXRoT3BlcmF0aW9uPihvdGhlcik7Ci0gICAgICAgIHJldHVybiBt
X3JlZmVyZW5jZUJveCA9PSBib3hDbGlwLm1fcmVmZXJlbmNlQm94OwotICAgIH0KLQotICAgIGV4
cGxpY2l0IEJveENsaXBQYXRoT3BlcmF0aW9uKENTU0JveFR5cGUgcmVmZXJlbmNlQm94KQotICAg
ICAgICA6IENsaXBQYXRoT3BlcmF0aW9uKEJveCkKLSAgICAgICAgLCBtX3JlZmVyZW5jZUJveChy
ZWZlcmVuY2VCb3gpCi0gICAgewotICAgIH0KLQotICAgIENTU0JveFR5cGUgbV9yZWZlcmVuY2VC
b3g7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNkZWZpbmUgU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19DTElQX1BBVEhfT1BFUkFUSU9OKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRl
KSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OlRvVmFsdWVUeXBlTmFt
ZSkgXAotICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpDbGlwUGF0aE9wZXJh
dGlvbiYgb3BlcmF0aW9uKSB7IHJldHVybiBvcGVyYXRpb24udHlwZSgpID09IFdlYkNvcmU6OnBy
ZWRpY2F0ZTsgfSBcCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCi0KLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQ0xJUF9QQVRIX09QRVJBVElPTihSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlv
biwgQ2xpcFBhdGhPcGVyYXRpb246OlJlZmVyZW5jZSkKLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
Q0xJUF9QQVRIX09QRVJBVElPTihTaGFwZUNsaXBQYXRoT3BlcmF0aW9uLCBDbGlwUGF0aE9wZXJh
dGlvbjo6U2hhcGUpCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NMSVBfUEFUSF9PUEVSQVRJT04o
Qm94Q2xpcFBhdGhPcGVyYXRpb24sIENsaXBQYXRoT3BlcmF0aW9uOjpCb3gpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGF0aE9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BhdGhPcGVyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDkxMWUxYWU0ZmRmMTVh
YzEzNzg4NTYwYzQ3MjZkZTQ0YWJiN2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BhdGhPcGVyYXRpb24uaApAQCAtMCwwICsxLDE3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxMyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisg
KiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
CisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJC
YXNpY1NoYXBlcy5oIgorI2luY2x1ZGUgIlBhdGguaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZUNv
bnN0YW50cy5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1R5
cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFBhdGhPcGVyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxQYXRo
T3BlcmF0aW9uPiB7CitwdWJsaWM6CisgICAgZW51bSBPcGVyYXRpb25UeXBlIHsKKyAgICAgICAg
UmVmZXJlbmNlLAorICAgICAgICBTaGFwZSwKKyAgICAgICAgQm94CisgICAgfTsKKworICAgIHZp
cnR1YWwgflBhdGhPcGVyYXRpb24oKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBQYXRoT3BlcmF0aW9uJikgY29uc3QgPSAwOworICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBQYXRoT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IG8p
OyB9CisKKyAgICBPcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
KyAgICBib29sIGlzU2FtZVR5cGUoY29uc3QgUGF0aE9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1
cm4gby50eXBlKCkgPT0gbV90eXBlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBQYXRo
T3BlcmF0aW9uKE9wZXJhdGlvblR5cGUgdHlwZSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAg
ICB7CisgICAgfQorCisgICAgT3BlcmF0aW9uVHlwZSBtX3R5cGU7Cit9OworCitjbGFzcyBSZWZl
cmVuY2VQYXRoT3BlcmF0aW9uIGZpbmFsIDogcHVibGljIFBhdGhPcGVyYXRpb24geworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8UmVmZXJlbmNlUGF0aE9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVmZXJlbmNlUGF0aE9wZXJhdGlvbih1cmwsIGZyYWdtZW50KSk7Cisg
ICAgfQorCisgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQor
ICAgIGNvbnN0IFN0cmluZyYgZnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBtX2ZyYWdtZW50OyB9
CisKK3ByaXZhdGU6CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBhdGhPcGVyYXRpb24mIG90
aGVyKSBjb25zdCBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKCFpc1NhbWVUeXBlKG90aGVy
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0byYgcmVmZXJlbmNlQ2xp
cCA9IGRvd25jYXN0PFJlZmVyZW5jZVBhdGhPcGVyYXRpb24+KG90aGVyKTsKKyAgICAgICAgcmV0
dXJuIG1fdXJsID09IHJlZmVyZW5jZUNsaXAubV91cmw7CisgICAgfQorCisgICAgUmVmZXJlbmNl
UGF0aE9wZXJhdGlvbihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBmcmFnbWVudCkK
KyAgICAgICAgOiBQYXRoT3BlcmF0aW9uKFJlZmVyZW5jZSkKKyAgICAgICAgLCBtX3VybCh1cmwp
CisgICAgICAgICwgbV9mcmFnbWVudChmcmFnbWVudCkKKyAgICB7CisgICAgfQorCisgICAgU3Ry
aW5nIG1fdXJsOworICAgIFN0cmluZyBtX2ZyYWdtZW50OworfTsKKworY2xhc3MgU2hhcGVQYXRo
T3BlcmF0aW9uIGZpbmFsIDogcHVibGljIFBhdGhPcGVyYXRpb24geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8U2hhcGVQYXRoT3BlcmF0aW9uPiBjcmVhdGUoUmVmPEJhc2ljU2hhcGU+JiYgc2hh
cGUpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFwZVBhdGhPcGVyYXRp
b24oV1RGTW92ZShzaGFwZSkpKTsKKyAgICB9CisKKyAgICBjb25zdCBCYXNpY1NoYXBlJiBiYXNp
Y1NoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZTsgfQorICAgIFdpbmRSdWxlIHdpbmRSdWxl
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZS5nZXQoKS53aW5kUnVsZSgpOyB9CisgICAgY29uc3Qg
UGF0aCYgcGF0aEZvclJlZmVyZW5jZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3Qp
IGNvbnN0IHsgcmV0dXJuIG1fc2hhcGUuZ2V0KCkucGF0aChib3VuZGluZ1JlY3QpOyB9CisKKyAg
ICB2b2lkIHNldFJlZmVyZW5jZUJveChDU1NCb3hUeXBlIHJlZmVyZW5jZUJveCkgeyBtX3JlZmVy
ZW5jZUJveCA9IHJlZmVyZW5jZUJveDsgfQorICAgIENTU0JveFR5cGUgcmVmZXJlbmNlQm94KCkg
Y29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VCb3g7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUGF0aE9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlCisgICAg
eworICAgICAgICBpZiAoIWlzU2FtZVR5cGUob3RoZXIpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBhdXRvJiBzaGFwZUNsaXAgPSBkb3duY2FzdDxTaGFwZVBhdGhPcGVyYXRp
b24+KG90aGVyKTsKKyAgICAgICAgcmV0dXJuIG1fcmVmZXJlbmNlQm94ID09IHNoYXBlQ2xpcC5y
ZWZlcmVuY2VCb3goKQorICAgICAgICAgICAgJiYgKG1fc2hhcGUucHRyKCkgPT0gc2hhcGVDbGlw
Lm1fc2hhcGUucHRyKCkgfHwgbV9zaGFwZS5nZXQoKSA9PSBzaGFwZUNsaXAubV9zaGFwZS5nZXQo
KSk7CisgICAgfQorCisgICAgZXhwbGljaXQgU2hhcGVQYXRoT3BlcmF0aW9uKFJlZjxCYXNpY1No
YXBlPiYmIHNoYXBlKQorICAgICAgICA6IFBhdGhPcGVyYXRpb24oU2hhcGUpCisgICAgICAgICwg
bV9zaGFwZShXVEZNb3ZlKHNoYXBlKSkKKyAgICAgICAgLCBtX3JlZmVyZW5jZUJveChDU1NCb3hU
eXBlOjpCb3hNaXNzaW5nKQorICAgIHsKKyAgICB9CisKKyAgICBSZWY8QmFzaWNTaGFwZT4gbV9z
aGFwZTsKKyAgICBDU1NCb3hUeXBlIG1fcmVmZXJlbmNlQm94OworfTsKKworY2xhc3MgQm94UGF0
aE9wZXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBQYXRoT3BlcmF0aW9uIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPEJveFBhdGhPcGVyYXRpb24+IGNyZWF0ZShDU1NCb3hUeXBlIHJlZmVyZW5jZUJv
eCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJveFBhdGhPcGVyYXRpb24o
cmVmZXJlbmNlQm94KSk7CisgICAgfQorCisgICAgY29uc3QgUGF0aCBwYXRoRm9yUmVmZXJlbmNl
UmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBib3VuZGluZ1JlY3QpIGNvbnN0CisgICAgewor
ICAgICAgICBQYXRoIHBhdGg7CisgICAgICAgIHBhdGguYWRkUm91bmRlZFJlY3QoYm91bmRpbmdS
ZWN0KTsKKyAgICAgICAgcmV0dXJuIHBhdGg7CisgICAgfQorICAgIENTU0JveFR5cGUgcmVmZXJl
bmNlQm94KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VCb3g7IH0KKworcHJpdmF0ZToKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgUGF0aE9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IG92ZXJy
aWRlCisgICAgeworICAgICAgICBpZiAoIWlzU2FtZVR5cGUob3RoZXIpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvJiBib3hDbGlwID0gZG93bmNhc3Q8Qm94UGF0aE9w
ZXJhdGlvbj4ob3RoZXIpOworICAgICAgICByZXR1cm4gbV9yZWZlcmVuY2VCb3ggPT0gYm94Q2xp
cC5tX3JlZmVyZW5jZUJveDsKKyAgICB9CisKKyAgICBleHBsaWNpdCBCb3hQYXRoT3BlcmF0aW9u
KENTU0JveFR5cGUgcmVmZXJlbmNlQm94KQorICAgICAgICA6IFBhdGhPcGVyYXRpb24oQm94KQor
ICAgICAgICAsIG1fcmVmZXJlbmNlQm94KHJlZmVyZW5jZUJveCkKKyAgICB7CisgICAgfQorCisg
ICAgQ1NTQm94VHlwZSBtX3JlZmVyZW5jZUJveDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NMSVBfUEFUSF9PUEVSQVRJT04o
VG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViQ29yZTo6VG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6OlBhdGhPcGVyYXRpb24mIG9wZXJhdGlvbikgeyByZXR1cm4gb3BlcmF0aW9u
LnR5cGUoKSA9PSBXZWJDb3JlOjpwcmVkaWNhdGU7IH0gXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NMSVBfUEFUSF9PUEVSQVRJT04oUmVm
ZXJlbmNlUGF0aE9wZXJhdGlvbiwgUGF0aE9wZXJhdGlvbjo6UmVmZXJlbmNlKQorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19DTElQX1BBVEhfT1BFUkFUSU9OKFNoYXBlUGF0aE9wZXJhdGlvbiwgUGF0
aE9wZXJhdGlvbjo6U2hhcGUpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NMSVBfUEFUSF9PUEVS
QVRJT04oQm94UGF0aE9wZXJhdGlvbiwgUGF0aE9wZXJhdGlvbjo6Qm94KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuY3BwCmluZGV4IDYy
NGMxNGZlNzcxZGQ0MDA2MGUwNDUzMDBkNDk0Y2E1NDJhMTU3MWEuLmZhMDFjNzg2NTdkNzAyMWFj
ZTczNGFlMzNhMDE2YzRiYTg2NmIyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5jcHAKQEAgLTI2LDggKzI2LDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzLmgiCiAKLSNp
bmNsdWRlICJDbGlwUGF0aE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMu
aCIKKyNpbmNsdWRlICJQYXRoT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZS5oIgpAQCAtOTgsOCArOTgsOCBAQCB2b2lkIFJlZmVyZW5jZWRTVkdS
ZXNvdXJjZXM6OnJlbW92ZUNsaWVudEZvclRhcmdldChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IEF0bwogVmVjdG9yPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBRdWFsaWZpZWROYW1lPj4gUmVmZXJl
bmNlZFNWR1Jlc291cmNlczo6cmVmZXJlbmNlZFNWR1Jlc291cmNlSURzKGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKIHsKICAgICBWZWN0b3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIFF1YWxpZmll
ZE5hbWU+PiByZWZlcmVuY2VkUmVzb3VyY2VzOwotICAgIGlmIChpczxSZWZlcmVuY2VDbGlwUGF0
aE9wZXJhdGlvbj4oc3R5bGUuY2xpcFBhdGgoKSkpIHsKLSAgICAgICAgYXV0byYgY2xpcFBhdGgg
PSBkb3duY2FzdDxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oKnN0eWxlLmNsaXBQYXRoKCkp
OworICAgIGlmIChpczxSZWZlcmVuY2VQYXRoT3BlcmF0aW9uPihzdHlsZS5jbGlwUGF0aCgpKSkg
eworICAgICAgICBhdXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFJlZmVyZW5jZVBhdGhPcGVyYXRp
b24+KCpzdHlsZS5jbGlwUGF0aCgpKTsKICAgICAgICAgaWYgKCFjbGlwUGF0aC5mcmFnbWVudCgp
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlZmVyZW5jZWRSZXNvdXJjZXMuYXBwZW5kKHsgY2xp
cFBhdGguZnJhZ21lbnQoKSwgU1ZHTmFtZXM6OmNsaXBQYXRoVGFnIH0pOwogICAgIH0KQEAgLTE1
Nyw3ICsxNTcsNyBAQCBTVkdGaWx0ZXJFbGVtZW50KiBSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOjpy
ZWZlcmVuY2VkRmlsdGVyRWxlbWVudChEb2N1bWVudCYgZG9jdQogICAgIHJldHVybiBlbGVtZW50
ID8gZG93bmNhc3Q8U1ZHRmlsdGVyRWxlbWVudD4oZWxlbWVudCkgOiBudWxscHRyOwogfQogCi1S
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIFJlZmVyZW5jZWRTVkdSZXNvdXJjZXM6OnJlZmVyZW5j
ZWRDbGlwcGVyUmVuZGVyZXIoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBSZWZlcmVuY2VDbGlw
UGF0aE9wZXJhdGlvbiYgY2xpcFBhdGgpCitSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIFJlZmVy
ZW5jZWRTVkdSZXNvdXJjZXM6OnJlZmVyZW5jZWRDbGlwcGVyUmVuZGVyZXIoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBSZWZlcmVuY2VQYXRoT3BlcmF0aW9uJiBjbGlwUGF0aCkKIHsKICAgICBp
ZiAoY2xpcFBhdGguZnJhZ21lbnQoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNv
dXJjZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZWZlcmVuY2VkU1ZHUmVzb3VyY2Vz
LmgKaW5kZXggNzVkOWIyYzk4ZTRlYzI2YWQ2ODVmYzEyZTY2YTUwMTFhNDQ0MTBlNi4uMDc3YmJi
YTg4YmE3ODRiOWE5ZDJhMWFkYTBlMjRjZGExNDRhYzY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlZmVyZW5jZWRTVkdSZXNvdXJjZXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVmZXJlbmNlZFNWR1Jlc291cmNlcy5oCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTU1ZHUmVzb3VyY2VFbGVtZW50Q2xpZW50
OwogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbjsKK2Ns
YXNzIFJlZmVyZW5jZVBhdGhPcGVyYXRpb247CiBjbGFzcyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRp
b247CiBjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xhc3MgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
OwpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VkUmVz
b3VyY2VzKERvY3VtZW50JiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBRdWFs
aWZpZWROYW1lPj4mKTsKIAogICAgIC8vIENsaXBwaW5nIG5lZWRzIGEgcmVuZGVyZXIsIGZpbHRl
cnMgdXNlIGFuIGVsZW1lbnQuCi0gICAgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiByZWZlcmVu
Y2VkQ2xpcHBlclJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVmZXJlbmNlQ2xpcFBhdGhPcGVy
YXRpb24mKTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIHJlZmVyZW5jZWRDbGlwcGVy
UmVuZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZWZlcmVuY2VQYXRoT3BlcmF0aW9uJik7CiAgICAg
U1ZHRmlsdGVyRWxlbWVudCogcmVmZXJlbmNlZEZpbHRlckVsZW1lbnQoRG9jdW1lbnQmLCBjb25z
dCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24mKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZDc5OTBlNDMwZjEwYTBjOTYyZmUxMTQ4M2Y5YTU1
ZDY3MzQ5NDMxYi4uZDE3YmJiYmIxZTFkZDU2MDVhNzdkZjg0OTBkYjU0Nzg1MDljMjkwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNp
bmNsdWRlICJSZW5kZXJCb3guaCIKIAogI2luY2x1ZGUgIkNTU0ZvbnRTZWxlY3Rvci5oIgotI2lu
Y2x1ZGUgIkNsaXBQYXRoT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ29udHJvbFN0YXRlcy5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRpdGluZy5oIgpAQCAtNTQsNiArNTMs
NyBAQAogI2luY2x1ZGUgIkxlZ2FjeUlubGluZUVsZW1lbnRCb3guaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUGFpbnRJbmZvLmgiCisjaW5jbHVkZSAiUGF0aE9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgIlJlbmRlckJveEZyYWdtZW50SW5mby5oIgogI2luY2x1ZGUgIlJlbmRlckNoaWxk
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guaCIKQEAg
LTEzODUsMTYgKzEzODUsMTYgQEAgYm9vbCBSZW5kZXJCb3g6OmhpdFRlc3RDbGlwUGF0aChjb25z
dCBIaXRUZXN0TG9jYXRpb24mIGhpdFRlc3RMb2NhdGlvbiwgY29uc3QgTGEKICAgICBhdXRvIG9m
ZnNldEZyb21IaXRUZXN0Um9vdCA9IHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9mZnNldCArIGxv
Y2F0aW9uKCkpOwogICAgIGF1dG8gaGl0VGVzdExvY2F0aW9uSW5Mb2NhbENvb3JkaW5hdGVzID0g
aGl0VGVzdExvY2F0aW9uLnBvaW50KCkgLSBvZmZzZXRGcm9tSGl0VGVzdFJvb3Q7CiAgICAgc3dp
dGNoIChzdHlsZSgpLmNsaXBQYXRoKCktPnR5cGUoKSkgewotICAgIGNhc2UgQ2xpcFBhdGhPcGVy
YXRpb246OlNoYXBlOiB7Ci0gICAgICAgIGF1dG8mIGNsaXBQYXRoID0gZG93bmNhc3Q8U2hhcGVD
bGlwUGF0aE9wZXJhdGlvbj4oKnN0eWxlKCkuY2xpcFBhdGgoKSk7CisgICAgY2FzZSBQYXRoT3Bl
cmF0aW9uOjpTaGFwZTogeworICAgICAgICBhdXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFNoYXBl
UGF0aE9wZXJhdGlvbj4oKnN0eWxlKCkuY2xpcFBhdGgoKSk7CiAgICAgICAgIGF1dG8gcmVmZXJl
bmNlQm94UmVjdCA9IHJlZmVyZW5jZUJveChjbGlwUGF0aC5yZWZlcmVuY2VCb3goKSk7CiAgICAg
ICAgIGlmICghY2xpcFBhdGgucGF0aEZvclJlZmVyZW5jZVJlY3QocmVmZXJlbmNlQm94UmVjdCku
Y29udGFpbnMoaGl0VGVzdExvY2F0aW9uSW5Mb2NhbENvb3JkaW5hdGVzLCBjbGlwUGF0aC53aW5k
UnVsZSgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQotICAgIGNhc2UgQ2xpcFBhdGhPcGVyYXRpb246OlJlZmVyZW5jZTogewotICAgICAgICBjb25z
dCBhdXRvJiByZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVyZW5jZUNs
aXBQYXRoT3BlcmF0aW9uPigqc3R5bGUoKS5jbGlwUGF0aCgpKTsKLSAgICAgICAgYXV0byogZWxl
bWVudCA9IGRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQocmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRp
b24uZnJhZ21lbnQoKSk7CisgICAgY2FzZSBQYXRoT3BlcmF0aW9uOjpSZWZlcmVuY2U6IHsKKyAg
ICAgICAgY29uc3QgYXV0byYgcmVmZXJlbmNlUGF0aE9wZXJhdGlvbiA9IGRvd25jYXN0PFJlZmVy
ZW5jZVBhdGhPcGVyYXRpb24+KCpzdHlsZSgpLmNsaXBQYXRoKCkpOworICAgICAgICBhdXRvKiBl
bGVtZW50ID0gZG9jdW1lbnQoKS5nZXRFbGVtZW50QnlJZChyZWZlcmVuY2VQYXRoT3BlcmF0aW9u
LmZyYWdtZW50KCkpOwogICAgICAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPnJlbmRlcmVy
KCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKCFpczxTVkdDbGlwUGF0aEVsZW1l
bnQ+KCplbGVtZW50KSkKQEAgLTE0MDQsNyArMTQwNCw3IEBAIGJvb2wgUmVuZGVyQm94OjpoaXRU
ZXN0Q2xpcFBhdGgoY29uc3QgSGl0VGVzdExvY2F0aW9uJiBoaXRUZXN0TG9jYXRpb24sIGNvbnN0
IExhCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAg
ICBjYXNlIENsaXBQYXRoT3BlcmF0aW9uOjpCb3g6CisgICAgY2FzZSBQYXRoT3BlcmF0aW9uOjpC
b3g6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKaW5kZXggZjcyOGMwZjZjNmUwNzQ3YTMyYzI4NjFmNWZhYzY5MzlkNTZiNjE2
ZC4uNmU1ZjQ4NjNjMjY2ZjExOWI5NjFmNTk5Y2U5NDJmNjYxZjdiZTY5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC02OTUsNyArNjk1LDcgQEAgYm9vbCBS
ZW5kZXJMYXllcjo6d2lsbENvbXBvc2l0ZUNsaXBQYXRoKCkgY29uc3QKICAgICBpZiAocmVuZGVy
ZXIoKS5oYXNNYXNrKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiAoY2xp
cFBhdGgtPnR5cGUoKSAhPSBDbGlwUGF0aE9wZXJhdGlvbjo6U2hhcGUgfHwgY2xpcFBhdGgtPnR5
cGUoKSA9PSBDbGlwUGF0aE9wZXJhdGlvbjo6U2hhcGUpICYmIEdyYXBoaWNzTGF5ZXI6OnN1cHBv
cnRzTGF5ZXJUeXBlKEdyYXBoaWNzTGF5ZXI6OlR5cGU6OlNoYXBlKTsKKyAgICByZXR1cm4gKGNs
aXBQYXRoLT50eXBlKCkgIT0gUGF0aE9wZXJhdGlvbjo6U2hhcGUgfHwgY2xpcFBhdGgtPnR5cGUo
KSA9PSBQYXRoT3BlcmF0aW9uOjpTaGFwZSkgJiYgR3JhcGhpY3NMYXllcjo6c3VwcG9ydHNMYXll
clR5cGUoR3JhcGhpY3NMYXllcjo6VHlwZTo6U2hhcGUpOwogfQogCiB2b2lkIFJlbmRlckxheWVy
OjpkaXJ0eU5vcm1hbEZsb3dMaXN0KCkKQEAgLTMxNDMsOCArMzE0Myw4IEBAIHN0ZDo6cGFpcjxQ
YXRoLCBXaW5kUnVsZT4gUmVuZGVyTGF5ZXI6OmNvbXB1dGVDbGlwUGF0aChjb25zdCBMYXlvdXRT
aXplJiBvZmZzZXRGCiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXIoKS5z
dHlsZSgpOwogICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gcmVuZGVyZXIoKS5kb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCk7CiAKLSAgICBpZiAoaXM8U2hhcGVDbGlwUGF0aE9wZXJh
dGlvbj4oKnN0eWxlLmNsaXBQYXRoKCkpKSB7Ci0gICAgICAgIGF1dG8mIGNsaXBQYXRoID0gZG93
bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKnN0eWxlLmNsaXBQYXRoKCkpOworICAgIGlm
IChpczxTaGFwZVBhdGhPcGVyYXRpb24+KCpzdHlsZS5jbGlwUGF0aCgpKSkgeworICAgICAgICBh
dXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFNoYXBlUGF0aE9wZXJhdGlvbj4oKnN0eWxlLmNsaXBQ
YXRoKCkpOwogCiAgICAgICAgIExheW91dFJlY3QgcmVmZXJlbmNlQm94OwogICAgICAgICBpZiAo
aXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkgewpAQCAtMzE1OSw4ICszMTU5LDggQEAgc3RkOjpw
YWlyPFBhdGgsIFdpbmRSdWxlPiBSZW5kZXJMYXllcjo6Y29tcHV0ZUNsaXBQYXRoKGNvbnN0IExh
eW91dFNpemUmIG9mZnNldEYKICAgICAgICAgcmV0dXJuIHsgY2xpcFBhdGgucGF0aEZvclJlZmVy
ZW5jZVJlY3Qoc25hcHBlZFJlZmVyZW5jZUJveCksIGNsaXBQYXRoLndpbmRSdWxlKCkgfTsKICAg
ICB9CiAKLSAgICBpZiAoaXM8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpzdHlsZS5jbGlwUGF0aCgp
KSAmJiBpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKSB7Ci0gICAgICAgIGF1dG8mIGNsaXBQYXRo
ID0gZG93bmNhc3Q8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpzdHlsZS5jbGlwUGF0aCgpKTsKKyAg
ICBpZiAoaXM8Qm94UGF0aE9wZXJhdGlvbj4oKnN0eWxlLmNsaXBQYXRoKCkpICYmIGlzPFJlbmRl
ckJveD4ocmVuZGVyZXIoKSkpIHsKKyAgICAgICAgYXV0byYgY2xpcFBhdGggPSBkb3duY2FzdDxC
b3hQYXRoT3BlcmF0aW9uPigqc3R5bGUuY2xpcFBhdGgoKSk7CiAKICAgICAgICAgYXV0byBzaGFw
ZVJlY3QgPSBjb21wdXRlUm91bmRlZFJlY3RGb3JCb3hTaGFwZShjbGlwUGF0aC5yZWZlcmVuY2VC
b3goKSwgZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKSkucGl4ZWxTbmFwcGVkUm91bmRl
ZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIHNoYXBlUmVjdC5t
b3ZlKG9mZnNldEZyb21Sb290KTsKQEAgLTMxODUsNyArMzE4NSw3IEBAIGJvb2wgUmVuZGVyTGF5
ZXI6OnNldHVwQ2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBh
aW50aW5nSW5mCiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7CiAgICAgTGF5
b3V0U2l6ZSBwYWludGluZ09mZnNldEZyb21Sb290ID0gTGF5b3V0U2l6ZShzbmFwU2l6ZVRvRGV2
aWNlUGl4ZWwob2Zmc2V0RnJvbVJvb3QgKyBwYWludGluZ0luZm8uc3VicGl4ZWxPZmZzZXQsIExh
eW91dFBvaW50KCksIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKSk7
CiAgICAgQVNTRVJUKHN0eWxlLmNsaXBQYXRoKCkpOwotICAgIGlmIChpczxTaGFwZUNsaXBQYXRo
T3BlcmF0aW9uPigqc3R5bGUuY2xpcFBhdGgoKSkgfHwgKGlzPEJveENsaXBQYXRoT3BlcmF0aW9u
Pigqc3R5bGUuY2xpcFBhdGgoKSkgJiYgaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkpIHsKKyAg
ICBpZiAoaXM8U2hhcGVQYXRoT3BlcmF0aW9uPigqc3R5bGUuY2xpcFBhdGgoKSkgfHwgKGlzPEJv
eFBhdGhPcGVyYXRpb24+KCpzdHlsZS5jbGlwUGF0aCgpKSAmJiBpczxSZW5kZXJCb3g+KHJlbmRl
cmVyKCkpKSkgewogICAgICAgICAvLyBjbGlwcGVkQ29udGVudEJvdW5kcyBpcyB1c2VkIGFzIHRo
ZSByZWZlcmVuY2UgYm94IGZvciBpbmxpbmVzLCB3aGljaCBpcyBhbHNvIHBvb3JseSBzcGVjaWZp
ZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvY3Nzd2ctZHJhZnRzL2lzc3Vlcy82MzgzLgogICAg
ICAgICBhdXRvIFtwYXRoLCB3aW5kUnVsZV0gPSBjb21wdXRlQ2xpcFBhdGgocGFpbnRpbmdPZmZz
ZXRGcm9tUm9vdCwgY2xpcHBlZENvbnRlbnRCb3VuZHMpOwogICAgICAgICBjb250ZXh0LnNhdmUo
KTsKQEAgLTMxOTMsOCArMzE5Myw4IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5mCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChpczxSZWZlcmVuY2VDbGlwUGF0aE9wZXJh
dGlvbj4oc3R5bGUuY2xpcFBhdGgoKSkpIHsKLSAgICAgICAgYXV0byYgcmVmZXJlbmNlQ2xpcFBh
dGhPcGVyYXRpb24gPSBkb3duY2FzdDxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oKnN0eWxl
LmNsaXBQYXRoKCkpOworICAgIGlmIChpczxSZWZlcmVuY2VQYXRoT3BlcmF0aW9uPihzdHlsZS5j
bGlwUGF0aCgpKSkgeworICAgICAgICBhdXRvJiByZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbiA9
IGRvd25jYXN0PFJlZmVyZW5jZVBhdGhPcGVyYXRpb24+KCpzdHlsZS5jbGlwUGF0aCgpKTsKICAg
ICAgICAgaWYgKGF1dG8qIGNsaXBwZXJSZW5kZXJlciA9IHJlbmRlcmVyKCkuZW5zdXJlUmVmZXJl
bmNlZFNWR1Jlc291cmNlcygpLnJlZmVyZW5jZWRDbGlwcGVyUmVuZGVyZXIocmVuZGVyZXIoKS5k
b2N1bWVudCgpLCByZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbikpIHsKICAgICAgICAgICAgIC8v
IFVzZSB0aGUgYm9yZGVyIGJveCBhcyB0aGUgcmVmZXJlbmNlIGJveCwgZXZlbiB0aG91Z2ggdGhp
cyBpcyBub3QgY2xlYXJseSBzcGVjaWZpZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvY3Nzd2ct
ZHJhZnRzL2lzc3Vlcy81Nzg2LgogICAgICAgICAgICAgLy8gY2xpcHBlZENvbnRlbnRCb3VuZHMg
aXMgdXNlZCBhcyB0aGUgcmVmZXJlbmNlIGJveCBmb3IgaW5saW5lcywgd2hpY2ggaXMgYWxzbyBw
b29ybHkgc3BlY2lmaWVkOiBodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nzc3dnLWRyYWZ0cy9pc3N1
ZXMvNjM4My4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKaW5kZXggNWYwODk0Nzc0NDNiNTA0YmJmNGI1ZWUzOWE3YmFhMzViNTI4NzM4OC4uZjM1
NDE3Y2M1YTg1MDE2Y2VhZmYwNTk1YjQxOGZjMDk0MDUzMTRlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTE2MTUsNyArMTYxNSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVNYXNraW5nTGF5ZXJHZW9tZXRyeSgp
CiAgICAgCiAgICAgaWYgKCFtX21hc2tMYXllci0+ZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAg
aWYgKHJlbmRlcmVyKCkuaGFzQ2xpcFBhdGgoKSkgewotICAgICAgICAgICAgQVNTRVJUKHJlbmRl
cmVyKCkuc3R5bGUoKS5jbGlwUGF0aCgpLT50eXBlKCkgIT0gQ2xpcFBhdGhPcGVyYXRpb246OlJl
ZmVyZW5jZSk7CisgICAgICAgICAgICBBU1NFUlQocmVuZGVyZXIoKS5zdHlsZSgpLmNsaXBQYXRo
KCktPnR5cGUoKSAhPSBQYXRoT3BlcmF0aW9uOjpSZWZlcmVuY2UpOwogCiAgICAgICAgICAgICAv
LyBGSVhNRTogVXNlIGNvcnJlY3QgcmVmZXJlbmNlIGJveCBmb3IgaW5saW5lczogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTA0NywgaHR0cHM6Ly9naXRodWIuY29t
L3czYy9jc3N3Zy1kcmFmdHMvaXNzdWVzLzYzODMKICAgICAgICAgICAgIExheW91dFJlY3QgYm91
bmRpbmdCb3ggPSBtX293bmluZ0xheWVyLmJvdW5kaW5nQm94KCZtX293bmluZ0xheWVyKTsKQEAg
LTIyNTYsNyArMjI1Niw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVNYXNraW5n
TGF5ZXIoYm9vbCBoYXNNYXNrLCBib29sIGhhc0NsaXBQYXRoKQogICAgICAgICAKICAgICAgICAg
aWYgKGhhc0NsaXBQYXRoKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgbWFzaywgd2Ug
bmVlZCB0byBwYWludCB0aGUgY29tYmluZWQgY2xpcC1wYXRoIGFuZCBtYXNrIGludG8gdGhlIG1h
c2sgbGF5ZXIuCi0gICAgICAgICAgICBpZiAoaGFzTWFzayB8fCByZW5kZXJlcigpLnN0eWxlKCku
Y2xpcFBhdGgoKS0+dHlwZSgpID09IENsaXBQYXRoT3BlcmF0aW9uOjpSZWZlcmVuY2UgfHwgIUdy
YXBoaWNzTGF5ZXI6OnN1cHBvcnRzTGF5ZXJUeXBlKEdyYXBoaWNzTGF5ZXI6OlR5cGU6OlNoYXBl
KSkKKyAgICAgICAgICAgIGlmIChoYXNNYXNrIHx8IHJlbmRlcmVyKCkuc3R5bGUoKS5jbGlwUGF0
aCgpLT50eXBlKCkgPT0gUGF0aE9wZXJhdGlvbjo6UmVmZXJlbmNlIHx8ICFHcmFwaGljc0xheWVy
OjpzdXBwb3J0c0xheWVyVHlwZShHcmFwaGljc0xheWVyOjpUeXBlOjpTaGFwZSkpCiAgICAgICAg
ICAgICAgICAgbWFza1BoYXNlcy5hZGQoR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2U6OkNsaXBQ
YXRoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jh
c2ljU2hhcGVzLmNwcAppbmRleCA5N2U1NzY2NjE3MTAyYTgyOTRhY2NkZTg1NTNiMDU1Y2FlZDg0
ZDM2Li45ZmIzNDU1MzUzZTkzNzFmMzNjMWQ2NmY1YjkzMjcwMDU0MDEzYjcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKQEAgLTQ5NCw0ICs0
OTQsMyBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBCYXNp
Y1NoYXBlJiBzaGFwZSkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IDNiZmIxMjhlNTM4YzRk
MGIzYzg5ZGMyNzMzMWNkNzk4MTMyN2JkOWIuLjIwNTIwNDI0ZGYyMzQzNDMyMGI3MzNmNDI0MGQ5
YThkMTA0NjkyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oCkBAIC0xNDY4LDkgKzE0NjgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaGFwZUlt
YWdlVGhyZXNob2xkKGZsb2F0KTsKICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbFNoYXBlSW1hZ2VU
aHJlc2hvbGQoKSB7IHJldHVybiAwOyB9CiAKLSAgICB2b2lkIHNldENsaXBQYXRoKFJlZlB0cjxD
bGlwUGF0aE9wZXJhdGlvbj4mJik7Ci0gICAgQ2xpcFBhdGhPcGVyYXRpb24qIGNsaXBQYXRoKCkg
Y29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+Y2xpcFBhdGguZ2V0KCk7IH0K
LSAgICBzdGF0aWMgQ2xpcFBhdGhPcGVyYXRpb24qIGluaXRpYWxDbGlwUGF0aCgpIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICB2b2lkIHNldENsaXBQYXRoKFJlZlB0cjxQYXRoT3BlcmF0aW9uPiYm
KTsKKyAgICBQYXRoT3BlcmF0aW9uKiBjbGlwUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZU5v
bkluaGVyaXRlZERhdGEtPmNsaXBQYXRoLmdldCgpOyB9CisgICAgc3RhdGljIFBhdGhPcGVyYXRp
b24qIGluaXRpYWxDbGlwUGF0aCgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogICAgIGJvb2wgaGFz
Q29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnREYXRhKCk7IH0KICAgICBjb25zdCBDb250
ZW50RGF0YSogY29udGVudERhdGEoKSBjb25zdCB7IHJldHVybiBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT5jb250ZW50LmdldCgpOyB9CkBAIC0yMzU0LDcgKzIzNTQsNyBAQCBpbmxpbmUgdm9pZCBS
ZW5kZXJTdHlsZTo6c2V0U2hhcGVJbWFnZVRocmVzaG9sZChmbG9hdCBzaGFwZUltYWdlVGhyZXNo
b2xkKQogICAgIFNFVF9WQVIobV9yYXJlTm9uSW5oZXJpdGVkRGF0YSwgc2hhcGVJbWFnZVRocmVz
aG9sZCwgY2xhbXBlZFNoYXBlSW1hZ2VUaHJlc2hvbGQpOwogfQogCi1pbmxpbmUgdm9pZCBSZW5k
ZXJTdHlsZTo6c2V0Q2xpcFBhdGgoUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiYmIG9wZXJhdGlv
bikKK2lubGluZSB2b2lkIFJlbmRlclN0eWxlOjpzZXRDbGlwUGF0aChSZWZQdHI8UGF0aE9wZXJh
dGlvbj4mJiBvcGVyYXRpb24pCiB7CiAgICAgaWYgKG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmNs
aXBQYXRoICE9IG9wZXJhdGlvbikKICAgICAgICAgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nl
c3MoKS5jbGlwUGF0aCA9IFdURk1vdmUob3BlcmF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmlu
ZGV4IDlkMzE1MzFhMzZmNWQyNDQwOGFlNmNiNzc3MWZhYjc0ZDU3NTk2OTguLmFhNGI4MTJmOTBj
MjhjZjgzMzRlOGZiODMyOWM1M2UzMzM5MmUxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaApAQCAt
MjUsMTMgKzI1LDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFt
ZXMuaCIKLSNpbmNsdWRlICJDbGlwUGF0aE9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkNvdW50ZXJE
aXJlY3RpdmVzLmgiCiAjaW5jbHVkZSAiRmlsbExheWVyLmgiCiAjaW5jbHVkZSAiR2FwTGVuZ3Ro
LmgiCiAjaW5jbHVkZSAiTGVuZ3RoUG9pbnQuaCIKICNpbmNsdWRlICJMaW5lQ2xhbXBWYWx1ZS5o
IgogI2luY2x1ZGUgIk5pbmVQaWVjZUltYWdlLmgiCisjaW5jbHVkZSAiUGF0aE9wZXJhdGlvbi5o
IgogI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhcGVWYWx1ZS5oIgpAQCAtMTY0LDcg
KzE2NCw3IEBAIHB1YmxpYzoKIAogICAgIGludCBvcmRlcjsKIAotICAgIFJlZlB0cjxDbGlwUGF0
aE9wZXJhdGlvbj4gY2xpcFBhdGg7CisgICAgUmVmUHRyPFBhdGhPcGVyYXRpb24+IGNsaXBQYXRo
OwogCiAgICAgQ29sb3IgdGV4dERlY29yYXRpb25Db2xvcjsKICAgICBDb2xvciB2aXNpdGVkTGlu
a1RleHREZWNvcmF0aW9uQ29sb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCA0OWI2ZTVjZDczYjdkNDgwYzlkYmFkNzcyZmY2
YzMyYTgwNTliMGNlLi5kMzI5ODM1MmVmZTVlODI4NDg5ZTZkMDAzNWY4MmMzYjdiOWY4MGFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAKQEAgLTM4NiwxNiArMzg2LDE2IEBAIGlubGluZSBGbG9hdFJlY3QgY2xpcFBhdGhSZWZlcmVu
Y2VCb3goY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIENTU0JveFR5cGUKIAogaW5saW5l
IGJvb2wgaXNQb2ludEluQ1NTQ2xpcHBpbmdBcmVhKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKIHsKLSAgICBDbGlwUGF0aE9wZXJhdGlvbiog
Y2xpcFBhdGhPcGVyYXRpb24gPSByZW5kZXJlci5zdHlsZSgpLmNsaXBQYXRoKCk7Ci0gICAgaWYg
KGlzPFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKSkgewotICAgICAg
ICBhdXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpjbGlw
UGF0aE9wZXJhdGlvbik7CisgICAgUGF0aE9wZXJhdGlvbiogY2xpcFBhdGhPcGVyYXRpb24gPSBy
ZW5kZXJlci5zdHlsZSgpLmNsaXBQYXRoKCk7CisgICAgaWYgKGlzPFNoYXBlUGF0aE9wZXJhdGlv
bj4oY2xpcFBhdGhPcGVyYXRpb24pKSB7CisgICAgICAgIGF1dG8mIGNsaXBQYXRoID0gZG93bmNh
c3Q8U2hhcGVQYXRoT3BlcmF0aW9uPigqY2xpcFBhdGhPcGVyYXRpb24pOwogICAgICAgICBGbG9h
dFJlY3QgcmVmZXJlbmNlQm94ID0gY2xpcFBhdGhSZWZlcmVuY2VCb3gocmVuZGVyZXIsIGNsaXBQ
YXRoLnJlZmVyZW5jZUJveCgpKTsKICAgICAgICAgaWYgKCFyZWZlcmVuY2VCb3guY29udGFpbnMo
cG9pbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gY2xpcFBh
dGgucGF0aEZvclJlZmVyZW5jZVJlY3QocmVmZXJlbmNlQm94KS5jb250YWlucyhwb2ludCwgY2xp
cFBhdGgud2luZFJ1bGUoKSk7CiAgICAgfQotICAgIGlmIChpczxCb3hDbGlwUGF0aE9wZXJhdGlv
bj4oY2xpcFBhdGhPcGVyYXRpb24pKSB7Ci0gICAgICAgIGF1dG8mIGNsaXBQYXRoID0gZG93bmNh
c3Q8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpjbGlwUGF0aE9wZXJhdGlvbik7CisgICAgaWYgKGlz
PEJveFBhdGhPcGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKSkgeworICAgICAgICBhdXRvJiBj
bGlwUGF0aCA9IGRvd25jYXN0PEJveFBhdGhPcGVyYXRpb24+KCpjbGlwUGF0aE9wZXJhdGlvbik7
CiAgICAgICAgIEZsb2F0UmVjdCByZWZlcmVuY2VCb3ggPSBjbGlwUGF0aFJlZmVyZW5jZUJveChy
ZW5kZXJlciwgY2xpcFBhdGgucmVmZXJlbmNlQm94KCkpOwogICAgICAgICBpZiAoIXJlZmVyZW5j
ZUJveC5jb250YWlucyhwb2ludCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MDcs
OSArNDA3LDkgQEAgaW5saW5lIGJvb2wgaXNQb2ludEluQ1NTQ2xpcHBpbmdBcmVhKGNvbnN0IFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFAKIAogdm9pZCBTVkdSZW5kZXJTdXBw
b3J0OjpjbGlwQ29udGV4dFRvQ1NTQ2xpcHBpbmdBcmVhKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCiB7Ci0gICAgQ2xpcFBhdGhPcGVyYXRp
b24qIGNsaXBQYXRoT3BlcmF0aW9uID0gcmVuZGVyZXIuc3R5bGUoKS5jbGlwUGF0aCgpOwotICAg
IGlmIChpczxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPihjbGlwUGF0aE9wZXJhdGlvbikpIHsKLSAg
ICAgICAgYXV0byYgY2xpcFBhdGggPSBkb3duY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPigq
Y2xpcFBhdGhPcGVyYXRpb24pOworICAgIFBhdGhPcGVyYXRpb24qIGNsaXBQYXRoT3BlcmF0aW9u
ID0gcmVuZGVyZXIuc3R5bGUoKS5jbGlwUGF0aCgpOworICAgIGlmIChpczxTaGFwZVBhdGhPcGVy
YXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKSkgeworICAgICAgICBhdXRvJiBjbGlwUGF0aCA9IGRv
d25jYXN0PFNoYXBlUGF0aE9wZXJhdGlvbj4oKmNsaXBQYXRoT3BlcmF0aW9uKTsKICAgICAgICAg
YXV0byBsb2NhbFRvUGFyZW50VHJhbnNmb3JtID0gcmVuZGVyZXIubG9jYWxUb1BhcmVudFRyYW5z
Zm9ybSgpOwogCiAgICAgICAgIGF1dG8gcmVmZXJlbmNlQm94ID0gY2xpcFBhdGhSZWZlcmVuY2VC
b3gocmVuZGVyZXIsIGNsaXBQYXRoLnJlZmVyZW5jZUJveCgpKTsKQEAgLTQyMCw4ICs0MjAsOCBA
QCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBDb250ZXh0VG9DU1NDbGlwcGluZ0FyZWEoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjbwogCiAgICAgICAgIGNvbnRleHQuY2xpcFBhdGgocGF0
aCwgY2xpcFBhdGgud2luZFJ1bGUoKSk7CiAgICAgfQotICAgIGlmIChpczxCb3hDbGlwUGF0aE9w
ZXJhdGlvbj4oY2xpcFBhdGhPcGVyYXRpb24pKSB7Ci0gICAgICAgIGF1dG8mIGNsaXBQYXRoID0g
ZG93bmNhc3Q8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KCpjbGlwUGF0aE9wZXJhdGlvbik7CisgICAg
aWYgKGlzPEJveFBhdGhPcGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKSkgeworICAgICAgICBh
dXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PEJveFBhdGhPcGVyYXRpb24+KCpjbGlwUGF0aE9wZXJh
dGlvbik7CiAgICAgICAgIEZsb2F0UmVjdCByZWZlcmVuY2VCb3ggPSBjbGlwUGF0aFJlZmVyZW5j
ZUJveChyZW5kZXJlciwgY2xpcFBhdGgucmVmZXJlbmNlQm94KCkpOwogICAgICAgICBjb250ZXh0
LmNsaXBQYXRoKGNsaXBQYXRoLnBhdGhGb3JSZWZlcmVuY2VSZWN0KEZsb2F0Um91bmRlZFJlY3Qg
e3JlZmVyZW5jZUJveH0pKTsKICAgICB9CkBAIC00MzIsOCArNDMyLDggQEAgYm9vbCBTVkdSZW5k
ZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjb25zdAogICAgIGlmIChTVkdIaXRUZXN0Q3ljbGVEZXRlY3Rpb25TY29wZTo6aXNWaXNp
dGluZyhyZW5kZXJlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENsaXBQYXRoT3Bl
cmF0aW9uKiBjbGlwUGF0aE9wZXJhdGlvbiA9IHJlbmRlcmVyLnN0eWxlKCkuY2xpcFBhdGgoKTsK
LSAgICBpZiAoaXM8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oY2xpcFBhdGhPcGVyYXRpb24pIHx8
IGlzPEJveENsaXBQYXRoT3BlcmF0aW9uPihjbGlwUGF0aE9wZXJhdGlvbikpCisgICAgUGF0aE9w
ZXJhdGlvbiogY2xpcFBhdGhPcGVyYXRpb24gPSByZW5kZXJlci5zdHlsZSgpLmNsaXBQYXRoKCk7
CisgICAgaWYgKGlzPFNoYXBlUGF0aE9wZXJhdGlvbj4oY2xpcFBhdGhPcGVyYXRpb24pIHx8IGlz
PEJveFBhdGhPcGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKSkKICAgICAgICAgcmV0dXJuIGlz
UG9pbnRJbkNTU0NsaXBwaW5nQXJlYShyZW5kZXJlciwgcG9pbnQpOwogCiAgICAgLy8gV2UganVz
dCB0YWtlIGNsaXBwZXJzIGludG8gYWNjb3VudCB0byBkZXRlcm1pbmUgaWYgYSBwb2ludCBpcyBv
biB0aGUgbm9kZS4gVGhlIFNwZWNpZmljYXRpb24gbWF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAppbmRleCBkZTQ5MzI4MjYz
ZDA2MmEyMzViY2QyZjQ2NjdlZWYwOWMxMmViM2IzLi5jNjUwMjFiZWUwMzU1NjVhYWIzMWM2N2Zi
OTMxOWY4OGU2MTgwN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTU3Miw4ICs1NzIsOCBAQCB2b2lkIHdyaXRl
UmVzb3VyY2VzKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBP
cHRpb25TZXQ8UmVuZAogICAgICAgICAgICAgdHMgPDwgIiAiIDw8IG1hc2tlci0+cmVzb3VyY2VC
b3VuZGluZ0JveChyZW5kZXJlcikgPDwgIlxuIjsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAo
c3R5bGUuY2xpcFBhdGgoKSAmJiBpczxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oc3R5bGUu
Y2xpcFBhdGgoKSkpIHsKLSAgICAgICAgYXV0byByZXNvdXJjZUNsaXBQYXRoID0gZG93bmNhc3Q8
UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KHN0eWxlLmNsaXBQYXRoKCkpOworICAgIGlmIChz
dHlsZS5jbGlwUGF0aCgpICYmIGlzPFJlZmVyZW5jZVBhdGhPcGVyYXRpb24+KHN0eWxlLmNsaXBQ
YXRoKCkpKSB7CisgICAgICAgIGF1dG8gcmVzb3VyY2VDbGlwUGF0aCA9IGRvd25jYXN0PFJlZmVy
ZW5jZVBhdGhPcGVyYXRpb24+KHN0eWxlLmNsaXBQYXRoKCkpOwogICAgICAgICBBdG9tU3RyaW5n
IGlkID0gcmVzb3VyY2VDbGlwUGF0aC0+ZnJhZ21lbnQoKTsKICAgICAgICAgaWYgKFJlbmRlclNW
R1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9IGdldFJlbmRlclNWR1Jlc291cmNlQnlJZDxSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXI+KHJlbmRlcmVyLmRvY3VtZW50KCksIGlkKSkgewogICAgICAg
ICAgICAgdHMgPDwgaW5kZW50IDw8ICIgIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGZhYmVlMzA1YzczMThkNzI3
MzI5M2Q1NjJiNGRmZTU3YzYwZjc4YmQuLjIwYjhiNWU3YjA3YjMxYTEyYzVhYWNiYTM4NTg5MmZi
ZjNhMjM1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMTI3LDggKzEyNyw4IEBAIHZvaWQgU1ZHUmVuZGVyaW5n
Q29udGV4dDo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgUGFpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBDbGlwUGF0aE9wZXJhdGlvbiogY2xpcFBh
dGhPcGVyYXRpb24gPSBzdHlsZS5jbGlwUGF0aCgpOwotICAgIGJvb2wgaGFzQ1NTQ2xpcHBpbmcg
PSBpczxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPihjbGlwUGF0aE9wZXJhdGlvbikgfHwgaXM8Qm94
Q2xpcFBhdGhPcGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKTsKKyAgICBQYXRoT3BlcmF0aW9u
KiBjbGlwUGF0aE9wZXJhdGlvbiA9IHN0eWxlLmNsaXBQYXRoKCk7CisgICAgYm9vbCBoYXNDU1ND
bGlwcGluZyA9IGlzPFNoYXBlUGF0aE9wZXJhdGlvbj4oY2xpcFBhdGhPcGVyYXRpb24pIHx8IGlz
PEJveFBhdGhPcGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKTsKICAgICBpZiAoaGFzQ1NTQ2xp
cHBpbmcpCiAgICAgICAgIFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBDb250ZXh0VG9DU1NDbGlwcGlu
Z0FyZWEobV9wYWludEluZm8tPmNvbnRleHQoKSwgcmVuZGVyZXIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKaW5kZXggYTA0YWE1NjMxYTA3ZjM5
YTA2MmExOTZiN2U2NDRkNDNjMmNhYmMzMS4uNzRiY2VhZjllODBiZmZiNTY4ZjFiYzNlODk0M2Nh
YzMyYzQ4M2M5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZXNvdXJjZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3Vy
Y2VzLmNwcApAQCAtMjAsOCArMjAsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlNWR1Jlc291cmNlcy5oIgogCi0jaW5jbHVkZSAiQ2xpcFBhdGhPcGVyYXRpb24uaCIKICNpbmNs
dWRlICJGaWx0ZXJPcGVyYXRpb24uaCIKKyNpbmNsdWRlICJQYXRoT3BlcmF0aW9uLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oIgpAQCAt
MjE5LDEwICsyMTksMTAgQEAgYm9vbCBTVkdSZXNvdXJjZXM6OmJ1aWxkQ2FjaGVkUmVzb3VyY2Vz
KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW4KIAogICAgIGJvb2wgZm91
bmRSZXNvdXJjZXMgPSBmYWxzZTsKICAgICBpZiAoY2xpcHBlckZpbHRlck1hc2tlclRhZ3MoKS5j
b250YWlucyh0YWdOYW1lKSkgewotICAgICAgICBpZiAoaXM8UmVmZXJlbmNlQ2xpcFBhdGhPcGVy
YXRpb24+KHN0eWxlLmNsaXBQYXRoKCkpKSB7CisgICAgICAgIGlmIChpczxSZWZlcmVuY2VQYXRo
T3BlcmF0aW9uPihzdHlsZS5jbGlwUGF0aCgpKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IC13
ZWJraXQtY2xpcC1wYXRoIHNob3VsZCBzdXBwb3J0IGV4dGVybmFsIHJlc291cmNlcwogICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzAzMgot
ICAgICAgICAgICAgYXV0byYgY2xpcFBhdGggPSBkb3duY2FzdDxSZWZlcmVuY2VDbGlwUGF0aE9w
ZXJhdGlvbj4oKnN0eWxlLmNsaXBQYXRoKCkpOworICAgICAgICAgICAgYXV0byYgY2xpcFBhdGgg
PSBkb3duY2FzdDxSZWZlcmVuY2VQYXRoT3BlcmF0aW9uPigqc3R5bGUuY2xpcFBhdGgoKSk7CiAg
ICAgICAgICAgICBBdG9tU3RyaW5nIGlkKGNsaXBQYXRoLmZyYWdtZW50KCkpOwogICAgICAgICAg
ICAgaWYgKHNldENsaXBwZXIoZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRlclNWR1Jlc291
cmNlQ2xpcHBlcj4oZG9jdW1lbnQsIGlkKSkpCiAgICAgICAgICAgICAgICAgZm91bmRSZXNvdXJj
ZXMgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVy
Q29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIu
aAppbmRleCA5NmUzODNlMTEwMzk4OTgxNGI5OWQyZjA4YTdkZTA5ZTFhYTdhYWU1Li5kMjMwNjlk
NzI3MWUyZTAwZDU5ODUxN2VmZWZhZjllYTI5YWFjZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3RyaW5nT3JOb25lKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0
IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4g
Y29udmVydFRleHRFbXBoYXNpc1Bvc2l0aW9uKEJ1aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVl
Jik7CiAgICAgc3RhdGljIFRleHRBbGlnbk1vZGUgY29udmVydFRleHRBbGlnbihCdWlsZGVyU3Rh
dGUmLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRpYyBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRp
b24+IGNvbnZlcnRDbGlwUGF0aChCdWlsZGVyU3RhdGUmLCBjb25zdCBDU1NWYWx1ZSYpOworICAg
IHN0YXRpYyBSZWZQdHI8UGF0aE9wZXJhdGlvbj4gY29udmVydENsaXBQYXRoKEJ1aWxkZXJTdGF0
ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFJlc2l6ZSBjb252ZXJ0UmVzaXplKEJ1
aWxkZXJTdGF0ZSYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIGludCBjb252ZXJ0TWFy
cXVlZVJlcGV0aXRpb24oQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0
aWMgaW50IGNvbnZlcnRNYXJxdWVlU3BlZWQoQnVpbGRlclN0YXRlJiwgY29uc3QgQ1NTVmFsdWUm
KTsKQEAgLTYxOSw3ICs2MTksNyBAQCBpbmxpbmUgVGV4dEFsaWduTW9kZSBCdWlsZGVyQ29udmVy
dGVyOjpjb252ZXJ0VGV4dEFsaWduKEJ1aWxkZXJTdGF0ZSYgYnVpbGRlclN0YQogICAgIHJldHVy
biBwYXJlbnRTdHlsZS50ZXh0QWxpZ24oKTsKIH0KIAotaW5saW5lIFJlZlB0cjxDbGlwUGF0aE9w
ZXJhdGlvbj4gQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydENsaXBQYXRoKEJ1aWxkZXJTdGF0ZSYg
YnVpbGRlclN0YXRlLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxpbmUgUmVmUHRyPFBhdGhP
cGVyYXRpb24+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRDbGlwUGF0aChCdWlsZGVyU3RhdGUm
IGJ1aWxkZXJTdGF0ZSwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQogewogICAgIGlmIChpczxDU1NQ
cmltaXRpdmVWYWx1ZT4odmFsdWUpKSB7CiAgICAgICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0g
ZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKQEAgLTYyNywyMCArNjI3LDIwIEBA
IGlubGluZSBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZl
cnRDbGlwUGF0aChCdWlsZGVyU3RhdGUmCiAgICAgICAgICAgICBTdHJpbmcgY3NzVVJMVmFsdWUg
PSBwcmltaXRpdmVWYWx1ZS5zdHJpbmdWYWx1ZSgpOwogICAgICAgICAgICAgU3RyaW5nIGZyYWdt
ZW50ID0gU1ZHVVJJUmVmZXJlbmNlOjpmcmFnbWVudElkZW50aWZpZXJGcm9tSVJJU3RyaW5nKGNz
c1VSTFZhbHVlLCBidWlsZGVyU3RhdGUuZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICAvLyBGSVhN
RTogSXQgZG9lc24ndCB3b3JrIHdpdGggZXh0ZXJuYWwgU1ZHIHJlZmVyZW5jZXMgKHNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI2MTMzKQotICAgICAgICAgICAg
cmV0dXJuIFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uOjpjcmVhdGUoY3NzVVJMVmFsdWUsIGZy
YWdtZW50KTsKKyAgICAgICAgICAgIHJldHVybiBSZWZlcmVuY2VQYXRoT3BlcmF0aW9uOjpjcmVh
dGUoY3NzVVJMVmFsdWUsIGZyYWdtZW50KTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQocHJp
bWl0aXZlVmFsdWUudmFsdWVJRCgpID09IENTU1ZhbHVlTm9uZSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAogICAgIENTU0JveFR5cGUgcmVmZXJlbmNlQm94ID0gQ1NTQm94VHlw
ZTo6Qm94TWlzc2luZzsKLSAgICBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IG9wZXJhdGlvbjsK
KyAgICBSZWZQdHI8UGF0aE9wZXJhdGlvbj4gb3BlcmF0aW9uOwogCiAgICAgZm9yIChhdXRvJiBj
dXJyZW50VmFsdWUgOiBkb3duY2FzdDxDU1NWYWx1ZUxpc3Q+KHZhbHVlKSkgewogICAgICAgICBh
dXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50
VmFsdWUuZ2V0KCkpOwogICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUuaXNTaGFwZSgpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoIW9wZXJhdGlvbik7Ci0gICAgICAgICAgICBvcGVyYXRpb24gPSBT
aGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpjcmVhdGUoCisgICAgICAgICAgICBvcGVyYXRpb24gPSBT
aGFwZVBhdGhPcGVyYXRpb246OmNyZWF0ZSgKICAgICAgICAgICAgICAgICBiYXNpY1NoYXBlRm9y
VmFsdWUoYnVpbGRlclN0YXRlLmNzc1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEoKSwgCiAgICAgICAg
ICAgICAgICAgKnByaW1pdGl2ZVZhbHVlLnNoYXBlVmFsdWUoKSwKICAgICAgICAgICAgICAgICBi
dWlsZGVyU3RhdGUuc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpKTsKQEAgLTY1NywxMCArNjU3LDEw
IEBAIGlubGluZSBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IEJ1aWxkZXJDb252ZXJ0ZXI6OmNv
bnZlcnRDbGlwUGF0aChCdWlsZGVyU3RhdGUmCiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKG9w
ZXJhdGlvbikKLSAgICAgICAgZG93bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKm9wZXJh
dGlvbikuc2V0UmVmZXJlbmNlQm94KHJlZmVyZW5jZUJveCk7CisgICAgICAgIGRvd25jYXN0PFNo
YXBlUGF0aE9wZXJhdGlvbj4oKm9wZXJhdGlvbikuc2V0UmVmZXJlbmNlQm94KHJlZmVyZW5jZUJv
eCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVChyZWZlcmVuY2VCb3ggIT0gQ1NTQm94VHlw
ZTo6Qm94TWlzc2luZyk7Ci0gICAgICAgIG9wZXJhdGlvbiA9IEJveENsaXBQYXRoT3BlcmF0aW9u
OjpjcmVhdGUocmVmZXJlbmNlQm94KTsKKyAgICAgICAgb3BlcmF0aW9uID0gQm94UGF0aE9wZXJh
dGlvbjo6Y3JlYXRlKHJlZmVyZW5jZUJveCk7CiAgICAgfQogCiAgICAgcmV0dXJuIG9wZXJhdGlv
bjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>