<?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>230465</bug_id>
          
          <creation_ts>2021-09-19 11:16:35 -0700</creation_ts>
          <short_desc>Have ScrollingMomentumCalculator work in terms of ScrollExtents</short_desc>
          <delta_ts>2021-09-20 09:02:20 -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>
          <dependson>230450</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</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>1794902</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-19 11:16:35 -0700</bug_when>
    <thetext>Have ScrollingMomentumCalculator work in terms of ScrollExtents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794903</commentid>
    <comment_count>1</comment_count>
      <attachid>438603</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-19 11:18:08 -0700</bug_when>
    <thetext>Created attachment 438603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794956</commentid>
    <comment_count>2</comment_count>
      <attachid>438628</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-19 18:18:32 -0700</bug_when>
    <thetext>Created attachment 438628
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794962</commentid>
    <comment_count>3</comment_count>
      <attachid>438632</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-19 20:05:06 -0700</bug_when>
    <thetext>Created attachment 438632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795103</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-20 09:01:58 -0700</bug_when>
    <thetext>Committed r282749 (241886@main): &lt;https://commits.webkit.org/241886@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438632.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795104</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-20 09:02:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/83308466&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438603</attachid>
            <date>2021-09-19 11:18:08 -0700</date>
            <delta_ts>2021-09-19 18:18:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230465-20210919111807.patch</filename>
            <type>text/plain</type>
            <size>35779</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmNmNmFhMmU5MjljNzc1
