<?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>230452</bug_id>
          
          <creation_ts>2021-09-18 17:57:39 -0700</creation_ts>
          <short_desc>Move ScrollingMomentumCalculator into the platform directory</short_desc>
          <delta_ts>2021-09-18 19:56: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>Scrolling</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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>annulen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1794825</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-18 17:57:39 -0700</bug_when>
    <thetext>Move ScrollingMomentumCalculator into the platform directory</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794826</commentid>
    <comment_count>1</comment_count>
      <attachid>438572</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-18 17:58:18 -0700</bug_when>
    <thetext>Created attachment 438572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794827</commentid>
    <comment_count>2</comment_count>
      <attachid>438573</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-18 18:06:25 -0700</bug_when>
    <thetext>Created attachment 438573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794829</commentid>
    <comment_count>3</comment_count>
      <attachid>438575</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-18 18:14:22 -0700</bug_when>
    <thetext>Created attachment 438575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794834</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-18 19:55:49 -0700</bug_when>
    <thetext>Committed r282733 (241870@main): &lt;https://commits.webkit.org/241870@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438575.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794835</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-18 19:56:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/83276062&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438572</attachid>
            <date>2021-09-18 17:58:18 -0700</date>
            <delta_ts>2021-09-18 18:22:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230452-20210918175817.patch</filename>
            <type>text/plain</type>
            <size>67892</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM1M2JjOWUxNjEwMGJm