YTcxMDU2MDA5ZmI4NGI2YTkxNDZlYmFiNi4uMGYyNDE0MDc0ZGY4YzZhNDNmMWVkYzg5MDc1ZWZj
ZGVkYTU2NDc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTA5LTE5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yIHdvcmsgaW4gdGVybXMgb2YgU2Nyb2xsRXh0ZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDY1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xsQW5pbWF0
b3IgZ2V0cyBtaW4vbWF4IHNjcm9sbCBvZmZzZXRzIGFuZCB0aGUgdmlld3BvcnQgc2l6ZSB2aWEg
YSBTY3JvbGxFeHRlbnRzCisgICAgICAgIGNsYXNzLiBUbyBlYXNlIGEgZnV0dXJlIHRyYW5zaXRp
b24gb2YgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHRvIGJlIGEgU2Nyb2xsQW5pbWF0b3Is
CisgICAgICAgIG1vdmUgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHRvIHVzZSB0aGUgc2Ft
ZSBzdHJ1Y3QsIHdoaWNoIGlzIG1vZGlmaWVkIHRvIHNhdGlzZnkKKyAgICAgICAgdGhlIG5lZWQg
dG8gcHJvdmlkZSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMgd2l0aCB0aGUgY29udGVu
dHMgc2l6ZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzY3JvbGxFeHRlbnRzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OnNjcm9sbEV4dGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjp2aWV3cG9ydFNpemUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFs
VmVsb2NpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0T3JSZXRhcmdl
dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVw
ZGF0ZVNjcm9sbEV4dGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzRm9yQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnZpZXdw
b3J0U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dHJhbnNpdGlvblRvU25h
cEFuaW1hdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0
YXRlOjp0cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRPZmZzZXRGb3JTdGFy
dE9mZnNldCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsRXh0ZW50czo6bWluaW11bVNjcm9sbE9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxFeHRlbnRzOjptYXhpbXVtU2Nyb2xsT2Zmc2V0IGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJ
bmRleEZvckF4aXNBbmRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnByZWRpY3RlZERlc3RpbmF0
aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yOjpCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcik6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXRlbGVzc1NuYXBUcmFuc2l0aW9uVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvck1hYzo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6ZW5zdXJl
UGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IpOgorCiAyMDIxLTA5LTE5ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xsQW5pbWF0aW9u
IHdvcmsgaW4gdGVybXMgb2Ygb2Zmc2V0cywgbm90IHBvc2l0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXggYTkwOGU1NGM4NzlkNDA4Yjcw
MGE1OWJjY2Y3MWE5MGM0MDNhMTI4Ni4uZDg2Yzk3NTFiNGZiYTg5ZmEyNWMwZTkyMDYzZWVkNzIz
M2FhM2UwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5oCkBAIC05MiwxMyArOTIsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHNjcm9sbFBvc2l0aW9u
SXNOb3RSdWJiZXJiYW5kaW5nRWRnZShjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgdm9p
ZCBzY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXJGaXJlZCgpOwogCi0gICAgRmxvYXRQb2lu
dCBzY3JvbGxPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGltbWVkaWF0ZVNjcm9s
bE9uQXhpcyhTY3JvbGxFdmVudEF4aXMsIGZsb2F0IGRlbHRhKSBvdmVycmlkZTsKLSAgICBmbG9h
dCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFBvaW50IHNjcm9s
bE9mZnNldCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsT25BeGlzKFNj
cm9sbEV2ZW50QXhpcywgZmxvYXQgZGVsdGEpIGZpbmFsOworICAgIGZsb2F0IHBhZ2VTY2FsZUZh
Y3RvcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgd2lsbFN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlv
bigpIGZpbmFsOwogICAgIHZvaWQgZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKSBmaW5hbDsK
LSAgICBMYXlvdXRTaXplIHNjcm9sbEV4dGVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEZsb2F0
U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTY3JvbGxFeHRlbnRzIHNj
cm9sbEV4dGVudHMoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcmVsZWFzZVJlZmVyZW5jZXNU
b1Njcm9sbGVySW1wc09uVGhlTWFpblRocmVhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IGM4YTdiY2ZiYjk1NmQ3ZDE2NTBkODE4
ODRlOThlNzAzNzE4ZmIxYTcuLmI4MjQ0ZTNkZWJlZDUzOTE2MWZmMzU1NTM1OTYxYzYyM2I1YWI1
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1t
CkBAIC00MTUsMTQgKzQxNSwxMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkKICAgICBzY3JvbGxpbmdOb2Rl
KCkuc2V0U2Nyb2xsU25hcEluUHJvZ3Jlc3MoZmFsc2UpOwogfQogICAgIAotTGF5b3V0U2l6ZSBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzY3JvbGxFeHRlbnQoKSBjb25z
dAorU2Nyb2xsRXh0ZW50cyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpz
Y3JvbGxFeHRlbnRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gTGF5b3V0U2l6ZSh0b3RhbENvbnRl
bnRzU2l6ZSgpKTsKLX0KLQotRmxvYXRTaXplIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjcm9sbGFibGVB
cmVhU2l6ZSgpOworICAgIHJldHVybiB7CisgICAgICAgIHNjcm9sbGluZ05vZGUoKS50b3RhbENv
bnRlbnRzU2l6ZSgpLAorICAgICAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsYWJsZUFyZWFTaXpl
KCkKKyAgICB9OwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb24uaAppbmRleCBjODZjZjdmZmUxODRhNGUxYTFhZDMwM2Y3YTc0
ZmJiMGE5ZjUxOTMxLi5mMTY2NGUwOGY1Zjc4MDhjYmJhMTM3YjJmNzlhNmQyNDdlMmZkYjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaApAQCAtMzQsMTIgKzM0
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIFNjcm9s
bEFuaW1hdGlvbjsKIAotc3RydWN0IFNjcm9sbEV4dGVudHMgewotICAgIFNjcm9sbE9mZnNldCBt
aW5pbXVtU2Nyb2xsT2Zmc2V0OwotICAgIFNjcm9sbE9mZnNldCBtYXhpbXVtU2Nyb2xsT2Zmc2V0
OwotICAgIEludFNpemUgdmlzaWJsZVNpemU7Ci19OwotCiBjbGFzcyBTY3JvbGxBbmltYXRpb25D
bGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbkNsaWVudCgpID0g
ZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYy5jcHAKaW5kZXggODdmYmE5MmU2ZGUyYWFlMDJjM2U3YjljYWI2MjBjMGRiNTk5NGMx
OC4uYmEyNTdkYTM0NjgwOGM0M2JiOWM3NTk1YWNkNjEzM2M4MmVhM2Q2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKQEAgLTE5
OSwxNSArMTk5LDE1IEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRl
ZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQCiAgICAgfTsKIAogICAgIGlm
IChtYXlIU2Nyb2xsKSB7Ci0gICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBQZXJBeGlzRGF0YShl
eHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQueCgpLAotICAgICAgICAgICAgZXh0ZW50cy5tYXhp
bXVtU2Nyb2xsT2Zmc2V0LngoKSwKKyAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNE
YXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCgpLngoKSwKKyAgICAgICAgICAgIGV4dGVu
dHMubWF4aW11bVNjcm9sbE9mZnNldCgpLngoKSwKICAgICAgICAgICAgIGluaXRpYWxPZmZzZXQu
eCgpLCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkueCgpLCBtX2hvcml6b250YWxEYXRhKSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAobWF5VlNjcm9sbCkgewotICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IFBlckF4aXNE
YXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldC55KCksCi0gICAgICAgICAgICBleHRlbnRz
Lm1heGltdW1TY3JvbGxPZmZzZXQueSgpLAorICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IFBlckF4
aXNEYXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCgpLnkoKSwKKyAgICAgICAgICAgIGV4
dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpLnkoKSwKICAgICAgICAgICAgIGluaXRpYWxPZmZz
ZXQueSgpLCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkueSgpLCBtX3ZlcnRpY2FsRGF0YSkp
OwogICAgIH0gZWxzZQogICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCmlu
ZGV4IDZlMjk3NTE5ZDg0ZGQ1NGViZWI1MzUyMzUzYjAzYzZkMjRlNTBiNDYuLmZkNWIzMDUzMmEx
ZmU0Y2ViNjNmMTdlNTY3MjcxMDUzOTUwNDRkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcApAQCAtOTMsNyArOTMsNyBAQCBib29s
IFNjcm9sbEFuaW1hdGlvblNtb290aDo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxv
YXRQb2ludCYgbmV3T2Zmc2V0KQogCiBib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRP
clJldGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmIGV4dGVudHMsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIG1fZGVzdGluYXRpb25PZmZzZXQg
PSBkZXN0aW5hdGlvbk9mZnNldC5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Ny
b2xsT2Zmc2V0LCBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQpOworICAgIG1fZGVzdGluYXRp
b25PZmZzZXQgPSBkZXN0aW5hdGlvbk9mZnNldC5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5t
aW5pbXVtU2Nyb2xsT2Zmc2V0KCksIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpKTsKICAg
ICBib29sIG5lZWRUb1Njcm9sbCA9IG1fc3RhcnRPZmZzZXQgIT0gbV9kZXN0aW5hdGlvbk9mZnNl
dDsKIAogICAgIGlmIChuZWVkVG9TY3JvbGwgJiYgIWlzQWN0aXZlKCkpIHsKQEAgLTExMyw3ICsx
MTMsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6dXBkYXRlU2Nyb2xsRXh0ZW50cygp
CiB7CiAgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlv
bigqdGhpcyk7CiAgICAgLy8gRklYTUU6IElkZWFsbHkgZml4IHVwIG1fc3RhcnRPZmZzZXQgc28g
bV9jdXJyZW50T2Zmc2V0IGRvZXNuJ3QgZ28gYmFja3dhcmRzLgotICAgIG1fZGVzdGluYXRpb25P
ZmZzZXQgPSBtX2Rlc3RpbmF0aW9uT2Zmc2V0LmNvbnN0cmFpbmVkQmV0d2VlbihleHRlbnRzLm1p
bmltdW1TY3JvbGxPZmZzZXQsIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCk7CisgICAgbV9k
ZXN0aW5hdGlvbk9mZnNldCA9IG1fZGVzdGluYXRpb25PZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVu
KGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCgpLCBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZz
ZXQoKSk7CiB9CiAKIFNlY29uZHMgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpkdXJhdGlvbkZyb21E
aXN0YW5jZShjb25zdCBGbG9hdFNpemUmIGRlbHRhKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IDViMTU1NjYwZWY4ZGU1Yjk0NWY2YTQ5YTBl
ZWE2N2U1ZGE4OTNkNWIuLjJmMGZlYmQ4ZDNmMGYwYmRmMmVhZGNmZjE2Yjg4NWQzYzg0MjI3MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTI4OCwx
NCArMjg4LDEyIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmltbWVkaWF0ZVNjcm9sbE9uQXhpcyhT
Y3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgZGVsdGEpCiAgICAgc2Nyb2xsVG9Qb3NpdGlvbldp
dGhvdXRBbmltYXRpb24oY3VycmVudFBvc2l0aW9uKCkgKyBkZWx0YVNpemUpOwogfQogCi1MYXlv
dXRTaXplIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnQoKSBjb25zdAorU2Nyb2xsRXh0ZW50
cyBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsRXh0ZW50cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
c2Nyb2xsYWJsZUFyZWEuY29udGVudHNTaXplKCk7Ci19Ci0KLUZsb2F0U2l6ZSBTY3JvbGxBbmlt
YXRvcjo6dmlld3BvcnRTaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJl
YS52aXNpYmxlU2l6ZSgpOworICAgIHJldHVybiB7CisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEu
dG90YWxDb250ZW50c1NpemUoKSwKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6
ZSgpCisgICAgfTsKIH0KIAogZmxvYXQgU2Nyb2xsQW5pbWF0b3I6OnBhZ2VTY2FsZUZhY3Rvcigp
IGNvbnN0CkBAIC00MDAsMTEgKzM5OCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFu
aW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKQogCiBTY3JvbGxFeHRlbnRzIFNjcm9sbEFu
aW1hdG9yOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpCiB7Ci0g
ICAgcmV0dXJuIHsKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsT2Zmc2V0
KCksCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbE9mZnNldCgpLAotICAg
ICAgICBtX3Njcm9sbGFibGVBcmVhLnZpc2libGVTaXplKCkKLSAgICB9OworICAgIHJldHVybiBz
Y3JvbGxFeHRlbnRzKCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmgKaW5kZXggYjE2NjI2Yjg0ODNiZWQ2MDQ1ZjExOTc2ZDE4MzRjYTBiZDJiYjViYy4uNzBk
NDE1N2U0ODcxZGM2ODU4MGJjZjk3MjhlZmM4NTgyODhmMDBkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC0xMzUsOCArMTM1LDcgQEAgcHVibGljOgogICAg
IEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbW1l
ZGlhdGVTY3JvbGxPbkF4aXMoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBkZWx0YSkgb3ZlcnJpZGU7
CiAgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0
U2l6ZSBzY3JvbGxFeHRlbnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBGbG9hdFNpemUgdmlld3Bv
cnRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU2Nyb2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRz
KCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgZGVmZXJXaGVl
bEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3Jv
bGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24p
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9u
RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlk
ZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUuY3BwCmluZGV4IDgxMDY4MzVlOWQyNGFjN2RlNmRmODQ2NTRlYjc2YjBkMTljNjdjMWMu
LjFlNDdjNzUzMzM0MTAzNDk5MmI0MmZjMjRiY2U1NjA3YjdlMDY2NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKQEAgLTMx
LDI4ICszMSwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgU2Nyb2xsU25hcEFu
aW1hdG9yU3RhdGU6OnRyYW5zaXRpb25Ub1NuYXBBbmltYXRpb25TdGF0ZShjb25zdCBGbG9hdFNp
emUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFn
ZVNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0KQordm9pZCBTY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZTo6dHJhbnNpdGlvblRvU25hcEFuaW1hdGlvblN0YXRlKGNvbnN0IFNjcm9s
bEV4dGVudHMmIHNjcm9sbEV4dGVudHMsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3QgRmxvYXRQb2lu
dCYgaW5pdGlhbE9mZnNldCkKIHsKLSAgICBzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNu
YXBTdGF0ZTo6U25hcHBpbmcsIGNvbnRlbnRTaXplLCB2aWV3cG9ydFNpemUsIHBhZ2VTY2FsZSwg
aW5pdGlhbE9mZnNldCwgeyB9LCB7IH0pOworICAgIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Ny
b2xsU25hcFN0YXRlOjpTbmFwcGluZywgc2Nyb2xsRXh0ZW50cywgcGFnZVNjYWxlLCBpbml0aWFs
T2Zmc2V0LCB7IH0sIHsgfSk7CiB9CiAKLXZvaWQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRy
YW5zaXRpb25Ub0dsaWRlQW5pbWF0aW9uU3RhdGUoY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6
ZSwgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2Np
dHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhKQordm9pZCBTY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZTo6dHJhbnNpdGlvblRvR2xpZGVBbmltYXRpb25TdGF0ZShjb25zdCBTY3JvbGxFeHRl
bnRzJiBzY3JvbGxFeHRlbnRzLCBmbG9hdCBwYWdlU2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIGlu
aXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxEZWx0YSkKIHsKLSAgICBzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9s
bFNuYXBTdGF0ZTo6R2xpZGluZywgY29udGVudFNpemUsIHZpZXdwb3J0U2l6ZSwgcGFnZVNjYWxl
LCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsVmVsb2NpdHksIGluaXRpYWxEZWx0YSk7CisgICAgc2V0
dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGU6OkdsaWRpbmcsIHNjcm9sbEV4dGVu
dHMsIHBhZ2VTY2FsZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbFZlbG9jaXR5LCBpbml0aWFsRGVs
dGEpOwogfQogCi12b2lkIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZv
clN0YXRlKFNjcm9sbFNuYXBTdGF0ZSBzdGF0ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6
ZSwgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2Np
dHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhKQordm9pZCBTY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZTo6c2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUgc3RhdGUsIGNv
bnN0IFNjcm9sbEV4dGVudHMmIHNjcm9sbEV4dGVudHMsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2Np
dHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhKQogewogICAgIEFTU0VSVChzdGF0ZSA9
PSBTY3JvbGxTbmFwU3RhdGU6OlNuYXBwaW5nIHx8IHN0YXRlID09IFNjcm9sbFNuYXBTdGF0ZTo6
R2xpZGluZyk7CiAgICAgaWYgKG1fY3VycmVudFN0YXRlID09IHN0YXRlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3JlYXRlKHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGlu
aXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKHNjcm9sbEV4dGVudHMsIGluaXRp
YWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKICAgICBGbG9hdFBvaW50
IHByZWRpY3RlZFNjcm9sbFRhcmdldCB7IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5wcmVkaWN0ZWRE
ZXN0aW5hdGlvbk9mZnNldCgpIH07CiAKICAgICBmbG9hdCB0YXJnZXRPZmZzZXRYLCB0YXJnZXRP
ZmZzZXRZOwotICAgIHN0ZDo6dGllKHRhcmdldE9mZnNldFgsIG1fYWN0aXZlU25hcEluZGV4WCkg
PSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWws
IHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgp
LCBpbml0aWFsT2Zmc2V0LngoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LCBwYWdlU2NhbGUsIGlu
aXRpYWxEZWx0YS53aWR0aCgpKTsKLSAgICBzdGQ6OnRpZSh0YXJnZXRPZmZzZXRZLCBtX2FjdGl2
ZVNuYXBJbmRleFkpID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlz
OjpWZXJ0aWNhbCwgdmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS5oZWlnaHQoKSAtIHZpZXdwb3J0
U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRpY3RlZFNjcm9sbFRhcmdldCwg
cGFnZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVpZ2h0KCkpOworICAgIHN0ZDo6dGllKHRhcmdldE9m
ZnNldFgsIG1fYWN0aXZlU25hcEluZGV4WCkgPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChT
Y3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9sbEV4dGVudHMsIGluaXRpYWxPZmZzZXQu
eCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQsIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLndpZHRo
KCkpOworICAgIHN0ZDo6dGllKHRhcmdldE9mZnNldFksIG1fYWN0aXZlU25hcEluZGV4WSkgPSB0
YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBzY3Jv
bGxFeHRlbnRzLCBpbml0aWFsT2Zmc2V0LnkoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LCBwYWdl
U2NhbGUsIGluaXRpYWxEZWx0YS5oZWlnaHQoKSk7CiAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3It
PnNldFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoeyB0YXJnZXRPZmZzZXRYLCB0YXJnZXRPZmZzZXRZ
IH0pOwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgbV9jdXJy
ZW50U3RhdGUgPSBzdGF0ZTsKQEAgLTkxLDE1ICs5MSwxOCBAQCBGbG9hdFBvaW50IFNjcm9sbFNu
YXBBbmltYXRvclN0YXRlOjpjdXJyZW50QW5pbWF0ZWRTY3JvbGxPZmZzZXQoTW9ub3RvbmljVGlt
ZSBjdQogICAgIHJldHVybiBtX21vbWVudHVtQ2FsY3VsYXRvci0+c2Nyb2xsT2Zmc2V0QWZ0ZXJF
bGFwc2VkVGltZShlbGFwc2VkVGltZSk7CiB9CiAKLXN0ZDo6cGFpcjxmbG9hdCwgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4+IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRPZmZzZXRGb3JT
dGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9y
dFNpemUsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIEZsb2F0UG9p
bnQgcHJlZGljdGVkT2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IGluaXRpYWxEZWx0YSkg
Y29uc3QKK3N0ZDo6cGFpcjxmbG9hdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IFNjcm9sbFNu
YXBBbmltYXRvclN0YXRlOjp0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4
aXMgYXhpcywgY29uc3QgU2Nyb2xsRXh0ZW50cyYgc2Nyb2xsRXh0ZW50cywgZmxvYXQgc3RhcnRP
ZmZzZXQsIEZsb2F0UG9pbnQgcHJlZGljdGVkT2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0
IGluaXRpYWxEZWx0YSkgY29uc3QKIHsKKyAgICBhdXRvIG1pblNjcm9sbE9mZnNldCA9IChheGlz
ID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkgPyBzY3JvbGxFeHRlbnRzLm1pbmltdW1T
Y3JvbGxPZmZzZXQoKS54KCkgOiBzY3JvbGxFeHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQoKS55
KCk7CisgICAgYXV0byBtYXhTY3JvbGxPZmZzZXQgPSAoYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwpID8gc2Nyb2xsRXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueCgpIDog
c2Nyb2xsRXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueSgpOworCiAgICAgY29uc3QgYXV0
byYgc25hcE9mZnNldHMgPSBtX3NuYXBPZmZzZXRzSW5mby5vZmZzZXRzRm9yQXhpcyhheGlzKTsK
ICAgICBpZiAoc25hcE9mZnNldHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoY2xhbXBUbzxmbG9hdD4oYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwg
PyBwcmVkaWN0ZWRPZmZzZXQueCgpIDogcHJlZGljdGVkT2Zmc2V0LnkoKSwgMCwgbWF4U2Nyb2xs
T2Zmc2V0KSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGNs
YW1wVG88ZmxvYXQ+KGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gcHJlZGlj
dGVkT2Zmc2V0LngoKSA6IHByZWRpY3RlZE9mZnNldC55KCksIG1pblNjcm9sbE9mZnNldCwgbWF4
U2Nyb2xsT2Zmc2V0KSwgc3RkOjpudWxsb3B0KTsKIAogICAgIExheW91dFBvaW50IHByZWRpY3Rl
ZExheW91dE9mZnNldChwcmVkaWN0ZWRPZmZzZXQueCgpIC8gcGFnZVNjYWxlLCBwcmVkaWN0ZWRP
ZmZzZXQueSgpIC8gcGFnZVNjYWxlKTsKLSAgICBhdXRvIFt0YXJnZXRPZmZzZXQsIHNuYXBJbmRl
eF0gPSBtX3NuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChheGlzLCBMYXlvdXRTaXpl
IHsgdmlld3BvcnRTaXplIH0sIHByZWRpY3RlZExheW91dE9mZnNldCwgaW5pdGlhbERlbHRhLCBM
YXlvdXRVbml0KHN0YXJ0T2Zmc2V0IC8gcGFnZVNjYWxlKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHBhZ2VTY2FsZSAqIGNsYW1wVG88ZmxvYXQ+KGZsb2F0IHsgdGFyZ2V0T2Zmc2V0IH0s
IDAsIG1heFNjcm9sbE9mZnNldCksIHNuYXBJbmRleCk7CisgICAgYXV0byBbdGFyZ2V0T2Zmc2V0
LCBzbmFwSW5kZXhdID0gbV9zbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywg
TGF5b3V0U2l6ZSB7IHNjcm9sbEV4dGVudHMudmlld3BvcnRTaXplIH0sIHByZWRpY3RlZExheW91
dE9mZnNldCwgaW5pdGlhbERlbHRhLCBMYXlvdXRVbml0KHN0YXJ0T2Zmc2V0IC8gcGFnZVNjYWxl
KSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHBhZ2VTY2FsZSAqIGNsYW1wVG88ZmxvYXQ+
KGZsb2F0IHsgdGFyZ2V0T2Zmc2V0IH0sIG1pblNjcm9sbE9mZnNldCwgbWF4U2Nyb2xsT2Zmc2V0
KSwgc25hcEluZGV4KTsKIH0KIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKaW5kZXggNjVhOTRlZDVm
ZDlmNjE0MmMzMWI5MTM0YTAzYWNjN2JkM2I4N2I0Yi4uMTBhY2NmZjllOThhNDdhYTBjODI1YzFk
OGY0ZWE2MzAzOTYwYTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsU25hcEFuaW1hdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIGVudW0gY2xhc3MgU2Nyb2xs
U25hcFN0YXRlIHsKICAgICBVc2VySW50ZXJhY3Rpb24KIH07CiAKK3N0cnVjdCBTY3JvbGxFeHRl
bnRzOworCiBjbGFzcyBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC03NiwxNSArNzgsMTUgQEAgcHVibGljOgogICAgIEZs
b2F0UG9pbnQgY3VycmVudEFuaW1hdGVkU2Nyb2xsT2Zmc2V0KE1vbm90b25pY1RpbWUsIGJvb2wm
IGlzQW5pbWF0aW9uQ29tcGxldGUpIGNvbnN0OwogCiAgICAgLy8gU3RhdGUgdHJhbnNpdGlvbiBo
ZWxwZXJzLgotICAgIHZvaWQgdHJhbnNpdGlvblRvU25hcEFuaW1hdGlvblN0YXRlKGNvbnN0IEZs
b2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9h
dCBwYWdlU2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQpOwotICAgIHZvaWQg
dHJhbnNpdGlvblRvR2xpZGVBbmltYXRpb25TdGF0ZShjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRT
aXplLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25z
dCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxv
Y2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEpOworICAgIHZvaWQgdHJhbnNpdGlv
blRvU25hcEFuaW1hdGlvblN0YXRlKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBmbG9hdCBwYWdlU2Nh
bGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQpOworICAgIHZvaWQgdHJhbnNpdGlv
blRvR2xpZGVBbmltYXRpb25TdGF0ZShjb25zdCBTY3JvbGxFeHRlbnRzJiwgZmxvYXQgcGFnZVNj
YWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGlu
aXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEpOwogICAgIHZvaWQg
dHJhbnNpdGlvblRvVXNlckludGVyYWN0aW9uU3RhdGUoKTsKICAgICB2b2lkIHRyYW5zaXRpb25U
b0Rlc3RpbmF0aW9uUmVhY2hlZFN0YXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RkOjpwYWlyPGZs
b2F0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgbWF4
U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9mZnNldCwgRmxvYXRQb2ludCBwcmVkaWN0ZWRPZmZz
ZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhKSBjb25zdDsKKyAgICBzdGQ6
OnBhaXI8ZmxvYXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiB0YXJnZXRPZmZzZXRGb3JTdGFy
dE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFNjcm9sbEV4dGVudHMmLCBmbG9hdCBzdGFy
dE9mZnNldCwgRmxvYXRQb2ludCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxv
YXQgaW5pdGlhbERlbHRhKSBjb25zdDsKICAgICB2b2lkIHRlYXJkb3duQW5pbWF0aW9uRm9yU3Rh
dGUoU2Nyb2xsU25hcFN0YXRlKTsKLSAgICB2b2lkIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Ny
b2xsU25hcFN0YXRlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFNp
emUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0
aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRT
aXplJiBpbml0aWFsRGVsdGEpOworICAgIHZvaWQgc2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3Jv
bGxTbmFwU3RhdGUsIGNvbnN0IFNjcm9sbEV4dGVudHMmLCBmbG9hdCBwYWdlU2NhbGUsIGNvbnN0
IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9j
aXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSk7CiAKICAgICBTY3JvbGxTbmFwU3Rh
dGUgbV9jdXJyZW50U3RhdGUgeyBTY3JvbGxTbmFwU3RhdGU6OlVzZXJJbnRlcmFjdGlvbiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaAppbmRleCA0MjNlNzBlZmVhZGJmNTQ2
NmJjMGIzNjhlODFjZTI2MTA3MGZiN2EwLi43ZGM3ZTRiNDg3MjZhYzBmZGNiOThkNWI0YjYwNzZk
MmUzMDU4MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKQEAgLTI2OCw2
ICsyNjgsMTQgQEAgV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIFNjcm9sbFR5cGUpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbENsYW1waW5nKTsKIFdFQkNP
UkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBT
Y3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOwogCitzdHJ1Y3QgU2Nyb2xsRXh0ZW50cyB7
CisgICAgRmxvYXRTaXplIGNvbnRlbnRzU2l6ZTsKKyAgICBGbG9hdFNpemUgdmlld3BvcnRTaXpl
OworCisgICAgRmxvYXRQb2ludCBtaW5pbXVtU2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
eyB9OyB9CisgICAgRmxvYXRQb2ludCBtYXhpbXVtU2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gdG9GbG9hdFBvaW50KGNvbnRlbnRzU2l6ZSAtIHZpZXdwb3J0U2l6ZSkuZXhwYW5kZWRUbyh7
IDAsIDAgfSk7IH0KK307CisKIHN0cnVjdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMgewog
ICAgIFNjcm9sbFR5cGUgdHlwZTsKICAgICBTY3JvbGxDbGFtcGluZyBjbGFtcGluZyA9IFNjcm9s
bENsYW1waW5nOjpDbGFtcGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCmluZGV4IGYwYzkzOGI2NDM1Yjk5OWYxZDEz
YWUyNmFmMWFlZjA2MzExNjNiYmMuLjI3MDMwYzkxODMwMjNkMjc4ZDNkMTI0YWVlODE4YmQ2YmQ2
ZGIzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjpzZXROZWFyZXN0U2Nyb2xsU25hcEluZGV4Rm9yQXhpc0FuZE9mZnNl
dChTY3JvbAogICAgIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlJiBzbmFwU3RhdGUgPSAqbV9zY3Jv
bGxTbmFwU3RhdGU7CiAKICAgICBhdXRvIHNuYXBPZmZzZXRzID0gc25hcFN0YXRlLnNuYXBPZmZz
ZXRzRm9yQXhpcyhheGlzKTsKLSAgICBMYXlvdXRTaXplIHZpZXdwb3J0U2l6ZShtX2NsaWVudC52
aWV3cG9ydFNpemUoKS53aWR0aCgpLCBtX2NsaWVudC52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSk7
CisgICAgTGF5b3V0U2l6ZSB2aWV3cG9ydFNpemUobV9jbGllbnQuc2Nyb2xsRXh0ZW50cygpLnZp
ZXdwb3J0U2l6ZSk7CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZlSW5kZXg7CiAg
ICAgaWYgKHNuYXBPZmZzZXRzLnNpemUoKSkKICAgICAgICAgYWN0aXZlSW5kZXggPSBzbmFwU3Rh
dGUuc25hcE9mZnNldEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydFNpemUs
IGxheW91dFNjcm9sbE9mZnNldCwgMCkuc2Vjb25kOwpAQCAtMTg0LDEzICsxODQsMTIgQEAgZmxv
YXQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNj
cm9sbEV2ZW50QXhpcyBheGlzLAogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2lu
YWxPZmZzZXRJbkxheW91dFVuaXRzOwogICAgIGlmIChvcmlnaW5hbE9mZnNldCkKICAgICAgICAg
b3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzID0gTGF5b3V0VW5pdCgqb3JpZ2luYWxPZmZzZXQg
LyBzY2FsZUZhY3Rvcik7Ci0gICAgTGF5b3V0U2l6ZSB2aWV3cG9ydFNpemUobV9jbGllbnQudmll
d3BvcnRTaXplKCkud2lkdGgoKSwgbV9jbGllbnQudmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOwor
ICAgIExheW91dFNpemUgdmlld3BvcnRTaXplKG1fY2xpZW50LnNjcm9sbEV4dGVudHMoKS52aWV3
cG9ydFNpemUpOwogICAgIExheW91dFBvaW50IGxheW91dERlc3RpbmF0aW9uT2Zmc2V0KGRlc3Rp
bmF0aW9uT2Zmc2V0LngoKSAvIHNjYWxlRmFjdG9yLCBkZXN0aW5hdGlvbk9mZnNldC55KCkgLyBz
Y2FsZUZhY3Rvcik7CiAgICAgTGF5b3V0VW5pdCBvZmZzZXQgPSBzbmFwU3RhdGUuc25hcE9mZnNl
dEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydFNpemUsIGxheW91dERlc3Rp
bmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzKS5maXJz
dDsKICAgICByZXR1cm4gb2Zmc2V0ICogc2NhbGVGYWN0b3I7CiB9CiAKLQogdm9pZCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQ2xpZW50
T2Zmc2V0KCkKIHsKICAgICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAppbmRleCA5NWMz
OWNhMjA2Y2YzZTViYWI5YmM5MzNhZGMzZWRiY2Q1OWNmNmY1Li45ZGRiNmJiOTJjYTcyYzRlYzAx
NmEwNmM5YzE1ZmQ5NWNmMzI3MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKQEAgLTExMSw4ICsxMTEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKSB7IH0KICAgICB2
aXJ0dWFsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIExh
eW91dFNpemUgc2Nyb2xsRXh0ZW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgRmxvYXRTaXpl
IHZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbEV4dGVudHMgc2Ny
b2xsRXh0ZW50cygpIGNvbnN0ID0gMDsKIH07CiAKIGNsYXNzIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IuY3BwCmluZGV4IGFjMDY4YzM2NTBhMDM4ZGM4MTdiYTlkZTMzMjA5
M2I0Yzc1ODYyYTQuLjUyZTk5NzlmY2YwYjdjODc4N2U4M2I3OWIxNmJlMDcxYjAwZTc2MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yLmNwcApAQCAtNDIsMTIgKzQyLDExIEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgcHJv
amVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZShmbG9hdCBpbml0aWFsV2hlZWxEZWx0YSkKICAg
ICByZXR1cm4gaW5lcnRpYWxTY3JvbGxQcmVkaWN0aW9uRmFjdG9yICogaW5pdGlhbFdoZWVsRGVs
dGE7CiB9CiAKLVNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUm
IGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCitT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihj
b25zdCBTY3JvbGxFeHRlbnRzJiBzY3JvbGxFeHRlbnRzLCBjb25zdCBGbG9hdFBvaW50JiBpbml0
aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXpl
JiBpbml0aWFsVmVsb2NpdHkpCiAgICAgOiBtX2luaXRpYWxEZWx0YShpbml0aWFsRGVsdGEpCiAg
ICAgLCBtX2luaXRpYWxWZWxvY2l0eShpbml0aWFsVmVsb2NpdHkpCiAgICAgLCBtX2luaXRpYWxT
Y3JvbGxPZmZzZXQoaW5pdGlhbE9mZnNldCkKLSAgICAsIG1fdmlld3BvcnRTaXplKHZpZXdwb3J0
U2l6ZSkKLSAgICAsIG1fY29udGVudFNpemUoY29udGVudFNpemUpCisgICAgLCBtX3Njcm9sbEV4
dGVudHMoc2Nyb2xsRXh0ZW50cykKIHsKIH0KIApAQCAtNjIsMTYgKzYxLDE5IEBAIHZvaWQgU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KGNvbnN0
IEZsb2F0UG9pbnQmIHRhCiAKIEZsb2F0UG9pbnQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
OjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCiB7Ci0gICAgZmxvYXQgaW5pdGlhbE9mZnNl
dFggPSBjbGFtcFRvPGZsb2F0PihtX2luaXRpYWxTY3JvbGxPZmZzZXQueCgpICsgcHJvamVjdGVk
SW5lcnRpYWxTY3JvbGxEaXN0YW5jZShtX2luaXRpYWxEZWx0YS53aWR0aCgpKSwgMCwgbV9jb250
ZW50U2l6ZS53aWR0aCgpIC0gbV92aWV3cG9ydFNpemUud2lkdGgoKSk7Ci0gICAgZmxvYXQgaW5p
dGlhbE9mZnNldFkgPSBjbGFtcFRvPGZsb2F0PihtX2luaXRpYWxTY3JvbGxPZmZzZXQueSgpICsg
cHJvamVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZShtX2luaXRpYWxEZWx0YS5oZWlnaHQoKSks
IDAsIG1fY29udGVudFNpemUuaGVpZ2h0KCkgLSBtX3ZpZXdwb3J0U2l6ZS5oZWlnaHQoKSk7Cisg
ICAgYXV0byBtaW5TY3JvbGxPZmZzZXQgPSBtX3Njcm9sbEV4dGVudHMubWluaW11bVNjcm9sbE9m
ZnNldCgpOworICAgIGF1dG8gbWF4U2Nyb2xsT2Zmc2V0ID0gbV9zY3JvbGxFeHRlbnRzLm1heGlt
dW1TY3JvbGxPZmZzZXQoKTsKKworICAgIGZsb2F0IGluaXRpYWxPZmZzZXRYID0gY2xhbXBUbzxm
bG9hdD4obV9pbml0aWFsU2Nyb2xsT2Zmc2V0LngoKSArIHByb2plY3RlZEluZXJ0aWFsU2Nyb2xs
RGlzdGFuY2UobV9pbml0aWFsRGVsdGEud2lkdGgoKSksIG1pblNjcm9sbE9mZnNldC54KCksIG1h
eFNjcm9sbE9mZnNldC54KCkpOworICAgIGZsb2F0IGluaXRpYWxPZmZzZXRZID0gY2xhbXBUbzxm
bG9hdD4obV9pbml0aWFsU2Nyb2xsT2Zmc2V0LnkoKSArIHByb2plY3RlZEluZXJ0aWFsU2Nyb2xs
RGlzdGFuY2UobV9pbml0aWFsRGVsdGEuaGVpZ2h0KCkpLCBtaW5TY3JvbGxPZmZzZXQueSgpLCBt
YXhTY3JvbGxPZmZzZXQueSgpKTsKICAgICByZXR1cm4geyBpbml0aWFsT2Zmc2V0WCwgaW5pdGlh
bE9mZnNldFkgfTsKIH0KIAogI2lmICFQTEFURk9STShNQUMpCiAKLXN0ZDo6dW5pcXVlX3B0cjxT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNv
bnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCitzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBTY3JvbGxFeHRlbnRzJiBzY3JvbGxFeHRlbnRzLCBj
b25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxE
ZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIG1h
a2VVbmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwg
Y29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cj4oc2Nyb2xsRXh0ZW50cywgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVs
b2NpdHkpOwogfQogCiB2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZv
cm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpCkBAIC04MCw4ICs4Miw4
IEBAIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVt
U2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoCiAKICNlbmRpZgogCi1CYXNpY1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcjo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3Qg
RmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKLSAgICA6IFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0
LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSkKK0Jhc2ljU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBTY3JvbGxF
eHRlbnRzJiBzY3JvbGxFeHRlbnRzLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVs
b2NpdHkpCisgICAgOiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Ioc2Nyb2xsRXh0ZW50cywg
aW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yLmgKaW5kZXggNGM3NTEzM2ZmODFlYzQxYzQ3ZTQ5YjA4NTU4OGI4MGEzZjNkZTJlMS4uMWM2
NTM1YTRiZmM1ZTdjYmQ4ZDQyOTg3Nzk2OTFmZWY1ZTE3ZjA1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKQEAgLTM5
LDkgKzM5LDkgQEAgY2xhc3MgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHsKIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xs
aW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCk7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmll
d3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50
JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxv
YXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3QgU2Nyb2xsRXh0ZW50cyYsIGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CiAKLSAgICBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxv
Y2l0eSk7CisgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IFNjcm9sbEV4dGVu
dHMmLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGlu
aXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogICAgIHZpcnR1
YWwgflNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcigpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1
YWwgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMpID0gMDsK
QEAgLTU2LDggKzU2LDcgQEAgcHJvdGVjdGVkOgogICAgIEZsb2F0U2l6ZSBtX2luaXRpYWxEZWx0
YTsKICAgICBGbG9hdFNpemUgbV9pbml0aWFsVmVsb2NpdHk7CiAgICAgRmxvYXRQb2ludCBtX2lu
aXRpYWxTY3JvbGxPZmZzZXQ7Ci0gICAgRmxvYXRTaXplIG1fdmlld3BvcnRTaXplOwotICAgIEZs
b2F0U2l6ZSBtX2NvbnRlbnRTaXplOworICAgIFNjcm9sbEV4dGVudHMgbV9zY3JvbGxFeHRlbnRz
OwogCiBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbV9yZXRhcmdldGVk
U2Nyb2xsT2Zmc2V0OwpAQCAtNjUsNyArNjQsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBCYXNpY1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IgewogcHVibGljOgotICAgIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRl
bnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUm
IGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOworICAgIEJh
c2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBjb25z
dCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0
YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogCiBwcml2YXRlOgogICAgIEZs
b2F0UG9pbnQgc2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlci5tbQppbmRleCA0NzExOTRlOTdmNTU4MmFiNmE3YmE2OWQwYzkzYTdjMTAyZWJk
ZWJiLi5jYjA4M2FkYTMxNmYwMjlkNjM2N2JjOGY5NDYzNGZiNGVhMDJmYjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLm1tCkBAIC02NjYsNyArNjY2LDcgQEAgdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6c3RhdGVsZXNzU25hcFRyYW5zaXRpb25UaW1lckZpcmVkKCkKICAgICBpZiAoIXVzZXNT
Y3JvbGxTbmFwKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2Nyb2xsU25hcFN0YXRlLT50
cmFuc2l0aW9uVG9TbmFwQW5pbWF0aW9uU3RhdGUobV9jbGllbnQuc2Nyb2xsRXh0ZW50KCksIG1f
Y2xpZW50LnZpZXdwb3J0U2l6ZSgpLCBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSwgbV9jbGll
bnQuc2Nyb2xsT2Zmc2V0KCkpOworICAgIG1fc2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0aW9uVG9T
bmFwQW5pbWF0aW9uU3RhdGUobV9jbGllbnQuc2Nyb2xsRXh0ZW50cygpLCBtX2NsaWVudC5wYWdl
U2NhbGVGYWN0b3IoKSwgbV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCkpOwogICAgIHN0YXJ0U2Nyb2xs
U25hcEFuaW1hdGlvbigpOwogfQogCkBAIC03MDEsMTEgKzcwMSwxMSBAQCBib29sIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3Qg
UGxhdGZvcm1XaAogICAgICAgICBtX2RyYWdFbmRlZFNjcm9sbGluZ1ZlbG9jaXR5ID0gLXdoZWVs
RXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXaGVl
bEV2ZW50U3RhdHVzOjpVc2VyU2Nyb2xsRW5kOgotICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZS0+
dHJhbnNpdGlvblRvU25hcEFuaW1hdGlvblN0YXRlKG1fY2xpZW50LnNjcm9sbEV4dGVudCgpLCBt
X2NsaWVudC52aWV3cG9ydFNpemUoKSwgbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCksIG1fY2xp
ZW50LnNjcm9sbE9mZnNldCgpKTsKKyAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnRyYW5zaXRp
b25Ub1NuYXBBbmltYXRpb25TdGF0ZShtX2NsaWVudC5zY3JvbGxFeHRlbnRzKCksIG1fY2xpZW50
LnBhZ2VTY2FsZUZhY3RvcigpLCBtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSk7CiAgICAgICAgIHN0
YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdoZWVs
RXZlbnRTdGF0dXM6Ok1vbWVudHVtU2Nyb2xsQmVnaW46Ci0gICAgICAgIG1fc2Nyb2xsU25hcFN0
YXRlLT50cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRlKG1fY2xpZW50LnNjcm9sbEV4dGVu
dCgpLCBtX2NsaWVudC52aWV3cG9ydFNpemUoKSwgbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCks
IG1fY2xpZW50LnNjcm9sbE9mZnNldCgpLCBtX2RyYWdFbmRlZFNjcm9sbGluZ1ZlbG9jaXR5LCBG
bG9hdFNpemUoLXdoZWVsRXZlbnQuZGVsdGFYKCksIC13aGVlbEV2ZW50LmRlbHRhWSgpKSk7Cisg
ICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRl
KG1fY2xpZW50LnNjcm9sbEV4dGVudHMoKSwgbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCksIG1f
Y2xpZW50LnNjcm9sbE9mZnNldCgpLCBtX2RyYWdFbmRlZFNjcm9sbGluZ1ZlbG9jaXR5LCBGbG9h
dFNpemUoLXdoZWVsRXZlbnQuZGVsdGFYKCksIC13aGVlbEV2ZW50LmRlbHRhWSgpKSk7CiAgICAg
ICAgIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVsb2NpdHkgPSB7IH07CiAgICAgICAgIGlzTW9tZW50
dW1TY3JvbGxpbmcgPSB0cnVlOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMu
aAppbmRleCAzYjU3ZjUzNWJlNjYxYjIxMzc5NGM3OTJhZjY3NDVhM2RhMjBiMmI2Li5hNWMwY2Vk
MGFmNzA5NjViNjY0OWQzMDA0OWQyODkwODM1NjdhN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yy5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvciB7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
KGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRT
aXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGlu
aXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOworICAgIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYyhjb25zdCBTY3JvbGxFeHRlbnRzJiwgY29uc3QgRmxv
YXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKIAogcHJpdmF0ZToKICAgICBGbG9hdFBv
aW50IHNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcykgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYy5tbQppbmRleCA2ZGMyMWVhNjU1NjVmN2U1OTQ5YjFmMjQ1ZjhjMzA2MTll
Zjk4NmFlLi41ZGUwNzY1OTdlMjI4MzE4ZWZiNTg4MDI0YmJkMzEzNzVlNjFmYWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3JNYWMubW0KQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgYm9vbCBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rp
b24gPSB0cnVlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
PiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZp
ZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2lu
dCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZs
b2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQorc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29uc3Qg
U2Nyb2xsRXh0ZW50cyYgc2Nyb2xsRXh0ZW50cywgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9m
ZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5p
dGlhbFZlbG9jaXR5KQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwg
aW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4oc2Nyb2xsRXh0ZW50cywgaW5pdGlhbE9mZnNl
dCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogfQogCiB2b2lkIFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25F
bmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTQ0LDggKzQ0LDggQEAgdm9pZCBTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5h
YmxlZCgKICAgICBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24gPSBl
bmFibGVkOwogfQogCi1TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OlNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvck1hYyhjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwg
Y29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZl
bG9jaXR5KQotICAgIDogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKHZpZXdwb3J0U2l6ZSwg
Y29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5
KQorU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3JNYWMoY29uc3QgU2Nyb2xsRXh0ZW50cyYgc2Nyb2xsRXh0ZW50cywgY29uc3QgRmxvYXRQ
b2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0
IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQorICAgIDogU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yKHNjcm9sbEV4dGVudHMsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlh
bFZlbG9jaXR5KQogewogfQogCkBAIC05NCw5ICs5NCw5IEBAIF9OU1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvciAqU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjplbnN1cmVQbGF0Zm9y
bU1vCiAgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yLmdldCgpOwog
CiAgICAgTlNQb2ludCBvcmlnaW4gPSBtX2luaXRpYWxTY3JvbGxPZmZzZXQ7Ci0gICAgTlNSZWN0
IGNvbnRlbnRGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgbV9jb250ZW50U2l6ZS53aWR0aCgpLCBt
X2NvbnRlbnRTaXplLmhlaWdodCgpKTsKKyAgICBOU1JlY3QgY29udGVudEZyYW1lID0gTlNNYWtl
UmVjdCgwLCAwLCBtX3Njcm9sbEV4dGVudHMuY29udGVudHNTaXplLndpZHRoKCksIG1fc2Nyb2xs
RXh0ZW50cy5jb250ZW50c1NpemUuaGVpZ2h0KCkpOwogICAgIE5TUG9pbnQgdmVsb2NpdHkgPSBO
U01ha2VQb2ludChtX2luaXRpYWxWZWxvY2l0eS53aWR0aCgpLCBtX2luaXRpYWxWZWxvY2l0eS5o
ZWlnaHQoKSk7Ci0gICAgbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvciA9IGFkb3B0TlMoW1tf
TlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgYWxsb2NdIGluaXRXaXRoSW5pdGlhbE9yaWdp
bjpvcmlnaW4gdmVsb2NpdHk6dmVsb2NpdHkgZG9jdW1lbnRGcmFtZTpjb250ZW50RnJhbWUgY29u
c3RyYWluZWRDbGlwcGluZ09yaWdpbjpOU1plcm9Qb2ludCBjbGlwcGluZ1NpemU6bV92aWV3cG9y
dFNpemUgdG9sZXJhbmNlOk5TTWFrZVNpemUoMSwgMSldKTsKKyAgICBtX3BsYXRmb3JtTW9tZW50
dW1DYWxjdWxhdG9yID0gYWRvcHROUyhbW19OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBh
bGxvY10gaW5pdFdpdGhJbml0aWFsT3JpZ2luOm9yaWdpbiB2ZWxvY2l0eTp2ZWxvY2l0eSBkb2N1
bWVudEZyYW1lOmNvbnRlbnRGcmFtZSBjb25zdHJhaW5lZENsaXBwaW5nT3JpZ2luOk5TWmVyb1Bv
aW50IGNsaXBwaW5nU2l6ZTptX3Njcm9sbEV4dGVudHMudmlld3BvcnRTaXplIHRvbGVyYW5jZTpO
U01ha2VTaXplKDEsIDEpXSk7CiAgICAgbV9pbml0aWFsRGVzdGluYXRpb25PcmlnaW4gPSBbbV9w
bGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvciBkZXN0aW5hdGlvbk9yaWdpbl07CiAgICAgcmV0dXJu
IG1fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IuZ2V0KCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438628</attachid>
            <date>2021-09-19 18:18:32 -0700</date>
            <delta_ts>2021-09-19 20:05:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230465-20210919181831.patch</filename>
            <type>text/plain</type>
            <size>35779</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk1M2Q3MDZlMDY5ZDc5
ZjA4MGQ1ZTFjNzYzNjI2NDA0MzBmODZhYi4uNDE2ZTI1ZjA3YzE0MmY3ZWEyNzQwMWIzNjI1ZGIy
ZTQwNGM4OGIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTA5LTE5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yIHdvcmsgaW4gdGVybXMgb2YgU2Nyb2xsRXh0ZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDY1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xsQW5pbWF0
b3IgZ2V0cyBtaW4vbWF4IHNjcm9sbCBvZmZzZXRzIGFuZCB0aGUgdmlld3BvcnQgc2l6ZSB2aWEg
YSBTY3JvbGxFeHRlbnRzCisgICAgICAgIGNsYXNzLiBUbyBlYXNlIGEgZnV0dXJlIHRyYW5zaXRp
b24gb2YgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHRvIGJlIGEgU2Nyb2xsQW5pbWF0b3Is
CisgICAgICAgIG1vdmUgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHRvIHVzZSB0aGUgc2Ft
ZSBzdHJ1Y3QsIHdoaWNoIGlzIG1vZGlmaWVkIHRvIHNhdGlzZnkKKyAgICAgICAgdGhlIG5lZWQg
dG8gcHJvdmlkZSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMgd2l0aCB0aGUgY29udGVu
dHMgc2l6ZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzY3JvbGxFeHRlbnRzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OnNjcm9sbEV4dGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjp2aWV3cG9ydFNpemUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFs
VmVsb2NpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0T3JSZXRhcmdl
dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVw
ZGF0ZVNjcm9sbEV4dGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzRm9yQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnZpZXdw
b3J0U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dHJhbnNpdGlvblRvU25h
cEFuaW1hdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0
YXRlOjp0cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRPZmZzZXRGb3JTdGFy
dE9mZnNldCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsRXh0ZW50czo6bWluaW11bVNjcm9sbE9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxFeHRlbnRzOjptYXhpbXVtU2Nyb2xsT2Zmc2V0IGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJ
bmRleEZvckF4aXNBbmRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnByZWRpY3RlZERlc3RpbmF0
aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yOjpCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcik6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXRlbGVzc1NuYXBUcmFuc2l0aW9uVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvck1hYzo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6ZW5zdXJl
UGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IpOgorCiAyMDIxLTA5LTE5ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xsQW5pbWF0aW9u
IHdvcmsgaW4gdGVybXMgb2Ygb2Zmc2V0cywgbm90IHBvc2l0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXggYTkwOGU1NGM4NzlkNDA4Yjcw
MGE1OWJjY2Y3MWE5MGM0MDNhMTI4Ni4uZDg2Yzk3NTFiNGZiYTg5ZmEyNWMwZTkyMDYzZWVkNzIz
M2FhM2UwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5oCkBAIC05MiwxMyArOTIsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHNjcm9sbFBvc2l0aW9u
SXNOb3RSdWJiZXJiYW5kaW5nRWRnZShjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgdm9p
ZCBzY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXJGaXJlZCgpOwogCi0gICAgRmxvYXRQb2lu
dCBzY3JvbGxPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGltbWVkaWF0ZVNjcm9s
bE9uQXhpcyhTY3JvbGxFdmVudEF4aXMsIGZsb2F0IGRlbHRhKSBvdmVycmlkZTsKLSAgICBmbG9h
dCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFBvaW50IHNjcm9s
bE9mZnNldCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsT25BeGlzKFNj
cm9sbEV2ZW50QXhpcywgZmxvYXQgZGVsdGEpIGZpbmFsOworICAgIGZsb2F0IHBhZ2VTY2FsZUZh
Y3RvcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgd2lsbFN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlv
bigpIGZpbmFsOwogICAgIHZvaWQgZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKSBmaW5hbDsK
LSAgICBMYXlvdXRTaXplIHNjcm9sbEV4dGVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEZsb2F0
U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTY3JvbGxFeHRlbnRzIHNj
cm9sbEV4dGVudHMoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcmVsZWFzZVJlZmVyZW5jZXNU
b1Njcm9sbGVySW1wc09uVGhlTWFpblRocmVhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IGM4YTdiY2ZiYjk1NmQ3ZDE2NTBkODE4
ODRlOThlNzAzNzE4ZmIxYTcuLmI4MjQ0ZTNkZWJlZDUzOTE2MWZmMzU1NTM1OTYxYzYyM2I1YWI1
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1t
CkBAIC00MTUsMTQgKzQxNSwxMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkKICAgICBzY3JvbGxpbmdOb2Rl
KCkuc2V0U2Nyb2xsU25hcEluUHJvZ3Jlc3MoZmFsc2UpOwogfQogICAgIAotTGF5b3V0U2l6ZSBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzY3JvbGxFeHRlbnQoKSBjb25z
dAorU2Nyb2xsRXh0ZW50cyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpz
Y3JvbGxFeHRlbnRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gTGF5b3V0U2l6ZSh0b3RhbENvbnRl
bnRzU2l6ZSgpKTsKLX0KLQotRmxvYXRTaXplIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjcm9sbGFibGVB
cmVhU2l6ZSgpOworICAgIHJldHVybiB7CisgICAgICAgIHNjcm9sbGluZ05vZGUoKS50b3RhbENv
bnRlbnRzU2l6ZSgpLAorICAgICAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsYWJsZUFyZWFTaXpl
KCkKKyAgICB9OwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb24uaAppbmRleCBjODZjZjdmZmUxODRhNGUxYTFhZDMwM2Y3YTc0
ZmJiMGE5ZjUxOTMxLi5mMTY2NGUwOGY1Zjc4MDhjYmJhMTM3YjJmNzlhNmQyNDdlMmZkYjY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaApAQCAtMzQsMTIgKzM0
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIFNjcm9s
bEFuaW1hdGlvbjsKIAotc3RydWN0IFNjcm9sbEV4dGVudHMgewotICAgIFNjcm9sbE9mZnNldCBt
aW5pbXVtU2Nyb2xsT2Zmc2V0OwotICAgIFNjcm9sbE9mZnNldCBtYXhpbXVtU2Nyb2xsT2Zmc2V0
OwotICAgIEludFNpemUgdmlzaWJsZVNpemU7Ci19OwotCiBjbGFzcyBTY3JvbGxBbmltYXRpb25D
bGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbkNsaWVudCgpID0g
ZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYy5jcHAKaW5kZXggODdmYmE5MmU2ZGUyYWFlMDJjM2U3YjljYWI2MjBjMGRiNTk5NGMx
OC4uYmEyNTdkYTM0NjgwOGM0M2JiOWM3NTk1YWNkNjEzM2M4MmVhM2Q2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKQEAgLTE5
OSwxNSArMTk5LDE1IEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRl
ZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQCiAgICAgfTsKIAogICAgIGlm
IChtYXlIU2Nyb2xsKSB7Ci0gICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBQZXJBeGlzRGF0YShl
eHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQueCgpLAotICAgICAgICAgICAgZXh0ZW50cy5tYXhp
bXVtU2Nyb2xsT2Zmc2V0LngoKSwKKyAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNE
YXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCgpLngoKSwKKyAgICAgICAgICAgIGV4dGVu
dHMubWF4aW11bVNjcm9sbE9mZnNldCgpLngoKSwKICAgICAgICAgICAgIGluaXRpYWxPZmZzZXQu
eCgpLCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkueCgpLCBtX2hvcml6b250YWxEYXRhKSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAobWF5VlNjcm9sbCkgewotICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IFBlckF4aXNE
YXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldC55KCksCi0gICAgICAgICAgICBleHRlbnRz
Lm1heGltdW1TY3JvbGxPZmZzZXQueSgpLAorICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IFBlckF4
aXNEYXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCgpLnkoKSwKKyAgICAgICAgICAgIGV4
dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpLnkoKSwKICAgICAgICAgICAgIGluaXRpYWxPZmZz
ZXQueSgpLCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkueSgpLCBtX3ZlcnRpY2FsRGF0YSkp
OwogICAgIH0gZWxzZQogICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCmlu
ZGV4IDZlMjk3NTE5ZDg0ZGQ1NGViZWI1MzUyMzUzYjAzYzZkMjRlNTBiNDYuLmZkNWIzMDUzMmEx
ZmU0Y2ViNjNmMTdlNTY3MjcxMDUzOTUwNDRkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcApAQCAtOTMsNyArOTMsNyBAQCBib29s
IFNjcm9sbEFuaW1hdGlvblNtb290aDo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxv
YXRQb2ludCYgbmV3T2Zmc2V0KQogCiBib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRP
clJldGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmIGV4dGVudHMsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KQogewotICAgIG1fZGVzdGluYXRpb25PZmZzZXQg
PSBkZXN0aW5hdGlvbk9mZnNldC5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Ny
b2xsT2Zmc2V0LCBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQpOworICAgIG1fZGVzdGluYXRp
b25PZmZzZXQgPSBkZXN0aW5hdGlvbk9mZnNldC5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5t
aW5pbXVtU2Nyb2xsT2Zmc2V0KCksIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpKTsKICAg
ICBib29sIG5lZWRUb1Njcm9sbCA9IG1fc3RhcnRPZmZzZXQgIT0gbV9kZXN0aW5hdGlvbk9mZnNl
dDsKIAogICAgIGlmIChuZWVkVG9TY3JvbGwgJiYgIWlzQWN0aXZlKCkpIHsKQEAgLTExMyw3ICsx
MTMsNyBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6dXBkYXRlU2Nyb2xsRXh0ZW50cygp
CiB7CiAgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlv
bigqdGhpcyk7CiAgICAgLy8gRklYTUU6IElkZWFsbHkgZml4IHVwIG1fc3RhcnRPZmZzZXQgc28g
bV9jdXJyZW50T2Zmc2V0IGRvZXNuJ3QgZ28gYmFja3dhcmRzLgotICAgIG1fZGVzdGluYXRpb25P
ZmZzZXQgPSBtX2Rlc3RpbmF0aW9uT2Zmc2V0LmNvbnN0cmFpbmVkQmV0d2VlbihleHRlbnRzLm1p
bmltdW1TY3JvbGxPZmZzZXQsIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCk7CisgICAgbV9k
ZXN0aW5hdGlvbk9mZnNldCA9IG1fZGVzdGluYXRpb25PZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVu
KGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCgpLCBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZz
ZXQoKSk7CiB9CiAKIFNlY29uZHMgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpkdXJhdGlvbkZyb21E
aXN0YW5jZShjb25zdCBGbG9hdFNpemUmIGRlbHRhKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IDViMTU1NjYwZWY4ZGU1Yjk0NWY2YTQ5YTBl
ZWE2N2U1ZGE4OTNkNWIuLjJmMGZlYmQ4ZDNmMGYwYmRmMmVhZGNmZjE2Yjg4NWQzYzg0MjI3MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTI4OCwx
NCArMjg4LDEyIEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OmltbWVkaWF0ZVNjcm9sbE9uQXhpcyhT
Y3JvbGxFdmVudEF4aXMgYXhpcywgZmxvYXQgZGVsdGEpCiAgICAgc2Nyb2xsVG9Qb3NpdGlvbldp
dGhvdXRBbmltYXRpb24oY3VycmVudFBvc2l0aW9uKCkgKyBkZWx0YVNpemUpOwogfQogCi1MYXlv
dXRTaXplIFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnQoKSBjb25zdAorU2Nyb2xsRXh0ZW50
cyBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsRXh0ZW50cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
c2Nyb2xsYWJsZUFyZWEuY29udGVudHNTaXplKCk7Ci19Ci0KLUZsb2F0U2l6ZSBTY3JvbGxBbmlt
YXRvcjo6dmlld3BvcnRTaXplKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJl
YS52aXNpYmxlU2l6ZSgpOworICAgIHJldHVybiB7CisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEu
dG90YWxDb250ZW50c1NpemUoKSwKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS52aXNpYmxlU2l6
ZSgpCisgICAgfTsKIH0KIAogZmxvYXQgU2Nyb2xsQW5pbWF0b3I6OnBhZ2VTY2FsZUZhY3Rvcigp
IGNvbnN0CkBAIC00MDAsMTEgKzM5OCw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEFu
aW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKQogCiBTY3JvbGxFeHRlbnRzIFNjcm9sbEFu
aW1hdG9yOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpCiB7Ci0g
ICAgcmV0dXJuIHsKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5taW5pbXVtU2Nyb2xsT2Zmc2V0
KCksCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEubWF4aW11bVNjcm9sbE9mZnNldCgpLAotICAg
ICAgICBtX3Njcm9sbGFibGVBcmVhLnZpc2libGVTaXplKCkKLSAgICB9OworICAgIHJldHVybiBz
Y3JvbGxFeHRlbnRzKCk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmgKaW5kZXggYjE2NjI2Yjg0ODNiZWQ2MDQ1ZjExOTc2ZDE4MzRjYTBiZDJiYjViYy4uNzBk
NDE1N2U0ODcxZGM2ODU4MGJjZjk3MjhlZmM4NTgyODhmMDBkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCkBAIC0xMzUsOCArMTM1LDcgQEAgcHVibGljOgogICAg
IEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbW1l
ZGlhdGVTY3JvbGxPbkF4aXMoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBkZWx0YSkgb3ZlcnJpZGU7
CiAgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0
U2l6ZSBzY3JvbGxFeHRlbnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBGbG9hdFNpemUgdmlld3Bv
cnRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU2Nyb2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRz
KCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgZGVmZXJXaGVl
bEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3Jv
bGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24p
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9u
RGVmZXJyYWxGb3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlk
ZW50aWZpZXIsIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1h
dG9yU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9y
U3RhdGUuY3BwCmluZGV4IDgxMDY4MzVlOWQyNGFjN2RlNmRmODQ2NTRlYjc2YjBkMTljNjdjMWMu
LjFlNDdjNzUzMzM0MTAzNDk5MmI0MmZjMjRiY2U1NjA3YjdlMDY2NzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHAKQEAgLTMx
LDI4ICszMSwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgU2Nyb2xsU25hcEFu
aW1hdG9yU3RhdGU6OnRyYW5zaXRpb25Ub1NuYXBBbmltYXRpb25TdGF0ZShjb25zdCBGbG9hdFNp
emUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFn
ZVNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0KQordm9pZCBTY3JvbGxTbmFw
QW5pbWF0b3JTdGF0ZTo6dHJhbnNpdGlvblRvU25hcEFuaW1hdGlvblN0YXRlKGNvbnN0IFNjcm9s
bEV4dGVudHMmIHNjcm9sbEV4dGVudHMsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3QgRmxvYXRQb2lu
dCYgaW5pdGlhbE9mZnNldCkKIHsKLSAgICBzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNu
YXBTdGF0ZTo6U25hcHBpbmcsIGNvbnRlbnRTaXplLCB2aWV3cG9ydFNpemUsIHBhZ2VTY2FsZSwg
aW5pdGlhbE9mZnNldCwgeyB9LCB7IH0pOworICAgIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Ny
b2xsU25hcFN0YXRlOjpTbmFwcGluZywgc2Nyb2xsRXh0ZW50cywgcGFnZVNjYWxlLCBpbml0aWFs
T2Zmc2V0LCB7IH0sIHsgfSk7CiB9CiAKLXZvaWQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRy
YW5zaXRpb25Ub0dsaWRlQW5pbWF0aW9uU3RhdGUoY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6
ZSwgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2Np
dHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhKQordm9pZCBTY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZTo6dHJhbnNpdGlvblRvR2xpZGVBbmltYXRpb25TdGF0ZShjb25zdCBTY3JvbGxFeHRl
bnRzJiBzY3JvbGxFeHRlbnRzLCBmbG9hdCBwYWdlU2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIGlu
aXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxEZWx0YSkKIHsKLSAgICBzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9s
bFNuYXBTdGF0ZTo6R2xpZGluZywgY29udGVudFNpemUsIHZpZXdwb3J0U2l6ZSwgcGFnZVNjYWxl
LCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsVmVsb2NpdHksIGluaXRpYWxEZWx0YSk7CisgICAgc2V0
dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGU6OkdsaWRpbmcsIHNjcm9sbEV4dGVu
dHMsIHBhZ2VTY2FsZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbFZlbG9jaXR5LCBpbml0aWFsRGVs
dGEpOwogfQogCi12b2lkIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZv
clN0YXRlKFNjcm9sbFNuYXBTdGF0ZSBzdGF0ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6
ZSwgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2Np
dHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhKQordm9pZCBTY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZTo6c2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3JvbGxTbmFwU3RhdGUgc3RhdGUsIGNv
bnN0IFNjcm9sbEV4dGVudHMmIHNjcm9sbEV4dGVudHMsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2Np
dHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhKQogewogICAgIEFTU0VSVChzdGF0ZSA9
PSBTY3JvbGxTbmFwU3RhdGU6OlNuYXBwaW5nIHx8IHN0YXRlID09IFNjcm9sbFNuYXBTdGF0ZTo6
R2xpZGluZyk7CiAgICAgaWYgKG1fY3VycmVudFN0YXRlID09IHN0YXRlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IFNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvcjo6Y3JlYXRlKHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGlu
aXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKKyAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKHNjcm9sbEV4dGVudHMsIGluaXRp
YWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KTsKICAgICBGbG9hdFBvaW50
IHByZWRpY3RlZFNjcm9sbFRhcmdldCB7IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5wcmVkaWN0ZWRE
ZXN0aW5hdGlvbk9mZnNldCgpIH07CiAKICAgICBmbG9hdCB0YXJnZXRPZmZzZXRYLCB0YXJnZXRP
ZmZzZXRZOwotICAgIHN0ZDo6dGllKHRhcmdldE9mZnNldFgsIG1fYWN0aXZlU25hcEluZGV4WCkg
PSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWws
IHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUud2lkdGgoKSAtIHZpZXdwb3J0U2l6ZS53aWR0aCgp
LCBpbml0aWFsT2Zmc2V0LngoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LCBwYWdlU2NhbGUsIGlu
aXRpYWxEZWx0YS53aWR0aCgpKTsKLSAgICBzdGQ6OnRpZSh0YXJnZXRPZmZzZXRZLCBtX2FjdGl2
ZVNuYXBJbmRleFkpID0gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQoU2Nyb2xsRXZlbnRBeGlz
OjpWZXJ0aWNhbCwgdmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS5oZWlnaHQoKSAtIHZpZXdwb3J0
U2l6ZS5oZWlnaHQoKSwgaW5pdGlhbE9mZnNldC55KCksIHByZWRpY3RlZFNjcm9sbFRhcmdldCwg
cGFnZVNjYWxlLCBpbml0aWFsRGVsdGEuaGVpZ2h0KCkpOworICAgIHN0ZDo6dGllKHRhcmdldE9m
ZnNldFgsIG1fYWN0aXZlU25hcEluZGV4WCkgPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChT
Y3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwsIHNjcm9sbEV4dGVudHMsIGluaXRpYWxPZmZzZXQu
eCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQsIHBhZ2VTY2FsZSwgaW5pdGlhbERlbHRhLndpZHRo
KCkpOworICAgIHN0ZDo6dGllKHRhcmdldE9mZnNldFksIG1fYWN0aXZlU25hcEluZGV4WSkgPSB0
YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6OlZlcnRpY2FsLCBzY3Jv
bGxFeHRlbnRzLCBpbml0aWFsT2Zmc2V0LnkoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LCBwYWdl
U2NhbGUsIGluaXRpYWxEZWx0YS5oZWlnaHQoKSk7CiAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3It
PnNldFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoeyB0YXJnZXRPZmZzZXRYLCB0YXJnZXRPZmZzZXRZ
IH0pOwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiAgICAgbV9jdXJy
ZW50U3RhdGUgPSBzdGF0ZTsKQEAgLTkxLDE1ICs5MSwxOCBAQCBGbG9hdFBvaW50IFNjcm9sbFNu
YXBBbmltYXRvclN0YXRlOjpjdXJyZW50QW5pbWF0ZWRTY3JvbGxPZmZzZXQoTW9ub3RvbmljVGlt
ZSBjdQogICAgIHJldHVybiBtX21vbWVudHVtQ2FsY3VsYXRvci0+c2Nyb2xsT2Zmc2V0QWZ0ZXJF
bGFwc2VkVGltZShlbGFwc2VkVGltZSk7CiB9CiAKLXN0ZDo6cGFpcjxmbG9hdCwgc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4+IFNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRPZmZzZXRGb3JT
dGFydE9mZnNldChTY3JvbGxFdmVudEF4aXMgYXhpcywgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9y
dFNpemUsIGZsb2F0IG1heFNjcm9sbE9mZnNldCwgZmxvYXQgc3RhcnRPZmZzZXQsIEZsb2F0UG9p
bnQgcHJlZGljdGVkT2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IGluaXRpYWxEZWx0YSkg
Y29uc3QKK3N0ZDo6cGFpcjxmbG9hdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IFNjcm9sbFNu
YXBBbmltYXRvclN0YXRlOjp0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4
aXMgYXhpcywgY29uc3QgU2Nyb2xsRXh0ZW50cyYgc2Nyb2xsRXh0ZW50cywgZmxvYXQgc3RhcnRP
ZmZzZXQsIEZsb2F0UG9pbnQgcHJlZGljdGVkT2Zmc2V0LCBmbG9hdCBwYWdlU2NhbGUsIGZsb2F0
IGluaXRpYWxEZWx0YSkgY29uc3QKIHsKKyAgICBhdXRvIG1pblNjcm9sbE9mZnNldCA9IChheGlz
ID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCkgPyBzY3JvbGxFeHRlbnRzLm1pbmltdW1T
Y3JvbGxPZmZzZXQoKS54KCkgOiBzY3JvbGxFeHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQoKS55
KCk7CisgICAgYXV0byBtYXhTY3JvbGxPZmZzZXQgPSAoYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6
Okhvcml6b250YWwpID8gc2Nyb2xsRXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueCgpIDog
c2Nyb2xsRXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueSgpOworCiAgICAgY29uc3QgYXV0
byYgc25hcE9mZnNldHMgPSBtX3NuYXBPZmZzZXRzSW5mby5vZmZzZXRzRm9yQXhpcyhheGlzKTsK
ICAgICBpZiAoc25hcE9mZnNldHMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoY2xhbXBUbzxmbG9hdD4oYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwg
PyBwcmVkaWN0ZWRPZmZzZXQueCgpIDogcHJlZGljdGVkT2Zmc2V0LnkoKSwgMCwgbWF4U2Nyb2xs
T2Zmc2V0KSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGNs
YW1wVG88ZmxvYXQ+KGF4aXMgPT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsID8gcHJlZGlj
dGVkT2Zmc2V0LngoKSA6IHByZWRpY3RlZE9mZnNldC55KCksIG1pblNjcm9sbE9mZnNldCwgbWF4
U2Nyb2xsT2Zmc2V0KSwgc3RkOjpudWxsb3B0KTsKIAogICAgIExheW91dFBvaW50IHByZWRpY3Rl
ZExheW91dE9mZnNldChwcmVkaWN0ZWRPZmZzZXQueCgpIC8gcGFnZVNjYWxlLCBwcmVkaWN0ZWRP
ZmZzZXQueSgpIC8gcGFnZVNjYWxlKTsKLSAgICBhdXRvIFt0YXJnZXRPZmZzZXQsIHNuYXBJbmRl
eF0gPSBtX3NuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChheGlzLCBMYXlvdXRTaXpl
IHsgdmlld3BvcnRTaXplIH0sIHByZWRpY3RlZExheW91dE9mZnNldCwgaW5pdGlhbERlbHRhLCBM
YXlvdXRVbml0KHN0YXJ0T2Zmc2V0IC8gcGFnZVNjYWxlKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKHBhZ2VTY2FsZSAqIGNsYW1wVG88ZmxvYXQ+KGZsb2F0IHsgdGFyZ2V0T2Zmc2V0IH0s
IDAsIG1heFNjcm9sbE9mZnNldCksIHNuYXBJbmRleCk7CisgICAgYXV0byBbdGFyZ2V0T2Zmc2V0
LCBzbmFwSW5kZXhdID0gbV9zbmFwT2Zmc2V0c0luZm8uY2xvc2VzdFNuYXBPZmZzZXQoYXhpcywg
TGF5b3V0U2l6ZSB7IHNjcm9sbEV4dGVudHMudmlld3BvcnRTaXplIH0sIHByZWRpY3RlZExheW91
dE9mZnNldCwgaW5pdGlhbERlbHRhLCBMYXlvdXRVbml0KHN0YXJ0T2Zmc2V0IC8gcGFnZVNjYWxl
KSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHBhZ2VTY2FsZSAqIGNsYW1wVG88ZmxvYXQ+
KGZsb2F0IHsgdGFyZ2V0T2Zmc2V0IH0sIG1pblNjcm9sbE9mZnNldCwgbWF4U2Nyb2xsT2Zmc2V0
KSwgc25hcEluZGV4KTsKIH0KIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKaW5kZXggNjVhOTRlZDVm
ZDlmNjE0MmMzMWI5MTM0YTAzYWNjN2JkM2I4N2I0Yi4uMTBhY2NmZjllOThhNDdhYTBjODI1YzFk
OGY0ZWE2MzAzOTYwYTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsU25hcEFuaW1hdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIGVudW0gY2xhc3MgU2Nyb2xs
U25hcFN0YXRlIHsKICAgICBVc2VySW50ZXJhY3Rpb24KIH07CiAKK3N0cnVjdCBTY3JvbGxFeHRl
bnRzOworCiBjbGFzcyBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC03NiwxNSArNzgsMTUgQEAgcHVibGljOgogICAgIEZs
b2F0UG9pbnQgY3VycmVudEFuaW1hdGVkU2Nyb2xsT2Zmc2V0KE1vbm90b25pY1RpbWUsIGJvb2wm
IGlzQW5pbWF0aW9uQ29tcGxldGUpIGNvbnN0OwogCiAgICAgLy8gU3RhdGUgdHJhbnNpdGlvbiBo
ZWxwZXJzLgotICAgIHZvaWQgdHJhbnNpdGlvblRvU25hcEFuaW1hdGlvblN0YXRlKGNvbnN0IEZs
b2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9h
dCBwYWdlU2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQpOwotICAgIHZvaWQg
dHJhbnNpdGlvblRvR2xpZGVBbmltYXRpb25TdGF0ZShjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRT
aXplLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25z
dCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxv
Y2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEpOworICAgIHZvaWQgdHJhbnNpdGlv
blRvU25hcEFuaW1hdGlvblN0YXRlKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBmbG9hdCBwYWdlU2Nh
bGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQpOworICAgIHZvaWQgdHJhbnNpdGlv
blRvR2xpZGVBbmltYXRpb25TdGF0ZShjb25zdCBTY3JvbGxFeHRlbnRzJiwgZmxvYXQgcGFnZVNj
YWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGlu
aXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEpOwogICAgIHZvaWQg
dHJhbnNpdGlvblRvVXNlckludGVyYWN0aW9uU3RhdGUoKTsKICAgICB2b2lkIHRyYW5zaXRpb25U
b0Rlc3RpbmF0aW9uUmVhY2hlZFN0YXRlKCk7CiAKIHByaXZhdGU6Ci0gICAgc3RkOjpwYWlyPGZs
b2F0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4gdGFyZ2V0T2Zmc2V0Rm9yU3RhcnRPZmZzZXQo
U2Nyb2xsRXZlbnRBeGlzLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgbWF4
U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9mZnNldCwgRmxvYXRQb2ludCBwcmVkaWN0ZWRPZmZz
ZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhKSBjb25zdDsKKyAgICBzdGQ6
OnBhaXI8ZmxvYXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiB0YXJnZXRPZmZzZXRGb3JTdGFy
dE9mZnNldChTY3JvbGxFdmVudEF4aXMsIGNvbnN0IFNjcm9sbEV4dGVudHMmLCBmbG9hdCBzdGFy
dE9mZnNldCwgRmxvYXRQb2ludCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxv
YXQgaW5pdGlhbERlbHRhKSBjb25zdDsKICAgICB2b2lkIHRlYXJkb3duQW5pbWF0aW9uRm9yU3Rh
dGUoU2Nyb2xsU25hcFN0YXRlKTsKLSAgICB2b2lkIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Ny
b2xsU25hcFN0YXRlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFNp
emUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBpbml0
aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwgY29uc3QgRmxvYXRT
aXplJiBpbml0aWFsRGVsdGEpOworICAgIHZvaWQgc2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3Jv
bGxTbmFwU3RhdGUsIGNvbnN0IFNjcm9sbEV4dGVudHMmLCBmbG9hdCBwYWdlU2NhbGUsIGNvbnN0
IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9j
aXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSk7CiAKICAgICBTY3JvbGxTbmFwU3Rh
dGUgbV9jdXJyZW50U3RhdGUgeyBTY3JvbGxTbmFwU3RhdGU6OlVzZXJJbnRlcmFjdGlvbiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaAppbmRleCA0MjNlNzBlZmVhZGJmNTQ2
NmJjMGIzNjhlODFjZTI2MTA3MGZiN2EwLi43ZGM3ZTRiNDg3MjZhYzBmZGNiOThkNWI0YjYwNzZk
MmUzMDU4MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmgKQEAgLTI2OCw2
ICsyNjgsMTQgQEAgV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIFNjcm9sbFR5cGUpOwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbENsYW1waW5nKTsKIFdFQkNP
UkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBT
Y3JvbGxCZWhhdmlvckZvckZpeGVkRWxlbWVudHMpOwogCitzdHJ1Y3QgU2Nyb2xsRXh0ZW50cyB7
CisgICAgRmxvYXRTaXplIGNvbnRlbnRzU2l6ZTsKKyAgICBGbG9hdFNpemUgdmlld3BvcnRTaXpl
OworCisgICAgRmxvYXRQb2ludCBtaW5pbXVtU2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4g
eyB9OyB9CisgICAgRmxvYXRQb2ludCBtYXhpbXVtU2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gdG9GbG9hdFBvaW50KGNvbnRlbnRzU2l6ZSAtIHZpZXdwb3J0U2l6ZSkuZXhwYW5kZWRUbyh7
IDAsIDAgfSk7IH0KK307CisKIHN0cnVjdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMgewog
ICAgIFNjcm9sbFR5cGUgdHlwZTsKICAgICBTY3JvbGxDbGFtcGluZyBjbGFtcGluZyA9IFNjcm9s
bENsYW1waW5nOjpDbGFtcGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCmluZGV4IGYwYzkzOGI2NDM1Yjk5OWYxZDEz
YWUyNmFmMWFlZjA2MzExNjNiYmMuLjI3MDMwYzkxODMwMjNkMjc4ZDNkMTI0YWVlODE4YmQ2YmQ2
ZGIzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5jcHAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjpzZXROZWFyZXN0U2Nyb2xsU25hcEluZGV4Rm9yQXhpc0FuZE9mZnNl
dChTY3JvbAogICAgIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlJiBzbmFwU3RhdGUgPSAqbV9zY3Jv
bGxTbmFwU3RhdGU7CiAKICAgICBhdXRvIHNuYXBPZmZzZXRzID0gc25hcFN0YXRlLnNuYXBPZmZz
ZXRzRm9yQXhpcyhheGlzKTsKLSAgICBMYXlvdXRTaXplIHZpZXdwb3J0U2l6ZShtX2NsaWVudC52
aWV3cG9ydFNpemUoKS53aWR0aCgpLCBtX2NsaWVudC52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSk7
CisgICAgTGF5b3V0U2l6ZSB2aWV3cG9ydFNpemUobV9jbGllbnQuc2Nyb2xsRXh0ZW50cygpLnZp
ZXdwb3J0U2l6ZSk7CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZlSW5kZXg7CiAg
ICAgaWYgKHNuYXBPZmZzZXRzLnNpemUoKSkKICAgICAgICAgYWN0aXZlSW5kZXggPSBzbmFwU3Rh
dGUuc25hcE9mZnNldEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydFNpemUs
IGxheW91dFNjcm9sbE9mZnNldCwgMCkuc2Vjb25kOwpAQCAtMTg0LDEzICsxODQsMTIgQEAgZmxv
YXQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKFNj
cm9sbEV2ZW50QXhpcyBheGlzLAogICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gb3JpZ2lu
YWxPZmZzZXRJbkxheW91dFVuaXRzOwogICAgIGlmIChvcmlnaW5hbE9mZnNldCkKICAgICAgICAg
b3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzID0gTGF5b3V0VW5pdCgqb3JpZ2luYWxPZmZzZXQg
LyBzY2FsZUZhY3Rvcik7Ci0gICAgTGF5b3V0U2l6ZSB2aWV3cG9ydFNpemUobV9jbGllbnQudmll
d3BvcnRTaXplKCkud2lkdGgoKSwgbV9jbGllbnQudmlld3BvcnRTaXplKCkuaGVpZ2h0KCkpOwor
ICAgIExheW91dFNpemUgdmlld3BvcnRTaXplKG1fY2xpZW50LnNjcm9sbEV4dGVudHMoKS52aWV3
cG9ydFNpemUpOwogICAgIExheW91dFBvaW50IGxheW91dERlc3RpbmF0aW9uT2Zmc2V0KGRlc3Rp
bmF0aW9uT2Zmc2V0LngoKSAvIHNjYWxlRmFjdG9yLCBkZXN0aW5hdGlvbk9mZnNldC55KCkgLyBz
Y2FsZUZhY3Rvcik7CiAgICAgTGF5b3V0VW5pdCBvZmZzZXQgPSBzbmFwU3RhdGUuc25hcE9mZnNl
dEluZm8oKS5jbG9zZXN0U25hcE9mZnNldChheGlzLCB2aWV3cG9ydFNpemUsIGxheW91dERlc3Rp
bmF0aW9uT2Zmc2V0LCB2ZWxvY2l0eSwgb3JpZ2luYWxPZmZzZXRJbkxheW91dFVuaXRzKS5maXJz
dDsKICAgICByZXR1cm4gb2Zmc2V0ICogc2NhbGVGYWN0b3I7CiB9CiAKLQogdm9pZCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yQ2xpZW50
T2Zmc2V0KCkKIHsKICAgICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAppbmRleCA5NWMz
OWNhMjA2Y2YzZTViYWI5YmM5MzNhZGMzZWRiY2Q1OWNmNmY1Li45ZGRiNmJiOTJjYTcyYzRlYzAx
NmEwNmM5YzE1ZmQ5NWNmMzI3MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKQEAgLTExMSw4ICsxMTEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKSB7IH0KICAgICB2
aXJ0dWFsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIExh
eW91dFNpemUgc2Nyb2xsRXh0ZW50KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgRmxvYXRTaXpl
IHZpZXdwb3J0U2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbEV4dGVudHMgc2Ny
b2xsRXh0ZW50cygpIGNvbnN0ID0gMDsKIH07CiAKIGNsYXNzIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IuY3BwCmluZGV4IGFjMDY4YzM2NTBhMDM4ZGM4MTdiYTlkZTMzMjA5
M2I0Yzc1ODYyYTQuLjUyZTk5NzlmY2YwYjdjODc4N2U4M2I3OWIxNmJlMDcxYjAwZTc2MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yLmNwcApAQCAtNDIsMTIgKzQyLDExIEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgcHJv
amVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZShmbG9hdCBpbml0aWFsV2hlZWxEZWx0YSkKICAg
ICByZXR1cm4gaW5lcnRpYWxTY3JvbGxQcmVkaWN0aW9uRmFjdG9yICogaW5pdGlhbFdoZWVsRGVs
dGE7CiB9CiAKLVNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUm
IGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCitT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihj
b25zdCBTY3JvbGxFeHRlbnRzJiBzY3JvbGxFeHRlbnRzLCBjb25zdCBGbG9hdFBvaW50JiBpbml0
aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXpl
JiBpbml0aWFsVmVsb2NpdHkpCiAgICAgOiBtX2luaXRpYWxEZWx0YShpbml0aWFsRGVsdGEpCiAg
ICAgLCBtX2luaXRpYWxWZWxvY2l0eShpbml0aWFsVmVsb2NpdHkpCiAgICAgLCBtX2luaXRpYWxT
Y3JvbGxPZmZzZXQoaW5pdGlhbE9mZnNldCkKLSAgICAsIG1fdmlld3BvcnRTaXplKHZpZXdwb3J0
U2l6ZSkKLSAgICAsIG1fY29udGVudFNpemUoY29udGVudFNpemUpCisgICAgLCBtX3Njcm9sbEV4
dGVudHMoc2Nyb2xsRXh0ZW50cykKIHsKIH0KIApAQCAtNjIsMTYgKzYxLDE5IEBAIHZvaWQgU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KGNvbnN0
IEZsb2F0UG9pbnQmIHRhCiAKIEZsb2F0UG9pbnQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
OjpwcmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpCiB7Ci0gICAgZmxvYXQgaW5pdGlhbE9mZnNl
dFggPSBjbGFtcFRvPGZsb2F0PihtX2luaXRpYWxTY3JvbGxPZmZzZXQueCgpICsgcHJvamVjdGVk
SW5lcnRpYWxTY3JvbGxEaXN0YW5jZShtX2luaXRpYWxEZWx0YS53aWR0aCgpKSwgMCwgbV9jb250
ZW50U2l6ZS53aWR0aCgpIC0gbV92aWV3cG9ydFNpemUud2lkdGgoKSk7Ci0gICAgZmxvYXQgaW5p
dGlhbE9mZnNldFkgPSBjbGFtcFRvPGZsb2F0PihtX2luaXRpYWxTY3JvbGxPZmZzZXQueSgpICsg
cHJvamVjdGVkSW5lcnRpYWxTY3JvbGxEaXN0YW5jZShtX2luaXRpYWxEZWx0YS5oZWlnaHQoKSks
IDAsIG1fY29udGVudFNpemUuaGVpZ2h0KCkgLSBtX3ZpZXdwb3J0U2l6ZS5oZWlnaHQoKSk7Cisg
ICAgYXV0byBtaW5TY3JvbGxPZmZzZXQgPSBtX3Njcm9sbEV4dGVudHMubWluaW11bVNjcm9sbE9m
ZnNldCgpOworICAgIGF1dG8gbWF4U2Nyb2xsT2Zmc2V0ID0gbV9zY3JvbGxFeHRlbnRzLm1heGlt
dW1TY3JvbGxPZmZzZXQoKTsKKworICAgIGZsb2F0IGluaXRpYWxPZmZzZXRYID0gY2xhbXBUbzxm
bG9hdD4obV9pbml0aWFsU2Nyb2xsT2Zmc2V0LngoKSArIHByb2plY3RlZEluZXJ0aWFsU2Nyb2xs
RGlzdGFuY2UobV9pbml0aWFsRGVsdGEud2lkdGgoKSksIG1pblNjcm9sbE9mZnNldC54KCksIG1h
eFNjcm9sbE9mZnNldC54KCkpOworICAgIGZsb2F0IGluaXRpYWxPZmZzZXRZID0gY2xhbXBUbzxm
bG9hdD4obV9pbml0aWFsU2Nyb2xsT2Zmc2V0LnkoKSArIHByb2plY3RlZEluZXJ0aWFsU2Nyb2xs
RGlzdGFuY2UobV9pbml0aWFsRGVsdGEuaGVpZ2h0KCkpLCBtaW5TY3JvbGxPZmZzZXQueSgpLCBt
YXhTY3JvbGxPZmZzZXQueSgpKTsKICAgICByZXR1cm4geyBpbml0aWFsT2Zmc2V0WCwgaW5pdGlh
bE9mZnNldFkgfTsKIH0KIAogI2lmICFQTEFURk9STShNQUMpCiAKLXN0ZDo6dW5pcXVlX3B0cjxT
Y3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6
Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNv
bnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCitzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBTY3JvbGxFeHRlbnRzJiBzY3JvbGxFeHRlbnRzLCBj
b25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxE
ZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIG1h
a2VVbmlxdWU8QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+KHZpZXdwb3J0U2l6ZSwg
Y29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5
KTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cj4oc2Nyb2xsRXh0ZW50cywgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVs
b2NpdHkpOwogfQogCiB2b2lkIFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZv
cm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFibGVkKGJvb2wpCkBAIC04MCw4ICs4Miw4
IEBAIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVt
U2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoCiAKICNlbmRpZgogCi1CYXNpY1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcjo6QmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3Qg
RmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKLSAgICA6IFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0
LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSkKK0Jhc2ljU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBTY3JvbGxF
eHRlbnRzJiBzY3JvbGxFeHRlbnRzLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVs
b2NpdHkpCisgICAgOiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Ioc2Nyb2xsRXh0ZW50cywg
aW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yLmgKaW5kZXggNGM3NTEzM2ZmODFlYzQxYzQ3ZTQ5YjA4NTU4OGI4MGEzZjNkZTJlMS4uMWM2
NTM1YTRiZmM1ZTdjYmQ4ZDQyOTg3Nzk2OTFmZWY1ZTE3ZjA1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgKQEAgLTM5
LDkgKzM5LDkgQEAgY2xhc3MgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHsKIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xs
aW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCk7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gY3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmll
d3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50
JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxv
YXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOworICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3QgU2Nyb2xsRXh0ZW50cyYsIGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CiAKLSAgICBTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZs
b2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxv
Y2l0eSk7CisgICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IFNjcm9sbEV4dGVu
dHMmLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGlu
aXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogICAgIHZpcnR1
YWwgflNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcigpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1
YWwgRmxvYXRQb2ludCBzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMpID0gMDsK
QEAgLTU2LDggKzU2LDcgQEAgcHJvdGVjdGVkOgogICAgIEZsb2F0U2l6ZSBtX2luaXRpYWxEZWx0
YTsKICAgICBGbG9hdFNpemUgbV9pbml0aWFsVmVsb2NpdHk7CiAgICAgRmxvYXRQb2ludCBtX2lu
aXRpYWxTY3JvbGxPZmZzZXQ7Ci0gICAgRmxvYXRTaXplIG1fdmlld3BvcnRTaXplOwotICAgIEZs
b2F0U2l6ZSBtX2NvbnRlbnRTaXplOworICAgIFNjcm9sbEV4dGVudHMgbV9zY3JvbGxFeHRlbnRz
OwogCiBwcml2YXRlOgogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRQb2ludD4gbV9yZXRhcmdldGVk
U2Nyb2xsT2Zmc2V0OwpAQCAtNjUsNyArNjQsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBCYXNpY1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdNb21lbnR1
bUNhbGN1bGF0b3IgewogcHVibGljOgotICAgIEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRl
bnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUm
IGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOworICAgIEJh
c2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBjb25z
dCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0
YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogCiBwcml2YXRlOgogICAgIEZs
b2F0UG9pbnQgc2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlci5tbQppbmRleCA0NzExOTRlOTdmNTU4MmFiNmE3YmE2OWQwYzkzYTdjMTAyZWJk
ZWJiLi5jYjA4M2FkYTMxNmYwMjlkNjM2N2JjOGY5NDYzNGZiNGVhMDJmYjcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLm1tCkBAIC02NjYsNyArNjY2LDcgQEAgdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6c3RhdGVsZXNzU25hcFRyYW5zaXRpb25UaW1lckZpcmVkKCkKICAgICBpZiAoIXVzZXNT
Y3JvbGxTbmFwKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fc2Nyb2xsU25hcFN0YXRlLT50
cmFuc2l0aW9uVG9TbmFwQW5pbWF0aW9uU3RhdGUobV9jbGllbnQuc2Nyb2xsRXh0ZW50KCksIG1f
Y2xpZW50LnZpZXdwb3J0U2l6ZSgpLCBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSwgbV9jbGll
bnQuc2Nyb2xsT2Zmc2V0KCkpOworICAgIG1fc2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0aW9uVG9T
bmFwQW5pbWF0aW9uU3RhdGUobV9jbGllbnQuc2Nyb2xsRXh0ZW50cygpLCBtX2NsaWVudC5wYWdl
U2NhbGVGYWN0b3IoKSwgbV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCkpOwogICAgIHN0YXJ0U2Nyb2xs
U25hcEFuaW1hdGlvbigpOwogfQogCkBAIC03MDEsMTEgKzcwMSwxMSBAQCBib29sIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3Qg
UGxhdGZvcm1XaAogICAgICAgICBtX2RyYWdFbmRlZFNjcm9sbGluZ1ZlbG9jaXR5ID0gLXdoZWVs
RXZlbnQuc2Nyb2xsaW5nVmVsb2NpdHkoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXaGVl
bEV2ZW50U3RhdHVzOjpVc2VyU2Nyb2xsRW5kOgotICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZS0+
dHJhbnNpdGlvblRvU25hcEFuaW1hdGlvblN0YXRlKG1fY2xpZW50LnNjcm9sbEV4dGVudCgpLCBt
X2NsaWVudC52aWV3cG9ydFNpemUoKSwgbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCksIG1fY2xp
ZW50LnNjcm9sbE9mZnNldCgpKTsKKyAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnRyYW5zaXRp
b25Ub1NuYXBBbmltYXRpb25TdGF0ZShtX2NsaWVudC5zY3JvbGxFeHRlbnRzKCksIG1fY2xpZW50
LnBhZ2VTY2FsZUZhY3RvcigpLCBtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSk7CiAgICAgICAgIHN0
YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdoZWVs
RXZlbnRTdGF0dXM6Ok1vbWVudHVtU2Nyb2xsQmVnaW46Ci0gICAgICAgIG1fc2Nyb2xsU25hcFN0
YXRlLT50cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRlKG1fY2xpZW50LnNjcm9sbEV4dGVu
dCgpLCBtX2NsaWVudC52aWV3cG9ydFNpemUoKSwgbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCks
IG1fY2xpZW50LnNjcm9sbE9mZnNldCgpLCBtX2RyYWdFbmRlZFNjcm9sbGluZ1ZlbG9jaXR5LCBG
bG9hdFNpemUoLXdoZWVsRXZlbnQuZGVsdGFYKCksIC13aGVlbEV2ZW50LmRlbHRhWSgpKSk7Cisg
ICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRl
KG1fY2xpZW50LnNjcm9sbEV4dGVudHMoKSwgbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCksIG1f
Y2xpZW50LnNjcm9sbE9mZnNldCgpLCBtX2RyYWdFbmRlZFNjcm9sbGluZ1ZlbG9jaXR5LCBGbG9h
dFNpemUoLXdoZWVsRXZlbnQuZGVsdGFYKCksIC13aGVlbEV2ZW50LmRlbHRhWSgpKSk7CiAgICAg
ICAgIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVsb2NpdHkgPSB7IH07CiAgICAgICAgIGlzTW9tZW50
dW1TY3JvbGxpbmcgPSB0cnVlOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMu
aAppbmRleCAzYjU3ZjUzNWJlNjYxYjIxMzc5NGM3OTJhZjY3NDVhM2RhMjBiMmI2Li5hNWMwY2Vk
MGFmNzA5NjViNjY0OWQzMDA0OWQyODkwODM1NjdhN2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1h
Yy5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvciB7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
KGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRT
aXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGlu
aXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOworICAgIFNjcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYyhjb25zdCBTY3JvbGxFeHRlbnRzJiwgY29uc3QgRmxv
YXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKIAogcHJpdmF0ZToKICAgICBGbG9hdFBv
aW50IHNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcykgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYy5tbQppbmRleCA2ZGMyMWVhNjU1NjVmN2U1OTQ5YjFmMjQ1ZjhjMzA2MTll
Zjk4NmFlLi41ZGUwNzY1OTdlMjI4MzE4ZWZiNTg4MDI0YmJkMzEzNzVlNjFmYWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3JNYWMubW0KQEAgLTM0LDkgKzM0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgYm9vbCBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rp
b24gPSB0cnVlOwogCi1zdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
PiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBGbG9hdFNpemUmIHZp
ZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2lu
dCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZs
b2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQorc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoY29uc3Qg
U2Nyb2xsRXh0ZW50cyYgc2Nyb2xsRXh0ZW50cywgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9m
ZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5p
dGlhbFZlbG9jaXR5KQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvck1hYz4odmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwg
aW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYz4oc2Nyb2xsRXh0ZW50cywgaW5pdGlhbE9mZnNl
dCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogfQogCiB2b2lkIFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25F
bmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTQ0LDggKzQ0LDggQEAgdm9pZCBTY3JvbGxpbmdNb21l
bnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxpbmdQcmVkaWN0aW9uRW5h
YmxlZCgKICAgICBnRW5hYmxlUGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb24gPSBl
bmFibGVkOwogfQogCi1TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OlNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvck1hYyhjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3Qg
RmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwg
Y29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZl
bG9jaXR5KQotICAgIDogU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKHZpZXdwb3J0U2l6ZSwg
Y29udGVudFNpemUsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5
KQorU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3JNYWMoY29uc3QgU2Nyb2xsRXh0ZW50cyYgc2Nyb2xsRXh0ZW50cywgY29uc3QgRmxvYXRQ
b2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0
IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQorICAgIDogU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yKHNjcm9sbEV4dGVudHMsIGluaXRpYWxPZmZzZXQsIGluaXRpYWxEZWx0YSwgaW5pdGlh
bFZlbG9jaXR5KQogewogfQogCkBAIC05NCw5ICs5NCw5IEBAIF9OU1Njcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvciAqU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjOjplbnN1cmVQbGF0Zm9y
bU1vCiAgICAgICAgIHJldHVybiBtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yLmdldCgpOwog
CiAgICAgTlNQb2ludCBvcmlnaW4gPSBtX2luaXRpYWxTY3JvbGxPZmZzZXQ7Ci0gICAgTlNSZWN0
IGNvbnRlbnRGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgbV9jb250ZW50U2l6ZS53aWR0aCgpLCBt
X2NvbnRlbnRTaXplLmhlaWdodCgpKTsKKyAgICBOU1JlY3QgY29udGVudEZyYW1lID0gTlNNYWtl
UmVjdCgwLCAwLCBtX3Njcm9sbEV4dGVudHMuY29udGVudHNTaXplLndpZHRoKCksIG1fc2Nyb2xs
RXh0ZW50cy5jb250ZW50c1NpemUuaGVpZ2h0KCkpOwogICAgIE5TUG9pbnQgdmVsb2NpdHkgPSBO
U01ha2VQb2ludChtX2luaXRpYWxWZWxvY2l0eS53aWR0aCgpLCBtX2luaXRpYWxWZWxvY2l0eS5o
ZWlnaHQoKSk7Ci0gICAgbV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvciA9IGFkb3B0TlMoW1tf
TlNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgYWxsb2NdIGluaXRXaXRoSW5pdGlhbE9yaWdp
bjpvcmlnaW4gdmVsb2NpdHk6dmVsb2NpdHkgZG9jdW1lbnRGcmFtZTpjb250ZW50RnJhbWUgY29u
c3RyYWluZWRDbGlwcGluZ09yaWdpbjpOU1plcm9Qb2ludCBjbGlwcGluZ1NpemU6bV92aWV3cG9y
dFNpemUgdG9sZXJhbmNlOk5TTWFrZVNpemUoMSwgMSldKTsKKyAgICBtX3BsYXRmb3JtTW9tZW50
dW1DYWxjdWxhdG9yID0gYWRvcHROUyhbW19OU1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBh
bGxvY10gaW5pdFdpdGhJbml0aWFsT3JpZ2luOm9yaWdpbiB2ZWxvY2l0eTp2ZWxvY2l0eSBkb2N1
bWVudEZyYW1lOmNvbnRlbnRGcmFtZSBjb25zdHJhaW5lZENsaXBwaW5nT3JpZ2luOk5TWmVyb1Bv
aW50IGNsaXBwaW5nU2l6ZTptX3Njcm9sbEV4dGVudHMudmlld3BvcnRTaXplIHRvbGVyYW5jZTpO
U01ha2VTaXplKDEsIDEpXSk7CiAgICAgbV9pbml0aWFsRGVzdGluYXRpb25PcmlnaW4gPSBbbV9w
bGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvciBkZXN0aW5hdGlvbk9yaWdpbl07CiAgICAgcmV0dXJu
IG1fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IuZ2V0KCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438632</attachid>
            <date>2021-09-19 20:05:06 -0700</date>
            <delta_ts>2021-09-20 09:01:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230465-20210919200505.patch</filename>
            <type>text/plain</type>
            <size>36690</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk1M2Q3MDZlMDY5ZDc5