N2QxNDNkNzJhMGFjZjg3MzZhMGM3ZTNhMS4uMzg5YjNmMzcyMzQ3M2FhYmFlYWYzMmQ5MGM3ZDVk
ZDZlNGEyODIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA5LTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yIGludG8gdGhlIHBsYXRmb3JtIGRpcmVjdG9yeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDUyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYyBoYXZlIG5vIG5vbi1w
bGF0Zm9ybSBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgT3RoZXIgY2hhbmdlcyBhcmUgdW5pZmll
ZCBzb3VyY2VzIGZhbGxvdXQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBT
b3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW06IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLm1tLgorCiAyMDIxLTA5LTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFNjcm9sbCBvZmZzZXRzIGluIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvciBzaG91bGQgYmUgRmxvYXRQb2ludCwgbm90IEZsb2F0U2l6ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRl
eCA1YWFkMGQ5M2MyOWJmYTM1MTVlZWM1OWNjZGE5OTE2OTJjNDM5MzA0Li5kODBiZDMyY2U3MGQ2
ZmU2ZjE1Yjk5YTI5ZWVlODUyNTk3NmRiYTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTc1NCw3ICsx
NzU0LDYgQEAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsU25hcE9mZnNldHNJbmZvLmNwcAogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29uc3RyYWludHMuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ci5jcHAKLXBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRml4ZWROb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlLmNwcAogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUuY3BwCkBAIC0xODM0LDYgKzE4MzMsNyBAQCBwbGF0
Zm9ybS9TY3JvbGxiYXIuY3BwCiBwbGF0Zm9ybS9TY3JvbGxiYXJzQ29udHJvbGxlci5jcHAKIHBs
YXRmb3JtL1Njcm9sbGJhclRoZW1lLmNwcAogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3Np
dGUuY3BwCitwbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCiBwbGF0Zm9y
bS9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmNwcAogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cAogcGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAppbmRleCA5NWE5MmUxYTNlNmIyYWZjMmM1YTMxNjc0Y2I5OTFmNjczMDc1OWIwLi4zZGZi
NjgxYzM3NzBlNTZhOGUxMWZkNmNmNDhiZTBlMGFkOGExNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTIwOSw3ICsyMDksNiBAQCBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUubW0KIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVQb3NpdGlvbmVkTm9kZS5tbQogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5n
VHJlZVN0aWNreU5vZGUubW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRv
ck1hYy5tbQotcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yy5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZU1hYy5t
bQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMu
bW0KIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLm1tCkBAIC00OTMsNiArNDky
LDcgQEAgcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCiBwbGF0Zm9y
bS9tYWMvU2Nyb2xsVmlld01hYy5tbQogcGxhdGZvcm0vbWFjL1Njcm9sbGJhcnNDb250cm9sbGVy
TWFjLm1tIEBuby11bmlmeQogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIEBuby11
bmlmeQorcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQogcGxh
dGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMubW0KIHBsYXRmb3JtL21hYy9T
dHJpbmdVdGlsaXRpZXMubW0KIHBsYXRmb3JtL21hYy9TdWRkZW5UZXJtaW5hdGlvbi5tbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDlkMWRlYTE4ZWZiZTM2ZDNhNTA2YTQ2ZGZkZDgyMmY2MjUwYmM1M2IuLmFiNTQ1MjMyMzJiMjBj
ZGJiZWI5OTZlZTdlMmVhNDE4YWQwMTVhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM1MCw2ICszNTAsOCBAQAogCQkwRjk0
QjY1MjIyMDkxNTA2MDAxNTcwMTQgLyogU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NEI2NTEyMjA5
MTRGRjAwMTU3MDE0IC8qIFNjcm9sbGluZ1N0YXRlUG9zaXRpb25lZE5vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjk0QjY1NTIyMDkzMUU0
MDAxNTcwMTQgLyogU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk0QjY1MzIyMDkxNTZDMDAxNTcwMTQg
LyogU2Nyb2xsaW5nVHJlZVBvc2l0aW9uZWROb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY5NEYzN0UyMzY2MTYyNjAwM0FBNUM3IC8qIFN0
eWxlUnVsZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGOTRGMzdDMjM2NjExMzEwMDNBQTVDNyAvKiBTdHlsZVJ1bGVUeXBlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY5OTA1OUEyNkY2QkU4
NTAwNTRGQkUwIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5OTA1OTkyNkY2QkU3RjAwNTRGQkUw
IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oICovOyB9OworCQkwRjk5MDU5RDI2RjZC
RTlBMDA1NEZCRTAgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk5MDU5QjI2RjZCRTk0MDA1
NEZCRTAgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi87IH07CiAJCTBGOURB
QTBGMUZEMUM2NkEwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOURBQTBFMUZEMUM2NjQwMDc5
QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQuaCAqLzsgfTsKIAkJMEZBMjREN0ExNjJERjkx
OTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkEyNEQ3ODE2MkRGOTE5MDBBM0Y0QzAgLyogR3Jh
cGhpY3NMYXllclVwZGF0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRkE2MUIwRTI2RjQzMjEzMDAxQUFEQjYgLyogU2Nyb2xsQW5pbWF0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE2MUIw
QzI2RjQzMjEyMDAxQUFEQjYgLyogU2Nyb2xsQW5pbWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1ODYsNyArMTU4OCw2IEBACiAJCTUx
N0E2M0M1MUI3NDMxOEYwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTYzQzAxQjc0MzE3RTAwRTdEQ0RD
IC8qIEtleWVkRGVjb2RlckNGLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNTE3QTYzQzYxQjc0MzE5MjAwRTdEQ0RDIC8qIEtleWVkRW5jb2RlckNG
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNjND
MjFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdCMjVBQTFDQzgyQjJBMDA2MUMwMTEg
LyogSURCQ29ubmVjdGlvblByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTdCMjVBODFDQzgyMDMyMDA2MUMwMTEgLyogSURCQ29ubmVjdGlvblBy
b3h5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
NTE3REVFRTgxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3REVF
RTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0UwM0Y3
MjRCNkQ5ODQwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3RTAzRjQyNEI2Qjk2MzAwNTQ4OTVB
IC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE4MkMyNTYxRjMxNDNDRDAwNTlCQTdDIC8qIEpTU2Vydmlj
ZVdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE4MkMyNTIxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdvcmtlci5oICovOyB9OwogCQk1
MTgyQzI1ODFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI1NDFGMzE0
MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggKi87IH07CkBAIC0xNjQ4
LDcgKzE2NDksNiBAQAogCQk1MUJDQ0UzMDFGOEYxNzlFMDA2QkEwRUQgLyogU2VydmljZVdvcmtl
clRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUJFMzdFMDBEQUVF
MDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxQkUzN0RFMERBRUUwMEUwMDEwODVGQyAvKiBTdG9yYWdlQXJl
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
QzBBQTM5MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8q
IENhY2hlZEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKLQkJNTFDNjFCMEIxREU1MzZFNzAwOEEyMTJEIC8qIFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFDNjFCMDkxREU1MzZFNzAwOEEyMTJEIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQzgx
QjhBMEM0NDIyRjcwMDE5RUNFMyAvKiBGVFBEaXJlY3RvcnlQYXJzZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzgxQjg4MEM0NDIyRjcwMDE5RUNF
MyAvKiBGVFBEaXJlY3RvcnlQYXJzZXIuaCAqLzsgfTsKIAkJNTFDQTdFRTkxRjg4MzM5MDAwM0Qz
MTMxIC8qIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDQTdFRTcxRjg4MzJFMDAwM0QzMTMxIC8qIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxQ0JGQzk5MEQxMEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBs
YXRmb3JtRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTFDQkZDOTgwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRhLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYzMzQs
NiArNjMzNCwxMCBAQAogCQkwRjk1MTBGMDI0RjQ3NjlDMDAxRjUyREMgLyogU2Nyb2xsTGF0Y2hp
bmdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbExhdGNoaW5nQ29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk1MTBGMjI0RjQ3NjlDMDAxRjUyREMg
LyogU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9s
bExhdGNoaW5nQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
OTdBNjU3MTU1REE4MUUwMEZBREQ0QyAvKiBEaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaXNwbGF5UmVmcmVzaE1vbml0
b3JJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTkwNTk4MjZGNkJFN0Yw
MDU0RkJFMCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY5OTA1OTkyNkY2QkU3RjAwNTRGQkUwIC8qIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5OTA1OUIyNkY2QkU5NDAwNTRGQkUw
IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY5OTA1OUMyNkY2QkU5NTAwNTRGQkUwIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5QjU0NzUyMkI0QTc3MjAw
N0I1RThBIC8qIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlCNTQ3NjIyQjRBNzczMDA3QjVFOEEgLyogU2Nyb2xs
aW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
Y3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5REFBMEMxRkQxQzY2MzAwNzlDNUIyIC8qIERPTUdDT3V0cHV0Q29u
c3RyYWludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01HQ091
dHB1dENvbnN0cmFpbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTA1NSw4
ICs5MDU5LDYgQEAKIAkJNTE3Qzg3MTAxRjhFRTcyRTAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJU
aHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU2VydmljZVdvcmtlclRo
cmVhZC5oOyBwYXRoID0gd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxN0M4NzExMUY4RUU3MkYwMEVC
ODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOyBwYXRoID0gd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJNTE3Qzg3MTYxRjhGRDREMzAwRUI4MDc2IC8qIFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTdE
RUVFMzFERTk0QURDMDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTdERUVF
NzFERTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdFMDNGNDI0QjZCOTYzMDA1
NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTXVsdGlHYW1lcGFkUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE3RTAzRjUyNEI2Qjk2NDAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTXVsdGlHYW1lcGFkUHJv
dmlkZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0ZCQTE3MTUxQUE3MUIw
MEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTkxMzksOCArOTE0MSw2IEBACiAJCTUxQkUzN0RFMERBRUUwMEUwMDEwODVG
QyAvKiBTdG9yYWdlQXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9y
YWdlQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUEzODBGMkFBMTBB
MDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FjaGVkRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDMEFBNDAw
RjJBQTE1RTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENhY2hlZEZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTFDNjFCMDgxREU1MzZFNzAwOEEyMTJEIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUM2
MUIwOTFERTUzNkU3MDA4QTIxMkQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUM4MUI4NzBDNDQyMkY3MDAxOUVD
RTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGVFBEaXJlY3RvcnlQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUM4MUI4ODBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGVFBEaXJlY3RvcnlQYXJzZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDQTdFRTcxRjg4MzJFMDAwM0QzMTMxIC8q
IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4ODY4LDggKzE4ODY4LDYgQEAKIAkJCQkxQUY2MkVFNDE0REEyMkE3MDA0MTU1NkMg
LyogU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwICovLAogCQkJCTFBRjYyRUU1MTREQTIyQTcwMDQx
NTU2QyAvKiBTY3JvbGxpbmdDb29yZGluYXRvci5oICovLAogCQkJCTcxMkRCQTQ3MjFGOEFENzkw
MDhGMzZCMiAvKiBTY3JvbGxpbmdDb29yZGluYXRvclR5cGVzLmggKi8sCi0JCQkJNTFDNjFCMDgx
REU1MzZFNzAwOEEyMTJEIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAgKi8sCi0J
CQkJNTFDNjFCMDkxREU1MzZFNzAwOEEyMTJEIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5oICovLAogCQkJCTkzQzM4QkZDMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZp
eGVkTm9kZS5jcHAgKi8sCiAJCQkJOTNDMzhCRkQxNjQ0NzNDNzAwMDkxRUIyIC8qIFNjcm9sbGlu
Z1N0YXRlRml4ZWROb2RlLmggKi8sCiAJCQkJMEZENDFFNjMyMUY4MDI2MDAwMEMwMDZEIC8qIFNj
cm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9kZS5jcHAgKi8sCkBAIC0xODkyNSw4ICsxODkyMyw2
IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5MzkxQTk5MDE2Mjc0NkNCMDAyOTczMzAgLyogU2Ny
b2xsaW5nQ29vcmRpbmF0b3JNYWMuaCAqLywKIAkJCQkxQUY2MkVFMzE0REEyMkE3MDA0MTU1NkMg
LyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0gKi8sCi0JCQkJNTE3REVFRTcxREU5NEIwODAw
QjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovLAotCQkJCTUxN0RF
RUUzMURFOTRBREMwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0g
Ki8sCiAJCQkJMEY3M0I3NjUyMjJCMzI3RjAwODA1MzE2IC8qIFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZU1hYy5tbSAqLywKIAkJCQk5M0M0QTQxMzE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oICovLAogCQkJCTkzQzRBNDE0MTYyOURGNUEw
MEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tICovLApAQCAt
MjIxODAsNiArMjIxNzYsOCBAQAogCQkJCUJDOEI4NTNDMEU3QzdGMTEwMEFCNjk4NCAvKiBTY3Jv
bGxiYXJUaGVtZU1hYy5oICovLAogCQkJCUJDRUY4NjlFMEU4NDRFOUQwMEE4NUNENSAvKiBTY3Jv
bGxiYXJUaGVtZU1hYy5tbSAqLywKIAkJCQk1QjFFMEU0MzI1RDE2MjlCMDAyNzIyODEgLyogU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0gKi8sCisJCQkJMEY5OTA1OUIyNkY2QkU5NDAwNTRG
QkUwIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovLAorCQkJCTBGOTkwNTlD
MjZGNkJFOTUwMDU0RkJFMCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gKi8s
CiAJCQkJOTM1MzY3NkEwOUFFRDg4QjAwRDM1Q0Q2IC8qIFNjcm9sbFZpZXdNYWMubW0gKi8sCiAJ
CQkJMDc3QUYxNDExOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVN
YWMuaCAqLywKIAkJCQkwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZU1hYy5tbSAqLywKQEAgLTI4MTU3LDYgKzI4MTU1LDggQEAKIAkJCQlCQzE0MDI4
OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCAqLywKIAkJCQk1
QjQ2NjU1RTI1RDE0QzA5MDAwQ0ZFMTQgLyogU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3Bw
ICovLAogCQkJCTVCNDY2NTVGMjVEMTRDMDkwMDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5oICovLAorCQkJCTBGOTkwNTk4MjZGNkJFN0YwMDU0RkJFMCAvKiBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IuY3BwICovLAorCQkJCTBGOTkwNTk5MjZGNkJFN0YwMDU0RkJFMCAv
KiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCAqLywKIAkJCQk1QjQ2NjU1RDI1RDE0QzA5
MDAwQ0ZFMTQgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwICovLAogCQkJCTVCNDY2NTYw
MjVEMTRDMEEwMDBDRkUxNCAvKiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oICovLAogCQkJCTBG
NENERUFBMjNEOTFBOEEwMDI1MUIwMiAvKiBTY3JvbGxUeXBlcy5jcHAgKi8sCkBAIC0zNDk0Myw4
ICszNDk0Myw4IEBACiAJCQkJOTM5MUE5OTExNjI3NDZDQjAwMjk3MzMwIC8qIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MTJEQkE0OTIxRjhBRDgzMDA4RjM2
QjIgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUI0
NjY1NjMyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1MUM2MUIwQjFERTUzNkU3MDA4QTIxMkQgLyogU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTdERUVFODFERTk0QjA4MDBC
OTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjk5MDU5QTI2RjZCRTg1MDA1NEZCRTAgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjk5MDU5RDI2RjZCRTlBMDA1NEZCRTAgLyogU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0MzOEJG
RjE2NDQ3M0M3MDAwOTFFQjIgLyogU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGRDQxRTY5MjFGODBEMTQwMDBDMDA2RCAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1l
SG9zdGluZ05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEzRTdCMTkxQjJGQzUwMDBGMUI1
NSAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWMw
NjhjMzY1MGEwMzhkYzgxN2JhOWRlMzMyMDkzYjRjNzU4NjJhNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjM1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgiCi0KLSNpbmNsdWRlICJGbG9hdFBvaW50LmgiCi0j
aW5jbHVkZSAiRmxvYXRTaXplLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGNv
bnN0IFNlY29uZHMgc2Nyb2xsU25hcEFuaW1hdGlvbkR1cmF0aW9uID0gMV9zOwotc3RhdGljIGlu
bGluZSBmbG9hdCBwcm9qZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKGZsb2F0IGluaXRpYWxX
aGVlbERlbHRhKQotewotICAgIC8vIE9uIG1hY09TIDEwLjEwIGFuZCBlYXJsaWVyLCB3ZSBkb24n
dCBoYXZlIGEgcGxhdGZvcm0gc2Nyb2xsaW5nIG1vbWVudHVtIGNhbGN1bGF0b3IsIHNvIHdlIGlu
c3RlYWQgYXBwcm94aW1hdGUgdGhlIHNjcm9sbCBkZXN0aW5hdGlvbgotICAgIC8vIGJ5IG11bHRp
cGx5aW5nIHRoZSBpbml0aWFsIHdoZWVsIGRlbHRhIGJ5IGEgY29uc3RhbnQgZmFjdG9yLiBCeSBy
dW5uaW5nIGEgZmV3IGV4cGVyaW1lbnRzIChpLmUuIGxvZ2dpbmcgc2Nyb2xsIGRlc3RpbmF0aW9u
IGFuZCBpbml0aWFsCi0gICAgLy8gd2hlZWwgZGVsdGEgZm9yIG1hbnkgc2Nyb2xsIGdlc3R1cmVz
KSB3ZSBkZXRlcm1pbmVkIHRoYXQgdGhpcyBpcyBhIHJlYXNvbmFibGUgd2F5IHRvIGFwcHJveGlt
YXRlIHdoZXJlIHNjcm9sbGluZyB3aWxsIHRha2UgdXMgd2l0aG91dAotICAgIC8vIHVzaW5nIF9O
U1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci4KLSAgICBzdGF0aWMgY29uc3RleHByIGRvdWJs
ZSBpbmVydGlhbFNjcm9sbFByZWRpY3Rpb25GYWN0b3IgPSAxNi43OwotICAgIHJldHVybiBpbmVy
dGlhbFNjcm9sbFByZWRpY3Rpb25GYWN0b3IgKiBpbml0aWFsV2hlZWxEZWx0YTsKLX0KLQotU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29u
c3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUs
IGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlh
bERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKLSAgICA6IG1faW5pdGlh
bERlbHRhKGluaXRpYWxEZWx0YSkKLSAgICAsIG1faW5pdGlhbFZlbG9jaXR5KGluaXRpYWxWZWxv
Y2l0eSkKLSAgICAsIG1faW5pdGlhbFNjcm9sbE9mZnNldChpbml0aWFsT2Zmc2V0KQotICAgICwg
bV92aWV3cG9ydFNpemUodmlld3BvcnRTaXplKQotICAgICwgbV9jb250ZW50U2l6ZShjb250ZW50
U2l6ZSkKLXsKLX0KLQotdm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFJldGFy
Z2V0ZWRTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0KQotewotICAgIGlmICht
X3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQgJiYgbV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0ID09IHRh
cmdldCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0ID0g
dGFyZ2V0OwotICAgIHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXREaWRDaGFuZ2UoKTsKLX0KLQotRmxv
YXRQb2ludCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnByZWRpY3RlZERlc3RpbmF0aW9u
T2Zmc2V0KCkKLXsKLSAgICBmbG9hdCBpbml0aWFsT2Zmc2V0WCA9IGNsYW1wVG88ZmxvYXQ+KG1f
aW5pdGlhbFNjcm9sbE9mZnNldC54KCkgKyBwcm9qZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNl
KG1faW5pdGlhbERlbHRhLndpZHRoKCkpLCAwLCBtX2NvbnRlbnRTaXplLndpZHRoKCkgLSBtX3Zp
ZXdwb3J0U2l6ZS53aWR0aCgpKTsKLSAgICBmbG9hdCBpbml0aWFsT2Zmc2V0WSA9IGNsYW1wVG88
ZmxvYXQ+KG1faW5pdGlhbFNjcm9sbE9mZnNldC55KCkgKyBwcm9qZWN0ZWRJbmVydGlhbFNjcm9s
bERpc3RhbmNlKG1faW5pdGlhbERlbHRhLmhlaWdodCgpKSwgMCwgbV9jb250ZW50U2l6ZS5oZWln
aHQoKSAtIG1fdmlld3BvcnRTaXplLmhlaWdodCgpKTsKLSAgICByZXR1cm4geyBpbml0aWFsT2Zm
c2V0WCwgaW5pdGlhbE9mZnNldFkgfTsKLX0KLQotI2lmICFQTEFURk9STShNQUMpCi0KLXN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBG
bG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVs
b2NpdHkpCi17Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRp
YWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKLX0KLQotdm9pZCBTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChi
b29sKQotewotfQotCi0jZW5kaWYKLQotQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6
OkJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3Bv
cnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBp
bml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRT
aXplJiBpbml0aWFsVmVsb2NpdHkpCi0gICAgOiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Io
dmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBp
bml0aWFsVmVsb2NpdHkpCi17Ci19Ci0KLUZsb2F0UG9pbnQgQmFzaWNTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I6OmxpbmVhcmx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhmbG9hdCBw
cm9ncmVzcykKLXsKLSAgICByZXR1cm4gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0ICsgcHJvZ3Jlc3Mg
KiAocmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpIC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0KTsKLX0K
LQotRmxvYXRQb2ludCBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3ViaWNhbGx5
SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykgY29uc3QKLXsKLSAg
ICBBU1NFUlQoIW1fZm9yY2VMaW5lYXJBbmltYXRpb25DdXJ2ZSk7Ci0gICAgRmxvYXRQb2ludCBp
bnRlcnBvbGF0ZWRQb2ludDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkKLSAgICAg
ICAgaW50ZXJwb2xhdGVkUG9pbnQgKz0gc3RkOjpwb3cocHJvZ3Jlc3MsIGkpICogbV9zbmFwQW5p
bWF0aW9uQ3VydmVDb2VmZmljaWVudHNbaV07Ci0KLSAgICByZXR1cm4gaW50ZXJwb2xhdGVkUG9p
bnQ7Ci19Ci0KLUZsb2F0UG9pbnQgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNj
cm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcyBlbGFwc2VkVGltZSkKLXsKLSAgICBp
ZiAobV9tb21lbnR1bUNhbGN1bGF0b3JSZXF1aXJlc0luaXRpYWxpemF0aW9uKSB7Ci0gICAgICAg
IGluaXRpYWxpemVTbmFwUHJvZ3Jlc3NDdXJ2ZSgpOwotICAgICAgICBpbml0aWFsaXplSW50ZXJw
b2xhdGlvbkNvZWZmaWNpZW50c0lmTmVjZXNzYXJ5KCk7Ci0gICAgICAgIG1fbW9tZW50dW1DYWxj
dWxhdG9yUmVxdWlyZXNJbml0aWFsaXphdGlvbiA9IGZhbHNlOwotICAgIH0KLQotICAgIGZsb2F0
IHByb2dyZXNzID0gYW5pbWF0aW9uUHJvZ3Jlc3NBZnRlckVsYXBzZWRUaW1lKGVsYXBzZWRUaW1l
KTsKLSAgICByZXR1cm4gbV9mb3JjZUxpbmVhckFuaW1hdGlvbkN1cnZlID8gbGluZWFybHlJbnRl
cnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNzKHByb2dyZXNzKSA6IGN1YmljYWxseUludGVycG9sYXRl
ZE9mZnNldEF0UHJvZ3Jlc3MocHJvZ3Jlc3MpOwotfQotCi1TZWNvbmRzIEJhc2ljU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yOjphbmltYXRpb25EdXJhdGlvbigpCi17Ci0gICAgcmV0dXJuIHNj
cm9sbFNuYXBBbmltYXRpb25EdXJhdGlvbjsKLX0KLQotLyoqCi0gKiBDb21wdXRlcyBhbmQgc2V0
cyBjb2VmZmljaWVudHMgcmVxdWlyZWQgZm9yIGludGVycG9sYXRlZCBzbmFwcGluZyB3aGVuIHNj
cm9sbGluZyBpbiAyIGRpbWVuc2lvbnMsIGdpdmVuCi0gKiBpbml0aWFsIGNvbmRpdGlvbnMgKHRo
ZSBpbml0aWFsIGFuZCB0YXJnZXQgdmVjdG9ycywgYWxvbmcgd2l0aCB0aGUgaW5pdGlhbCB3aGVl
bCBkZWx0YSBhcyBhIHZlY3RvcikuIFRoZQotICogcGF0aCBpcyBhIGN1YmljIEJlemllciBjdXJ2
ZSBvZiB0aGUgZm9ybSBwKHMpID0gSU5JVElBTCArIChDXzEgKiBzKSArIChDXzIgKiBzXjIpICsg
KENfMyAqIHNeMykgd2hlcmUgZWFjaAotICogQ19pIGlzIGEgMkQgdmVjdG9yIGFuZCBJTklUSUFM
IGlzIHRoZSB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBpbml0aWFsIHNjcm9sbCBvZmZzZXQuIHMg
aXMgYSByZWFsIGluIHRoZQotICogaW50ZXJ2YWwgWzAsIDFdIGluZGljYXRpbmcgdGhlICJwcm9n
cmVzcyIgb2YgdGhlIGN1cnZlIChpLmUuIGhvdyBtdWNoIG9mIHRoZSBjdXJ2ZSBoYXMgYmVlbiB0
cmF2ZWxlZCkuCi0gKgotICogVGhlIGN1cnZlIGhhcyA0IGNvbnRyb2wgcG9pbnRzLCB0aGUgZmly
c3QgYW5kIGxhc3Qgb2Ygd2hpY2ggYXJlIHRoZSBpbml0aWFsIGFuZCB0YXJnZXQgcG9pbnRzLCBy
ZXNwZWN0aXZlbHkuCi0gKiBUaGUgZGlzdGFuY2VzIGJldHdlZW4gYWRqYWNlbnQgY29udHJvbCBw
b2ludHMgYXJlIGNvbnN0cmFpbmVkIHRvIGJlIHRoZSBzYW1lLCBtYWtpbmcgdGhlIGNvbnZleCBo
dWxsIGFuCi0gKiBpc29zY2VsZXMgdHJhcGV6b2lkIHdpdGggMyBzaWRlcyBvZiBlcXVhbCBsZW5n
dGguIEFkZGl0aW9uYWxseSwgdGhlIHZlY3RvciBmcm9tIHRoZSBmaXJzdCBjb250cm9sIHBvaW50
IHRvCi0gKiB0aGUgc2Vjb25kIHBvaW50cyBpbiB0aGUgc2FtZSBkaXJlY3Rpb24gYXMgdGhlIGlu
aXRpYWwgc2Nyb2xsIGRlbHRhLiBUaGVzZSBjb25zdHJhaW50cyBlbnN1cmUgdHdvIHByb3BlcnRp
ZXM6Ci0gKiAgICAgMS4gVGhlIGRpcmVjdGlvbiBvZiB0aGUgc25hcCBhbmltYXRpb24gYXQgcz0w
IHdpbGwgYmUgZXF1YWwgdG8gdGhlIGRpcmVjdGlvbiBvZiB0aGUgaW5pdGlhbCBzY3JvbGwgZGVs
dGEuCi0gKiAgICAgMi4gUG9pbnRzIGF0IHJlZ3VsYXIgaW50ZXJ2YWxzIG9mIHMgd2lsbCBiZSBl
dmVubHkgc3ByZWFkIG91dC4KLSAqCi0gKiBJZiB0aGUgaW5pdGlhbCBzY3JvbGwgZGlyZWN0aW9u
IGlzIG9ydGhvZ29uYWwgdG8gb3IgcG9pbnRzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gYXMg
dGhlIHZlY3RvciBmcm9tIHRoZQotICogaW5pdGlhbCBwb2ludCB0byB0aGUgdGFyZ2V0IHBvaW50
LCBpbml0aWFsaXphdGlvbiByZXR1cm5zIGVhcmx5IGFuZCBzZXRzIHRoZSBjdXJ2ZSB0byBhbmlt
YXRlIGRpcmVjdGx5IHRvIHRoZQotICogc25hcCBwb2ludCB3aXRob3V0IGN1YmljIGludGVycG9s
YXRpb24uCi0gKgotICogRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlZmFjdG9yZWQgdG8gdXNlIFVu
aXRCZXppZXIuCi0gKi8KLXZvaWQgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6Omlu
aXRpYWxpemVJbnRlcnBvbGF0aW9uQ29lZmZpY2llbnRzSWZOZWNlc3NhcnkoKQotewotICAgIG1f
Zm9yY2VMaW5lYXJBbmltYXRpb25DdXJ2ZSA9IHRydWU7Ci0gICAgZmxvYXQgaW5pdGlhbERlbHRh
TWFnbml0dWRlID0gbV9pbml0aWFsRGVsdGEuZGlhZ29uYWxMZW5ndGgoKTsKLSAgICBpZiAoaW5p
dGlhbERlbHRhTWFnbml0dWRlIDwgMSkgewotICAgICAgICAvLyBUaGUgaW5pdGlhbCB3aGVlbCBk
ZWx0YSBpcyBzbyBpbnNpZ25pZmljYW50IHRoYXQgd2UncmUgYmV0dGVyIG9mZiBjb25zaWRlcmlu
ZyB0aGlzIHRvIGhhdmUgdGhlIHNhbWUgZWZmZWN0IGFzIGZpbmlzaGluZyBhIHNjcm9sbCBnZXN0
dXJlIHdpdGggbm8gbW9tZW50dW0uCi0gICAgICAgIC8vIFRodXMsIGN1YmljIGludGVycG9sYXRp
b24gaXNuJ3QgbmVlZGVkIGhlcmUuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBGbG9h
dFNpemUgc3RhcnRUb0VuZFZlY3RvciA9IHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSAtIG1faW5p
dGlhbFNjcm9sbE9mZnNldDsKLSAgICBmbG9hdCBzdGFydFRvRW5kRGlzdGFuY2UgPSBzdGFydFRv
RW5kVmVjdG9yLmRpYWdvbmFsTGVuZ3RoKCk7Ci0gICAgaWYgKCFzdGFydFRvRW5kRGlzdGFuY2Up
IHsKLSAgICAgICAgLy8gVGhlIHN0YXJ0IGFuZCBlbmQgcG9zaXRpb25zIGFyZSB0aGUgc2FtZSwg
c28gd2Ugc2hvdWxkbid0IHRyeSB0byBpbnRlcnBvbGF0ZSBhIHBhdGguCi0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBmbG9hdCBjb3NUaGV0YSA9IChtX2luaXRpYWxEZWx0YS53aWR0aCgp
ICogc3RhcnRUb0VuZFZlY3Rvci53aWR0aCgpICsgbV9pbml0aWFsRGVsdGEuaGVpZ2h0KCkgKiBz
dGFydFRvRW5kVmVjdG9yLmhlaWdodCgpKSAvIChpbml0aWFsRGVsdGFNYWduaXR1ZGUgKiBzdGFy
dFRvRW5kRGlzdGFuY2UpOwotICAgIGlmIChjb3NUaGV0YSA8PSAwKSB7Ci0gICAgICAgIC8vIEl0
J3MgcG9zc2libGUgdGhhdCB0aGUgdXNlciBpcyBub3Qgc2Nyb2xsaW5nIHRvd2FyZHMgdGhlIHRh
cmdldCBzbmFwIG9mZnNldCAoZm9yIGluc3RhbmNlLCBzY3JvbGxpbmcgYWdhaW5zdCBhIGNvcm5l
ciB3aGVuIDJEIHNjcm9sbCBzbmFwcGluZykuCi0gICAgICAgIC8vIEluIHRoaXMgY2FzZSwganVz
dCBsZXQgdGhlIHNjcm9sbCBvZmZzZXQgYW5pbWF0ZSB0byB0aGUgdGFyZ2V0IHdpdGhvdXQgY29t
cHV0aW5nIGEgY3ViaWMgY3VydmUuCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmbG9h
dCBzaWRlTGVuZ3RoID0gc3RhcnRUb0VuZERpc3RhbmNlIC8gKDIuMGYgKiBjb3NUaGV0YSArIDEu
MGYpOwotICAgIGF1dG8gaW5pdGlhbE9mZnNldEFzU2l6ZSA9IHRvRmxvYXRTaXplKG1faW5pdGlh
bFNjcm9sbE9mZnNldCk7Ci0gICAgRmxvYXRTaXplIGNvbnRyb2xWZWN0b3IxID0gaW5pdGlhbE9m
ZnNldEFzU2l6ZSArIHNpZGVMZW5ndGggKiBtX2luaXRpYWxEZWx0YSAvIGluaXRpYWxEZWx0YU1h
Z25pdHVkZTsKLSAgICBGbG9hdFNpemUgY29udHJvbFZlY3RvcjIgPSBjb250cm9sVmVjdG9yMSAr
IChzaWRlTGVuZ3RoICogc3RhcnRUb0VuZFZlY3RvciAvIHN0YXJ0VG9FbmREaXN0YW5jZSk7Ci0g
ICAgbV9zbmFwQW5pbWF0aW9uQ3VydmVDb2VmZmljaWVudHNbMF0gPSBpbml0aWFsT2Zmc2V0QXNT
aXplOwotICAgIG1fc25hcEFuaW1hdGlvbkN1cnZlQ29lZmZpY2llbnRzWzFdID0gMyAqIChjb250
cm9sVmVjdG9yMSAtIGluaXRpYWxPZmZzZXRBc1NpemUpOwotICAgIG1fc25hcEFuaW1hdGlvbkN1
cnZlQ29lZmZpY2llbnRzWzJdID0gMyAqIChpbml0aWFsT2Zmc2V0QXNTaXplIC0gMiAqIGNvbnRy
b2xWZWN0b3IxICsgY29udHJvbFZlY3RvcjIpOwotICAgIG1fc25hcEFuaW1hdGlvbkN1cnZlQ29l
ZmZpY2llbnRzWzNdID0gMyAqIChjb250cm9sVmVjdG9yMSAtIGNvbnRyb2xWZWN0b3IyKSAtIGlu
aXRpYWxPZmZzZXRBc1NpemUgKyB0b0Zsb2F0U2l6ZShyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkp
OwotICAgIG1fZm9yY2VMaW5lYXJBbmltYXRpb25DdXJ2ZSA9IGZhbHNlOwotfQotCi1zdGF0aWMg
Y29uc3QgZmxvYXQgZnJhbWVzUGVyU2Vjb25kID0gNjAuMGY7Ci0KLS8qKgotICogQ29tcHV0ZXMg
YW5kIHNldHMgcGFyYW1ldGVycyByZXF1aXJlZCBmb3IgdHJhY2tpbmcgdGhlIHByb2dyZXNzIG9m
IGEgc25hcCBhbmltYXRpb24gY3VydmUsIGludGVycG9sYXRlZAotICogb3IgbGluZWFyLiBUaGUg
cHJvZ3Jlc3MgY3VydmUgcyh0KSBtYXBzIHRpbWUgdCB0byBwcm9ncmVzcyBzOyBib3RoIHZhcmlh
YmxlcyBhcmUgaW4gdGhlIGludGVydmFsIFswLCAxXS4KLSAqIFRoZSB0aW1lIGlucHV0IHQgaXMg
MCB3aGVuIHRoZSBjdXJyZW50IHRpbWUgaXMgdGhlIHN0YXJ0IG9mIHRoZSBhbmltYXRpb24sIHQg
PSAwLCBhbmQgMSB3aGVuIHRoZSBjdXJyZW50Ci0gKiB0aW1lIGlzIGF0IG9yIGFmdGVyIHRoZSBl
bmQgb2YgdGhlIGFuaW1hdGlvbiwgdCA9IG1fc2Nyb2xsU25hcEFuaW1hdGlvbkR1cmF0aW9uLgot
ICoKLSAqIEluIHRoaXMgZXhwb25lbnRpYWwgcHJvZ3Jlc3MgbW9kZWwsIHModCkgPSBBIC0gQSAq
IGJeKC1rdCksIHdoZXJlIGsgPSA2MFQgaXMgdGhlIG51bWJlciBvZiBmcmFtZXMgaW4gdGhlCi0g
KiBhbmltYXRpb24gKGFzc3VtaW5nIDYwIEZQUyBhbmQgYW4gYW5pbWF0aW9uIGR1cmF0aW9uIG9m
IFQpIGFuZCBBLCBiIGFyZSByZWFscyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4KLSAqIEFs
c28gbm90ZSB0aGF0IHdlIGFyZSBnaXZlbiB0aGUgaW5pdGlhbCBwcm9ncmVzcywgYSB2YWx1ZSBp
bmRpY2F0aW5nIHRoZSBwb3J0aW9uIG9mIHRoZSBjdXJ2ZSB3aGljaCBvdXIKLSAqIGluaXRpYWwg
c2Nyb2xsIGRlbHRhIHRha2VzIHVzLiBUaGlzIGlzIGltcG9ydGFudCB3aGVuIG1hdGNoaW5nIHRo
ZSBpbml0aWFsIHNwZWVkIG9mIHRoZSBhbmltYXRpb24gdG8gdGhlCi0gKiB1c2VyJ3MgaW5pdGlh
bCBtb21lbnR1bSBzY3JvbGxpbmcgc3BlZWQuIExldCB0aGlzIGluaXRpYWwgcHJvZ3Jlc3MgYW1v
dW50IGVxdWFsIHZfMC4gSSBjbGFtcCB0aGlzIGluaXRpYWwKLSAqIHByb2dyZXNzIGFtb3VudCB0
byBhIG1pbmltdW0gb3IgbWF4aW11bSB2YWx1ZS4KLSAqCi0gKiBBIGlzIHJlZmVycmVkIHRvIGFz
IHRoZSBjdXJ2ZSBtYWduaXR1ZGUsIHdoaWxlIGIgaXMgcmVmZXJyZWQgdG8gYXMgdGhlIGRlY2F5
IGZhY3Rvci4gV2Ugc29sdmUgZm9yIEEgYW5kIGIsCi0gKiBrZWVwaW5nIHRoZSBmb2xsb3dpbmcg
Y29uc3RyYWludHMgaW4gbWluZDoKLSAqICAgICAxLiBzKDApID0gMAotICogICAgIDIuIHMoMSkg
PSAxCi0gKiAgICAgMy4gcygxL2spID0gdl8wCi0gKgotICogRmlyc3QsIG9ic2VydmUgdGhhdCBz
KDApID0gMCBob2xkcyBmb3IgYXBwcm9wcmlhdGUgdmFsdWVzIG9mIEEsIGIuIFNvbHZpbmcgZm9y
IHRoZSByZW1haW5pbmcgY29uc3RyYWludHMKLSAqIHlpZWxkcyBhIG5vbmxpbmVhciBzeXN0ZW0g
b2YgdHdvIGVxdWF0aW9ucy4gSW4gbGlldSBvZiBhIHB1cmVseSBhbmFseXRpY2FsIHNvbHV0aW9u
LCBhbiBhbHRlcm5hdGluZwotICogb3B0aW1pemF0aW9uIHNjaGVtZSBpcyB1c2VkIHRvIGFwcHJv
eGltYXRlIEEgYW5kIGIuIFRoaXMgdGVjaG5pcXVlIGNvbnZlcmdlcyBxdWlja2x5ICh3aXRoaW4g
NSBpdGVyYXRpb25zCi0gKiBvciBzbykgZm9yIGFwcHJvcHJpYXRlIHZhbHVlcyBvZiB2XzAuIFRo
ZSBvcHRpbWl6YXRpb24gdGVybWluYXRlcyBlYXJseSB3aGVuIHRoZSBkZWNheSBmYWN0b3IgY2hh
bmdlcyBieQotICogbGVzcyB0aGFuIGEgdGhyZXNob2xkIGJldHdlZW4gb25lIGl0ZXJhdGlvbiBh
bmQgdGhlIG5leHQuCi0gKi8KLXZvaWQgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6
OmluaXRpYWxpemVTbmFwUHJvZ3Jlc3NDdXJ2ZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IGludCBt
YXhOdW1TY3JvbGxTbmFwUGFyYW1ldGVyRXN0aW1hdGlvbkl0ZXJhdGlvbnMgPSAxMDsKLSAgICBz
dGF0aWMgY29uc3QgZmxvYXQgc2Nyb2xsU25hcERlY2F5RmFjdG9yQ29udmVyZ2VuY2VUaHJlc2hv
bGQgPSAwLjAwMTsKLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgaW5pdGlhbFNjcm9sbFNuYXBDdXJ2
ZU1hZ25pdHVkZSA9IDEuMTsKLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWluU2Nyb2xsU25hcElu
aXRpYWxQcm9ncmVzcyA9IDAuMTsKLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWF4U2Nyb2xsU25h
cEluaXRpYWxQcm9ncmVzcyA9IDAuNTsKLQotICAgIEZsb2F0U2l6ZSBhbGlnbm1lbnRWZWN0b3Ig
PSBtX2luaXRpYWxEZWx0YSAqIChyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgLSBtX2luaXRpYWxT
Y3JvbGxPZmZzZXQpOwotICAgIGZsb2F0IGluaXRpYWxQcm9ncmVzczsKLSAgICBpZiAoYWxpZ25t
ZW50VmVjdG9yLndpZHRoKCkgKyBhbGlnbm1lbnRWZWN0b3IuaGVpZ2h0KCkgPiAwKQotICAgICAg
ICBpbml0aWFsUHJvZ3Jlc3MgPSBjbGFtcFRvKG1faW5pdGlhbERlbHRhLmRpYWdvbmFsTGVuZ3Ro
KCkgLyAocmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpIC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0KS5k
aWFnb25hbExlbmd0aCgpLCBtaW5TY3JvbGxTbmFwSW5pdGlhbFByb2dyZXNzLCBtYXhTY3JvbGxT
bmFwSW5pdGlhbFByb2dyZXNzKTsKLSAgICBlbHNlCi0gICAgICAgIGluaXRpYWxQcm9ncmVzcyA9
IG1pblNjcm9sbFNuYXBJbml0aWFsUHJvZ3Jlc3M7Ci0KLSAgICBmbG9hdCBwcmV2aW91c0RlY2F5
RmFjdG9yID0gMS4wZjsKLSAgICBtX3NuYXBBbmltYXRpb25DdXJ2ZU1hZ25pdHVkZSA9IGluaXRp
YWxTY3JvbGxTbmFwQ3VydmVNYWduaXR1ZGU7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhO
dW1TY3JvbGxTbmFwUGFyYW1ldGVyRXN0aW1hdGlvbkl0ZXJhdGlvbnM7ICsraSkgewotICAgICAg
ICBtX3NuYXBBbmltYXRpb25EZWNheUZhY3RvciA9IG1fc25hcEFuaW1hdGlvbkN1cnZlTWFnbml0
dWRlIC8gKG1fc25hcEFuaW1hdGlvbkN1cnZlTWFnbml0dWRlIC0gaW5pdGlhbFByb2dyZXNzKTsK
LSAgICAgICAgbV9zbmFwQW5pbWF0aW9uQ3VydmVNYWduaXR1ZGUgPSAxLjBmIC8gKDEuMGYgLSBz
dGQ6OnBvdyhtX3NuYXBBbmltYXRpb25EZWNheUZhY3RvciwgLWZyYW1lc1BlclNlY29uZCAqIHNj
cm9sbFNuYXBBbmltYXRpb25EdXJhdGlvbi52YWx1ZSgpKSk7Ci0gICAgICAgIGlmIChzdGQ6OmFi
cyhtX3NuYXBBbmltYXRpb25EZWNheUZhY3RvciAtIHByZXZpb3VzRGVjYXlGYWN0b3IpIDwgc2Ny
b2xsU25hcERlY2F5RmFjdG9yQ29udmVyZ2VuY2VUaHJlc2hvbGQpCi0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBwcmV2aW91c0RlY2F5RmFjdG9yID0gbV9zbmFwQW5pbWF0aW9uRGVjYXlG
YWN0b3I7Ci0gICAgfQotfQotCi1mbG9hdCBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6YW5pbWF0aW9uUHJvZ3Jlc3NBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMgZWxhcHNlZFRpbWUp
IGNvbnN0Ci17Ci0gICAgZmxvYXQgdGltZVByb2dyZXNzID0gY2xhbXBUbzxmbG9hdD4oZWxhcHNl
ZFRpbWUgLyBzY3JvbGxTbmFwQW5pbWF0aW9uRHVyYXRpb24sIDAsIDEpOwotICAgIHJldHVybiBz
dGQ6Om1pbigxLjAsIG1fc25hcEFuaW1hdGlvbkN1cnZlTWFnbml0dWRlICogKDEuMCAtIHN0ZDo6
cG93KG1fc25hcEFuaW1hdGlvbkRlY2F5RmFjdG9yLCAtZnJhbWVzUGVyU2Vjb25kICogc2Nyb2xs
U25hcEFuaW1hdGlvbkR1cmF0aW9uLnZhbHVlKCkgKiB0aW1lUHJvZ3Jlc3MpKSk7Ci19Ci0KLX07
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0Yzc1MTMzZmY4MWVjNDFjNDdlNDliMDg1NTg4YjgwYTNmM2RlMmUx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCi0jaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIK
LSNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IEZsb2F0UG9pbnQ7Ci1jbGFzcyBGbG9hdFNpemU7Ci0KLWNsYXNzIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvciB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1By
ZWRpY3Rpb25FbmFibGVkKGJvb2wpOwotCi0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5p
dGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbFZlbG9jaXR5KTsKLQotICAgIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihj
b25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6
ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0
aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKLSAgICB2aXJ0dWFs
IH5TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFs
IEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzKSA9IDA7Ci0g
ICAgdmlydHVhbCBTZWNvbmRzIGFuaW1hdGlvbkR1cmF0aW9uKCkgPSAwOwotICAgIHZpcnR1YWwg
RmxvYXRQb2ludCBwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpOwotICAgIHZvaWQgc2V0UmV0
YXJnZXRlZFNjcm9sbE9mZnNldChjb25zdCBGbG9hdFBvaW50Jik7Ci0KLXByb3RlY3RlZDoKLSAg
ICBjb25zdCBGbG9hdFBvaW50JiByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0LnZhbHVlKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
cmV0YXJnZXRlZFNjcm9sbE9mZnNldERpZENoYW5nZSgpIHsgfQotCi0gICAgRmxvYXRTaXplIG1f
aW5pdGlhbERlbHRhOwotICAgIEZsb2F0U2l6ZSBtX2luaXRpYWxWZWxvY2l0eTsKLSAgICBGbG9h
dFBvaW50IG1faW5pdGlhbFNjcm9sbE9mZnNldDsKLSAgICBGbG9hdFNpemUgbV92aWV3cG9ydFNp
emU7Ci0gICAgRmxvYXRTaXplIG1fY29udGVudFNpemU7Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjpv
cHRpb25hbDxGbG9hdFBvaW50PiBtX3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQ7Ci19OwotCi1jbGFz
cyBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBmaW5hbCA6IHB1YmxpYyBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3IgewotcHVibGljOgotICAgIEJhc2ljU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNp
emUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkp
OwotCi1wcml2YXRlOgotICAgIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGlt
ZShTZWNvbmRzKSBmaW5hbDsKLSAgICBTZWNvbmRzIGFuaW1hdGlvbkR1cmF0aW9uKCkgZmluYWw7
Ci0gICAgdm9pZCBpbml0aWFsaXplSW50ZXJwb2xhdGlvbkNvZWZmaWNpZW50c0lmTmVjZXNzYXJ5
KCk7Ci0gICAgdm9pZCBpbml0aWFsaXplU25hcFByb2dyZXNzQ3VydmUoKTsKLSAgICBmbG9hdCBh
bmltYXRpb25Qcm9ncmVzc0FmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcykgY29uc3Q7Ci0gICAgRmxv
YXRQb2ludCBsaW5lYXJseUludGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jl
c3MpOwotICAgIEZsb2F0UG9pbnQgY3ViaWNhbGx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVz
cyhmbG9hdCBwcm9ncmVzcykgY29uc3Q7Ci0KLSAgICBmbG9hdCBtX3NuYXBBbmltYXRpb25DdXJ2
ZU1hZ25pdHVkZSB7IDAgfTsKLSAgICBmbG9hdCBtX3NuYXBBbmltYXRpb25EZWNheUZhY3RvciB7
IDAgfTsKLSAgICBGbG9hdFNpemUgbV9zbmFwQW5pbWF0aW9uQ3VydmVDb2VmZmljaWVudHNbNF0g
eyB9OwotICAgIGJvb2wgbV9mb3JjZUxpbmVhckFuaW1hdGlvbkN1cnZlIHsgZmFsc2UgfTsKLSAg
ICBib29sIG1fbW9tZW50dW1DYWxjdWxhdG9yUmVxdWlyZXNJbml0aWFsaXphdGlvbiB7IHRydWUg
fTsKLSAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0U2l6ZT4gbV9wcmVkaWN0ZWREZXN0aW5hdGlvbk9m
ZnNldDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3JNYWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I1N2Y1MzViZTY2
MWIyMTM3OTRjNzkyYWY2NzQ1YTNkYTIwYjJiNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuaCIKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLUBjbGFzcyBf
TlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjIGZpbmFsIDogcHVibGljIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvciB7Ci1wdWJsaWM6Ci0gICAgU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yTWFjKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNp
emUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkp
OwotCi1wcml2YXRlOgotICAgIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGlt
ZShTZWNvbmRzKSBmaW5hbDsKLSAgICBTZWNvbmRzIGFuaW1hdGlvbkR1cmF0aW9uKCkgZmluYWw7
Ci0gICAgRmxvYXRQb2ludCBwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpIGZpbmFsOwotICAg
IHZvaWQgcmV0YXJnZXRlZFNjcm9sbE9mZnNldERpZENoYW5nZSgpIGZpbmFsOwotCi0gICAgX05T
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yICplbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3Vs
YXRvcigpOwotICAgIGJvb2wgcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZygpOwotCi0gICAgUmV0
YWluUHRyPF9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gbV9wbGF0Zm9ybU1vbWVudHVt
Q2FsY3VsYXRvcjsKLSAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fcmVxdWlyZXNNb21lbnR1bVNj
cm9sbGluZzsKLSAgICBGbG9hdFBvaW50IG1faW5pdGlhbERlc3RpbmF0aW9uT3JpZ2luOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkYzIxZWE2NTU2NWY3ZTU5NDli
MWYyNDVmOGMzMDYxOWVmOTg2YWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvck1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMuaCIKLQotI2lmIFBMQVRGT1JNKE1BQykKLQotI2ltcG9ydCA8cGFsL3Nw
aS9tYWMvTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JTUEkuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1zdGF0aWMgYm9vbCBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1By
ZWRpY3Rpb24gPSB0cnVlOwotCi1zdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNp
emUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxv
YXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQotewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250ZW50U2l6
ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwotfQotCi12
b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9s
bGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBnRW5hYmxlUGxhdGZv
cm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24gPSBlbmFibGVkOwotfQotCi1TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWM6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYyhjb25z
dCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwg
Y29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
RGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQotICAgIDogU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yKHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZz
ZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KQotewotfQotCi1GbG9hdFBvaW50IFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6c2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGlt
ZShTZWNvbmRzIGVsYXBzZWRUaW1lKQotewotICAgIGlmICghcmVxdWlyZXNNb21lbnR1bVNjcm9s
bGluZygpKQotICAgICAgICByZXR1cm4gcmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpOwotCi0gICAg
cmV0dXJuIFtlbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpIHBvc2l0aW9uQWZ0ZXJE
dXJhdGlvbjplbGFwc2VkVGltZS52YWx1ZSgpXTsKLX0KLQotRmxvYXRQb2ludCBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWM6OnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCkKLXsKLSAg
ICBpZiAoIWdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbikKLSAgICAg
ICAgcmV0dXJuIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6cHJlZGljdGVkRGVzdGluYXRp
b25PZmZzZXQoKTsKLQotICAgIGVuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCk7Ci0g
ICAgcmV0dXJuIHsgbV9pbml0aWFsRGVzdGluYXRpb25PcmlnaW4ueCgpLCBtX2luaXRpYWxEZXN0
aW5hdGlvbk9yaWdpbi55KCkgfTsKLX0KLQotdm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3JNYWM6OnJldGFyZ2V0ZWRTY3JvbGxPZmZzZXREaWRDaGFuZ2UoKQotewotICAgIF9OU1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvciAqY2FsY3VsYXRvciA9IGVuc3VyZVBsYXRmb3JtTW9tZW50
dW1DYWxjdWxhdG9yKCk7Ci0gICAgY2FsY3VsYXRvci5kZXN0aW5hdGlvbk9yaWdpbiA9IHJldGFy
Z2V0ZWRTY3JvbGxPZmZzZXQoKTsKLSAgICBbY2FsY3VsYXRvciBjYWxjdWxhdGVUb1JlYWNoRGVz
dGluYXRpb25dOwotfQotCi1TZWNvbmRzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6
YW5pbWF0aW9uRHVyYXRpb24oKQotewotICAgIGlmICghcmVxdWlyZXNNb21lbnR1bVNjcm9sbGlu
ZygpKQotICAgICAgICByZXR1cm4gMF9zOwotCi0gICAgcmV0dXJuIFNlY29uZHMoW2Vuc3VyZVBs
YXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCkgZHVyYXRpb25VbnRpbFN0b3BdKTsKLX0KLQotYm9v
bCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OnJlcXVpcmVzTW9tZW50dW1TY3JvbGxp
bmcoKQotewotICAgIGlmIChtX3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcgPT0gc3RkOjpudWxs
b3B0KQotICAgICAgICBtX3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcgPSBtX2luaXRpYWxTY3Jv
bGxPZmZzZXQgIT0gcmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpIHx8IG1faW5pdGlhbFZlbG9jaXR5
LmFyZWEoKTsKLSAgICByZXR1cm4gbV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nLnZhbHVlKCk7
Ci19Ci0KLV9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciAqU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yTWFjOjplbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpCi17Ci0gICAg
aWYgKG1fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IpCi0gICAgICAgIHJldHVybiBtX3BsYXRm
b3JtTW9tZW50dW1DYWxjdWxhdG9yLmdldCgpOwotCi0gICAgTlNQb2ludCBvcmlnaW4gPSBtX2lu
aXRpYWxTY3JvbGxPZmZzZXQ7Ci0gICAgTlNSZWN0IGNvbnRlbnRGcmFtZSA9IE5TTWFrZVJlY3Qo
MCwgMCwgbV9jb250ZW50U2l6ZS53aWR0aCgpLCBtX2NvbnRlbnRTaXplLmhlaWdodCgpKTsKLSAg
ICBOU1BvaW50IHZlbG9jaXR5ID0gTlNNYWtlUG9pbnQobV9pbml0aWFsVmVsb2NpdHkud2lkdGgo
KSwgbV9pbml0aWFsVmVsb2NpdHkuaGVpZ2h0KCkpOwotICAgIG1fcGxhdGZvcm1Nb21lbnR1bUNh
bGN1bGF0b3IgPSBhZG9wdE5TKFtbX05TU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIGFsbG9j
XSBpbml0V2l0aEluaXRpYWxPcmlnaW46b3JpZ2luIHZlbG9jaXR5OnZlbG9jaXR5IGRvY3VtZW50
RnJhbWU6Y29udGVudEZyYW1lIGNvbnN0cmFpbmVkQ2xpcHBpbmdPcmlnaW46TlNaZXJvUG9pbnQg
Y2xpcHBpbmdTaXplOm1fdmlld3BvcnRTaXplIHRvbGVyYW5jZTpOU01ha2VTaXplKDEsIDEpXSk7
Ci0gICAgbV9pbml0aWFsRGVzdGluYXRpb25PcmlnaW4gPSBbbV9wbGF0Zm9ybU1vbWVudHVtQ2Fs
Y3VsYXRvciBkZXN0aW5hdGlvbk9yaWdpbl07Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1Nb21lbnR1
bUNhbGN1bGF0b3IuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMDY4YzM2NTBhMDM4
ZGM4MTdiYTlkZTMzMjA5M2I0Yzc1ODYyYTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwCkBAIC0wLDAgKzEs
MjM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIgorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2lu
Y2x1ZGUgIkZsb2F0U2l6ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBjb25z
dCBTZWNvbmRzIHNjcm9sbFNuYXBBbmltYXRpb25EdXJhdGlvbiA9IDFfczsKK3N0YXRpYyBpbmxp
bmUgZmxvYXQgcHJvamVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZShmbG9hdCBpbml0aWFsV2hl
ZWxEZWx0YSkKK3sKKyAgICAvLyBPbiBtYWNPUyAxMC4xMCBhbmQgZWFybGllciwgd2UgZG9uJ3Qg
aGF2ZSBhIHBsYXRmb3JtIHNjcm9sbGluZyBtb21lbnR1bSBjYWxjdWxhdG9yLCBzbyB3ZSBpbnN0
ZWFkIGFwcHJveGltYXRlIHRoZSBzY3JvbGwgZGVzdGluYXRpb24KKyAgICAvLyBieSBtdWx0aXBs
eWluZyB0aGUgaW5pdGlhbCB3aGVlbCBkZWx0YSBieSBhIGNvbnN0YW50IGZhY3Rvci4gQnkgcnVu
bmluZyBhIGZldyBleHBlcmltZW50cyAoaS5lLiBsb2dnaW5nIHNjcm9sbCBkZXN0aW5hdGlvbiBh
bmQgaW5pdGlhbAorICAgIC8vIHdoZWVsIGRlbHRhIGZvciBtYW55IHNjcm9sbCBnZXN0dXJlcykg
d2UgZGV0ZXJtaW5lZCB0aGF0IHRoaXMgaXMgYSByZWFzb25hYmxlIHdheSB0byBhcHByb3hpbWF0
ZSB3aGVyZSBzY3JvbGxpbmcgd2lsbCB0YWtlIHVzIHdpdGhvdXQKKyAgICAvLyB1c2luZyBfTlNT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuCisgICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUg
aW5lcnRpYWxTY3JvbGxQcmVkaWN0aW9uRmFjdG9yID0gMTYuNzsKKyAgICByZXR1cm4gaW5lcnRp
YWxTY3JvbGxQcmVkaWN0aW9uRmFjdG9yICogaW5pdGlhbFdoZWVsRGVsdGE7Cit9CisKK1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0
IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBj
b25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxE
ZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCisgICAgOiBtX2luaXRpYWxE
ZWx0YShpbml0aWFsRGVsdGEpCisgICAgLCBtX2luaXRpYWxWZWxvY2l0eShpbml0aWFsVmVsb2Np
dHkpCisgICAgLCBtX2luaXRpYWxTY3JvbGxPZmZzZXQoaW5pdGlhbE9mZnNldCkKKyAgICAsIG1f
dmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSkKKyAgICAsIG1fY29udGVudFNpemUoY29udGVudFNp
emUpCit7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRSZXRhcmdl
dGVkU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0UG9pbnQmIHRhcmdldCkKK3sKKyAgICBpZiAobV9y
ZXRhcmdldGVkU2Nyb2xsT2Zmc2V0ICYmIG1fcmV0YXJnZXRlZFNjcm9sbE9mZnNldCA9PSB0YXJn
ZXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcmV0YXJnZXRlZFNjcm9sbE9mZnNldCA9IHRh
cmdldDsKKyAgICByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0RGlkQ2hhbmdlKCk7Cit9CisKK0Zsb2F0
UG9pbnQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9m
ZnNldCgpCit7CisgICAgZmxvYXQgaW5pdGlhbE9mZnNldFggPSBjbGFtcFRvPGZsb2F0PihtX2lu
aXRpYWxTY3JvbGxPZmZzZXQueCgpICsgcHJvamVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZSht
X2luaXRpYWxEZWx0YS53aWR0aCgpKSwgMCwgbV9jb250ZW50U2l6ZS53aWR0aCgpIC0gbV92aWV3
cG9ydFNpemUud2lkdGgoKSk7CisgICAgZmxvYXQgaW5pdGlhbE9mZnNldFkgPSBjbGFtcFRvPGZs
b2F0PihtX2luaXRpYWxTY3JvbGxPZmZzZXQueSgpICsgcHJvamVjdGVkSW5lcnRpYWxTY3JvbGxE
aXN0YW5jZShtX2luaXRpYWxEZWx0YS5oZWlnaHQoKSksIDAsIG1fY29udGVudFNpemUuaGVpZ2h0
KCkgLSBtX3ZpZXdwb3J0U2l6ZS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIHsgaW5pdGlhbE9mZnNl
dFgsIGluaXRpYWxPZmZzZXRZIH07Cit9CisKKyNpZiAhUExBVEZPUk0oTUFDKQorCitzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9j
aXR5KQoreworICAgIHJldHVybiBtYWtlVW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFs
RGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9v
bCkKK3sKK30KKworI2VuZGlmCisKK0Jhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpC
YXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5p
dGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbFZlbG9jaXR5KQorICAgIDogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKHZp
ZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5p
dGlhbFZlbG9jaXR5KQoreworfQorCitGbG9hdFBvaW50IEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpsaW5lYXJseUludGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQgcHJv
Z3Jlc3MpCit7CisgICAgcmV0dXJuIG1faW5pdGlhbFNjcm9sbE9mZnNldCArIHByb2dyZXNzICog
KHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCk7Cit9CisK
K0Zsb2F0UG9pbnQgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmN1YmljYWxseUlu
dGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpIGNvbnN0Cit7CisgICAg
QVNTRVJUKCFtX2ZvcmNlTGluZWFyQW5pbWF0aW9uQ3VydmUpOworICAgIEZsb2F0UG9pbnQgaW50
ZXJwb2xhdGVkUG9pbnQ7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgICAg
IGludGVycG9sYXRlZFBvaW50ICs9IHN0ZDo6cG93KHByb2dyZXNzLCBpKSAqIG1fc25hcEFuaW1h
dGlvbkN1cnZlQ29lZmZpY2llbnRzW2ldOworCisgICAgcmV0dXJuIGludGVycG9sYXRlZFBvaW50
OworfQorCitGbG9hdFBvaW50IEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzY3Jv
bGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMgZWxhcHNlZFRpbWUpCit7CisgICAgaWYg
KG1fbW9tZW50dW1DYWxjdWxhdG9yUmVxdWlyZXNJbml0aWFsaXphdGlvbikgeworICAgICAgICBp
bml0aWFsaXplU25hcFByb2dyZXNzQ3VydmUoKTsKKyAgICAgICAgaW5pdGlhbGl6ZUludGVycG9s
YXRpb25Db2VmZmljaWVudHNJZk5lY2Vzc2FyeSgpOworICAgICAgICBtX21vbWVudHVtQ2FsY3Vs
YXRvclJlcXVpcmVzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKKyAgICB9CisKKyAgICBmbG9hdCBw
cm9ncmVzcyA9IGFuaW1hdGlvblByb2dyZXNzQWZ0ZXJFbGFwc2VkVGltZShlbGFwc2VkVGltZSk7
CisgICAgcmV0dXJuIG1fZm9yY2VMaW5lYXJBbmltYXRpb25DdXJ2ZSA/IGxpbmVhcmx5SW50ZXJw
b2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhwcm9ncmVzcykgOiBjdWJpY2FsbHlJbnRlcnBvbGF0ZWRP
ZmZzZXRBdFByb2dyZXNzKHByb2dyZXNzKTsKK30KKworU2Vjb25kcyBCYXNpY1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcjo6YW5pbWF0aW9uRHVyYXRpb24oKQoreworICAgIHJldHVybiBzY3Jv
bGxTbmFwQW5pbWF0aW9uRHVyYXRpb247Cit9CisKKy8qKgorICogQ29tcHV0ZXMgYW5kIHNldHMg
Y29lZmZpY2llbnRzIHJlcXVpcmVkIGZvciBpbnRlcnBvbGF0ZWQgc25hcHBpbmcgd2hlbiBzY3Jv
bGxpbmcgaW4gMiBkaW1lbnNpb25zLCBnaXZlbgorICogaW5pdGlhbCBjb25kaXRpb25zICh0aGUg
aW5pdGlhbCBhbmQgdGFyZ2V0IHZlY3RvcnMsIGFsb25nIHdpdGggdGhlIGluaXRpYWwgd2hlZWwg
ZGVsdGEgYXMgYSB2ZWN0b3IpLiBUaGUKKyAqIHBhdGggaXMgYSBjdWJpYyBCZXppZXIgY3VydmUg
b2YgdGhlIGZvcm0gcChzKSA9IElOSVRJQUwgKyAoQ18xICogcykgKyAoQ18yICogc14yKSArIChD
XzMgKiBzXjMpIHdoZXJlIGVhY2gKKyAqIENfaSBpcyBhIDJEIHZlY3RvciBhbmQgSU5JVElBTCBp
cyB0aGUgdmVjdG9yIHJlcHJlc2VudGluZyB0aGUgaW5pdGlhbCBzY3JvbGwgb2Zmc2V0LiBzIGlz
IGEgcmVhbCBpbiB0aGUKKyAqIGludGVydmFsIFswLCAxXSBpbmRpY2F0aW5nIHRoZSAicHJvZ3Jl
c3MiIG9mIHRoZSBjdXJ2ZSAoaS5lLiBob3cgbXVjaCBvZiB0aGUgY3VydmUgaGFzIGJlZW4gdHJh
dmVsZWQpLgorICoKKyAqIFRoZSBjdXJ2ZSBoYXMgNCBjb250cm9sIHBvaW50cywgdGhlIGZpcnN0
IGFuZCBsYXN0IG9mIHdoaWNoIGFyZSB0aGUgaW5pdGlhbCBhbmQgdGFyZ2V0IHBvaW50cywgcmVz
cGVjdGl2ZWx5LgorICogVGhlIGRpc3RhbmNlcyBiZXR3ZWVuIGFkamFjZW50IGNvbnRyb2wgcG9p
bnRzIGFyZSBjb25zdHJhaW5lZCB0byBiZSB0aGUgc2FtZSwgbWFraW5nIHRoZSBjb252ZXggaHVs
bCBhbgorICogaXNvc2NlbGVzIHRyYXBlem9pZCB3aXRoIDMgc2lkZXMgb2YgZXF1YWwgbGVuZ3Ro
LiBBZGRpdGlvbmFsbHksIHRoZSB2ZWN0b3IgZnJvbSB0aGUgZmlyc3QgY29udHJvbCBwb2ludCB0
bworICogdGhlIHNlY29uZCBwb2ludHMgaW4gdGhlIHNhbWUgZGlyZWN0aW9uIGFzIHRoZSBpbml0
aWFsIHNjcm9sbCBkZWx0YS4gVGhlc2UgY29uc3RyYWludHMgZW5zdXJlIHR3byBwcm9wZXJ0aWVz
OgorICogICAgIDEuIFRoZSBkaXJlY3Rpb24gb2YgdGhlIHNuYXAgYW5pbWF0aW9uIGF0IHM9MCB3
aWxsIGJlIGVxdWFsIHRvIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGluaXRpYWwgc2Nyb2xsIGRlbHRh
LgorICogICAgIDIuIFBvaW50cyBhdCByZWd1bGFyIGludGVydmFscyBvZiBzIHdpbGwgYmUgZXZl
bmx5IHNwcmVhZCBvdXQuCisgKgorICogSWYgdGhlIGluaXRpYWwgc2Nyb2xsIGRpcmVjdGlvbiBp
cyBvcnRob2dvbmFsIHRvIG9yIHBvaW50cyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIGFzIHRo
ZSB2ZWN0b3IgZnJvbSB0aGUKKyAqIGluaXRpYWwgcG9pbnQgdG8gdGhlIHRhcmdldCBwb2ludCwg
aW5pdGlhbGl6YXRpb24gcmV0dXJucyBlYXJseSBhbmQgc2V0cyB0aGUgY3VydmUgdG8gYW5pbWF0
ZSBkaXJlY3RseSB0byB0aGUKKyAqIHNuYXAgcG9pbnQgd2l0aG91dCBjdWJpYyBpbnRlcnBvbGF0
aW9uLgorICoKKyAqIEZJWE1FOiBUaGlzIHNob3VsZCBiZSByZWZhY3RvcmVkIHRvIHVzZSBVbml0
QmV6aWVyLgorICovCit2b2lkIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjppbml0
aWFsaXplSW50ZXJwb2xhdGlvbkNvZWZmaWNpZW50c0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBtX2Zv
cmNlTGluZWFyQW5pbWF0aW9uQ3VydmUgPSB0cnVlOworICAgIGZsb2F0IGluaXRpYWxEZWx0YU1h
Z25pdHVkZSA9IG1faW5pdGlhbERlbHRhLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgaWYgKGluaXRp
YWxEZWx0YU1hZ25pdHVkZSA8IDEpIHsKKyAgICAgICAgLy8gVGhlIGluaXRpYWwgd2hlZWwgZGVs
dGEgaXMgc28gaW5zaWduaWZpY2FudCB0aGF0IHdlJ3JlIGJldHRlciBvZmYgY29uc2lkZXJpbmcg
dGhpcyB0byBoYXZlIHRoZSBzYW1lIGVmZmVjdCBhcyBmaW5pc2hpbmcgYSBzY3JvbGwgZ2VzdHVy
ZSB3aXRoIG5vIG1vbWVudHVtLgorICAgICAgICAvLyBUaHVzLCBjdWJpYyBpbnRlcnBvbGF0aW9u
IGlzbid0IG5lZWRlZCBoZXJlLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRmxvYXRT
aXplIHN0YXJ0VG9FbmRWZWN0b3IgPSByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgLSBtX2luaXRp
YWxTY3JvbGxPZmZzZXQ7CisgICAgZmxvYXQgc3RhcnRUb0VuZERpc3RhbmNlID0gc3RhcnRUb0Vu
ZFZlY3Rvci5kaWFnb25hbExlbmd0aCgpOworICAgIGlmICghc3RhcnRUb0VuZERpc3RhbmNlKSB7
CisgICAgICAgIC8vIFRoZSBzdGFydCBhbmQgZW5kIHBvc2l0aW9ucyBhcmUgdGhlIHNhbWUsIHNv
IHdlIHNob3VsZG4ndCB0cnkgdG8gaW50ZXJwb2xhdGUgYSBwYXRoLgorICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgZmxvYXQgY29zVGhldGEgPSAobV9pbml0aWFsRGVsdGEud2lkdGgoKSAq
IHN0YXJ0VG9FbmRWZWN0b3Iud2lkdGgoKSArIG1faW5pdGlhbERlbHRhLmhlaWdodCgpICogc3Rh
cnRUb0VuZFZlY3Rvci5oZWlnaHQoKSkgLyAoaW5pdGlhbERlbHRhTWFnbml0dWRlICogc3RhcnRU
b0VuZERpc3RhbmNlKTsKKyAgICBpZiAoY29zVGhldGEgPD0gMCkgeworICAgICAgICAvLyBJdCdz
IHBvc3NpYmxlIHRoYXQgdGhlIHVzZXIgaXMgbm90IHNjcm9sbGluZyB0b3dhcmRzIHRoZSB0YXJn
ZXQgc25hcCBvZmZzZXQgKGZvciBpbnN0YW5jZSwgc2Nyb2xsaW5nIGFnYWluc3QgYSBjb3JuZXIg
d2hlbiAyRCBzY3JvbGwgc25hcHBpbmcpLgorICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIGp1c3Qg
bGV0IHRoZSBzY3JvbGwgb2Zmc2V0IGFuaW1hdGUgdG8gdGhlIHRhcmdldCB3aXRob3V0IGNvbXB1
dGluZyBhIGN1YmljIGN1cnZlLgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZmxvYXQg
c2lkZUxlbmd0aCA9IHN0YXJ0VG9FbmREaXN0YW5jZSAvICgyLjBmICogY29zVGhldGEgKyAxLjBm
KTsKKyAgICBhdXRvIGluaXRpYWxPZmZzZXRBc1NpemUgPSB0b0Zsb2F0U2l6ZShtX2luaXRpYWxT
Y3JvbGxPZmZzZXQpOworICAgIEZsb2F0U2l6ZSBjb250cm9sVmVjdG9yMSA9IGluaXRpYWxPZmZz
ZXRBc1NpemUgKyBzaWRlTGVuZ3RoICogbV9pbml0aWFsRGVsdGEgLyBpbml0aWFsRGVsdGFNYWdu
aXR1ZGU7CisgICAgRmxvYXRTaXplIGNvbnRyb2xWZWN0b3IyID0gY29udHJvbFZlY3RvcjEgKyAo
c2lkZUxlbmd0aCAqIHN0YXJ0VG9FbmRWZWN0b3IgLyBzdGFydFRvRW5kRGlzdGFuY2UpOworICAg
IG1fc25hcEFuaW1hdGlvbkN1cnZlQ29lZmZpY2llbnRzWzBdID0gaW5pdGlhbE9mZnNldEFzU2l6
ZTsKKyAgICBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZmaWNpZW50c1sxXSA9IDMgKiAoY29udHJv
bFZlY3RvcjEgLSBpbml0aWFsT2Zmc2V0QXNTaXplKTsKKyAgICBtX3NuYXBBbmltYXRpb25DdXJ2
ZUNvZWZmaWNpZW50c1syXSA9IDMgKiAoaW5pdGlhbE9mZnNldEFzU2l6ZSAtIDIgKiBjb250cm9s
VmVjdG9yMSArIGNvbnRyb2xWZWN0b3IyKTsKKyAgICBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZm
aWNpZW50c1szXSA9IDMgKiAoY29udHJvbFZlY3RvcjEgLSBjb250cm9sVmVjdG9yMikgLSBpbml0
aWFsT2Zmc2V0QXNTaXplICsgdG9GbG9hdFNpemUocmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpKTsK
KyAgICBtX2ZvcmNlTGluZWFyQW5pbWF0aW9uQ3VydmUgPSBmYWxzZTsKK30KKworc3RhdGljIGNv
bnN0IGZsb2F0IGZyYW1lc1BlclNlY29uZCA9IDYwLjBmOworCisvKioKKyAqIENvbXB1dGVzIGFu
ZCBzZXRzIHBhcmFtZXRlcnMgcmVxdWlyZWQgZm9yIHRyYWNraW5nIHRoZSBwcm9ncmVzcyBvZiBh
IHNuYXAgYW5pbWF0aW9uIGN1cnZlLCBpbnRlcnBvbGF0ZWQKKyAqIG9yIGxpbmVhci4gVGhlIHBy
b2dyZXNzIGN1cnZlIHModCkgbWFwcyB0aW1lIHQgdG8gcHJvZ3Jlc3MgczsgYm90aCB2YXJpYWJs
ZXMgYXJlIGluIHRoZSBpbnRlcnZhbCBbMCwgMV0uCisgKiBUaGUgdGltZSBpbnB1dCB0IGlzIDAg
d2hlbiB0aGUgY3VycmVudCB0aW1lIGlzIHRoZSBzdGFydCBvZiB0aGUgYW5pbWF0aW9uLCB0ID0g
MCwgYW5kIDEgd2hlbiB0aGUgY3VycmVudAorICogdGltZSBpcyBhdCBvciBhZnRlciB0aGUgZW5k
IG9mIHRoZSBhbmltYXRpb24sIHQgPSBtX3Njcm9sbFNuYXBBbmltYXRpb25EdXJhdGlvbi4KKyAq
CisgKiBJbiB0aGlzIGV4cG9uZW50aWFsIHByb2dyZXNzIG1vZGVsLCBzKHQpID0gQSAtIEEgKiBi
Xigta3QpLCB3aGVyZSBrID0gNjBUIGlzIHRoZSBudW1iZXIgb2YgZnJhbWVzIGluIHRoZQorICog
YW5pbWF0aW9uIChhc3N1bWluZyA2MCBGUFMgYW5kIGFuIGFuaW1hdGlvbiBkdXJhdGlvbiBvZiBU
KSBhbmQgQSwgYiBhcmUgcmVhbHMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEuCisgKiBBbHNv
IG5vdGUgdGhhdCB3ZSBhcmUgZ2l2ZW4gdGhlIGluaXRpYWwgcHJvZ3Jlc3MsIGEgdmFsdWUgaW5k
aWNhdGluZyB0aGUgcG9ydGlvbiBvZiB0aGUgY3VydmUgd2hpY2ggb3VyCisgKiBpbml0aWFsIHNj
cm9sbCBkZWx0YSB0YWtlcyB1cy4gVGhpcyBpcyBpbXBvcnRhbnQgd2hlbiBtYXRjaGluZyB0aGUg
aW5pdGlhbCBzcGVlZCBvZiB0aGUgYW5pbWF0aW9uIHRvIHRoZQorICogdXNlcidzIGluaXRpYWwg
bW9tZW50dW0gc2Nyb2xsaW5nIHNwZWVkLiBMZXQgdGhpcyBpbml0aWFsIHByb2dyZXNzIGFtb3Vu
dCBlcXVhbCB2XzAuIEkgY2xhbXAgdGhpcyBpbml0aWFsCisgKiBwcm9ncmVzcyBhbW91bnQgdG8g
YSBtaW5pbXVtIG9yIG1heGltdW0gdmFsdWUuCisgKgorICogQSBpcyByZWZlcnJlZCB0byBhcyB0
aGUgY3VydmUgbWFnbml0dWRlLCB3aGlsZSBiIGlzIHJlZmVycmVkIHRvIGFzIHRoZSBkZWNheSBm
YWN0b3IuIFdlIHNvbHZlIGZvciBBIGFuZCBiLAorICoga2VlcGluZyB0aGUgZm9sbG93aW5nIGNv
bnN0cmFpbnRzIGluIG1pbmQ6CisgKiAgICAgMS4gcygwKSA9IDAKKyAqICAgICAyLiBzKDEpID0g
MQorICogICAgIDMuIHMoMS9rKSA9IHZfMAorICoKKyAqIEZpcnN0LCBvYnNlcnZlIHRoYXQgcygw
KSA9IDAgaG9sZHMgZm9yIGFwcHJvcHJpYXRlIHZhbHVlcyBvZiBBLCBiLiBTb2x2aW5nIGZvciB0
aGUgcmVtYWluaW5nIGNvbnN0cmFpbnRzCisgKiB5aWVsZHMgYSBub25saW5lYXIgc3lzdGVtIG9m
IHR3byBlcXVhdGlvbnMuIEluIGxpZXUgb2YgYSBwdXJlbHkgYW5hbHl0aWNhbCBzb2x1dGlvbiwg
YW4gYWx0ZXJuYXRpbmcKKyAqIG9wdGltaXphdGlvbiBzY2hlbWUgaXMgdXNlZCB0byBhcHByb3hp
bWF0ZSBBIGFuZCBiLiBUaGlzIHRlY2huaXF1ZSBjb252ZXJnZXMgcXVpY2tseSAod2l0aGluIDUg
aXRlcmF0aW9ucworICogb3Igc28pIGZvciBhcHByb3ByaWF0ZSB2YWx1ZXMgb2Ygdl8wLiBUaGUg
b3B0aW1pemF0aW9uIHRlcm1pbmF0ZXMgZWFybHkgd2hlbiB0aGUgZGVjYXkgZmFjdG9yIGNoYW5n
ZXMgYnkKKyAqIGxlc3MgdGhhbiBhIHRocmVzaG9sZCBiZXR3ZWVuIG9uZSBpdGVyYXRpb24gYW5k
IHRoZSBuZXh0LgorICovCit2b2lkIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpp
bml0aWFsaXplU25hcFByb2dyZXNzQ3VydmUoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4
TnVtU2Nyb2xsU25hcFBhcmFtZXRlckVzdGltYXRpb25JdGVyYXRpb25zID0gMTA7CisgICAgc3Rh
dGljIGNvbnN0IGZsb2F0IHNjcm9sbFNuYXBEZWNheUZhY3RvckNvbnZlcmdlbmNlVGhyZXNob2xk
ID0gMC4wMDE7CisgICAgc3RhdGljIGNvbnN0IGZsb2F0IGluaXRpYWxTY3JvbGxTbmFwQ3VydmVN
YWduaXR1ZGUgPSAxLjE7CisgICAgc3RhdGljIGNvbnN0IGZsb2F0IG1pblNjcm9sbFNuYXBJbml0
aWFsUHJvZ3Jlc3MgPSAwLjE7CisgICAgc3RhdGljIGNvbnN0IGZsb2F0IG1heFNjcm9sbFNuYXBJ
bml0aWFsUHJvZ3Jlc3MgPSAwLjU7CisKKyAgICBGbG9hdFNpemUgYWxpZ25tZW50VmVjdG9yID0g
bV9pbml0aWFsRGVsdGEgKiAocmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpIC0gbV9pbml0aWFsU2Ny
b2xsT2Zmc2V0KTsKKyAgICBmbG9hdCBpbml0aWFsUHJvZ3Jlc3M7CisgICAgaWYgKGFsaWdubWVu
dFZlY3Rvci53aWR0aCgpICsgYWxpZ25tZW50VmVjdG9yLmhlaWdodCgpID4gMCkKKyAgICAgICAg
aW5pdGlhbFByb2dyZXNzID0gY2xhbXBUbyhtX2luaXRpYWxEZWx0YS5kaWFnb25hbExlbmd0aCgp
IC8gKHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCkuZGlh
Z29uYWxMZW5ndGgoKSwgbWluU2Nyb2xsU25hcEluaXRpYWxQcm9ncmVzcywgbWF4U2Nyb2xsU25h
cEluaXRpYWxQcm9ncmVzcyk7CisgICAgZWxzZQorICAgICAgICBpbml0aWFsUHJvZ3Jlc3MgPSBt
aW5TY3JvbGxTbmFwSW5pdGlhbFByb2dyZXNzOworCisgICAgZmxvYXQgcHJldmlvdXNEZWNheUZh
Y3RvciA9IDEuMGY7CisgICAgbV9zbmFwQW5pbWF0aW9uQ3VydmVNYWduaXR1ZGUgPSBpbml0aWFs
U2Nyb2xsU25hcEN1cnZlTWFnbml0dWRlOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4TnVt
U2Nyb2xsU25hcFBhcmFtZXRlckVzdGltYXRpb25JdGVyYXRpb25zOyArK2kpIHsKKyAgICAgICAg
bV9zbmFwQW5pbWF0aW9uRGVjYXlGYWN0b3IgPSBtX3NuYXBBbmltYXRpb25DdXJ2ZU1hZ25pdHVk
ZSAvIChtX3NuYXBBbmltYXRpb25DdXJ2ZU1hZ25pdHVkZSAtIGluaXRpYWxQcm9ncmVzcyk7Cisg
ICAgICAgIG1fc25hcEFuaW1hdGlvbkN1cnZlTWFnbml0dWRlID0gMS4wZiAvICgxLjBmIC0gc3Rk
Ojpwb3cobV9zbmFwQW5pbWF0aW9uRGVjYXlGYWN0b3IsIC1mcmFtZXNQZXJTZWNvbmQgKiBzY3Jv
bGxTbmFwQW5pbWF0aW9uRHVyYXRpb24udmFsdWUoKSkpOworICAgICAgICBpZiAoc3RkOjphYnMo
bV9zbmFwQW5pbWF0aW9uRGVjYXlGYWN0b3IgLSBwcmV2aW91c0RlY2F5RmFjdG9yKSA8IHNjcm9s
bFNuYXBEZWNheUZhY3RvckNvbnZlcmdlbmNlVGhyZXNob2xkKQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgcHJldmlvdXNEZWNheUZhY3RvciA9IG1fc25hcEFuaW1hdGlvbkRlY2F5RmFj
dG9yOworICAgIH0KK30KKworZmxvYXQgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6
OmFuaW1hdGlvblByb2dyZXNzQWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzIGVsYXBzZWRUaW1lKSBj
b25zdAoreworICAgIGZsb2F0IHRpbWVQcm9ncmVzcyA9IGNsYW1wVG88ZmxvYXQ+KGVsYXBzZWRU
aW1lIC8gc2Nyb2xsU25hcEFuaW1hdGlvbkR1cmF0aW9uLCAwLCAxKTsKKyAgICByZXR1cm4gc3Rk
OjptaW4oMS4wLCBtX3NuYXBBbmltYXRpb25DdXJ2ZU1hZ25pdHVkZSAqICgxLjAgLSBzdGQ6OnBv
dyhtX3NuYXBBbmltYXRpb25EZWNheUZhY3RvciwgLWZyYW1lc1BlclNlY29uZCAqIHNjcm9sbFNu
YXBBbmltYXRpb25EdXJhdGlvbi52YWx1ZSgpICogdGltZVByb2dyZXNzKSkpOworfQorCit9OyAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Yzc1MTMzZmY4MWVjNDFj
NDdlNDliMDg1NTg4YjgwYTNmM2RlMmUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKQEAgLTAsMCArMSw4NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2
ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBGbG9h
dFNpemU7CisKK2NsYXNzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZv
aWQgc2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpOwor
CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+
IGNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBj
b250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRT
aXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKKwor
ICAgIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0
U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5p
dGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICB2aXJ0dWFsIH5TY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0
QWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzKSA9IDA7CisgICAgdmlydHVhbCBTZWNvbmRzIGFuaW1h
dGlvbkR1cmF0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgRmxvYXRQb2ludCBwcmVkaWN0ZWREZXN0
aW5hdGlvbk9mZnNldCgpOworICAgIHZvaWQgc2V0UmV0YXJnZXRlZFNjcm9sbE9mZnNldChjb25z
dCBGbG9hdFBvaW50Jik7CisKK3Byb3RlY3RlZDoKKyAgICBjb25zdCBGbG9hdFBvaW50JiByZXRh
cmdldGVkU2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9yZXRhcmdldGVkU2Nyb2xsT2Zm
c2V0LnZhbHVlKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmV0YXJnZXRlZFNjcm9sbE9mZnNldERp
ZENoYW5nZSgpIHsgfQorCisgICAgRmxvYXRTaXplIG1faW5pdGlhbERlbHRhOworICAgIEZsb2F0
U2l6ZSBtX2luaXRpYWxWZWxvY2l0eTsKKyAgICBGbG9hdFBvaW50IG1faW5pdGlhbFNjcm9sbE9m
ZnNldDsKKyAgICBGbG9hdFNpemUgbV92aWV3cG9ydFNpemU7CisgICAgRmxvYXRTaXplIG1fY29u
dGVudFNpemU7CisKK3ByaXZhdGU6CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBtX3Jl
dGFyZ2V0ZWRTY3JvbGxPZmZzZXQ7Cit9OworCitjbGFzcyBCYXNpY1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvciBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Igewor
cHVibGljOgorICAgIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0
U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBG
bG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwg
Y29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOworCitwcml2YXRlOgorICAgIEZsb2F0
UG9pbnQgc2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzKSBmaW5hbDsKKyAgICBT
ZWNvbmRzIGFuaW1hdGlvbkR1cmF0aW9uKCkgZmluYWw7CisgICAgdm9pZCBpbml0aWFsaXplSW50
ZXJwb2xhdGlvbkNvZWZmaWNpZW50c0lmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBpbml0aWFsaXpl
U25hcFByb2dyZXNzQ3VydmUoKTsKKyAgICBmbG9hdCBhbmltYXRpb25Qcm9ncmVzc0FmdGVyRWxh
cHNlZFRpbWUoU2Vjb25kcykgY29uc3Q7CisgICAgRmxvYXRQb2ludCBsaW5lYXJseUludGVycG9s
YXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpOworICAgIEZsb2F0UG9pbnQgY3Vi
aWNhbGx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykgY29uc3Q7
CisKKyAgICBmbG9hdCBtX3NuYXBBbmltYXRpb25DdXJ2ZU1hZ25pdHVkZSB7IDAgfTsKKyAgICBm
bG9hdCBtX3NuYXBBbmltYXRpb25EZWNheUZhY3RvciB7IDAgfTsKKyAgICBGbG9hdFNpemUgbV9z
bmFwQW5pbWF0aW9uQ3VydmVDb2VmZmljaWVudHNbNF0geyB9OworICAgIGJvb2wgbV9mb3JjZUxp
bmVhckFuaW1hdGlvbkN1cnZlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbW9tZW50dW1DYWxjdWxh
dG9yUmVxdWlyZXNJbml0aWFsaXphdGlvbiB7IHRydWUgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0U2l6ZT4gbV9wcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQv
bWFjL0hJREdhbWVwYWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWRFbGVtZW50LmNwcAppbmRleCA2MGM4ZDQwYTU4NjNlYTY1NGYxYzQx
NjdmYWFlMWRjNDI4YmU0NzAwLi42NTI3NDFkNmEwYzE4MWI5Y2Q4OTUyMGNhMjVkNDkzODllNzk5
YTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURH
YW1lcGFkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9t
YWMvSElER2FtZXBhZEVsZW1lbnQuY3BwCkBAIC0yOCw2ICsyOCw5IEBACiAKICNpZiBFTkFCTEUo
R0FNRVBBRCkgJiYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0lPS2l0
U1BJLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9JT0tpdFNQSU1hYy5oPgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICNwcmFnbWEgbWFyayBISURHYW1lcGFkRWxlbWVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCmluZGV4IDM4OWFhYzI4NmU4ODczZjBmODQ3
ZjNhMGQwOWRlYzhkOTM4ZGMwNzMuLjhjZmM0NTc5NjM2NTc3NDI4OGNjYTVjOGQwNjk3ZWRlZmVi
MDAyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKQEAg
LTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogCisjaW5jbHVkZSA8
d3RmL3RleHQvVGV4dFN0cmVhbS5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZjxNb2Rl
bD4gTW9kZWw6OmNyZWF0ZShSZWY8U2hhcmVkQnVmZmVyPiBkYXRhLCBTdHJpbmcgbWltZVR5cGUs
IFVSTCB1cmwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I1N2Y1MzViZTY2
MWIyMTM3OTRjNzkyYWY2NzQ1YTNkYTIwYjJiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaApAQCAt
MCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisK
K0BjbGFzcyBfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjIGZpbmFsIDogcHVi
bGljIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciB7CitwdWJsaWM6CisgICAgU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yTWFjKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25z
dCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0
LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
VmVsb2NpdHkpOworCitwcml2YXRlOgorICAgIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0QWZ0ZXJF
bGFwc2VkVGltZShTZWNvbmRzKSBmaW5hbDsKKyAgICBTZWNvbmRzIGFuaW1hdGlvbkR1cmF0aW9u
KCkgZmluYWw7CisgICAgRmxvYXRQb2ludCBwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpIGZp
bmFsOworICAgIHZvaWQgcmV0YXJnZXRlZFNjcm9sbE9mZnNldERpZENoYW5nZSgpIGZpbmFsOwor
CisgICAgX05TU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yICplbnN1cmVQbGF0Zm9ybU1vbWVu
dHVtQ2FsY3VsYXRvcigpOworICAgIGJvb2wgcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZygpOwor
CisgICAgUmV0YWluUHRyPF9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gbV9wbGF0Zm9y
bU1vbWVudHVtQ2FsY3VsYXRvcjsKKyAgICBzdGQ6Om9wdGlvbmFsPGJvb2w+IG1fcmVxdWlyZXNN
b21lbnR1bVNjcm9sbGluZzsKKyAgICBGbG9hdFBvaW50IG1faW5pdGlhbERlc3RpbmF0aW9uT3Jp
Z2luOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmRjMjFlYTY1NTY1ZjdlNTk0OWIxZjI0NWY4YzMwNjE5ZWY5ODZhZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWMubW0KQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yy5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0IDxwYWwvc3BpL21hYy9OU1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvclNQSS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyBib29sIGdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbiA9IHRy
dWU7CisKK3N0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRT
aXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0
aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXpl
JiBpbml0aWFsVmVsb2NpdHkpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zm
c2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlv
bkVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIGdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Ny
b2xsaW5nUHJlZGljdGlvbiA9IGVuYWJsZWQ7Cit9CisKK1Njcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYzo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjKGNvbnN0IEZsb2F0U2l6ZSYg
dmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCisgICAgOiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3Iodmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERl
bHRhLCBpbml0aWFsVmVsb2NpdHkpCit7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjOjpzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMgZWxh
cHNlZFRpbWUpCit7CisgICAgaWYgKCFyZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nKCkpCisgICAg
ICAgIHJldHVybiByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCk7CisKKyAgICByZXR1cm4gW2Vuc3Vy
ZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCkgcG9zaXRpb25BZnRlckR1cmF0aW9uOmVsYXBz
ZWRUaW1lLnZhbHVlKCldOworfQorCitGbG9hdFBvaW50IFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYzo6cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKQoreworICAgIGlmICghZ0VuYWJs
ZVBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uKQorICAgICAgICByZXR1cm4gU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpOwor
CisgICAgZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IoKTsKKyAgICByZXR1cm4geyBt
X2luaXRpYWxEZXN0aW5hdGlvbk9yaWdpbi54KCksIG1faW5pdGlhbERlc3RpbmF0aW9uT3JpZ2lu
LnkoKSB9OworfQorCit2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6cmV0YXJn
ZXRlZFNjcm9sbE9mZnNldERpZENoYW5nZSgpCit7CisgICAgX05TU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yICpjYWxjdWxhdG9yID0gZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3Io
KTsKKyAgICBjYWxjdWxhdG9yLmRlc3RpbmF0aW9uT3JpZ2luID0gcmV0YXJnZXRlZFNjcm9sbE9m
ZnNldCgpOworICAgIFtjYWxjdWxhdG9yIGNhbGN1bGF0ZVRvUmVhY2hEZXN0aW5hdGlvbl07Cit9
CisKK1NlY29uZHMgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjphbmltYXRpb25EdXJh
dGlvbigpCit7CisgICAgaWYgKCFyZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nKCkpCisgICAgICAg
IHJldHVybiAwX3M7CisKKyAgICByZXR1cm4gU2Vjb25kcyhbZW5zdXJlUGxhdGZvcm1Nb21lbnR1
bUNhbGN1bGF0b3IoKSBkdXJhdGlvblVudGlsU3RvcF0pOworfQorCitib29sIFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvck1hYzo6cmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZygpCit7CisgICAg
aWYgKG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyA9PSBzdGQ6Om51bGxvcHQpCisgICAgICAg
IG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyA9IG1faW5pdGlhbFNjcm9sbE9mZnNldCAhPSBy
ZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgfHwgbV9pbml0aWFsVmVsb2NpdHkuYXJlYSgpOworICAg
IHJldHVybiBtX3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcudmFsdWUoKTsKK30KKworX05TU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yICpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6
OmVuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCkKK3sKKyAgICBpZiAobV9wbGF0Zm9y
bU1vbWVudHVtQ2FsY3VsYXRvcikKKyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1Nb21lbnR1bUNh
bGN1bGF0b3IuZ2V0KCk7CisKKyAgICBOU1BvaW50IG9yaWdpbiA9IG1faW5pdGlhbFNjcm9sbE9m
ZnNldDsKKyAgICBOU1JlY3QgY29udGVudEZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBtX2NvbnRl
bnRTaXplLndpZHRoKCksIG1fY29udGVudFNpemUuaGVpZ2h0KCkpOworICAgIE5TUG9pbnQgdmVs
b2NpdHkgPSBOU01ha2VQb2ludChtX2luaXRpYWxWZWxvY2l0eS53aWR0aCgpLCBtX2luaXRpYWxW
ZWxvY2l0eS5oZWlnaHQoKSk7CisgICAgbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvciA9IGFk
b3B0TlMoW1tfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgYWxsb2NdIGluaXRXaXRoSW5p
dGlhbE9yaWdpbjpvcmlnaW4gdmVsb2NpdHk6dmVsb2NpdHkgZG9jdW1lbnRGcmFtZTpjb250ZW50
RnJhbWUgY29uc3RyYWluZWRDbGlwcGluZ09yaWdpbjpOU1plcm9Qb2ludCBjbGlwcGluZ1NpemU6
bV92aWV3cG9ydFNpemUgdG9sZXJhbmNlOk5TTWFrZVNpemUoMSwgMSldKTsKKyAgICBtX2luaXRp
YWxEZXN0aW5hdGlvbk9yaWdpbiA9IFttX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yIGRlc3Rp
bmF0aW9uT3JpZ2luXTsKKyAgICByZXR1cm4gbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvci5n
ZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQo=
</data>
<flag name="commit-queue"
          id="462004"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438573</attachid>
            <date>2021-09-18 18:06:25 -0700</date>
            <delta_ts>2021-09-18 18:32:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230452-20210918180624.patch</filename>
            <type>text/plain</type>
            <size>68815</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM1M2JjOWUxNjEwMGJm
N2QxNDNkNzJhMGFjZjg3MzZhMGM3ZTNhMS4uMzg5YjNmMzcyMzQ3M2FhYmFlYWYzMmQ5MGM3ZDVk
ZDZlNGEyODIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA5LTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yIGludG8gdGhlIHBsYXRmb3JtIGRpcmVjdG9yeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDUyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYyBoYXZlIG5vIG5vbi1w
bGF0Zm9ybSBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgT3RoZXIgY2hhbmdlcyBhcmUgdW5pZmll
ZCBzb3VyY2VzIGZhbGxvdXQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBT
b3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW06IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLm1tLgorCiAyMDIxLTA5LTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFNjcm9sbCBvZmZzZXRzIGluIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvciBzaG91bGQgYmUgRmxvYXRQb2ludCwgbm90IEZsb2F0U2l6ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
aW5kZXggYmVmOTgzNmE2MDE0ODk3YmEwZjI4YmE2YzNlYTU3OGE2ZDRjZjEwMC4uZjQxMTMzNGQ2
YjcxNDczNzA1NzA2Y2UwNWY0ZGM2MTA0ODdjYTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0x
MDE1LDcgKzEwMTUsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaAogICAgIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKICAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvclR5cGVzLmgKLSAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IuaAogICAgIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRml4ZWROb2RlLmgK
ICAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUuaAogICAg
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgKQEAgLTEx
NDAsNiArMTEzOSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBwbGF0Zm9ybS9TY3JvbGxiYXIuaAogICAgIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKICAg
ICBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCisgICAgcGxhdGZvcm0vU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKICAgICBwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaAog
ICAgIHBsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaAogICAgIHBsYXRmb3JtL1Nl
cmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDVhYWQwZDkz
YzI5YmZhMzUxNWVlYzU5Y2NkYTk5MTY5MmM0MzkzMDQuLmQ4MGJkMzJjZTcwZDZmZTZmMTViOTlh
MjllZWU4NTI1OTc2ZGJhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzU0LDcgKzE3NTQsNiBAQCBw
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25z
dHJhaW50cy5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAotcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcAogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZUZyYW1lSG9zdGluZ05vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTE4MzQsNiArMTgzMyw3IEBAIHBsYXRmb3JtL1Njcm9s
bGJhci5jcHAKIHBsYXRmb3JtL1Njcm9sbGJhcnNDb250cm9sbGVyLmNwcAogcGxhdGZvcm0vU2Ny
b2xsYmFyVGhlbWUuY3BwCiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKK3Bs
YXRmb3JtL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKIHBsYXRmb3JtL1NlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWUuY3BwCiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4
IDk1YTkyZTFhM2U2YjJhZmMyYzVhMzE2NzRjYjk5MWY2NzMwNzU5YjAuLjNkZmI2ODFjMzc3MGU1
NmE4ZTExZmQ2Y2Y0OGJlMGUwYWQ4YTE1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAt
MjA5LDcgKzIwOSw2IEBAIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbFByb3h5Tm9kZS5tbQogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVBv
c2l0aW9uZWROb2RlLm1tCiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZS5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCi1w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCiBwYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFjLm1tCiBwYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0KQEAgLTQ5Myw2ICs0OTIsNyBAQCBwbGF0
Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KIHBsYXRmb3JtL21hYy9TY3Jv
bGxWaWV3TWFjLm1tCiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyc0NvbnRyb2xsZXJNYWMubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gQG5vLXVuaWZ5CitwbGF0
Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCiBwbGF0Zm9ybS9tYWMv
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5tbQogcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxp
dGllcy5tbQogcGxhdGZvcm0vbWFjL1N1ZGRlblRlcm1pbmF0aW9uLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWQxZGVhMThl
ZmJlMzZkM2E1MDZhNDZkZmRkODIyZjYyNTBiYzUzYi4uYWI1NDUyMzIzMmIyMGNkYmJlYjk5NmVl
N2UyZWE0MThhZDAxNWFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUwLDYgKzM1MCw4IEBACiAJCTBGOTRCNjUyMjIwOTE1
MDYwMDE1NzAxNCAvKiBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk0QjY1MTIyMDkxNEZGMDAxNTcw
MTQgLyogU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTRCNjU1MjIwOTMxRTQwMDE1NzAxNCAv
KiBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTRCNjUzMjIwOTE1NkMwMDE1NzAxNCAvKiBTY3JvbGxp
bmdUcmVlUG9zaXRpb25lZE5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjk0RjM3RTIzNjYxNjI2MDAzQUE1QzcgLyogU3R5bGVSdWxlVHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NEYz
N0MyMzY2MTEzMTAwM0FBNUM3IC8qIFN0eWxlUnVsZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjk5MDU5QTI2RjZCRTg1MDA1NEZCRTAg
LyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk5MDU5OTI2RjZCRTdGMDA1NEZCRTAgLyogU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yLmggKi87IH07CisJCTBGOTkwNTlEMjZGNkJFOUEwMDU0RkJF
MCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTkwNTlCMjZGNkJFOTQwMDU0RkJFMCAvKiBT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAqLzsgfTsKIAkJMEY5REFBMEYxRkQxQzY2
QTAwNzlDNUIyIC8qIERPTUdDT3V0cHV0Q29uc3RyYWludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5REFBMEUxRkQxQzY2NDAwNzlDNUIyIC8qIERP
TUdDT3V0cHV0Q29uc3RyYWludC5oICovOyB9OwogCQkwRkEyNEQ3QTE2MkRGOTE5MDBBM0Y0QzAg
LyogR3JhcGhpY3NMYXllclVwZGF0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQTI0RDc4MTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVy
VXBkYXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGQTYxQjBFMjZGNDMyMTMwMDFBQURCNiAvKiBTY3JvbGxBbmltYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQTYxQjBDMjZGNDMyMTIw
MDFBQURCNiAvKiBTY3JvbGxBbmltYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTU4Niw3ICsxNTg4LDYgQEAKIAkJNTE3QTYzQzUxQjc0
MzE4RjAwRTdEQ0RDIC8qIEtleWVkRGVjb2RlckNGLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBNjNDMDFCNzQzMTdFMDBFN0RDREMgLyogS2V5ZWRE
ZWNvZGVyQ0YuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTdBNjNDNjFCNzQzMTkyMDBFN0RDREMgLyogS2V5ZWRFbmNvZGVyQ0YuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0E2M0MyMUI3NDMxN0Uw
MEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTUxN0IyNUFBMUNDODJCMkEwMDYxQzAxMSAvKiBJREJDb25u
ZWN0aW9uUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxN0IyNUE4MUNDODIwMzIwMDYxQzAxMSAvKiBJREJDb25uZWN0aW9uUHJveHkuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTdERUVFODFE
RTk0QjA4MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdERUVFNzFERTk0QjA4
MDBCOTE2NDQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3RTAzRjcyNEI2RDk4NDAw
NTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdFMDNGNDI0QjZCOTYzMDA1NDg5NUEgLyogTXVsdGlH
YW1lcGFkUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTgyQzI1NjFGMzE0M0NEMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgyQzI1MjFG
MzE0MjUwMDA1OUJBN0MgLyogSlNTZXJ2aWNlV29ya2VyLmggKi87IH07CiAJCTUxODJDMjU4MUYz
MTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjU0MUYzMTQyNTAwMDU5QkE3
QyAvKiBKU1NlcnZpY2VXb3JrZXJDb250YWluZXIuaCAqLzsgfTsKQEAgLTE2NDgsNyArMTY0OSw2
IEBACiAJCTUxQkNDRTMwMUY4RjE3OUUwMDZCQTBFRCAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDODcxMDFG
OEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVhZC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxQkUzN0UwMERBRUUwMEUwMDEwODVG
QyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVhLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDMEFBMzkwRjJB
QTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUMwQUEzODBGMkFBMTBBMDAxNjQ4QzIgLyogQ2FjaGVkRnJh
bWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1
MUM2MUIwQjFERTUzNkU3MDA4QTIxMkQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUM2MUIwOTFE
RTUzNkU3MDA4QTIxMkQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFDODFCOEEwQzQ0MjJG
NzAwMTlFQ0UzIC8qIEZUUERpcmVjdG9yeVBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDODFCODgwQzQ0MjJGNzAwMTlFQ0UzIC8qIEZUUERp
cmVjdG9yeVBhcnNlci5oICovOyB9OwogCQk1MUNBN0VFOTFGODgzMzkwMDAzRDMxMzEgLyogU2Vy
dmljZVdvcmtlckNvbnRleHREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUNBN0VFNzFGODgzMkUwMDAzRDMxMzEgLyogU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTFDQkZDOTkwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZEZyYW1lUGxhdGZvcm1EYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUNCRkM5
ODBEMTBFNDgzMDAyREJGNTEgLyogQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjMzNCw2ICs2MzM0LDEw
IEBACiAJCTBGOTUxMEYwMjRGNDc2OUMwMDFGNTJEQyAvKiBTY3JvbGxMYXRjaGluZ0NvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsTGF0Y2hpbmdDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTUxMEYyMjRGNDc2OUMwMDFGNTJEQyAvKiBTY3JvbGxM
YXRjaGluZ0NvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsTGF0Y2hpbmdD
b250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5N0E2NTcxNTVE
QTgxRTAwRkFERDRDIC8qIERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5OTA1OTgyNkY2QkU3RjAwNTRGQkUwIC8q
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjk5MDU5OTI2RjZCRTdGMDA1NEZCRTAgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjk5MDU5QjI2RjZCRTk0MDA1NEZCRTAgLyogU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjk5MDU5
QzI2RjZCRTk1MDA1NEZCRTAgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjlCNTQ3NTIyQjRBNzcyMDA3QjVFOEEgLyog
U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbFByb3h5Tm9kZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
Y3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGOUI1NDc2MjJCNEE3NzMwMDdCNUU4QSAvKiBTY3JvbGxpbmdTdGF0ZU92
ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0
YXRlT3ZlcmZsb3dTY3JvbGxQcm94eU5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjlEQUEwQzFGRDFDNjYzMDA3OUM1QjIgLyogRE9NR0NPdXRwdXRDb25zdHJhaW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUdDT3V0cHV0Q29uc3Ry
YWludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MDU1LDggKzkwNTksNiBA
QAogCQk1MTdDODcxMDFGOEVFNzJFMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVhZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTZXJ2aWNlV29ya2VyVGhyZWFkLmg7IHBh
dGggPSB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg7IHNvdXJj
ZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNTE3Qzg3MTExRjhFRTcyRjAwRUI4MDc2IC8qIFNl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gU2VydmljZVdvcmtlclRocmVhZC5jcHA7IHBhdGggPSB3b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owog
CQk1MTdDODcxNjFGOEZENEQzMDBFQjgwNzYgLyogU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxN0RFRUUzMURFOTRB
REMwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxN0RFRUU3MURFOTRCMDgw
MEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0UwM0Y0MjRCNkI5NjMwMDU0ODk1QSAvKiBN
dWx0aUdhbWVwYWRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
dWx0aUdhbWVwYWRQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdF
MDNGNTI0QjZCOTY0MDA1NDg5NUEgLyogTXVsdGlHYW1lcGFkUHJvdmlkZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNdWx0aUdhbWVwYWRQcm92aWRlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3RkJBMTcxNTFBQTcxQjAwQjU3OTU5IC8q
IERPTVdpbmRvd0V4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01XaW5kb3dFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtOTEzOSw4ICs5MTQxLDYgQEAKIAkJNTFCRTM3REUwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3Jh
Z2VBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VBcmVhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAv
KiBDYWNoZWRGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRG
cmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUMwQUE0MDBGMkFBMTVFMDAx
NjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2FjaGVkRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MUM2
MUIwODFERTUzNkU3MDA4QTIxMkQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxQzYxQjA5MURFNTM2
RTcwMDhBMjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzgxQjg3MEM0NDIyRjcwMDE5RUNFMyAvKiBGVFBE
aXJlY3RvcnlQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZUUERpcmVjdG9yeVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
QzgxQjg4MEM0NDIyRjcwMDE5RUNFMyAvKiBGVFBEaXJlY3RvcnlQYXJzZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZUUERpcmVjdG9yeVBhcnNlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MUNBN0VFNzFGODgzMkUwMDAzRDMxMzEgLyogU2VydmljZVdv
cmtlckNvbnRleHREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg4
NjgsOCArMTg4NjgsNiBAQAogCQkJCTFBRjYyRUU0MTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxp
bmdDb29yZGluYXRvci5jcHAgKi8sCiAJCQkJMUFGNjJFRTUxNERBMjJBNzAwNDE1NTZDIC8qIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yLmggKi8sCiAJCQkJNzEyREJBNDcyMUY4QUQ3OTAwOEYzNkIyIC8q
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yVHlwZXMuaCAqLywKLQkJCQk1MUM2MUIwODFERTUzNkU3MDA4
QTIxMkQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcCAqLywKLQkJCQk1MUM2MUIw
OTFERTUzNkU3MDA4QTIxMkQgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggKi8sCiAJ
CQkJOTNDMzhCRkMxNjQ0NzNDNzAwMDkxRUIyIC8qIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlLmNw
cCAqLywKIAkJCQk5M0MzOEJGRDE2NDQ3M0M3MDAwOTFFQjIgLyogU2Nyb2xsaW5nU3RhdGVGaXhl
ZE5vZGUuaCAqLywKIAkJCQkwRkQ0MUU2MzIxRjgwMjYwMDAwQzAwNkQgLyogU2Nyb2xsaW5nU3Rh
dGVGcmFtZUhvc3RpbmdOb2RlLmNwcCAqLywKQEAgLTE4OTI1LDggKzE4OTIzLDYgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTkzOTFBOTkwMTYyNzQ2Q0IwMDI5NzMzMCAvKiBTY3JvbGxpbmdDb29y
ZGluYXRvck1hYy5oICovLAogCQkJCTFBRjYyRUUzMTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxp
bmdDb29yZGluYXRvck1hYy5tbSAqLywKLQkJCQk1MTdERUVFNzFERTk0QjA4MDBCOTE2NDQgLyog
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi8sCi0JCQkJNTE3REVFRTMxREU5NEFE
QzAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLywKIAkJCQkw
RjczQjc2NTIyMkIzMjdGMDA4MDUzMTYgLyogU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFj
Lm1tICovLAogCQkJCTkzQzRBNDEzMTYyOURGNUEwMEMzRUI2RSAvKiBTY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlTWFjLmggKi8sCiAJCQkJOTNDNEE0MTQxNjI5REY1QTAwQzNFQjZFIC8q
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMubW0gKi8sCkBAIC0yMjE4MCw2ICsy
MjE3Niw4IEBACiAJCQkJQkM4Qjg1M0MwRTdDN0YxMTAwQUI2OTg0IC8qIFNjcm9sbGJhclRoZW1l
TWFjLmggKi8sCiAJCQkJQkNFRjg2OUUwRTg0NEU5RDAwQTg1Q0Q1IC8qIFNjcm9sbGJhclRoZW1l
TWFjLm1tICovLAogCQkJCTVCMUUwRTQzMjVEMTYyOUIwMDI3MjI4MSAvKiBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlci5tbSAqLywKKwkJCQkwRjk5MDU5QjI2RjZCRTk0MDA1NEZCRTAgLyogU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggKi8sCisJCQkJMEY5OTA1OUMyNkY2QkU5NTAw
NTRGQkUwIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLywKIAkJCQk5MzUz
Njc2QTA5QUVEODhCMDBEMzVDRDYgLyogU2Nyb2xsVmlld01hYy5tbSAqLywKIAkJCQkwNzdBRjE0
MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oICovLAog
CQkJCTA3N0FGMTQyMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
TWFjLm1tICovLApAQCAtMjgxNTcsNiArMjgxNTUsOCBAQAogCQkJCUJDMTQwMjg5MEU4MzY4MDgw
MDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICovLAogCQkJCTVCNDY2NTVFMjVE
MTRDMDkwMDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJ
NUI0NjY1NUYyNUQxNEMwOTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgg
Ki8sCisJCQkJMEY5OTA1OTgyNkY2QkU3RjAwNTRGQkUwIC8qIFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvci5jcHAgKi8sCisJCQkJMEY5OTA1OTkyNkY2QkU3RjAwNTRGQkUwIC8qIFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvci5oICovLAogCQkJCTVCNDY2NTVEMjVEMTRDMDkwMDBDRkUxNCAv
KiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAgKi8sCiAJCQkJNUI0NjY1NjAyNUQxNEMwQTAw
MENGRTE0IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmggKi8sCiAJCQkJMEY0Q0RFQUEyM0Q5
MUE4QTAwMjUxQjAyIC8qIFNjcm9sbFR5cGVzLmNwcCAqLywKQEAgLTM0OTQzLDggKzM0OTQzLDgg
QEAKIAkJCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JN
YWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMkRCQTQ5MjFGOEFEODMwMDhGMzZCMiAvKiBTY3Jv
bGxpbmdDb29yZGluYXRvclR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QjQ2NjU2MzI1RDE0
QzBBMDAwQ0ZFMTQgLyogU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAotCQkJCTUxQzYxQjBCMURFNTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxN0RFRUU4MURFOTRCMDgwMEI5MTY0NCAvKiBT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGOTkw
NTlBMjZGNkJFODUwMDU0RkJFMCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGOTkwNTlEMjZGNkJFOUEwMDU0RkJFMCAvKiBTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3JNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzM4QkZGMTY0NDczQzcw
MDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZENDFFNjkyMUY4MEQxNDAwMEMwMDZEIC8qIFNjcm9sbGluZ1N0YXRlRnJhbWVIb3N0aW5nTm9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTNFN0IxOTFCMkZDNTAwMEYxQjU1IC8qIFNjcm9s
bGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzA2OGMzNjUwYTAz
OGRjODE3YmE5ZGUzMzIwOTNiNGM3NTg2MmE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuaCIKLQotI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKLSNpbmNsdWRlICJG
bG9hdFNpemUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgU2Vjb25k
cyBzY3JvbGxTbmFwQW5pbWF0aW9uRHVyYXRpb24gPSAxX3M7Ci1zdGF0aWMgaW5saW5lIGZsb2F0
IHByb2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2UoZmxvYXQgaW5pdGlhbFdoZWVsRGVsdGEp
Ci17Ci0gICAgLy8gT24gbWFjT1MgMTAuMTAgYW5kIGVhcmxpZXIsIHdlIGRvbid0IGhhdmUgYSBw
bGF0Zm9ybSBzY3JvbGxpbmcgbW9tZW50dW0gY2FsY3VsYXRvciwgc28gd2UgaW5zdGVhZCBhcHBy
b3hpbWF0ZSB0aGUgc2Nyb2xsIGRlc3RpbmF0aW9uCi0gICAgLy8gYnkgbXVsdGlwbHlpbmcgdGhl
IGluaXRpYWwgd2hlZWwgZGVsdGEgYnkgYSBjb25zdGFudCBmYWN0b3IuIEJ5IHJ1bm5pbmcgYSBm
ZXcgZXhwZXJpbWVudHMgKGkuZS4gbG9nZ2luZyBzY3JvbGwgZGVzdGluYXRpb24gYW5kIGluaXRp
YWwKLSAgICAvLyB3aGVlbCBkZWx0YSBmb3IgbWFueSBzY3JvbGwgZ2VzdHVyZXMpIHdlIGRldGVy
bWluZWQgdGhhdCB0aGlzIGlzIGEgcmVhc29uYWJsZSB3YXkgdG8gYXBwcm94aW1hdGUgd2hlcmUg
c2Nyb2xsaW5nIHdpbGwgdGFrZSB1cyB3aXRob3V0Ci0gICAgLy8gdXNpbmcgX05TU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yLgotICAgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGluZXJ0aWFs
U2Nyb2xsUHJlZGljdGlvbkZhY3RvciA9IDE2Ljc7Ci0gICAgcmV0dXJuIGluZXJ0aWFsU2Nyb2xs
UHJlZGljdGlvbkZhY3RvciAqIGluaXRpYWxXaGVlbERlbHRhOwotfQotCi1TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3I6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNp
emUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxv
YXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQotICAgIDogbV9pbml0aWFsRGVsdGEoaW5p
dGlhbERlbHRhKQotICAgICwgbV9pbml0aWFsVmVsb2NpdHkoaW5pdGlhbFZlbG9jaXR5KQotICAg
ICwgbV9pbml0aWFsU2Nyb2xsT2Zmc2V0KGluaXRpYWxPZmZzZXQpCi0gICAgLCBtX3ZpZXdwb3J0
U2l6ZSh2aWV3cG9ydFNpemUpCi0gICAgLCBtX2NvbnRlbnRTaXplKGNvbnRlbnRTaXplKQotewot
fQotCi12b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UmV0YXJnZXRlZFNjcm9s
bE9mZnNldChjb25zdCBGbG9hdFBvaW50JiB0YXJnZXQpCi17Ci0gICAgaWYgKG1fcmV0YXJnZXRl
ZFNjcm9sbE9mZnNldCAmJiBtX3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQgPT0gdGFyZ2V0KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQgPSB0YXJnZXQ7Ci0g
ICAgcmV0YXJnZXRlZFNjcm9sbE9mZnNldERpZENoYW5nZSgpOwotfQotCi1GbG9hdFBvaW50IFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKQot
ewotICAgIGZsb2F0IGluaXRpYWxPZmZzZXRYID0gY2xhbXBUbzxmbG9hdD4obV9pbml0aWFsU2Ny
b2xsT2Zmc2V0LngoKSArIHByb2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2UobV9pbml0aWFs
RGVsdGEud2lkdGgoKSksIDAsIG1fY29udGVudFNpemUud2lkdGgoKSAtIG1fdmlld3BvcnRTaXpl
LndpZHRoKCkpOwotICAgIGZsb2F0IGluaXRpYWxPZmZzZXRZID0gY2xhbXBUbzxmbG9hdD4obV9p
bml0aWFsU2Nyb2xsT2Zmc2V0LnkoKSArIHByb2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2Uo
bV9pbml0aWFsRGVsdGEuaGVpZ2h0KCkpLCAwLCBtX2NvbnRlbnRTaXplLmhlaWdodCgpIC0gbV92
aWV3cG9ydFNpemUuaGVpZ2h0KCkpOwotICAgIHJldHVybiB7IGluaXRpYWxPZmZzZXRYLCBpbml0
aWFsT2Zmc2V0WSB9OwotfQotCi0jaWYgIVBMQVRGT1JNKE1BQykKLQotc3RkOjp1bmlxdWVfcHRy
PFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
OjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYg
Y29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0
U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKLXsK
LSAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4o
dmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBp
bml0aWFsVmVsb2NpdHkpOwotfQotCi12b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpCi17Ci19
Ci0KLSNlbmRpZgotCi1CYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6QmFzaWNTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNv
bnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZz
ZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRp
YWxWZWxvY2l0eSkKLSAgICA6IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcih2aWV3cG9ydFNp
emUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxv
Y2l0eSkKLXsKLX0KLQotRmxvYXRQb2ludCBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6bGluZWFybHlJbnRlcnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNzKGZsb2F0IHByb2dyZXNzKQot
ewotICAgIHJldHVybiBtX2luaXRpYWxTY3JvbGxPZmZzZXQgKyBwcm9ncmVzcyAqIChyZXRhcmdl
dGVkU2Nyb2xsT2Zmc2V0KCkgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQpOwotfQotCi1GbG9hdFBv
aW50IEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjdWJpY2FsbHlJbnRlcnBvbGF0
ZWRPZmZzZXRBdFByb2dyZXNzKGZsb2F0IHByb2dyZXNzKSBjb25zdAotewotICAgIEFTU0VSVCgh
bV9mb3JjZUxpbmVhckFuaW1hdGlvbkN1cnZlKTsKLSAgICBGbG9hdFBvaW50IGludGVycG9sYXRl
ZFBvaW50OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKQotICAgICAgICBpbnRlcnBv
bGF0ZWRQb2ludCArPSBzdGQ6OnBvdyhwcm9ncmVzcywgaSkgKiBtX3NuYXBBbmltYXRpb25DdXJ2
ZUNvZWZmaWNpZW50c1tpXTsKLQotICAgIHJldHVybiBpbnRlcnBvbGF0ZWRQb2ludDsKLX0KLQot
RmxvYXRQb2ludCBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2Nyb2xsT2Zmc2V0
QWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzIGVsYXBzZWRUaW1lKQotewotICAgIGlmIChtX21vbWVu
dHVtQ2FsY3VsYXRvclJlcXVpcmVzSW5pdGlhbGl6YXRpb24pIHsKLSAgICAgICAgaW5pdGlhbGl6
ZVNuYXBQcm9ncmVzc0N1cnZlKCk7Ci0gICAgICAgIGluaXRpYWxpemVJbnRlcnBvbGF0aW9uQ29l
ZmZpY2llbnRzSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3JSZXF1
aXJlc0luaXRpYWxpemF0aW9uID0gZmFsc2U7Ci0gICAgfQotCi0gICAgZmxvYXQgcHJvZ3Jlc3Mg
PSBhbmltYXRpb25Qcm9ncmVzc0FmdGVyRWxhcHNlZFRpbWUoZWxhcHNlZFRpbWUpOwotICAgIHJl
dHVybiBtX2ZvcmNlTGluZWFyQW5pbWF0aW9uQ3VydmUgPyBsaW5lYXJseUludGVycG9sYXRlZE9m
ZnNldEF0UHJvZ3Jlc3MocHJvZ3Jlc3MpIDogY3ViaWNhbGx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQ
cm9ncmVzcyhwcm9ncmVzcyk7Ci19Ci0KLVNlY29uZHMgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I6OmFuaW1hdGlvbkR1cmF0aW9uKCkKLXsKLSAgICByZXR1cm4gc2Nyb2xsU25hcEFu
aW1hdGlvbkR1cmF0aW9uOwotfQotCi0vKioKLSAqIENvbXB1dGVzIGFuZCBzZXRzIGNvZWZmaWNp
ZW50cyByZXF1aXJlZCBmb3IgaW50ZXJwb2xhdGVkIHNuYXBwaW5nIHdoZW4gc2Nyb2xsaW5nIGlu
IDIgZGltZW5zaW9ucywgZ2l2ZW4KLSAqIGluaXRpYWwgY29uZGl0aW9ucyAodGhlIGluaXRpYWwg
YW5kIHRhcmdldCB2ZWN0b3JzLCBhbG9uZyB3aXRoIHRoZSBpbml0aWFsIHdoZWVsIGRlbHRhIGFz
IGEgdmVjdG9yKS4gVGhlCi0gKiBwYXRoIGlzIGEgY3ViaWMgQmV6aWVyIGN1cnZlIG9mIHRoZSBm
b3JtIHAocykgPSBJTklUSUFMICsgKENfMSAqIHMpICsgKENfMiAqIHNeMikgKyAoQ18zICogc14z
KSB3aGVyZSBlYWNoCi0gKiBDX2kgaXMgYSAyRCB2ZWN0b3IgYW5kIElOSVRJQUwgaXMgdGhlIHZl
Y3RvciByZXByZXNlbnRpbmcgdGhlIGluaXRpYWwgc2Nyb2xsIG9mZnNldC4gcyBpcyBhIHJlYWwg
aW4gdGhlCi0gKiBpbnRlcnZhbCBbMCwgMV0gaW5kaWNhdGluZyB0aGUgInByb2dyZXNzIiBvZiB0
aGUgY3VydmUgKGkuZS4gaG93IG11Y2ggb2YgdGhlIGN1cnZlIGhhcyBiZWVuIHRyYXZlbGVkKS4K
LSAqCi0gKiBUaGUgY3VydmUgaGFzIDQgY29udHJvbCBwb2ludHMsIHRoZSBmaXJzdCBhbmQgbGFz
dCBvZiB3aGljaCBhcmUgdGhlIGluaXRpYWwgYW5kIHRhcmdldCBwb2ludHMsIHJlc3BlY3RpdmVs
eS4KLSAqIFRoZSBkaXN0YW5jZXMgYmV0d2VlbiBhZGphY2VudCBjb250cm9sIHBvaW50cyBhcmUg
Y29uc3RyYWluZWQgdG8gYmUgdGhlIHNhbWUsIG1ha2luZyB0aGUgY29udmV4IGh1bGwgYW4KLSAq
IGlzb3NjZWxlcyB0cmFwZXpvaWQgd2l0aCAzIHNpZGVzIG9mIGVxdWFsIGxlbmd0aC4gQWRkaXRp
b25hbGx5LCB0aGUgdmVjdG9yIGZyb20gdGhlIGZpcnN0IGNvbnRyb2wgcG9pbnQgdG8KLSAqIHRo
ZSBzZWNvbmQgcG9pbnRzIGluIHRoZSBzYW1lIGRpcmVjdGlvbiBhcyB0aGUgaW5pdGlhbCBzY3Jv
bGwgZGVsdGEuIFRoZXNlIGNvbnN0cmFpbnRzIGVuc3VyZSB0d28gcHJvcGVydGllczoKLSAqICAg
ICAxLiBUaGUgZGlyZWN0aW9uIG9mIHRoZSBzbmFwIGFuaW1hdGlvbiBhdCBzPTAgd2lsbCBiZSBl
cXVhbCB0byB0aGUgZGlyZWN0aW9uIG9mIHRoZSBpbml0aWFsIHNjcm9sbCBkZWx0YS4KLSAqICAg
ICAyLiBQb2ludHMgYXQgcmVndWxhciBpbnRlcnZhbHMgb2YgcyB3aWxsIGJlIGV2ZW5seSBzcHJl
YWQgb3V0LgotICoKLSAqIElmIHRoZSBpbml0aWFsIHNjcm9sbCBkaXJlY3Rpb24gaXMgb3J0aG9n
b25hbCB0byBvciBwb2ludHMgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBhcyB0aGUgdmVjdG9y
IGZyb20gdGhlCi0gKiBpbml0aWFsIHBvaW50IHRvIHRoZSB0YXJnZXQgcG9pbnQsIGluaXRpYWxp
emF0aW9uIHJldHVybnMgZWFybHkgYW5kIHNldHMgdGhlIGN1cnZlIHRvIGFuaW1hdGUgZGlyZWN0
bHkgdG8gdGhlCi0gKiBzbmFwIHBvaW50IHdpdGhvdXQgY3ViaWMgaW50ZXJwb2xhdGlvbi4KLSAq
Ci0gKiBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVmYWN0b3JlZCB0byB1c2UgVW5pdEJlemllci4K
LSAqLwotdm9pZCBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6aW5pdGlhbGl6ZUlu
dGVycG9sYXRpb25Db2VmZmljaWVudHNJZk5lY2Vzc2FyeSgpCi17Ci0gICAgbV9mb3JjZUxpbmVh
ckFuaW1hdGlvbkN1cnZlID0gdHJ1ZTsKLSAgICBmbG9hdCBpbml0aWFsRGVsdGFNYWduaXR1ZGUg
PSBtX2luaXRpYWxEZWx0YS5kaWFnb25hbExlbmd0aCgpOwotICAgIGlmIChpbml0aWFsRGVsdGFN
YWduaXR1ZGUgPCAxKSB7Ci0gICAgICAgIC8vIFRoZSBpbml0aWFsIHdoZWVsIGRlbHRhIGlzIHNv
IGluc2lnbmlmaWNhbnQgdGhhdCB3ZSdyZSBiZXR0ZXIgb2ZmIGNvbnNpZGVyaW5nIHRoaXMgdG8g
aGF2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgZmluaXNoaW5nIGEgc2Nyb2xsIGdlc3R1cmUgd2l0aCBu
byBtb21lbnR1bS4KLSAgICAgICAgLy8gVGh1cywgY3ViaWMgaW50ZXJwb2xhdGlvbiBpc24ndCBu
ZWVkZWQgaGVyZS4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEZsb2F0U2l6ZSBzdGFy
dFRvRW5kVmVjdG9yID0gcmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpIC0gbV9pbml0aWFsU2Nyb2xs
T2Zmc2V0OwotICAgIGZsb2F0IHN0YXJ0VG9FbmREaXN0YW5jZSA9IHN0YXJ0VG9FbmRWZWN0b3Iu
ZGlhZ29uYWxMZW5ndGgoKTsKLSAgICBpZiAoIXN0YXJ0VG9FbmREaXN0YW5jZSkgewotICAgICAg
ICAvLyBUaGUgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbnMgYXJlIHRoZSBzYW1lLCBzbyB3ZSBzaG91
bGRuJ3QgdHJ5IHRvIGludGVycG9sYXRlIGEgcGF0aC4KLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGZsb2F0IGNvc1RoZXRhID0gKG1faW5pdGlhbERlbHRhLndpZHRoKCkgKiBzdGFydFRv
RW5kVmVjdG9yLndpZHRoKCkgKyBtX2luaXRpYWxEZWx0YS5oZWlnaHQoKSAqIHN0YXJ0VG9FbmRW
ZWN0b3IuaGVpZ2h0KCkpIC8gKGluaXRpYWxEZWx0YU1hZ25pdHVkZSAqIHN0YXJ0VG9FbmREaXN0
YW5jZSk7Ci0gICAgaWYgKGNvc1RoZXRhIDw9IDApIHsKLSAgICAgICAgLy8gSXQncyBwb3NzaWJs
ZSB0aGF0IHRoZSB1c2VyIGlzIG5vdCBzY3JvbGxpbmcgdG93YXJkcyB0aGUgdGFyZ2V0IHNuYXAg
b2Zmc2V0IChmb3IgaW5zdGFuY2UsIHNjcm9sbGluZyBhZ2FpbnN0IGEgY29ybmVyIHdoZW4gMkQg
c2Nyb2xsIHNuYXBwaW5nKS4KLSAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCBqdXN0IGxldCB0aGUg
c2Nyb2xsIG9mZnNldCBhbmltYXRlIHRvIHRoZSB0YXJnZXQgd2l0aG91dCBjb21wdXRpbmcgYSBj
dWJpYyBjdXJ2ZS4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZsb2F0IHNpZGVMZW5n
dGggPSBzdGFydFRvRW5kRGlzdGFuY2UgLyAoMi4wZiAqIGNvc1RoZXRhICsgMS4wZik7Ci0gICAg
YXV0byBpbml0aWFsT2Zmc2V0QXNTaXplID0gdG9GbG9hdFNpemUobV9pbml0aWFsU2Nyb2xsT2Zm
c2V0KTsKLSAgICBGbG9hdFNpemUgY29udHJvbFZlY3RvcjEgPSBpbml0aWFsT2Zmc2V0QXNTaXpl
ICsgc2lkZUxlbmd0aCAqIG1faW5pdGlhbERlbHRhIC8gaW5pdGlhbERlbHRhTWFnbml0dWRlOwot
ICAgIEZsb2F0U2l6ZSBjb250cm9sVmVjdG9yMiA9IGNvbnRyb2xWZWN0b3IxICsgKHNpZGVMZW5n
dGggKiBzdGFydFRvRW5kVmVjdG9yIC8gc3RhcnRUb0VuZERpc3RhbmNlKTsKLSAgICBtX3NuYXBB
bmltYXRpb25DdXJ2ZUNvZWZmaWNpZW50c1swXSA9IGluaXRpYWxPZmZzZXRBc1NpemU7Ci0gICAg
bV9zbmFwQW5pbWF0aW9uQ3VydmVDb2VmZmljaWVudHNbMV0gPSAzICogKGNvbnRyb2xWZWN0b3Ix
IC0gaW5pdGlhbE9mZnNldEFzU2l6ZSk7Ci0gICAgbV9zbmFwQW5pbWF0aW9uQ3VydmVDb2VmZmlj
aWVudHNbMl0gPSAzICogKGluaXRpYWxPZmZzZXRBc1NpemUgLSAyICogY29udHJvbFZlY3RvcjEg
KyBjb250cm9sVmVjdG9yMik7Ci0gICAgbV9zbmFwQW5pbWF0aW9uQ3VydmVDb2VmZmljaWVudHNb
M10gPSAzICogKGNvbnRyb2xWZWN0b3IxIC0gY29udHJvbFZlY3RvcjIpIC0gaW5pdGlhbE9mZnNl
dEFzU2l6ZSArIHRvRmxvYXRTaXplKHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSk7Ci0gICAgbV9m
b3JjZUxpbmVhckFuaW1hdGlvbkN1cnZlID0gZmFsc2U7Ci19Ci0KLXN0YXRpYyBjb25zdCBmbG9h
dCBmcmFtZXNQZXJTZWNvbmQgPSA2MC4wZjsKLQotLyoqCi0gKiBDb21wdXRlcyBhbmQgc2V0cyBw
YXJhbWV0ZXJzIHJlcXVpcmVkIGZvciB0cmFja2luZyB0aGUgcHJvZ3Jlc3Mgb2YgYSBzbmFwIGFu
aW1hdGlvbiBjdXJ2ZSwgaW50ZXJwb2xhdGVkCi0gKiBvciBsaW5lYXIuIFRoZSBwcm9ncmVzcyBj
dXJ2ZSBzKHQpIG1hcHMgdGltZSB0IHRvIHByb2dyZXNzIHM7IGJvdGggdmFyaWFibGVzIGFyZSBp
biB0aGUgaW50ZXJ2YWwgWzAsIDFdLgotICogVGhlIHRpbWUgaW5wdXQgdCBpcyAwIHdoZW4gdGhl
IGN1cnJlbnQgdGltZSBpcyB0aGUgc3RhcnQgb2YgdGhlIGFuaW1hdGlvbiwgdCA9IDAsIGFuZCAx
IHdoZW4gdGhlIGN1cnJlbnQKLSAqIHRpbWUgaXMgYXQgb3IgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUg
YW5pbWF0aW9uLCB0ID0gbV9zY3JvbGxTbmFwQW5pbWF0aW9uRHVyYXRpb24uCi0gKgotICogSW4g
dGhpcyBleHBvbmVudGlhbCBwcm9ncmVzcyBtb2RlbCwgcyh0KSA9IEEgLSBBICogYl4oLWt0KSwg
d2hlcmUgayA9IDYwVCBpcyB0aGUgbnVtYmVyIG9mIGZyYW1lcyBpbiB0aGUKLSAqIGFuaW1hdGlv
biAoYXNzdW1pbmcgNjAgRlBTIGFuZCBhbiBhbmltYXRpb24gZHVyYXRpb24gb2YgVCkgYW5kIEEs
IGIgYXJlIHJlYWxzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxLgotICogQWxzbyBub3RlIHRo
YXQgd2UgYXJlIGdpdmVuIHRoZSBpbml0aWFsIHByb2dyZXNzLCBhIHZhbHVlIGluZGljYXRpbmcg
dGhlIHBvcnRpb24gb2YgdGhlIGN1cnZlIHdoaWNoIG91cgotICogaW5pdGlhbCBzY3JvbGwgZGVs
dGEgdGFrZXMgdXMuIFRoaXMgaXMgaW1wb3J0YW50IHdoZW4gbWF0Y2hpbmcgdGhlIGluaXRpYWwg
c3BlZWQgb2YgdGhlIGFuaW1hdGlvbiB0byB0aGUKLSAqIHVzZXIncyBpbml0aWFsIG1vbWVudHVt
IHNjcm9sbGluZyBzcGVlZC4gTGV0IHRoaXMgaW5pdGlhbCBwcm9ncmVzcyBhbW91bnQgZXF1YWwg
dl8wLiBJIGNsYW1wIHRoaXMgaW5pdGlhbAotICogcHJvZ3Jlc3MgYW1vdW50IHRvIGEgbWluaW11
bSBvciBtYXhpbXVtIHZhbHVlLgotICoKLSAqIEEgaXMgcmVmZXJyZWQgdG8gYXMgdGhlIGN1cnZl
IG1hZ25pdHVkZSwgd2hpbGUgYiBpcyByZWZlcnJlZCB0byBhcyB0aGUgZGVjYXkgZmFjdG9yLiBX
ZSBzb2x2ZSBmb3IgQSBhbmQgYiwKLSAqIGtlZXBpbmcgdGhlIGZvbGxvd2luZyBjb25zdHJhaW50
cyBpbiBtaW5kOgotICogICAgIDEuIHMoMCkgPSAwCi0gKiAgICAgMi4gcygxKSA9IDEKLSAqICAg
ICAzLiBzKDEvaykgPSB2XzAKLSAqCi0gKiBGaXJzdCwgb2JzZXJ2ZSB0aGF0IHMoMCkgPSAwIGhv
bGRzIGZvciBhcHByb3ByaWF0ZSB2YWx1ZXMgb2YgQSwgYi4gU29sdmluZyBmb3IgdGhlIHJlbWFp
bmluZyBjb25zdHJhaW50cwotICogeWllbGRzIGEgbm9ubGluZWFyIHN5c3RlbSBvZiB0d28gZXF1
YXRpb25zLiBJbiBsaWV1IG9mIGEgcHVyZWx5IGFuYWx5dGljYWwgc29sdXRpb24sIGFuIGFsdGVy
bmF0aW5nCi0gKiBvcHRpbWl6YXRpb24gc2NoZW1lIGlzIHVzZWQgdG8gYXBwcm94aW1hdGUgQSBh
bmQgYi4gVGhpcyB0ZWNobmlxdWUgY29udmVyZ2VzIHF1aWNrbHkgKHdpdGhpbiA1IGl0ZXJhdGlv
bnMKLSAqIG9yIHNvKSBmb3IgYXBwcm9wcmlhdGUgdmFsdWVzIG9mIHZfMC4gVGhlIG9wdGltaXph
dGlvbiB0ZXJtaW5hdGVzIGVhcmx5IHdoZW4gdGhlIGRlY2F5IGZhY3RvciBjaGFuZ2VzIGJ5Ci0g
KiBsZXNzIHRoYW4gYSB0aHJlc2hvbGQgYmV0d2VlbiBvbmUgaXRlcmF0aW9uIGFuZCB0aGUgbmV4
dC4KLSAqLwotdm9pZCBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6aW5pdGlhbGl6
ZVNuYXBQcm9ncmVzc0N1cnZlKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgaW50IG1heE51bVNjcm9s
bFNuYXBQYXJhbWV0ZXJFc3RpbWF0aW9uSXRlcmF0aW9ucyA9IDEwOwotICAgIHN0YXRpYyBjb25z
dCBmbG9hdCBzY3JvbGxTbmFwRGVjYXlGYWN0b3JDb252ZXJnZW5jZVRocmVzaG9sZCA9IDAuMDAx
OwotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBpbml0aWFsU2Nyb2xsU25hcEN1cnZlTWFnbml0dWRl
ID0gMS4xOwotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5TY3JvbGxTbmFwSW5pdGlhbFByb2dy
ZXNzID0gMC4xOwotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBtYXhTY3JvbGxTbmFwSW5pdGlhbFBy
b2dyZXNzID0gMC41OwotCi0gICAgRmxvYXRTaXplIGFsaWdubWVudFZlY3RvciA9IG1faW5pdGlh
bERlbHRhICogKHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSAtIG1faW5pdGlhbFNjcm9sbE9mZnNl
dCk7Ci0gICAgZmxvYXQgaW5pdGlhbFByb2dyZXNzOwotICAgIGlmIChhbGlnbm1lbnRWZWN0b3Iu
d2lkdGgoKSArIGFsaWdubWVudFZlY3Rvci5oZWlnaHQoKSA+IDApCi0gICAgICAgIGluaXRpYWxQ
cm9ncmVzcyA9IGNsYW1wVG8obV9pbml0aWFsRGVsdGEuZGlhZ29uYWxMZW5ndGgoKSAvIChyZXRh
cmdldGVkU2Nyb2xsT2Zmc2V0KCkgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQpLmRpYWdvbmFsTGVu
Z3RoKCksIG1pblNjcm9sbFNuYXBJbml0aWFsUHJvZ3Jlc3MsIG1heFNjcm9sbFNuYXBJbml0aWFs
UHJvZ3Jlc3MpOwotICAgIGVsc2UKLSAgICAgICAgaW5pdGlhbFByb2dyZXNzID0gbWluU2Nyb2xs
U25hcEluaXRpYWxQcm9ncmVzczsKLQotICAgIGZsb2F0IHByZXZpb3VzRGVjYXlGYWN0b3IgPSAx
LjBmOwotICAgIG1fc25hcEFuaW1hdGlvbkN1cnZlTWFnbml0dWRlID0gaW5pdGlhbFNjcm9sbFNu
YXBDdXJ2ZU1hZ25pdHVkZTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE51bVNjcm9sbFNu
YXBQYXJhbWV0ZXJFc3RpbWF0aW9uSXRlcmF0aW9uczsgKytpKSB7Ci0gICAgICAgIG1fc25hcEFu
aW1hdGlvbkRlY2F5RmFjdG9yID0gbV9zbmFwQW5pbWF0aW9uQ3VydmVNYWduaXR1ZGUgLyAobV9z
bmFwQW5pbWF0aW9uQ3VydmVNYWduaXR1ZGUgLSBpbml0aWFsUHJvZ3Jlc3MpOwotICAgICAgICBt
X3NuYXBBbmltYXRpb25DdXJ2ZU1hZ25pdHVkZSA9IDEuMGYgLyAoMS4wZiAtIHN0ZDo6cG93KG1f
c25hcEFuaW1hdGlvbkRlY2F5RmFjdG9yLCAtZnJhbWVzUGVyU2Vjb25kICogc2Nyb2xsU25hcEFu
aW1hdGlvbkR1cmF0aW9uLnZhbHVlKCkpKTsKLSAgICAgICAgaWYgKHN0ZDo6YWJzKG1fc25hcEFu
aW1hdGlvbkRlY2F5RmFjdG9yIC0gcHJldmlvdXNEZWNheUZhY3RvcikgPCBzY3JvbGxTbmFwRGVj
YXlGYWN0b3JDb252ZXJnZW5jZVRocmVzaG9sZCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIHByZXZpb3VzRGVjYXlGYWN0b3IgPSBtX3NuYXBBbmltYXRpb25EZWNheUZhY3RvcjsKLSAg
ICB9Ci19Ci0KLWZsb2F0IEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjphbmltYXRp
b25Qcm9ncmVzc0FmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcyBlbGFwc2VkVGltZSkgY29uc3QKLXsK
LSAgICBmbG9hdCB0aW1lUHJvZ3Jlc3MgPSBjbGFtcFRvPGZsb2F0PihlbGFwc2VkVGltZSAvIHNj
cm9sbFNuYXBBbmltYXRpb25EdXJhdGlvbiwgMCwgMSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWluKDEu
MCwgbV9zbmFwQW5pbWF0aW9uQ3VydmVNYWduaXR1ZGUgKiAoMS4wIC0gc3RkOjpwb3cobV9zbmFw
QW5pbWF0aW9uRGVjYXlGYWN0b3IsIC1mcmFtZXNQZXJTZWNvbmQgKiBzY3JvbGxTbmFwQW5pbWF0
aW9uRHVyYXRpb24udmFsdWUoKSAqIHRpbWVQcm9ncmVzcykpKTsKLX0KLQotfTsgLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDRjNzUxMzNmZjgxZWM0MWM0N2U0OWIwODU1ODhiODBhM2YzZGUyZTEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJQ
bGF0Zm9ybVdoZWVsRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgotI2luY2x1ZGUg
PHd0Zi9TZWNvbmRzLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRmxvYXRQb2lu
dDsKLWNsYXNzIEZsb2F0U2l6ZTsKLQotY2xhc3MgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCBzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVu
YWJsZWQoYm9vbCk7Ci0KLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25z
dCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0
LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
VmVsb2NpdHkpOwotCi0gICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0
U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBG
bG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwg
Y29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwotICAgIHZpcnR1YWwgflNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcigpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgRmxvYXRQb2lu
dCBzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMpID0gMDsKLSAgICB2aXJ0dWFs
IFNlY29uZHMgYW5pbWF0aW9uRHVyYXRpb24oKSA9IDA7Ci0gICAgdmlydHVhbCBGbG9hdFBvaW50
IHByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCk7Ci0gICAgdm9pZCBzZXRSZXRhcmdldGVkU2Ny
b2xsT2Zmc2V0KGNvbnN0IEZsb2F0UG9pbnQmKTsKLQotcHJvdGVjdGVkOgotICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3JldGFy
Z2V0ZWRTY3JvbGxPZmZzZXQudmFsdWUoKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZXRhcmdldGVk
U2Nyb2xsT2Zmc2V0RGlkQ2hhbmdlKCkgeyB9Ci0KLSAgICBGbG9hdFNpemUgbV9pbml0aWFsRGVs
dGE7Ci0gICAgRmxvYXRTaXplIG1faW5pdGlhbFZlbG9jaXR5OwotICAgIEZsb2F0UG9pbnQgbV9p
bml0aWFsU2Nyb2xsT2Zmc2V0OwotICAgIEZsb2F0U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKLSAgICBG
bG9hdFNpemUgbV9jb250ZW50U2l6ZTsKLQotcHJpdmF0ZToKLSAgICBzdGQ6Om9wdGlvbmFsPEZs
b2F0UG9pbnQ+IG1fcmV0YXJnZXRlZFNjcm9sbE9mZnNldDsKLX07Ci0KLWNsYXNzIEJhc2ljU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvciB7Ci1wdWJsaWM6Ci0gICAgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVu
dFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7Ci0KLXByaXZh
dGU6Ci0gICAgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMp
IGZpbmFsOwotICAgIFNlY29uZHMgYW5pbWF0aW9uRHVyYXRpb24oKSBmaW5hbDsKLSAgICB2b2lk
IGluaXRpYWxpemVJbnRlcnBvbGF0aW9uQ29lZmZpY2llbnRzSWZOZWNlc3NhcnkoKTsKLSAgICB2
b2lkIGluaXRpYWxpemVTbmFwUHJvZ3Jlc3NDdXJ2ZSgpOwotICAgIGZsb2F0IGFuaW1hdGlvblBy
b2dyZXNzQWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzKSBjb25zdDsKLSAgICBGbG9hdFBvaW50IGxp
bmVhcmx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcyk7Ci0gICAg
RmxvYXRQb2ludCBjdWJpY2FsbHlJbnRlcnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNzKGZsb2F0IHBy
b2dyZXNzKSBjb25zdDsKLQotICAgIGZsb2F0IG1fc25hcEFuaW1hdGlvbkN1cnZlTWFnbml0dWRl
IHsgMCB9OwotICAgIGZsb2F0IG1fc25hcEFuaW1hdGlvbkRlY2F5RmFjdG9yIHsgMCB9OwotICAg
IEZsb2F0U2l6ZSBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZmaWNpZW50c1s0XSB7IH07Ci0gICAg
Ym9vbCBtX2ZvcmNlTGluZWFyQW5pbWF0aW9uQ3VydmUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9t
b21lbnR1bUNhbGN1bGF0b3JSZXF1aXJlc0luaXRpYWxpemF0aW9uIHsgdHJ1ZSB9OwotICAgIHN0
ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBtX3ByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjU3ZjUzNWJlNjYxYjIxMzc5NGM3
OTJhZjY3NDVhM2RhMjBiMmI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3JNYWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvci5oIgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotQGNsYXNzIF9OU1Njcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMgZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yIHsKLXB1YmxpYzoKLSAgICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWMoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVu
dFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7Ci0KLXByaXZh
dGU6Ci0gICAgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMp
IGZpbmFsOwotICAgIFNlY29uZHMgYW5pbWF0aW9uRHVyYXRpb24oKSBmaW5hbDsKLSAgICBGbG9h
dFBvaW50IHByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCkgZmluYWw7Ci0gICAgdm9pZCByZXRh
cmdldGVkU2Nyb2xsT2Zmc2V0RGlkQ2hhbmdlKCkgZmluYWw7Ci0KLSAgICBfTlNTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IgKmVuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCk7Ci0g
ICAgYm9vbCByZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nKCk7Ci0KLSAgICBSZXRhaW5QdHI8X05T
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9y
OwotICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nOwot
ICAgIEZsb2F0UG9pbnQgbV9pbml0aWFsRGVzdGluYXRpb25PcmlnaW47Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmRjMjFlYTY1NTY1ZjdlNTk0OWIxZjI0NWY4YzMw
NjE5ZWY5ODZhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5oIgotCi0jaWYgUExBVEZPUk0oTUFDKQotCi0jaW1wb3J0IDxwYWwvc3BpL21hYy9OU1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvclNQSS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXN0YXRpYyBib29sIGdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbiA9
IHRydWU7Ci0KLXN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3Bv
cnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBp
bml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRT
aXplJiBpbml0aWFsVmVsb2NpdHkpCi17Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFs
T2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7Ci19Ci0KLXZvaWQgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGlj
dGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIGdFbmFibGVQbGF0Zm9ybU1vbWVudHVt
U2Nyb2xsaW5nUHJlZGljdGlvbiA9IGVuYWJsZWQ7Ci19Ci0KLVNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYzo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjKGNvbnN0IEZsb2F0U2l6
ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCi0gICAgOiBTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3Iodmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlh
bERlbHRhLCBpbml0aWFsVmVsb2NpdHkpCi17Ci19Ci0KLUZsb2F0UG9pbnQgU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yTWFjOjpzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMg
ZWxhcHNlZFRpbWUpCi17Ci0gICAgaWYgKCFyZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nKCkpCi0g
ICAgICAgIHJldHVybiByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCk7Ci0KLSAgICByZXR1cm4gW2Vu
c3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCkgcG9zaXRpb25BZnRlckR1cmF0aW9uOmVs
YXBzZWRUaW1lLnZhbHVlKCldOwotfQotCi1GbG9hdFBvaW50IFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYzo6cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKQotewotICAgIGlmICghZ0Vu
YWJsZVBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uKQotICAgICAgICByZXR1cm4g
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgp
OwotCi0gICAgZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IoKTsKLSAgICByZXR1cm4g
eyBtX2luaXRpYWxEZXN0aW5hdGlvbk9yaWdpbi54KCksIG1faW5pdGlhbERlc3RpbmF0aW9uT3Jp
Z2luLnkoKSB9OwotfQotCi12b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6cmV0
YXJnZXRlZFNjcm9sbE9mZnNldERpZENoYW5nZSgpCi17Ci0gICAgX05TU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yICpjYWxjdWxhdG9yID0gZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0
b3IoKTsKLSAgICBjYWxjdWxhdG9yLmRlc3RpbmF0aW9uT3JpZ2luID0gcmV0YXJnZXRlZFNjcm9s
bE9mZnNldCgpOwotICAgIFtjYWxjdWxhdG9yIGNhbGN1bGF0ZVRvUmVhY2hEZXN0aW5hdGlvbl07
Ci19Ci0KLVNlY29uZHMgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjphbmltYXRpb25E
dXJhdGlvbigpCi17Ci0gICAgaWYgKCFyZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nKCkpCi0gICAg
ICAgIHJldHVybiAwX3M7Ci0KLSAgICByZXR1cm4gU2Vjb25kcyhbZW5zdXJlUGxhdGZvcm1Nb21l
bnR1bUNhbGN1bGF0b3IoKSBkdXJhdGlvblVudGlsU3RvcF0pOwotfQotCi1ib29sIFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvck1hYzo6cmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZygpCi17Ci0g
ICAgaWYgKG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyA9PSBzdGQ6Om51bGxvcHQpCi0gICAg
ICAgIG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZyA9IG1faW5pdGlhbFNjcm9sbE9mZnNldCAh
PSByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgfHwgbV9pbml0aWFsVmVsb2NpdHkuYXJlYSgpOwot
ICAgIHJldHVybiBtX3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcudmFsdWUoKTsKLX0KLQotX05T
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yICpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWM6OmVuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCkKLXsKLSAgICBpZiAobV9wbGF0
Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcikKLSAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1Nb21lbnR1
bUNhbGN1bGF0b3IuZ2V0KCk7Ci0KLSAgICBOU1BvaW50IG9yaWdpbiA9IG1faW5pdGlhbFNjcm9s
bE9mZnNldDsKLSAgICBOU1JlY3QgY29udGVudEZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBtX2Nv
bnRlbnRTaXplLndpZHRoKCksIG1fY29udGVudFNpemUuaGVpZ2h0KCkpOwotICAgIE5TUG9pbnQg
dmVsb2NpdHkgPSBOU01ha2VQb2ludChtX2luaXRpYWxWZWxvY2l0eS53aWR0aCgpLCBtX2luaXRp
YWxWZWxvY2l0eS5oZWlnaHQoKSk7Ci0gICAgbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvciA9
IGFkb3B0TlMoW1tfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgYWxsb2NdIGluaXRXaXRo
SW5pdGlhbE9yaWdpbjpvcmlnaW4gdmVsb2NpdHk6dmVsb2NpdHkgZG9jdW1lbnRGcmFtZTpjb250
ZW50RnJhbWUgY29uc3RyYWluZWRDbGlwcGluZ09yaWdpbjpOU1plcm9Qb2ludCBjbGlwcGluZ1Np
emU6bV92aWV3cG9ydFNpemUgdG9sZXJhbmNlOk5TTWFrZVNpemUoMSwgMSldKTsKLSAgICBtX2lu
aXRpYWxEZXN0aW5hdGlvbk9yaWdpbiA9IFttX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yIGRl
c3RpbmF0aW9uT3JpZ2luXTsKLSAgICByZXR1cm4gbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRv
ci5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWMwNjhjMzY1MGEwMzhkYzgxN2JhOWRl
MzMyMDkzYjRjNzU4NjJhNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKQEAgLTAsMCArMSwyMzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yLmgiCisKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxv
YXRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGNvbnN0IFNlY29uZHMg
c2Nyb2xsU25hcEFuaW1hdGlvbkR1cmF0aW9uID0gMV9zOworc3RhdGljIGlubGluZSBmbG9hdCBw
cm9qZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKGZsb2F0IGluaXRpYWxXaGVlbERlbHRhKQor
eworICAgIC8vIE9uIG1hY09TIDEwLjEwIGFuZCBlYXJsaWVyLCB3ZSBkb24ndCBoYXZlIGEgcGxh
dGZvcm0gc2Nyb2xsaW5nIG1vbWVudHVtIGNhbGN1bGF0b3IsIHNvIHdlIGluc3RlYWQgYXBwcm94
aW1hdGUgdGhlIHNjcm9sbCBkZXN0aW5hdGlvbgorICAgIC8vIGJ5IG11bHRpcGx5aW5nIHRoZSBp
bml0aWFsIHdoZWVsIGRlbHRhIGJ5IGEgY29uc3RhbnQgZmFjdG9yLiBCeSBydW5uaW5nIGEgZmV3
IGV4cGVyaW1lbnRzIChpLmUuIGxvZ2dpbmcgc2Nyb2xsIGRlc3RpbmF0aW9uIGFuZCBpbml0aWFs
CisgICAgLy8gd2hlZWwgZGVsdGEgZm9yIG1hbnkgc2Nyb2xsIGdlc3R1cmVzKSB3ZSBkZXRlcm1p
bmVkIHRoYXQgdGhpcyBpcyBhIHJlYXNvbmFibGUgd2F5IHRvIGFwcHJveGltYXRlIHdoZXJlIHNj
cm9sbGluZyB3aWxsIHRha2UgdXMgd2l0aG91dAorICAgIC8vIHVzaW5nIF9OU1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci4KKyAgICBzdGF0aWMgY29uc3RleHByIGRvdWJsZSBpbmVydGlhbFNj
cm9sbFByZWRpY3Rpb25GYWN0b3IgPSAxNi43OworICAgIHJldHVybiBpbmVydGlhbFNjcm9sbFBy
ZWRpY3Rpb25GYWN0b3IgKiBpbml0aWFsV2hlZWxEZWx0YTsKK30KKworU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXpl
JiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0
UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25z
dCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKKyAgICA6IG1faW5pdGlhbERlbHRhKGluaXRp
YWxEZWx0YSkKKyAgICAsIG1faW5pdGlhbFZlbG9jaXR5KGluaXRpYWxWZWxvY2l0eSkKKyAgICAs
IG1faW5pdGlhbFNjcm9sbE9mZnNldChpbml0aWFsT2Zmc2V0KQorICAgICwgbV92aWV3cG9ydFNp
emUodmlld3BvcnRTaXplKQorICAgICwgbV9jb250ZW50U2l6ZShjb250ZW50U2l6ZSkKK3sKK30K
Kwordm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFJldGFyZ2V0ZWRTY3JvbGxP
ZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0KQoreworICAgIGlmIChtX3JldGFyZ2V0ZWRT
Y3JvbGxPZmZzZXQgJiYgbV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0ID09IHRhcmdldCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0ID0gdGFyZ2V0OworICAg
IHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXREaWRDaGFuZ2UoKTsKK30KKworRmxvYXRQb2ludCBTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCkKK3sK
KyAgICBmbG9hdCBpbml0aWFsT2Zmc2V0WCA9IGNsYW1wVG88ZmxvYXQ+KG1faW5pdGlhbFNjcm9s
bE9mZnNldC54KCkgKyBwcm9qZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKG1faW5pdGlhbERl
bHRhLndpZHRoKCkpLCAwLCBtX2NvbnRlbnRTaXplLndpZHRoKCkgLSBtX3ZpZXdwb3J0U2l6ZS53
aWR0aCgpKTsKKyAgICBmbG9hdCBpbml0aWFsT2Zmc2V0WSA9IGNsYW1wVG88ZmxvYXQ+KG1faW5p
dGlhbFNjcm9sbE9mZnNldC55KCkgKyBwcm9qZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKG1f
aW5pdGlhbERlbHRhLmhlaWdodCgpKSwgMCwgbV9jb250ZW50U2l6ZS5oZWlnaHQoKSAtIG1fdmll
d3BvcnRTaXplLmhlaWdodCgpKTsKKyAgICByZXR1cm4geyBpbml0aWFsT2Zmc2V0WCwgaW5pdGlh
bE9mZnNldFkgfTsKK30KKworI2lmICFQTEFURk9STShNQUMpCisKK3N0ZDo6dW5pcXVlX3B0cjxT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNv
bnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCit7Cisg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+KHZp
ZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5p
dGlhbFZlbG9jaXR5KTsKK30KKwordm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNl
dFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sKQoreworfQor
CisjZW5kaWYKKworQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OkJhc2ljU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25z
dCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0
LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
VmVsb2NpdHkpCisgICAgOiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Iodmlld3BvcnRTaXpl
LCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2Np
dHkpCit7Cit9CisKK0Zsb2F0UG9pbnQgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6
OmxpbmVhcmx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykKK3sK
KyAgICByZXR1cm4gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0ICsgcHJvZ3Jlc3MgKiAocmV0YXJnZXRl
ZFNjcm9sbE9mZnNldCgpIC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0KTsKK30KKworRmxvYXRQb2lu
dCBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3ViaWNhbGx5SW50ZXJwb2xhdGVk
T2Zmc2V0QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcykgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1f
Zm9yY2VMaW5lYXJBbmltYXRpb25DdXJ2ZSk7CisgICAgRmxvYXRQb2ludCBpbnRlcnBvbGF0ZWRQ
b2ludDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7ICsraSkKKyAgICAgICAgaW50ZXJwb2xh
dGVkUG9pbnQgKz0gc3RkOjpwb3cocHJvZ3Jlc3MsIGkpICogbV9zbmFwQW5pbWF0aW9uQ3VydmVD
b2VmZmljaWVudHNbaV07CisKKyAgICByZXR1cm4gaW50ZXJwb2xhdGVkUG9pbnQ7Cit9CisKK0Zs
b2F0UG9pbnQgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNjcm9sbE9mZnNldEFm
dGVyRWxhcHNlZFRpbWUoU2Vjb25kcyBlbGFwc2VkVGltZSkKK3sKKyAgICBpZiAobV9tb21lbnR1
bUNhbGN1bGF0b3JSZXF1aXJlc0luaXRpYWxpemF0aW9uKSB7CisgICAgICAgIGluaXRpYWxpemVT
bmFwUHJvZ3Jlc3NDdXJ2ZSgpOworICAgICAgICBpbml0aWFsaXplSW50ZXJwb2xhdGlvbkNvZWZm
aWNpZW50c0lmTmVjZXNzYXJ5KCk7CisgICAgICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yUmVxdWly
ZXNJbml0aWFsaXphdGlvbiA9IGZhbHNlOworICAgIH0KKworICAgIGZsb2F0IHByb2dyZXNzID0g
YW5pbWF0aW9uUHJvZ3Jlc3NBZnRlckVsYXBzZWRUaW1lKGVsYXBzZWRUaW1lKTsKKyAgICByZXR1
cm4gbV9mb3JjZUxpbmVhckFuaW1hdGlvbkN1cnZlID8gbGluZWFybHlJbnRlcnBvbGF0ZWRPZmZz
ZXRBdFByb2dyZXNzKHByb2dyZXNzKSA6IGN1YmljYWxseUludGVycG9sYXRlZE9mZnNldEF0UHJv
Z3Jlc3MocHJvZ3Jlc3MpOworfQorCitTZWNvbmRzIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yOjphbmltYXRpb25EdXJhdGlvbigpCit7CisgICAgcmV0dXJuIHNjcm9sbFNuYXBBbmlt
YXRpb25EdXJhdGlvbjsKK30KKworLyoqCisgKiBDb21wdXRlcyBhbmQgc2V0cyBjb2VmZmljaWVu
dHMgcmVxdWlyZWQgZm9yIGludGVycG9sYXRlZCBzbmFwcGluZyB3aGVuIHNjcm9sbGluZyBpbiAy
IGRpbWVuc2lvbnMsIGdpdmVuCisgKiBpbml0aWFsIGNvbmRpdGlvbnMgKHRoZSBpbml0aWFsIGFu
ZCB0YXJnZXQgdmVjdG9ycywgYWxvbmcgd2l0aCB0aGUgaW5pdGlhbCB3aGVlbCBkZWx0YSBhcyBh
IHZlY3RvcikuIFRoZQorICogcGF0aCBpcyBhIGN1YmljIEJlemllciBjdXJ2ZSBvZiB0aGUgZm9y
bSBwKHMpID0gSU5JVElBTCArIChDXzEgKiBzKSArIChDXzIgKiBzXjIpICsgKENfMyAqIHNeMykg
d2hlcmUgZWFjaAorICogQ19pIGlzIGEgMkQgdmVjdG9yIGFuZCBJTklUSUFMIGlzIHRoZSB2ZWN0
b3IgcmVwcmVzZW50aW5nIHRoZSBpbml0aWFsIHNjcm9sbCBvZmZzZXQuIHMgaXMgYSByZWFsIGlu
IHRoZQorICogaW50ZXJ2YWwgWzAsIDFdIGluZGljYXRpbmcgdGhlICJwcm9ncmVzcyIgb2YgdGhl
IGN1cnZlIChpLmUuIGhvdyBtdWNoIG9mIHRoZSBjdXJ2ZSBoYXMgYmVlbiB0cmF2ZWxlZCkuCisg
KgorICogVGhlIGN1cnZlIGhhcyA0IGNvbnRyb2wgcG9pbnRzLCB0aGUgZmlyc3QgYW5kIGxhc3Qg
b2Ygd2hpY2ggYXJlIHRoZSBpbml0aWFsIGFuZCB0YXJnZXQgcG9pbnRzLCByZXNwZWN0aXZlbHku
CisgKiBUaGUgZGlzdGFuY2VzIGJldHdlZW4gYWRqYWNlbnQgY29udHJvbCBwb2ludHMgYXJlIGNv
bnN0cmFpbmVkIHRvIGJlIHRoZSBzYW1lLCBtYWtpbmcgdGhlIGNvbnZleCBodWxsIGFuCisgKiBp
c29zY2VsZXMgdHJhcGV6b2lkIHdpdGggMyBzaWRlcyBvZiBlcXVhbCBsZW5ndGguIEFkZGl0aW9u
YWxseSwgdGhlIHZlY3RvciBmcm9tIHRoZSBmaXJzdCBjb250cm9sIHBvaW50IHRvCisgKiB0aGUg
c2Vjb25kIHBvaW50cyBpbiB0aGUgc2FtZSBkaXJlY3Rpb24gYXMgdGhlIGluaXRpYWwgc2Nyb2xs
IGRlbHRhLiBUaGVzZSBjb25zdHJhaW50cyBlbnN1cmUgdHdvIHByb3BlcnRpZXM6CisgKiAgICAg
MS4gVGhlIGRpcmVjdGlvbiBvZiB0aGUgc25hcCBhbmltYXRpb24gYXQgcz0wIHdpbGwgYmUgZXF1
YWwgdG8gdGhlIGRpcmVjdGlvbiBvZiB0aGUgaW5pdGlhbCBzY3JvbGwgZGVsdGEuCisgKiAgICAg
Mi4gUG9pbnRzIGF0IHJlZ3VsYXIgaW50ZXJ2YWxzIG9mIHMgd2lsbCBiZSBldmVubHkgc3ByZWFk
IG91dC4KKyAqCisgKiBJZiB0aGUgaW5pdGlhbCBzY3JvbGwgZGlyZWN0aW9uIGlzIG9ydGhvZ29u
YWwgdG8gb3IgcG9pbnRzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gYXMgdGhlIHZlY3RvciBm
cm9tIHRoZQorICogaW5pdGlhbCBwb2ludCB0byB0aGUgdGFyZ2V0IHBvaW50LCBpbml0aWFsaXph
dGlvbiByZXR1cm5zIGVhcmx5IGFuZCBzZXRzIHRoZSBjdXJ2ZSB0byBhbmltYXRlIGRpcmVjdGx5
IHRvIHRoZQorICogc25hcCBwb2ludCB3aXRob3V0IGN1YmljIGludGVycG9sYXRpb24uCisgKgor
ICogRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlZmFjdG9yZWQgdG8gdXNlIFVuaXRCZXppZXIuCisg
Ki8KK3ZvaWQgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmluaXRpYWxpemVJbnRl
cnBvbGF0aW9uQ29lZmZpY2llbnRzSWZOZWNlc3NhcnkoKQoreworICAgIG1fZm9yY2VMaW5lYXJB
bmltYXRpb25DdXJ2ZSA9IHRydWU7CisgICAgZmxvYXQgaW5pdGlhbERlbHRhTWFnbml0dWRlID0g
bV9pbml0aWFsRGVsdGEuZGlhZ29uYWxMZW5ndGgoKTsKKyAgICBpZiAoaW5pdGlhbERlbHRhTWFn
bml0dWRlIDwgMSkgeworICAgICAgICAvLyBUaGUgaW5pdGlhbCB3aGVlbCBkZWx0YSBpcyBzbyBp
bnNpZ25pZmljYW50IHRoYXQgd2UncmUgYmV0dGVyIG9mZiBjb25zaWRlcmluZyB0aGlzIHRvIGhh
dmUgdGhlIHNhbWUgZWZmZWN0IGFzIGZpbmlzaGluZyBhIHNjcm9sbCBnZXN0dXJlIHdpdGggbm8g
bW9tZW50dW0uCisgICAgICAgIC8vIFRodXMsIGN1YmljIGludGVycG9sYXRpb24gaXNuJ3QgbmVl
ZGVkIGhlcmUuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGbG9hdFNpemUgc3RhcnRU
b0VuZFZlY3RvciA9IHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSAtIG1faW5pdGlhbFNjcm9sbE9m
ZnNldDsKKyAgICBmbG9hdCBzdGFydFRvRW5kRGlzdGFuY2UgPSBzdGFydFRvRW5kVmVjdG9yLmRp
YWdvbmFsTGVuZ3RoKCk7CisgICAgaWYgKCFzdGFydFRvRW5kRGlzdGFuY2UpIHsKKyAgICAgICAg
Ly8gVGhlIHN0YXJ0IGFuZCBlbmQgcG9zaXRpb25zIGFyZSB0aGUgc2FtZSwgc28gd2Ugc2hvdWxk
bid0IHRyeSB0byBpbnRlcnBvbGF0ZSBhIHBhdGguCisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBmbG9hdCBjb3NUaGV0YSA9IChtX2luaXRpYWxEZWx0YS53aWR0aCgpICogc3RhcnRUb0Vu
ZFZlY3Rvci53aWR0aCgpICsgbV9pbml0aWFsRGVsdGEuaGVpZ2h0KCkgKiBzdGFydFRvRW5kVmVj
dG9yLmhlaWdodCgpKSAvIChpbml0aWFsRGVsdGFNYWduaXR1ZGUgKiBzdGFydFRvRW5kRGlzdGFu
Y2UpOworICAgIGlmIChjb3NUaGV0YSA8PSAwKSB7CisgICAgICAgIC8vIEl0J3MgcG9zc2libGUg
dGhhdCB0aGUgdXNlciBpcyBub3Qgc2Nyb2xsaW5nIHRvd2FyZHMgdGhlIHRhcmdldCBzbmFwIG9m
ZnNldCAoZm9yIGluc3RhbmNlLCBzY3JvbGxpbmcgYWdhaW5zdCBhIGNvcm5lciB3aGVuIDJEIHNj
cm9sbCBzbmFwcGluZykuCisgICAgICAgIC8vIEluIHRoaXMgY2FzZSwganVzdCBsZXQgdGhlIHNj
cm9sbCBvZmZzZXQgYW5pbWF0ZSB0byB0aGUgdGFyZ2V0IHdpdGhvdXQgY29tcHV0aW5nIGEgY3Vi
aWMgY3VydmUuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmbG9hdCBzaWRlTGVuZ3Ro
ID0gc3RhcnRUb0VuZERpc3RhbmNlIC8gKDIuMGYgKiBjb3NUaGV0YSArIDEuMGYpOworICAgIGF1
dG8gaW5pdGlhbE9mZnNldEFzU2l6ZSA9IHRvRmxvYXRTaXplKG1faW5pdGlhbFNjcm9sbE9mZnNl
dCk7CisgICAgRmxvYXRTaXplIGNvbnRyb2xWZWN0b3IxID0gaW5pdGlhbE9mZnNldEFzU2l6ZSAr
IHNpZGVMZW5ndGggKiBtX2luaXRpYWxEZWx0YSAvIGluaXRpYWxEZWx0YU1hZ25pdHVkZTsKKyAg
ICBGbG9hdFNpemUgY29udHJvbFZlY3RvcjIgPSBjb250cm9sVmVjdG9yMSArIChzaWRlTGVuZ3Ro
ICogc3RhcnRUb0VuZFZlY3RvciAvIHN0YXJ0VG9FbmREaXN0YW5jZSk7CisgICAgbV9zbmFwQW5p
bWF0aW9uQ3VydmVDb2VmZmljaWVudHNbMF0gPSBpbml0aWFsT2Zmc2V0QXNTaXplOworICAgIG1f
c25hcEFuaW1hdGlvbkN1cnZlQ29lZmZpY2llbnRzWzFdID0gMyAqIChjb250cm9sVmVjdG9yMSAt
IGluaXRpYWxPZmZzZXRBc1NpemUpOworICAgIG1fc25hcEFuaW1hdGlvbkN1cnZlQ29lZmZpY2ll
bnRzWzJdID0gMyAqIChpbml0aWFsT2Zmc2V0QXNTaXplIC0gMiAqIGNvbnRyb2xWZWN0b3IxICsg
Y29udHJvbFZlY3RvcjIpOworICAgIG1fc25hcEFuaW1hdGlvbkN1cnZlQ29lZmZpY2llbnRzWzNd
ID0gMyAqIChjb250cm9sVmVjdG9yMSAtIGNvbnRyb2xWZWN0b3IyKSAtIGluaXRpYWxPZmZzZXRB
c1NpemUgKyB0b0Zsb2F0U2l6ZShyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkpOworICAgIG1fZm9y
Y2VMaW5lYXJBbmltYXRpb25DdXJ2ZSA9IGZhbHNlOworfQorCitzdGF0aWMgY29uc3QgZmxvYXQg
ZnJhbWVzUGVyU2Vjb25kID0gNjAuMGY7CisKKy8qKgorICogQ29tcHV0ZXMgYW5kIHNldHMgcGFy
YW1ldGVycyByZXF1aXJlZCBmb3IgdHJhY2tpbmcgdGhlIHByb2dyZXNzIG9mIGEgc25hcCBhbmlt
YXRpb24gY3VydmUsIGludGVycG9sYXRlZAorICogb3IgbGluZWFyLiBUaGUgcHJvZ3Jlc3MgY3Vy
dmUgcyh0KSBtYXBzIHRpbWUgdCB0byBwcm9ncmVzcyBzOyBib3RoIHZhcmlhYmxlcyBhcmUgaW4g
dGhlIGludGVydmFsIFswLCAxXS4KKyAqIFRoZSB0aW1lIGlucHV0IHQgaXMgMCB3aGVuIHRoZSBj
dXJyZW50IHRpbWUgaXMgdGhlIHN0YXJ0IG9mIHRoZSBhbmltYXRpb24sIHQgPSAwLCBhbmQgMSB3
aGVuIHRoZSBjdXJyZW50CisgKiB0aW1lIGlzIGF0IG9yIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGFu
aW1hdGlvbiwgdCA9IG1fc2Nyb2xsU25hcEFuaW1hdGlvbkR1cmF0aW9uLgorICoKKyAqIEluIHRo
aXMgZXhwb25lbnRpYWwgcHJvZ3Jlc3MgbW9kZWwsIHModCkgPSBBIC0gQSAqIGJeKC1rdCksIHdo
ZXJlIGsgPSA2MFQgaXMgdGhlIG51bWJlciBvZiBmcmFtZXMgaW4gdGhlCisgKiBhbmltYXRpb24g
KGFzc3VtaW5nIDYwIEZQUyBhbmQgYW4gYW5pbWF0aW9uIGR1cmF0aW9uIG9mIFQpIGFuZCBBLCBi
IGFyZSByZWFscyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMS4KKyAqIEFsc28gbm90ZSB0aGF0
IHdlIGFyZSBnaXZlbiB0aGUgaW5pdGlhbCBwcm9ncmVzcywgYSB2YWx1ZSBpbmRpY2F0aW5nIHRo
ZSBwb3J0aW9uIG9mIHRoZSBjdXJ2ZSB3aGljaCBvdXIKKyAqIGluaXRpYWwgc2Nyb2xsIGRlbHRh
IHRha2VzIHVzLiBUaGlzIGlzIGltcG9ydGFudCB3aGVuIG1hdGNoaW5nIHRoZSBpbml0aWFsIHNw
ZWVkIG9mIHRoZSBhbmltYXRpb24gdG8gdGhlCisgKiB1c2VyJ3MgaW5pdGlhbCBtb21lbnR1bSBz
Y3JvbGxpbmcgc3BlZWQuIExldCB0aGlzIGluaXRpYWwgcHJvZ3Jlc3MgYW1vdW50IGVxdWFsIHZf
MC4gSSBjbGFtcCB0aGlzIGluaXRpYWwKKyAqIHByb2dyZXNzIGFtb3VudCB0byBhIG1pbmltdW0g
b3IgbWF4aW11bSB2YWx1ZS4KKyAqCisgKiBBIGlzIHJlZmVycmVkIHRvIGFzIHRoZSBjdXJ2ZSBt
YWduaXR1ZGUsIHdoaWxlIGIgaXMgcmVmZXJyZWQgdG8gYXMgdGhlIGRlY2F5IGZhY3Rvci4gV2Ug
c29sdmUgZm9yIEEgYW5kIGIsCisgKiBrZWVwaW5nIHRoZSBmb2xsb3dpbmcgY29uc3RyYWludHMg
aW4gbWluZDoKKyAqICAgICAxLiBzKDApID0gMAorICogICAgIDIuIHMoMSkgPSAxCisgKiAgICAg
My4gcygxL2spID0gdl8wCisgKgorICogRmlyc3QsIG9ic2VydmUgdGhhdCBzKDApID0gMCBob2xk
cyBmb3IgYXBwcm9wcmlhdGUgdmFsdWVzIG9mIEEsIGIuIFNvbHZpbmcgZm9yIHRoZSByZW1haW5p
bmcgY29uc3RyYWludHMKKyAqIHlpZWxkcyBhIG5vbmxpbmVhciBzeXN0ZW0gb2YgdHdvIGVxdWF0
aW9ucy4gSW4gbGlldSBvZiBhIHB1cmVseSBhbmFseXRpY2FsIHNvbHV0aW9uLCBhbiBhbHRlcm5h
dGluZworICogb3B0aW1pemF0aW9uIHNjaGVtZSBpcyB1c2VkIHRvIGFwcHJveGltYXRlIEEgYW5k
IGIuIFRoaXMgdGVjaG5pcXVlIGNvbnZlcmdlcyBxdWlja2x5ICh3aXRoaW4gNSBpdGVyYXRpb25z
CisgKiBvciBzbykgZm9yIGFwcHJvcHJpYXRlIHZhbHVlcyBvZiB2XzAuIFRoZSBvcHRpbWl6YXRp
b24gdGVybWluYXRlcyBlYXJseSB3aGVuIHRoZSBkZWNheSBmYWN0b3IgY2hhbmdlcyBieQorICog
bGVzcyB0aGFuIGEgdGhyZXNob2xkIGJldHdlZW4gb25lIGl0ZXJhdGlvbiBhbmQgdGhlIG5leHQu
CisgKi8KK3ZvaWQgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmluaXRpYWxpemVT
bmFwUHJvZ3Jlc3NDdXJ2ZSgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBtYXhOdW1TY3JvbGxT
bmFwUGFyYW1ldGVyRXN0aW1hdGlvbkl0ZXJhdGlvbnMgPSAxMDsKKyAgICBzdGF0aWMgY29uc3Qg
ZmxvYXQgc2Nyb2xsU25hcERlY2F5RmFjdG9yQ29udmVyZ2VuY2VUaHJlc2hvbGQgPSAwLjAwMTsK
KyAgICBzdGF0aWMgY29uc3QgZmxvYXQgaW5pdGlhbFNjcm9sbFNuYXBDdXJ2ZU1hZ25pdHVkZSA9
IDEuMTsKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWluU2Nyb2xsU25hcEluaXRpYWxQcm9ncmVz
cyA9IDAuMTsKKyAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWF4U2Nyb2xsU25hcEluaXRpYWxQcm9n
cmVzcyA9IDAuNTsKKworICAgIEZsb2F0U2l6ZSBhbGlnbm1lbnRWZWN0b3IgPSBtX2luaXRpYWxE
ZWx0YSAqIChyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQp
OworICAgIGZsb2F0IGluaXRpYWxQcm9ncmVzczsKKyAgICBpZiAoYWxpZ25tZW50VmVjdG9yLndp
ZHRoKCkgKyBhbGlnbm1lbnRWZWN0b3IuaGVpZ2h0KCkgPiAwKQorICAgICAgICBpbml0aWFsUHJv
Z3Jlc3MgPSBjbGFtcFRvKG1faW5pdGlhbERlbHRhLmRpYWdvbmFsTGVuZ3RoKCkgLyAocmV0YXJn
ZXRlZFNjcm9sbE9mZnNldCgpIC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0KS5kaWFnb25hbExlbmd0
aCgpLCBtaW5TY3JvbGxTbmFwSW5pdGlhbFByb2dyZXNzLCBtYXhTY3JvbGxTbmFwSW5pdGlhbFBy
b2dyZXNzKTsKKyAgICBlbHNlCisgICAgICAgIGluaXRpYWxQcm9ncmVzcyA9IG1pblNjcm9sbFNu
YXBJbml0aWFsUHJvZ3Jlc3M7CisKKyAgICBmbG9hdCBwcmV2aW91c0RlY2F5RmFjdG9yID0gMS4w
ZjsKKyAgICBtX3NuYXBBbmltYXRpb25DdXJ2ZU1hZ25pdHVkZSA9IGluaXRpYWxTY3JvbGxTbmFw
Q3VydmVNYWduaXR1ZGU7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhOdW1TY3JvbGxTbmFw
UGFyYW1ldGVyRXN0aW1hdGlvbkl0ZXJhdGlvbnM7ICsraSkgeworICAgICAgICBtX3NuYXBBbmlt
YXRpb25EZWNheUZhY3RvciA9IG1fc25hcEFuaW1hdGlvbkN1cnZlTWFnbml0dWRlIC8gKG1fc25h
cEFuaW1hdGlvbkN1cnZlTWFnbml0dWRlIC0gaW5pdGlhbFByb2dyZXNzKTsKKyAgICAgICAgbV9z
bmFwQW5pbWF0aW9uQ3VydmVNYWduaXR1ZGUgPSAxLjBmIC8gKDEuMGYgLSBzdGQ6OnBvdyhtX3Nu
YXBBbmltYXRpb25EZWNheUZhY3RvciwgLWZyYW1lc1BlclNlY29uZCAqIHNjcm9sbFNuYXBBbmlt
YXRpb25EdXJhdGlvbi52YWx1ZSgpKSk7CisgICAgICAgIGlmIChzdGQ6OmFicyhtX3NuYXBBbmlt
YXRpb25EZWNheUZhY3RvciAtIHByZXZpb3VzRGVjYXlGYWN0b3IpIDwgc2Nyb2xsU25hcERlY2F5
RmFjdG9yQ29udmVyZ2VuY2VUaHJlc2hvbGQpCisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBwcmV2aW91c0RlY2F5RmFjdG9yID0gbV9zbmFwQW5pbWF0aW9uRGVjYXlGYWN0b3I7CisgICAg
fQorfQorCitmbG9hdCBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6YW5pbWF0aW9u
UHJvZ3Jlc3NBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMgZWxhcHNlZFRpbWUpIGNvbnN0Cit7Cisg
ICAgZmxvYXQgdGltZVByb2dyZXNzID0gY2xhbXBUbzxmbG9hdD4oZWxhcHNlZFRpbWUgLyBzY3Jv
bGxTbmFwQW5pbWF0aW9uRHVyYXRpb24sIDAsIDEpOworICAgIHJldHVybiBzdGQ6Om1pbigxLjAs
IG1fc25hcEFuaW1hdGlvbkN1cnZlTWFnbml0dWRlICogKDEuMCAtIHN0ZDo6cG93KG1fc25hcEFu
aW1hdGlvbkRlY2F5RmFjdG9yLCAtZnJhbWVzUGVyU2Vjb25kICogc2Nyb2xsU25hcEFuaW1hdGlv
bkR1cmF0aW9uLnZhbHVlKCkgKiB0aW1lUHJvZ3Jlc3MpKSk7Cit9CisKK307IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjNzUxMzNmZjgxZWM0MWM0N2U0OWIwODU1
ODhiODBhM2YzZGUyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaApAQCAtMCwwICsxLDg3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKyNp
bmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRQb2ludDsKK2NsYXNzIEZsb2F0U2l6ZTsKKwor
Y2xhc3MgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRQbGF0
Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCk7CisKKyAgICBzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gY3JlYXRlKGNv
bnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXpl
LCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRp
YWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOworCisgICAgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25z
dCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0
LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFs
VmVsb2NpdHkpOworICAgIHZpcnR1YWwgflNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcigpID0g
ZGVmYXVsdDsKKworICAgIHZpcnR1YWwgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXRBZnRlckVsYXBz
ZWRUaW1lKFNlY29uZHMpID0gMDsKKyAgICB2aXJ0dWFsIFNlY29uZHMgYW5pbWF0aW9uRHVyYXRp
b24oKSA9IDA7CisgICAgdmlydHVhbCBGbG9hdFBvaW50IHByZWRpY3RlZERlc3RpbmF0aW9uT2Zm
c2V0KCk7CisgICAgdm9pZCBzZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0UG9p
bnQmKTsKKworcHJvdGVjdGVkOgorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHJldGFyZ2V0ZWRTY3Jv
bGxPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQudmFsdWUo
KTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0RGlkQ2hhbmdlKCkg
eyB9CisKKyAgICBGbG9hdFNpemUgbV9pbml0aWFsRGVsdGE7CisgICAgRmxvYXRTaXplIG1faW5p
dGlhbFZlbG9jaXR5OworICAgIEZsb2F0UG9pbnQgbV9pbml0aWFsU2Nyb2xsT2Zmc2V0OworICAg
IEZsb2F0U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKKyAgICBGbG9hdFNpemUgbV9jb250ZW50U2l6ZTsK
KworcHJpdmF0ZToKKyAgICBzdGQ6Om9wdGlvbmFsPEZsb2F0UG9pbnQ+IG1fcmV0YXJnZXRlZFNj
cm9sbE9mZnNldDsKK307CisKK2NsYXNzIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
IGZpbmFsIDogcHVibGljIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciB7CitwdWJsaWM6Cisg
ICAgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3
cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQm
IGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CisKK3ByaXZhdGU6CisgICAgRmxvYXRQb2ludCBzY3Jv
bGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMpIGZpbmFsOworICAgIFNlY29uZHMgYW5p
bWF0aW9uRHVyYXRpb24oKSBmaW5hbDsKKyAgICB2b2lkIGluaXRpYWxpemVJbnRlcnBvbGF0aW9u
Q29lZmZpY2llbnRzSWZOZWNlc3NhcnkoKTsKKyAgICB2b2lkIGluaXRpYWxpemVTbmFwUHJvZ3Jl
c3NDdXJ2ZSgpOworICAgIGZsb2F0IGFuaW1hdGlvblByb2dyZXNzQWZ0ZXJFbGFwc2VkVGltZShT
ZWNvbmRzKSBjb25zdDsKKyAgICBGbG9hdFBvaW50IGxpbmVhcmx5SW50ZXJwb2xhdGVkT2Zmc2V0
QXRQcm9ncmVzcyhmbG9hdCBwcm9ncmVzcyk7CisgICAgRmxvYXRQb2ludCBjdWJpY2FsbHlJbnRl
cnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNzKGZsb2F0IHByb2dyZXNzKSBjb25zdDsKKworICAgIGZs
b2F0IG1fc25hcEFuaW1hdGlvbkN1cnZlTWFnbml0dWRlIHsgMCB9OworICAgIGZsb2F0IG1fc25h
cEFuaW1hdGlvbkRlY2F5RmFjdG9yIHsgMCB9OworICAgIEZsb2F0U2l6ZSBtX3NuYXBBbmltYXRp
b25DdXJ2ZUNvZWZmaWNpZW50c1s0XSB7IH07CisgICAgYm9vbCBtX2ZvcmNlTGluZWFyQW5pbWF0
aW9uQ3VydmUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9tb21lbnR1bUNhbGN1bGF0b3JSZXF1aXJl
c0luaXRpYWxpemF0aW9uIHsgdHJ1ZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBt
X3ByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2Ft
ZXBhZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElE
R2FtZXBhZEVsZW1lbnQuY3BwCmluZGV4IDYwYzhkNDBhNTg2M2VhNjU0ZjFjNDE2N2ZhYWUxZGM0
MjhiZTQ3MDAuLjJlOTNmM2ZmMGJmOTg0ODJmNGUxNDMxNGQ3NzE2MjVmZGY5OWRiZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1l
cGFkRWxlbWVudC5jcHAKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShHQU1FUEFEKSAm
JiBQTEFURk9STShNQUMpCiAKKyNpbmNsdWRlIDxJT0tpdC9oaWQvSU9ISURFbGVtZW50Lmg+CisK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI3ByYWdtYSBtYXJrIEhJREdhbWVwYWRFbGVtZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKaW5kZXggMzg5YWFjMjg2
ZTg4NzNmMGY4NDdmM2EwZDA5ZGVjOGQ5MzhkYzA3My4uOGNmYzQ1Nzk2MzY1Nzc0Mjg4Y2NhNWM4
ZDA2OTdlZGVmZWIwMDJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmNwcApAQCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAK
KyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogUmVmPE1vZGVsPiBNb2RlbDo6Y3JlYXRlKFJlZjxTaGFyZWRCdWZmZXI+IGRhdGEsIFN0cmlu
ZyBtaW1lVHlwZSwgVVJMIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
YjU3ZjUzNWJlNjYxYjIxMzc5NGM3OTJhZjY3NDVhM2RhMjBiMmI2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ck1hYy5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KKworQGNsYXNzIF9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMg
ZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHsKK3B1YmxpYzoKKyAg
ICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9y
dFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGlu
aXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxWZWxvY2l0eSk7CisKK3ByaXZhdGU6CisgICAgRmxvYXRQb2ludCBzY3JvbGxP
ZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMpIGZpbmFsOworICAgIFNlY29uZHMgYW5pbWF0
aW9uRHVyYXRpb24oKSBmaW5hbDsKKyAgICBGbG9hdFBvaW50IHByZWRpY3RlZERlc3RpbmF0aW9u
T2Zmc2V0KCkgZmluYWw7CisgICAgdm9pZCByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0RGlkQ2hhbmdl
KCkgZmluYWw7CisKKyAgICBfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgKmVuc3VyZVBs
YXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCk7CisgICAgYm9vbCByZXF1aXJlc01vbWVudHVtU2Ny
b2xsaW5nKCk7CisKKyAgICBSZXRhaW5QdHI8X05TU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
PiBtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yOworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
bV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nOworICAgIEZsb2F0UG9pbnQgbV9pbml0aWFsRGVz
dGluYXRpb25PcmlnaW47Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZGMyMWVhNjU1NjVmN2U1OTQ5YjFmMjQ1ZjhjMzA2
MTllZjk4NmFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbQpAQCAtMCwwICsxLDEwNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yTWFjLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisKKyNpbXBvcnQgPHBhbC9zcGkv
bWFjL05TU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yU1BJLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIGJvb2wgZ0VuYWJsZVBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVk
aWN0aW9uID0gdHJ1ZTsKKworc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29uc3QgRmxvYXRTaXpl
JiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0
UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25z
dCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKK3sKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUs
IGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKK30KKwordm9p
ZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxp
bmdQcmVkaWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgZ0VuYWJsZVBsYXRmb3Jt
TW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uID0gZW5hYmxlZDsKK30KKworU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yTWFjOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMoY29uc3Qg
RmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKKyAgICA6IFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0
LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSkKK3sKK30KKworRmxvYXRQb2ludCBTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OnNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUo
U2Vjb25kcyBlbGFwc2VkVGltZSkKK3sKKyAgICBpZiAoIXJlcXVpcmVzTW9tZW50dW1TY3JvbGxp
bmcoKSkKKyAgICAgICAgcmV0dXJuIHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKTsKKworICAgIHJl
dHVybiBbZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IoKSBwb3NpdGlvbkFmdGVyRHVy
YXRpb246ZWxhcHNlZFRpbWUudmFsdWUoKV07Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yTWFjOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCit7CisgICAg
aWYgKCFnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24pCisgICAgICAg
IHJldHVybiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnByZWRpY3RlZERlc3RpbmF0aW9u
T2Zmc2V0KCk7CisKKyAgICBlbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpOworICAg
IHJldHVybiB7IG1faW5pdGlhbERlc3RpbmF0aW9uT3JpZ2luLngoKSwgbV9pbml0aWFsRGVzdGlu
YXRpb25PcmlnaW4ueSgpIH07Cit9CisKK3ZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjOjpyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0RGlkQ2hhbmdlKCkKK3sKKyAgICBfTlNTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3IgKmNhbGN1bGF0b3IgPSBlbnN1cmVQbGF0Zm9ybU1vbWVudHVt
Q2FsY3VsYXRvcigpOworICAgIGNhbGN1bGF0b3IuZGVzdGluYXRpb25PcmlnaW4gPSByZXRhcmdl
dGVkU2Nyb2xsT2Zmc2V0KCk7CisgICAgW2NhbGN1bGF0b3IgY2FsY3VsYXRlVG9SZWFjaERlc3Rp
bmF0aW9uXTsKK30KKworU2Vjb25kcyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OmFu
aW1hdGlvbkR1cmF0aW9uKCkKK3sKKyAgICBpZiAoIXJlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmco
KSkKKyAgICAgICAgcmV0dXJuIDBfczsKKworICAgIHJldHVybiBTZWNvbmRzKFtlbnN1cmVQbGF0
Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpIGR1cmF0aW9uVW50aWxTdG9wXSk7Cit9CisKK2Jvb2wg
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpyZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5n
KCkKK3sKKyAgICBpZiAobV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nID09IHN0ZDo6bnVsbG9w
dCkKKyAgICAgICAgbV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nID0gbV9pbml0aWFsU2Nyb2xs
T2Zmc2V0ICE9IHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSB8fCBtX2luaXRpYWxWZWxvY2l0eS5h
cmVhKCk7CisgICAgcmV0dXJuIG1fcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZy52YWx1ZSgpOwor
fQorCitfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgKlNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYzo6ZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IoKQoreworICAgIGlm
IChtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKQorICAgICAgICByZXR1cm4gbV9wbGF0Zm9y
bU1vbWVudHVtQ2FsY3VsYXRvci5nZXQoKTsKKworICAgIE5TUG9pbnQgb3JpZ2luID0gbV9pbml0
aWFsU2Nyb2xsT2Zmc2V0OworICAgIE5TUmVjdCBjb250ZW50RnJhbWUgPSBOU01ha2VSZWN0KDAs
IDAsIG1fY29udGVudFNpemUud2lkdGgoKSwgbV9jb250ZW50U2l6ZS5oZWlnaHQoKSk7CisgICAg
TlNQb2ludCB2ZWxvY2l0eSA9IE5TTWFrZVBvaW50KG1faW5pdGlhbFZlbG9jaXR5LndpZHRoKCks
IG1faW5pdGlhbFZlbG9jaXR5LmhlaWdodCgpKTsKKyAgICBtX3BsYXRmb3JtTW9tZW50dW1DYWxj
dWxhdG9yID0gYWRvcHROUyhbW19OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBhbGxvY10g
aW5pdFdpdGhJbml0aWFsT3JpZ2luOm9yaWdpbiB2ZWxvY2l0eTp2ZWxvY2l0eSBkb2N1bWVudEZy
YW1lOmNvbnRlbnRGcmFtZSBjb25zdHJhaW5lZENsaXBwaW5nT3JpZ2luOk5TWmVyb1BvaW50IGNs
aXBwaW5nU2l6ZTptX3ZpZXdwb3J0U2l6ZSB0b2xlcmFuY2U6TlNNYWtlU2l6ZSgxLCAxKV0pOwor
ICAgIG1faW5pdGlhbERlc3RpbmF0aW9uT3JpZ2luID0gW21fcGxhdGZvcm1Nb21lbnR1bUNhbGN1
bGF0b3IgZGVzdGluYXRpb25PcmlnaW5dOworICAgIHJldHVybiBtX3BsYXRmb3JtTW9tZW50dW1D
YWxjdWxhdG9yLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBQTEFURk9STShNQUMpCg==
</data>
<flag name="commit-queue"
          id="462005"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438575</attachid>
            <date>2021-09-18 18:14:22 -0700</date>
            <delta_ts>2021-09-18 19:55:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230452-20210918181421.patch</filename>
            <type>text/plain</type>
            <size>68856</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM1M2JjOWUxNjEwMGJm