ZjA4MGQ1ZTFjNzYzNjI2NDA0MzBmODZhYi4uNDE2ZTI1ZjA3YzE0MmY3ZWEyNzQwMWIzNjI1ZGIy
ZTQwNGM4OGIyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIxLTA5LTE5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yIHdvcmsgaW4gdGVybXMgb2YgU2Nyb2xsRXh0ZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNDY1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2Nyb2xsQW5pbWF0
b3IgZ2V0cyBtaW4vbWF4IHNjcm9sbCBvZmZzZXRzIGFuZCB0aGUgdmlld3BvcnQgc2l6ZSB2aWEg
YSBTY3JvbGxFeHRlbnRzCisgICAgICAgIGNsYXNzLiBUbyBlYXNlIGEgZnV0dXJlIHRyYW5zaXRp
b24gb2YgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHRvIGJlIGEgU2Nyb2xsQW5pbWF0b3Is
CisgICAgICAgIG1vdmUgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIHRvIHVzZSB0aGUgc2Ft
ZSBzdHJ1Y3QsIHdoaWNoIGlzIG1vZGlmaWVkIHRvIHNhdGlzZnkKKyAgICAgICAgdGhlIG5lZWQg
dG8gcHJvdmlkZSBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMgd2l0aCB0aGUgY29udGVu
dHMgc2l6ZS4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlTWFjLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzY3JvbGxFeHRlbnRzIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVNYWM6OnNjcm9sbEV4dGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjp2aWV3cG9ydFNpemUgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFs
VmVsb2NpdHkpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0T3JSZXRhcmdl
dEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVw
ZGF0ZVNjcm9sbEV4dGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzRm9yQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OnZpZXdw
b3J0U2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dHJhbnNpdGlvblRvU25h
cEFuaW1hdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0
YXRlOjp0cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0YXJnZXRPZmZzZXRGb3JTdGFy
dE9mZnNldCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsRXh0ZW50czo6bWluaW11bVNjcm9sbE9mZnNldCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxFeHRlbnRzOjptYXhpbXVtU2Nyb2xsT2Zmc2V0IGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2V0TmVhcmVzdFNjcm9sbFNuYXBJ
bmRleEZvckF4aXNBbmRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXI6OmFkanVzdFNjcm9sbERlc3RpbmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdN
b21lbnR1bUNhbGN1bGF0b3I6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnByZWRpY3RlZERlc3RpbmF0
aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRv
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxj
dWxhdG9yOjpCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcik6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXRlbGVzc1NuYXBUcmFuc2l0aW9uVGltZXJGaXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cHJvY2Vz
c1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9s
bGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvck1hYzo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6ZW5zdXJl
UGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IpOgorCiAyMDIxLTA5LTE5ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgU2Nyb2xsQW5pbWF0aW9u
IHdvcmsgaW4gdGVybXMgb2Ygb2Zmc2V0cywgbm90IHBvc2l0aW9ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLmgKaW5kZXggYTkwOGU1NGM4NzlkNDA4Yjcw
MGE1OWJjY2Y3MWE5MGM0MDNhMTI4Ni4uZDg2Yzk3NTFiNGZiYTg5ZmEyNWMwZTkyMDYzZWVkNzIz
M2FhM2UwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU1h
Yy5oCkBAIC05MiwxMyArOTIsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHNjcm9sbFBvc2l0aW9u
SXNOb3RSdWJiZXJiYW5kaW5nRWRnZShjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CiAgICAgdm9p
ZCBzY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXJGaXJlZCgpOwogCi0gICAgRmxvYXRQb2lu
dCBzY3JvbGxPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIGltbWVkaWF0ZVNjcm9s
bE9uQXhpcyhTY3JvbGxFdmVudEF4aXMsIGZsb2F0IGRlbHRhKSBvdmVycmlkZTsKLSAgICBmbG9h
dCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFBvaW50IHNjcm9s
bE9mZnNldCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsT25BeGlzKFNj
cm9sbEV2ZW50QXhpcywgZmxvYXQgZGVsdGEpIGZpbmFsOworICAgIGZsb2F0IHBhZ2VTY2FsZUZh
Y3RvcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgd2lsbFN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlv
bigpIGZpbmFsOwogICAgIHZvaWQgZGlkU3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKSBmaW5hbDsK
LSAgICBMYXlvdXRTaXplIHNjcm9sbEV4dGVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEZsb2F0
U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTY3JvbGxFeHRlbnRzIHNj
cm9sbEV4dGVudHMoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcmVsZWFzZVJlZmVyZW5jZXNU
b1Njcm9sbGVySW1wc09uVGhlTWFpblRocmVhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCmluZGV4IGM4YTdiY2ZiYjk1NmQ3ZDE2NTBkODE4
ODRlOThlNzAzNzE4ZmIxYTcuLmI4MjQ0ZTNkZWJlZDUzOTE2MWZmMzU1NTM1OTYxYzYyM2I1YWI1
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjLm1t
CkBAIC00MTUsMTQgKzQxNSwxMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OmRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkKICAgICBzY3JvbGxpbmdOb2Rl
KCkuc2V0U2Nyb2xsU25hcEluUHJvZ3Jlc3MoZmFsc2UpOwogfQogICAgIAotTGF5b3V0U2l6ZSBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpzY3JvbGxFeHRlbnQoKSBjb25z
dAorU2Nyb2xsRXh0ZW50cyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTWFjOjpz
Y3JvbGxFeHRlbnRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gTGF5b3V0U2l6ZSh0b3RhbENvbnRl
bnRzU2l6ZSgpKTsKLX0KLQotRmxvYXRTaXplIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVNYWM6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNjcm9sbGFibGVB
cmVhU2l6ZSgpOworICAgIHJldHVybiB7CisgICAgICAgIHNjcm9sbGluZ05vZGUoKS50b3RhbENv
bnRlbnRzU2l6ZSgpLAorICAgICAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsYWJsZUFyZWFTaXpl
KCkKKyAgICB9OwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVN
YWM6OmRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24gcmVhc29uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlTmljb3NpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNv
c2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcAppbmRleCA5
ODg4ZGZiNmZhYWIzYzIwMmNlMDBmNGU4Yjc0MmVlNDI0MWQwOWQxLi5mZjJjNjgwN2NjM2FmNGEx
OTVkYzNkY2FiNzNiNjQ3ZmQ2NzRjMmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcApAQCAtMjE1LDkgKzIxNSw4
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9s
bEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltCiBTY3JvbGxFeHRlbnRzIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNj
cm9sbEFuaW1hdGlvbiYpCiB7CiAgICAgcmV0dXJuIHsKLSAgICAgICAgSW50UG9pbnQobWluaW11
bVNjcm9sbFBvc2l0aW9uKCkpLAotICAgICAgICBJbnRQb2ludChtYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKSksCi0gICAgICAgIEludFNpemUoc2Nyb2xsYWJsZUFyZWFTaXplKCkpCisgICAgICAgIHNj
cm9sbGluZ05vZGUoKS50b3RhbENvbnRlbnRzU2l6ZSgpLAorICAgICAgICBzY3JvbGxpbmdOb2Rl
KCkuc2Nyb2xsYWJsZUFyZWFTaXplKCkKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvbi5oCmluZGV4IGM4NmNmN2ZmZTE4NGE0ZTFhMWFkMzAzZjdhNzRm
YmIwYTlmNTE5MzEuLmYxNjY0ZTA4ZjVmNzgwOGNiYmExMzdiMmY3OWE2ZDI0N2UyZmRiNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCkBAIC0zNCwxMiArMzQs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgU2Nyb2xs
QW5pbWF0aW9uOwogCi1zdHJ1Y3QgU2Nyb2xsRXh0ZW50cyB7Ci0gICAgU2Nyb2xsT2Zmc2V0IG1p
bmltdW1TY3JvbGxPZmZzZXQ7Ci0gICAgU2Nyb2xsT2Zmc2V0IG1heGltdW1TY3JvbGxPZmZzZXQ7
Ci0gICAgSW50U2l6ZSB2aXNpYmxlU2l6ZTsKLX07Ci0KIGNsYXNzIFNjcm9sbEFuaW1hdGlvbkNs
aWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uQ2xpZW50KCkgPSBk
ZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25L
aW5ldGljLmNwcAppbmRleCA4N2ZiYTkyZTZkZTJhYWUwMmMzZTdiOWNhYjYyMGMwZGI1OTk0YzE4
Li5iYTI1N2RhMzQ2ODA4YzQzYmI5Yzc1OTVhY2Q2MTMzYzgyZWEzZDY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcApAQCAtMTk5
LDE1ICsxOTksMTUgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVk
U2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFAKICAgICB9OwogCiAgICAgaWYg
KG1heUhTY3JvbGwpIHsKLSAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4
dGVudHMubWluaW11bVNjcm9sbE9mZnNldC54KCksCi0gICAgICAgICAgICBleHRlbnRzLm1heGlt
dW1TY3JvbGxPZmZzZXQueCgpLAorICAgICAgICBtX2hvcml6b250YWxEYXRhID0gUGVyQXhpc0Rh
dGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0KCkueCgpLAorICAgICAgICAgICAgZXh0ZW50
cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueCgpLAogICAgICAgICAgICAgaW5pdGlhbE9mZnNldC54
KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS54KCksIG1faG9yaXpvbnRhbERhdGEpKTsK
ICAgICB9IGVsc2UKICAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmIChtYXlWU2Nyb2xsKSB7Ci0gICAgICAgIG1fdmVydGljYWxEYXRhID0gUGVyQXhpc0Rh
dGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0LnkoKSwKLSAgICAgICAgICAgIGV4dGVudHMu
bWF4aW11bVNjcm9sbE9mZnNldC55KCksCisgICAgICAgIG1fdmVydGljYWxEYXRhID0gUGVyQXhp
c0RhdGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAorICAgICAgICAgICAgZXh0
ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAogICAgICAgICAgICAgaW5pdGlhbE9mZnNl
dC55KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS55KCksIG1fdmVydGljYWxEYXRhKSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIG1fdmVydGljYWxEYXRhID0gc3RkOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKaW5k
ZXggNmUyOTc1MTlkODRkZDU0ZWJlYjUzNTIzNTNiMDNjNmQyNGU1MGI0Ni4uZmQ1YjMwNTMyYTFm
ZTRjZWI2M2YxN2U1NjcyNzEwNTM5NTA0NGQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCkBAIC05Myw3ICs5Myw3IEBAIGJvb2wg
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpyZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9h
dFBvaW50JiBuZXdPZmZzZXQpCiAKIGJvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydE9y
UmV0YXJnZXRBbmltYXRpb24oY29uc3QgU2Nyb2xsRXh0ZW50cyYgZXh0ZW50cywgY29uc3QgRmxv
YXRQb2ludCYgZGVzdGluYXRpb25PZmZzZXQpCiB7Ci0gICAgbV9kZXN0aW5hdGlvbk9mZnNldCA9
IGRlc3RpbmF0aW9uT2Zmc2V0LmNvbnN0cmFpbmVkQmV0d2VlbihleHRlbnRzLm1pbmltdW1TY3Jv
bGxPZmZzZXQsIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCk7CisgICAgbV9kZXN0aW5hdGlv
bk9mZnNldCA9IGRlc3RpbmF0aW9uT2Zmc2V0LmNvbnN0cmFpbmVkQmV0d2VlbihleHRlbnRzLm1p
bmltdW1TY3JvbGxPZmZzZXQoKSwgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkpOwogICAg
IGJvb2wgbmVlZFRvU2Nyb2xsID0gbV9zdGFydE9mZnNldCAhPSBtX2Rlc3RpbmF0aW9uT2Zmc2V0
OwogCiAgICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAhaXNBY3RpdmUoKSkgewpAQCAtMTEzLDcgKzEx
Myw3IEBAIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjp1cGRhdGVTY3JvbGxFeHRlbnRzKCkK
IHsKICAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9u
KCp0aGlzKTsKICAgICAvLyBGSVhNRTogSWRlYWxseSBmaXggdXAgbV9zdGFydE9mZnNldCBzbyBt
X2N1cnJlbnRPZmZzZXQgZG9lc24ndCBnbyBiYWNrd2FyZHMuCi0gICAgbV9kZXN0aW5hdGlvbk9m
ZnNldCA9IG1fZGVzdGluYXRpb25PZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVuKGV4dGVudHMubWlu
aW11bVNjcm9sbE9mZnNldCwgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KTsKKyAgICBtX2Rl
c3RpbmF0aW9uT2Zmc2V0ID0gbV9kZXN0aW5hdGlvbk9mZnNldC5jb25zdHJhaW5lZEJldHdlZW4o
ZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0KCksIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNl
dCgpKTsKIH0KIAogU2Vjb25kcyBTY3JvbGxBbmltYXRpb25TbW9vdGg6OmR1cmF0aW9uRnJvbURp
c3RhbmNlKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggNWIxNTU2NjBlZjhkZTViOTQ1ZjZhNDlhMGVl
YTY3ZTVkYTg5M2Q1Yi4uMmYwZmViZDhkM2YwZjBiZGYyZWFkY2ZmMTZiODg1ZDNjODQyMjczNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtMjg4LDE0
ICsyODgsMTIgQEAgdm9pZCBTY3JvbGxBbmltYXRvcjo6aW1tZWRpYXRlU2Nyb2xsT25BeGlzKFNj
cm9sbEV2ZW50QXhpcyBheGlzLCBmbG9hdCBkZWx0YSkKICAgICBzY3JvbGxUb1Bvc2l0aW9uV2l0
aG91dEFuaW1hdGlvbihjdXJyZW50UG9zaXRpb24oKSArIGRlbHRhU2l6ZSk7CiB9CiAKLUxheW91
dFNpemUgU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbEV4dGVudCgpIGNvbnN0CitTY3JvbGxFeHRlbnRz
IFNjcm9sbEFuaW1hdG9yOjpzY3JvbGxFeHRlbnRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9z
Y3JvbGxhYmxlQXJlYS5jb250ZW50c1NpemUoKTsKLX0KLQotRmxvYXRTaXplIFNjcm9sbEFuaW1h
dG9yOjp2aWV3cG9ydFNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVh
LnZpc2libGVTaXplKCk7CisgICAgcmV0dXJuIHsKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS50
b3RhbENvbnRlbnRzU2l6ZSgpLAorICAgICAgICBtX3Njcm9sbGFibGVBcmVhLnZpc2libGVTaXpl
KCkKKyAgICB9OwogfQogCiBmbG9hdCBTY3JvbGxBbmltYXRvcjo6cGFnZVNjYWxlRmFjdG9yKCkg
Y29uc3QKQEAgLTQwMCwxMSArMzk4LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsQW5p
bWF0aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpCiAKIFNjcm9sbEV4dGVudHMgU2Nyb2xsQW5p
bWF0b3I6OnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikKIHsKLSAg
ICByZXR1cm4gewotICAgICAgICBtX3Njcm9sbGFibGVBcmVhLm1pbmltdW1TY3JvbGxPZmZzZXQo
KSwKLSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCksCi0gICAg
ICAgIG1fc2Nyb2xsYWJsZUFyZWEudmlzaWJsZVNpemUoKQotICAgIH07CisgICAgcmV0dXJuIHNj
cm9sbEV4dGVudHMoKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuaAppbmRleCBiMTY2MjZiODQ4M2JlZDYwNDVmMTE5NzZkMTgzNGNhMGJkMmJiNWJjLi43MGQ0
MTU3ZTQ4NzFkYzY4NTgwYmNmOTcyOGVmYzg1ODI4OGYwMGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKQEAgLTEzNSw4ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAg
RmxvYXRQb2ludCBzY3JvbGxPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGltbWVk
aWF0ZVNjcm9sbE9uQXhpcyhTY3JvbGxFdmVudEF4aXMsIGZsb2F0IGRlbHRhKSBvdmVycmlkZTsK
ICAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICBMYXlvdXRT
aXplIHNjcm9sbEV4dGVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIEZsb2F0U2l6ZSB2aWV3cG9y
dFNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHMo
KSBjb25zdCBvdmVycmlkZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBkZWZlcldoZWVs
RXZlbnRUZXN0Q29tcGxldGlvbkZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9s
bGFibGVBcmVhSWRlbnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25E
ZWZlcnJhbEZvclJlYXNvbihXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRl
bnRpZmllciwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpEZWZlclJlYXNvbikgY29uc3Qgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0
b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZS5jcHAKaW5kZXggODEwNjgzNWU5ZDI0YWM3ZGU2ZGY4NDY1NGViNzZiMGQxOWM2N2MxYy4u
MWU0N2M3NTMzMzQxMDM0OTkyYjQyZmMyNGJjZTU2MDdiN2UwNjY3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmNwcApAQCAtMzEs
MjggKzMxLDI4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBTY3JvbGxTbmFwQW5p
bWF0b3JTdGF0ZTo6dHJhbnNpdGlvblRvU25hcEFuaW1hdGlvblN0YXRlKGNvbnN0IEZsb2F0U2l6
ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBwYWdl
U2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQpCit2b2lkIFNjcm9sbFNuYXBB
bmltYXRvclN0YXRlOjp0cmFuc2l0aW9uVG9TbmFwQW5pbWF0aW9uU3RhdGUoY29uc3QgU2Nyb2xs
RXh0ZW50cyYgc2Nyb2xsRXh0ZW50cywgZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBGbG9hdFBvaW50
JiBpbml0aWFsT2Zmc2V0KQogewotICAgIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xsU25h
cFN0YXRlOjpTbmFwcGluZywgY29udGVudFNpemUsIHZpZXdwb3J0U2l6ZSwgcGFnZVNjYWxlLCBp
bml0aWFsT2Zmc2V0LCB7IH0sIHsgfSk7CisgICAgc2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3Jv
bGxTbmFwU3RhdGU6OlNuYXBwaW5nLCBzY3JvbGxFeHRlbnRzLCBwYWdlU2NhbGUsIGluaXRpYWxP
ZmZzZXQsIHsgfSwgeyB9KTsKIH0KIAotdm9pZCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dHJh
bnNpdGlvblRvR2xpZGVBbmltYXRpb25TdGF0ZShjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBG
bG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0
eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEpCit2b2lkIFNjcm9sbFNuYXBBbmltYXRv
clN0YXRlOjp0cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRlKGNvbnN0IFNjcm9sbEV4dGVu
dHMmIHNjcm9sbEV4dGVudHMsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgaW5p
dGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0
U2l6ZSYgaW5pdGlhbERlbHRhKQogewotICAgIHNldHVwQW5pbWF0aW9uRm9yU3RhdGUoU2Nyb2xs
U25hcFN0YXRlOjpHbGlkaW5nLCBjb250ZW50U2l6ZSwgdmlld3BvcnRTaXplLCBwYWdlU2NhbGUs
IGluaXRpYWxPZmZzZXQsIGluaXRpYWxWZWxvY2l0eSwgaW5pdGlhbERlbHRhKTsKKyAgICBzZXR1
cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZTo6R2xpZGluZywgc2Nyb2xsRXh0ZW50
cywgcGFnZVNjYWxlLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsVmVsb2NpdHksIGluaXRpYWxEZWx0
YSk7CiB9CiAKLXZvaWQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnNldHVwQW5pbWF0aW9uRm9y
U3RhdGUoU2Nyb2xsU25hcFN0YXRlIHN0YXRlLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXpl
LCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBG
bG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0
eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEpCit2b2lkIFNjcm9sbFNuYXBBbmltYXRv
clN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZSBzdGF0ZSwgY29u
c3QgU2Nyb2xsRXh0ZW50cyYgc2Nyb2xsRXh0ZW50cywgZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBG
bG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0
eSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEpCiB7CiAgICAgQVNTRVJUKHN0YXRlID09
IFNjcm9sbFNuYXBTdGF0ZTo6U25hcHBpbmcgfHwgc3RhdGUgPT0gU2Nyb2xsU25hcFN0YXRlOjpH
bGlkaW5nKTsKICAgICBpZiAobV9jdXJyZW50U3RhdGUgPT0gc3RhdGUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yID0gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yOjpjcmVhdGUodmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5p
dGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOworICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yID0g
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpjcmVhdGUoc2Nyb2xsRXh0ZW50cywgaW5pdGlh
bE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkpOwogICAgIEZsb2F0UG9pbnQg
cHJlZGljdGVkU2Nyb2xsVGFyZ2V0IHsgbV9tb21lbnR1bUNhbGN1bGF0b3ItPnByZWRpY3RlZERl
c3RpbmF0aW9uT2Zmc2V0KCkgfTsKIAogICAgIGZsb2F0IHRhcmdldE9mZnNldFgsIHRhcmdldE9m
ZnNldFk7Ci0gICAgc3RkOjp0aWUodGFyZ2V0T2Zmc2V0WCwgbV9hY3RpdmVTbmFwSW5kZXhYKSA9
IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwg
dmlld3BvcnRTaXplLCBjb250ZW50U2l6ZS53aWR0aCgpIC0gdmlld3BvcnRTaXplLndpZHRoKCks
IGluaXRpYWxPZmZzZXQueCgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQsIHBhZ2VTY2FsZSwgaW5p
dGlhbERlbHRhLndpZHRoKCkpOwotICAgIHN0ZDo6dGllKHRhcmdldE9mZnNldFksIG1fYWN0aXZl
U25hcEluZGV4WSkgPSB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChTY3JvbGxFdmVudEF4aXM6
OlZlcnRpY2FsLCB2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLmhlaWdodCgpIC0gdmlld3BvcnRT
aXplLmhlaWdodCgpLCBpbml0aWFsT2Zmc2V0LnkoKSwgcHJlZGljdGVkU2Nyb2xsVGFyZ2V0LCBw
YWdlU2NhbGUsIGluaXRpYWxEZWx0YS5oZWlnaHQoKSk7CisgICAgc3RkOjp0aWUodGFyZ2V0T2Zm
c2V0WCwgbV9hY3RpdmVTbmFwSW5kZXhYKSA9IHRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNj
cm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCwgc2Nyb2xsRXh0ZW50cywgaW5pdGlhbE9mZnNldC54
KCksIHByZWRpY3RlZFNjcm9sbFRhcmdldCwgcGFnZVNjYWxlLCBpbml0aWFsRGVsdGEud2lkdGgo
KSk7CisgICAgc3RkOjp0aWUodGFyZ2V0T2Zmc2V0WSwgbV9hY3RpdmVTbmFwSW5kZXhZKSA9IHRh
cmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwsIHNjcm9s
bEV4dGVudHMsIGluaXRpYWxPZmZzZXQueSgpLCBwcmVkaWN0ZWRTY3JvbGxUYXJnZXQsIHBhZ2VT
Y2FsZSwgaW5pdGlhbERlbHRhLmhlaWdodCgpKTsKICAgICBtX21vbWVudHVtQ2FsY3VsYXRvci0+
c2V0UmV0YXJnZXRlZFNjcm9sbE9mZnNldCh7IHRhcmdldE9mZnNldFgsIHRhcmdldE9mZnNldFkg
fSk7CiAgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBtX2N1cnJl
bnRTdGF0ZSA9IHN0YXRlOwpAQCAtOTEsMTUgKzkxLDE4IEBAIEZsb2F0UG9pbnQgU2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGU6OmN1cnJlbnRBbmltYXRlZFNjcm9sbE9mZnNldChNb25vdG9uaWNUaW1l
IGN1CiAgICAgcmV0dXJuIG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zY3JvbGxPZmZzZXRBZnRlckVs
YXBzZWRUaW1lKGVsYXBzZWRUaW1lKTsKIH0KIAotc3RkOjpwYWlyPGZsb2F0LCBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPj4gU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0
YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcyBheGlzLCBjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0
U2l6ZSwgZmxvYXQgbWF4U2Nyb2xsT2Zmc2V0LCBmbG9hdCBzdGFydE9mZnNldCwgRmxvYXRQb2lu
dCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgaW5pdGlhbERlbHRhKSBj
b25zdAorc3RkOjpwYWlyPGZsb2F0LCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPj4gU2Nyb2xsU25h
cEFuaW1hdG9yU3RhdGU6OnRhcmdldE9mZnNldEZvclN0YXJ0T2Zmc2V0KFNjcm9sbEV2ZW50QXhp
cyBheGlzLCBjb25zdCBTY3JvbGxFeHRlbnRzJiBzY3JvbGxFeHRlbnRzLCBmbG9hdCBzdGFydE9m
ZnNldCwgRmxvYXRQb2ludCBwcmVkaWN0ZWRPZmZzZXQsIGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQg
aW5pdGlhbERlbHRhKSBjb25zdAogeworICAgIGF1dG8gbWluU2Nyb2xsT2Zmc2V0ID0gKGF4aXMg
PT0gU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKSA/IHNjcm9sbEV4dGVudHMubWluaW11bVNj
cm9sbE9mZnNldCgpLngoKSA6IHNjcm9sbEV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCgpLnko
KTsKKyAgICBhdXRvIG1heFNjcm9sbE9mZnNldCA9IChheGlzID09IFNjcm9sbEV2ZW50QXhpczo6
SG9yaXpvbnRhbCkgPyBzY3JvbGxFeHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQoKS54KCkgOiBz
Y3JvbGxFeHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQoKS55KCk7CisKICAgICBjb25zdCBhdXRv
JiBzbmFwT2Zmc2V0cyA9IG1fc25hcE9mZnNldHNJbmZvLm9mZnNldHNGb3JBeGlzKGF4aXMpOwog
ICAgIGlmIChzbmFwT2Zmc2V0cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihjbGFtcFRvPGZsb2F0PihheGlzID09IFNjcm9sbEV2ZW50QXhpczo6SG9yaXpvbnRhbCA/
IHByZWRpY3RlZE9mZnNldC54KCkgOiBwcmVkaWN0ZWRPZmZzZXQueSgpLCAwLCBtYXhTY3JvbGxP
ZmZzZXQpLCBzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoY2xh
bXBUbzxmbG9hdD4oYXhpcyA9PSBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwgPyBwcmVkaWN0
ZWRPZmZzZXQueCgpIDogcHJlZGljdGVkT2Zmc2V0LnkoKSwgbWluU2Nyb2xsT2Zmc2V0LCBtYXhT
Y3JvbGxPZmZzZXQpLCBzdGQ6Om51bGxvcHQpOwogCiAgICAgTGF5b3V0UG9pbnQgcHJlZGljdGVk
TGF5b3V0T2Zmc2V0KHByZWRpY3RlZE9mZnNldC54KCkgLyBwYWdlU2NhbGUsIHByZWRpY3RlZE9m
ZnNldC55KCkgLyBwYWdlU2NhbGUpOwotICAgIGF1dG8gW3RhcmdldE9mZnNldCwgc25hcEluZGV4
XSA9IG1fc25hcE9mZnNldHNJbmZvLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIExheW91dFNpemUg
eyB2aWV3cG9ydFNpemUgfSwgcHJlZGljdGVkTGF5b3V0T2Zmc2V0LCBpbml0aWFsRGVsdGEsIExh
eW91dFVuaXQoc3RhcnRPZmZzZXQgLyBwYWdlU2NhbGUpKTsKLSAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIocGFnZVNjYWxlICogY2xhbXBUbzxmbG9hdD4oZmxvYXQgeyB0YXJnZXRPZmZzZXQgfSwg
MCwgbWF4U2Nyb2xsT2Zmc2V0KSwgc25hcEluZGV4KTsKKyAgICBhdXRvIFt0YXJnZXRPZmZzZXQs
IHNuYXBJbmRleF0gPSBtX3NuYXBPZmZzZXRzSW5mby5jbG9zZXN0U25hcE9mZnNldChheGlzLCBM
YXlvdXRTaXplIHsgc2Nyb2xsRXh0ZW50cy52aWV3cG9ydFNpemUgfSwgcHJlZGljdGVkTGF5b3V0
T2Zmc2V0LCBpbml0aWFsRGVsdGEsIExheW91dFVuaXQoc3RhcnRPZmZzZXQgLyBwYWdlU2NhbGUp
KTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIocGFnZVNjYWxlICogY2xhbXBUbzxmbG9hdD4o
ZmxvYXQgeyB0YXJnZXRPZmZzZXQgfSwgbWluU2Nyb2xsT2Zmc2V0LCBtYXhTY3JvbGxPZmZzZXQp
LCBzbmFwSW5kZXgpOwogfQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZSYgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaAppbmRleCA2NWE5NGVkNWZk
OWY2MTQyYzMxYjkxMzRhMDNhY2M3YmQzYjg3YjRiLi4xMGFjY2ZmOWU5OGE0N2FhMGM4MjVjMWQ4
ZjRlYTYzMDM5NjBhN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFNuYXBBbmltYXRvclN0YXRlLmgKQEAgLTQ3LDYgKzQ3LDggQEAgZW51bSBjbGFzcyBTY3JvbGxT
bmFwU3RhdGUgewogICAgIFVzZXJJbnRlcmFjdGlvbgogfTsKIAorc3RydWN0IFNjcm9sbEV4dGVu
dHM7CisKIGNsYXNzIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTc2LDE1ICs3OCwxNSBAQCBwdWJsaWM6CiAgICAgRmxv
YXRQb2ludCBjdXJyZW50QW5pbWF0ZWRTY3JvbGxPZmZzZXQoTW9ub3RvbmljVGltZSwgYm9vbCYg
aXNBbmltYXRpb25Db21wbGV0ZSkgY29uc3Q7CiAKICAgICAvLyBTdGF0ZSB0cmFuc2l0aW9uIGhl
bHBlcnMuCi0gICAgdm9pZCB0cmFuc2l0aW9uVG9TbmFwQW5pbWF0aW9uU3RhdGUoY29uc3QgRmxv
YXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGZsb2F0
IHBhZ2VTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCk7Ci0gICAgdm9pZCB0
cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRlKGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNp
emUsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBwYWdlU2NhbGUsIGNvbnN0
IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9j
aXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSk7CisgICAgdm9pZCB0cmFuc2l0aW9u
VG9TbmFwQW5pbWF0aW9uU3RhdGUoY29uc3QgU2Nyb2xsRXh0ZW50cyYsIGZsb2F0IHBhZ2VTY2Fs
ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCk7CisgICAgdm9pZCB0cmFuc2l0aW9u
VG9HbGlkZUFuaW1hdGlvblN0YXRlKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBmbG9hdCBwYWdlU2Nh
bGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5p
dGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSk7CiAgICAgdm9pZCB0
cmFuc2l0aW9uVG9Vc2VySW50ZXJhY3Rpb25TdGF0ZSgpOwogICAgIHZvaWQgdHJhbnNpdGlvblRv
RGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKIAogcHJpdmF0ZToKLSAgICBzdGQ6OnBhaXI8Zmxv
YXQsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+PiB0YXJnZXRPZmZzZXRGb3JTdGFydE9mZnNldChT
Y3JvbGxFdmVudEF4aXMsIGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBtYXhT
Y3JvbGxPZmZzZXQsIGZsb2F0IHN0YXJ0T2Zmc2V0LCBGbG9hdFBvaW50IHByZWRpY3RlZE9mZnNl
dCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9hdCBpbml0aWFsRGVsdGEpIGNvbnN0OworICAgIHN0ZDo6
cGFpcjxmbG9hdCwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4+IHRhcmdldE9mZnNldEZvclN0YXJ0
T2Zmc2V0KFNjcm9sbEV2ZW50QXhpcywgY29uc3QgU2Nyb2xsRXh0ZW50cyYsIGZsb2F0IHN0YXJ0
T2Zmc2V0LCBGbG9hdFBvaW50IHByZWRpY3RlZE9mZnNldCwgZmxvYXQgcGFnZVNjYWxlLCBmbG9h
dCBpbml0aWFsRGVsdGEpIGNvbnN0OwogICAgIHZvaWQgdGVhcmRvd25BbmltYXRpb25Gb3JTdGF0
ZShTY3JvbGxTbmFwU3RhdGUpOwotICAgIHZvaWQgc2V0dXBBbmltYXRpb25Gb3JTdGF0ZShTY3Jv
bGxTbmFwU3RhdGUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0U2l6
ZSYgdmlld3BvcnRTaXplLCBmbG9hdCBwYWdlU2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxEZWx0YSk7CisgICAgdm9pZCBzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9s
bFNuYXBTdGF0ZSwgY29uc3QgU2Nyb2xsRXh0ZW50cyYsIGZsb2F0IHBhZ2VTY2FsZSwgY29uc3Qg
RmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2Np
dHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhKTsKIAogICAgIFNjcm9sbFNuYXBTdGF0
ZSBtX2N1cnJlbnRTdGF0ZSB7IFNjcm9sbFNuYXBTdGF0ZTo6VXNlckludGVyYWN0aW9uIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCmluZGV4IDQyM2U3MGVmZWFkYmY1NDY2
YmMwYjM2OGU4MWNlMjYxMDcwZmI3YTAuLjdkYzdlNGI0ODcyNmFjMGZkY2I5OGQ1YjRiNjA3NmQy
ZTMwNTgxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFR5cGVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaApAQCAtMjY4LDYg
KzI2OCwxNCBAQCBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiwgU2Nyb2xsVHlwZSk7CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgU2Nyb2xsQ2xhbXBpbmcpOwogV0VCQ09S
RV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFNj
cm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cyk7CiAKK3N0cnVjdCBTY3JvbGxFeHRlbnRzIHsK
KyAgICBGbG9hdFNpemUgY29udGVudHNTaXplOworICAgIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemU7
CisKKyAgICBGbG9hdFBvaW50IG1pbmltdW1TY3JvbGxPZmZzZXQoKSBjb25zdCB7IHJldHVybiB7
IH07IH0KKyAgICBGbG9hdFBvaW50IG1heGltdW1TY3JvbGxPZmZzZXQoKSBjb25zdCB7IHJldHVy
biB0b0Zsb2F0UG9pbnQoY29udGVudHNTaXplIC0gdmlld3BvcnRTaXplKS5leHBhbmRlZFRvKHsg
MCwgMCB9KTsgfQorfTsKKwogc3RydWN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyB7CiAg
ICAgU2Nyb2xsVHlwZSB0eXBlOwogICAgIFNjcm9sbENsYW1waW5nIGNsYW1waW5nID0gU2Nyb2xs
Q2xhbXBpbmc6OkNsYW1wZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKaW5kZXggZjBjOTM4YjY0MzViOTk5ZjFkMTNh
ZTI2YWYxYWVmMDYzMTE2M2JiYy4uMjcwMzBjOTE4MzAyM2QyNzhkM2QxMjRhZWU4MThiZDZiZDZk
YjM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OnNldE5lYXJlc3RTY3JvbGxTbmFwSW5kZXhGb3JBeGlzQW5kT2Zmc2V0
KFNjcm9sCiAgICAgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUmIHNuYXBTdGF0ZSA9ICptX3Njcm9s
bFNuYXBTdGF0ZTsKIAogICAgIGF1dG8gc25hcE9mZnNldHMgPSBzbmFwU3RhdGUuc25hcE9mZnNl
dHNGb3JBeGlzKGF4aXMpOwotICAgIExheW91dFNpemUgdmlld3BvcnRTaXplKG1fY2xpZW50LnZp
ZXdwb3J0U2l6ZSgpLndpZHRoKCksIG1fY2xpZW50LnZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpKTsK
KyAgICBMYXlvdXRTaXplIHZpZXdwb3J0U2l6ZShtX2NsaWVudC5zY3JvbGxFeHRlbnRzKCkudmll
d3BvcnRTaXplKTsKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBhY3RpdmVJbmRleDsKICAg
ICBpZiAoc25hcE9mZnNldHMuc2l6ZSgpKQogICAgICAgICBhY3RpdmVJbmRleCA9IHNuYXBTdGF0
ZS5zbmFwT2Zmc2V0SW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIHZpZXdwb3J0U2l6ZSwg
bGF5b3V0U2Nyb2xsT2Zmc2V0LCAwKS5zZWNvbmQ7CkBAIC0xODQsMTMgKzE4NCwxMiBAQCBmbG9h
dCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6YWRqdXN0U2Nyb2xsRGVzdGluYXRpb24oU2Ny
b2xsRXZlbnRBeGlzIGF4aXMsCiAgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBvcmlnaW5h
bE9mZnNldEluTGF5b3V0VW5pdHM7CiAgICAgaWYgKG9yaWdpbmFsT2Zmc2V0KQogICAgICAgICBv
cmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMgPSBMYXlvdXRVbml0KCpvcmlnaW5hbE9mZnNldCAv
IHNjYWxlRmFjdG9yKTsKLSAgICBMYXlvdXRTaXplIHZpZXdwb3J0U2l6ZShtX2NsaWVudC52aWV3
cG9ydFNpemUoKS53aWR0aCgpLCBtX2NsaWVudC52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSk7Cisg
ICAgTGF5b3V0U2l6ZSB2aWV3cG9ydFNpemUobV9jbGllbnQuc2Nyb2xsRXh0ZW50cygpLnZpZXdw
b3J0U2l6ZSk7CiAgICAgTGF5b3V0UG9pbnQgbGF5b3V0RGVzdGluYXRpb25PZmZzZXQoZGVzdGlu
YXRpb25PZmZzZXQueCgpIC8gc2NhbGVGYWN0b3IsIGRlc3RpbmF0aW9uT2Zmc2V0LnkoKSAvIHNj
YWxlRmFjdG9yKTsKICAgICBMYXlvdXRVbml0IG9mZnNldCA9IHNuYXBTdGF0ZS5zbmFwT2Zmc2V0
SW5mbygpLmNsb3Nlc3RTbmFwT2Zmc2V0KGF4aXMsIHZpZXdwb3J0U2l6ZSwgbGF5b3V0RGVzdGlu
YXRpb25PZmZzZXQsIHZlbG9jaXR5LCBvcmlnaW5hbE9mZnNldEluTGF5b3V0VW5pdHMpLmZpcnN0
OwogICAgIHJldHVybiBvZmZzZXQgKiBzY2FsZUZhY3RvcjsKIH0KIAotCiB2b2lkIFNjcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVBY3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JDbGllbnRP
ZmZzZXQoKQogewogICAgIGlmICghdXNlc1Njcm9sbFNuYXAoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCmluZGV4IDk1YzM5
Y2EyMDZjZjNlNWJhYjliYzkzM2FkYzNlZGJjZDU5Y2Y2ZjUuLjlkZGI2YmI5MmNhNzJjNGVjMDE2
YTA2YzljMTVmZDk1Y2YzMjcyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaApAQCAtMTExLDggKzExMSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpIHsgfQogICAgIHZp
cnR1YWwgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgTGF5
b3V0U2l6ZSBzY3JvbGxFeHRlbnQoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBGbG9hdFNpemUg
dmlld3BvcnRTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU2Nyb2xsRXh0ZW50cyBzY3Jv
bGxFeHRlbnRzKCkgY29uc3QgPSAwOwogfTsKIAogY2xhc3MgU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5jcHAKaW5kZXggYWMwNjhjMzY1MGEwMzhkYzgxN2JhOWRlMzMyMDkz
YjRjNzU4NjJhNC4uNTJlOTk3OWZjZjBiN2M4Nzg3ZTgzYjc5YjE2YmUwNzFiMDBlNzYyYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IuY3BwCkBAIC00MiwxMiArNDIsMTEgQEAgc3RhdGljIGlubGluZSBmbG9hdCBwcm9q
ZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKGZsb2F0IGluaXRpYWxXaGVlbERlbHRhKQogICAg
IHJldHVybiBpbmVydGlhbFNjcm9sbFByZWRpY3Rpb25GYWN0b3IgKiBpbml0aWFsV2hlZWxEZWx0
YTsKIH0KIAotU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYg
Y29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0
U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKK1Nj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNv
bnN0IFNjcm9sbEV4dGVudHMmIHNjcm9sbEV4dGVudHMsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUm
IGluaXRpYWxWZWxvY2l0eSkKICAgICA6IG1faW5pdGlhbERlbHRhKGluaXRpYWxEZWx0YSkKICAg
ICAsIG1faW5pdGlhbFZlbG9jaXR5KGluaXRpYWxWZWxvY2l0eSkKICAgICAsIG1faW5pdGlhbFNj
cm9sbE9mZnNldChpbml0aWFsT2Zmc2V0KQotICAgICwgbV92aWV3cG9ydFNpemUodmlld3BvcnRT
aXplKQotICAgICwgbV9jb250ZW50U2l6ZShjb250ZW50U2l6ZSkKKyAgICAsIG1fc2Nyb2xsRXh0
ZW50cyhzY3JvbGxFeHRlbnRzKQogewogfQogCkBAIC02MiwxNiArNjEsMTkgQEAgdm9pZCBTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQoY29uc3Qg
RmxvYXRQb2ludCYgdGEKIAogRmxvYXRQb2ludCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6
OnByZWRpY3RlZERlc3RpbmF0aW9uT2Zmc2V0KCkKIHsKLSAgICBmbG9hdCBpbml0aWFsT2Zmc2V0
WCA9IGNsYW1wVG88ZmxvYXQ+KG1faW5pdGlhbFNjcm9sbE9mZnNldC54KCkgKyBwcm9qZWN0ZWRJ
bmVydGlhbFNjcm9sbERpc3RhbmNlKG1faW5pdGlhbERlbHRhLndpZHRoKCkpLCAwLCBtX2NvbnRl
bnRTaXplLndpZHRoKCkgLSBtX3ZpZXdwb3J0U2l6ZS53aWR0aCgpKTsKLSAgICBmbG9hdCBpbml0
aWFsT2Zmc2V0WSA9IGNsYW1wVG88ZmxvYXQ+KG1faW5pdGlhbFNjcm9sbE9mZnNldC55KCkgKyBw
cm9qZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKG1faW5pdGlhbERlbHRhLmhlaWdodCgpKSwg
MCwgbV9jb250ZW50U2l6ZS5oZWlnaHQoKSAtIG1fdmlld3BvcnRTaXplLmhlaWdodCgpKTsKKyAg
ICBhdXRvIG1pblNjcm9sbE9mZnNldCA9IG1fc2Nyb2xsRXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zm
c2V0KCk7CisgICAgYXV0byBtYXhTY3JvbGxPZmZzZXQgPSBtX3Njcm9sbEV4dGVudHMubWF4aW11
bVNjcm9sbE9mZnNldCgpOworCisgICAgZmxvYXQgaW5pdGlhbE9mZnNldFggPSBjbGFtcFRvPGZs
b2F0PihtX2luaXRpYWxTY3JvbGxPZmZzZXQueCgpICsgcHJvamVjdGVkSW5lcnRpYWxTY3JvbGxE
aXN0YW5jZShtX2luaXRpYWxEZWx0YS53aWR0aCgpKSwgbWluU2Nyb2xsT2Zmc2V0LngoKSwgbWF4
U2Nyb2xsT2Zmc2V0LngoKSk7CisgICAgZmxvYXQgaW5pdGlhbE9mZnNldFkgPSBjbGFtcFRvPGZs
b2F0PihtX2luaXRpYWxTY3JvbGxPZmZzZXQueSgpICsgcHJvamVjdGVkSW5lcnRpYWxTY3JvbGxE
aXN0YW5jZShtX2luaXRpYWxEZWx0YS5oZWlnaHQoKSksIG1pblNjcm9sbE9mZnNldC55KCksIG1h
eFNjcm9sbE9mZnNldC55KCkpOwogICAgIHJldHVybiB7IGluaXRpYWxPZmZzZXRYLCBpbml0aWFs
T2Zmc2V0WSB9OwogfQogCiAjaWYgIVBMQVRGT1JNKE1BQykKIAotc3RkOjp1bmlxdWVfcHRyPFNj
cm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpj
cmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29u
dGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6
ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKK3N0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IFNjcm9sbEV4dGVudHMmIHNjcm9sbEV4dGVudHMsIGNv
bnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERl
bHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSkKIHsKLSAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4odmlld3BvcnRTaXplLCBj
b250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkp
OworICAgIHJldHVybiBtYWtlVW5pcXVlPEJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9y
PihzY3JvbGxFeHRlbnRzLCBpbml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxv
Y2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9y
bU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVuYWJsZWQoYm9vbCkKQEAgLTgwLDggKzgyLDgg
QEAgdm9pZCBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OnNldFBsYXRmb3JtTW9tZW50dW1T
Y3JvbGxpbmdQcmVkaWN0aW9uRW5hYmxlZCgKIAogI2VuZGlmCiAKLUJhc2ljU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yOjpCYXNpY1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihjb25zdCBG
bG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxvYXRTaXplJiBjb250ZW50U2l6ZSwgY29u
c3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVs
dGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KQotICAgIDogU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yKHZpZXdwb3J0U2l6ZSwgY29udGVudFNpemUsIGluaXRpYWxPZmZzZXQs
IGluaXRpYWxEZWx0YSwgaW5pdGlhbFZlbG9jaXR5KQorQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNh
bGN1bGF0b3I6OkJhc2ljU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKGNvbnN0IFNjcm9sbEV4
dGVudHMmIHNjcm9sbEV4dGVudHMsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNv
bnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxv
Y2l0eSkKKyAgICA6IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcihzY3JvbGxFeHRlbnRzLCBp
bml0aWFsT2Zmc2V0LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxh
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3IuaAppbmRleCA0Yzc1MTMzZmY4MWVjNDFjNDdlNDliMDg1NTg4YjgwYTNmM2RlMmUxLi4xYzY1
MzVhNGJmYzVlN2NiZDhkNDI5ODc3OTY5MWZlZjVlMTdmMDU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaApAQCAtMzks
OSArMzksOSBAQCBjbGFzcyBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IgewogcHVibGljOgog
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldFBsYXRmb3JtTW9tZW50dW1TY3JvbGxp
bmdQcmVkaWN0aW9uRW5hYmxlZChib29sKTsKIAotICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiB2aWV3
cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNpemUsIGNvbnN0IEZsb2F0UG9pbnQm
IGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRhLCBjb25zdCBGbG9h
dFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IGNyZWF0ZShjb25zdCBTY3JvbGxFeHRlbnRzJiwgY29u
c3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVs
dGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5KTsKIAotICAgIFNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvcihjb25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgRmxv
YXRTaXplJiBjb250ZW50U2l6ZSwgY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9j
aXR5KTsKKyAgICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgU2Nyb2xsRXh0ZW50
cyYsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5p
dGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CiAgICAgdmlydHVh
bCB+U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yKCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVh
bCBGbG9hdFBvaW50IHNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoU2Vjb25kcykgPSAwOwpA
QCAtNTYsOCArNTYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRmxvYXRTaXplIG1faW5pdGlhbERlbHRh
OwogICAgIEZsb2F0U2l6ZSBtX2luaXRpYWxWZWxvY2l0eTsKICAgICBGbG9hdFBvaW50IG1faW5p
dGlhbFNjcm9sbE9mZnNldDsKLSAgICBGbG9hdFNpemUgbV92aWV3cG9ydFNpemU7Ci0gICAgRmxv
YXRTaXplIG1fY29udGVudFNpemU7CisgICAgU2Nyb2xsRXh0ZW50cyBtX3Njcm9sbEV4dGVudHM7
CiAKIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25hbDxGbG9hdFBvaW50PiBtX3JldGFyZ2V0ZWRT
Y3JvbGxPZmZzZXQ7CkBAIC02NSw3ICs2NCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEJhc2ljU2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ01vbWVudHVt
Q2FsY3VsYXRvciB7CiBwdWJsaWM6Ci0gICAgQmFzaWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3IoY29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVu
dFNpemUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CisgICAgQmFz
aWNTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3IoY29uc3QgU2Nyb2xsRXh0ZW50cyYsIGNvbnN0
IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbERlbHRh
LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CiAKIHByaXZhdGU6CiAgICAgRmxv
YXRQb2ludCBzY3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKFNlY29uZHMpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLm1tCmluZGV4IDQ3MTE5NGU5N2Y1NTgyYWI2YTdiYTY5ZDBjOTNhN2MxMDJlYmRl
YmIuLmNiMDgzYWRhMzE2ZjAyOWQ2MzY3YmM4Zjk0NjM0ZmI0ZWEwMmZiNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXIubW0KQEAgLTY2Niw3ICs2NjYsNyBAQCB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjpzdGF0ZWxlc3NTbmFwVHJhbnNpdGlvblRpbWVyRmlyZWQoKQogICAgIGlmICghdXNlc1Nj
cm9sbFNuYXAoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9zY3JvbGxTbmFwU3RhdGUtPnRy
YW5zaXRpb25Ub1NuYXBBbmltYXRpb25TdGF0ZShtX2NsaWVudC5zY3JvbGxFeHRlbnQoKSwgbV9j
bGllbnQudmlld3BvcnRTaXplKCksIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpLCBtX2NsaWVu
dC5zY3JvbGxPZmZzZXQoKSk7CisgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnRyYW5zaXRpb25Ub1Nu
YXBBbmltYXRpb25TdGF0ZShtX2NsaWVudC5zY3JvbGxFeHRlbnRzKCksIG1fY2xpZW50LnBhZ2VT
Y2FsZUZhY3RvcigpLCBtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSk7CiAgICAgc3RhcnRTY3JvbGxT
bmFwQW5pbWF0aW9uKCk7CiB9CiAKQEAgLTcwMSwxMSArNzAxLDExIEBAIGJvb2wgU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQ
bGF0Zm9ybVdoCiAgICAgICAgIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVsb2NpdHkgPSAtd2hlZWxF
dmVudC5zY3JvbGxpbmdWZWxvY2l0eSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdoZWVs
RXZlbnRTdGF0dXM6OlVzZXJTY3JvbGxFbmQ6Ci0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlLT50
cmFuc2l0aW9uVG9TbmFwQW5pbWF0aW9uU3RhdGUobV9jbGllbnQuc2Nyb2xsRXh0ZW50KCksIG1f
Y2xpZW50LnZpZXdwb3J0U2l6ZSgpLCBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSwgbV9jbGll
bnQuc2Nyb2xsT2Zmc2V0KCkpOworICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZS0+dHJhbnNpdGlv
blRvU25hcEFuaW1hdGlvblN0YXRlKG1fY2xpZW50LnNjcm9sbEV4dGVudHMoKSwgbV9jbGllbnQu
cGFnZVNjYWxlRmFjdG9yKCksIG1fY2xpZW50LnNjcm9sbE9mZnNldCgpKTsKICAgICAgICAgc3Rh
cnRTY3JvbGxTbmFwQW5pbWF0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2hlZWxF
dmVudFN0YXR1czo6TW9tZW50dW1TY3JvbGxCZWdpbjoKLSAgICAgICAgbV9zY3JvbGxTbmFwU3Rh
dGUtPnRyYW5zaXRpb25Ub0dsaWRlQW5pbWF0aW9uU3RhdGUobV9jbGllbnQuc2Nyb2xsRXh0ZW50
KCksIG1fY2xpZW50LnZpZXdwb3J0U2l6ZSgpLCBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSwg
bV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCksIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVsb2NpdHksIEZs
b2F0U2l6ZSgtd2hlZWxFdmVudC5kZWx0YVgoKSwgLXdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKKyAg
ICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnRyYW5zaXRpb25Ub0dsaWRlQW5pbWF0aW9uU3RhdGUo
bV9jbGllbnQuc2Nyb2xsRXh0ZW50cygpLCBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSwgbV9j
bGllbnQuc2Nyb2xsT2Zmc2V0KCksIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVsb2NpdHksIEZsb2F0
U2l6ZSgtd2hlZWxFdmVudC5kZWx0YVgoKSwgLXdoZWVsRXZlbnQuZGVsdGFZKCkpKTsKICAgICAg
ICAgbV9kcmFnRW5kZWRTY3JvbGxpbmdWZWxvY2l0eSA9IHsgfTsKICAgICAgICAgaXNNb21lbnR1
bVNjcm9sbGluZyA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYy5o
CmluZGV4IDNiNTdmNTM1YmU2NjFiMjEzNzk0Yzc5MmFmNjc0NWEzZGEyMGIyYjYuLmE1YzBjZWQw
YWY3MDk2NWI2NjQ5ZDMwMDQ5ZDI4OTA4MzU2N2E3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFj
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JvbGxp
bmdNb21lbnR1bUNhbGN1bGF0b3JNYWMgZmluYWwgOiBwdWJsaWMgU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yIHsKIHB1YmxpYzoKLSAgICBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWMo
Y29uc3QgRmxvYXRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGVudFNp
emUsIGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5p
dGlhbERlbHRhLCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSk7CisgICAgU2Nyb2xs
aW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29u
c3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpOwogCiBwcml2YXRlOgogICAgIEZsb2F0UG9p
bnQgc2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShTZWNvbmRzKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yTWFjLm1tCmluZGV4IDZkYzIxZWE2NTU2NWY3ZTU5NDliMWYyNDVmOGMzMDYxOWVm
OTg2YWUuLjVkZTA3NjU5N2UyMjgzMThlZmI1ODgwMjRiYmQzMTM3NWU2MWZhZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0
b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvck1hYy5tbQpAQCAtMzQsOSArMzQsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHN0YXRpYyBib29sIGdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlv
biA9IHRydWU7CiAKLXN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+
IFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcjo6Y3JlYXRlKGNvbnN0IEZsb2F0U2l6ZSYgdmll
d3BvcnRTaXplLCBjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50
JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxv
YXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCitzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nTW9tZW50
dW1DYWxjdWxhdG9yPiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I6OmNyZWF0ZShjb25zdCBT
Y3JvbGxFeHRlbnRzJiBzY3JvbGxFeHRlbnRzLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zm
c2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0
aWFsVmVsb2NpdHkpCiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yTWFjPih2aWV3cG9ydFNpemUsIGNvbnRlbnRTaXplLCBpbml0aWFsT2Zmc2V0LCBp
bml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8U2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yTWFjPihzY3JvbGxFeHRlbnRzLCBpbml0aWFsT2Zmc2V0
LCBpbml0aWFsRGVsdGEsIGluaXRpYWxWZWxvY2l0eSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yOjpzZXRQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbkVu
YWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtNDQsOCArNDQsOCBAQCB2b2lkIFNjcm9sbGluZ01vbWVu
dHVtQ2FsY3VsYXRvcjo6c2V0UGxhdGZvcm1Nb21lbnR1bVNjcm9sbGluZ1ByZWRpY3Rpb25FbmFi
bGVkKAogICAgIGdFbmFibGVQbGF0Zm9ybU1vbWVudHVtU2Nyb2xsaW5nUHJlZGljdGlvbiA9IGVu
YWJsZWQ7CiB9CiAKLVNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvck1hYzo6U2Nyb2xsaW5nTW9t
ZW50dW1DYWxjdWxhdG9yTWFjKGNvbnN0IEZsb2F0U2l6ZSYgdmlld3BvcnRTaXplLCBjb25zdCBG
bG9hdFNpemUmIGNvbnRlbnRTaXplLCBjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBj
b25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVs
b2NpdHkpCi0gICAgOiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3Iodmlld3BvcnRTaXplLCBj
b250ZW50U2l6ZSwgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFsVmVsb2NpdHkp
CitTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OlNjcm9sbGluZ01vbWVudHVtQ2FsY3Vs
YXRvck1hYyhjb25zdCBTY3JvbGxFeHRlbnRzJiBzY3JvbGxFeHRlbnRzLCBjb25zdCBGbG9hdFBv
aW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxEZWx0YSwgY29uc3Qg
RmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHkpCisgICAgOiBTY3JvbGxpbmdNb21lbnR1bUNhbGN1
bGF0b3Ioc2Nyb2xsRXh0ZW50cywgaW5pdGlhbE9mZnNldCwgaW5pdGlhbERlbHRhLCBpbml0aWFs
VmVsb2NpdHkpCiB7CiB9CiAKQEAgLTk0LDkgKzk0LDkgQEAgX05TU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yICpTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3JNYWM6OmVuc3VyZVBsYXRmb3Jt
TW8KICAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1Nb21lbnR1bUNhbGN1bGF0b3IuZ2V0KCk7CiAK
ICAgICBOU1BvaW50IG9yaWdpbiA9IG1faW5pdGlhbFNjcm9sbE9mZnNldDsKLSAgICBOU1JlY3Qg
Y29udGVudEZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBtX2NvbnRlbnRTaXplLndpZHRoKCksIG1f
Y29udGVudFNpemUuaGVpZ2h0KCkpOworICAgIE5TUmVjdCBjb250ZW50RnJhbWUgPSBOU01ha2VS
ZWN0KDAsIDAsIG1fc2Nyb2xsRXh0ZW50cy5jb250ZW50c1NpemUud2lkdGgoKSwgbV9zY3JvbGxF
eHRlbnRzLmNvbnRlbnRzU2l6ZS5oZWlnaHQoKSk7CiAgICAgTlNQb2ludCB2ZWxvY2l0eSA9IE5T
TWFrZVBvaW50KG1faW5pdGlhbFZlbG9jaXR5LndpZHRoKCksIG1faW5pdGlhbFZlbG9jaXR5Lmhl
aWdodCgpKTsKLSAgICBtX3BsYXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yID0gYWRvcHROUyhbW19O
U1Njcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvciBhbGxvY10gaW5pdFdpdGhJbml0aWFsT3JpZ2lu
Om9yaWdpbiB2ZWxvY2l0eTp2ZWxvY2l0eSBkb2N1bWVudEZyYW1lOmNvbnRlbnRGcmFtZSBjb25z
dHJhaW5lZENsaXBwaW5nT3JpZ2luOk5TWmVyb1BvaW50IGNsaXBwaW5nU2l6ZTptX3ZpZXdwb3J0
U2l6ZSB0b2xlcmFuY2U6TlNNYWtlU2l6ZSgxLCAxKV0pOworICAgIG1fcGxhdGZvcm1Nb21lbnR1
bUNhbGN1bGF0b3IgPSBhZG9wdE5TKFtbX05TU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yIGFs
bG9jXSBpbml0V2l0aEluaXRpYWxPcmlnaW46b3JpZ2luIHZlbG9jaXR5OnZlbG9jaXR5IGRvY3Vt
ZW50RnJhbWU6Y29udGVudEZyYW1lIGNvbnN0cmFpbmVkQ2xpcHBpbmdPcmlnaW46TlNaZXJvUG9p
bnQgY2xpcHBpbmdTaXplOm1fc2Nyb2xsRXh0ZW50cy52aWV3cG9ydFNpemUgdG9sZXJhbmNlOk5T
TWFrZVNpemUoMSwgMSldKTsKICAgICBtX2luaXRpYWxEZXN0aW5hdGlvbk9yaWdpbiA9IFttX3Bs
YXRmb3JtTW9tZW50dW1DYWxjdWxhdG9yIGRlc3RpbmF0aW9uT3JpZ2luXTsKICAgICByZXR1cm4g
bV9wbGF0Zm9ybU1vbWVudHVtQ2FsY3VsYXRvci5nZXQoKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>