N2QxNDNkNzJhMGFjZjg3MzZhMGM3ZTNhMS4uMzg5YjNmMzcyMzQ3M2FhYmFlYWYzMmQ5MGM3ZDVk
ZDZlNGEyODIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA5LTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yIGludG8gdGhlIHBsYXRmb3JtIGRpcmVjdG9yeQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDUyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYyBoYXZlIG5vIG5vbi1w
bGF0Zm9ybSBkZXBlbmRlbmNpZXMuCisKKyAgICAgICAgT3RoZXIgY2hhbmdlcyBhcmUgdW5pZmll
ZCBzb3VyY2VzIGZhbGxvdXQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBT
b3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmNwcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oLgorICAgICAgICAqIHBsYXRmb3JtL2dhbWVw
YWQvbWFjL0hJREdhbWVwYWRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Nb2RlbC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW06IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
TWFjLm1tLgorCiAyMDIxLTA5LTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFNjcm9sbCBvZmZzZXRzIGluIFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvciBzaG91bGQgYmUgRmxvYXRQb2ludCwgbm90IEZsb2F0U2l6ZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
aW5kZXggYmVmOTgzNmE2MDE0ODk3YmEwZjI4YmE2YzNlYTU3OGE2ZDRjZjEwMC4uZjQxMTMzNGQ2
YjcxNDczNzA1NzA2Y2UwNWY0ZGM2MTA0ODdjYTc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0x
MDE1LDcgKzEwMTUsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAg
ICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaAogICAgIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKICAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvclR5cGVzLmgKLSAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IuaAogICAgIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRml4ZWROb2RlLmgK
ICAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05vZGUuaAogICAg
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlLmgKQEAgLTEx
NDAsNiArMTEzOSw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAg
ICBwbGF0Zm9ybS9TY3JvbGxiYXIuaAogICAgIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKICAg
ICBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCisgICAgcGxhdGZvcm0vU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKICAgICBwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaAog
ICAgIHBsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaAogICAgIHBsYXRmb3JtL1Nl
cmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVWYWx1ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDVhYWQwZDkz
YzI5YmZhMzUxNWVlYzU5Y2NkYTk5MTY5MmM0MzkzMDQuLmQ4MGJkMzJjZTcwZDZmZTZmMTViOTlh
MjllZWU4NTI1OTc2ZGJhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xNzU0LDcgKzE3NTQsNiBAQCBw
YWdlL3Njcm9sbGluZy9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uY3BwCiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25z
dHJhaW50cy5jcHAKIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAotcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcAogcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdT
dGF0ZUZyYW1lSG9zdGluZ05vZGUuY3BwCiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZS5jcHAKQEAgLTE4MzQsNiArMTgzMyw3IEBAIHBsYXRmb3JtL1Njcm9s
bGJhci5jcHAKIHBsYXRmb3JtL1Njcm9sbGJhcnNDb250cm9sbGVyLmNwcAogcGxhdGZvcm0vU2Ny
b2xsYmFyVGhlbWUuY3BwCiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKK3Bs
YXRmb3JtL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKIHBsYXRmb3JtL1NlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWUuY3BwCiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4
IDk1YTkyZTFhM2U2YjJhZmMyYzVhMzE2NzRjYjk5MWY2NzMwNzU5YjAuLjNkZmI2ODFjMzc3MGU1
NmE4ZTExZmQ2Y2Y0OGJlMGUwYWQ4YTE1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAt
MjA5LDcgKzIwOSw2IEBAIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbFByb3h5Tm9kZS5tbQogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVBv
c2l0aW9uZWROb2RlLm1tCiBwYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZS5tbQogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCi1w
YWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCiBwYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlTWFjLm1tCiBwYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5tbQogcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVNYWMubW0KQEAgLTQ5Myw2ICs0OTIsNyBAQCBwbGF0
Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KIHBsYXRmb3JtL21hYy9TY3Jv
bGxWaWV3TWFjLm1tCiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyc0NvbnRyb2xsZXJNYWMubW0gQG5v
LXVuaWZ5CiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gQG5vLXVuaWZ5CitwbGF0
Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCiBwbGF0Zm9ybS9tYWMv
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5tbQogcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxp
dGllcy5tbQogcGxhdGZvcm0vbWFjL1N1ZGRlblRlcm1pbmF0aW9uLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWQxZGVhMThl
ZmJlMzZkM2E1MDZhNDZkZmRkODIyZjYyNTBiYzUzYi4uNzBiMDQwOWIzZWYxNmZhMGFkOGZmNWM4
ZmZjNWJhYTUzYzk2MTAzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzUwLDYgKzM1MCw4IEBACiAJCTBGOTRCNjUyMjIwOTE1
MDYwMDE1NzAxNCAvKiBTY3JvbGxpbmdTdGF0ZVBvc2l0aW9uZWROb2RlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk0QjY1MTIyMDkxNEZGMDAxNTcw
MTQgLyogU2Nyb2xsaW5nU3RhdGVQb3NpdGlvbmVkTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGOTRCNjU1MjIwOTMxRTQwMDE1NzAxNCAv
KiBTY3JvbGxpbmdUcmVlUG9zaXRpb25lZE5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTRCNjUzMjIwOTE1NkMwMDE1NzAxNCAvKiBTY3JvbGxp
bmdUcmVlUG9zaXRpb25lZE5vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjk0RjM3RTIzNjYxNjI2MDAzQUE1QzcgLyogU3R5bGVSdWxlVHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NEYz
N0MyMzY2MTEzMTAwM0FBNUM3IC8qIFN0eWxlUnVsZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjk5MDU5QTI2RjZCRTg1MDA1NEZCRTAg
LyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk5MDU5OTI2RjZCRTdGMDA1NEZCRTAgLyogU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY5OTA1OUQyNkY2QkU5QTAwNTRGQkUwIC8qIFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5OTA1OUIyNkY2QkU5NDAwNTRGQkUwIC8qIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYy5oICovOyB9OwogCQkwRjlEQUEwRjFGRDFDNjZBMDA3OUM1QjIgLyogRE9N
R0NPdXRwdXRDb25zdHJhaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjlEQUEwRTFGRDFDNjY0MDA3OUM1QjIgLyogRE9NR0NPdXRwdXRDb25zdHJh
aW50LmggKi87IH07CiAJCTBGQTI0RDdBMTYyREY5MTkwMEEzRjRDMCAvKiBHcmFwaGljc0xheWVy
VXBkYXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEZBMjRENzgxNjJERjkxOTAwQTNGNEMwIC8qIEdyYXBoaWNzTGF5ZXJVcGRhdGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZBNjFCMEUyNkY0
MzIxMzAwMUFBREI2IC8qIFNjcm9sbEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNjFCMEMyNkY0MzIxMjAwMUFBREI2IC8qIFNjcm9s
bEFuaW1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xNTg2LDcgKzE1ODgsNiBAQAogCQk1MTdBNjNDNTFCNzQzMThGMDBFN0RDREMgLyog
S2V5ZWREZWNvZGVyQ0YuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxN0E2M0MwMUI3NDMxN0UwMEU3RENEQyAvKiBLZXllZERlY29kZXJDRi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxN0E2M0M2MUI3
NDMxOTIwMEU3RENEQyAvKiBLZXllZEVuY29kZXJDRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTYzQzIxQjc0MzE3RTAwRTdEQ0RDIC8qIEtleWVk
RW5jb2RlckNGLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTE3QjI1QUExQ0M4MkIyQTAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QjI1QTgxQ0M4
MjAzMjAwNjFDMDExIC8qIElEQkNvbm5lY3Rpb25Qcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxN0RFRUU4MURFOTRCMDgwMEI5MTY0NCAv
KiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0RFRUU3MURFOTRCMDgwMEI5MTY0NCAvKiBTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTdFMDNGNzI0QjZEOTg0MDA1NDg5NUEgLyogTXVsdGlH
YW1lcGFkUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxN0UwM0Y0MjRCNkI5NjMwMDU0ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxODJD
MjU2MUYzMTQzQ0QwMDU5QkE3QyAvKiBKU1NlcnZpY2VXb3JrZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODJDMjUyMUYzMTQyNTAwMDU5QkE3QyAv
KiBKU1NlcnZpY2VXb3JrZXIuaCAqLzsgfTsKIAkJNTE4MkMyNTgxRjMxNDNDRDAwNTlCQTdDIC8q
IEpTU2VydmljZVdvcmtlckNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4MkMyNTQxRjMxNDI1MDAwNTlCQTdDIC8qIEpTU2VydmljZVdv
cmtlckNvbnRhaW5lci5oICovOyB9OwpAQCAtMTY0OCw3ICsxNjQ5LDYgQEAKIAkJNTFCQ0NFMzAx
RjhGMTc5RTAwNkJBMEVEIC8qIFNlcnZpY2VXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0M4NzEwMUY4RUU3MkUwMEVCODA3NiAv
KiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNTFCRTM3RTAwREFFRTAwRTAwMTA4NUZDIC8qIFN0b3JhZ2VBcmVh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUJFMzdE
RTBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUMwQUEzOTBGMkFBMTBBMDAxNjQ4QzIgLyog
Q2FjaGVkRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxQzBBQTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTUxQzYxQjBCMURFNTM2RTcw
MDhBMjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQzYxQjA5MURFNTM2RTcwMDhBMjEyRCAv
KiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUM4MUI4QTBDNDQyMkY3MDAxOUVDRTMgLyogRlRQ
RGlyZWN0b3J5UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUM4MUI4ODBDNDQyMkY3MDAxOUVDRTMgLyogRlRQRGlyZWN0b3J5UGFyc2VyLmgg
Ki87IH07CiAJCTUxQ0E3RUU5MUY4ODMzOTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
Q0E3RUU3MUY4ODMyRTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUNCRkM5OTBE
MTBFNDgzMDAyREJGNTEgLyogQ2FjaGVkRnJhbWVQbGF0Zm9ybURhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxQ0JGQzk4MEQxMEU0ODMwMDJEQkY1
MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02MzM0LDYgKzYzMzQsMTAgQEAKIAkJMEY5NTEwRjAy
NEY0NzY5QzAwMUY1MkRDIC8qIFNjcm9sbExhdGNoaW5nQ29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY5NTEwRjIyNEY0NzY5QzAwMUY1MkRDIC8qIFNjcm9sbExhdGNoaW5nQ29udHJvbGxl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxMYXRjaGluZ0NvbnRyb2xsZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjk3QTY1NzE1NURBODFFMDBGQURENEMgLyog
RGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRGlzcGxheVJlZnJlc2hNb25pdG9ySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjk5MDU5ODI2RjZCRTdGMDA1NEZCRTAgLyogU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTkwNTk5MjZGNkJF
N0YwMDU0RkJFMCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGOTkwNTlCMjZGNkJFOTQwMDU0RkJFMCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTkwNTlDMjZGNkJFOTUwMDU0RkJF
MCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGOUI1NDc1MjJCNEE3NzIwMDdCNUU4QSAvKiBTY3JvbGxpbmdTdGF0ZU92
ZXJmbG93U2Nyb2xsUHJveHlOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlT3Zl
cmZsb3dTY3JvbGxQcm94eU5vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5
QjU0NzYyMkI0QTc3MzAwN0I1RThBIC8qIFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxQcm94
eU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9s
bFByb3h5Tm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOURBQTBDMUZE
MUM2NjMwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NR0NPdXRwdXRDb25zdHJhaW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTkwNTUsOCArOTA1OSw2IEBACiAJCTUxN0M4NzEwMUY4
RUU3MkUwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyVGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFNlcnZpY2VXb3JrZXJUaHJlYWQuaDsgcGF0aCA9IHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwogCQk1MTdDODcxMTFGOEVFNzJGMDBFQjgwNzYgLyogU2VydmljZVdvcmtlclRocmVh
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTZXJ2aWNlV29ya2Vy
VGhyZWFkLmNwcDsgcGF0aCA9IHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxN0M4NzE2MUY4RkQ0
RDMwMEVCODA3NiAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRleHREYXRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE3REVFRTMxREU5NEFEQzAwQjkxNjQ0IC8qIFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE3REVFRTcxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE3RTAzRjQyNEI2Qjk2MzAwNTQ4OTVBIC8qIE11bHRpR2FtZXBhZFByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3Zp
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0UwM0Y1MjRCNkI5NjQwMDU0
ODk1QSAvKiBNdWx0aUdhbWVwYWRQcm92aWRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IE11bHRpR2FtZXBhZFByb3ZpZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTdGQkExNzE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93RXh0ZW5z
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4
dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MTM5LDggKzkxNDEs
NiBAQAogCQk1MUJFMzdERTBEQUVFMDBFMDAxMDg1RkMgLyogU3RvcmFnZUFyZWEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUFyZWEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFDMEFBMzgwRjJBQTEwQTAwMTY0OEMyIC8qIENhY2hlZEZyYW1lLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZEZyYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQzBBQTQwMEYyQUExNUUwMDE2NDhDMiAvKiBDYWNoZWRG
cmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRGcmFt
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxQzYxQjA4MURFNTM2RTcwMDhB
MjEyRCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTFDNjFCMDkxREU1MzZFNzAwOEEyMTJEIC8qIFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFDODFCODcwQzQ0MjJGNzAwMTlFQ0UzIC8qIEZUUERpcmVjdG9yeVBhcnNlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRlRQRGlyZWN0b3J5UGFy
c2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFDODFCODgwQzQ0MjJGNzAw
MTlFQ0UzIC8qIEZUUERpcmVjdG9yeVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRlRQRGlyZWN0b3J5UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxQ0E3RUU3MUY4ODMyRTAwMDNEMzEzMSAvKiBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODg2OCw4ICsxODg2OCw2IEBA
CiAJCQkJMUFGNjJFRTQxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cCAqLywKIAkJCQkxQUY2MkVFNTE0REEyMkE3MDA0MTU1NkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuaCAqLywKIAkJCQk3MTJEQkE0NzIxRjhBRDc5MDA4RjM2QjIgLyogU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUeXBlcy5oICovLAotCQkJCTUxQzYxQjA4MURFNTM2RTcwMDhBMjEyRCAvKiBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3IuY3BwICovLAotCQkJCTUxQzYxQjA5MURFNTM2RTcwMDhBMjEy
RCAvKiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCAqLywKIAkJCQk5M0MzOEJGQzE2NDQ3
M0M3MDAwOTFFQjIgLyogU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuY3BwICovLAogCQkJCTkzQzM4
QkZEMTY0NDczQzcwMDA5MUVCMiAvKiBTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oICovLAogCQkJ
CTBGRDQxRTYzMjFGODAyNjAwMDBDMDA2RCAvKiBTY3JvbGxpbmdTdGF0ZUZyYW1lSG9zdGluZ05v
ZGUuY3BwICovLApAQCAtMTg5MjUsOCArMTg5MjMsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
OTM5MUE5OTAxNjI3NDZDQjAwMjk3MzMwIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmggKi8s
CiAJCQkJMUFGNjJFRTMxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
Lm1tICovLAotCQkJCTUxN0RFRUU3MURFOTRCMDgwMEI5MTY0NCAvKiBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWMuaCAqLywKLQkJCQk1MTdERUVFMzFERTk0QURDMDBCOTE2NDQgLyogU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tICovLAogCQkJCTBGNzNCNzY1MjIyQjMyN0Yw
MDgwNTMxNiAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGVNYWMubW0gKi8sCiAJCQkJOTND
NEE0MTMxNjI5REY1QTAwQzNFQjZFIC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVN
YWMuaCAqLywKIAkJCQk5M0M0QTQxNDE2MjlERjVBMDBDM0VCNkUgLyogU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYy5tbSAqLywKQEAgLTIyMTgwLDYgKzIyMTc2LDggQEAKIAkJCQlC
QzhCODUzQzBFN0M3RjExMDBBQjY5ODQgLyogU2Nyb2xsYmFyVGhlbWVNYWMuaCAqLywKIAkJCQlC
Q0VGODY5RTBFODQ0RTlEMDBBODVDRDUgLyogU2Nyb2xsYmFyVGhlbWVNYWMubW0gKi8sCiAJCQkJ
NUIxRTBFNDMyNUQxNjI5QjAwMjcyMjgxIC8qIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1t
ICovLAorCQkJCTBGOTkwNTlCMjZGNkJFOTQwMDU0RkJFMCAvKiBTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3JNYWMuaCAqLywKKwkJCQkwRjk5MDU5QzI2RjZCRTk1MDA1NEZCRTAgLyogU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tICovLAogCQkJCTkzNTM2NzZBMDlBRUQ4OEIwMEQz
NUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tICovLAogCQkJCTA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2
MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggKi8sCiAJCQkJMDc3QUYxNDIxOEY0
QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMubW0gKi8sCkBAIC0y
ODE1Nyw2ICsyODE1NSw4IEBACiAJCQkJQkMxNDAyODkwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlLmggKi8sCiAJCQkJNUI0NjY1NUUyNUQxNEMwOTAwMENGRTE0IC8q
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcCAqLywKIAkJCQk1QjQ2NjU1RjI1RDE0QzA5
MDAwQ0ZFMTQgLyogU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCAqLywKKwkJCQkwRjk5MDU5
ODI2RjZCRTdGMDA1NEZCRTAgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcCAqLywK
KwkJCQkwRjk5MDU5OTI2RjZCRTdGMDA1NEZCRTAgLyogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yLmggKi8sCiAJCQkJNUI0NjY1NUQyNUQxNEMwOTAwMENGRTE0IC8qIFNjcm9sbFNuYXBBbmlt
YXRvclN0YXRlLmNwcCAqLywKIAkJCQk1QjQ2NjU2MDI1RDE0QzBBMDAwQ0ZFMTQgLyogU2Nyb2xs
U25hcEFuaW1hdG9yU3RhdGUuaCAqLywKIAkJCQkwRjRDREVBQTIzRDkxQThBMDAyNTFCMDIgLyog
U2Nyb2xsVHlwZXMuY3BwICovLApAQCAtMzQ5NDMsOCArMzQ5NDMsOCBAQAogCQkJCTkzOTFBOTkx
MTYyNzQ2Q0IwMDI5NzMzMCAvKiBTY3JvbGxpbmdDb29yZGluYXRvck1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzEyREJBNDkyMUY4QUQ4MzAwOEYzNkIyIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVCNDY2NTYzMjVEMTRDMEEwMDBDRkUxNCAvKiBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTFDNjFCMEIx
REU1MzZFNzAwOEEyMTJEIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJNTE3REVFRTgxREU5NEIwODAwQjkxNjQ0IC8qIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5OTA1OUEyNkY2QkU4NTAwNTRG
QkUwIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY5OTA1OUQyNkY2QkU5QTAwNTRGQkUwIC8qIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNDMzhCRkYxNjQ0NzNDNzAwMDkxRUIyIC8qIFNjcm9s
bGluZ1N0YXRlRml4ZWROb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ0MUU2OTIxRjgwRDE0
MDAwQzAwNkQgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZUhvc3RpbmdOb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVBM0U3QjE5MUIyRkM1MDAwRjFCNTUgLyogU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjMDY4YzM2NTBhMDM4ZGM4MTdiYTlkZTMzMjA5
M2I0Yzc1ODYyYTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvci5o
IgotCi0jaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBjb25zdCBTZWNvbmRzIHNjcm9sbFNuYXBBbmlt
YXRpb25EdXJhdGlvbiA9IDFfczsKLXN0YXRpYyBpbmxpbmUgZmxvYXQgcHJvamVjdGVkSW5lcnRp
YWxTY3JvbGxEaXN0YW5jZShmbG9hdCBpbml0aWFsV2hlZWxEZWx0YSkKLXsKLSAgICAvLyBPbiBt
YWNPUyAxMC4xMCBhbmQgZWFybGllciwgd2UgZG9uJ3QgaGF2ZSBhIHBsYXRmb3JtIHNjcm9sbGlu
ZyBtb21lbnR1bSBjYWxjdWxhdG9yLCBzbyB3ZSBpbnN0ZWFkIGFwcHJveGltYXRlIHRoZSBzY3Jv
bGwgZGVzdGluYXRpb24KLSAgICAvLyBieSBtdWx0aXBseWluZyB0aGUgaW5pdGlhbCB3aGVlbCBk
ZWx0YSBieSBhIGNvbnN0YW50IGZhY3Rvci4gQnkgcnVubmluZyBhIGZldyBleHBlcmltZW50cyAo
aS5lLiBsb2dnaW5nIHNjcm9sbCBkZXN0aW5hdGlvbiBhbmQgaW5pdGlhbAotICAgIC8vIHdoZWVs
IGRlbHRhIGZvciBtYW55IHNjcm9sbCBnZXN0dXJlcykgd2UgZGV0ZXJtaW5lZCB0aGF0IHRoaXMg
aXMgYSByZWFzb25hYmxlIHdheSB0byBhcHByb3hpbWF0ZSB3aGVyZSBzY3JvbGxpbmcgd2lsbCB0
YWtlIHVzIHdpdGhvdXQKLSAgICAvLyB1c2luZyBfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3IuCi0gICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgaW5lcnRpYWxTY3JvbGxQcmVkaWN0aW9u
RmFjdG9yID0gMTYuNzsKLSAgICByZXR1cm4gaW5lcnRpYWxTY3JvbGxQcmVkaWN0aW9uRmFjdG9y
ICogaW5pdGlhbFdoZWVsRGVsdGE7Ci19Ci0KLVNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXpl
LCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFs
T2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBp
bml0aWFsVmVsb2NpdHkpCi0gICAgOiBtX2luaXRpYWxEZWx0YShpbml0aWFsRGVsdGEpCi0gICAg
LCBtX2luaXRpYWxWZWxvY2l0eShpbml0aWFsVmVsb2NpdHkpCi0gICAgLCBtX2luaXRpYWxTY3Jv
bGxPZmZzZXQoaW5pdGlhbE9mZnNldCkKLSAgICAsIG1fdmlld3BvcnRTaXplKHZpZXdwb3J0U2l6
ZSkKLSAgICAsIG1fY29udGVudFNpemUoY29udGVudFNpemUpCi17Ci19Ci0KLXZvaWQgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KGNvbnN0IEZs
b2F0UG9pbnQmIHRhcmdldCkKLXsKLSAgICBpZiAobV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0ICYm
IG1fcmV0YXJnZXRlZFNjcm9sbE9mZnNldCA9PSB0YXJnZXQpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIG1fcmV0YXJnZXRlZFNjcm9sbE9mZnNldCA9IHRhcmdldDsKLSAgICByZXRhcmdldGVkU2Ny
b2xsT2Zmc2V0RGlkQ2hhbmdlKCk7Ci19Ci0KLUZsb2F0UG9pbnQgU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCi17Ci0gICAgZmxvYXQgaW5p
dGlhbE9mZnNldFggPSBjbGFtcFRvPGZsb2F0PihtX2luaXRpYWxTY3JvbGxPZmZzZXQueCgpICsg
cHJvamVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZShtX2luaXRpYWxEZWx0YS53aWR0aCgpKSwg
MCwgbV9jb250ZW50U2l6ZS53aWR0aCgpIC0gbV92aWV3cG9ydFNpemUud2lkdGgoKSk7Ci0gICAg
ZmxvYXQgaW5pdGlhbE9mZnNldFkgPSBjbGFtcFRvPGZsb2F0PihtX2luaXRpYWxTY3JvbGxPZmZz
ZXQueSgpICsgcHJvamVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZShtX2luaXRpYWxEZWx0YS5o
ZWlnaHQoKSksIDAsIG1fY29udGVudFNpemUuaGVpZ2h0KCkgLSBtX3ZpZXdwb3J0U2l6ZS5oZWln
aHQoKSk7Ci0gICAgcmV0dXJuIHsgaW5pdGlhbE9mZnNldFgsIGluaXRpYWxPZmZzZXRZIH07Ci19
Ci0KLSNpZiAhUExBVEZPUk0oTUFDKQotCi1zdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBG
bG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29u
c3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVs
dGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQotewotICAgIHJldHVybiBtYWtl
VW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPih2aWV3cG9ydFNpemUsIGNv
bnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7
Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVu
dHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCkKLXsKLX0KLQotI2VuZGlmCi0KLUJh
c2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBj
b250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRT
aXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQotICAg
IDogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUs
IGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KQotewotfQotCi1G
bG9hdFBvaW50IEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpsaW5lYXJseUludGVy
cG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpCi17Ci0gICAgcmV0dXJuIG1f
aW5pdGlhbFNjcm9sbE9mZnNldCArIHByb2dyZXNzICogKHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQo
KSAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCk7Ci19Ci0KLUZsb2F0UG9pbnQgQmFzaWNTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3I6OmN1YmljYWxseUludGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jl
c3MoZmxvYXQgcHJvZ3Jlc3MpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFtX2ZvcmNlTGluZWFyQW5p
bWF0aW9uQ3VydmUpOwotICAgIEZsb2F0UG9pbnQgaW50ZXJwb2xhdGVkUG9pbnQ7Ci0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCi0gICAgICAgIGludGVycG9sYXRlZFBvaW50ICs9IHN0
ZDo6cG93KHByb2dyZXNzLCBpKSAqIG1fc25hcEFuaW1hdGlvbkN1cnZlQ29lZmZpY2llbnRzW2ld
OwotCi0gICAgcmV0dXJuIGludGVycG9sYXRlZFBvaW50OwotfQotCi1GbG9hdFBvaW50IEJhc2lj
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1l
KFNlY29uZHMgZWxhcHNlZFRpbWUpCi17Ci0gICAgaWYgKG1fbW9tZW50dW1DYWxjdWxhdG9yUmVx
dWlyZXNJbml0aWFsaXphdGlvbikgewotICAgICAgICBpbml0aWFsaXplU25hcFByb2dyZXNzQ3Vy
dmUoKTsKLSAgICAgICAgaW5pdGlhbGl6ZUludGVycG9sYXRpb25Db2VmZmljaWVudHNJZk5lY2Vz
c2FyeSgpOwotICAgICAgICBtX21vbWVudHVtQ2FsY3VsYXRvclJlcXVpcmVzSW5pdGlhbGl6YXRp
b24gPSBmYWxzZTsKLSAgICB9Ci0KLSAgICBmbG9hdCBwcm9ncmVzcyA9IGFuaW1hdGlvblByb2dy
ZXNzQWZ0ZXJFbGFwc2VkVGltZShlbGFwc2VkVGltZSk7Ci0gICAgcmV0dXJuIG1fZm9yY2VMaW5l
YXJBbmltYXRpb25DdXJ2ZSA/IGxpbmVhcmx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhw
cm9ncmVzcykgOiBjdWJpY2FsbHlJbnRlcnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNzKHByb2dyZXNz
KTsKLX0KLQotU2Vjb25kcyBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6YW5pbWF0
aW9uRHVyYXRpb24oKQotewotICAgIHJldHVybiBzY3JvbGxTbmFwQW5pbWF0aW9uRHVyYXRpb247
Ci19Ci0KLS8qKgotICogQ29tcHV0ZXMgYW5kIHNldHMgY29lZmZpY2llbnRzIHJlcXVpcmVkIGZv
ciBpbnRlcnBvbGF0ZWQgc25hcHBpbmcgd2hlbiBzY3JvbGxpbmcgaW4gMiBkaW1lbnNpb25zLCBn
aXZlbgotICogaW5pdGlhbCBjb25kaXRpb25zICh0aGUgaW5pdGlhbCBhbmQgdGFyZ2V0IHZlY3Rv
cnMsIGFsb25nIHdpdGggdGhlIGluaXRpYWwgd2hlZWwgZGVsdGEgYXMgYSB2ZWN0b3IpLiBUaGUK
LSAqIHBhdGggaXMgYSBjdWJpYyBCZXppZXIgY3VydmUgb2YgdGhlIGZvcm0gcChzKSA9IElOSVRJ
QUwgKyAoQ18xICogcykgKyAoQ18yICogc14yKSArIChDXzMgKiBzXjMpIHdoZXJlIGVhY2gKLSAq
IENfaSBpcyBhIDJEIHZlY3RvciBhbmQgSU5JVElBTCBpcyB0aGUgdmVjdG9yIHJlcHJlc2VudGlu
ZyB0aGUgaW5pdGlhbCBzY3JvbGwgb2Zmc2V0LiBzIGlzIGEgcmVhbCBpbiB0aGUKLSAqIGludGVy
dmFsIFswLCAxXSBpbmRpY2F0aW5nIHRoZSAicHJvZ3Jlc3MiIG9mIHRoZSBjdXJ2ZSAoaS5lLiBo
b3cgbXVjaCBvZiB0aGUgY3VydmUgaGFzIGJlZW4gdHJhdmVsZWQpLgotICoKLSAqIFRoZSBjdXJ2
ZSBoYXMgNCBjb250cm9sIHBvaW50cywgdGhlIGZpcnN0IGFuZCBsYXN0IG9mIHdoaWNoIGFyZSB0
aGUgaW5pdGlhbCBhbmQgdGFyZ2V0IHBvaW50cywgcmVzcGVjdGl2ZWx5LgotICogVGhlIGRpc3Rh
bmNlcyBiZXR3ZWVuIGFkamFjZW50IGNvbnRyb2wgcG9pbnRzIGFyZSBjb25zdHJhaW5lZCB0byBi
ZSB0aGUgc2FtZSwgbWFraW5nIHRoZSBjb252ZXggaHVsbCBhbgotICogaXNvc2NlbGVzIHRyYXBl
em9pZCB3aXRoIDMgc2lkZXMgb2YgZXF1YWwgbGVuZ3RoLiBBZGRpdGlvbmFsbHksIHRoZSB2ZWN0
b3IgZnJvbSB0aGUgZmlyc3QgY29udHJvbCBwb2ludCB0bwotICogdGhlIHNlY29uZCBwb2ludHMg
aW4gdGhlIHNhbWUgZGlyZWN0aW9uIGFzIHRoZSBpbml0aWFsIHNjcm9sbCBkZWx0YS4gVGhlc2Ug
Y29uc3RyYWludHMgZW5zdXJlIHR3byBwcm9wZXJ0aWVzOgotICogICAgIDEuIFRoZSBkaXJlY3Rp
b24gb2YgdGhlIHNuYXAgYW5pbWF0aW9uIGF0IHM9MCB3aWxsIGJlIGVxdWFsIHRvIHRoZSBkaXJl
Y3Rpb24gb2YgdGhlIGluaXRpYWwgc2Nyb2xsIGRlbHRhLgotICogICAgIDIuIFBvaW50cyBhdCBy
ZWd1bGFyIGludGVydmFscyBvZiBzIHdpbGwgYmUgZXZlbmx5IHNwcmVhZCBvdXQuCi0gKgotICog
SWYgdGhlIGluaXRpYWwgc2Nyb2xsIGRpcmVjdGlvbiBpcyBvcnRob2dvbmFsIHRvIG9yIHBvaW50
cyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIGFzIHRoZSB2ZWN0b3IgZnJvbSB0aGUKLSAqIGlu
aXRpYWwgcG9pbnQgdG8gdGhlIHRhcmdldCBwb2ludCwgaW5pdGlhbGl6YXRpb24gcmV0dXJucyBl
YXJseSBhbmQgc2V0cyB0aGUgY3VydmUgdG8gYW5pbWF0ZSBkaXJlY3RseSB0byB0aGUKLSAqIHNu
YXAgcG9pbnQgd2l0aG91dCBjdWJpYyBpbnRlcnBvbGF0aW9uLgotICoKLSAqIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSByZWZhY3RvcmVkIHRvIHVzZSBVbml0QmV6aWVyLgotICovCi12b2lkIEJhc2lj
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjppbml0aWFsaXplSW50ZXJwb2xhdGlvbkNvZWZm
aWNpZW50c0lmTmVjZXNzYXJ5KCkKLXsKLSAgICBtX2ZvcmNlTGluZWFyQW5pbWF0aW9uQ3VydmUg
PSB0cnVlOwotICAgIGZsb2F0IGluaXRpYWxEZWx0YU1hZ25pdHVkZSA9IG1faW5pdGlhbERlbHRh
LmRpYWdvbmFsTGVuZ3RoKCk7Ci0gICAgaWYgKGluaXRpYWxEZWx0YU1hZ25pdHVkZSA8IDEpIHsK
LSAgICAgICAgLy8gVGhlIGluaXRpYWwgd2hlZWwgZGVsdGEgaXMgc28gaW5zaWduaWZpY2FudCB0
aGF0IHdlJ3JlIGJldHRlciBvZmYgY29uc2lkZXJpbmcgdGhpcyB0byBoYXZlIHRoZSBzYW1lIGVm
ZmVjdCBhcyBmaW5pc2hpbmcgYSBzY3JvbGwgZ2VzdHVyZSB3aXRoIG5vIG1vbWVudHVtLgotICAg
ICAgICAvLyBUaHVzLCBjdWJpYyBpbnRlcnBvbGF0aW9uIGlzbid0IG5lZWRlZCBoZXJlLgotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgRmxvYXRTaXplIHN0YXJ0VG9FbmRWZWN0b3IgPSBy
ZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQ7Ci0gICAgZmxv
YXQgc3RhcnRUb0VuZERpc3RhbmNlID0gc3RhcnRUb0VuZFZlY3Rvci5kaWFnb25hbExlbmd0aCgp
OwotICAgIGlmICghc3RhcnRUb0VuZERpc3RhbmNlKSB7Ci0gICAgICAgIC8vIFRoZSBzdGFydCBh
bmQgZW5kIHBvc2l0aW9ucyBhcmUgdGhlIHNhbWUsIHNvIHdlIHNob3VsZG4ndCB0cnkgdG8gaW50
ZXJwb2xhdGUgYSBwYXRoLgotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZmxvYXQgY29z
VGhldGEgPSAobV9pbml0aWFsRGVsdGEud2lkdGgoKSAqIHN0YXJ0VG9FbmRWZWN0b3Iud2lkdGgo
KSArIG1faW5pdGlhbERlbHRhLmhlaWdodCgpICogc3RhcnRUb0VuZFZlY3Rvci5oZWlnaHQoKSkg
LyAoaW5pdGlhbERlbHRhTWFnbml0dWRlICogc3RhcnRUb0VuZERpc3RhbmNlKTsKLSAgICBpZiAo
Y29zVGhldGEgPD0gMCkgewotICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHVzZXIg
aXMgbm90IHNjcm9sbGluZyB0b3dhcmRzIHRoZSB0YXJnZXQgc25hcCBvZmZzZXQgKGZvciBpbnN0
YW5jZSwgc2Nyb2xsaW5nIGFnYWluc3QgYSBjb3JuZXIgd2hlbiAyRCBzY3JvbGwgc25hcHBpbmcp
LgotICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIGp1c3QgbGV0IHRoZSBzY3JvbGwgb2Zmc2V0IGFu
aW1hdGUgdG8gdGhlIHRhcmdldCB3aXRob3V0IGNvbXB1dGluZyBhIGN1YmljIGN1cnZlLgotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZmxvYXQgc2lkZUxlbmd0aCA9IHN0YXJ0VG9FbmRE
aXN0YW5jZSAvICgyLjBmICogY29zVGhldGEgKyAxLjBmKTsKLSAgICBhdXRvIGluaXRpYWxPZmZz
ZXRBc1NpemUgPSB0b0Zsb2F0U2l6ZShtX2luaXRpYWxTY3JvbGxPZmZzZXQpOwotICAgIEZsb2F0
U2l6ZSBjb250cm9sVmVjdG9yMSA9IGluaXRpYWxPZmZzZXRBc1NpemUgKyBzaWRlTGVuZ3RoICog
bV9pbml0aWFsRGVsdGEgLyBpbml0aWFsRGVsdGFNYWduaXR1ZGU7Ci0gICAgRmxvYXRTaXplIGNv
bnRyb2xWZWN0b3IyID0gY29udHJvbFZlY3RvcjEgKyAoc2lkZUxlbmd0aCAqIHN0YXJ0VG9FbmRW
ZWN0b3IgLyBzdGFydFRvRW5kRGlzdGFuY2UpOwotICAgIG1fc25hcEFuaW1hdGlvbkN1cnZlQ29l
ZmZpY2llbnRzWzBdID0gaW5pdGlhbE9mZnNldEFzU2l6ZTsKLSAgICBtX3NuYXBBbmltYXRpb25D
dXJ2ZUNvZWZmaWNpZW50c1sxXSA9IDMgKiAoY29udHJvbFZlY3RvcjEgLSBpbml0aWFsT2Zmc2V0
QXNTaXplKTsKLSAgICBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZmaWNpZW50c1syXSA9IDMgKiAo
aW5pdGlhbE9mZnNldEFzU2l6ZSAtIDIgKiBjb250cm9sVmVjdG9yMSArIGNvbnRyb2xWZWN0b3Iy
KTsKLSAgICBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZmaWNpZW50c1szXSA9IDMgKiAoY29udHJv
bFZlY3RvcjEgLSBjb250cm9sVmVjdG9yMikgLSBpbml0aWFsT2Zmc2V0QXNTaXplICsgdG9GbG9h
dFNpemUocmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpKTsKLSAgICBtX2ZvcmNlTGluZWFyQW5pbWF0
aW9uQ3VydmUgPSBmYWxzZTsKLX0KLQotc3RhdGljIGNvbnN0IGZsb2F0IGZyYW1lc1BlclNlY29u
ZCA9IDYwLjBmOwotCi0vKioKLSAqIENvbXB1dGVzIGFuZCBzZXRzIHBhcmFtZXRlcnMgcmVxdWly
ZWQgZm9yIHRyYWNraW5nIHRoZSBwcm9ncmVzcyBvZiBhIHNuYXAgYW5pbWF0aW9uIGN1cnZlLCBp
bnRlcnBvbGF0ZWQKLSAqIG9yIGxpbmVhci4gVGhlIHByb2dyZXNzIGN1cnZlIHModCkgbWFwcyB0
aW1lIHQgdG8gcHJvZ3Jlc3MgczsgYm90aCB2YXJpYWJsZXMgYXJlIGluIHRoZSBpbnRlcnZhbCBb
MCwgMV0uCi0gKiBUaGUgdGltZSBpbnB1dCB0IGlzIDAgd2hlbiB0aGUgY3VycmVudCB0aW1lIGlz
IHRoZSBzdGFydCBvZiB0aGUgYW5pbWF0aW9uLCB0ID0gMCwgYW5kIDEgd2hlbiB0aGUgY3VycmVu
dAotICogdGltZSBpcyBhdCBvciBhZnRlciB0aGUgZW5kIG9mIHRoZSBhbmltYXRpb24sIHQgPSBt
X3Njcm9sbFNuYXBBbmltYXRpb25EdXJhdGlvbi4KLSAqCi0gKiBJbiB0aGlzIGV4cG9uZW50aWFs
IHByb2dyZXNzIG1vZGVsLCBzKHQpID0gQSAtIEEgKiBiXigta3QpLCB3aGVyZSBrID0gNjBUIGlz
IHRoZSBudW1iZXIgb2YgZnJhbWVzIGluIHRoZQotICogYW5pbWF0aW9uIChhc3N1bWluZyA2MCBG
UFMgYW5kIGFuIGFuaW1hdGlvbiBkdXJhdGlvbiBvZiBUKSBhbmQgQSwgYiBhcmUgcmVhbHMgZ3Jl
YXRlciB0aGFuIG9yIGVxdWFsIHRvIDEuCi0gKiBBbHNvIG5vdGUgdGhhdCB3ZSBhcmUgZ2l2ZW4g
dGhlIGluaXRpYWwgcHJvZ3Jlc3MsIGEgdmFsdWUgaW5kaWNhdGluZyB0aGUgcG9ydGlvbiBvZiB0
aGUgY3VydmUgd2hpY2ggb3VyCi0gKiBpbml0aWFsIHNjcm9sbCBkZWx0YSB0YWtlcyB1cy4gVGhp
cyBpcyBpbXBvcnRhbnQgd2hlbiBtYXRjaGluZyB0aGUgaW5pdGlhbCBzcGVlZCBvZiB0aGUgYW5p
bWF0aW9uIHRvIHRoZQotICogdXNlcidzIGluaXRpYWwgbW9tZW50dW0gc2Nyb2xsaW5nIHNwZWVk
LiBMZXQgdGhpcyBpbml0aWFsIHByb2dyZXNzIGFtb3VudCBlcXVhbCB2XzAuIEkgY2xhbXAgdGhp
cyBpbml0aWFsCi0gKiBwcm9ncmVzcyBhbW91bnQgdG8gYSBtaW5pbXVtIG9yIG1heGltdW0gdmFs
dWUuCi0gKgotICogQSBpcyByZWZlcnJlZCB0byBhcyB0aGUgY3VydmUgbWFnbml0dWRlLCB3aGls
ZSBiIGlzIHJlZmVycmVkIHRvIGFzIHRoZSBkZWNheSBmYWN0b3IuIFdlIHNvbHZlIGZvciBBIGFu
ZCBiLAotICoga2VlcGluZyB0aGUgZm9sbG93aW5nIGNvbnN0cmFpbnRzIGluIG1pbmQ6Ci0gKiAg
ICAgMS4gcygwKSA9IDAKLSAqICAgICAyLiBzKDEpID0gMQotICogICAgIDMuIHMoMS9rKSA9IHZf
MAotICoKLSAqIEZpcnN0LCBvYnNlcnZlIHRoYXQgcygwKSA9IDAgaG9sZHMgZm9yIGFwcHJvcHJp
YXRlIHZhbHVlcyBvZiBBLCBiLiBTb2x2aW5nIGZvciB0aGUgcmVtYWluaW5nIGNvbnN0cmFpbnRz
Ci0gKiB5aWVsZHMgYSBub25saW5lYXIgc3lzdGVtIG9mIHR3byBlcXVhdGlvbnMuIEluIGxpZXUg
b2YgYSBwdXJlbHkgYW5hbHl0aWNhbCBzb2x1dGlvbiwgYW4gYWx0ZXJuYXRpbmcKLSAqIG9wdGlt
aXphdGlvbiBzY2hlbWUgaXMgdXNlZCB0byBhcHByb3hpbWF0ZSBBIGFuZCBiLiBUaGlzIHRlY2hu
aXF1ZSBjb252ZXJnZXMgcXVpY2tseSAod2l0aGluIDUgaXRlcmF0aW9ucwotICogb3Igc28pIGZv
ciBhcHByb3ByaWF0ZSB2YWx1ZXMgb2Ygdl8wLiBUaGUgb3B0aW1pemF0aW9uIHRlcm1pbmF0ZXMg
ZWFybHkgd2hlbiB0aGUgZGVjYXkgZmFjdG9yIGNoYW5nZXMgYnkKLSAqIGxlc3MgdGhhbiBhIHRo
cmVzaG9sZCBiZXR3ZWVuIG9uZSBpdGVyYXRpb24gYW5kIHRoZSBuZXh0LgotICovCi12b2lkIEJh
c2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjppbml0aWFsaXplU25hcFByb2dyZXNzQ3Vy
dmUoKQotewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWF4TnVtU2Nyb2xsU25hcFBhcmFtZXRlckVz
dGltYXRpb25JdGVyYXRpb25zID0gMTA7Ci0gICAgc3RhdGljIGNvbnN0IGZsb2F0IHNjcm9sbFNu
YXBEZWNheUZhY3RvckNvbnZlcmdlbmNlVGhyZXNob2xkID0gMC4wMDE7Ci0gICAgc3RhdGljIGNv
bnN0IGZsb2F0IGluaXRpYWxTY3JvbGxTbmFwQ3VydmVNYWduaXR1ZGUgPSAxLjE7Ci0gICAgc3Rh
dGljIGNvbnN0IGZsb2F0IG1pblNjcm9sbFNuYXBJbml0aWFsUHJvZ3Jlc3MgPSAwLjE7Ci0gICAg
c3RhdGljIGNvbnN0IGZsb2F0IG1heFNjcm9sbFNuYXBJbml0aWFsUHJvZ3Jlc3MgPSAwLjU7Ci0K
LSAgICBGbG9hdFNpemUgYWxpZ25tZW50VmVjdG9yID0gbV9pbml0aWFsRGVsdGEgKiAocmV0YXJn
ZXRlZFNjcm9sbE9mZnNldCgpIC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0KTsKLSAgICBmbG9hdCBp
bml0aWFsUHJvZ3Jlc3M7Ci0gICAgaWYgKGFsaWdubWVudFZlY3Rvci53aWR0aCgpICsgYWxpZ25t
ZW50VmVjdG9yLmhlaWdodCgpID4gMCkKLSAgICAgICAgaW5pdGlhbFByb2dyZXNzID0gY2xhbXBU
byhtX2luaXRpYWxEZWx0YS5kaWFnb25hbExlbmd0aCgpIC8gKHJldGFyZ2V0ZWRTY3JvbGxPZmZz
ZXQoKSAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCkuZGlhZ29uYWxMZW5ndGgoKSwgbWluU2Nyb2xs
U25hcEluaXRpYWxQcm9ncmVzcywgbWF4U2Nyb2xsU25hcEluaXRpYWxQcm9ncmVzcyk7Ci0gICAg
ZWxzZQotICAgICAgICBpbml0aWFsUHJvZ3Jlc3MgPSBtaW5TY3JvbGxTbmFwSW5pdGlhbFByb2dy
ZXNzOwotCi0gICAgZmxvYXQgcHJldmlvdXNEZWNheUZhY3RvciA9IDEuMGY7Ci0gICAgbV9zbmFw
QW5pbWF0aW9uQ3VydmVNYWduaXR1ZGUgPSBpbml0aWFsU2Nyb2xsU25hcEN1cnZlTWFnbml0dWRl
OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4TnVtU2Nyb2xsU25hcFBhcmFtZXRlckVzdGlt
YXRpb25JdGVyYXRpb25zOyArK2kpIHsKLSAgICAgICAgbV9zbmFwQW5pbWF0aW9uRGVjYXlGYWN0
b3IgPSBtX3NuYXBBbmltYXRpb25DdXJ2ZU1hZ25pdHVkZSAvIChtX3NuYXBBbmltYXRpb25DdXJ2
ZU1hZ25pdHVkZSAtIGluaXRpYWxQcm9ncmVzcyk7Ci0gICAgICAgIG1fc25hcEFuaW1hdGlvbkN1
cnZlTWFnbml0dWRlID0gMS4wZiAvICgxLjBmIC0gc3RkOjpwb3cobV9zbmFwQW5pbWF0aW9uRGVj
YXlGYWN0b3IsIC1mcmFtZXNQZXJTZWNvbmQgKiBzY3JvbGxTbmFwQW5pbWF0aW9uRHVyYXRpb24u
dmFsdWUoKSkpOwotICAgICAgICBpZiAoc3RkOjphYnMobV9zbmFwQW5pbWF0aW9uRGVjYXlGYWN0
b3IgLSBwcmV2aW91c0RlY2F5RmFjdG9yKSA8IHNjcm9sbFNuYXBEZWNheUZhY3RvckNvbnZlcmdl
bmNlVGhyZXNob2xkKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgcHJldmlvdXNEZWNh
eUZhY3RvciA9IG1fc25hcEFuaW1hdGlvbkRlY2F5RmFjdG9yOwotICAgIH0KLX0KLQotZmxvYXQg
QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmFuaW1hdGlvblByb2dyZXNzQWZ0ZXJF
bGFwc2VkVGltZShTZWNvbmRzIGVsYXBzZWRUaW1lKSBjb25zdAotewotICAgIGZsb2F0IHRpbWVQ
cm9ncmVzcyA9IGNsYW1wVG88ZmxvYXQ+KGVsYXBzZWRUaW1lIC8gc2Nyb2xsU25hcEFuaW1hdGlv
bkR1cmF0aW9uLCAwLCAxKTsKLSAgICByZXR1cm4gc3RkOjptaW4oMS4wLCBtX3NuYXBBbmltYXRp
b25DdXJ2ZU1hZ25pdHVkZSAqICgxLjAgLSBzdGQ6OnBvdyhtX3NuYXBBbmltYXRpb25EZWNheUZh
Y3RvciwgLWZyYW1lc1BlclNlY29uZCAqIHNjcm9sbFNuYXBBbmltYXRpb25EdXJhdGlvbi52YWx1
ZSgpICogdGltZVByb2dyZXNzKSkpOwotfQotCi19OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM3NTEzM2Zm
ODFlYzQxYzQ3ZTQ5YjA4NTU4OGI4MGEzZjNkZTJlMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVu
dC5oIgotI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCi0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGbG9hdFBvaW50OwotY2xhc3MgRmxvYXRT
aXplOwotCi1jbGFzcyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sKTsKLQot
ICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29u
dGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7Ci0KLSAg
ICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUm
IGluaXRpYWxWZWxvY2l0eSk7Ci0gICAgdmlydHVhbCB+U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yKCkgPSBkZWZhdWx0OwotCi0gICAgdmlydHVhbCBGbG9hdFBvaW50IHNjcm9sbE9mZnNldEFm
dGVyRWxhcHNlZFRpbWUoU2Vjb25kcykgPSAwOwotICAgIHZpcnR1YWwgU2Vjb25kcyBhbmltYXRp
b25EdXJhdGlvbigpID0gMDsKLSAgICB2aXJ0dWFsIEZsb2F0UG9pbnQgcHJlZGljdGVkRGVzdGlu
YXRpb25PZmZzZXQoKTsKLSAgICB2b2lkIHNldFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoY29uc3Qg
RmxvYXRQb2ludCYpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgY29uc3QgRmxvYXRQb2ludCYgcmV0YXJn
ZXRlZFNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmV0YXJnZXRlZFNjcm9sbE9mZnNl
dC52YWx1ZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXREaWRD
aGFuZ2UoKSB7IH0KLQotICAgIEZsb2F0U2l6ZSBtX2luaXRpYWxEZWx0YTsKLSAgICBGbG9hdFNp
emUgbV9pbml0aWFsVmVsb2NpdHk7Ci0gICAgRmxvYXRQb2ludCBtX2luaXRpYWxTY3JvbGxPZmZz
ZXQ7Ci0gICAgRmxvYXRTaXplIG1fdmlld3BvcnRTaXplOwotICAgIEZsb2F0U2l6ZSBtX2NvbnRl
bnRTaXplOwotCi1wcml2YXRlOgotICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbV9yZXRh
cmdldGVkU2Nyb2xsT2Zmc2V0OwotfTsKLQotY2xhc3MgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IgZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHsKLXB1
YmxpYzoKLSAgICBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNp
emUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxv
YXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKLQotcHJpdmF0ZToKLSAgICBGbG9hdFBv
aW50IHNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcykgZmluYWw7Ci0gICAgU2Vj
b25kcyBhbmltYXRpb25EdXJhdGlvbigpIGZpbmFsOwotICAgIHZvaWQgaW5pdGlhbGl6ZUludGVy
cG9sYXRpb25Db2VmZmljaWVudHNJZk5lY2Vzc2FyeSgpOwotICAgIHZvaWQgaW5pdGlhbGl6ZVNu
YXBQcm9ncmVzc0N1cnZlKCk7Ci0gICAgZmxvYXQgYW5pbWF0aW9uUHJvZ3Jlc3NBZnRlckVsYXBz
ZWRUaW1lKFNlY29uZHMpIGNvbnN0OwotICAgIEZsb2F0UG9pbnQgbGluZWFybHlJbnRlcnBvbGF0
ZWRPZmZzZXRBdFByb2dyZXNzKGZsb2F0IHByb2dyZXNzKTsKLSAgICBGbG9hdFBvaW50IGN1Ymlj
YWxseUludGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpIGNvbnN0Owot
Ci0gICAgZmxvYXQgbV9zbmFwQW5pbWF0aW9uQ3VydmVNYWduaXR1ZGUgeyAwIH07Ci0gICAgZmxv
YXQgbV9zbmFwQW5pbWF0aW9uRGVjYXlGYWN0b3IgeyAwIH07Ci0gICAgRmxvYXRTaXplIG1fc25h
cEFuaW1hdGlvbkN1cnZlQ29lZmZpY2llbnRzWzRdIHsgfTsKLSAgICBib29sIG1fZm9yY2VMaW5l
YXJBbmltYXRpb25DdXJ2ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21vbWVudHVtQ2FsY3VsYXRv
clJlcXVpcmVzSW5pdGlhbGl6YXRpb24geyB0cnVlIH07Ci0gICAgc3RkOjpvcHRpb25hbDxGbG9h
dFNpemU+IG1fcHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQ7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDNiNTdmNTM1YmU2NjFiMjEzNzk0Yzc5MmFmNjc0NWEzZGEyMGIy
YjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgiCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi1AY2xhc3MgX05TU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYyBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Igewot
cHVibGljOgotICAgIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYyhjb25zdCBGbG9hdFNp
emUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxv
YXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKLQotcHJpdmF0ZToKLSAgICBGbG9hdFBv
aW50IHNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcykgZmluYWw7Ci0gICAgU2Vj
b25kcyBhbmltYXRpb25EdXJhdGlvbigpIGZpbmFsOwotICAgIEZsb2F0UG9pbnQgcHJlZGljdGVk
RGVzdGluYXRpb25PZmZzZXQoKSBmaW5hbDsKLSAgICB2b2lkIHJldGFyZ2V0ZWRTY3JvbGxPZmZz
ZXREaWRDaGFuZ2UoKSBmaW5hbDsKLQotICAgIF9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ciAqZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IoKTsKLSAgICBib29sIHJlcXVpcmVz
TW9tZW50dW1TY3JvbGxpbmcoKTsKLQotICAgIFJldGFpblB0cjxfTlNTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I+IG1fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3I7Ci0gICAgc3RkOjpvcHRp
b25hbDxib29sPiBtX3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmc7Ci0gICAgRmxvYXRQb2ludCBt
X2luaXRpYWxEZXN0aW5hdGlvbk9yaWdpbjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2ZGMyMWVhNjU1NjVmN2U1OTQ5YjFmMjQ1ZjhjMzA2MTllZjk4NmFlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0KKysr
IC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZp
Zy5oIgotI2ltcG9ydCAiU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgiCi0KLSNpZiBQ
TEFURk9STShNQUMpCi0KLSNpbXBvcnQgPHBhbC9zcGkvbWFjL05TU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yU1BJLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3RhdGljIGJvb2wgZ0Vu
YWJsZVBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uID0gdHJ1ZTsKLQotc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxv
Y2l0eSkKLXsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3JNYWM+KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxE
ZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKLX0KLQotdm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29s
IGVuYWJsZWQpCi17Ci0gICAgZ0VuYWJsZVBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0
aW9uID0gZW5hYmxlZDsKLX0KLQotU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUs
IGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxP
ZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGlu
aXRpYWxWZWxvY2l0eSkKLSAgICA6IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcih2aWV3cG9y
dFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxW
ZWxvY2l0eSkKLXsKLX0KLQotRmxvYXRQb2ludCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWM6OnNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcyBlbGFwc2VkVGltZSkKLXsK
LSAgICBpZiAoIXJlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcoKSkKLSAgICAgICAgcmV0dXJuIHJl
dGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKTsKLQotICAgIHJldHVybiBbZW5zdXJlUGxhdGZvcm1Nb21l
bnR1bUNhbGN1bGF0b3IoKSBwb3NpdGlvbkFmdGVyRHVyYXRpb246ZWxhcHNlZFRpbWUudmFsdWUo
KV07Ci19Ci0KLUZsb2F0UG9pbnQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpwcmVk
aWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCi17Ci0gICAgaWYgKCFnRW5hYmxlUGxhdGZvcm1Nb21l
bnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24pCi0gICAgICAgIHJldHVybiBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I6OnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCk7Ci0KLSAgICBlbnN1cmVQ
bGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpOwotICAgIHJldHVybiB7IG1faW5pdGlhbERlc3Rp
bmF0aW9uT3JpZ2luLngoKSwgbV9pbml0aWFsRGVzdGluYXRpb25PcmlnaW4ueSgpIH07Ci19Ci0K
LXZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpyZXRhcmdldGVkU2Nyb2xsT2Zm
c2V0RGlkQ2hhbmdlKCkKLXsKLSAgICBfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgKmNh
bGN1bGF0b3IgPSBlbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpOwotICAgIGNhbGN1
bGF0b3IuZGVzdGluYXRpb25PcmlnaW4gPSByZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCk7Ci0gICAg
W2NhbGN1bGF0b3IgY2FsY3VsYXRlVG9SZWFjaERlc3RpbmF0aW9uXTsKLX0KLQotU2Vjb25kcyBT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OmFuaW1hdGlvbkR1cmF0aW9uKCkKLXsKLSAg
ICBpZiAoIXJlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcoKSkKLSAgICAgICAgcmV0dXJuIDBfczsK
LQotICAgIHJldHVybiBTZWNvbmRzKFtlbnN1cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigp
IGR1cmF0aW9uVW50aWxTdG9wXSk7Ci19Ci0KLWJvb2wgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjOjpyZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nKCkKLXsKLSAgICBpZiAobV9yZXF1aXJl
c01vbWVudHVtU2Nyb2xsaW5nID09IHN0ZDo6bnVsbG9wdCkKLSAgICAgICAgbV9yZXF1aXJlc01v
bWVudHVtU2Nyb2xsaW5nID0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0ICE9IHJldGFyZ2V0ZWRTY3Jv
bGxPZmZzZXQoKSB8fCBtX2luaXRpYWxWZWxvY2l0eS5hcmVhKCk7Ci0gICAgcmV0dXJuIG1fcmVx
dWlyZXNNb21lbnR1bVNjcm9sbGluZy52YWx1ZSgpOwotfQotCi1fTlNTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IgKlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6ZW5zdXJlUGxhdGZv
cm1Nb21lbnR1bUNhbGN1bGF0b3IoKQotewotICAgIGlmIChtX3BsYXRmb3JtTW9tZW50dW1DYWxj
dWxhdG9yKQotICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvci5nZXQo
KTsKLQotICAgIE5TUG9pbnQgb3JpZ2luID0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0OwotICAgIE5T
UmVjdCBjb250ZW50RnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIG1fY29udGVudFNpemUud2lkdGgo
KSwgbV9jb250ZW50U2l6ZS5oZWlnaHQoKSk7Ci0gICAgTlNQb2ludCB2ZWxvY2l0eSA9IE5TTWFr
ZVBvaW50KG1faW5pdGlhbFZlbG9jaXR5LndpZHRoKCksIG1faW5pdGlhbFZlbG9jaXR5LmhlaWdo
dCgpKTsKLSAgICBtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yID0gYWRvcHROUyhbW19OU1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBhbGxvY10gaW5pdFdpdGhJbml0aWFsT3JpZ2luOm9y
aWdpbiB2ZWxvY2l0eTp2ZWxvY2l0eSBkb2N1bWVudEZyYW1lOmNvbnRlbnRGcmFtZSBjb25zdHJh
aW5lZENsaXBwaW5nT3JpZ2luOk5TWmVyb1BvaW50IGNsaXBwaW5nU2l6ZTptX3ZpZXdwb3J0U2l6
ZSB0b2xlcmFuY2U6TlNNYWtlU2l6ZSgxLCAxKV0pOwotICAgIG1faW5pdGlhbERlc3RpbmF0aW9u
T3JpZ2luID0gW21fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IgZGVzdGluYXRpb25PcmlnaW5d
OwotICAgIHJldHVybiBtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yLmdldCgpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hYzA2OGMzNjUwYTAzOGRjODE3YmE5ZGUzMzIwOTNiNGM3NTg2MmE0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmNwcApAQCAtMCwwICsxLDIzNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCIK
KworI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGbG9hdFNpemUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgY29uc3QgU2Vjb25kcyBzY3JvbGxTbmFwQW5pbWF0
aW9uRHVyYXRpb24gPSAxX3M7CitzdGF0aWMgaW5saW5lIGZsb2F0IHByb2plY3RlZEluZXJ0aWFs
U2Nyb2xsRGlzdGFuY2UoZmxvYXQgaW5pdGlhbFdoZWVsRGVsdGEpCit7CisgICAgLy8gT24gbWFj
T1MgMTAuMTAgYW5kIGVhcmxpZXIsIHdlIGRvbid0IGhhdmUgYSBwbGF0Zm9ybSBzY3JvbGxpbmcg
bW9tZW50dW0gY2FsY3VsYXRvciwgc28gd2UgaW5zdGVhZCBhcHByb3hpbWF0ZSB0aGUgc2Nyb2xs
IGRlc3RpbmF0aW9uCisgICAgLy8gYnkgbXVsdGlwbHlpbmcgdGhlIGluaXRpYWwgd2hlZWwgZGVs
dGEgYnkgYSBjb25zdGFudCBmYWN0b3IuIEJ5IHJ1bm5pbmcgYSBmZXcgZXhwZXJpbWVudHMgKGku
ZS4gbG9nZ2luZyBzY3JvbGwgZGVzdGluYXRpb24gYW5kIGluaXRpYWwKKyAgICAvLyB3aGVlbCBk
ZWx0YSBmb3IgbWFueSBzY3JvbGwgZ2VzdHVyZXMpIHdlIGRldGVybWluZWQgdGhhdCB0aGlzIGlz
IGEgcmVhc29uYWJsZSB3YXkgdG8gYXBwcm94aW1hdGUgd2hlcmUgc2Nyb2xsaW5nIHdpbGwgdGFr
ZSB1cyB3aXRob3V0CisgICAgLy8gdXNpbmcgX05TU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
LgorICAgIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGluZXJ0aWFsU2Nyb2xsUHJlZGljdGlvbkZh
Y3RvciA9IDE2Ljc7CisgICAgcmV0dXJuIGluZXJ0aWFsU2Nyb2xsUHJlZGljdGlvbkZhY3RvciAq
IGluaXRpYWxXaGVlbERlbHRhOworfQorCitTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OlNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwg
Y29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9m
ZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5p
dGlhbFZlbG9jaXR5KQorICAgIDogbV9pbml0aWFsRGVsdGEoaW5pdGlhbERlbHRhKQorICAgICwg
bV9pbml0aWFsVmVsb2NpdHkoaW5pdGlhbFZlbG9jaXR5KQorICAgICwgbV9pbml0aWFsU2Nyb2xs
T2Zmc2V0KGluaXRpYWxPZmZzZXQpCisgICAgLCBtX3ZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUp
CisgICAgLCBtX2NvbnRlbnRTaXplKGNvbnRlbnRTaXplKQoreworfQorCit2b2lkIFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UmV0YXJnZXRlZFNjcm9sbE9mZnNldChjb25zdCBGbG9h
dFBvaW50JiB0YXJnZXQpCit7CisgICAgaWYgKG1fcmV0YXJnZXRlZFNjcm9sbE9mZnNldCAmJiBt
X3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQgPT0gdGFyZ2V0KQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX3JldGFyZ2V0ZWRTY3JvbGxPZmZzZXQgPSB0YXJnZXQ7CisgICAgcmV0YXJnZXRlZFNjcm9s
bE9mZnNldERpZENoYW5nZSgpOworfQorCitGbG9hdFBvaW50IFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvcjo6cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKQoreworICAgIGZsb2F0IGluaXRp
YWxPZmZzZXRYID0gY2xhbXBUbzxmbG9hdD4obV9pbml0aWFsU2Nyb2xsT2Zmc2V0LngoKSArIHBy
b2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2UobV9pbml0aWFsRGVsdGEud2lkdGgoKSksIDAs
IG1fY29udGVudFNpemUud2lkdGgoKSAtIG1fdmlld3BvcnRTaXplLndpZHRoKCkpOworICAgIGZs
b2F0IGluaXRpYWxPZmZzZXRZID0gY2xhbXBUbzxmbG9hdD4obV9pbml0aWFsU2Nyb2xsT2Zmc2V0
LnkoKSArIHByb2plY3RlZEluZXJ0aWFsU2Nyb2xsRGlzdGFuY2UobV9pbml0aWFsRGVsdGEuaGVp
Z2h0KCkpLCAwLCBtX2NvbnRlbnRTaXplLmhlaWdodCgpIC0gbV92aWV3cG9ydFNpemUuaGVpZ2h0
KCkpOworICAgIHJldHVybiB7IGluaXRpYWxPZmZzZXRYLCBpbml0aWFsT2Zmc2V0WSB9OworfQor
CisjaWYgIVBMQVRGT1JNKE1BQykKKworc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29uc3QgRmxv
YXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0
IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRh
LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKK3sKKyAgICByZXR1cm4gbWFrZVVu
aXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmlld3BvcnRTaXplLCBjb250
ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwor
fQorCit2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1
bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpCit7Cit9CisKKyNlbmRpZgorCitCYXNp
Y1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29u
dGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKKyAgICA6
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBp
bml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSkKK3sKK30KKworRmxv
YXRQb2ludCBCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6bGluZWFybHlJbnRlcnBv
bGF0ZWRPZmZzZXRBdFByb2dyZXNzKGZsb2F0IHByb2dyZXNzKQoreworICAgIHJldHVybiBtX2lu
aXRpYWxTY3JvbGxPZmZzZXQgKyBwcm9ncmVzcyAqIChyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KCkg
LSBtX2luaXRpYWxTY3JvbGxPZmZzZXQpOworfQorCitGbG9hdFBvaW50IEJhc2ljU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yOjpjdWJpY2FsbHlJbnRlcnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNz
KGZsb2F0IHByb2dyZXNzKSBjb25zdAoreworICAgIEFTU0VSVCghbV9mb3JjZUxpbmVhckFuaW1h
dGlvbkN1cnZlKTsKKyAgICBGbG9hdFBvaW50IGludGVycG9sYXRlZFBvaW50OworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgNDsgKytpKQorICAgICAgICBpbnRlcnBvbGF0ZWRQb2ludCArPSBzdGQ6
OnBvdyhwcm9ncmVzcywgaSkgKiBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZmaWNpZW50c1tpXTsK
KworICAgIHJldHVybiBpbnRlcnBvbGF0ZWRQb2ludDsKK30KKworRmxvYXRQb2ludCBCYXNpY1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShT
ZWNvbmRzIGVsYXBzZWRUaW1lKQoreworICAgIGlmIChtX21vbWVudHVtQ2FsY3VsYXRvclJlcXVp
cmVzSW5pdGlhbGl6YXRpb24pIHsKKyAgICAgICAgaW5pdGlhbGl6ZVNuYXBQcm9ncmVzc0N1cnZl
KCk7CisgICAgICAgIGluaXRpYWxpemVJbnRlcnBvbGF0aW9uQ29lZmZpY2llbnRzSWZOZWNlc3Nh
cnkoKTsKKyAgICAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3JSZXF1aXJlc0luaXRpYWxpemF0aW9u
ID0gZmFsc2U7CisgICAgfQorCisgICAgZmxvYXQgcHJvZ3Jlc3MgPSBhbmltYXRpb25Qcm9ncmVz
c0FmdGVyRWxhcHNlZFRpbWUoZWxhcHNlZFRpbWUpOworICAgIHJldHVybiBtX2ZvcmNlTGluZWFy
QW5pbWF0aW9uQ3VydmUgPyBsaW5lYXJseUludGVycG9sYXRlZE9mZnNldEF0UHJvZ3Jlc3MocHJv
Z3Jlc3MpIDogY3ViaWNhbGx5SW50ZXJwb2xhdGVkT2Zmc2V0QXRQcm9ncmVzcyhwcm9ncmVzcyk7
Cit9CisKK1NlY29uZHMgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmFuaW1hdGlv
bkR1cmF0aW9uKCkKK3sKKyAgICByZXR1cm4gc2Nyb2xsU25hcEFuaW1hdGlvbkR1cmF0aW9uOwor
fQorCisvKioKKyAqIENvbXB1dGVzIGFuZCBzZXRzIGNvZWZmaWNpZW50cyByZXF1aXJlZCBmb3Ig
aW50ZXJwb2xhdGVkIHNuYXBwaW5nIHdoZW4gc2Nyb2xsaW5nIGluIDIgZGltZW5zaW9ucywgZ2l2
ZW4KKyAqIGluaXRpYWwgY29uZGl0aW9ucyAodGhlIGluaXRpYWwgYW5kIHRhcmdldCB2ZWN0b3Jz
LCBhbG9uZyB3aXRoIHRoZSBpbml0aWFsIHdoZWVsIGRlbHRhIGFzIGEgdmVjdG9yKS4gVGhlCisg
KiBwYXRoIGlzIGEgY3ViaWMgQmV6aWVyIGN1cnZlIG9mIHRoZSBmb3JtIHAocykgPSBJTklUSUFM
ICsgKENfMSAqIHMpICsgKENfMiAqIHNeMikgKyAoQ18zICogc14zKSB3aGVyZSBlYWNoCisgKiBD
X2kgaXMgYSAyRCB2ZWN0b3IgYW5kIElOSVRJQUwgaXMgdGhlIHZlY3RvciByZXByZXNlbnRpbmcg
dGhlIGluaXRpYWwgc2Nyb2xsIG9mZnNldC4gcyBpcyBhIHJlYWwgaW4gdGhlCisgKiBpbnRlcnZh
bCBbMCwgMV0gaW5kaWNhdGluZyB0aGUgInByb2dyZXNzIiBvZiB0aGUgY3VydmUgKGkuZS4gaG93
IG11Y2ggb2YgdGhlIGN1cnZlIGhhcyBiZWVuIHRyYXZlbGVkKS4KKyAqCisgKiBUaGUgY3VydmUg
aGFzIDQgY29udHJvbCBwb2ludHMsIHRoZSBmaXJzdCBhbmQgbGFzdCBvZiB3aGljaCBhcmUgdGhl
IGluaXRpYWwgYW5kIHRhcmdldCBwb2ludHMsIHJlc3BlY3RpdmVseS4KKyAqIFRoZSBkaXN0YW5j
ZXMgYmV0d2VlbiBhZGphY2VudCBjb250cm9sIHBvaW50cyBhcmUgY29uc3RyYWluZWQgdG8gYmUg
dGhlIHNhbWUsIG1ha2luZyB0aGUgY29udmV4IGh1bGwgYW4KKyAqIGlzb3NjZWxlcyB0cmFwZXpv
aWQgd2l0aCAzIHNpZGVzIG9mIGVxdWFsIGxlbmd0aC4gQWRkaXRpb25hbGx5LCB0aGUgdmVjdG9y
IGZyb20gdGhlIGZpcnN0IGNvbnRyb2wgcG9pbnQgdG8KKyAqIHRoZSBzZWNvbmQgcG9pbnRzIGlu
IHRoZSBzYW1lIGRpcmVjdGlvbiBhcyB0aGUgaW5pdGlhbCBzY3JvbGwgZGVsdGEuIFRoZXNlIGNv
bnN0cmFpbnRzIGVuc3VyZSB0d28gcHJvcGVydGllczoKKyAqICAgICAxLiBUaGUgZGlyZWN0aW9u
IG9mIHRoZSBzbmFwIGFuaW1hdGlvbiBhdCBzPTAgd2lsbCBiZSBlcXVhbCB0byB0aGUgZGlyZWN0
aW9uIG9mIHRoZSBpbml0aWFsIHNjcm9sbCBkZWx0YS4KKyAqICAgICAyLiBQb2ludHMgYXQgcmVn
dWxhciBpbnRlcnZhbHMgb2YgcyB3aWxsIGJlIGV2ZW5seSBzcHJlYWQgb3V0LgorICoKKyAqIElm
IHRoZSBpbml0aWFsIHNjcm9sbCBkaXJlY3Rpb24gaXMgb3J0aG9nb25hbCB0byBvciBwb2ludHMg
aW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiBhcyB0aGUgdmVjdG9yIGZyb20gdGhlCisgKiBpbml0
aWFsIHBvaW50IHRvIHRoZSB0YXJnZXQgcG9pbnQsIGluaXRpYWxpemF0aW9uIHJldHVybnMgZWFy
bHkgYW5kIHNldHMgdGhlIGN1cnZlIHRvIGFuaW1hdGUgZGlyZWN0bHkgdG8gdGhlCisgKiBzbmFw
IHBvaW50IHdpdGhvdXQgY3ViaWMgaW50ZXJwb2xhdGlvbi4KKyAqCisgKiBGSVhNRTogVGhpcyBz
aG91bGQgYmUgcmVmYWN0b3JlZCB0byB1c2UgVW5pdEJlemllci4KKyAqLwordm9pZCBCYXNpY1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6aW5pdGlhbGl6ZUludGVycG9sYXRpb25Db2VmZmlj
aWVudHNJZk5lY2Vzc2FyeSgpCit7CisgICAgbV9mb3JjZUxpbmVhckFuaW1hdGlvbkN1cnZlID0g
dHJ1ZTsKKyAgICBmbG9hdCBpbml0aWFsRGVsdGFNYWduaXR1ZGUgPSBtX2luaXRpYWxEZWx0YS5k
aWFnb25hbExlbmd0aCgpOworICAgIGlmIChpbml0aWFsRGVsdGFNYWduaXR1ZGUgPCAxKSB7Cisg
ICAgICAgIC8vIFRoZSBpbml0aWFsIHdoZWVsIGRlbHRhIGlzIHNvIGluc2lnbmlmaWNhbnQgdGhh
dCB3ZSdyZSBiZXR0ZXIgb2ZmIGNvbnNpZGVyaW5nIHRoaXMgdG8gaGF2ZSB0aGUgc2FtZSBlZmZl
Y3QgYXMgZmluaXNoaW5nIGEgc2Nyb2xsIGdlc3R1cmUgd2l0aCBubyBtb21lbnR1bS4KKyAgICAg
ICAgLy8gVGh1cywgY3ViaWMgaW50ZXJwb2xhdGlvbiBpc24ndCBuZWVkZWQgaGVyZS4KKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEZsb2F0U2l6ZSBzdGFydFRvRW5kVmVjdG9yID0gcmV0
YXJnZXRlZFNjcm9sbE9mZnNldCgpIC0gbV9pbml0aWFsU2Nyb2xsT2Zmc2V0OworICAgIGZsb2F0
IHN0YXJ0VG9FbmREaXN0YW5jZSA9IHN0YXJ0VG9FbmRWZWN0b3IuZGlhZ29uYWxMZW5ndGgoKTsK
KyAgICBpZiAoIXN0YXJ0VG9FbmREaXN0YW5jZSkgeworICAgICAgICAvLyBUaGUgc3RhcnQgYW5k
IGVuZCBwb3NpdGlvbnMgYXJlIHRoZSBzYW1lLCBzbyB3ZSBzaG91bGRuJ3QgdHJ5IHRvIGludGVy
cG9sYXRlIGEgcGF0aC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZsb2F0IGNvc1Ro
ZXRhID0gKG1faW5pdGlhbERlbHRhLndpZHRoKCkgKiBzdGFydFRvRW5kVmVjdG9yLndpZHRoKCkg
KyBtX2luaXRpYWxEZWx0YS5oZWlnaHQoKSAqIHN0YXJ0VG9FbmRWZWN0b3IuaGVpZ2h0KCkpIC8g
KGluaXRpYWxEZWx0YU1hZ25pdHVkZSAqIHN0YXJ0VG9FbmREaXN0YW5jZSk7CisgICAgaWYgKGNv
c1RoZXRhIDw9IDApIHsKKyAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSB1c2VyIGlz
IG5vdCBzY3JvbGxpbmcgdG93YXJkcyB0aGUgdGFyZ2V0IHNuYXAgb2Zmc2V0IChmb3IgaW5zdGFu
Y2UsIHNjcm9sbGluZyBhZ2FpbnN0IGEgY29ybmVyIHdoZW4gMkQgc2Nyb2xsIHNuYXBwaW5nKS4K
KyAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCBqdXN0IGxldCB0aGUgc2Nyb2xsIG9mZnNldCBhbmlt
YXRlIHRvIHRoZSB0YXJnZXQgd2l0aG91dCBjb21wdXRpbmcgYSBjdWJpYyBjdXJ2ZS4KKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGZsb2F0IHNpZGVMZW5ndGggPSBzdGFydFRvRW5kRGlz
dGFuY2UgLyAoMi4wZiAqIGNvc1RoZXRhICsgMS4wZik7CisgICAgYXV0byBpbml0aWFsT2Zmc2V0
QXNTaXplID0gdG9GbG9hdFNpemUobV9pbml0aWFsU2Nyb2xsT2Zmc2V0KTsKKyAgICBGbG9hdFNp
emUgY29udHJvbFZlY3RvcjEgPSBpbml0aWFsT2Zmc2V0QXNTaXplICsgc2lkZUxlbmd0aCAqIG1f
aW5pdGlhbERlbHRhIC8gaW5pdGlhbERlbHRhTWFnbml0dWRlOworICAgIEZsb2F0U2l6ZSBjb250
cm9sVmVjdG9yMiA9IGNvbnRyb2xWZWN0b3IxICsgKHNpZGVMZW5ndGggKiBzdGFydFRvRW5kVmVj
dG9yIC8gc3RhcnRUb0VuZERpc3RhbmNlKTsKKyAgICBtX3NuYXBBbmltYXRpb25DdXJ2ZUNvZWZm
aWNpZW50c1swXSA9IGluaXRpYWxPZmZzZXRBc1NpemU7CisgICAgbV9zbmFwQW5pbWF0aW9uQ3Vy
dmVDb2VmZmljaWVudHNbMV0gPSAzICogKGNvbnRyb2xWZWN0b3IxIC0gaW5pdGlhbE9mZnNldEFz
U2l6ZSk7CisgICAgbV9zbmFwQW5pbWF0aW9uQ3VydmVDb2VmZmljaWVudHNbMl0gPSAzICogKGlu
aXRpYWxPZmZzZXRBc1NpemUgLSAyICogY29udHJvbFZlY3RvcjEgKyBjb250cm9sVmVjdG9yMik7
CisgICAgbV9zbmFwQW5pbWF0aW9uQ3VydmVDb2VmZmljaWVudHNbM10gPSAzICogKGNvbnRyb2xW
ZWN0b3IxIC0gY29udHJvbFZlY3RvcjIpIC0gaW5pdGlhbE9mZnNldEFzU2l6ZSArIHRvRmxvYXRT
aXplKHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoKSk7CisgICAgbV9mb3JjZUxpbmVhckFuaW1hdGlv
bkN1cnZlID0gZmFsc2U7Cit9CisKK3N0YXRpYyBjb25zdCBmbG9hdCBmcmFtZXNQZXJTZWNvbmQg
PSA2MC4wZjsKKworLyoqCisgKiBDb21wdXRlcyBhbmQgc2V0cyBwYXJhbWV0ZXJzIHJlcXVpcmVk
IGZvciB0cmFja2luZyB0aGUgcHJvZ3Jlc3Mgb2YgYSBzbmFwIGFuaW1hdGlvbiBjdXJ2ZSwgaW50
ZXJwb2xhdGVkCisgKiBvciBsaW5lYXIuIFRoZSBwcm9ncmVzcyBjdXJ2ZSBzKHQpIG1hcHMgdGlt
ZSB0IHRvIHByb2dyZXNzIHM7IGJvdGggdmFyaWFibGVzIGFyZSBpbiB0aGUgaW50ZXJ2YWwgWzAs
IDFdLgorICogVGhlIHRpbWUgaW5wdXQgdCBpcyAwIHdoZW4gdGhlIGN1cnJlbnQgdGltZSBpcyB0
aGUgc3RhcnQgb2YgdGhlIGFuaW1hdGlvbiwgdCA9IDAsIGFuZCAxIHdoZW4gdGhlIGN1cnJlbnQK
KyAqIHRpbWUgaXMgYXQgb3IgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgYW5pbWF0aW9uLCB0ID0gbV9z
Y3JvbGxTbmFwQW5pbWF0aW9uRHVyYXRpb24uCisgKgorICogSW4gdGhpcyBleHBvbmVudGlhbCBw
cm9ncmVzcyBtb2RlbCwgcyh0KSA9IEEgLSBBICogYl4oLWt0KSwgd2hlcmUgayA9IDYwVCBpcyB0
aGUgbnVtYmVyIG9mIGZyYW1lcyBpbiB0aGUKKyAqIGFuaW1hdGlvbiAoYXNzdW1pbmcgNjAgRlBT
IGFuZCBhbiBhbmltYXRpb24gZHVyYXRpb24gb2YgVCkgYW5kIEEsIGIgYXJlIHJlYWxzIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byAxLgorICogQWxzbyBub3RlIHRoYXQgd2UgYXJlIGdpdmVuIHRo
ZSBpbml0aWFsIHByb2dyZXNzLCBhIHZhbHVlIGluZGljYXRpbmcgdGhlIHBvcnRpb24gb2YgdGhl
IGN1cnZlIHdoaWNoIG91cgorICogaW5pdGlhbCBzY3JvbGwgZGVsdGEgdGFrZXMgdXMuIFRoaXMg
aXMgaW1wb3J0YW50IHdoZW4gbWF0Y2hpbmcgdGhlIGluaXRpYWwgc3BlZWQgb2YgdGhlIGFuaW1h
dGlvbiB0byB0aGUKKyAqIHVzZXIncyBpbml0aWFsIG1vbWVudHVtIHNjcm9sbGluZyBzcGVlZC4g
TGV0IHRoaXMgaW5pdGlhbCBwcm9ncmVzcyBhbW91bnQgZXF1YWwgdl8wLiBJIGNsYW1wIHRoaXMg
aW5pdGlhbAorICogcHJvZ3Jlc3MgYW1vdW50IHRvIGEgbWluaW11bSBvciBtYXhpbXVtIHZhbHVl
LgorICoKKyAqIEEgaXMgcmVmZXJyZWQgdG8gYXMgdGhlIGN1cnZlIG1hZ25pdHVkZSwgd2hpbGUg
YiBpcyByZWZlcnJlZCB0byBhcyB0aGUgZGVjYXkgZmFjdG9yLiBXZSBzb2x2ZSBmb3IgQSBhbmQg
YiwKKyAqIGtlZXBpbmcgdGhlIGZvbGxvd2luZyBjb25zdHJhaW50cyBpbiBtaW5kOgorICogICAg
IDEuIHMoMCkgPSAwCisgKiAgICAgMi4gcygxKSA9IDEKKyAqICAgICAzLiBzKDEvaykgPSB2XzAK
KyAqCisgKiBGaXJzdCwgb2JzZXJ2ZSB0aGF0IHMoMCkgPSAwIGhvbGRzIGZvciBhcHByb3ByaWF0
ZSB2YWx1ZXMgb2YgQSwgYi4gU29sdmluZyBmb3IgdGhlIHJlbWFpbmluZyBjb25zdHJhaW50cwor
ICogeWllbGRzIGEgbm9ubGluZWFyIHN5c3RlbSBvZiB0d28gZXF1YXRpb25zLiBJbiBsaWV1IG9m
IGEgcHVyZWx5IGFuYWx5dGljYWwgc29sdXRpb24sIGFuIGFsdGVybmF0aW5nCisgKiBvcHRpbWl6
YXRpb24gc2NoZW1lIGlzIHVzZWQgdG8gYXBwcm94aW1hdGUgQSBhbmQgYi4gVGhpcyB0ZWNobmlx
dWUgY29udmVyZ2VzIHF1aWNrbHkgKHdpdGhpbiA1IGl0ZXJhdGlvbnMKKyAqIG9yIHNvKSBmb3Ig
YXBwcm9wcmlhdGUgdmFsdWVzIG9mIHZfMC4gVGhlIG9wdGltaXphdGlvbiB0ZXJtaW5hdGVzIGVh
cmx5IHdoZW4gdGhlIGRlY2F5IGZhY3RvciBjaGFuZ2VzIGJ5CisgKiBsZXNzIHRoYW4gYSB0aHJl
c2hvbGQgYmV0d2VlbiBvbmUgaXRlcmF0aW9uIGFuZCB0aGUgbmV4dC4KKyAqLwordm9pZCBCYXNp
Y1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6aW5pdGlhbGl6ZVNuYXBQcm9ncmVzc0N1cnZl
KCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IG1heE51bVNjcm9sbFNuYXBQYXJhbWV0ZXJFc3Rp
bWF0aW9uSXRlcmF0aW9ucyA9IDEwOworICAgIHN0YXRpYyBjb25zdCBmbG9hdCBzY3JvbGxTbmFw
RGVjYXlGYWN0b3JDb252ZXJnZW5jZVRocmVzaG9sZCA9IDAuMDAxOworICAgIHN0YXRpYyBjb25z
dCBmbG9hdCBpbml0aWFsU2Nyb2xsU25hcEN1cnZlTWFnbml0dWRlID0gMS4xOworICAgIHN0YXRp
YyBjb25zdCBmbG9hdCBtaW5TY3JvbGxTbmFwSW5pdGlhbFByb2dyZXNzID0gMC4xOworICAgIHN0
YXRpYyBjb25zdCBmbG9hdCBtYXhTY3JvbGxTbmFwSW5pdGlhbFByb2dyZXNzID0gMC41OworCisg
ICAgRmxvYXRTaXplIGFsaWdubWVudFZlY3RvciA9IG1faW5pdGlhbERlbHRhICogKHJldGFyZ2V0
ZWRTY3JvbGxPZmZzZXQoKSAtIG1faW5pdGlhbFNjcm9sbE9mZnNldCk7CisgICAgZmxvYXQgaW5p
dGlhbFByb2dyZXNzOworICAgIGlmIChhbGlnbm1lbnRWZWN0b3Iud2lkdGgoKSArIGFsaWdubWVu
dFZlY3Rvci5oZWlnaHQoKSA+IDApCisgICAgICAgIGluaXRpYWxQcm9ncmVzcyA9IGNsYW1wVG8o
bV9pbml0aWFsRGVsdGEuZGlhZ29uYWxMZW5ndGgoKSAvIChyZXRhcmdldGVkU2Nyb2xsT2Zmc2V0
KCkgLSBtX2luaXRpYWxTY3JvbGxPZmZzZXQpLmRpYWdvbmFsTGVuZ3RoKCksIG1pblNjcm9sbFNu
YXBJbml0aWFsUHJvZ3Jlc3MsIG1heFNjcm9sbFNuYXBJbml0aWFsUHJvZ3Jlc3MpOworICAgIGVs
c2UKKyAgICAgICAgaW5pdGlhbFByb2dyZXNzID0gbWluU2Nyb2xsU25hcEluaXRpYWxQcm9ncmVz
czsKKworICAgIGZsb2F0IHByZXZpb3VzRGVjYXlGYWN0b3IgPSAxLjBmOworICAgIG1fc25hcEFu
aW1hdGlvbkN1cnZlTWFnbml0dWRlID0gaW5pdGlhbFNjcm9sbFNuYXBDdXJ2ZU1hZ25pdHVkZTsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE51bVNjcm9sbFNuYXBQYXJhbWV0ZXJFc3RpbWF0
aW9uSXRlcmF0aW9uczsgKytpKSB7CisgICAgICAgIG1fc25hcEFuaW1hdGlvbkRlY2F5RmFjdG9y
ID0gbV9zbmFwQW5pbWF0aW9uQ3VydmVNYWduaXR1ZGUgLyAobV9zbmFwQW5pbWF0aW9uQ3VydmVN
YWduaXR1ZGUgLSBpbml0aWFsUHJvZ3Jlc3MpOworICAgICAgICBtX3NuYXBBbmltYXRpb25DdXJ2
ZU1hZ25pdHVkZSA9IDEuMGYgLyAoMS4wZiAtIHN0ZDo6cG93KG1fc25hcEFuaW1hdGlvbkRlY2F5
RmFjdG9yLCAtZnJhbWVzUGVyU2Vjb25kICogc2Nyb2xsU25hcEFuaW1hdGlvbkR1cmF0aW9uLnZh
bHVlKCkpKTsKKyAgICAgICAgaWYgKHN0ZDo6YWJzKG1fc25hcEFuaW1hdGlvbkRlY2F5RmFjdG9y
IC0gcHJldmlvdXNEZWNheUZhY3RvcikgPCBzY3JvbGxTbmFwRGVjYXlGYWN0b3JDb252ZXJnZW5j
ZVRocmVzaG9sZCkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHByZXZpb3VzRGVjYXlG
YWN0b3IgPSBtX3NuYXBBbmltYXRpb25EZWNheUZhY3RvcjsKKyAgICB9Cit9CisKK2Zsb2F0IEJh
c2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjphbmltYXRpb25Qcm9ncmVzc0FmdGVyRWxh
cHNlZFRpbWUoU2Vjb25kcyBlbGFwc2VkVGltZSkgY29uc3QKK3sKKyAgICBmbG9hdCB0aW1lUHJv
Z3Jlc3MgPSBjbGFtcFRvPGZsb2F0PihlbGFwc2VkVGltZSAvIHNjcm9sbFNuYXBBbmltYXRpb25E
dXJhdGlvbiwgMCwgMSk7CisgICAgcmV0dXJuIHN0ZDo6bWluKDEuMCwgbV9zbmFwQW5pbWF0aW9u
Q3VydmVNYWduaXR1ZGUgKiAoMS4wIC0gc3RkOjpwb3cobV9zbmFwQW5pbWF0aW9uRGVjYXlGYWN0
b3IsIC1mcmFtZXNQZXJTZWNvbmQgKiBzY3JvbGxTbmFwQW5pbWF0aW9uRHVyYXRpb24udmFsdWUo
KSAqIHRpbWVQcm9ncmVzcykpKTsKK30KKworfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGM3NTEzM2ZmODFlYzQxYzQ3ZTQ5YjA4NTU4OGI4MGEzZjNkZTJlMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvci5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlNjcm9sbFR5
cGVzLmgiCisjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBGbG9hdFBvaW50OworY2xhc3MgRmxvYXRTaXplOworCitjbGFzcyBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFBsYXRmb3JtTW9tZW50dW1TY3Jv
bGxpbmdQcmVkaWN0aW9uRW5hYmxlZChib29sKTsKKworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2
aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9p
bnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBG
bG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CisKKyAgICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29u
dGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CisgICAg
dmlydHVhbCB+U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKCkgPSBkZWZhdWx0OworCisgICAg
dmlydHVhbCBGbG9hdFBvaW50IHNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcykg
PSAwOworICAgIHZpcnR1YWwgU2Vjb25kcyBhbmltYXRpb25EdXJhdGlvbigpID0gMDsKKyAgICB2
aXJ0dWFsIEZsb2F0UG9pbnQgcHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKTsKKyAgICB2b2lk
IHNldFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRQb2ludCYpOworCitwcm90ZWN0
ZWQ6CisgICAgY29uc3QgRmxvYXRQb2ludCYgcmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmV0YXJnZXRlZFNjcm9sbE9mZnNldC52YWx1ZSgpOyB9CisgICAgdmlydHVh
bCB2b2lkIHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXREaWRDaGFuZ2UoKSB7IH0KKworICAgIEZsb2F0
U2l6ZSBtX2luaXRpYWxEZWx0YTsKKyAgICBGbG9hdFNpemUgbV9pbml0aWFsVmVsb2NpdHk7Cisg
ICAgRmxvYXRQb2ludCBtX2luaXRpYWxTY3JvbGxPZmZzZXQ7CisgICAgRmxvYXRTaXplIG1fdmll
d3BvcnRTaXplOworICAgIEZsb2F0U2l6ZSBtX2NvbnRlbnRTaXplOworCitwcml2YXRlOgorICAg
IHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbV9yZXRhcmdldGVkU2Nyb2xsT2Zmc2V0OworfTsK
KworY2xhc3MgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgZmluYWwgOiBwdWJsaWMg
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHsKK3B1YmxpYzoKKyAgICBCYXNpY1Njcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwg
Y29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZl
bG9jaXR5KTsKKworcHJpdmF0ZToKKyAgICBGbG9hdFBvaW50IHNjcm9sbE9mZnNldEFmdGVyRWxh
cHNlZFRpbWUoU2Vjb25kcykgZmluYWw7CisgICAgU2Vjb25kcyBhbmltYXRpb25EdXJhdGlvbigp
IGZpbmFsOworICAgIHZvaWQgaW5pdGlhbGl6ZUludGVycG9sYXRpb25Db2VmZmljaWVudHNJZk5l
Y2Vzc2FyeSgpOworICAgIHZvaWQgaW5pdGlhbGl6ZVNuYXBQcm9ncmVzc0N1cnZlKCk7CisgICAg
ZmxvYXQgYW5pbWF0aW9uUHJvZ3Jlc3NBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMpIGNvbnN0Owor
ICAgIEZsb2F0UG9pbnQgbGluZWFybHlJbnRlcnBvbGF0ZWRPZmZzZXRBdFByb2dyZXNzKGZsb2F0
IHByb2dyZXNzKTsKKyAgICBGbG9hdFBvaW50IGN1YmljYWxseUludGVycG9sYXRlZE9mZnNldEF0
UHJvZ3Jlc3MoZmxvYXQgcHJvZ3Jlc3MpIGNvbnN0OworCisgICAgZmxvYXQgbV9zbmFwQW5pbWF0
aW9uQ3VydmVNYWduaXR1ZGUgeyAwIH07CisgICAgZmxvYXQgbV9zbmFwQW5pbWF0aW9uRGVjYXlG
YWN0b3IgeyAwIH07CisgICAgRmxvYXRTaXplIG1fc25hcEFuaW1hdGlvbkN1cnZlQ29lZmZpY2ll
bnRzWzRdIHsgfTsKKyAgICBib29sIG1fZm9yY2VMaW5lYXJBbmltYXRpb25DdXJ2ZSB7IGZhbHNl
IH07CisgICAgYm9vbCBtX21vbWVudHVtQ2FsY3VsYXRvclJlcXVpcmVzSW5pdGlhbGl6YXRpb24g
eyB0cnVlIH07CisgICAgc3RkOjpvcHRpb25hbDxGbG9hdFNpemU+IG1fcHJlZGljdGVkRGVzdGlu
YXRpb25PZmZzZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nYW1lcGFkL21hYy9ISURHYW1lcGFkRWxlbWVudC5j
cHAKaW5kZXggNjBjOGQ0MGE1ODYzZWE2NTRmMWM0MTY3ZmFhZTFkYzQyOGJlNDcwMC4uMmU5M2Yz
ZmYwYmY5ODQ4MmY0ZTE0MzE0ZDc3MTYyNWZkZjk5ZGJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ2FtZXBhZC9tYWMvSElER2FtZXBhZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dhbWVwYWQvbWFjL0hJREdhbWVwYWRFbGVtZW50LmNwcApA
QCAtMjgsNiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEdBTUVQQUQpICYmIFBMQVRGT1JNKE1BQykK
IAorI2luY2x1ZGUgPElPS2l0L2hpZC9JT0hJREVsZW1lbnQuaD4KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjcHJhZ21hIG1hcmsgSElER2FtZXBhZEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAppbmRleCAzODlhYWMyODZlODg3M2YwZjg0N2YzYTBk
MDlkZWM4ZDkzOGRjMDczLi44Y2ZjNDU3OTYzNjU3NzQyODhjY2E1YzhkMDY5N2VkZWZlYjAwMmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCkBAIC0yOCw2
ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKIAorI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZWY8TW9kZWw+IE1v
ZGVsOjpjcmVhdGUoUmVmPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgU3RyaW5nIG1pbWVUeXBlLCBVUkwg
dXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiNTdmNTM1YmU2NjFiMjEz
Nzk0Yzc5MmFmNjc0NWEzZGEyMGIyYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgKQEAgLTAsMCAr
MSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiU2Nyb2xsaW5n
TW9tZW50dW1DYWxjdWxhdG9yLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitAY2xh
c3MgX05TU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYyBmaW5hbCA6IHB1YmxpYyBT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgeworcHVibGljOgorICAgIFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvck1hYyhjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9j
aXR5KTsKKworcHJpdmF0ZToKKyAgICBGbG9hdFBvaW50IHNjcm9sbE9mZnNldEFmdGVyRWxhcHNl
ZFRpbWUoU2Vjb25kcykgZmluYWw7CisgICAgU2Vjb25kcyBhbmltYXRpb25EdXJhdGlvbigpIGZp
bmFsOworICAgIEZsb2F0UG9pbnQgcHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKSBmaW5hbDsK
KyAgICB2b2lkIHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXREaWRDaGFuZ2UoKSBmaW5hbDsKKworICAg
IF9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciAqZW5zdXJlUGxhdGZvcm1Nb21lbnR1bUNh
bGN1bGF0b3IoKTsKKyAgICBib29sIHJlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcoKTsKKworICAg
IFJldGFpblB0cjxfTlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IG1fcGxhdGZvcm1Nb21l
bnR1bUNhbGN1bGF0b3I7CisgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX3JlcXVpcmVzTW9tZW50
dW1TY3JvbGxpbmc7CisgICAgRmxvYXRQb2ludCBtX2luaXRpYWxEZXN0aW5hdGlvbk9yaWdpbjsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZkYzIxZWE2NTU2NWY3ZTU5NDliMWYyNDVmOGMzMDYxOWVmOTg2YWUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yTWFjLm1tCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCIK
KworI2lmIFBMQVRGT1JNKE1BQykKKworI2ltcG9ydCA8cGFsL3NwaS9tYWMvTlNTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3JTUEkuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMg
Ym9vbCBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24gPSB0cnVlOwor
CitzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwg
Y29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9m
ZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5p
dGlhbFZlbG9jaXR5KQoreworICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwg
aW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworfQorCit2b2lkIFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFi
bGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGlu
Z1ByZWRpY3Rpb24gPSBlbmFibGVkOworfQorCitTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWM6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYyhjb25zdCBGbG9hdFNpemUmIHZpZXdw
b3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYg
aW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0
U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQorICAgIDogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
KHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwg
aW5pdGlhbFZlbG9jaXR5KQoreworfQorCitGbG9hdFBvaW50IFNjcm9sbGluZ01vbWVudHVtQ2Fs
Y3VsYXRvck1hYzo6c2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzIGVsYXBzZWRU
aW1lKQoreworICAgIGlmICghcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZygpKQorICAgICAgICBy
ZXR1cm4gcmV0YXJnZXRlZFNjcm9sbE9mZnNldCgpOworCisgICAgcmV0dXJuIFtlbnN1cmVQbGF0
Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpIHBvc2l0aW9uQWZ0ZXJEdXJhdGlvbjplbGFwc2VkVGlt
ZS52YWx1ZSgpXTsKK30KKworRmxvYXRQb2ludCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JN
YWM6OnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCkKK3sKKyAgICBpZiAoIWdFbmFibGVQbGF0
Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbikKKyAgICAgICAgcmV0dXJuIFNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcjo6cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKTsKKworICAg
IGVuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCk7CisgICAgcmV0dXJuIHsgbV9pbml0
aWFsRGVzdGluYXRpb25PcmlnaW4ueCgpLCBtX2luaXRpYWxEZXN0aW5hdGlvbk9yaWdpbi55KCkg
fTsKK30KKwordm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OnJldGFyZ2V0ZWRT
Y3JvbGxPZmZzZXREaWRDaGFuZ2UoKQoreworICAgIF9OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvciAqY2FsY3VsYXRvciA9IGVuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yKCk7Cisg
ICAgY2FsY3VsYXRvci5kZXN0aW5hdGlvbk9yaWdpbiA9IHJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQo
KTsKKyAgICBbY2FsY3VsYXRvciBjYWxjdWxhdGVUb1JlYWNoRGVzdGluYXRpb25dOworfQorCitT
ZWNvbmRzIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6YW5pbWF0aW9uRHVyYXRpb24o
KQoreworICAgIGlmICghcmVxdWlyZXNNb21lbnR1bVNjcm9sbGluZygpKQorICAgICAgICByZXR1
cm4gMF9zOworCisgICAgcmV0dXJuIFNlY29uZHMoW2Vuc3VyZVBsYXRmb3JtTW9tZW50dW1DYWxj
dWxhdG9yKCkgZHVyYXRpb25VbnRpbFN0b3BdKTsKK30KKworYm9vbCBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3JNYWM6OnJlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcoKQoreworICAgIGlmICht
X3JlcXVpcmVzTW9tZW50dW1TY3JvbGxpbmcgPT0gc3RkOjpudWxsb3B0KQorICAgICAgICBtX3Jl
cXVpcmVzTW9tZW50dW1TY3JvbGxpbmcgPSBtX2luaXRpYWxTY3JvbGxPZmZzZXQgIT0gcmV0YXJn
ZXRlZFNjcm9sbE9mZnNldCgpIHx8IG1faW5pdGlhbFZlbG9jaXR5LmFyZWEoKTsKKyAgICByZXR1
cm4gbV9yZXF1aXJlc01vbWVudHVtU2Nyb2xsaW5nLnZhbHVlKCk7Cit9CisKK19OU1Njcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvciAqU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjplbnN1
cmVQbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvcigpCit7CisgICAgaWYgKG1fcGxhdGZvcm1Nb21l
bnR1bUNhbGN1bGF0b3IpCisgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxh
dG9yLmdldCgpOworCisgICAgTlNQb2ludCBvcmlnaW4gPSBtX2luaXRpYWxTY3JvbGxPZmZzZXQ7
CisgICAgTlNSZWN0IGNvbnRlbnRGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgbV9jb250ZW50U2l6
ZS53aWR0aCgpLCBtX2NvbnRlbnRTaXplLmhlaWdodCgpKTsKKyAgICBOU1BvaW50IHZlbG9jaXR5
ID0gTlNNYWtlUG9pbnQobV9pbml0aWFsVmVsb2NpdHkud2lkdGgoKSwgbV9pbml0aWFsVmVsb2Np
dHkuaGVpZ2h0KCkpOworICAgIG1fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IgPSBhZG9wdE5T
KFtbX05TU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIGFsbG9jXSBpbml0V2l0aEluaXRpYWxP
cmlnaW46b3JpZ2luIHZlbG9jaXR5OnZlbG9jaXR5IGRvY3VtZW50RnJhbWU6Y29udGVudEZyYW1l
IGNvbnN0cmFpbmVkQ2xpcHBpbmdPcmlnaW46TlNaZXJvUG9pbnQgY2xpcHBpbmdTaXplOm1fdmll
d3BvcnRTaXplIHRvbGVyYW5jZTpOU01ha2VTaXplKDEsIDEpXSk7CisgICAgbV9pbml0aWFsRGVz
dGluYXRpb25PcmlnaW4gPSBbbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvciBkZXN0aW5hdGlv
bk9yaWdpbl07CisgICAgcmV0dXJuIG1fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IuZ2V0KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
      

    </bug>

</bugzilla>