<?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>230739</bug_id>
          
          <creation_ts>2021-09-23 22:09:03 -0700</creation_ts>
          <short_desc>Have ScrollingEffectsController drive all the ScrollAnimations</short_desc>
          <delta_ts>2021-09-29 07:04:54 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230953</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>230772</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>clord</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1796777</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-23 22:09:03 -0700</bug_when>
    <thetext>Have ScrollingEffectsController drive all the ScrollAnimations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796780</commentid>
    <comment_count>1</comment_count>
      <attachid>439123</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-23 22:15:26 -0700</bug_when>
    <thetext>Created attachment 439123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796786</commentid>
    <comment_count>2</comment_count>
      <attachid>439126</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-23 22:54:27 -0700</bug_when>
    <thetext>Created attachment 439126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797000</commentid>
    <comment_count>3</comment_count>
      <attachid>439183</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-24 12:28:51 -0700</bug_when>
    <thetext>Created attachment 439183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797002</commentid>
    <comment_count>4</comment_count>
      <attachid>439184</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-24 12:37:49 -0700</bug_when>
    <thetext>Created attachment 439184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797013</commentid>
    <comment_count>5</comment_count>
      <attachid>439188</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-24 13:32:13 -0700</bug_when>
    <thetext>Created attachment 439188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797080</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-24 16:49:35 -0700</bug_when>
    <thetext>Committed r283068 (242126@main): &lt;https://commits.webkit.org/242126@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439188.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797081</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-24 16:50:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/83517244&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439123</attachid>
            <date>2021-09-23 22:15:26 -0700</date>
            <delta_ts>2021-09-23 23:09:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230739-20210923221525.patch</filename>
            <type>text/plain</type>
            <size>33479</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTUwMGZhMWUyMzU1MzAw
N2ExN2QzZDNhN2FlNWM3OGI3ZTk2OGNlOC4uZjllYmEzZmEzNDY4NjNmYWNhNTIwODA2OWU2M2Zk
ZmVjNTE4YzgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTA5LTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIgZHJpdmUgYWxsIHRoZSBTY3JvbGxBbmltYXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGVh
Y2ggU2Nyb2xsQW5pbWF0aW9uIHN1YmNsYXNzIGhhdmluZyBpdHMgb3duIHRpbWVyIGNvZGUsIGhh
dmUgdGhlbSBhbGwKKyAgICAgICAgaW1wbGVtZW50IHNlcnZpY2VBbmltYXRpb25zKCksIHNvIHRo
YXQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgY2FuIHRoZW4gZHJpdmUKKyAgICAgICAgdGhl
bSBhbGwgdmlhIGl0cyBleGlzdGluZyBhbmltYXRpb25DYWxsYmFjaygpIGNvZGUuCisKKyAgICAg
ICAgR1RLIG1pZ2h0IHdhbnQgdG8gc2V0IFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJl
ZnJlc2hNb25pdG9yVGltZXIgcHJpb3JpdHkgb24gdGhlCisgICAgICAgIG1fc2Nyb2xsQ29udHJv
bGxlckFuaW1hdGlvblRpbWVyIGluIFNjcm9sbEFuaW1hdG9yIG5vdywgYnV0IHRoYXQgaXMgbm90
IGRvbmUgaGVyZS4KKworICAgICAgICBQdXNoIGEgYml0IG1vcmUgY29tbW9uIFNjcm9sbEFuaW1h
dGlvbiBsb2dpYyBpbnRvIHRoZSBiYXNlIGNsYXNzLCBhbmQgYWRkIGEKKyAgICAgICAgJ3dpbGxT
dGFydCcgY2xpZW50IGZ1bmN0aW9uIHdoaWNoIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyIGNh
biB1c2UgdG8KKyAgICAgICAgc3RhcnQgY2FsbGJhY2tzIGlmIG5lY2Vzc2FyeS4KKworICAgICAg
ICBTY3JvbGxBbmltYXRpb24gbGlmZXRpbWUgaXMgY29udHJvbGxlZCBieSBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjsgYW4gYW5pbWF0aW9uCisgICAgICAgIHdpbGwgYmUgZGVsZXRlZCBpbiB0
aGUgZmlyc3QgYW5pbWF0aW9uQ2FsbGJhY2soKSB3aGVyZSBpdCBpcyBubyBsb25nZXIgYWN0aXZl
LiBUaGlzCisgICAgICAgIGF2b2lkcyBwb3RlbnRpYWwgcGl0ZmFsbHMgd2hlcmUgYW4gYW5pbWF0
aW9uIG1pZ2h0IGJlIGRlbGV0ZWQgaW5zaWRlIHRoZSBzY3JvbGxBbmltYXRpb25EaWRFbmQoKQor
ICAgICAgICBjYWxsYmFjay4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbkNsaWVudDo6c2Nyb2xsQW5pbWF0aW9uV2lsbFN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6c3RvcCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvbjo6Y3VycmVudE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRpb246OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdGlvbjo6ZGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6
dGltZVNpbmNlU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9u
OjpzZXJ2aWNlQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25LaW5ldGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6Y29tcHV0ZVZlbG9jaXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxX
aXRoSW5pdGlhbFZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OnNlcnZpY2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
aW9uS2luZXRpYzo6c3RvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRpb25LaW5ldGljOjppc0FjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1lckZpcmVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmRlbHRhVG9OZXh0RnJh
bWUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c3RhcnRBbmltYXRlZFNjcm9s
bFdpdGhJbml0aWFsVmVsb2NpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9u
TW9tZW50dW06OnJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdGlvbk1vbWVudHVtOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdGlvbk1vbWVudHVtOjpzZXJ2aWNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdGlvbk1vbWVudHVtOjp1cGRhdGVTY3JvbGxFeHRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjppc0FjdGl2ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3JvbGxBbmltYXRpb25TbW9vdGgpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydE9yUmV0YXJnZXRBbmltYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzZXJ2aWNlQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RvcCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlv
blRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoOjpzdGFydE5leHRUaW1lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRpb25TbW9vdGg6OmlzQWN0aXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6YW5pbWF0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0T3JTdG9wQW5pbWF0aW9uQ2FsbGJhY2tz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydEFu
aW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsQW5pbWF0aW9uV2lsbFN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25EaWRFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVNj
cm9sbFNuYXBBbmltYXRpbmdTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKTogSWYgdHJhbnNp
dGlvblRvR2xpZGVBbmltYXRpb25TdGF0ZSgpCisgICAgICAgIHN0YXJ0cyBhbiBhbmltYXRpb24g
d2UgaGF2ZSB0byBjYWxsIHN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigpIChiZWNhdXNlIHRoZSBw
cmV2aW91cyBzdG9wKCkgd2lsbCBoYXZlCisgICAgICAgIHB1dHMgdXMgaW4gYSAibm90IGFuaW1h
dGluZyBzY3JvbGwgc25hcCIgc3RhdGUpLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZSk6IERlbGV0ZWQu
CisKIDIwMjEtMDktMjMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW92ZSBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZSdzIFNjcm9sbEFuaW1hdGlvbk1v
bWVudHVtIGludG8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKaW5kZXggYzc0ODg3MDRjOGZkNjQwNmU1NjEx
OWVjNWJkZjI4MDY0ZjhkZDJkOS4uMDRlNjY3MzIyYWRmNjUwNzdhZTRiODNhODI0Mzg1ZTI1MmQy
Y2FlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgK
QEAgLTE3Myw3ICsxNzMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW5kT2ZOb25Nb21lbnR1
bVNjcm9sbCgpIGNvbnN0OwogICAgIGJvb2wgaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9s
bCgpIGNvbnN0OwotICAgIEZsb2F0UG9pbnQgc3dpcGVWZWxvY2l0eSgpIGNvbnN0OworICAgIEZs
b2F0U2l6ZSBzd2lwZVZlbG9jaXR5KCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJ
TikKQEAgLTI2MiwxMCArMjYyLDEwIEBAIGlubGluZSBib29sIFBsYXRmb3JtV2hlZWxFdmVudDo6
aXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGhh
c2UgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok5vbmUgJiYgbV9tb21lbnR1bVBoYXNlID09
IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpCZWdhbjsKIH0KIAotaW5saW5lIEZsb2F0UG9pbnQg
UGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKK2lubGluZSBGbG9hdFNp
emUgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKIHsKICAgICAvLyBU
aGUgc3dpcGluZyB2ZWxvY2l0eSBpcyBzdG9yZWQgaW4gdGhlIGRlbHRhcyBvZiB0aGUgZXZlbnQg
ZGVjbGFyaW5nIGl0LgotICAgIHJldHVybiBpc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xs
KCkgPyBGbG9hdFBvaW50KG1fd2hlZWxUaWNrc1gsIG1fd2hlZWxUaWNrc1kpIDogRmxvYXRQb2lu
dCgpOworICAgIHJldHVybiBpc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkgPyBGbG9h
dFNpemUobV93aGVlbFRpY2tzWCwgbV93aGVlbFRpY2tzWSkgOiBGbG9hdFNpemUoKTsKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uLmgKaW5kZXggNWM2NGFkN2UyNzU4MWE3NDA2MDczMmJlOWRhNzBm
OWM1OTQ3ZjM2ZC4uMTU1MzE1OGQwNTZiNmNmNTI2Zjg3MmNlMTZkZjViNzIxY2RhYmNmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKQEAgLTI2LDYgKzI2LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAi
U2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0
Zi9Nb25vdG9uaWNUaW1lLmg+CkBAIC00MCw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5TY3JvbGxBbmltYXRpb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9p
bnQmIC8qIGN1cnJlbnRPZmZzZXQgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxBbmlt
YXRpb25XaWxsU3RhcnQoU2Nyb2xsQW5pbWF0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNj
cm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSB7IH0KICAgICB2aXJ0dWFsIFNj
cm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSA9
IDA7CiB9OwpAQCAtNjIsMTYgKzY0LDQzIEBAIHB1YmxpYzoKICAgICBUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX2FuaW1hdGlvblR5cGU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCByZXRhcmdl
dEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5hdGlvbk9mZnNldCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0Fj
dGl2ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpCisgICAgeworICAgICAg
ICBpZiAoIW1faXNBY3RpdmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRpZEVuZCgp
OworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2lz
QWN0aXZlOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSB7IH07CiAg
ICAgCi0gICAgLy8gUmV0dXJucyBjdXJyZW50IG9mZnNldC4KLSAgICB2aXJ0dWFsIEZsb2F0UG9p
bnQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSB7IHJldHVybiB7IH07IH07CisgICAg
RmxvYXRQb2ludCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50T2Zmc2V0
OyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGlt
ZSkgPSAwOwogCiBwcm90ZWN0ZWQ6CisgICAgdm9pZCBkaWRTdGFydChNb25vdG9uaWNUaW1lIGN1
cnJlbnRUaW1lKQorICAgIHsKKyAgICAgICAgbV9zdGFydFRpbWUgPSBjdXJyZW50VGltZTsKKyAg
ICAgICAgbV9pc0FjdGl2ZSA9IHRydWU7CisgICAgICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlv
bldpbGxTdGFydCgqdGhpcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZGlkRW5kKCkKKyAgICB7
CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgbV9jbGllbnQuc2Nyb2xsQW5p
bWF0aW9uRGlkRW5kKCp0aGlzKTsKKyAgICB9CisgICAgCisgICAgU2Vjb25kcyB0aW1lU2luY2VT
dGFydChNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIGN1cnJlbnRUaW1lIC0gbV9zdGFydFRpbWU7CisgICAgfQorCiAgICAgU2Nyb2xsQW5pbWF0
aW9uQ2xpZW50JiBtX2NsaWVudDsKICAgICBjb25zdCBUeXBlIG1fYW5pbWF0aW9uVHlwZTsKKyAg
ICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OworICAgIE1vbm90b25pY1RpbWUgbV9zdGFydFRp
bWU7CisgICAgRmxvYXRQb2ludCBtX2N1cnJlbnRPZmZzZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25LaW5ldGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
bktpbmV0aWMuY3BwCmluZGV4IGE5YjY2NTRhNmJiNjY1OTVkMmUzNTc2MzBkNTQ0ZjRkYmJiODVj
YTMuLjg3MzAwMzVkNjAzNzI4ZWMyMGJiNjY4NzRjYjcxZGYyZjU0NzNjYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCkBAIC0y
OSwxMCArMjksNiBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAKLSNpZiBV
U0UoR0xJQl9FVkVOVF9MT09QKQotI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQcmlv
cml0eS5oPgotI2VuZGlmCi0KIC8qCiAgKiBQZXJBeGlzRGF0YSBpcyBhIHBvcnQgb2YgR3RrS2lu
ZXRpY1Njcm9sbGluZyBhcyBvZiBHVEsrIDMuMjAsCiAgKiBtaW1pY2tpbmcgaXRzIEFQSSBhbmQg
aXRzIGJlaGF2aW9yLgpAQCAtNjcsMTIgKzYzLDkgQEAKICAqLwogCiBzdGF0aWMgY29uc3RleHBy
IGRvdWJsZSBkZWNlbEZyaWN0aW9uID0gNDsKLXN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGZyYW1l
UmF0ZSA9IDYwOwogc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdmVsb2NpdHlBY2N1bXVsYXRpb25G
bG9vciA9IDAuMzM7CiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSB2ZWxvY2l0eUFjY3VtdWxhdGlv
bkNlaWwgPSAxLjA7CiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSB2ZWxvY2l0eUFjY3VtdWxhdGlv
bk1heCA9IDYuMDsKLXN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyB0aWNrVGltZSA9IDFfcyAvIGZy
YW1lUmF0ZTsKLXN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBtaW5pbXVtVGltZXJJbnRlcnZhbCB7
IDFfbXMgfTsKIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBzY3JvbGxDYXB0dXJlVGhyZXNob2xk
IHsgMTUwX21zIH07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg3LDExICs4MCwxMSBAQCBT
Y3JvbGxBbmltYXRpb25LaW5ldGljOjpQZXJBeGlzRGF0YTo6UGVyQXhpc0RhdGEoZG91YmxlIGxv
d2VyLCBkb3VibGUgdXBwZXIsIGRvdQogewogfQogCi1ib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0
aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKFNlY29uZHMgdGltZURlbHRhKQorYm9vbCBT
Y3JvbGxBbmltYXRpb25LaW5ldGljOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbChTZWNvbmRz
IGVsYXBzZWRUaW1lKQogewogICAgIGF1dG8gbGFzdE9mZnNldCA9IG1fb2Zmc2V0OwogICAgIGF1
dG8gbGFzdFRpbWUgPSBtX2VsYXBzZWRUaW1lOwotICAgIG1fZWxhcHNlZFRpbWUgKz0gdGltZURl
bHRhOworICAgIG1fZWxhcHNlZFRpbWUgPSBlbGFwc2VkVGltZTsKIAogICAgIGRvdWJsZSBleHBv
bmVudGlhbFBhcnQgPSBleHAoLWRlY2VsRnJpY3Rpb24gKiBtX2VsYXBzZWRUaW1lLnZhbHVlKCkp
OwogICAgIG1fb2Zmc2V0ID0gbV9jb2VmMSArIG1fY29lZjIgKiBleHBvbmVudGlhbFBhcnQ7CkBA
IC0xMDUsNyArOTgsNyBAQCBib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlBlckF4aXNEYXRh
OjphbmltYXRlU2Nyb2xsKFNlY29uZHMgdGltZURlbHRhKQogICAgICAgICBtX29mZnNldCA9IG1f
dXBwZXI7CiAgICAgfQogCi0gICAgaWYgKGZhYnMobV92ZWxvY2l0eSkgPCAxIHx8IChsYXN0VGlt
ZSAmJiBmYWJzKG1fb2Zmc2V0IC0gbGFzdE9mZnNldCkgPCAxKSkgeworICAgIGlmIChmYWJzKG1f
dmVsb2NpdHkpIDwgMSB8fCAobGFzdFRpbWUgPiAwX3MgJiYgZmFicyhtX29mZnNldCAtIGxhc3RP
ZmZzZXQpIDwgMSkpIHsKICAgICAgICAgbV9vZmZzZXQgPSByb3VuZChtX29mZnNldCk7CiAgICAg
ICAgIG1fdmVsb2NpdHkgPSAwOwogICAgIH0KQEAgLTExNSwyNSArMTA4LDExIEBAIGJvb2wgU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYzo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoU2Vjb25kcyB0
aW1lRGVsdGEpCiAKIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0
aWMoU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBTY3JvbGxBbmltYXRpb24o
VHlwZTo6S2luZXRpYywgY2xpZW50KQotICAgICwgbV9hbmltYXRpb25UaW1lcihSdW5Mb29wOjpj
dXJyZW50KCksIHRoaXMsICZTY3JvbGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1lckZp
cmVkKQogewotI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCi0gICAgbV9hbmltYXRpb25UaW1lci5z
ZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hNb25p
dG9yVGltZXIpOwotI2VuZGlmCiB9CiAKIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6On5TY3JvbGxB
bmltYXRpb25LaW5ldGljKCkgPSBkZWZhdWx0OwogCi12b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0
aWM6OnN0b3AoKQotewotICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOwotfQotCi1ib29sIFNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9h
bmltYXRpb25UaW1lci5pc0FjdGl2ZSgpOwotfQotCiB2b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0
aWM6OmFwcGVuZFRvU2Nyb2xsSGlzdG9yeShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50
KQogewogICAgIG1fc2Nyb2xsSGlzdG9yeS5yZW1vdmVBbGxNYXRjaGluZyhbJmV2ZW50XSAoUGxh
dGZvcm1XaGVlbEV2ZW50JiBvdGhlckV2ZW50KSAtPiBib29sIHsKQEAgLTE0OCw3ICsxMjcsNyBA
QCB2b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmNsZWFyU2Nyb2xsSGlzdG9yeSgpCiAgICAg
bV9zY3JvbGxIaXN0b3J5LmNsZWFyKCk7CiB9CiAKLUZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYzo6Y29tcHV0ZVZlbG9jaXR5KCkKK0Zsb2F0U2l6ZSBTY3JvbGxBbmltYXRpb25LaW5l
dGljOjpjb21wdXRlVmVsb2NpdHkoKQogewogICAgIGlmIChtX3Njcm9sbEhpc3RvcnkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTY2LDI1ICsxNDUsMjQgQEAgRmxvYXRQb2lu
dCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpjb21wdXRlVmVsb2NpdHkoKQogICAgIC8vIEZJWE1F
OiBJdCdzIG9kZCB0aGF0IGNvbXB1dGVWZWxvY2l0eSgpIGhhcyB0aGUgc2lkZSBlZmZlY3Qgb2Yg
Y2xlYXJpbmcgaGlzdG9yeS4KICAgICBtX3Njcm9sbEhpc3RvcnkuY2xlYXIoKTsKIAotICAgIHJl
dHVybiBGbG9hdFBvaW50KGFjY3VtRGVsdGEueCgpICogLTEgLyAobGFzdCAtIGZpcnN0KS52YWx1
ZSgpLCBhY2N1bURlbHRhLnkoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCkudmFsdWUoKSk7CisgICAg
cmV0dXJuIEZsb2F0U2l6ZShhY2N1bURlbHRhLngoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCkudmFs
dWUoKSwgYWNjdW1EZWx0YS55KCkgKiAtMSAvIChsYXN0IC0gZmlyc3QpLnZhbHVlKCkpOwogfQog
Ci1ib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5p
dGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0
UG9pbnQmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCkKK2Jvb2wg
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVs
b2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXplJiB2
ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwpCiB7CiAgICAgc3RvcCgp
OwogCi0gICAgaWYgKCF2ZWxvY2l0eS54KCkgJiYgIXZlbG9jaXR5LnkoKSkgewotICAgICAgICBt
X29mZnNldCA9IGluaXRpYWxPZmZzZXQ7CisgICAgaWYgKHZlbG9jaXR5LmlzWmVybygpKSB7CiAg
ICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fdmVydGlj
YWxEYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgYXV0byBkZWx0YSA9IGRlbHRhVG9OZXh0RnJhbWUoKTsKKyAgICBhdXRvIGVsYXBzZWRUaW1l
ID0gMF9zOwogICAgIGF1dG8gZXh0ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHNGb3JBbmlt
YXRpb24oKnRoaXMpOwogCiAgICAgYXV0byBhY2N1bXVsYXRlVmVsb2NpdHkgPSBbJl0oZG91Ymxl
IHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBheGlzRGF0YSkgLT4gZG91Ymxl
IHsKLSAgICAgICAgaWYgKGF4aXNEYXRhICYmIGF4aXNEYXRhLnZhbHVlKCkuYW5pbWF0ZVNjcm9s
bChkZWx0YSkpIHsKKyAgICAgICAgaWYgKGF4aXNEYXRhICYmIGF4aXNEYXRhLnZhbHVlKCkuYW5p
bWF0ZVNjcm9sbChlbGFwc2VkVGltZSkpIHsKICAgICAgICAgICAgIGRvdWJsZSBsYXN0VmVsb2Np
dHkgPSBheGlzRGF0YS52YWx1ZSgpLnZlbG9jaXR5KCk7CiAgICAgICAgICAgICBpZiAoKHN0ZDo6
c2lnbmJpdChsYXN0VmVsb2NpdHkpID09IHN0ZDo6c2lnbmJpdCh2ZWxvY2l0eSkpCiAgICAgICAg
ICAgICAgICAgJiYgKHN0ZDo6YWJzKHZlbG9jaXR5KSA+PSBzdGQ6OmFicyhsYXN0VmVsb2NpdHkg
KiB2ZWxvY2l0eUFjY3VtdWxhdGlvbkZsb29yKSkpIHsKQEAgLTIwMSwyMCArMTc5LDE5IEBAIGJv
b2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFs
VmVsb2NpdHkoY29uc3QgRmxvYXRQCiAgICAgaWYgKG1heUhTY3JvbGwpIHsKICAgICAgICAgbV9o
b3Jpem9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCgp
LngoKSwKICAgICAgICAgICAgIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpLngoKSwKLSAg
ICAgICAgICAgIGluaXRpYWxPZmZzZXQueCgpLCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHku
eCgpLCBtX2hvcml6b250YWxEYXRhKSk7CisgICAgICAgICAgICBpbml0aWFsT2Zmc2V0LngoKSwg
YWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9jaXR5LndpZHRoKCksIG1faG9yaXpvbnRhbERhdGEpKTsK
ICAgICB9IGVsc2UKICAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAog
ICAgIGlmIChtYXlWU2Nyb2xsKSB7CiAgICAgICAgIG1fdmVydGljYWxEYXRhID0gUGVyQXhpc0Rh
dGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAogICAgICAgICAgICAgZXh0ZW50
cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAotICAgICAgICAgICAgaW5pdGlhbE9mZnNldC55
KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS55KCksIG1fdmVydGljYWxEYXRhKSk7Cisg
ICAgICAgICAgICBpbml0aWFsT2Zmc2V0LnkoKSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9jaXR5
LmhlaWdodCgpLCBtX3ZlcnRpY2FsRGF0YSkpOwogICAgIH0gZWxzZQogICAgICAgICBtX3ZlcnRp
Y2FsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIG1fb2Zmc2V0ID0gaW5pdGlhbE9mZnNldDsK
LSAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gdGlja1RpbWUgLyAyLjsK
LSAgICBhbmltYXRpb25UaW1lckZpcmVkKCk7CisgICAgbV9jdXJyZW50T2Zmc2V0ID0gaW5pdGlh
bE9mZnNldDsKKyAgICBkaWRTdGFydChNb25vdG9uaWNUaW1lOjpub3coKSk7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTIyNywzMCArMjA0LDIzIEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYzo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmFuaW1hdGlvblRp
bWVyRmlyZWQoKQordm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzZXJ2aWNlQW5pbWF0aW9u
KE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCiB7Ci0gICAgYXV0byBkZWx0YSA9IGRlbHRhVG9O
ZXh0RnJhbWUoKTsKKyAgICBhdXRvIGVsYXBzZWRUaW1lID0gdGltZVNpbmNlU3RhcnQoY3VycmVu
dFRpbWUpOwogCi0gICAgaWYgKG1faG9yaXpvbnRhbERhdGEgJiYgIW1faG9yaXpvbnRhbERhdGEu
dmFsdWUoKS5hbmltYXRlU2Nyb2xsKGRlbHRhKSkKKyAgICBpZiAobV9ob3Jpem9udGFsRGF0YSAm
JiAhbV9ob3Jpem9udGFsRGF0YS52YWx1ZSgpLmFuaW1hdGVTY3JvbGwoZWxhcHNlZFRpbWUpKQog
ICAgICAgICBtX2hvcml6b250YWxEYXRhID0gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKG1fdmVy
dGljYWxEYXRhICYmICFtX3ZlcnRpY2FsRGF0YS52YWx1ZSgpLmFuaW1hdGVTY3JvbGwoZGVsdGEp
KQorICAgIGlmIChtX3ZlcnRpY2FsRGF0YSAmJiAhbV92ZXJ0aWNhbERhdGEudmFsdWUoKS5hbmlt
YXRlU2Nyb2xsKGVsYXBzZWRUaW1lKSkKICAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBzdGQ6Om51
bGxvcHQ7CiAKLSAgICAvLyBJZiBvbmUgb2YgdGhlIGF4ZXMgZGlkbid0IGZpbmlzaCBpdHMgYW5p
bWF0aW9uIHdlIG11c3QgY29udGludWUgaXQuCi0gICAgaWYgKG1faG9yaXpvbnRhbERhdGEgfHwg
bV92ZXJ0aWNhbERhdGEpCi0gICAgICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KHN0
ZDo6bWF4KG1pbmltdW1UaW1lckludGVydmFsLCBkZWx0YSkpOworICAgIGRvdWJsZSB4ID0gbV9o
b3Jpem9udGFsRGF0YSA/IG1faG9yaXpvbnRhbERhdGEudmFsdWUoKS5vZmZzZXQoKSA6IG1fY3Vy
cmVudE9mZnNldC54KCk7CisgICAgZG91YmxlIHkgPSBtX3ZlcnRpY2FsRGF0YSA/IG1fdmVydGlj
YWxEYXRhLnZhbHVlKCkub2Zmc2V0KCkgOiBtX2N1cnJlbnRPZmZzZXQueSgpOworICAgIG1fY3Vy
cmVudE9mZnNldCA9IEZsb2F0UG9pbnQoeCwgeSk7CisgICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0
aW9uRGlkVXBkYXRlKCp0aGlzLCBtX2N1cnJlbnRPZmZzZXQpOwogCi0gICAgZG91YmxlIHggPSBt
X2hvcml6b250YWxEYXRhID8gbV9ob3Jpem9udGFsRGF0YS52YWx1ZSgpLm9mZnNldCgpIDogbV9v
ZmZzZXQueCgpOwotICAgIGRvdWJsZSB5ID0gbV92ZXJ0aWNhbERhdGEgPyBtX3ZlcnRpY2FsRGF0
YS52YWx1ZSgpLm9mZnNldCgpIDogbV9vZmZzZXQueSgpOwotICAgIG1fb2Zmc2V0ID0gRmxvYXRQ
b2ludCh4LCB5KTsKLSAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoKnRoaXMs
IG1fb2Zmc2V0KTsKLX0KLQotU2Vjb25kcyBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpkZWx0YVRv
TmV4dEZyYW1lKCkKLXsKLSAgICBNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7Ci0gICAgcmV0dXJuIDFfcyAqIGNlaWwoKGN1cnJlbnRUaW1lIC0gbV9zdGFy
dFRpbWUpLnZhbHVlKCkgKiBmcmFtZVJhdGUpIC8gZnJhbWVSYXRlIC0gKGN1cnJlbnRUaW1lIC0g
bV9zdGFydFRpbWUpOworICAgIGlmICghbV9ob3Jpem9udGFsRGF0YSAmJiAhbV92ZXJ0aWNhbERh
dGEpCisgICAgICAgIGRpZEVuZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKaW5kZXgg
MTQxM2YzMzI4OGU5ZGUyZjNkMmVkZTZhOWZkZDJlMTcxODE0Yzg1YS4uYjc0ZDc3MDNlNjY5NWM4
NzhkZTExMzViNGM4ZGMzODM2ZWNlODExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVk
ZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbi5oIgotI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsMjggKzYwLDIw
IEBAIHB1YmxpYzoKICAgICBTY3JvbGxBbmltYXRpb25LaW5ldGljKFNjcm9sbEFuaW1hdGlvbkNs
aWVudCYpOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKIAotICAgIC8v
IEZJWE1FOiBWZWxvY2l0eSBzaG91bGQgYmUgYSBGbG9hdFNpemUuCi0gICAgYm9vbCBzdGFydEFu
aW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFs
T2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBib29s
IG1heVZTY3JvbGwpOwotCisgICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxW
ZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUm
IHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCk7CiAgICAgYm9vbCBy
ZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdPZmZzZXQpIGZpbmFs
OwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBmaW5h
bDsKKworICAgIHZvaWQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKIAog
ICAgIHZvaWQgYXBwZW5kVG9TY3JvbGxIaXN0b3J5KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYp
OwogICAgIHZvaWQgY2xlYXJTY3JvbGxIaXN0b3J5KCk7CiAKLSAgICBGbG9hdFBvaW50IGNvbXB1
dGVWZWxvY2l0eSgpOworICAgIEZsb2F0U2l6ZSBjb21wdXRlVmVsb2NpdHkoKTsKIAogcHJpdmF0
ZToKLSAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKLSAgICBTZWNvbmRzIGRlbHRhVG9O
ZXh0RnJhbWUoKTsKLQogICAgIHN0ZDo6b3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1faG9yaXpvbnRh
bERhdGE7CiAgICAgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gbV92ZXJ0aWNhbERhdGE7CiAK
LSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwotICAgIFJ1bkxvb3A6OlRpbWVyPFNjcm9s
bEFuaW1hdGlvbktpbmV0aWM+IG1fYW5pbWF0aW9uVGltZXI7Ci0gICAgRmxvYXRQb2ludCBtX29m
ZnNldDsKICAgICBWZWN0b3I8UGxhdGZvcm1XaGVlbEV2ZW50PiBtX3Njcm9sbEhpc3Rvcnk7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25N
b21lbnR1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21l
bnR1bS5jcHAKaW5kZXggZmE1NzM2OTE1NGEzODc5NDI5MzBkNmY4MzU1ZGVmMWM3ZmVkMDczZS4u
MjIzODVlMWYwYjliMmM1OGE5MDJlNzVkNDkxZjJhNDQ4ZTc3ZjQ4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcApAQCAtMjcs
NyArMjcsNiBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ01v
bWVudHVtQ2FsY3VsYXRvci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Miw1NSArNTEsNDkgQEAgYm9vbCBTY3JvbGxBbmlt
YXRpb25Nb21lbnR1bTo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29u
c3QgRmxvYXQKIAogICAgIGlmIChwcmVkaWN0ZWRTY3JvbGxPZmZzZXQgPT0gaW5pdGlhbE9mZnNl
dCkgewogICAgICAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IG51bGxwdHI7Ci0gICAgICAgIG1f
YW5pbWF0aW9uQ29tcGxldGUgPSB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBtX2FuaW1hdGlv
bkNvbXBsZXRlID0gZmFsc2U7CisgICAgZGlkU3RhcnQoTW9ub3RvbmljVGltZTo6bm93KCkpOwog
ICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpyZXRh
cmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5hdGlvbikKIHsK
LSAgICBpZiAobV9tb21lbnR1bUNhbGN1bGF0b3IpIHsKKyAgICBpZiAobV9tb21lbnR1bUNhbGN1
bGF0b3IgJiYgaXNBY3RpdmUoKSkgewogICAgICAgICBtX21vbWVudHVtQ2FsY3VsYXRvci0+c2V0
UmV0YXJnZXRlZFNjcm9sbE9mZnNldChuZXdEZXN0aW5hdGlvbik7CiAgICAgICAgIGF1dG8gbmV3
RHVyYXRpb24gPSBtX21vbWVudHVtQ2FsY3VsYXRvci0+YW5pbWF0aW9uRHVyYXRpb24oKTsKLSAg
ICAgICAgbV9hbmltYXRpb25Db21wbGV0ZSA9IG5ld0R1cmF0aW9uID4gMF9zOwotICAgICAgICBy
ZXR1cm4gIW1fYW5pbWF0aW9uQ29tcGxldGU7CisgICAgICAgIGJvb2wgYW5pbWF0aW9uQ29tcGxl
dGUgPSBuZXdEdXJhdGlvbiA+IDBfczsKKyAgICAgICAgaWYgKGFuaW1hdGlvbkNvbXBsZXRlKQor
ICAgICAgICAgICAgZGlkRW5kKCk7CisKKyAgICAgICAgcmV0dXJuICFhbmltYXRpb25Db21wbGV0
ZTsKICAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0aW9u
TW9tZW50dW06OnN0b3AoKQogewogICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yID0gbnVsbHB0cjsK
LSAgICBtX2FuaW1hdGlvbkNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX2NsaWVudC5zY3JvbGxBbmlt
YXRpb25EaWRFbmQoKnRoaXMpOwotfQotCi1ib29sIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpp
c0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2FuaW1hdGlvbkNvbXBsZXRlOworICAg
IFNjcm9sbEFuaW1hdGlvbjo6c3RvcCgpOwogfQogCi1GbG9hdFBvaW50IFNjcm9sbEFuaW1hdGlv
bk1vbWVudHVtOjpzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCit2
b2lkIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1Rp
bWUgY3VycmVudFRpbWUpCiB7CiAgICAgaWYgKCFtX21vbWVudHVtQ2FsY3VsYXRvcikgewogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZWxhcHNlZFRpbWUgPSBjdXJyZW50VGltZSAtIG1f
c3RhcnRUaW1lOwotICAgIG1fYW5pbWF0aW9uQ29tcGxldGUgPSBlbGFwc2VkVGltZSA+PSBtX21v
bWVudHVtQ2FsY3VsYXRvci0+YW5pbWF0aW9uRHVyYXRpb24oKTsKKyAgICBhdXRvIGVsYXBzZWRU
aW1lID0gdGltZVNpbmNlU3RhcnQoY3VycmVudFRpbWUpOworICAgIGJvb2wgYW5pbWF0aW9uQ29t
cGxldGUgPSBlbGFwc2VkVGltZSA+PSBtX21vbWVudHVtQ2FsY3VsYXRvci0+YW5pbWF0aW9uRHVy
YXRpb24oKTsKICAgICBhdXRvIG5ld09mZnNldCA9IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5zY3Jv
bGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKGVsYXBzZWRUaW1lKTsKIAogICAgIG1fY2xpZW50LnNj
cm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgbmV3T2Zmc2V0KTsKIAotICAgIGlmIChtX2Fu
aW1hdGlvbkNvbXBsZXRlKQotICAgICAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRFbmQo
KnRoaXMpOwotICAgIAotICAgIHJldHVybiBuZXdPZmZzZXQ7CisgICAgaWYgKGFuaW1hdGlvbkNv
bXBsZXRlKQorICAgICAgICBkaWRFbmQoKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRpb25Nb21l
bnR1bTo6dXBkYXRlU2Nyb2xsRXh0ZW50cygpCkBAIC0xMDgsMTEgKzEwMSw4IEBAIHZvaWQgU2Ny
b2xsQW5pbWF0aW9uTW9tZW50dW06OnVwZGF0ZVNjcm9sbEV4dGVudHMoKQogICAgIGF1dG8gZXh0
ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oKnRoaXMpOwogICAgIGF1
dG8gcHJlZGljdGVkU2Nyb2xsT2Zmc2V0ID0gbV9tb21lbnR1bUNhbGN1bGF0b3ItPnByZWRpY3Rl
ZERlc3RpbmF0aW9uT2Zmc2V0KCk7CiAgICAgYXV0byBjb25zdHJhaW5lZE9mZnNldCA9IHByZWRp
Y3RlZFNjcm9sbE9mZnNldC5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Nyb2xs
T2Zmc2V0KCksIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpKTsKLSAgICBpZiAoY29uc3Ry
YWluZWRPZmZzZXQgIT0gcHJlZGljdGVkU2Nyb2xsT2Zmc2V0KSB7CisgICAgaWYgKGNvbnN0cmFp
bmVkT2Zmc2V0ICE9IHByZWRpY3RlZFNjcm9sbE9mZnNldCkKICAgICAgICAgcmV0YXJnZXRBY3Rp
dmVBbmltYXRpb24oY29uc3RyYWluZWRPZmZzZXQpOwotICAgICAgICBpZiAobV9hbmltYXRpb25D
b21wbGV0ZSkKLSAgICAgICAgICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZEVuZCgqdGhp
cyk7Ci0gICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaAppbmRleCA2NjQyZGNiNTQ2
ZWZkOTA5MzliOGZmNTIxODBmYjAzOTA5M2RiNGVkLi41YzliZTkxMzQxZDY3MjRlYzUwNjk3NGIy
NzNlZjE3OWNmOTcyOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25Nb21lbnR1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbk1vbWVudHVtLmgKQEAgLTM2LDE4ICszNiwxMyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0oKTsKIAogICAgIGJvb2wgc3RhcnRBbmltYXRl
ZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNl
dCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6ZSYgaW5p
dGlhbERlbHRhLCBjb25zdCBXVEY6OkZ1bmN0aW9uPEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQb2lu
dCYpPiYgZGVzdGluYXRpb25Nb2RpZmllcik7Ci0KICAgICBib29sIHJldGFyZ2V0QWN0aXZlQW5p
bWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld0Rlc3RpbmF0aW9uKSBmaW5hbDsKICAgICB2b2lk
IHN0b3AoKSBmaW5hbDsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7Ci0gICAgRmxv
YXRQb2ludCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpIGZpbmFsOworICAgIHZvaWQg
c2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZVNj
cm9sbEV4dGVudHMoKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Ny
b2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBtX21vbWVudHVtQ2FsY3VsYXRvcjsKLSAgICAKLSAg
ICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwotICAgIGJvb2wgbV9hbmltYXRpb25Db21wbGV0
ZSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAppbmRleCBiMDZmMmYy
NGVhNTc1MTI1MDRmNzIyMWQwYjliMjJiYTgyMDkzMmI1Li4wMzY2MmJjNjI0OGIxODllMTY2YTMz
MzlmYzAzMDVhMTNjOGZlZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb25TbW9vdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvblNtb290aC5jcHAKQEAgLTMzLDI1ICszMywxNSBAQAogI2luY2x1ZGUgIlNj
cm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiVGltaW5nRnVuY3Rpb24uaCIKIAotI2lmIFVTRShH
TElCX0VWRU5UX0xPT1ApCi0jaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9yaXR5
Lmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgZG91Ymxl
IGZyYW1lUmF0ZSA9IDYwOwogc3RhdGljIGNvbnN0IGZsb2F0IGFuaW1hdGlvblNwZWVkIHsgMTAw
MC4wZiB9Owotc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIG1pbmltdW1UaW1lckludGVydmFsIHsg
MV9tcyB9Owogc3RhdGljIGNvbnN0IFNlY29uZHMgbWF4QW5pbWF0aW9uRHVyYXRpb24geyAyMDBf
bXMgfTsKIAogU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3JvbGxBbmltYXRpb25TbW9vdGgoU2Ny
b2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBTY3JvbGxBbmltYXRpb24oVHlwZTo6
U21vb3RoLCBjbGllbnQpCi0gICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQo
KSwgdGhpcywgJlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCkKICAg
ICAsIG1fZWFzZUluT3V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6
Y3JlYXRlKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OlRpbWluZ0Z1bmN0aW9uUHJlc2V0OjpF
YXNlSW5PdXQpKQogewotI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCi0gICAgbV9hbmltYXRpb25U
aW1lci5zZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJl
c2hNb25pdG9yVGltZXIpOwotI2VuZGlmCiB9CiAKIFNjcm9sbEFuaW1hdGlvblNtb290aDo6flNj
cm9sbEFuaW1hdGlvblNtb290aCgpID0gZGVmYXVsdDsKQEAgLTc5LDE3ICs2OSwxMCBAQCBib29s
IFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRPclJldGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNj
cm9sbEV4dGVudHMmIGV4dGVudAogICAgIG1fZGVzdGluYXRpb25PZmZzZXQgPSBkZXN0aW5hdGlv
bk9mZnNldC5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0KCks
IGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpKTsKICAgICBib29sIG5lZWRUb1Njcm9sbCA9
IG1fc3RhcnRPZmZzZXQgIT0gbV9kZXN0aW5hdGlvbk9mZnNldDsKIAotICAgIGlmIChuZWVkVG9T
Y3JvbGwgJiYgIWlzQWN0aXZlKCkpIHsKLSAgICAgICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNU
aW1lOjpub3coKTsKLSAgICAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwotICAgIH0KLSAgICBy
ZXR1cm4gbmVlZFRvU2Nyb2xsOwotfQorICAgIGlmIChuZWVkVG9TY3JvbGwgJiYgIWlzQWN0aXZl
KCkpCisgICAgICAgIGRpZFN0YXJ0KE1vbm90b25pY1RpbWU6Om5vdygpKTsKIAotdm9pZCBTY3Jv
bGxBbmltYXRpb25TbW9vdGg6OnN0b3AoKQotewotICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgp
OwotICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZEVuZCgqdGhpcyk7CisgICAgcmV0dXJu
IG5lZWRUb1Njcm9sbDsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0ZVNj
cm9sbEV4dGVudHMoKQpAQCAtMTEwLDYgKzkzLDE0IEBAIGlubGluZSBmbG9hdCBsaW5lYXJJbnRl
cnBvbGF0aW9uKGZsb2F0IHByb2dyZXNzLCBmbG9hdCBhLCBmbG9hdCBiKQogICAgIHJldHVybiBh
ICsgcHJvZ3Jlc3MgKiAoYiAtIGEpOwogfQogCit2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6
c2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKQoreworICAgIGJvb2wg
YW5pbWF0aW9uQWN0aXZlID0gYW5pbWF0ZVNjcm9sbChjdXJyZW50VGltZSk7CisgICAgbV9jbGll
bnQuc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKCp0aGlzLCBtX2N1cnJlbnRPZmZzZXQpOworICAg
IGlmICghYW5pbWF0aW9uQWN0aXZlKQorICAgICAgICBkaWRFbmQoKTsKK30KKwogYm9vbCBTY3Jv
bGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGVTY3JvbGwoTW9ub3RvbmljVGltZSBjdXJyZW50VGlt
ZSkKIHsKICAgICBNb25vdG9uaWNUaW1lIGVuZFRpbWUgPSBtX3N0YXJ0VGltZSArIG1fZHVyYXRp
b247CkBAIC0xMjYsMjkgKzExNyw0IEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmlt
YXRlU2Nyb2xsKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCiAgICAgcmV0dXJuIGN1cnJlbnRU
aW1lIDwgZW5kVGltZTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlv
blRpbWVyRmlyZWQoKQotewotICAgIE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKLSAgICBTZWNvbmRzIGRlbHRhVG9OZXh0RnJhbWUgPSAxX3MgKiBjZWls
KChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKS52YWx1ZSgpICogZnJhbWVSYXRlKSAvIGZyYW1l
UmF0ZSAtIChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKTsKLSAgICBjdXJyZW50VGltZSArPSBk
ZWx0YVRvTmV4dEZyYW1lOwotCi0gICAgYm9vbCBjb250aW51ZUFuaW1hdGlvbiA9IGFuaW1hdGVT
Y3JvbGwoY3VycmVudFRpbWUpOwotICAgIGlmIChjb250aW51ZUFuaW1hdGlvbikKLSAgICAgICAg
c3RhcnROZXh0VGltZXIoc3RkOjptYXgobWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9OZXh0
RnJhbWUpKTsKLQotICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywg
bV9jdXJyZW50T2Zmc2V0KTsKLSAgICBpZiAoIWNvbnRpbnVlQW5pbWF0aW9uKQotICAgICAgICBt
X2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRFbmQoKnRoaXMpOwotfQotCi12b2lkIFNjcm9sbEFu
aW1hdGlvblNtb290aDo6c3RhcnROZXh0VGltZXIoU2Vjb25kcyBkZWxheSkKLXsKLSAgICBtX2Fu
aW1hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChkZWxheSk7Ci19Ci0KLWJvb2wgU2Nyb2xsQW5pbWF0
aW9uU21vb3RoOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYW5pbWF0aW9uVGlt
ZXIuaXNBY3RpdmUoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCAxZDIzNGEyOTJk
Nzc2Njk4ODMxN2MxODBmYTU0OTVkNjU1ZGJmYTgyLi5kMTdmMjk0MTlmZTI4NWZjNmU1ZjVlODVj
MzFlMDEyYWQ1OGI4MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25TbW9vdGguaApAQCAtMjgsOCArMjgsNiBAQAogCiAjaW5jbHVkZSAiU2Nyb2xsQW5p
bWF0aW9uLmgiCiAKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC00MSwzMyArMzksMjMgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblNtb290aCgpOwogCiAgICAgYm9vbCBzdGFydEFuaW1h
dGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihjb25zdCBGbG9hdFBvaW50JiBmcm9tT2Zmc2V0LCBjb25z
dCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbk9mZnNldCk7Ci0KICAgICBib29sIHJldGFyZ2V0QWN0
aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7Ci0gICAgdm9p
ZCBzdG9wKCkgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVTY3JvbGxFeHRlbnRzKCkgZmluYWw7Ci0g
ICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZpbmFsOwotCiAKIHByaXZhdGU6Ci0gICAgYm9vbCBz
dGFydE9yUmV0YXJnZXRBbmltYXRpb24oY29uc3QgU2Nyb2xsRXh0ZW50cyYsIGNvbnN0IEZsb2F0
UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMo
KSBmaW5hbDsKKyAgICB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgZmluYWw7
CiAKLSAgICB2b2lkIHJlcXVlc3RBbmltYXRpb25UaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBzdGFy
dE5leHRUaW1lcihTZWNvbmRzIGRlbGF5KTsKLSAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQo
KTsKKyAgICBib29sIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihjb25zdCBTY3JvbGxFeHRlbnRz
JiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb25PZmZzZXQpOwogICAgIAogICAgIFNlY29u
ZHMgZHVyYXRpb25Gcm9tRGlzdGFuY2UoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CiAgICAgCiAg
ICAgYm9vbCBhbmltYXRlU2Nyb2xsKE1vbm90b25pY1RpbWUpOwogCi0gICAgTW9ub3RvbmljVGlt
ZSBtX3N0YXJ0VGltZTsKICAgICBTZWNvbmRzIG1fZHVyYXRpb247CiAKICAgICBGbG9hdFBvaW50
IG1fc3RhcnRPZmZzZXQ7CiAgICAgRmxvYXRQb2ludCBtX2Rlc3RpbmF0aW9uT2Zmc2V0OwotICAg
IEZsb2F0UG9pbnQgbV9jdXJyZW50T2Zmc2V0OwotICAgIAotICAgIC8vIEZJWE1FOiBTaG91bGQg
bm90IGhhdmUgdGltZXIgaGVyZSwgYW5kIGluc3RlYWQgdXNlIHNlcnZpY2VBbmltYXRpb24oKS4K
LSAgICBSdW5Mb29wOjpUaW1lcjxTY3JvbGxBbmltYXRpb25TbW9vdGg+IG1fYW5pbWF0aW9uVGlt
ZXI7CisKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fZWFzZUluT3V0VGltaW5nRnVuY3Rp
b247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5jcHAKaW5kZXggNzk4NTVhMzE0NmFmZjEzMDM1Mzg2NWQ2N2ExYTEw
OWM3Njg5ZGIxOC4uMzMyNzAxODA1Mzk5ZTBkNGU0MGMxZTQ2MGRlODM0ZTgyMDNhMGQ4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyLmNwcApAQCAtNDgsMTQgKzQ4LDIzIEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXI6OmFuaW1hdGlvbkNhbGxiYWNrKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCiB7CiAg
ICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiBhbmltYXRpb25DYWxsYmFjazogaXNBbmltYXRpbmdS
dWJiZXJCYW5kICIgPDwgbV9pc0FuaW1hdGluZ1J1YmJlckJhbmQgPDwgIiBpc0FuaW1hdGluZ1Nj
cm9sbFNuYXAgIiA8PCBtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCA8PCAiaXNBbmltYXRpbmdLZXli
b2FyZFNjcm9sbGluZyIgPDwgbV9pc0FuaW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nKTsKIAotICAg
IHVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZShjdXJyZW50VGltZSk7CisgICAgaWYgKG1f
Y3VycmVudEFuaW1hdGlvbikgeworICAgICAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uLT5pc0Fj
dGl2ZSgpKQorICAgICAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uLT5zZXJ2aWNlQW5pbWF0aW9u
KGN1cnJlbnRUaW1lKTsKKworICAgICAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uICYmICFtX2N1
cnJlbnRBbmltYXRpb24tPmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX2N1cnJlbnRBbmltYXRp
b24gPSBudWxscHRyOworICAgIH0KKwogICAgIHVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdTdGF0
ZShjdXJyZW50VGltZSk7CiAgICAgdXBkYXRlS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRpbmdTdGF0
ZShjdXJyZW50VGltZSk7CisgICAgCisgICAgc3RhcnRPclN0b3BBbmltYXRpb25DYWxsYmFja3Mo
KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRPclN0b3BBbmlt
YXRpb25DYWxsYmFja3MoKQogewotICAgIGJvb2wgbmVlZHNDYWxsYmFja3MgPSBtX2lzQW5pbWF0
aW5nUnViYmVyQmFuZCB8fCBtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCB8fCBtX2lzQW5pbWF0aW5n
S2V5Ym9hcmRTY3JvbGxpbmc7CisgICAgYm9vbCBuZWVkc0NhbGxiYWNrcyA9IG1faXNBbmltYXRp
bmdSdWJiZXJCYW5kIHx8IG1faXNBbmltYXRpbmdLZXlib2FyZFNjcm9sbGluZyB8fCBtX2N1cnJl
bnRBbmltYXRpb247CiAgICAgaWYgKG5lZWRzQ2FsbGJhY2tzID09IG1faXNSdW5uaW5nQW5pbWF0
aW5nQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIApAQCAtODQsNiArOTMsOCBAQCBib29sIFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlv
bihGbG9hdFBvaW50IHN0YQogICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pCiAgICAgICAgIG1f
Y3VycmVudEFuaW1hdGlvbi0+c3RvcCgpOwogCisgICAgLy8gV2UgYWx3YXlzIGNyZWF0ZSBhbmQg
YXR0ZW1wdCB0byBzdGFydCB0aGUgYW5pbWF0aW9uLiBJZiBpdCB0dXJucyBvdXQgdG8gbm90IG5l
ZWQgYW5pbWF0aW5nLCB0aGVuIHRoZSBhbmltYXRpb24KKyAgICAvLyByZW1haW5zIGluYWN0aXZl
LCBhbmQgd2UnbGwgcmVtb3ZlIGl0IG9uIHRoZSBuZXh0IGFuaW1hdGlvbkNhbGxiYWNrKCkuCiAg
ICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+
KCp0aGlzKTsKICAgICByZXR1cm4gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigqbV9j
dXJyZW50QW5pbWF0aW9uKS5zdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihzdGFydE9m
ZnNldCwgZGVzdGluYXRpb25PZmZzZXQpOwogfQpAQCAtMjc0LDkgKzI4NSwyMCBAQCB2b2lkIFNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xs
QW5pbWF0aW9uJiwgY29ucwogICAgIHNjcm9sbFRvT2Zmc2V0Rm9yQW5pbWF0aW9uKGN1cnJlbnRP
ZmZzZXQpOwogfQogCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmlt
YXRpb25XaWxsU3RhcnQoU2Nyb2xsQW5pbWF0aW9uJikKK3sKKyAgICBzdGFydE9yU3RvcEFuaW1h
dGlvbkNhbGxiYWNrcygpOworfQorCiB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpz
Y3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikKIHsKKyAgICBpZiAodXNlc1Nj
cm9sbFNuYXAoKSAmJiBtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCkgeworICAgICAgICBtX3Njcm9s
bFNuYXBTdGF0ZS0+dHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKKyAgICAg
ICAgc3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKTsKKyAgICB9CisKICAgICBtX2NsaWVudC5zZXRT
Y3JvbGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24p
OworICAgIHN0YXJ0T3JTdG9wQW5pbWF0aW9uQ2FsbGJhY2tzKCk7CiB9CiAKIFNjcm9sbEV4dGVu
dHMgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24o
U2Nyb2xsQW5pbWF0aW9uJikKQEAgLTI5OSwxMSArMzIxLDYgQEAgdm9pZCBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkKIHsKIH0KIAotdm9pZCBTY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcEFuaW1hdGluZ1N0YXRlKE1v
bm90b25pY1RpbWUpCi17Ci0KLX0KLQogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
dXBkYXRlUnViYmVyQmFuZEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUpCiB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5o
CmluZGV4IDcwYzE4ZWZkM2JkNDk3NGIxM2VmMzdlZmUxOWQ1Y2UwZTNjYmUyYWUuLjJmMjI3Zjg1
M2Q0MzM2MTY4OTY2OWJjNzQwZjlkNDZhNjM1MDY5YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaApAQCAtMTgzLDcgKzE4
Myw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHZvaWQgdXBkYXRlU2Nyb2xs
U25hcEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUpOwogICAgIHZvaWQgdXBkYXRlUnViYmVy
QmFuZEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUpOwogICAgIHZvaWQgdXBkYXRlS2V5Ym9h
cmRTY3JvbGxpbmdBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNUaW1lKTsKIApAQCAtMjE3LDYgKzIx
Niw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBTY3JvbGxBbmltYXRpb25DbGllbnQKICAgICB2b2lk
IHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBGbG9hdFBv
aW50JiAvKiBjdXJyZW50T2Zmc2V0ICovKSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbEFuaW1hdGlv
bldpbGxTdGFydChTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKICAgICB2b2lkIHNjcm9sbEFuaW1h
dGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKICAgICBTY3JvbGxFeHRlbnRzIHNj
cm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIubW0KaW5kZXggMjczOTU4YjdmMTcwMDY2OGZlYjdlNjE0NDYzY2IxZmMzZWQ0Yjc5
ZC4uNjU1OGVhNWMyYWI5OTlmZDk5ZTdjOGFmZmQ0N2U2ZmUyNTAwYzM2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlci5tbQpAQCAtNjkwLDggKzY5MCwxMCBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaAogICAg
ICAgICAgICAgc3RhcnRTY3JvbGxTbmFwQW5pbWF0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgV2hlZWxFdmVudFN0YXR1czo6TW9tZW50dW1TY3JvbGxCZWdpbjoKLSAgICAgICAgaWYg
KG1fc2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRlKG1fY2xp
ZW50LnNjcm9sbEV4dGVudHMoKSwgbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCksIG1fY2xpZW50
LnNjcm9sbE9mZnNldCgpLCBtX2RyYWdFbmRlZFNjcm9sbGluZ1ZlbG9jaXR5LCBGbG9hdFNpemUo
LXdoZWVsRXZlbnQuZGVsdGFYKCksIC13aGVlbEV2ZW50LmRlbHRhWSgpKSkpCisgICAgICAgIGlm
IChtX3Njcm9sbFNuYXBTdGF0ZS0+dHJhbnNpdGlvblRvR2xpZGVBbmltYXRpb25TdGF0ZShtX2Ns
aWVudC5zY3JvbGxFeHRlbnRzKCksIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpLCBtX2NsaWVu
dC5zY3JvbGxPZmZzZXQoKSwgbV9kcmFnRW5kZWRTY3JvbGxpbmdWZWxvY2l0eSwgRmxvYXRTaXpl
KC13aGVlbEV2ZW50LmRlbHRhWCgpLCAtd2hlZWxFdmVudC5kZWx0YVkoKSkpKSB7CisgICAgICAg
ICAgICBzdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKTsKICAgICAgICAgICAgIGlzTW9tZW50dW1T
Y3JvbGxpbmcgPSB0cnVlOworICAgICAgICB9CiAgICAgICAgIG1fZHJhZ0VuZGVkU2Nyb2xsaW5n
VmVsb2NpdHkgPSB7IH07CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2hlZWxFdmVudFN0YXR1
czo6TW9tZW50dW1TY3JvbGxpbmc6CkBAIC03NDUsMzcgKzc0Nyw2IEBAIHZvaWQgU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkKICAgICBzZXRJc0Fu
aW1hdGluZ1Njcm9sbFNuYXAoZmFsc2UpOwogfQogCi12b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3RhdGUoTW9ub3RvbmljVGltZSBjdXJy
ZW50VGltZSkKLXsKLSAgICBpZiAoIW1faXNBbmltYXRpbmdTY3JvbGxTbmFwKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkpIHsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlzPFNjcm9s
bEFuaW1hdGlvbk1vbWVudHVtPihtX2N1cnJlbnRBbmltYXRpb24uZ2V0KCkpKSB7Ci0gICAgICAg
IG1fc2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0aW9uVG9EZXN0aW5hdGlvblJlYWNoZWRTdGF0ZSgp
OwotICAgICAgICBzdG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgYXV0byYgbW9tZW50dW1TY3JvbGxBbmltYXRpb24gPSBkb3duY2FzdDxTY3Jv
bGxBbmltYXRpb25Nb21lbnR1bT4oKm1fY3VycmVudEFuaW1hdGlvbik7Ci0KLSAgICBhdXRvIGFu
aW1hdGlvbk9mZnNldCA9IG1vbWVudHVtU2Nyb2xsQW5pbWF0aW9uLnNlcnZpY2VBbmltYXRpb24o
Y3VycmVudFRpbWUpOwotICAgIGJvb2wgaXNBbmltYXRpb25Db21wbGV0ZSA9ICFtb21lbnR1bVNj
cm9sbEFuaW1hdGlvbi5pc0FjdGl2ZSgpOwotCi0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNu
YXAsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIg
dXBkYXRlU2Nyb2xsU25hcEFuaW1hdGluZ1N0YXRlIC0gaXNBbmltYXRpb25Db21wbGV0ZSAiIDw8
IGlzQW5pbWF0aW9uQ29tcGxldGUgPDwgIiBhbmltYXRpb25PZmZzZXQgIiA8PCBhbmltYXRpb25P
ZmZzZXQgPDwgIiAobWFpbiB0aHJlYWQgIiA8PCBpc01haW5UaHJlYWQoKSA8PCAiKSIpOwotCi0g
ICAgc2Nyb2xsVG9PZmZzZXRGb3JBbmltYXRpb24oYW5pbWF0aW9uT2Zmc2V0KTsKLQotICAgIGlm
IChpc0FuaW1hdGlvbkNvbXBsZXRlKSB7Ci0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlLT50cmFu
c2l0aW9uVG9EZXN0aW5hdGlvblJlYWNoZWRTdGF0ZSgpOwotICAgICAgICBzdG9wU2Nyb2xsU25h
cEFuaW1hdGlvbigpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gUExBVEZPUk0oTUFDKQo=
</data>
<flag name="commit-queue"
          id="462702"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439126</attachid>
            <date>2021-09-23 22:54:27 -0700</date>
            <delta_ts>2021-09-24 12:28:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230739-20210923225426.patch</filename>
            <type>text/plain</type>
            <size>42495</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTUwMGZhMWUyMzU1MzAw
N2ExN2QzZDNhN2FlNWM3OGI3ZTk2OGNlOC4uZjllYmEzZmEzNDY4NjNmYWNhNTIwODA2OWU2M2Zk
ZmVjNTE4YzgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTA5LTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIgZHJpdmUgYWxsIHRoZSBTY3JvbGxBbmltYXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGVh
Y2ggU2Nyb2xsQW5pbWF0aW9uIHN1YmNsYXNzIGhhdmluZyBpdHMgb3duIHRpbWVyIGNvZGUsIGhh
dmUgdGhlbSBhbGwKKyAgICAgICAgaW1wbGVtZW50IHNlcnZpY2VBbmltYXRpb25zKCksIHNvIHRo
YXQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgY2FuIHRoZW4gZHJpdmUKKyAgICAgICAgdGhl
bSBhbGwgdmlhIGl0cyBleGlzdGluZyBhbmltYXRpb25DYWxsYmFjaygpIGNvZGUuCisKKyAgICAg
ICAgR1RLIG1pZ2h0IHdhbnQgdG8gc2V0IFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJl
ZnJlc2hNb25pdG9yVGltZXIgcHJpb3JpdHkgb24gdGhlCisgICAgICAgIG1fc2Nyb2xsQ29udHJv
bGxlckFuaW1hdGlvblRpbWVyIGluIFNjcm9sbEFuaW1hdG9yIG5vdywgYnV0IHRoYXQgaXMgbm90
IGRvbmUgaGVyZS4KKworICAgICAgICBQdXNoIGEgYml0IG1vcmUgY29tbW9uIFNjcm9sbEFuaW1h
dGlvbiBsb2dpYyBpbnRvIHRoZSBiYXNlIGNsYXNzLCBhbmQgYWRkIGEKKyAgICAgICAgJ3dpbGxT
dGFydCcgY2xpZW50IGZ1bmN0aW9uIHdoaWNoIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyIGNh
biB1c2UgdG8KKyAgICAgICAgc3RhcnQgY2FsbGJhY2tzIGlmIG5lY2Vzc2FyeS4KKworICAgICAg
ICBTY3JvbGxBbmltYXRpb24gbGlmZXRpbWUgaXMgY29udHJvbGxlZCBieSBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjsgYW4gYW5pbWF0aW9uCisgICAgICAgIHdpbGwgYmUgZGVsZXRlZCBpbiB0
aGUgZmlyc3QgYW5pbWF0aW9uQ2FsbGJhY2soKSB3aGVyZSBpdCBpcyBubyBsb25nZXIgYWN0aXZl
LiBUaGlzCisgICAgICAgIGF2b2lkcyBwb3RlbnRpYWwgcGl0ZmFsbHMgd2hlcmUgYW4gYW5pbWF0
aW9uIG1pZ2h0IGJlIGRlbGV0ZWQgaW5zaWRlIHRoZSBzY3JvbGxBbmltYXRpb25EaWRFbmQoKQor
ICAgICAgICBjYWxsYmFjay4KKworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5
IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbkNsaWVudDo6c2Nyb2xsQW5pbWF0aW9uV2lsbFN0YXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6c3RvcCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OmlzQWN0aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvbjo6Y3VycmVudE9mZnNldCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxBbmltYXRpb246OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bEFuaW1hdGlvbjo6ZGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbjo6
dGltZVNpbmNlU3RhcnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9u
OjpzZXJ2aWNlQW5pbWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25LaW5ldGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6Y29tcHV0ZVZlbG9jaXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxX
aXRoSW5pdGlhbFZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OnNlcnZpY2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
aW9uS2luZXRpYzo6c3RvcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRpb25LaW5ldGljOjppc0FjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1lckZpcmVkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmRlbHRhVG9OZXh0RnJh
bWUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c3RhcnRBbmltYXRlZFNjcm9s
bFdpdGhJbml0aWFsVmVsb2NpdHkpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9u
TW9tZW50dW06OnJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdGlvbk1vbWVudHVtOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdGlvbk1vbWVudHVtOjpzZXJ2aWNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbEFuaW1hdGlvbk1vbWVudHVtOjp1cGRhdGVTY3JvbGxFeHRlbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjppc0FjdGl2ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3JvbGxBbmltYXRpb25TbW9vdGgpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydE9yUmV0YXJnZXRBbmltYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzZXJ2aWNlQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RvcCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlv
blRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoOjpzdGFydE5leHRUaW1lcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxBbmltYXRpb25TbW9vdGg6OmlzQWN0aXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6YW5pbWF0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0T3JTdG9wQW5pbWF0aW9uQ2FsbGJhY2tz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydEFu
aW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsQW5pbWF0aW9uV2lsbFN0YXJ0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25EaWRFbmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVNj
cm9sbFNuYXBBbmltYXRpbmdTdGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKTogSWYgdHJhbnNp
dGlvblRvR2xpZGVBbmltYXRpb25TdGF0ZSgpCisgICAgICAgIHN0YXJ0cyBhbiBhbmltYXRpb24g
d2UgaGF2ZSB0byBjYWxsIHN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigpIChiZWNhdXNlIHRoZSBw
cmV2aW91cyBzdG9wKCkgd2lsbCBoYXZlCisgICAgICAgIHB1dHMgdXMgaW4gYSAibm90IGFuaW1h
dGluZyBzY3JvbGwgc25hcCIgc3RhdGUpLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZSk6IERlbGV0ZWQu
CisKIDIwMjEtMDktMjMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgTW92ZSBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZSdzIFNjcm9sbEFuaW1hdGlvbk1v
bWVudHVtIGludG8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZU5pY29zaWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKaW5kZXgg
ZTQwM2UyNDE1NzRhZTllNTMyYWI4M2YyOTJiYThhZGQ1ZmFjNDYwYy4uZTAxNThjM2JiZjFlOTY4
ODllMzA2ZDg4OGNmMTkzZTVmMDZhYzcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmlj
b3NpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5jcHAKQEAgLTQyLDkgKzQyLDcg
QEAgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWMKIHsKIH0KIAotU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWE6On5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
Tmljb3NpYSgpCi17Ci19CitTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3Np
YTo6flNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhKCkgPSBkZWZhdWx0
OwogCiBzdGQ6OnVuaXF1ZV9wdHI8Tmljb3NpYTo6U2NlbmVJbnRlZ3JhdGlvbjo6VXBkYXRlU2Nv
cGU+IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpjcmVhdGVVcGRh
dGVTY29wZSgpCiB7CkBAIC01OSw0NSArNTcsMjMgQEAgc3RkOjp1bmlxdWVfcHRyPE5pY29zaWE6
OlNjZW5lSW50ZWdyYXRpb246OlVwZGF0ZVNjb3BlPiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm8K
IAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6cmVzZXRD
dXJyZW50UG9zaXRpb24oKQogewotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlm
IChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsK
LSNlbmRpZgogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjp1cGRhdGVWaXNpYmxlTGVuZ3RocygpCiB7Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJ
TkcpCi0gICAgaWYgKG1fc21vb3RoQW5pbWF0aW9uKQotICAgICAgICBtX3Ntb290aEFuaW1hdGlv
bi0+dXBkYXRlU2Nyb2xsRXh0ZW50cygpOwotI2VuZGlmCi19Ci0KLSNpZiBFTkFCTEUoS0lORVRJ
Q19TQ1JPTExJTkcpCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25LaW5ldGljKCkKLXsKLSAgICBpZiAobV9raW5ldGlj
QW5pbWF0aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2tpbmV0aWNBbmltYXRpb24gPSBt
YWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+KCp0aGlzKTsKLX0KLSNlbmRpZgotCi0j
aWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhOjplbnN1cmVTY3JvbGxBbmltYXRpb25TbW9vdGgoKQotewotICAg
IGlmIChtX3Ntb290aEFuaW1hdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zbW9vdGhB
bmltYXRpb24gPSBtYWtlVW5pcXVlPFNjcm9sbEFuaW1hdGlvblNtb290aD4oKnRoaXMpOwogfQot
I2VuZGlmCiAKIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlTmljb3NpYTo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmIHdoZWVsRXZlbnQsIEV2ZW50VGFyZ2V0aW5nIGV2ZW50VGFyZ2V0aW5nKQogewogICAg
IGlmICghc2Nyb2xsaW5nTm9kZSgpLmNhbkhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCwgZXZl
bnRUYXJnZXRpbmcpKQogICAgICAgICByZXR1cm4gV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0Ojp1
bmhhbmRsZWQoKTsKIAorI2lmIDAKKyAgICAvLyBGSVhNRTogVGhpcyBjb2RlIG5lZWRzIHRvIG1v
dmUgdG8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmhhbmRsZVdoZWVsRXZlbnQoKSB0byBi
ZSBzaGFyZWQgYmV0d2VlbiB0aGUgbWFpbiB0aHJlYWQgYW5kIHRoZSBzY3JvbGxpbmcgdGhyZWFk
LgorICAgIC8vIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyIG93bnMgYW55IGFuaW1hdGlvbnMg
dGhhdCBzdGFydC4KKyAgICAvLyBTZWUgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU1hYzo6aGFuZGxlV2hlZWxFdmVudCgpLgorICAgIC8vIHJldHVybiBtX3Njcm9sbENvbnRyb2xs
ZXIuaGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKwogICAgIGJvb2wgY2FuSGF2ZUhvcml6
b250YWxTY3JvbGxiYXIgPSBzY3JvbGxpbmdOb2RlKCkuY2FuSGF2ZUhvcml6b250YWxTY3JvbGxi
YXIoKTsKICAgICBib29sIGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhciA9IHNjcm9sbGluZ05vZGUo
KS5jYW5IYXZlVmVydGljYWxTY3JvbGxiYXIoKTsKICNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJ
TkcpCkBAIC0xNjksNiArMTQ1LDcgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpoYW5kbGVXaGVlbEUKICAgICB9CiAj
ZW5kaWYKIAorI2VuZGlmCiAgICAgYXV0byB1cGRhdGVTY29wZSA9IGNyZWF0ZVVwZGF0ZVNjb3Bl
KCk7CiAgICAgc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbEJ5KHsgZGVsdGFYLCBkZWx0YVkgfSk7CiAK
QEAgLTE3NywxNiArMTU0LDcgQEAgV2hlZWxFdmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpoYW5kbGVXaGVlbEUKIAogdm9pZCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c3RvcFNjcm9sbEFuaW1hdGlv
bnMoKQogewotI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKLSAgICBpZiAobV9raW5ldGlj
QW5pbWF0aW9uKSB7Ci0gICAgICAgIG1fa2luZXRpY0FuaW1hdGlvbi0+c3RvcCgpOwotICAgICAg
ICBtX2tpbmV0aWNBbmltYXRpb24tPmNsZWFyU2Nyb2xsSGlzdG9yeSgpOwotICAgIH0KLSNlbmRp
ZgotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQotICAgIGlmIChtX3Ntb290aEFuaW1hdGlv
bikKLSAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnN0b3AoKTsKLSNlbmRpZgorICAgIG1fc2Ny
b2xsQ29udHJvbGxlci5zdG9wQW5pbWF0ZWRTY3JvbGwoKTsKIH0KIAogZmxvYXQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnBhZ2VTY2FsZUZhY3RvcigpCkBAIC0x
OTcsMzAgKzE2NSw2IEBAIGZsb2F0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVO
aWNvc2lhOjpwYWdlU2NhbGVGYWN0b3IoKQogICAgICAgICBkb3duY2FzdDxTY3JvbGxpbmdUcmVl
RnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKCkpLmZyYW1lU2NhbGVGYWN0b3IoKSA6
IDEuOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
OjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiBhbmltYXRpb24sIGNv
bnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQotewotI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5H
KQotICAgIGlmICgmYW5pbWF0aW9uID09IG1fa2luZXRpY0FuaW1hdGlvbi5nZXQoKSkgewotICAg
ICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCi0gICAgICAgICAgICBtX3Ntb290aEFuaW1hdGlv
bi0+c3RvcCgpOwotICAgIH0KLSNlbmRpZgotICAgIGF1dG8gdXBkYXRlU2NvcGUgPSBjcmVhdGVV
cGRhdGVTY29wZSgpOwotICAgIHNjcm9sbGluZ05vZGUoKS5zY3JvbGxUbyhwb3NpdGlvbik7Ci19
Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9s
bEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKQotewotfQotCi1TY3JvbGxFeHRlbnRz
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxFeHRlbnRz
Rm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpCi17Ci0gICAgcmV0dXJuIHsKLSAgICAgICAg
c2Nyb2xsaW5nTm9kZSgpLnRvdGFsQ29udGVudHNTaXplKCksCi0gICAgICAgIHNjcm9sbGluZ05v
ZGUoKS5zY3JvbGxhYmxlQXJlYVNpemUoKQotICAgIH07Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNPU0lB
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
Tmljb3NpYS5oCmluZGV4IDY5ZWViMWVlNjA2MTE1ZjNiMDcxNTljNTYyN2JhZGUxOGEyYmUxNzAu
LjYyNDUwMWQ2YTczMTkzOTVlZWJjMDJkMTNkNWNhZTUxODYyNTg4OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZU5pY29zaWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmgKQEAg
LTMxLDIxICszMSwxMiBAQAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpICYmIFVTRShOSUNP
U0lBKQogCiAjaW5jbHVkZSAiTmljb3NpYVBsYXRmb3JtTGF5ZXIuaCIKLSNpbmNsdWRlICJTY3Jv
bGxBbmltYXRpb24uaCIKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZS5oIgogI2luY2x1ZGUgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZS5oIgogCi0jaWYgRU5BQkxF
KEtJTkVUSUNfU0NST0xMSU5HKQotI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbktpbmV0aWMuaCIK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0jaW5jbHVkZSAiU2Nyb2xs
QW5pbWF0aW9uU21vb3RoLmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSA6IHB1YmxpYyBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLCBwdWJsaWMgU2Nyb2xsQW5pbWF0aW9uQ2xp
ZW50IHsKK2NsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhIDog
cHVibGljIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUgewogcHVibGljOgogICAg
IGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhKFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlJiwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQpOwogICAg
IHZpcnR1YWwgflNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhKCk7CkBA
IC01NywyNyArNDgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wU2Nyb2xsQW5pbWF0aW9ucygp
OwogCiBwcml2YXRlOgotICAgIGJvb2wgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQgeyBmYWxzZSB9
OwogICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpOwotCi0jaWYgRU5BQkxFKEtJTkVUSUNfU0NS
T0xMSU5HKQotICAgIHZvaWQgZW5zdXJlU2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpOwotI2VuZGlm
Ci0jaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgdm9pZCBlbnN1cmVTY3JvbGxBbmlt
YXRpb25TbW9vdGgoKTsKLSNlbmRpZgotCi0gICAgLy8gU2Nyb2xsQW5pbWF0aW9uQ2xpZW50Ci0g
ICAgdm9pZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29uc3Qg
RmxvYXRQb2ludCYgY3VycmVudFBvc2l0aW9uKSBmaW5hbDsKLSAgICB2b2lkIHNjcm9sbEFuaW1h
dGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKLSAgICBTY3JvbGxFeHRlbnRzIHNj
cm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7Ci0KLSNpZiBF
TkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCi0gICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbEFuaW1h
dGlvbktpbmV0aWM+IG1fa2luZXRpY0FuaW1hdGlvbjsKLSNlbmRpZgotI2lmIEVOQUJMRShTTU9P
VEhfU0NST0xMSU5HKQotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25TbW9vdGg+
IG1fc21vb3RoQW5pbWF0aW9uOwotI2VuZGlmCisgICAgYm9vbCBtX3Njcm9sbEFuaW1hdG9yRW5h
YmxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCmluZGV4IGM3NDg4NzA0YzhmZDY0
MDZlNTYxMTllYzViZGYyODA2NGY4ZGQyZDkuLjA0ZTY2NzMyMmFkZjY1MDc3YWU0YjgzYTgyNDM4
NWUyNTJkMmNhZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
V2hlZWxFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxF
dmVudC5oCkBAIC0xNzMsNyArMTczLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0VuZE9mTm9u
TW9tZW50dW1TY3JvbGwoKSBjb25zdDsKICAgICBib29sIGlzVHJhbnNpdGlvbmluZ1RvTW9tZW50
dW1TY3JvbGwoKSBjb25zdDsKLSAgICBGbG9hdFBvaW50IHN3aXBlVmVsb2NpdHkoKSBjb25zdDsK
KyAgICBGbG9hdFNpemUgc3dpcGVWZWxvY2l0eSgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBQTEFU
Rk9STShXSU4pCkBAIC0yNjIsMTAgKzI2MiwxMCBAQCBpbmxpbmUgYm9vbCBQbGF0Zm9ybVdoZWVs
RXZlbnQ6OmlzVHJhbnNpdGlvbmluZ1RvTW9tZW50dW1TY3JvbGwoKSBjb25zdAogICAgIHJldHVy
biBtX3BoYXNlID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpOb25lICYmIG1fbW9tZW50dW1Q
aGFzZSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZTo6QmVnYW47CiB9CiAKLWlubGluZSBGbG9h
dFBvaW50IFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0eSgpIGNvbnN0CitpbmxpbmUg
RmxvYXRTaXplIFBsYXRmb3JtV2hlZWxFdmVudDo6c3dpcGVWZWxvY2l0eSgpIGNvbnN0CiB7CiAg
ICAgLy8gVGhlIHN3aXBpbmcgdmVsb2NpdHkgaXMgc3RvcmVkIGluIHRoZSBkZWx0YXMgb2YgdGhl
IGV2ZW50IGRlY2xhcmluZyBpdC4KLSAgICByZXR1cm4gaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1
bVNjcm9sbCgpID8gRmxvYXRQb2ludChtX3doZWVsVGlja3NYLCBtX3doZWVsVGlja3NZKSA6IEZs
b2F0UG9pbnQoKTsKKyAgICByZXR1cm4gaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgp
ID8gRmxvYXRTaXplKG1fd2hlZWxUaWNrc1gsIG1fd2hlZWxUaWNrc1kpIDogRmxvYXRTaXplKCk7
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCmluZGV4IDVjNjRhZDdlMjc1ODFhNzQwNjA3MzJi
ZTlkYTcwZjljNTk0N2YzNmQuLjE1NTMxNThkMDU2YjZjZjUyNmY4NzJjZTE2ZGY1YjcyMWNkYWJj
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCkBAIC0yNiw2
ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2lu
Y2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNs
dWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgpAQCAtNDAsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uQ2xpZW50KCkgPSBkZWZhdWx0OwogCiAgICAgdmlydHVh
bCB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBG
bG9hdFBvaW50JiAvKiBjdXJyZW50T2Zmc2V0ICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsQW5pbWF0aW9uV2lsbFN0YXJ0KFNjcm9sbEFuaW1hdGlvbiYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikgeyB9CiAgICAgdmly
dHVhbCBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0
aW9uJikgPSAwOwogfTsKQEAgLTYyLDE2ICs2NCw0MyBAQCBwdWJsaWM6CiAgICAgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25UeXBlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wg
cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3RGVzdGluYXRpb25P
ZmZzZXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNBY3RpdmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX2lzQWN0aXZlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBk
aWRFbmQoKTsKKyAgICB9CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1
cm4gbV9pc0FjdGl2ZTsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxFeHRlbnRzKCkg
eyB9OwogICAgIAotICAgIC8vIFJldHVybnMgY3VycmVudCBvZmZzZXQuCi0gICAgdmlydHVhbCBG
bG9hdFBvaW50IHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgeyByZXR1cm4geyB9OyB9
OworICAgIEZsb2F0UG9pbnQgY3VycmVudE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dE9mZnNldDsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90
b25pY1RpbWUpID0gMDsKIAogcHJvdGVjdGVkOgorICAgIHZvaWQgZGlkU3RhcnQoTW9ub3Rvbmlj
VGltZSBjdXJyZW50VGltZSkKKyAgICB7CisgICAgICAgIG1fc3RhcnRUaW1lID0gY3VycmVudFRp
bWU7CisgICAgICAgIG1faXNBY3RpdmUgPSB0cnVlOworICAgICAgICBtX2NsaWVudC5zY3JvbGxB
bmltYXRpb25XaWxsU3RhcnQoKnRoaXMpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGRpZEVuZCgp
CisgICAgeworICAgICAgICBtX2lzQWN0aXZlID0gZmFsc2U7CisgICAgICAgIG1fY2xpZW50LnNj
cm9sbEFuaW1hdGlvbkRpZEVuZCgqdGhpcyk7CisgICAgfQorICAgIAorICAgIFNlY29uZHMgdGlt
ZVNpbmNlU3RhcnQoTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lOworICAgIH0KKwogICAgIFNjcm9s
bEFuaW1hdGlvbkNsaWVudCYgbV9jbGllbnQ7CiAgICAgY29uc3QgVHlwZSBtX2FuaW1hdGlvblR5
cGU7CisgICAgYm9vbCBtX2lzQWN0aXZlIHsgZmFsc2UgfTsKKyAgICBNb25vdG9uaWNUaW1lIG1f
c3RhcnRUaW1lOworICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50T2Zmc2V0OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsQW5pbWF0aW9uS2luZXRpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25LaW5ldGljLmNwcAppbmRleCBhOWI2NjU0YTZiYjY2NTk1ZDJlMzU3NjMwZDU0NGY0
ZGJiYjg1Y2EzLi44NzMwMDM1ZDYwMzcyOGVjMjBiYjY2ODc0Y2I3MWRmMmY1NDczY2FlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNw
cApAQCAtMjksMTAgKzI5LDYgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgog
Ci0jaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKLSNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291
cmNlUHJpb3JpdHkuaD4KLSNlbmRpZgotCiAvKgogICogUGVyQXhpc0RhdGEgaXMgYSBwb3J0IG9m
IEd0a0tpbmV0aWNTY3JvbGxpbmcgYXMgb2YgR1RLKyAzLjIwLAogICogbWltaWNraW5nIGl0cyBB
UEkgYW5kIGl0cyBiZWhhdmlvci4KQEAgLTY3LDEyICs2Myw5IEBACiAgKi8KIAogc3RhdGljIGNv
bnN0ZXhwciBkb3VibGUgZGVjZWxGcmljdGlvbiA9IDQ7Ci1zdGF0aWMgY29uc3RleHByIGRvdWJs
ZSBmcmFtZVJhdGUgPSA2MDsKIHN0YXRpYyBjb25zdGV4cHIgZG91YmxlIHZlbG9jaXR5QWNjdW11
bGF0aW9uRmxvb3IgPSAwLjMzOwogc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdmVsb2NpdHlBY2N1
bXVsYXRpb25DZWlsID0gMS4wOwogc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdmVsb2NpdHlBY2N1
bXVsYXRpb25NYXggPSA2LjA7Ci1zdGF0aWMgY29uc3RleHByIFNlY29uZHMgdGlja1RpbWUgPSAx
X3MgLyBmcmFtZVJhdGU7Ci1zdGF0aWMgY29uc3RleHByIFNlY29uZHMgbWluaW11bVRpbWVySW50
ZXJ2YWwgeyAxX21zIH07CiBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgc2Nyb2xsQ2FwdHVyZVRo
cmVzaG9sZCB7IDE1MF9tcyB9OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NywxMSArODAs
MTEgQEAgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6UGVyQXhpc0RhdGE6OlBlckF4aXNEYXRhKGRv
dWJsZSBsb3dlciwgZG91YmxlIHVwcGVyLCBkb3UKIHsKIH0KIAotYm9vbCBTY3JvbGxBbmltYXRp
b25LaW5ldGljOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbChTZWNvbmRzIHRpbWVEZWx0YSkK
K2Jvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwo
U2Vjb25kcyBlbGFwc2VkVGltZSkKIHsKICAgICBhdXRvIGxhc3RPZmZzZXQgPSBtX29mZnNldDsK
ICAgICBhdXRvIGxhc3RUaW1lID0gbV9lbGFwc2VkVGltZTsKLSAgICBtX2VsYXBzZWRUaW1lICs9
IHRpbWVEZWx0YTsKKyAgICBtX2VsYXBzZWRUaW1lID0gZWxhcHNlZFRpbWU7CiAKICAgICBkb3Vi
bGUgZXhwb25lbnRpYWxQYXJ0ID0gZXhwKC1kZWNlbEZyaWN0aW9uICogbV9lbGFwc2VkVGltZS52
YWx1ZSgpKTsKICAgICBtX29mZnNldCA9IG1fY29lZjEgKyBtX2NvZWYyICogZXhwb25lbnRpYWxQ
YXJ0OwpAQCAtMTA1LDcgKzk4LDcgQEAgYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQZXJB
eGlzRGF0YTo6YW5pbWF0ZVNjcm9sbChTZWNvbmRzIHRpbWVEZWx0YSkKICAgICAgICAgbV9vZmZz
ZXQgPSBtX3VwcGVyOwogICAgIH0KIAotICAgIGlmIChmYWJzKG1fdmVsb2NpdHkpIDwgMSB8fCAo
bGFzdFRpbWUgJiYgZmFicyhtX29mZnNldCAtIGxhc3RPZmZzZXQpIDwgMSkpIHsKKyAgICBpZiAo
ZmFicyhtX3ZlbG9jaXR5KSA8IDEgfHwgKGxhc3RUaW1lID4gMF9zICYmIGZhYnMobV9vZmZzZXQg
LSBsYXN0T2Zmc2V0KSA8IDEpKSB7CiAgICAgICAgIG1fb2Zmc2V0ID0gcm91bmQobV9vZmZzZXQp
OwogICAgICAgICBtX3ZlbG9jaXR5ID0gMDsKICAgICB9CkBAIC0xMTUsMjUgKzEwOCwxMSBAQCBi
b29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKFNl
Y29uZHMgdGltZURlbHRhKQogCiBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpTY3JvbGxBbmltYXRp
b25LaW5ldGljKFNjcm9sbEFuaW1hdGlvbkNsaWVudCYgY2xpZW50KQogICAgIDogU2Nyb2xsQW5p
bWF0aW9uKFR5cGU6OktpbmV0aWMsIGNsaWVudCkKLSAgICAsIG1fYW5pbWF0aW9uVGltZXIoUnVu
TG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6YW5pbWF0aW9u
VGltZXJGaXJlZCkKIHsKLSNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQotICAgIG1fYW5pbWF0aW9u
VGltZXIuc2V0UHJpb3JpdHkoV1RGOjpSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc3BsYXlSZWZy
ZXNoTW9uaXRvclRpbWVyKTsKLSNlbmRpZgogfQogCiBTY3JvbGxBbmltYXRpb25LaW5ldGljOjp+
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYygpID0gZGVmYXVsdDsKIAotdm9pZCBTY3JvbGxBbmltYXRp
b25LaW5ldGljOjpzdG9wKCkKLXsKLSAgICBtX2FuaW1hdGlvblRpbWVyLnN0b3AoKTsKLX0KLQot
Ym9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fYW5pbWF0aW9uVGltZXIuaXNBY3RpdmUoKTsKLX0KLQogdm9pZCBTY3JvbGxBbmltYXRp
b25LaW5ldGljOjphcHBlbmRUb1Njcm9sbEhpc3RvcnkoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50
JiBldmVudCkKIHsKICAgICBtX3Njcm9sbEhpc3RvcnkucmVtb3ZlQWxsTWF0Y2hpbmcoWyZldmVu
dF0gKFBsYXRmb3JtV2hlZWxFdmVudCYgb3RoZXJFdmVudCkgLT4gYm9vbCB7CkBAIC0xNDgsNyAr
MTI3LDcgQEAgdm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpjbGVhclNjcm9sbEhpc3Rvcnko
KQogICAgIG1fc2Nyb2xsSGlzdG9yeS5jbGVhcigpOwogfQogCi1GbG9hdFBvaW50IFNjcm9sbEFu
aW1hdGlvbktpbmV0aWM6OmNvbXB1dGVWZWxvY2l0eSgpCitGbG9hdFNpemUgU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYzo6Y29tcHV0ZVZlbG9jaXR5KCkKIHsKICAgICBpZiAobV9zY3JvbGxIaXN0b3J5
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTE2NiwyNSArMTQ1LDI0IEBAIEZs
b2F0UG9pbnQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6Y29tcHV0ZVZlbG9jaXR5KCkKICAgICAv
LyBGSVhNRTogSXQncyBvZGQgdGhhdCBjb21wdXRlVmVsb2NpdHkoKSBoYXMgdGhlIHNpZGUgZWZm
ZWN0IG9mIGNsZWFyaW5nIGhpc3RvcnkuCiAgICAgbV9zY3JvbGxIaXN0b3J5LmNsZWFyKCk7CiAK
LSAgICByZXR1cm4gRmxvYXRQb2ludChhY2N1bURlbHRhLngoKSAqIC0xIC8gKGxhc3QgLSBmaXJz
dCkudmFsdWUoKSwgYWNjdW1EZWx0YS55KCkgKiAtMSAvIChsYXN0IC0gZmlyc3QpLnZhbHVlKCkp
OworICAgIHJldHVybiBGbG9hdFNpemUoYWNjdW1EZWx0YS54KCkgKiAtMSAvIChsYXN0IC0gZmly
c3QpLnZhbHVlKCksIGFjY3VtRGVsdGEueSgpICogLTEgLyAobGFzdCAtIGZpcnN0KS52YWx1ZSgp
KTsKIH0KIAotYm9vbCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzdGFydEFuaW1hdGVkU2Nyb2xs
V2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25z
dCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwp
Citib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5p
dGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZsb2F0
U2l6ZSYgdmVsb2NpdHksIGJvb2wgbWF5SFNjcm9sbCwgYm9vbCBtYXlWU2Nyb2xsKQogewogICAg
IHN0b3AoKTsKIAotICAgIGlmICghdmVsb2NpdHkueCgpICYmICF2ZWxvY2l0eS55KCkpIHsKLSAg
ICAgICAgbV9vZmZzZXQgPSBpbml0aWFsT2Zmc2V0OworICAgIGlmICh2ZWxvY2l0eS5pc1plcm8o
KSkgewogICAgICAgICBtX2hvcml6b250YWxEYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICBt
X3ZlcnRpY2FsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGF1dG8gZGVsdGEgPSBkZWx0YVRvTmV4dEZyYW1lKCk7CisgICAgYXV0byBlbGFw
c2VkVGltZSA9IDBfczsKICAgICBhdXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRz
Rm9yQW5pbWF0aW9uKCp0aGlzKTsKIAogICAgIGF1dG8gYWNjdW11bGF0ZVZlbG9jaXR5ID0gWyZd
KGRvdWJsZSB2ZWxvY2l0eSwgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gYXhpc0RhdGEpIC0+
IGRvdWJsZSB7Ci0gICAgICAgIGlmIChheGlzRGF0YSAmJiBheGlzRGF0YS52YWx1ZSgpLmFuaW1h
dGVTY3JvbGwoZGVsdGEpKSB7CisgICAgICAgIGlmIChheGlzRGF0YSAmJiBheGlzRGF0YS52YWx1
ZSgpLmFuaW1hdGVTY3JvbGwoZWxhcHNlZFRpbWUpKSB7CiAgICAgICAgICAgICBkb3VibGUgbGFz
dFZlbG9jaXR5ID0gYXhpc0RhdGEudmFsdWUoKS52ZWxvY2l0eSgpOwogICAgICAgICAgICAgaWYg
KChzdGQ6OnNpZ25iaXQobGFzdFZlbG9jaXR5KSA9PSBzdGQ6OnNpZ25iaXQodmVsb2NpdHkpKQog
ICAgICAgICAgICAgICAgICYmIChzdGQ6OmFicyh2ZWxvY2l0eSkgPj0gc3RkOjphYnMobGFzdFZl
bG9jaXR5ICogdmVsb2NpdHlBY2N1bXVsYXRpb25GbG9vcikpKSB7CkBAIC0yMDEsMjAgKzE3OSwx
OSBAQCBib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRo
SW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UAogICAgIGlmIChtYXlIU2Nyb2xsKSB7CiAgICAg
ICAgIG1faG9yaXpvbnRhbERhdGEgPSBQZXJBeGlzRGF0YShleHRlbnRzLm1pbmltdW1TY3JvbGxP
ZmZzZXQoKS54KCksCiAgICAgICAgICAgICBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQoKS54
KCksCi0gICAgICAgICAgICBpbml0aWFsT2Zmc2V0LngoKSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZl
bG9jaXR5LngoKSwgbV9ob3Jpem9udGFsRGF0YSkpOworICAgICAgICAgICAgaW5pdGlhbE9mZnNl
dC54KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS53aWR0aCgpLCBtX2hvcml6b250YWxE
YXRhKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBzdGQ6Om51bGxv
cHQ7CiAKICAgICBpZiAobWF5VlNjcm9sbCkgewogICAgICAgICBtX3ZlcnRpY2FsRGF0YSA9IFBl
ckF4aXNEYXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNldCgpLnkoKSwKICAgICAgICAgICAg
IGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpLnkoKSwKLSAgICAgICAgICAgIGluaXRpYWxP
ZmZzZXQueSgpLCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2NpdHkueSgpLCBtX3ZlcnRpY2FsRGF0
YSkpOworICAgICAgICAgICAgaW5pdGlhbE9mZnNldC55KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2
ZWxvY2l0eS5oZWlnaHQoKSwgbV92ZXJ0aWNhbERhdGEpKTsKICAgICB9IGVsc2UKICAgICAgICAg
bV92ZXJ0aWNhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAKLSAgICBtX29mZnNldCA9IGluaXRpYWxP
ZmZzZXQ7Ci0gICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKSAtIHRpY2tUaW1l
IC8gMi47Ci0gICAgYW5pbWF0aW9uVGltZXJGaXJlZCgpOworICAgIG1fY3VycmVudE9mZnNldCA9
IGluaXRpYWxPZmZzZXQ7CisgICAgZGlkU3RhcnQoTW9ub3RvbmljVGltZTo6bm93KCkpOwogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0yMjcsMzAgKzIwNCwyMyBAQCBib29sIFNjcm9sbEFuaW1h
dGlvbktpbmV0aWM6OnJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjphbmlt
YXRpb25UaW1lckZpcmVkKCkKK3ZvaWQgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c2VydmljZUFu
aW1hdGlvbihNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKQogewotICAgIGF1dG8gZGVsdGEgPSBk
ZWx0YVRvTmV4dEZyYW1lKCk7CisgICAgYXV0byBlbGFwc2VkVGltZSA9IHRpbWVTaW5jZVN0YXJ0
KGN1cnJlbnRUaW1lKTsKIAotICAgIGlmIChtX2hvcml6b250YWxEYXRhICYmICFtX2hvcml6b250
YWxEYXRhLnZhbHVlKCkuYW5pbWF0ZVNjcm9sbChkZWx0YSkpCisgICAgaWYgKG1faG9yaXpvbnRh
bERhdGEgJiYgIW1faG9yaXpvbnRhbERhdGEudmFsdWUoKS5hbmltYXRlU2Nyb2xsKGVsYXBzZWRU
aW1lKSkKICAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIGlm
IChtX3ZlcnRpY2FsRGF0YSAmJiAhbV92ZXJ0aWNhbERhdGEudmFsdWUoKS5hbmltYXRlU2Nyb2xs
KGRlbHRhKSkKKyAgICBpZiAobV92ZXJ0aWNhbERhdGEgJiYgIW1fdmVydGljYWxEYXRhLnZhbHVl
KCkuYW5pbWF0ZVNjcm9sbChlbGFwc2VkVGltZSkpCiAgICAgICAgIG1fdmVydGljYWxEYXRhID0g
c3RkOjpudWxsb3B0OwogCi0gICAgLy8gSWYgb25lIG9mIHRoZSBheGVzIGRpZG4ndCBmaW5pc2gg
aXRzIGFuaW1hdGlvbiB3ZSBtdXN0IGNvbnRpbnVlIGl0LgotICAgIGlmIChtX2hvcml6b250YWxE
YXRhIHx8IG1fdmVydGljYWxEYXRhKQotICAgICAgICBtX2FuaW1hdGlvblRpbWVyLnN0YXJ0T25l
U2hvdChzdGQ6Om1heChtaW5pbXVtVGltZXJJbnRlcnZhbCwgZGVsdGEpKTsKKyAgICBkb3VibGUg
eCA9IG1faG9yaXpvbnRhbERhdGEgPyBtX2hvcml6b250YWxEYXRhLnZhbHVlKCkub2Zmc2V0KCkg
OiBtX2N1cnJlbnRPZmZzZXQueCgpOworICAgIGRvdWJsZSB5ID0gbV92ZXJ0aWNhbERhdGEgPyBt
X3ZlcnRpY2FsRGF0YS52YWx1ZSgpLm9mZnNldCgpIDogbV9jdXJyZW50T2Zmc2V0LnkoKTsKKyAg
ICBtX2N1cnJlbnRPZmZzZXQgPSBGbG9hdFBvaW50KHgsIHkpOworICAgIG1fY2xpZW50LnNjcm9s
bEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9jdXJyZW50T2Zmc2V0KTsKIAotICAgIGRvdWJs
ZSB4ID0gbV9ob3Jpem9udGFsRGF0YSA/IG1faG9yaXpvbnRhbERhdGEudmFsdWUoKS5vZmZzZXQo
KSA6IG1fb2Zmc2V0LngoKTsKLSAgICBkb3VibGUgeSA9IG1fdmVydGljYWxEYXRhID8gbV92ZXJ0
aWNhbERhdGEudmFsdWUoKS5vZmZzZXQoKSA6IG1fb2Zmc2V0LnkoKTsKLSAgICBtX29mZnNldCA9
IEZsb2F0UG9pbnQoeCwgeSk7Ci0gICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRl
KCp0aGlzLCBtX29mZnNldCk7Ci19Ci0KLVNlY29uZHMgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6
ZGVsdGFUb05leHRGcmFtZSgpCi17Ci0gICAgTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSA9IE1v
bm90b25pY1RpbWU6Om5vdygpOwotICAgIHJldHVybiAxX3MgKiBjZWlsKChjdXJyZW50VGltZSAt
IG1fc3RhcnRUaW1lKS52YWx1ZSgpICogZnJhbWVSYXRlKSAvIGZyYW1lUmF0ZSAtIChjdXJyZW50
VGltZSAtIG1fc3RhcnRUaW1lKTsKKyAgICBpZiAoIW1faG9yaXpvbnRhbERhdGEgJiYgIW1fdmVy
dGljYWxEYXRhKQorICAgICAgICBkaWRFbmQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2lu
ZXRpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5o
CmluZGV4IDE0MTNmMzMyODhlOWRlMmYzZDJlZGU2YTlmZGQyZTE3MTgxNGM4NWEuLmI3NGQ3NzAz
ZTY2OTVjODc4ZGUxMTM1YjRjOGRjMzgzNmVjZTgxMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAog
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb24uaCIKLSNp
bmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYxLDI4
ICs2MCwyMCBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYyhTY3JvbGxBbmlt
YXRpb25DbGllbnQmKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25LaW5ldGljKCk7CiAK
LSAgICAvLyBGSVhNRTogVmVsb2NpdHkgc2hvdWxkIGJlIGEgRmxvYXRTaXplLgotICAgIGJvb2wg
c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYg
aW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGJvb2wgbWF5SFNjcm9s
bCwgYm9vbCBtYXlWU2Nyb2xsKTsKLQorICAgIGJvb2wgc3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJ
bml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxv
YXRTaXplJiB2ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwpOwogICAg
IGJvb2wgcmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3T2Zmc2V0
KSBmaW5hbDsKLSAgICB2b2lkIHN0b3AoKSBmaW5hbDsKLSAgICBib29sIGlzQWN0aXZlKCkgY29u
c3QgZmluYWw7CisKKyAgICB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgZmlu
YWw7CiAKICAgICB2b2lkIGFwcGVuZFRvU2Nyb2xsSGlzdG9yeShjb25zdCBQbGF0Zm9ybVdoZWVs
RXZlbnQmKTsKICAgICB2b2lkIGNsZWFyU2Nyb2xsSGlzdG9yeSgpOwogCi0gICAgRmxvYXRQb2lu
dCBjb21wdXRlVmVsb2NpdHkoKTsKKyAgICBGbG9hdFNpemUgY29tcHV0ZVZlbG9jaXR5KCk7CiAK
IHByaXZhdGU6Ci0gICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7Ci0gICAgU2Vjb25kcyBk
ZWx0YVRvTmV4dEZyYW1lKCk7Ci0KICAgICBzdGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBtX2hv
cml6b250YWxEYXRhOwogICAgIHN0ZDo6b3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1fdmVydGljYWxE
YXRhOwogCi0gICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZTsKLSAgICBSdW5Mb29wOjpUaW1l
cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2FuaW1hdGlvblRpbWVyOwotICAgIEZsb2F0UG9p
bnQgbV9vZmZzZXQ7CiAgICAgVmVjdG9yPFBsYXRmb3JtV2hlZWxFdmVudD4gbV9zY3JvbGxIaXN0
b3J5OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uTW9tZW50dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
aW9uTW9tZW50dW0uY3BwCmluZGV4IGZhNTczNjkxNTRhMzg3OTQyOTMwZDZmODM1NWRlZjFjN2Zl
ZDA3M2UuLjIyMzg1ZTFmMGI5YjJjNThhOTAyZTc1ZDQ5MWYyYTQ0OGU3N2Y0ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5jcHAK
QEAgLTI3LDcgKzI3LDYgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTY3Jv
bGxpbmdNb21lbnR1bUNhbGN1bGF0b3IuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFt
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTIsNTUgKzUxLDQ5IEBAIGJvb2wgU2Ny
b2xsQW5pbWF0aW9uTW9tZW50dW06OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9j
aXR5KGNvbnN0IEZsb2F0CiAKICAgICBpZiAocHJlZGljdGVkU2Nyb2xsT2Zmc2V0ID09IGluaXRp
YWxPZmZzZXQpIHsKICAgICAgICAgbV9tb21lbnR1bUNhbGN1bGF0b3IgPSBudWxscHRyOwotICAg
ICAgICBtX2FuaW1hdGlvbkNvbXBsZXRlID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgbV9h
bmltYXRpb25Db21wbGV0ZSA9IGZhbHNlOworICAgIGRpZFN0YXJ0KE1vbm90b25pY1RpbWU6Om5v
dygpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBTY3JvbGxBbmltYXRpb25Nb21lbnR1
bTo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3RGVzdGluYXRp
b24pCiB7Ci0gICAgaWYgKG1fbW9tZW50dW1DYWxjdWxhdG9yKSB7CisgICAgaWYgKG1fbW9tZW50
dW1DYWxjdWxhdG9yICYmIGlzQWN0aXZlKCkpIHsKICAgICAgICAgbV9tb21lbnR1bUNhbGN1bGF0
b3ItPnNldFJldGFyZ2V0ZWRTY3JvbGxPZmZzZXQobmV3RGVzdGluYXRpb24pOwogICAgICAgICBh
dXRvIG5ld0R1cmF0aW9uID0gbV9tb21lbnR1bUNhbGN1bGF0b3ItPmFuaW1hdGlvbkR1cmF0aW9u
KCk7Ci0gICAgICAgIG1fYW5pbWF0aW9uQ29tcGxldGUgPSBuZXdEdXJhdGlvbiA+IDBfczsKLSAg
ICAgICAgcmV0dXJuICFtX2FuaW1hdGlvbkNvbXBsZXRlOworICAgICAgICBib29sIGFuaW1hdGlv
bkNvbXBsZXRlID0gbmV3RHVyYXRpb24gPiAwX3M7CisgICAgICAgIGlmIChhbmltYXRpb25Db21w
bGV0ZSkKKyAgICAgICAgICAgIGRpZEVuZCgpOworCisgICAgICAgIHJldHVybiAhYW5pbWF0aW9u
Q29tcGxldGU7CiAgICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFNjcm9sbEFu
aW1hdGlvbk1vbWVudHVtOjpzdG9wKCkKIHsKICAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IG51
bGxwdHI7Ci0gICAgbV9hbmltYXRpb25Db21wbGV0ZSA9IHRydWU7Ci0gICAgbV9jbGllbnQuc2Ny
b2xsQW5pbWF0aW9uRGlkRW5kKCp0aGlzKTsKLX0KLQotYm9vbCBTY3JvbGxBbmltYXRpb25Nb21l
bnR1bTo6aXNBY3RpdmUoKSBjb25zdAotewotICAgIHJldHVybiAhbV9hbmltYXRpb25Db21wbGV0
ZTsKKyAgICBTY3JvbGxBbmltYXRpb246OnN0b3AoKTsKIH0KIAotRmxvYXRQb2ludCBTY3JvbGxB
bmltYXRpb25Nb21lbnR1bTo6c2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lIGN1cnJlbnRU
aW1lKQordm9pZCBTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c2VydmljZUFuaW1hdGlvbihNb25v
dG9uaWNUaW1lIGN1cnJlbnRUaW1lKQogewogICAgIGlmICghbV9tb21lbnR1bUNhbGN1bGF0b3Ip
IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGVsYXBzZWRUaW1lID0gY3VycmVudFRp
bWUgLSBtX3N0YXJ0VGltZTsKLSAgICBtX2FuaW1hdGlvbkNvbXBsZXRlID0gZWxhcHNlZFRpbWUg
Pj0gbV9tb21lbnR1bUNhbGN1bGF0b3ItPmFuaW1hdGlvbkR1cmF0aW9uKCk7CisgICAgYXV0byBl
bGFwc2VkVGltZSA9IHRpbWVTaW5jZVN0YXJ0KGN1cnJlbnRUaW1lKTsKKyAgICBib29sIGFuaW1h
dGlvbkNvbXBsZXRlID0gZWxhcHNlZFRpbWUgPj0gbV9tb21lbnR1bUNhbGN1bGF0b3ItPmFuaW1h
dGlvbkR1cmF0aW9uKCk7CiAgICAgYXV0byBuZXdPZmZzZXQgPSBtX21vbWVudHVtQ2FsY3VsYXRv
ci0+c2Nyb2xsT2Zmc2V0QWZ0ZXJFbGFwc2VkVGltZShlbGFwc2VkVGltZSk7CiAKICAgICBtX2Ns
aWVudC5zY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoKnRoaXMsIG5ld09mZnNldCk7CiAKLSAgICBp
ZiAobV9hbmltYXRpb25Db21wbGV0ZSkKLSAgICAgICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9u
RGlkRW5kKCp0aGlzKTsKLSAgICAKLSAgICByZXR1cm4gbmV3T2Zmc2V0OworICAgIGlmIChhbmlt
YXRpb25Db21wbGV0ZSkKKyAgICAgICAgZGlkRW5kKCk7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0
aW9uTW9tZW50dW06OnVwZGF0ZVNjcm9sbEV4dGVudHMoKQpAQCAtMTA4LDExICsxMDEsOCBAQCB2
b2lkIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjp1cGRhdGVTY3JvbGxFeHRlbnRzKCkKICAgICBh
dXRvIGV4dGVudHMgPSBtX2NsaWVudC5zY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKCp0aGlzKTsK
ICAgICBhdXRvIHByZWRpY3RlZFNjcm9sbE9mZnNldCA9IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5w
cmVkaWN0ZWREZXN0aW5hdGlvbk9mZnNldCgpOwogICAgIGF1dG8gY29uc3RyYWluZWRPZmZzZXQg
PSBwcmVkaWN0ZWRTY3JvbGxPZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVuKGV4dGVudHMubWluaW11
bVNjcm9sbE9mZnNldCgpLCBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQoKSk7Ci0gICAgaWYg
KGNvbnN0cmFpbmVkT2Zmc2V0ICE9IHByZWRpY3RlZFNjcm9sbE9mZnNldCkgeworICAgIGlmIChj
b25zdHJhaW5lZE9mZnNldCAhPSBwcmVkaWN0ZWRTY3JvbGxPZmZzZXQpCiAgICAgICAgIHJldGFy
Z2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0cmFpbmVkT2Zmc2V0KTsKLSAgICAgICAgaWYgKG1fYW5p
bWF0aW9uQ29tcGxldGUpCi0gICAgICAgICAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRF
bmQoKnRoaXMpOwotICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmgKaW5kZXggNjY0
MmRjYjU0NmVmZDkwOTM5YjhmZjUyMTgwZmIwMzkwOTNkYjRlZC4uNWM5YmU5MTM0MWQ2NzI0ZWM1
MDY5NzRiMjczZWYxNzljZjk3Mjk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oCkBAIC0zNiwxOCArMzYsMTMgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbk1vbWVudHVtKCk7CiAKICAgICBib29sIHN0YXJ0
QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRp
YWxPZmZzZXQsIGNvbnN0IEZsb2F0U2l6ZSYgaW5pdGlhbFZlbG9jaXR5LCBjb25zdCBGbG9hdFNp
emUmIGluaXRpYWxEZWx0YSwgY29uc3QgV1RGOjpGdW5jdGlvbjxGbG9hdFBvaW50KGNvbnN0IEZs
b2F0UG9pbnQmKT4mIGRlc3RpbmF0aW9uTW9kaWZpZXIpOwotCiAgICAgYm9vbCByZXRhcmdldEFj
dGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5hdGlvbikgZmluYWw7CiAg
ICAgdm9pZCBzdG9wKCkgZmluYWw7Ci0gICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZpbmFsOwot
ICAgIEZsb2F0UG9pbnQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKKyAg
ICB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgZmluYWw7CiAgICAgdm9pZCB1
cGRhdGVTY3JvbGxFeHRlbnRzKCkgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFNjcm9sbGluZ01vbWVudHVtQ2FsY3VsYXRvcj4gbV9tb21lbnR1bUNhbGN1bGF0b3I7Ci0g
ICAgCi0gICAgTW9ub3RvbmljVGltZSBtX3N0YXJ0VGltZTsKLSAgICBib29sIG1fYW5pbWF0aW9u
Q29tcGxldGUgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKaW5kZXgg
YjA2ZjJmMjRlYTU3NTEyNTA0ZjcyMjFkMGI5YjIyYmE4MjA5MzJiNS4uMDM2NjJiYzYyNDhiMTg5
ZTE2NmEzMzM5ZmMwMzA1YTEzYzhmZWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCkBAIC0zMywyNSArMzMsMTUgQEAKICNpbmNs
dWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlRpbWluZ0Z1bmN0aW9uLmgiCiAKLSNp
ZiBVU0UoR0xJQl9FVkVOVF9MT09QKQotI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQ
cmlvcml0eS5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0
IGRvdWJsZSBmcmFtZVJhdGUgPSA2MDsKIHN0YXRpYyBjb25zdCBmbG9hdCBhbmltYXRpb25TcGVl
ZCB7IDEwMDAuMGYgfTsKLXN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBtaW5pbXVtVGltZXJJbnRl
cnZhbCB7IDFfbXMgfTsKIHN0YXRpYyBjb25zdCBTZWNvbmRzIG1heEFuaW1hdGlvbkR1cmF0aW9u
IHsgMjAwX21zIH07CiAKIFNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9uU21v
b3RoKFNjcm9sbEFuaW1hdGlvbkNsaWVudCYgY2xpZW50KQogICAgIDogU2Nyb2xsQW5pbWF0aW9u
KFR5cGU6OlNtb290aCwgY2xpZW50KQotICAgICwgbV9hbmltYXRpb25UaW1lcihSdW5Mb29wOjpj
dXJyZW50KCksIHRoaXMsICZTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGlvblRpbWVyRmly
ZWQpCiAgICAgLCBtX2Vhc2VJbk91dFRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVu
Y3Rpb246OmNyZWF0ZShDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpUaW1pbmdGdW5jdGlvblBy
ZXNldDo6RWFzZUluT3V0KSkKIHsKLSNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQotICAgIG1fYW5p
bWF0aW9uVGltZXIuc2V0UHJpb3JpdHkoV1RGOjpSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc3Bs
YXlSZWZyZXNoTW9uaXRvclRpbWVyKTsKLSNlbmRpZgogfQogCiBTY3JvbGxBbmltYXRpb25TbW9v
dGg6On5TY3JvbGxBbmltYXRpb25TbW9vdGgoKSA9IGRlZmF1bHQ7CkBAIC03OSwxNyArNjksMTAg
QEAgYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihj
b25zdCBTY3JvbGxFeHRlbnRzJiBleHRlbnQKICAgICBtX2Rlc3RpbmF0aW9uT2Zmc2V0ID0gZGVz
dGluYXRpb25PZmZzZXQuY29uc3RyYWluZWRCZXR3ZWVuKGV4dGVudHMubWluaW11bVNjcm9sbE9m
ZnNldCgpLCBleHRlbnRzLm1heGltdW1TY3JvbGxPZmZzZXQoKSk7CiAgICAgYm9vbCBuZWVkVG9T
Y3JvbGwgPSBtX3N0YXJ0T2Zmc2V0ICE9IG1fZGVzdGluYXRpb25PZmZzZXQ7CiAKLSAgICBpZiAo
bmVlZFRvU2Nyb2xsICYmICFpc0FjdGl2ZSgpKSB7Ci0gICAgICAgIG1fc3RhcnRUaW1lID0gTW9u
b3RvbmljVGltZTo6bm93KCk7Ci0gICAgICAgIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIG5lZWRUb1Njcm9sbDsKLX0KKyAgICBpZiAobmVlZFRvU2Nyb2xsICYmICFp
c0FjdGl2ZSgpKQorICAgICAgICBkaWRTdGFydChNb25vdG9uaWNUaW1lOjpub3coKSk7CiAKLXZv
aWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdG9wKCkKLXsKLSAgICBtX2FuaW1hdGlvblRpbWVy
LnN0b3AoKTsKLSAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRFbmQoKnRoaXMpOworICAg
IHJldHVybiBuZWVkVG9TY3JvbGw7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjp1
cGRhdGVTY3JvbGxFeHRlbnRzKCkKQEAgLTExMCw2ICs5MywxNCBAQCBpbmxpbmUgZmxvYXQgbGlu
ZWFySW50ZXJwb2xhdGlvbihmbG9hdCBwcm9ncmVzcywgZmxvYXQgYSwgZmxvYXQgYikKICAgICBy
ZXR1cm4gYSArIHByb2dyZXNzICogKGIgLSBhKTsKIH0KIAordm9pZCBTY3JvbGxBbmltYXRpb25T
bW9vdGg6OnNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSkKK3sKKyAg
ICBib29sIGFuaW1hdGlvbkFjdGl2ZSA9IGFuaW1hdGVTY3JvbGwoY3VycmVudFRpbWUpOworICAg
IG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgbV9jdXJyZW50T2Zmc2V0
KTsKKyAgICBpZiAoIWFuaW1hdGlvbkFjdGl2ZSkKKyAgICAgICAgZGlkRW5kKCk7Cit9CisKIGJv
b2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmltYXRlU2Nyb2xsKE1vbm90b25pY1RpbWUgY3Vy
cmVudFRpbWUpCiB7CiAgICAgTW9ub3RvbmljVGltZSBlbmRUaW1lID0gbV9zdGFydFRpbWUgKyBt
X2R1cmF0aW9uOwpAQCAtMTI2LDI5ICsxMTcsNCBAQCBib29sIFNjcm9sbEFuaW1hdGlvblNtb290
aDo6YW5pbWF0ZVNjcm9sbChNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKQogICAgIHJldHVybiBj
dXJyZW50VGltZSA8IGVuZFRpbWU7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjph
bmltYXRpb25UaW1lckZpcmVkKCkKLXsKLSAgICBNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lID0g
TW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgU2Vjb25kcyBkZWx0YVRvTmV4dEZyYW1lID0gMV9z
ICogY2VpbCgoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZSkudmFsdWUoKSAqIGZyYW1lUmF0ZSkg
LyBmcmFtZVJhdGUgLSAoY3VycmVudFRpbWUgLSBtX3N0YXJ0VGltZSk7Ci0gICAgY3VycmVudFRp
bWUgKz0gZGVsdGFUb05leHRGcmFtZTsKLQotICAgIGJvb2wgY29udGludWVBbmltYXRpb24gPSBh
bmltYXRlU2Nyb2xsKGN1cnJlbnRUaW1lKTsKLSAgICBpZiAoY29udGludWVBbmltYXRpb24pCi0g
ICAgICAgIHN0YXJ0TmV4dFRpbWVyKHN0ZDo6bWF4KG1pbmltdW1UaW1lckludGVydmFsLCBkZWx0
YVRvTmV4dEZyYW1lKSk7Ci0KLSAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRVcGRhdGUo
KnRoaXMsIG1fY3VycmVudE9mZnNldCk7Ci0gICAgaWYgKCFjb250aW51ZUFuaW1hdGlvbikKLSAg
ICAgICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkRW5kKCp0aGlzKTsKLX0KLQotdm9pZCBT
Y3JvbGxBbmltYXRpb25TbW9vdGg6OnN0YXJ0TmV4dFRpbWVyKFNlY29uZHMgZGVsYXkpCi17Ci0g
ICAgbV9hbmltYXRpb25UaW1lci5zdGFydE9uZVNob3QoZGVsYXkpOwotfQotCi1ib29sIFNjcm9s
bEFuaW1hdGlvblNtb290aDo6aXNBY3RpdmUoKSBjb25zdAotewotICAgIHJldHVybiBtX2FuaW1h
dGlvblRpbWVyLmlzQWN0aXZlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKaW5kZXggMWQy
MzRhMjkyZDc3NjY5ODgzMTdjMTgwZmE1NDk1ZDY1NWRiZmE4Mi4uZDE3ZjI5NDE5ZmUyODVmYzZl
NWY1ZTg1YzMxZTAxMmFkNThiODFhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKQEAgLTI4LDggKzI4LDYgQEAKIAogI2luY2x1ZGUgIlNj
cm9sbEFuaW1hdGlvbi5oIgogCi0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdFBvaW50OwpAQCAtNDEsMzMgKzM5LDIzIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25TbW9vdGgoKTsKIAogICAgIGJvb2wgc3Rh
cnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oY29uc3QgRmxvYXRQb2ludCYgZnJvbU9mZnNl
dCwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb25PZmZzZXQpOwotCiAgICAgYm9vbCByZXRh
cmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdPZmZzZXQpIGZpbmFsOwot
ICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlU2Nyb2xsRXh0ZW50cygpIGZp
bmFsOwotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBmaW5hbDsKLQogCiBwcml2YXRlOgotICAg
IGJvb2wgc3RhcnRPclJldGFyZ2V0QW5pbWF0aW9uKGNvbnN0IFNjcm9sbEV4dGVudHMmLCBjb25z
dCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbk9mZnNldCk7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxF
eHRlbnRzKCkgZmluYWw7CisgICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUp
IGZpbmFsOwogCi0gICAgdm9pZCByZXF1ZXN0QW5pbWF0aW9uVGltZXJGaXJlZCgpOwotICAgIHZv
aWQgc3RhcnROZXh0VGltZXIoU2Vjb25kcyBkZWxheSk7Ci0gICAgdm9pZCBhbmltYXRpb25UaW1l
ckZpcmVkKCk7CisgICAgYm9vbCBzdGFydE9yUmV0YXJnZXRBbmltYXRpb24oY29uc3QgU2Nyb2xs
RXh0ZW50cyYsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KTsKICAgICAKICAg
ICBTZWNvbmRzIGR1cmF0aW9uRnJvbURpc3RhbmNlKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0Owog
ICAgIAogICAgIGJvb2wgYW5pbWF0ZVNjcm9sbChNb25vdG9uaWNUaW1lKTsKIAotICAgIE1vbm90
b25pY1RpbWUgbV9zdGFydFRpbWU7CiAgICAgU2Vjb25kcyBtX2R1cmF0aW9uOwogCiAgICAgRmxv
YXRQb2ludCBtX3N0YXJ0T2Zmc2V0OwogICAgIEZsb2F0UG9pbnQgbV9kZXN0aW5hdGlvbk9mZnNl
dDsKLSAgICBGbG9hdFBvaW50IG1fY3VycmVudE9mZnNldDsKLSAgICAKLSAgICAvLyBGSVhNRTog
U2hvdWxkIG5vdCBoYXZlIHRpbWVyIGhlcmUsIGFuZCBpbnN0ZWFkIHVzZSBzZXJ2aWNlQW5pbWF0
aW9uKCkuCi0gICAgUnVuTG9vcDo6VGltZXI8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX2FuaW1h
dGlvblRpbWVyOworCiAgICAgUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBtX2Vhc2VJbk91dFRpbWlu
Z0Z1bmN0aW9uOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCmluZGV4IDc5ODU1YTMxNDZhZmYxMzAzNTM4NjVk
NjdhMWExMDljNzY4OWRiMTguLjJkOTQzNDEzZjlhZWFlZWE5OWRkMTZhMzRkNGEwZjJkZmFmYWUx
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlci5jcHAKQEAgLTQ4LDE0ICs0OCwyMyBAQCB2b2lkIFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjphbmltYXRpb25DYWxsYmFjayhNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1l
KQogewogICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgYW5pbWF0aW9uQ2FsbGJhY2s6IGlzQW5p
bWF0aW5nUnViYmVyQmFuZCAiIDw8IG1faXNBbmltYXRpbmdSdWJiZXJCYW5kIDw8ICIgaXNBbmlt
YXRpbmdTY3JvbGxTbmFwICIgPDwgbV9pc0FuaW1hdGluZ1Njcm9sbFNuYXAgPDwgImlzQW5pbWF0
aW5nS2V5Ym9hcmRTY3JvbGxpbmciIDw8IG1faXNBbmltYXRpbmdLZXlib2FyZFNjcm9sbGluZyk7
CiAKLSAgICB1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3RhdGUoY3VycmVudFRpbWUpOworICAg
IGlmIChtX2N1cnJlbnRBbmltYXRpb24pIHsKKyAgICAgICAgaWYgKG1fY3VycmVudEFuaW1hdGlv
bi0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAgIG1fY3VycmVudEFuaW1hdGlvbi0+c2VydmljZUFu
aW1hdGlvbihjdXJyZW50VGltZSk7CisKKyAgICAgICAgaWYgKG1fY3VycmVudEFuaW1hdGlvbiAm
JiAhbV9jdXJyZW50QW5pbWF0aW9uLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9jdXJyZW50
QW5pbWF0aW9uID0gbnVsbHB0cjsKKyAgICB9CisKICAgICB1cGRhdGVSdWJiZXJCYW5kQW5pbWF0
aW5nU3RhdGUoY3VycmVudFRpbWUpOwogICAgIHVwZGF0ZUtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0
aW5nU3RhdGUoY3VycmVudFRpbWUpOworICAgIAorICAgIHN0YXJ0T3JTdG9wQW5pbWF0aW9uQ2Fs
bGJhY2tzKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0T3JT
dG9wQW5pbWF0aW9uQ2FsbGJhY2tzKCkKIHsKLSAgICBib29sIG5lZWRzQ2FsbGJhY2tzID0gbV9p
c0FuaW1hdGluZ1J1YmJlckJhbmQgfHwgbV9pc0FuaW1hdGluZ1Njcm9sbFNuYXAgfHwgbV9pc0Fu
aW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nOworICAgIGJvb2wgbmVlZHNDYWxsYmFja3MgPSBtX2lz
QW5pbWF0aW5nUnViYmVyQmFuZCB8fCBtX2lzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcgfHwg
bV9jdXJyZW50QW5pbWF0aW9uOwogICAgIGlmIChuZWVkc0NhbGxiYWNrcyA9PSBtX2lzUnVubmlu
Z0FuaW1hdGluZ0NhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKQEAgLTg0LDYgKzkzLDggQEAg
Ym9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVz
dGluYXRpb24oRmxvYXRQb2ludCBzdGEKICAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uKQogICAg
ICAgICBtX2N1cnJlbnRBbmltYXRpb24tPnN0b3AoKTsKIAorICAgIC8vIFdlIGFsd2F5cyBjcmVh
dGUgYW5kIGF0dGVtcHQgdG8gc3RhcnQgdGhlIGFuaW1hdGlvbi4gSWYgaXQgdHVybnMgb3V0IHRv
IG5vdCBuZWVkIGFuaW1hdGluZywgdGhlbiB0aGUgYW5pbWF0aW9uCisgICAgLy8gcmVtYWlucyBp
bmFjdGl2ZSwgYW5kIHdlJ2xsIHJlbW92ZSBpdCBvbiB0aGUgbmV4dCBhbmltYXRpb25DYWxsYmFj
aygpLgogICAgIG1fY3VycmVudEFuaW1hdGlvbiA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9u
U21vb3RoPigqdGhpcyk7CiAgICAgcmV0dXJuIGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblNtb290
aD4oKm1fY3VycmVudEFuaW1hdGlvbikuc3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24o
c3RhcnRPZmZzZXQsIGRlc3RpbmF0aW9uT2Zmc2V0KTsKIH0KQEAgLTI1NCw2ICsyNjUsMzUgQEAg
dm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6cmVzbmFwQWZ0ZXJMYXlvdXQoKQogICAg
ICAgICBtX2FjdGl2ZVNjcm9sbFNuYXBJbmRleERpZENoYW5nZSA9IHRydWU7CiB9CiAKK3ZvaWQg
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigpCit7
CisgICAgaWYgKG1faXNBbmltYXRpbmdTY3JvbGxTbmFwKQorICAgICAgICByZXR1cm47CisKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiBzdGFydFNjcm9sbFNuYXBBbmltYXRpb24gKG1haW4g
dGhyZWFkICIgPDwgaXNNYWluVGhyZWFkKCkgPDwgIikiKTsKKworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBzdGFydERlZmVycmluZ1doZWVsRXZlbnRUZXN0Q29tcGxldGlvbkR1ZVRvU2Nyb2xsU25h
cHBpbmcoKTsKKyNlbmRpZgorICAgIG1fY2xpZW50LndpbGxTdGFydFNjcm9sbFNuYXBBbmltYXRp
b24oKTsKKyAgICBzZXRJc0FuaW1hdGluZ1Njcm9sbFNuYXAodHJ1ZSk7Cit9CisKK3ZvaWQgU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkKK3sKKyAg
ICBpZiAoIW1faXNBbmltYXRpbmdTY3JvbGxTbmFwKQorICAgICAgICByZXR1cm47CisKKyAgICBM
T0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlciAiIDw8IHRoaXMgPDwgIiBzdG9wU2Nyb2xsU25hcEFuaW1hdGlvbiAobWFpbiB0aHJl
YWQgIiA8PCBpc01haW5UaHJlYWQoKSA8PCAiKSIpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAg
IHN0b3BEZWZlcnJpbmdXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5n
KCk7CisjZW5kaWYKKyAgICBtX2NsaWVudC5kaWRTdG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpOwor
CisgICAgc2V0SXNBbmltYXRpbmdTY3JvbGxTbmFwKGZhbHNlKTsKK30KKwogdm9pZCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRpbmdTdGF0
ZShNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKQogewogICAgIGlmICghbV9pc0FuaW1hdGluZ0tl
eWJvYXJkU2Nyb2xsaW5nKQpAQCAtMjc0LDkgKzMxNCwyMCBAQCB2b2lkIFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwg
Y29ucwogICAgIHNjcm9sbFRvT2Zmc2V0Rm9yQW5pbWF0aW9uKGN1cnJlbnRPZmZzZXQpOwogfQog
Cit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25XaWxsU3Rh
cnQoU2Nyb2xsQW5pbWF0aW9uJikKK3sKKyAgICBzdGFydE9yU3RvcEFuaW1hdGlvbkNhbGxiYWNr
cygpOworfQorCiB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRp
b25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikKIHsKKyAgICBpZiAodXNlc1Njcm9sbFNuYXAoKSAm
JiBtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCkgeworICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZS0+
dHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKKyAgICAgICAgc3RvcFNjcm9s
bFNuYXBBbmltYXRpb24oKTsKKyAgICB9CisKICAgICBtX2NsaWVudC5zZXRTY3JvbGxCZWhhdmlv
clN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1czo6Tm90SW5BbmltYXRpb24pOworICAgIHN0YXJ0
T3JTdG9wQW5pbWF0aW9uQ2FsbGJhY2tzKCk7CiB9CiAKIFNjcm9sbEV4dGVudHMgU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0
aW9uJikKQEAgLTI5OSwxNCArMzUwLDggQEAgdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
cjo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkKIHsKIH0KIAotdm9pZCBTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUp
Ci17Ci0KLX0KLQogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlUnViYmVy
QmFuZEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUpCiB7Ci0KIH0KIAogI2VuZGlmIC8vIFBM
QVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlci5oCmluZGV4IDcwYzE4ZWZkM2JkNDk3NGIxM2VmMzdlZmUxOWQ1Y2Uw
ZTNjYmUyYWUuLmI2MjRiMDI2NTFlZGY2Njc2NzY5NWRlNWVmMTdlZGQ2ZDQwZTMyYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXIuaApAQCAtMTgzLDcgKzE4Myw2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAg
IHZvaWQgdXBkYXRlU2Nyb2xsU25hcEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUpOwogICAg
IHZvaWQgdXBkYXRlUnViYmVyQmFuZEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUpOwogICAg
IHZvaWQgdXBkYXRlS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNUaW1l
KTsKIApAQCAtMTkxLDEwICsxOTAsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldElzQW5pbWF0
aW5nU2Nyb2xsU25hcChib29sKTsKICAgICB2b2lkIHNldElzQW5pbWF0aW5nS2V5Ym9hcmRTY3Jv
bGxpbmcoYm9vbCk7CiAKLSNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBzdGFydFNjcm9sbFNu
YXBBbmltYXRpb24oKTsKICAgICB2b2lkIHN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCk7CiAKKyNp
ZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBzaG91bGRPdmVycmlkZU1vbWVudHVtU2Nyb2xsaW5n
KCkgY29uc3Q7CiAgICAgdm9pZCBzdGF0ZWxlc3NTbmFwVHJhbnNpdGlvblRpbWVyRmlyZWQoKTsK
ICAgICB2b2lkIHNjaGVkdWxlU3RhdGVsZXNzU2Nyb2xsU25hcCgpOwpAQCAtMjE3LDYgKzIxNiw3
IEBAIHByaXZhdGU6CiAKICAgICAvLyBTY3JvbGxBbmltYXRpb25DbGllbnQKICAgICB2b2lkIHNj
cm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25zdCBGbG9hdFBvaW50
JiAvKiBjdXJyZW50T2Zmc2V0ICovKSBmaW5hbDsKKyAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbldp
bGxTdGFydChTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKICAgICB2b2lkIHNjcm9sbEFuaW1hdGlv
bkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSBmaW5hbDsKICAgICBTY3JvbGxFeHRlbnRzIHNjcm9s
bEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikgIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXIubW0KaW5kZXggMjczOTU4YjdmMTcwMDY2OGZlYjdlNjE0NDYzY2IxZmMzZWQ0Yjc5ZC4u
ZjBiMmNmZDA3NzU1OTJkZmI1ZWJlNTZjMzhmNWM0YTM1NmQxMDJmOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5tbQpAQCAtNjkwLDggKzY5MCwxMCBAQCBib29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
Ojpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9sbFNuYXAoY29uc3QgUGxhdGZvcm1XaAogICAgICAg
ICAgICAgc3RhcnRTY3JvbGxTbmFwQW5pbWF0aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgV2hlZWxFdmVudFN0YXR1czo6TW9tZW50dW1TY3JvbGxCZWdpbjoKLSAgICAgICAgaWYgKG1f
c2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRlKG1fY2xpZW50
LnNjcm9sbEV4dGVudHMoKSwgbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCksIG1fY2xpZW50LnNj
cm9sbE9mZnNldCgpLCBtX2RyYWdFbmRlZFNjcm9sbGluZ1ZlbG9jaXR5LCBGbG9hdFNpemUoLXdo
ZWVsRXZlbnQuZGVsdGFYKCksIC13aGVlbEV2ZW50LmRlbHRhWSgpKSkpCisgICAgICAgIGlmICht
X3Njcm9sbFNuYXBTdGF0ZS0+dHJhbnNpdGlvblRvR2xpZGVBbmltYXRpb25TdGF0ZShtX2NsaWVu
dC5zY3JvbGxFeHRlbnRzKCksIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3RvcigpLCBtX2NsaWVudC5z
Y3JvbGxPZmZzZXQoKSwgbV9kcmFnRW5kZWRTY3JvbGxpbmdWZWxvY2l0eSwgRmxvYXRTaXplKC13
aGVlbEV2ZW50LmRlbHRhWCgpLCAtd2hlZWxFdmVudC5kZWx0YVkoKSkpKSB7CisgICAgICAgICAg
ICBzdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKTsKICAgICAgICAgICAgIGlzTW9tZW50dW1TY3Jv
bGxpbmcgPSB0cnVlOworICAgICAgICB9CiAgICAgICAgIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVs
b2NpdHkgPSB7IH07CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2hlZWxFdmVudFN0YXR1czo6
TW9tZW50dW1TY3JvbGxpbmc6CkBAIC03MjAsNjIgKzcyMiw2IEBAIHZvaWQgU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZUdlc3R1cmVJblByb2dyZXNzU3RhdGUoY29uc3QgUGxhdGZv
cm1XaGVlCiAgICAgdXBkYXRlUnViYmVyQmFuZGluZ1N0YXRlKCk7CiB9CiAKLXZvaWQgU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigpCi17Ci0gICAg
aWYgKG1faXNBbmltYXRpbmdTY3JvbGxTbmFwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlciAiIDw8IHRoaXMgPDwgIiBzdGFydFNjcm9sbFNuYXBBbmltYXRpb24gKG1haW4gdGhyZWFk
ICIgPDwgaXNNYWluVGhyZWFkKCkgPDwgIikiKTsKLQotICAgIHN0YXJ0RGVmZXJyaW5nV2hlZWxF
dmVudFRlc3RDb21wbGV0aW9uRHVlVG9TY3JvbGxTbmFwcGluZygpOwotICAgIG1fY2xpZW50Lndp
bGxTdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKTsKLSAgICBzZXRJc0FuaW1hdGluZ1Njcm9sbFNu
YXAodHJ1ZSk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BTY3Jv
bGxTbmFwQW5pbWF0aW9uKCkKLXsKLSAgICBpZiAoIW1faXNBbmltYXRpbmdTY3JvbGxTbmFwKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFt
IDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiBzdG9wU2Nyb2xs
U25hcEFuaW1hdGlvbiAobWFpbiB0aHJlYWQgIiA8PCBpc01haW5UaHJlYWQoKSA8PCAiKSIpOwot
Ci0gICAgc3RvcERlZmVycmluZ1doZWVsRXZlbnRUZXN0Q29tcGxldGlvbkR1ZVRvU2Nyb2xsU25h
cHBpbmcoKTsKLSAgICBtX2NsaWVudC5kaWRTdG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpOwotCi0g
ICAgc2V0SXNBbmltYXRpbmdTY3JvbGxTbmFwKGZhbHNlKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25hcEFuaW1hdGluZ1N0YXRlKE1vbm90b25p
Y1RpbWUgY3VycmVudFRpbWUpCi17Ci0gICAgaWYgKCFtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF1c2VzU2Nyb2xsU25hcCgpKSB7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KCFpczxTY3JvbGxBbmltYXRpb25Nb21lbnR1bT4obV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkg
ewotICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZS0+dHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFj
aGVkU3RhdGUoKTsKLSAgICAgICAgc3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8mIG1vbWVudHVtU2Nyb2xsQW5pbWF0aW9uID0gZG93
bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0+KCptX2N1cnJlbnRBbmltYXRpb24pOwotCi0g
ICAgYXV0byBhbmltYXRpb25PZmZzZXQgPSBtb21lbnR1bVNjcm9sbEFuaW1hdGlvbi5zZXJ2aWNl
QW5pbWF0aW9uKGN1cnJlbnRUaW1lKTsKLSAgICBib29sIGlzQW5pbWF0aW9uQ29tcGxldGUgPSAh
bW9tZW50dW1TY3JvbGxBbmltYXRpb24uaXNBY3RpdmUoKTsKLQotICAgIExPR19XSVRIX1NUUkVB
TShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIgPDwg
dGhpcyA8PCAiIHVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZSAtIGlzQW5pbWF0aW9uQ29t
cGxldGUgIiA8PCBpc0FuaW1hdGlvbkNvbXBsZXRlIDw8ICIgYW5pbWF0aW9uT2Zmc2V0ICIgPDwg
YW5pbWF0aW9uT2Zmc2V0IDw8ICIgKG1haW4gdGhyZWFkICIgPDwgaXNNYWluVGhyZWFkKCkgPDwg
IikiKTsKLQotICAgIHNjcm9sbFRvT2Zmc2V0Rm9yQW5pbWF0aW9uKGFuaW1hdGlvbk9mZnNldCk7
Ci0KLSAgICBpZiAoaXNBbmltYXRpb25Db21wbGV0ZSkgewotICAgICAgICBtX3Njcm9sbFNuYXBT
dGF0ZS0+dHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKLSAgICAgICAgc3Rv
cFNjcm9sbFNuYXBBbmltYXRpb24oKTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439183</attachid>
            <date>2021-09-24 12:28:51 -0700</date>
            <delta_ts>2021-09-24 12:38:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230739-20210924122850.patch</filename>
            <type>text/plain</type>
            <size>42947</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTUwMGZhMWUyMzU1MzAw
N2ExN2QzZDNhN2FlNWM3OGI3ZTk2OGNlOC4uOWI1OTc2OTA1NjQwMjM1NzllNjhjNjQ0ZTNkMDBm
NzllNmJiYzQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTA5LTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIgZHJpdmUgYWxsIHRoZSBTY3JvbGxBbmltYXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGVh
Y2ggU2Nyb2xsQW5pbWF0aW9uIHN1YmNsYXNzIGhhdmluZyBpdHMgb3duIHRpbWVyIGNvZGUsIGhh
dmUgdGhlbSBhbGwKKyAgICAgICAgaW1wbGVtZW50IHNlcnZpY2VBbmltYXRpb25zKCksIHNvIHRo
YXQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgY2FuIHRoZW4gZHJpdmUKKyAgICAgICAgdGhl
bSBhbGwgdmlhIGl0cyBleGlzdGluZyBhbmltYXRpb25DYWxsYmFjaygpIGNvZGUuCisKKyAgICAg
ICAgR2l2ZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSBhIHRlbXBv
cmFyeSB0aW1lciB0byBkcml2ZSBpdHMgYW5pbWF0aW9ucywKKyAgICAgICAgYnV0IGxlYXZlIEZJ
WE1FIGNvbW1lbnRzIG5vdGluZyB0aGF0IHRoZXNlIGFuaW1hdGlvbnMgc2hvdWxkIG1vdmUgaW50
byBTY3JvbGxpbmdFZmZlY3RzQ29vcmRpbmF0b3IuCisKKyAgICAgICAgUHVzaCBhIGJpdCBtb3Jl
IGNvbW1vbiBTY3JvbGxBbmltYXRpb24gbG9naWMgaW50byB0aGUgYmFzZSBjbGFzcywgYW5kIGFk
ZCBhCisgICAgICAgICd3aWxsU3RhcnQnIGNsaWVudCBmdW5jdGlvbiB3aGljaCBTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlciBjYW4gdXNlIHRvCisgICAgICAgIHN0YXJ0IGNhbGxiYWNrcyBpZiBu
ZWNlc3NhcnkuCisKKyAgICAgICAgU2Nyb2xsQW5pbWF0aW9uIGxpZmV0aW1lIGlzIGNvbnRyb2xs
ZWQgYnkgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI7IGFuIGFuaW1hdGlvbgorICAgICAgICB3
aWxsIGJlIGRlbGV0ZWQgaW4gdGhlIGZpcnN0IGFuaW1hdGlvbkNhbGxiYWNrKCkgd2hlcmUgaXQg
aXMgbm8gbG9uZ2VyIGFjdGl2ZS4gVGhpcworICAgICAgICBhdm9pZHMgcG90ZW50aWFsIHBpdGZh
bGxzIHdoZXJlIGFuIGFuaW1hdGlvbiBtaWdodCBiZSBkZWxldGVkIGluc2lkZSB0aGUgc2Nyb2xs
QW5pbWF0aW9uRGlkRW5kKCkKKyAgICAgICAgY2FsbGJhY2suCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxF
dmVudDo6c3dpcGVWZWxvY2l0eSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25DbGllbnQ6OnNjcm9s
bEFuaW1hdGlvbldpbGxTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjppc0FjdGl2ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OmN1cnJlbnRPZmZzZXQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjpkaWRTdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OmRpZEVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb246OnRpbWVTaW5jZVN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvbjo6c2VydmljZUFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpTY3JvbGxBbmltYXRpb25L
aW5ldGljKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmNvbXB1
dGVWZWxvY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpz
dGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzZXJ2aWNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6YW5pbWF0aW9uVGlt
ZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5l
dGljOjpkZWx0YVRvTmV4dEZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25LaW5ldGljLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
TW9tZW50dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW06
OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpyZXRhcmdldEFjdGl2ZUFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c2VydmljZUFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6dXBkYXRlU2Nyb2xsRXh0
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6aXNBY3Rp
dmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1v
bWVudHVtLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRP
clJldGFyZ2V0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNt
b290aDo6c2VydmljZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRp
b25TbW9vdGg6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
aW9uU21vb3RoOjphbmltYXRpb25UaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnROZXh0VGltZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjppc0FjdGl2ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmFuaW1hdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydE9yU3Rv
cEFuaW1hdGlvbkNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEFuaW1hdGlvbldpbGxT
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Ny
b2xsQW5pbWF0aW9uRGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3RhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsU25hcCk6IElmIHRyYW5zaXRpb25Ub0dsaWRlQW5pbWF0aW9uU3RhdGUoKQorICAgICAgICBz
dGFydHMgYW4gYW5pbWF0aW9uIHdlIGhhdmUgdG8gY2FsbCBzdGFydFNjcm9sbFNuYXBBbmltYXRp
b24oKSAoYmVjYXVzZSB0aGUgcHJldmlvdXMgc3RvcCgpIHdpbGwgaGF2ZQorICAgICAgICBwdXRz
IHVzIGluIGEgIm5vdCBhbmltYXRpbmcgc2Nyb2xsIHNuYXAiIHN0YXRlKS4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwQW5pbWF0
aW5nU3RhdGUpOiBEZWxldGVkLgorCiAyMDIxLTA5LTIzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUn
cyBTY3JvbGxBbmltYXRpb25Nb21lbnR1bSBpbnRvIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEuY3BwCmluZGV4IGU0MDNlMjQxNTc0YWU5ZTUzMmFiODNmMjkyYmE4YWRkNWZhYzQ2
MGMuLjBmYjUzOGZjNjgwYWFlNDI2MmRlZDU5YmM0ZmNkZTgwZDZkMmJlODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEu
Y3BwCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogCisjaWYgVVNF
KEdMSUJfRVZFTlRfTE9PUCkKKyNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3Jp
dHkuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JvbGxBbmltYXRp
b247CiBjbGFzcyBTY3JvbGxBbmltYXRpb25LaW5ldGljOwpAQCAtMzksMTIgKzQzLDE4IEBAIGNs
YXNzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM7CiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEo
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUsIGJvb2wgc2Nyb2xsQW5p
bWF0b3JFbmFibGVkKQogICAgIDogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZShz
Y3JvbGxpbmdOb2RlKQogICAgICwgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQoc2Nyb2xsQW5pbWF0
b3JFbmFibGVkKQorI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCisgICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwg
dGhpcywgJlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRp
b25UaW1lckZpcmVkKQorI2VuZGlmCiB7CisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8
fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQorICAg
IG1fYW5pbWF0aW9uVGltZXIuc2V0UHJpb3JpdHkoV1RGOjpSdW5Mb29wU291cmNlUHJpb3JpdHk6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvclRpbWVyKTsKKyNlbmRpZgorI2VuZGlmICAgIAogfQogCi1T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6flNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhKCkKLXsKLX0KK1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEoKSA9IGRlZmF1bHQ7CiAKIHN0ZDo6dW5pcXVlX3B0cjxOaWNvc2lhOjpTY2VuZUlu
dGVncmF0aW9uOjpVcGRhdGVTY29wZT4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWE6OmNyZWF0ZVVwZGF0ZVNjb3BlKCkKIHsKQEAgLTgwLDYgKzkwLDcgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fa2luZXRpY0FuaW1hdGlv
biA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oKnRoaXMpOworICAgIHN0YXJ0
VGltZXJJZk5lY2Vzc2FyeSgpOwogfQogI2VuZGlmCiAKQEAgLTkwLDYgKzEwMSw3IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFu
aW1hdGlvblNtb290aCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc21vb3RoQW5pbWF0aW9u
ID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KCp0aGlzKTsKKyAgICBzdGFydFRp
bWVySWZOZWNlc3NhcnkoKTsKIH0KICNlbmRpZgogCkBAIC0xMTYsNiArMTI4LDcgQEAgV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjpoYW5kbGVXaGVlbEUKICAgICB9CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBUaGlzIG5l
ZWRzIHRvIHNoYXJlIGNvZGUgd2l0aCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudCgp
LCBwZXJoYXBzIGJ5IG1vdmluZyBjb2RlIGludG8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OmhhbmRsZVdoZWVsRXZlbnQoKS4KICAgICBmbG9hdCBkZWx0YVggPSBjYW5IYXZlSG9yaXpvbnRh
bFNjcm9sbGJhciA/IHdoZWVsRXZlbnQuZGVsdGFYKCkgOiAwOwogICAgIGZsb2F0IGRlbHRhWSA9
IGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhciA/IHdoZWVsRXZlbnQuZGVsdGFZKCkgOiAwOwogICAg
IGlmICgoZGVsdGFYIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPj0gbWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkueCgpKQpAQCAtMTg3LDYgKzIwMCw5IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkK
ICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCiAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5z
dG9wKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQorICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOworI2VuZGlmCiB9
CiAKIGZsb2F0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdl
U2NhbGVGYWN0b3IoKQpAQCAtMTk3LDcgKzIxMyw3IEBAIGZsb2F0IFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdlU2NhbGVGYWN0b3IoKQogICAgICAgICBkb3du
Y2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKCkpLmZy
YW1lU2NhbGVGYWN0b3IoKSA6IDEuOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0
aW9uJiBhbmltYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQordm9pZCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBk
YXRlKFNjcm9sbEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQp
CiB7CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCiAgICAgaWYgKCZhbmltYXRpb24gPT0g
bV9raW5ldGljQW5pbWF0aW9uLmdldCgpKSB7CkBAIC0yMDYsNyArMjIyLDkgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9uRGlk
VXBkYXRlKFNjcm9sbEEKICAgICB9CiAjZW5kaWYKICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY3Jl
YXRlVXBkYXRlU2NvcGUoKTsKLSAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsVG8ocG9zaXRpb24p
OworCisgICAgLy8gRklYTUU6IE5lZWQgdG8gY29udmVydCBhbiBvZmZzZXQgdG8gYSBwb3NpdGlv
bi4KKyAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsVG8ob2Zmc2V0KTsKIH0KIAogdm9pZCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9uRGlk
RW5kKFNjcm9sbEFuaW1hdGlvbiYpCkBAIC0yMjEsNiArMjM5LDM1IEBAIFNjcm9sbEV4dGVudHMg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEV4dGVudHNG
b3JBbmltYXRpCiAgICAgfTsKIH0KIAordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6c3RhcnRUaW1lcklmTmVjZXNzYXJ5KCkKK3sKKyNpZiBFTkFCTEUoS0lO
RVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlmIChtX2Fu
aW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpYyBj
b25zdGV4cHIgZG91YmxlIGZyYW1lUmF0ZSA9IDYwOworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vj
b25kcyB0aWNrVGltZSA9IDFfcyAvIGZyYW1lUmF0ZTsKKyAgICAKKyAgICBtX2FuaW1hdGlvblRp
bWVyLnN0YXJ0UmVwZWF0aW5nKHRpY2tUaW1lKTsKKyNlbmRpZgorfQorCit2b2lkIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZpcmVkKCkK
K3sKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShTTU9PVEhfU0NST0xM
SU5HKQorICAgIGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisjZW5kaWYKKworI2lm
IEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBpZiAobV9raW5ldGljQW5pbWF0aW9uKQor
ICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnNlcnZpY2VBbmltYXRpb24obm93KTsKKyNlbmRp
ZgorI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlmIChtX3Ntb290aEFuaW1hdGlv
bikKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNlcnZpY2VBbmltYXRpb24obm93KTsKKyNl
bmRpZiAgICAKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmgKaW5kZXggNjllZWIxZWU2
MDYxMTVmM2IwNzE1OWM1NjI3YmFkZTE4YTJiZTE3MC4uNzQ3NDJjMWZlM2E4Njg2YWU1MzIxNGEy
ZGFmMGRhYTIyYjk1ZWViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaApAQCAtNDMsOCArNDMsMTMgQEAKICNpbmNsdWRl
ICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEtJTkVUSUNf
U0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6IFRoaXMg
c2hvdWxkIG5vdCBiZSBhIFNjcm9sbEFuaW1hdGlvbkNsaWVudC4KIGNsYXNzIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhIDogcHVibGljIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGUsIHB1YmxpYyBTY3JvbGxBbmltYXRpb25DbGllbnQgewogcHVibGlj
OgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
KFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQp
OwpAQCAtNjcsMTcgKzcyLDI4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVTY3JvbGxBbmlt
YXRpb25TbW9vdGgoKTsKICNlbmRpZgogCisgICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7
CisgICAgdm9pZCBzdGFydFRpbWVySWZOZWNlc3NhcnkoKTsKKwogICAgIC8vIFNjcm9sbEFuaW1h
dGlvbkNsaWVudAogICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1h
dGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRQb3NpdGlvbikgZmluYWw7CiAgICAgdm9p
ZCBzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7CiAgICAgU2Ny
b2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpIGZp
bmFsOwogCisgICAgLy8gRklYTUU6IFRoZXNlIGFuaW1hdGlvbnMgc2hvdWxkIG5vdCBsaXZlIGhl
cmUuIFRoZXkgbmVlZCB0byBiZSBtYW5hZ2VkIGJ5IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
LAorICAgIC8vIHRvIGJlIGNvb3JkaW5hdGVkIHdpdGggb3RoZXIga2luZHMgb2Ygc2Nyb2xsIGFu
aW1hdGlvbnMsIGFuZCBiZSByZWZlcmVuY2VkIGJ5IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
OjptX2N1cnJlbnRBbmltYXRpb24uCisgICAgCiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5H
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNB
bmltYXRpb247CiAjZW5kaWYKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX3Ntb290aEFuaW1hdGlvbjsKICNl
bmRpZgorCisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1ND
Uk9MTElORykKKyAgICAvLyBGSVhNRTogV2hlbiB0aGUgYWJvdmUgdHdvIGFuaW1hdGlvbnMgYXJl
IHJlbW92ZWQsIHRoaXMgdGltZXIgY2FuIGJlIHJlbW92ZWQuCisgICAgUnVuTG9vcDo6VGltZXI8
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE+IG1fYW5pbWF0aW9uVGlt
ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKaW5kZXggYzc0ODg3MDRjOGZkNjQwNmU1
NjExOWVjNWJkZjI4MDY0ZjhkZDJkOS4uMDRlNjY3MzIyYWRmNjUwNzdhZTRiODNhODI0Mzg1ZTI1
MmQyY2FlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVl
bEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50
LmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW5kT2ZOb25Nb21l
bnR1bVNjcm9sbCgpIGNvbnN0OwogICAgIGJvb2wgaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNj
cm9sbCgpIGNvbnN0OwotICAgIEZsb2F0UG9pbnQgc3dpcGVWZWxvY2l0eSgpIGNvbnN0OworICAg
IEZsb2F0U2l6ZSBzd2lwZVZlbG9jaXR5KCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KFdJTikKQEAgLTI2MiwxMCArMjYyLDEwIEBAIGlubGluZSBib29sIFBsYXRmb3JtV2hlZWxFdmVu
dDo6aXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cGhhc2UgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok5vbmUgJiYgbV9tb21lbnR1bVBoYXNl
ID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpCZWdhbjsKIH0KIAotaW5saW5lIEZsb2F0UG9p
bnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKK2lubGluZSBGbG9h
dFNpemUgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKIHsKICAgICAv
LyBUaGUgc3dpcGluZyB2ZWxvY2l0eSBpcyBzdG9yZWQgaW4gdGhlIGRlbHRhcyBvZiB0aGUgZXZl
bnQgZGVjbGFyaW5nIGl0LgotICAgIHJldHVybiBpc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Ny
b2xsKCkgPyBGbG9hdFBvaW50KG1fd2hlZWxUaWNrc1gsIG1fd2hlZWxUaWNrc1kpIDogRmxvYXRQ
b2ludCgpOworICAgIHJldHVybiBpc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkgPyBG
bG9hdFNpemUobV93aGVlbFRpY2tzWCwgbV93aGVlbFRpY2tzWSkgOiBGbG9hdFNpemUoKTsKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKaW5kZXggNWM2NGFkN2UyNzU4MWE3NDA2MDczMmJlOWRh
NzBmOWM1OTQ3ZjM2ZC4uMTU1MzE1OGQwNTZiNmNmNTI2Zjg3MmNlMTZkZjViNzIxY2RhYmNmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKQEAgLTI2LDYgKzI2
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUg
PHd0Zi9Nb25vdG9uaWNUaW1lLmg+CkBAIC00MCw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5TY3JvbGxBbmltYXRpb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0
UG9pbnQmIC8qIGN1cnJlbnRPZmZzZXQgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxB
bmltYXRpb25XaWxsU3RhcnQoU2Nyb2xsQW5pbWF0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSB7IH0KICAgICB2aXJ0dWFs
IFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24m
KSA9IDA7CiB9OwpAQCAtNjIsMTYgKzY0LDQzIEBAIHB1YmxpYzoKICAgICBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2FuaW1hdGlvblR5cGU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCByZXRh
cmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5hdGlvbk9mZnNl
dCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpCisgICAgeworICAg
ICAgICBpZiAoIW1faXNBY3RpdmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRpZEVu
ZCgpOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBt
X2lzQWN0aXZlOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSB7IH07
CiAgICAgCi0gICAgLy8gUmV0dXJucyBjdXJyZW50IG9mZnNldC4KLSAgICB2aXJ0dWFsIEZsb2F0
UG9pbnQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSB7IHJldHVybiB7IH07IH07Cisg
ICAgRmxvYXRQb2ludCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50T2Zm
c2V0OyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3Rvbmlj
VGltZSkgPSAwOwogCiBwcm90ZWN0ZWQ6CisgICAgdm9pZCBkaWRTdGFydChNb25vdG9uaWNUaW1l
IGN1cnJlbnRUaW1lKQorICAgIHsKKyAgICAgICAgbV9zdGFydFRpbWUgPSBjdXJyZW50VGltZTsK
KyAgICAgICAgbV9pc0FjdGl2ZSA9IHRydWU7CisgICAgICAgIG1fY2xpZW50LnNjcm9sbEFuaW1h
dGlvbldpbGxTdGFydCgqdGhpcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZGlkRW5kKCkKKyAg
ICB7CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgbV9jbGllbnQuc2Nyb2xs
QW5pbWF0aW9uRGlkRW5kKCp0aGlzKTsKKyAgICB9CisgICAgCisgICAgU2Vjb25kcyB0aW1lU2lu
Y2VTdGFydChNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGN1cnJlbnRUaW1lIC0gbV9zdGFydFRpbWU7CisgICAgfQorCiAgICAgU2Nyb2xsQW5p
bWF0aW9uQ2xpZW50JiBtX2NsaWVudDsKICAgICBjb25zdCBUeXBlIG1fYW5pbWF0aW9uVHlwZTsK
KyAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OworICAgIE1vbm90b25pY1RpbWUgbV9zdGFy
dFRpbWU7CisgICAgRmxvYXRQb2ludCBtX2N1cnJlbnRPZmZzZXQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25LaW5ldGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuY3BwCmluZGV4IGE5YjY2NTRhNmJiNjY1OTVkMmUzNTc2MzBkNTQ0ZjRkYmJi
ODVjYTMuLjg3MzAwMzVkNjAzNzI4ZWMyMGJiNjY4NzRjYjcxZGYyZjU0NzNjYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCkBA
IC0yOSwxMCArMjksNiBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAKLSNp
ZiBVU0UoR0xJQl9FVkVOVF9MT09QKQotI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQ
cmlvcml0eS5oPgotI2VuZGlmCi0KIC8qCiAgKiBQZXJBeGlzRGF0YSBpcyBhIHBvcnQgb2YgR3Rr
S2luZXRpY1Njcm9sbGluZyBhcyBvZiBHVEsrIDMuMjAsCiAgKiBtaW1pY2tpbmcgaXRzIEFQSSBh
bmQgaXRzIGJlaGF2aW9yLgpAQCAtNjcsMTIgKzYzLDkgQEAKICAqLwogCiBzdGF0aWMgY29uc3Rl
eHByIGRvdWJsZSBkZWNlbEZyaWN0aW9uID0gNDsKLXN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGZy
YW1lUmF0ZSA9IDYwOwogc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdmVsb2NpdHlBY2N1bXVsYXRp
b25GbG9vciA9IDAuMzM7CiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSB2ZWxvY2l0eUFjY3VtdWxh
dGlvbkNlaWwgPSAxLjA7CiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSB2ZWxvY2l0eUFjY3VtdWxh
dGlvbk1heCA9IDYuMDsKLXN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyB0aWNrVGltZSA9IDFfcyAv
IGZyYW1lUmF0ZTsKLXN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBtaW5pbXVtVGltZXJJbnRlcnZh
bCB7IDFfbXMgfTsKIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBzY3JvbGxDYXB0dXJlVGhyZXNo
b2xkIHsgMTUwX21zIH07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg3LDExICs4MCwxMSBA
QCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQZXJBeGlzRGF0YTo6UGVyQXhpc0RhdGEoZG91Ymxl
IGxvd2VyLCBkb3VibGUgdXBwZXIsIGRvdQogewogfQogCi1ib29sIFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKFNlY29uZHMgdGltZURlbHRhKQorYm9v
bCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbChTZWNv
bmRzIGVsYXBzZWRUaW1lKQogewogICAgIGF1dG8gbGFzdE9mZnNldCA9IG1fb2Zmc2V0OwogICAg
IGF1dG8gbGFzdFRpbWUgPSBtX2VsYXBzZWRUaW1lOwotICAgIG1fZWxhcHNlZFRpbWUgKz0gdGlt
ZURlbHRhOworICAgIG1fZWxhcHNlZFRpbWUgPSBlbGFwc2VkVGltZTsKIAogICAgIGRvdWJsZSBl
eHBvbmVudGlhbFBhcnQgPSBleHAoLWRlY2VsRnJpY3Rpb24gKiBtX2VsYXBzZWRUaW1lLnZhbHVl
KCkpOwogICAgIG1fb2Zmc2V0ID0gbV9jb2VmMSArIG1fY29lZjIgKiBleHBvbmVudGlhbFBhcnQ7
CkBAIC0xMDUsNyArOTgsNyBAQCBib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlBlckF4aXNE
YXRhOjphbmltYXRlU2Nyb2xsKFNlY29uZHMgdGltZURlbHRhKQogICAgICAgICBtX29mZnNldCA9
IG1fdXBwZXI7CiAgICAgfQogCi0gICAgaWYgKGZhYnMobV92ZWxvY2l0eSkgPCAxIHx8IChsYXN0
VGltZSAmJiBmYWJzKG1fb2Zmc2V0IC0gbGFzdE9mZnNldCkgPCAxKSkgeworICAgIGlmIChmYWJz
KG1fdmVsb2NpdHkpIDwgMSB8fCAobGFzdFRpbWUgPiAwX3MgJiYgZmFicyhtX29mZnNldCAtIGxh
c3RPZmZzZXQpIDwgMSkpIHsKICAgICAgICAgbV9vZmZzZXQgPSByb3VuZChtX29mZnNldCk7CiAg
ICAgICAgIG1fdmVsb2NpdHkgPSAwOwogICAgIH0KQEAgLTExNSwyNSArMTA4LDExIEBAIGJvb2wg
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoU2Vjb25k
cyB0aW1lRGVsdGEpCiAKIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktp
bmV0aWMoU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBTY3JvbGxBbmltYXRp
b24oVHlwZTo6S2luZXRpYywgY2xpZW50KQotICAgICwgbV9hbmltYXRpb25UaW1lcihSdW5Mb29w
OjpjdXJyZW50KCksIHRoaXMsICZTY3JvbGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1l
ckZpcmVkKQogewotI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCi0gICAgbV9hbmltYXRpb25UaW1l
ci5zZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yVGltZXIpOwotI2VuZGlmCiB9CiAKIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6On5TY3Jv
bGxBbmltYXRpb25LaW5ldGljKCkgPSBkZWZhdWx0OwogCi12b2lkIFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OnN0b3AoKQotewotICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOwotfQotCi1ib29s
IFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpOwotfQotCiB2b2lkIFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OmFwcGVuZFRvU2Nyb2xsSGlzdG9yeShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2
ZW50KQogewogICAgIG1fc2Nyb2xsSGlzdG9yeS5yZW1vdmVBbGxNYXRjaGluZyhbJmV2ZW50XSAo
UGxhdGZvcm1XaGVlbEV2ZW50JiBvdGhlckV2ZW50KSAtPiBib29sIHsKQEAgLTE0OCw3ICsxMjcs
NyBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmNsZWFyU2Nyb2xsSGlzdG9yeSgpCiAg
ICAgbV9zY3JvbGxIaXN0b3J5LmNsZWFyKCk7CiB9CiAKLUZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYzo6Y29tcHV0ZVZlbG9jaXR5KCkKK0Zsb2F0U2l6ZSBTY3JvbGxBbmltYXRpb25L
aW5ldGljOjpjb21wdXRlVmVsb2NpdHkoKQogewogICAgIGlmIChtX3Njcm9sbEhpc3RvcnkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTY2LDI1ICsxNDUsMjQgQEAgRmxvYXRQ
b2ludCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpjb21wdXRlVmVsb2NpdHkoKQogICAgIC8vIEZJ
WE1FOiBJdCdzIG9kZCB0aGF0IGNvbXB1dGVWZWxvY2l0eSgpIGhhcyB0aGUgc2lkZSBlZmZlY3Qg
b2YgY2xlYXJpbmcgaGlzdG9yeS4KICAgICBtX3Njcm9sbEhpc3RvcnkuY2xlYXIoKTsKIAotICAg
IHJldHVybiBGbG9hdFBvaW50KGFjY3VtRGVsdGEueCgpICogLTEgLyAobGFzdCAtIGZpcnN0KS52
YWx1ZSgpLCBhY2N1bURlbHRhLnkoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCkudmFsdWUoKSk7Cisg
ICAgcmV0dXJuIEZsb2F0U2l6ZShhY2N1bURlbHRhLngoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCku
dmFsdWUoKSwgYWNjdW1EZWx0YS55KCkgKiAtMSAvIChsYXN0IC0gZmlyc3QpLnZhbHVlKCkpOwog
fQogCi1ib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRo
SW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZs
b2F0UG9pbnQmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCkKK2Jv
b2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFs
VmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXpl
JiB2ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwpCiB7CiAgICAgc3Rv
cCgpOwogCi0gICAgaWYgKCF2ZWxvY2l0eS54KCkgJiYgIXZlbG9jaXR5LnkoKSkgewotICAgICAg
ICBtX29mZnNldCA9IGluaXRpYWxPZmZzZXQ7CisgICAgaWYgKHZlbG9jaXR5LmlzWmVybygpKSB7
CiAgICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fdmVy
dGljYWxEYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgYXV0byBkZWx0YSA9IGRlbHRhVG9OZXh0RnJhbWUoKTsKKyAgICBhdXRvIGVsYXBzZWRU
aW1lID0gMF9zOwogICAgIGF1dG8gZXh0ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHNGb3JB
bmltYXRpb24oKnRoaXMpOwogCiAgICAgYXV0byBhY2N1bXVsYXRlVmVsb2NpdHkgPSBbJl0oZG91
YmxlIHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBheGlzRGF0YSkgLT4gZG91
YmxlIHsKLSAgICAgICAgaWYgKGF4aXNEYXRhICYmIGF4aXNEYXRhLnZhbHVlKCkuYW5pbWF0ZVNj
cm9sbChkZWx0YSkpIHsKKyAgICAgICAgaWYgKGF4aXNEYXRhICYmIGF4aXNEYXRhLnZhbHVlKCku
YW5pbWF0ZVNjcm9sbChlbGFwc2VkVGltZSkpIHsKICAgICAgICAgICAgIGRvdWJsZSBsYXN0VmVs
b2NpdHkgPSBheGlzRGF0YS52YWx1ZSgpLnZlbG9jaXR5KCk7CiAgICAgICAgICAgICBpZiAoKHN0
ZDo6c2lnbmJpdChsYXN0VmVsb2NpdHkpID09IHN0ZDo6c2lnbmJpdCh2ZWxvY2l0eSkpCiAgICAg
ICAgICAgICAgICAgJiYgKHN0ZDo6YWJzKHZlbG9jaXR5KSA+PSBzdGQ6OmFicyhsYXN0VmVsb2Np
dHkgKiB2ZWxvY2l0eUFjY3VtdWxhdGlvbkZsb29yKSkpIHsKQEAgLTIwMSwyMCArMTc5LDE5IEBA
IGJvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0
aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQCiAgICAgaWYgKG1heUhTY3JvbGwpIHsKICAgICAgICAg
bV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNl
dCgpLngoKSwKICAgICAgICAgICAgIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpLngoKSwK
LSAgICAgICAgICAgIGluaXRpYWxPZmZzZXQueCgpLCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2Np
dHkueCgpLCBtX2hvcml6b250YWxEYXRhKSk7CisgICAgICAgICAgICBpbml0aWFsT2Zmc2V0Lngo
KSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9jaXR5LndpZHRoKCksIG1faG9yaXpvbnRhbERhdGEp
KTsKICAgICB9IGVsc2UKICAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmIChtYXlWU2Nyb2xsKSB7CiAgICAgICAgIG1fdmVydGljYWxEYXRhID0gUGVyQXhp
c0RhdGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAogICAgICAgICAgICAgZXh0
ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAotICAgICAgICAgICAgaW5pdGlhbE9mZnNl
dC55KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS55KCksIG1fdmVydGljYWxEYXRhKSk7
CisgICAgICAgICAgICBpbml0aWFsT2Zmc2V0LnkoKSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9j
aXR5LmhlaWdodCgpLCBtX3ZlcnRpY2FsRGF0YSkpOwogICAgIH0gZWxzZQogICAgICAgICBtX3Zl
cnRpY2FsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIG1fb2Zmc2V0ID0gaW5pdGlhbE9mZnNl
dDsKLSAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gdGlja1RpbWUgLyAy
LjsKLSAgICBhbmltYXRpb25UaW1lckZpcmVkKCk7CisgICAgbV9jdXJyZW50T2Zmc2V0ID0gaW5p
dGlhbE9mZnNldDsKKyAgICBkaWRTdGFydChNb25vdG9uaWNUaW1lOjpub3coKSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTIyNywzMCArMjA0LDIzIEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYzo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmFuaW1hdGlv
blRpbWVyRmlyZWQoKQordm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzZXJ2aWNlQW5pbWF0
aW9uKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCiB7Ci0gICAgYXV0byBkZWx0YSA9IGRlbHRh
VG9OZXh0RnJhbWUoKTsKKyAgICBhdXRvIGVsYXBzZWRUaW1lID0gdGltZVNpbmNlU3RhcnQoY3Vy
cmVudFRpbWUpOwogCi0gICAgaWYgKG1faG9yaXpvbnRhbERhdGEgJiYgIW1faG9yaXpvbnRhbERh
dGEudmFsdWUoKS5hbmltYXRlU2Nyb2xsKGRlbHRhKSkKKyAgICBpZiAobV9ob3Jpem9udGFsRGF0
YSAmJiAhbV9ob3Jpem9udGFsRGF0YS52YWx1ZSgpLmFuaW1hdGVTY3JvbGwoZWxhcHNlZFRpbWUp
KQogICAgICAgICBtX2hvcml6b250YWxEYXRhID0gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKG1f
dmVydGljYWxEYXRhICYmICFtX3ZlcnRpY2FsRGF0YS52YWx1ZSgpLmFuaW1hdGVTY3JvbGwoZGVs
dGEpKQorICAgIGlmIChtX3ZlcnRpY2FsRGF0YSAmJiAhbV92ZXJ0aWNhbERhdGEudmFsdWUoKS5h
bmltYXRlU2Nyb2xsKGVsYXBzZWRUaW1lKSkKICAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAvLyBJZiBvbmUgb2YgdGhlIGF4ZXMgZGlkbid0IGZpbmlzaCBpdHMg
YW5pbWF0aW9uIHdlIG11c3QgY29udGludWUgaXQuCi0gICAgaWYgKG1faG9yaXpvbnRhbERhdGEg
fHwgbV92ZXJ0aWNhbERhdGEpCi0gICAgICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90
KHN0ZDo6bWF4KG1pbmltdW1UaW1lckludGVydmFsLCBkZWx0YSkpOworICAgIGRvdWJsZSB4ID0g
bV9ob3Jpem9udGFsRGF0YSA/IG1faG9yaXpvbnRhbERhdGEudmFsdWUoKS5vZmZzZXQoKSA6IG1f
Y3VycmVudE9mZnNldC54KCk7CisgICAgZG91YmxlIHkgPSBtX3ZlcnRpY2FsRGF0YSA/IG1fdmVy
dGljYWxEYXRhLnZhbHVlKCkub2Zmc2V0KCkgOiBtX2N1cnJlbnRPZmZzZXQueSgpOworICAgIG1f
Y3VycmVudE9mZnNldCA9IEZsb2F0UG9pbnQoeCwgeSk7CisgICAgbV9jbGllbnQuc2Nyb2xsQW5p
bWF0aW9uRGlkVXBkYXRlKCp0aGlzLCBtX2N1cnJlbnRPZmZzZXQpOwogCi0gICAgZG91YmxlIHgg
PSBtX2hvcml6b250YWxEYXRhID8gbV9ob3Jpem9udGFsRGF0YS52YWx1ZSgpLm9mZnNldCgpIDog
bV9vZmZzZXQueCgpOwotICAgIGRvdWJsZSB5ID0gbV92ZXJ0aWNhbERhdGEgPyBtX3ZlcnRpY2Fs
RGF0YS52YWx1ZSgpLm9mZnNldCgpIDogbV9vZmZzZXQueSgpOwotICAgIG1fb2Zmc2V0ID0gRmxv
YXRQb2ludCh4LCB5KTsKLSAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoKnRo
aXMsIG1fb2Zmc2V0KTsKLX0KLQotU2Vjb25kcyBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpkZWx0
YVRvTmV4dEZyYW1lKCkKLXsKLSAgICBNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lID0gTW9ub3Rv
bmljVGltZTo6bm93KCk7Ci0gICAgcmV0dXJuIDFfcyAqIGNlaWwoKGN1cnJlbnRUaW1lIC0gbV9z
dGFydFRpbWUpLnZhbHVlKCkgKiBmcmFtZVJhdGUpIC8gZnJhbWVSYXRlIC0gKGN1cnJlbnRUaW1l
IC0gbV9zdGFydFRpbWUpOworICAgIGlmICghbV9ob3Jpem9udGFsRGF0YSAmJiAhbV92ZXJ0aWNh
bERhdGEpCisgICAgICAgIGRpZEVuZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGlj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKaW5k
ZXggMTQxM2YzMzI4OGU5ZGUyZjNkMmVkZTZhOWZkZDJlMTcxODE0Yzg1YS4uYjc0ZDc3MDNlNjY5
NWM4NzhkZTExMzViNGM4ZGMzODM2ZWNlODExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5j
bHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbi5oIgotI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsMjggKzYw
LDIwIEBAIHB1YmxpYzoKICAgICBTY3JvbGxBbmltYXRpb25LaW5ldGljKFNjcm9sbEFuaW1hdGlv
bkNsaWVudCYpOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKIAotICAg
IC8vIEZJWE1FOiBWZWxvY2l0eSBzaG91bGQgYmUgYSBGbG9hdFNpemUuCi0gICAgYm9vbCBzdGFy
dEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0
aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBi
b29sIG1heVZTY3JvbGwpOwotCisgICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRp
YWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNp
emUmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCk7CiAgICAgYm9v
bCByZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdPZmZzZXQpIGZp
bmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBm
aW5hbDsKKworICAgIHZvaWQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsK
IAogICAgIHZvaWQgYXBwZW5kVG9TY3JvbGxIaXN0b3J5KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpOwogICAgIHZvaWQgY2xlYXJTY3JvbGxIaXN0b3J5KCk7CiAKLSAgICBGbG9hdFBvaW50IGNv
bXB1dGVWZWxvY2l0eSgpOworICAgIEZsb2F0U2l6ZSBjb21wdXRlVmVsb2NpdHkoKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKLSAgICBTZWNvbmRzIGRlbHRh
VG9OZXh0RnJhbWUoKTsKLQogICAgIHN0ZDo6b3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1faG9yaXpv
bnRhbERhdGE7CiAgICAgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gbV92ZXJ0aWNhbERhdGE7
CiAKLSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwotICAgIFJ1bkxvb3A6OlRpbWVyPFNj
cm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fYW5pbWF0aW9uVGltZXI7Ci0gICAgRmxvYXRQb2ludCBt
X29mZnNldDsKICAgICBWZWN0b3I8UGxhdGZvcm1XaGVlbEV2ZW50PiBtX3Njcm9sbEhpc3Rvcnk7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25Nb21lbnR1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25N
b21lbnR1bS5jcHAKaW5kZXggZmE1NzM2OTE1NGEzODc5NDI5MzBkNmY4MzU1ZGVmMWM3ZmVkMDcz
ZS4uMjIzODVlMWYwYjliMmM1OGE5MDJlNzVkNDkxZjJhNDQ4ZTc3ZjQ4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcApAQCAt
MjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Miw1NSArNTEsNDkgQEAgYm9vbCBTY3JvbGxB
bmltYXRpb25Nb21lbnR1bTo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHko
Y29uc3QgRmxvYXQKIAogICAgIGlmIChwcmVkaWN0ZWRTY3JvbGxPZmZzZXQgPT0gaW5pdGlhbE9m
ZnNldCkgewogICAgICAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IG51bGxwdHI7Ci0gICAgICAg
IG1fYW5pbWF0aW9uQ29tcGxldGUgPSB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBtX2FuaW1h
dGlvbkNvbXBsZXRlID0gZmFsc2U7CisgICAgZGlkU3RhcnQoTW9ub3RvbmljVGltZTo6bm93KCkp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpy
ZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5hdGlvbikK
IHsKLSAgICBpZiAobV9tb21lbnR1bUNhbGN1bGF0b3IpIHsKKyAgICBpZiAobV9tb21lbnR1bUNh
bGN1bGF0b3IgJiYgaXNBY3RpdmUoKSkgewogICAgICAgICBtX21vbWVudHVtQ2FsY3VsYXRvci0+
c2V0UmV0YXJnZXRlZFNjcm9sbE9mZnNldChuZXdEZXN0aW5hdGlvbik7CiAgICAgICAgIGF1dG8g
bmV3RHVyYXRpb24gPSBtX21vbWVudHVtQ2FsY3VsYXRvci0+YW5pbWF0aW9uRHVyYXRpb24oKTsK
LSAgICAgICAgbV9hbmltYXRpb25Db21wbGV0ZSA9IG5ld0R1cmF0aW9uID4gMF9zOwotICAgICAg
ICByZXR1cm4gIW1fYW5pbWF0aW9uQ29tcGxldGU7CisgICAgICAgIGJvb2wgYW5pbWF0aW9uQ29t
cGxldGUgPSBuZXdEdXJhdGlvbiA+IDBfczsKKyAgICAgICAgaWYgKGFuaW1hdGlvbkNvbXBsZXRl
KQorICAgICAgICAgICAgZGlkRW5kKCk7CisKKyAgICAgICAgcmV0dXJuICFhbmltYXRpb25Db21w
bGV0ZTsKICAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0
aW9uTW9tZW50dW06OnN0b3AoKQogewogICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yID0gbnVsbHB0
cjsKLSAgICBtX2FuaW1hdGlvbkNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX2NsaWVudC5zY3JvbGxB
bmltYXRpb25EaWRFbmQoKnRoaXMpOwotfQotCi1ib29sIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVt
Ojppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2FuaW1hdGlvbkNvbXBsZXRlOwor
ICAgIFNjcm9sbEFuaW1hdGlvbjo6c3RvcCgpOwogfQogCi1GbG9hdFBvaW50IFNjcm9sbEFuaW1h
dGlvbk1vbWVudHVtOjpzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUp
Cit2b2lkIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25p
Y1RpbWUgY3VycmVudFRpbWUpCiB7CiAgICAgaWYgKCFtX21vbWVudHVtQ2FsY3VsYXRvcikgewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZWxhcHNlZFRpbWUgPSBjdXJyZW50VGltZSAt
IG1fc3RhcnRUaW1lOwotICAgIG1fYW5pbWF0aW9uQ29tcGxldGUgPSBlbGFwc2VkVGltZSA+PSBt
X21vbWVudHVtQ2FsY3VsYXRvci0+YW5pbWF0aW9uRHVyYXRpb24oKTsKKyAgICBhdXRvIGVsYXBz
ZWRUaW1lID0gdGltZVNpbmNlU3RhcnQoY3VycmVudFRpbWUpOworICAgIGJvb2wgYW5pbWF0aW9u
Q29tcGxldGUgPSBlbGFwc2VkVGltZSA+PSBtX21vbWVudHVtQ2FsY3VsYXRvci0+YW5pbWF0aW9u
RHVyYXRpb24oKTsKICAgICBhdXRvIG5ld09mZnNldCA9IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5z
Y3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKGVsYXBzZWRUaW1lKTsKIAogICAgIG1fY2xpZW50
LnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgbmV3T2Zmc2V0KTsKIAotICAgIGlmICht
X2FuaW1hdGlvbkNvbXBsZXRlKQotICAgICAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRF
bmQoKnRoaXMpOwotICAgIAotICAgIHJldHVybiBuZXdPZmZzZXQ7CisgICAgaWYgKGFuaW1hdGlv
bkNvbXBsZXRlKQorICAgICAgICBkaWRFbmQoKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRpb25N
b21lbnR1bTo6dXBkYXRlU2Nyb2xsRXh0ZW50cygpCkBAIC0xMDgsMTEgKzEwMSw4IEBAIHZvaWQg
U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW06OnVwZGF0ZVNjcm9sbEV4dGVudHMoKQogICAgIGF1dG8g
ZXh0ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oKnRoaXMpOwogICAg
IGF1dG8gcHJlZGljdGVkU2Nyb2xsT2Zmc2V0ID0gbV9tb21lbnR1bUNhbGN1bGF0b3ItPnByZWRp
Y3RlZERlc3RpbmF0aW9uT2Zmc2V0KCk7CiAgICAgYXV0byBjb25zdHJhaW5lZE9mZnNldCA9IHBy
ZWRpY3RlZFNjcm9sbE9mZnNldC5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Ny
b2xsT2Zmc2V0KCksIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpKTsKLSAgICBpZiAoY29u
c3RyYWluZWRPZmZzZXQgIT0gcHJlZGljdGVkU2Nyb2xsT2Zmc2V0KSB7CisgICAgaWYgKGNvbnN0
cmFpbmVkT2Zmc2V0ICE9IHByZWRpY3RlZFNjcm9sbE9mZnNldCkKICAgICAgICAgcmV0YXJnZXRB
Y3RpdmVBbmltYXRpb24oY29uc3RyYWluZWRPZmZzZXQpOwotICAgICAgICBpZiAobV9hbmltYXRp
b25Db21wbGV0ZSkKLSAgICAgICAgICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZEVuZCgq
dGhpcyk7Ci0gICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaAppbmRleCA2NjQyZGNi
NTQ2ZWZkOTA5MzliOGZmNTIxODBmYjAzOTA5M2RiNGVkLi41YzliZTkxMzQxZDY3MjRlYzUwNjk3
NGIyNzNlZjE3OWNmOTcyOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb25Nb21lbnR1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbk1vbWVudHVtLmgKQEAgLTM2LDE4ICszNiwxMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0oKTsKIAogICAgIGJvb2wgc3RhcnRBbmlt
YXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9m
ZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbERlbHRhLCBjb25zdCBXVEY6OkZ1bmN0aW9uPEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQ
b2ludCYpPiYgZGVzdGluYXRpb25Nb2RpZmllcik7Ci0KICAgICBib29sIHJldGFyZ2V0QWN0aXZl
QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld0Rlc3RpbmF0aW9uKSBmaW5hbDsKICAgICB2
b2lkIHN0b3AoKSBmaW5hbDsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7Ci0gICAg
RmxvYXRQb2ludCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpIGZpbmFsOworICAgIHZv
aWQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0
ZVNjcm9sbEV4dGVudHMoKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBtX21vbWVudHVtQ2FsY3VsYXRvcjsKLSAgICAK
LSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwotICAgIGJvb2wgbV9hbmltYXRpb25Db21w
bGV0ZSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAppbmRleCBiMDZm
MmYyNGVhNTc1MTI1MDRmNzIyMWQwYjliMjJiYTgyMDkzMmI1Li4wMzY2MmJjNjI0OGIxODllMTY2
YTMzMzlmYzAzMDVhMTNjOGZlZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKQEAgLTMzLDI1ICszMywxNSBAQAogI2luY2x1ZGUg
IlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiVGltaW5nRnVuY3Rpb24uaCIKIAotI2lmIFVT
RShHTElCX0VWRU5UX0xPT1ApCi0jaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9y
aXR5Lmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgZG91
YmxlIGZyYW1lUmF0ZSA9IDYwOwogc3RhdGljIGNvbnN0IGZsb2F0IGFuaW1hdGlvblNwZWVkIHsg
MTAwMC4wZiB9Owotc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIG1pbmltdW1UaW1lckludGVydmFs
IHsgMV9tcyB9Owogc3RhdGljIGNvbnN0IFNlY29uZHMgbWF4QW5pbWF0aW9uRHVyYXRpb24geyAy
MDBfbXMgfTsKIAogU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3JvbGxBbmltYXRpb25TbW9vdGgo
U2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBTY3JvbGxBbmltYXRpb24oVHlw
ZTo6U21vb3RoLCBjbGllbnQpCi0gICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJl
bnQoKSwgdGhpcywgJlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCkK
ICAgICAsIG1fZWFzZUluT3V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OlRpbWluZ0Z1bmN0aW9uUHJlc2V0
OjpFYXNlSW5PdXQpKQogewotI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCi0gICAgbV9hbmltYXRp
b25UaW1lci5zZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJl
ZnJlc2hNb25pdG9yVGltZXIpOwotI2VuZGlmCiB9CiAKIFNjcm9sbEFuaW1hdGlvblNtb290aDo6
flNjcm9sbEFuaW1hdGlvblNtb290aCgpID0gZGVmYXVsdDsKQEAgLTc5LDE3ICs2OSwxMCBAQCBi
b29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRPclJldGFyZ2V0QW5pbWF0aW9uKGNvbnN0
IFNjcm9sbEV4dGVudHMmIGV4dGVudAogICAgIG1fZGVzdGluYXRpb25PZmZzZXQgPSBkZXN0aW5h
dGlvbk9mZnNldC5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0
KCksIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpKTsKICAgICBib29sIG5lZWRUb1Njcm9s
bCA9IG1fc3RhcnRPZmZzZXQgIT0gbV9kZXN0aW5hdGlvbk9mZnNldDsKIAotICAgIGlmIChuZWVk
VG9TY3JvbGwgJiYgIWlzQWN0aXZlKCkpIHsKLSAgICAgICAgbV9zdGFydFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKLSAgICAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwotICAgIH0KLSAg
ICByZXR1cm4gbmVlZFRvU2Nyb2xsOwotfQorICAgIGlmIChuZWVkVG9TY3JvbGwgJiYgIWlzQWN0
aXZlKCkpCisgICAgICAgIGRpZFN0YXJ0KE1vbm90b25pY1RpbWU6Om5vdygpKTsKIAotdm9pZCBT
Y3JvbGxBbmltYXRpb25TbW9vdGg6OnN0b3AoKQotewotICAgIG1fYW5pbWF0aW9uVGltZXIuc3Rv
cCgpOwotICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZEVuZCgqdGhpcyk7CisgICAgcmV0
dXJuIG5lZWRUb1Njcm9sbDsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0
ZVNjcm9sbEV4dGVudHMoKQpAQCAtMTEwLDYgKzkzLDE0IEBAIGlubGluZSBmbG9hdCBsaW5lYXJJ
bnRlcnBvbGF0aW9uKGZsb2F0IHByb2dyZXNzLCBmbG9hdCBhLCBmbG9hdCBiKQogICAgIHJldHVy
biBhICsgcHJvZ3Jlc3MgKiAoYiAtIGEpOwogfQogCit2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290
aDo6c2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKQoreworICAgIGJv
b2wgYW5pbWF0aW9uQWN0aXZlID0gYW5pbWF0ZVNjcm9sbChjdXJyZW50VGltZSk7CisgICAgbV9j
bGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKCp0aGlzLCBtX2N1cnJlbnRPZmZzZXQpOwor
ICAgIGlmICghYW5pbWF0aW9uQWN0aXZlKQorICAgICAgICBkaWRFbmQoKTsKK30KKwogYm9vbCBT
Y3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGVTY3JvbGwoTW9ub3RvbmljVGltZSBjdXJyZW50
VGltZSkKIHsKICAgICBNb25vdG9uaWNUaW1lIGVuZFRpbWUgPSBtX3N0YXJ0VGltZSArIG1fZHVy
YXRpb247CkBAIC0xMjYsMjkgKzExNyw0IEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjph
bmltYXRlU2Nyb2xsKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCiAgICAgcmV0dXJuIGN1cnJl
bnRUaW1lIDwgZW5kVGltZTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1h
dGlvblRpbWVyRmlyZWQoKQotewotICAgIE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKLSAgICBTZWNvbmRzIGRlbHRhVG9OZXh0RnJhbWUgPSAxX3MgKiBj
ZWlsKChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKS52YWx1ZSgpICogZnJhbWVSYXRlKSAvIGZy
YW1lUmF0ZSAtIChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKTsKLSAgICBjdXJyZW50VGltZSAr
PSBkZWx0YVRvTmV4dEZyYW1lOwotCi0gICAgYm9vbCBjb250aW51ZUFuaW1hdGlvbiA9IGFuaW1h
dGVTY3JvbGwoY3VycmVudFRpbWUpOwotICAgIGlmIChjb250aW51ZUFuaW1hdGlvbikKLSAgICAg
ICAgc3RhcnROZXh0VGltZXIoc3RkOjptYXgobWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9O
ZXh0RnJhbWUpKTsKLQotICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhp
cywgbV9jdXJyZW50T2Zmc2V0KTsKLSAgICBpZiAoIWNvbnRpbnVlQW5pbWF0aW9uKQotICAgICAg
ICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRFbmQoKnRoaXMpOwotfQotCi12b2lkIFNjcm9s
bEFuaW1hdGlvblNtb290aDo6c3RhcnROZXh0VGltZXIoU2Vjb25kcyBkZWxheSkKLXsKLSAgICBt
X2FuaW1hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChkZWxheSk7Ci19Ci0KLWJvb2wgU2Nyb2xsQW5p
bWF0aW9uU21vb3RoOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYW5pbWF0aW9u
VGltZXIuaXNBY3RpdmUoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCAxZDIzNGEy
OTJkNzc2Njk4ODMxN2MxODBmYTU0OTVkNjU1ZGJmYTgyLi5kMTdmMjk0MTlmZTI4NWZjNmU1ZjVl
ODVjMzFlMDEyYWQ1OGI4MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguaApAQCAtMjgsOCArMjgsNiBAQAogCiAjaW5jbHVkZSAiU2Nyb2xs
QW5pbWF0aW9uLmgiCiAKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC00MSwzMyArMzksMjMgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblNtb290aCgpOwogCiAgICAgYm9vbCBzdGFydEFu
aW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihjb25zdCBGbG9hdFBvaW50JiBmcm9tT2Zmc2V0LCBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbk9mZnNldCk7Ci0KICAgICBib29sIHJldGFyZ2V0
QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7Ci0gICAg
dm9pZCBzdG9wKCkgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVTY3JvbGxFeHRlbnRzKCkgZmluYWw7
Ci0gICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZpbmFsOwotCiAKIHByaXZhdGU6Ci0gICAgYm9v
bCBzdGFydE9yUmV0YXJnZXRBbmltYXRpb24oY29uc3QgU2Nyb2xsRXh0ZW50cyYsIGNvbnN0IEZs
b2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVu
dHMoKSBmaW5hbDsKKyAgICB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGltZSkgZmlu
YWw7CiAKLSAgICB2b2lkIHJlcXVlc3RBbmltYXRpb25UaW1lckZpcmVkKCk7Ci0gICAgdm9pZCBz
dGFydE5leHRUaW1lcihTZWNvbmRzIGRlbGF5KTsKLSAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmly
ZWQoKTsKKyAgICBib29sIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihjb25zdCBTY3JvbGxFeHRl
bnRzJiwgY29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb25PZmZzZXQpOwogICAgIAogICAgIFNl
Y29uZHMgZHVyYXRpb25Gcm9tRGlzdGFuY2UoY29uc3QgRmxvYXRTaXplJikgY29uc3Q7CiAgICAg
CiAgICAgYm9vbCBhbmltYXRlU2Nyb2xsKE1vbm90b25pY1RpbWUpOwogCi0gICAgTW9ub3Rvbmlj
VGltZSBtX3N0YXJ0VGltZTsKICAgICBTZWNvbmRzIG1fZHVyYXRpb247CiAKICAgICBGbG9hdFBv
aW50IG1fc3RhcnRPZmZzZXQ7CiAgICAgRmxvYXRQb2ludCBtX2Rlc3RpbmF0aW9uT2Zmc2V0Owot
ICAgIEZsb2F0UG9pbnQgbV9jdXJyZW50T2Zmc2V0OwotICAgIAotICAgIC8vIEZJWE1FOiBTaG91
bGQgbm90IGhhdmUgdGltZXIgaGVyZSwgYW5kIGluc3RlYWQgdXNlIHNlcnZpY2VBbmltYXRpb24o
KS4KLSAgICBSdW5Mb29wOjpUaW1lcjxTY3JvbGxBbmltYXRpb25TbW9vdGg+IG1fYW5pbWF0aW9u
VGltZXI7CisKICAgICBSZWZQdHI8VGltaW5nRnVuY3Rpb24+IG1fZWFzZUluT3V0VGltaW5nRnVu
Y3Rpb247CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlci5jcHAKaW5kZXggNzk4NTVhMzE0NmFmZjEzMDM1Mzg2NWQ2N2Ex
YTEwOWM3Njg5ZGIxOC4uMmQ5NDM0MTNmOWFlYWVlYTk5ZGQxNmEzNGQ0YTBmMmRmYWZhZTFiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyLmNwcApAQCAtNDgsMTQgKzQ4LDIzIEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXI6OmFuaW1hdGlvbkNhbGxiYWNrKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCiB7
CiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiBhbmltYXRpb25DYWxsYmFjazogaXNBbmltYXRp
bmdSdWJiZXJCYW5kICIgPDwgbV9pc0FuaW1hdGluZ1J1YmJlckJhbmQgPDwgIiBpc0FuaW1hdGlu
Z1Njcm9sbFNuYXAgIiA8PCBtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCA8PCAiaXNBbmltYXRpbmdL
ZXlib2FyZFNjcm9sbGluZyIgPDwgbV9pc0FuaW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nKTsKIAot
ICAgIHVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZShjdXJyZW50VGltZSk7CisgICAgaWYg
KG1fY3VycmVudEFuaW1hdGlvbikgeworICAgICAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uLT5p
c0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uLT5zZXJ2aWNlQW5pbWF0
aW9uKGN1cnJlbnRUaW1lKTsKKworICAgICAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uICYmICFt
X2N1cnJlbnRBbmltYXRpb24tPmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX2N1cnJlbnRBbmlt
YXRpb24gPSBudWxscHRyOworICAgIH0KKwogICAgIHVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdT
dGF0ZShjdXJyZW50VGltZSk7CiAgICAgdXBkYXRlS2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRpbmdT
dGF0ZShjdXJyZW50VGltZSk7CisgICAgCisgICAgc3RhcnRPclN0b3BBbmltYXRpb25DYWxsYmFj
a3MoKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRPclN0b3BB
bmltYXRpb25DYWxsYmFja3MoKQogewotICAgIGJvb2wgbmVlZHNDYWxsYmFja3MgPSBtX2lzQW5p
bWF0aW5nUnViYmVyQmFuZCB8fCBtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCB8fCBtX2lzQW5pbWF0
aW5nS2V5Ym9hcmRTY3JvbGxpbmc7CisgICAgYm9vbCBuZWVkc0NhbGxiYWNrcyA9IG1faXNBbmlt
YXRpbmdSdWJiZXJCYW5kIHx8IG1faXNBbmltYXRpbmdLZXlib2FyZFNjcm9sbGluZyB8fCBtX2N1
cnJlbnRBbmltYXRpb247CiAgICAgaWYgKG5lZWRzQ2FsbGJhY2tzID09IG1faXNSdW5uaW5nQW5p
bWF0aW5nQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIApAQCAtODQsNiArOTMsOCBAQCBib29s
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5h
dGlvbihGbG9hdFBvaW50IHN0YQogICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pCiAgICAgICAg
IG1fY3VycmVudEFuaW1hdGlvbi0+c3RvcCgpOwogCisgICAgLy8gV2UgYWx3YXlzIGNyZWF0ZSBh
bmQgYXR0ZW1wdCB0byBzdGFydCB0aGUgYW5pbWF0aW9uLiBJZiBpdCB0dXJucyBvdXQgdG8gbm90
IG5lZWQgYW5pbWF0aW5nLCB0aGVuIHRoZSBhbmltYXRpb24KKyAgICAvLyByZW1haW5zIGluYWN0
aXZlLCBhbmQgd2UnbGwgcmVtb3ZlIGl0IG9uIHRoZSBuZXh0IGFuaW1hdGlvbkNhbGxiYWNrKCku
CiAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9v
dGg+KCp0aGlzKTsKICAgICByZXR1cm4gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigq
bV9jdXJyZW50QW5pbWF0aW9uKS5zdGFydEFuaW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihzdGFy
dE9mZnNldCwgZGVzdGluYXRpb25PZmZzZXQpOwogfQpAQCAtMjU0LDYgKzI2NSwzNSBAQCB2b2lk
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpyZXNuYXBBZnRlckxheW91dCgpCiAgICAgICAg
IG1fYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdlID0gdHJ1ZTsKIH0KIAordm9pZCBTY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRTY3JvbGxTbmFwQW5pbWF0aW9uKCkKK3sKKyAg
ICBpZiAobV9pc0FuaW1hdGluZ1Njcm9sbFNuYXApCisgICAgICAgIHJldHVybjsKKworICAgIExP
R19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyICIgPDwgdGhpcyA8PCAiIHN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbiAobWFpbiB0aHJl
YWQgIiA8PCBpc01haW5UaHJlYWQoKSA8PCAiKSIpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAg
IHN0YXJ0RGVmZXJyaW5nV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRHVlVG9TY3JvbGxTbmFwcGlu
ZygpOworI2VuZGlmCisgICAgbV9jbGllbnQud2lsbFN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigp
OworICAgIHNldElzQW5pbWF0aW5nU2Nyb2xsU25hcCh0cnVlKTsKK30KKwordm9pZCBTY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKQoreworICAgIGlm
ICghbV9pc0FuaW1hdGluZ1Njcm9sbFNuYXApCisgICAgICAgIHJldHVybjsKKworICAgIExPR19X
SVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyICIgPDwgdGhpcyA8PCAiIHN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uIChtYWluIHRocmVhZCAi
IDw8IGlzTWFpblRocmVhZCgpIDw8ICIpIik7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgc3Rv
cERlZmVycmluZ1doZWVsRXZlbnRUZXN0Q29tcGxldGlvbkR1ZVRvU2Nyb2xsU25hcHBpbmcoKTsK
KyNlbmRpZgorICAgIG1fY2xpZW50LmRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCk7CisKKyAg
ICBzZXRJc0FuaW1hdGluZ1Njcm9sbFNuYXAoZmFsc2UpOworfQorCiB2b2lkIFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjp1cGRhdGVLZXlib2FyZFNjcm9sbGluZ0FuaW1hdGluZ1N0YXRlKE1v
bm90b25pY1RpbWUgY3VycmVudFRpbWUpCiB7CiAgICAgaWYgKCFtX2lzQW5pbWF0aW5nS2V5Ym9h
cmRTY3JvbGxpbmcpCkBAIC0yNzQsOSArMzE0LDIwIEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXI6OnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3JvbGxBbmltYXRpb24mLCBjb25z
CiAgICAgc2Nyb2xsVG9PZmZzZXRGb3JBbmltYXRpb24oY3VycmVudE9mZnNldCk7CiB9CiAKK3Zv
aWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEFuaW1hdGlvbldpbGxTdGFydChT
Y3JvbGxBbmltYXRpb24mKQoreworICAgIHN0YXJ0T3JTdG9wQW5pbWF0aW9uQ2FsbGJhY2tzKCk7
Cit9CisKIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEFuaW1hdGlvbkRp
ZEVuZChTY3JvbGxBbmltYXRpb24mKQogeworICAgIGlmICh1c2VzU2Nyb2xsU25hcCgpICYmIG1f
aXNBbmltYXRpbmdTY3JvbGxTbmFwKSB7CisgICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlLT50cmFu
c2l0aW9uVG9EZXN0aW5hdGlvblJlYWNoZWRTdGF0ZSgpOworICAgICAgICBzdG9wU2Nyb2xsU25h
cEFuaW1hdGlvbigpOworICAgIH0KKwogICAgIG1fY2xpZW50LnNldFNjcm9sbEJlaGF2aW9yU3Rh
dHVzKFNjcm9sbEJlaGF2aW9yU3RhdHVzOjpOb3RJbkFuaW1hdGlvbik7CisgICAgc3RhcnRPclN0
b3BBbmltYXRpb25DYWxsYmFja3MoKTsKIH0KIAogU2Nyb2xsRXh0ZW50cyBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6c2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24m
KQpAQCAtMjk5LDE0ICszNTAsOCBAQCB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpz
Y3JvbGxQb3NpdGlvbkNoYW5nZWQoKQogewogfQogCi12b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3RhdGUoTW9ub3RvbmljVGltZSkKLXsK
LQotfQotCiB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVSdWJiZXJCYW5k
QW5pbWF0aW5nU3RhdGUoTW9ub3RvbmljVGltZSkKIHsKLQogfQogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyLmgKaW5kZXggNzBjMThlZmQzYmQ0OTc0YjEzZWYzN2VmZTE5ZDVjZTBlM2Ni
ZTJhZS4uYjYyNGIwMjY1MWVkZjY2NzY3Njk1ZGU1ZWYxN2VkZDZkNDBlMzJjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5o
CkBAIC0xODMsNyArMTgzLDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdm9p
ZCB1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3RhdGUoTW9ub3RvbmljVGltZSk7CiAgICAgdm9p
ZCB1cGRhdGVSdWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoTW9ub3RvbmljVGltZSk7CiAgICAgdm9p
ZCB1cGRhdGVLZXlib2FyZFNjcm9sbGluZ0FuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUpOwog
CkBAIC0xOTEsMTAgKzE5MCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SXNBbmltYXRpbmdT
Y3JvbGxTbmFwKGJvb2wpOwogICAgIHZvaWQgc2V0SXNBbmltYXRpbmdLZXlib2FyZFNjcm9sbGlu
Zyhib29sKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHN0YXJ0U2Nyb2xsU25hcEFu
aW1hdGlvbigpOwogICAgIHZvaWQgc3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKTsKIAorI2lmIFBM
QVRGT1JNKE1BQykKICAgICBib29sIHNob3VsZE92ZXJyaWRlTW9tZW50dW1TY3JvbGxpbmcoKSBj
b25zdDsKICAgICB2b2lkIHN0YXRlbGVzc1NuYXBUcmFuc2l0aW9uVGltZXJGaXJlZCgpOwogICAg
IHZvaWQgc2NoZWR1bGVTdGF0ZWxlc3NTY3JvbGxTbmFwKCk7CkBAIC0yMTcsNiArMjE2LDcgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFNjcm9sbEFuaW1hdGlvbkNsaWVudAogICAgIHZvaWQgc2Nyb2xs
QW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIC8q
IGN1cnJlbnRPZmZzZXQgKi8pIGZpbmFsOworICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uV2lsbFN0
YXJ0KFNjcm9sbEFuaW1hdGlvbiYpIGZpbmFsOwogICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlk
RW5kKFNjcm9sbEFuaW1hdGlvbiYpIGZpbmFsOwogICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0
ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSAgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5tbQppbmRleCAyNzM5NThiN2YxNzAwNjY4ZmViN2U2MTQ0NjNjYjFmYzNlZDRiNzlkLi5mMGIy
Y2ZkMDc3NTU5MmRmYjVlYmU1NmMzOGY1YzRhMzU2ZDEwMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1t
CkBAIC02OTAsOCArNjkwLDEwIEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnBy
b2Nlc3NXaGVlbEV2ZW50Rm9yU2Nyb2xsU25hcChjb25zdCBQbGF0Zm9ybVdoCiAgICAgICAgICAg
ICBzdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBX
aGVlbEV2ZW50U3RhdHVzOjpNb21lbnR1bVNjcm9sbEJlZ2luOgotICAgICAgICBpZiAobV9zY3Jv
bGxTbmFwU3RhdGUtPnRyYW5zaXRpb25Ub0dsaWRlQW5pbWF0aW9uU3RhdGUobV9jbGllbnQuc2Ny
b2xsRXh0ZW50cygpLCBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3IoKSwgbV9jbGllbnQuc2Nyb2xs
T2Zmc2V0KCksIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVsb2NpdHksIEZsb2F0U2l6ZSgtd2hlZWxF
dmVudC5kZWx0YVgoKSwgLXdoZWVsRXZlbnQuZGVsdGFZKCkpKSkKKyAgICAgICAgaWYgKG1fc2Ny
b2xsU25hcFN0YXRlLT50cmFuc2l0aW9uVG9HbGlkZUFuaW1hdGlvblN0YXRlKG1fY2xpZW50LnNj
cm9sbEV4dGVudHMoKSwgbV9jbGllbnQucGFnZVNjYWxlRmFjdG9yKCksIG1fY2xpZW50LnNjcm9s
bE9mZnNldCgpLCBtX2RyYWdFbmRlZFNjcm9sbGluZ1ZlbG9jaXR5LCBGbG9hdFNpemUoLXdoZWVs
RXZlbnQuZGVsdGFYKCksIC13aGVlbEV2ZW50LmRlbHRhWSgpKSkpIHsKKyAgICAgICAgICAgIHN0
YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigpOwogICAgICAgICAgICAgaXNNb21lbnR1bVNjcm9sbGlu
ZyA9IHRydWU7CisgICAgICAgIH0KICAgICAgICAgbV9kcmFnRW5kZWRTY3JvbGxpbmdWZWxvY2l0
eSA9IHsgfTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXaGVlbEV2ZW50U3RhdHVzOjpNb21l
bnR1bVNjcm9sbGluZzoKQEAgLTcyMCw2MiArNzIyLDYgQEAgdm9pZCBTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6dXBkYXRlR2VzdHVyZUluUHJvZ3Jlc3NTdGF0ZShjb25zdCBQbGF0Zm9ybVdo
ZWUKICAgICB1cGRhdGVSdWJiZXJCYW5kaW5nU3RhdGUoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6c3RhcnRTY3JvbGxTbmFwQW5pbWF0aW9uKCkKLXsKLSAgICBpZiAo
bV9pc0FuaW1hdGluZ1Njcm9sbFNuYXApCi0gICAgICAgIHJldHVybjsKLQotICAgIExPR19XSVRI
X1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
ICIgPDwgdGhpcyA8PCAiIHN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbiAobWFpbiB0aHJlYWQgIiA8
PCBpc01haW5UaHJlYWQoKSA8PCAiKSIpOwotCi0gICAgc3RhcnREZWZlcnJpbmdXaGVlbEV2ZW50
VGVzdENvbXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5nKCk7Ci0gICAgbV9jbGllbnQud2lsbFN0
YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigpOwotICAgIHNldElzQW5pbWF0aW5nU2Nyb2xsU25hcCh0
cnVlKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c3RvcFNjcm9sbFNu
YXBBbmltYXRpb24oKQotewotICAgIGlmICghbV9pc0FuaW1hdGluZ1Njcm9sbFNuYXApCi0gICAg
ICAgIHJldHVybjsKLQotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwg
IlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIgPDwgdGhpcyA8PCAiIHN0b3BTY3JvbGxTbmFw
QW5pbWF0aW9uIChtYWluIHRocmVhZCAiIDw8IGlzTWFpblRocmVhZCgpIDw8ICIpIik7Ci0KLSAg
ICBzdG9wRGVmZXJyaW5nV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRHVlVG9TY3JvbGxTbmFwcGlu
ZygpOwotICAgIG1fY2xpZW50LmRpZFN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCk7Ci0KLSAgICBz
ZXRJc0FuaW1hdGluZ1Njcm9sbFNuYXAoZmFsc2UpOwotfQotCi12b2lkIFNjcm9sbGluZ0VmZmVj
dHNDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3RhdGUoTW9ub3RvbmljVGlt
ZSBjdXJyZW50VGltZSkKLXsKLSAgICBpZiAoIW1faXNBbmltYXRpbmdTY3JvbGxTbmFwKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAoIXVzZXNTY3JvbGxTbmFwKCkpIHsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWlz
PFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtPihtX2N1cnJlbnRBbmltYXRpb24uZ2V0KCkpKSB7Ci0g
ICAgICAgIG1fc2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0aW9uVG9EZXN0aW5hdGlvblJlYWNoZWRT
dGF0ZSgpOwotICAgICAgICBzdG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYXV0byYgbW9tZW50dW1TY3JvbGxBbmltYXRpb24gPSBkb3duY2Fz
dDxTY3JvbGxBbmltYXRpb25Nb21lbnR1bT4oKm1fY3VycmVudEFuaW1hdGlvbik7Ci0KLSAgICBh
dXRvIGFuaW1hdGlvbk9mZnNldCA9IG1vbWVudHVtU2Nyb2xsQW5pbWF0aW9uLnNlcnZpY2VBbmlt
YXRpb24oY3VycmVudFRpbWUpOwotICAgIGJvb2wgaXNBbmltYXRpb25Db21wbGV0ZSA9ICFtb21l
bnR1bVNjcm9sbEFuaW1hdGlvbi5pc0FjdGl2ZSgpOwotCi0gICAgTE9HX1dJVEhfU1RSRUFNKFNj
cm9sbFNuYXAsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlz
IDw8ICIgdXBkYXRlU2Nyb2xsU25hcEFuaW1hdGluZ1N0YXRlIC0gaXNBbmltYXRpb25Db21wbGV0
ZSAiIDw8IGlzQW5pbWF0aW9uQ29tcGxldGUgPDwgIiBhbmltYXRpb25PZmZzZXQgIiA8PCBhbmlt
YXRpb25PZmZzZXQgPDwgIiAobWFpbiB0aHJlYWQgIiA8PCBpc01haW5UaHJlYWQoKSA8PCAiKSIp
OwotCi0gICAgc2Nyb2xsVG9PZmZzZXRGb3JBbmltYXRpb24oYW5pbWF0aW9uT2Zmc2V0KTsKLQot
ICAgIGlmIChpc0FuaW1hdGlvbkNvbXBsZXRlKSB7Ci0gICAgICAgIG1fc2Nyb2xsU25hcFN0YXRl
LT50cmFuc2l0aW9uVG9EZXN0aW5hdGlvblJlYWNoZWRTdGF0ZSgpOwotICAgICAgICBzdG9wU2Ny
b2xsU25hcEFuaW1hdGlvbigpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQo=
</data>
<flag name="commit-queue"
          id="462781"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439184</attachid>
            <date>2021-09-24 12:37:49 -0700</date>
            <delta_ts>2021-09-24 13:32:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230739-20210924123748.patch</filename>
            <type>text/plain</type>
            <size>43021</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTUwMGZhMWUyMzU1MzAw
N2ExN2QzZDNhN2FlNWM3OGI3ZTk2OGNlOC4uOWI1OTc2OTA1NjQwMjM1NzllNjhjNjQ0ZTNkMDBm
NzllNmJiYzQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTA5LTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIgZHJpdmUgYWxsIHRoZSBTY3JvbGxBbmltYXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGVh
Y2ggU2Nyb2xsQW5pbWF0aW9uIHN1YmNsYXNzIGhhdmluZyBpdHMgb3duIHRpbWVyIGNvZGUsIGhh
dmUgdGhlbSBhbGwKKyAgICAgICAgaW1wbGVtZW50IHNlcnZpY2VBbmltYXRpb25zKCksIHNvIHRo
YXQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgY2FuIHRoZW4gZHJpdmUKKyAgICAgICAgdGhl
bSBhbGwgdmlhIGl0cyBleGlzdGluZyBhbmltYXRpb25DYWxsYmFjaygpIGNvZGUuCisKKyAgICAg
ICAgR2l2ZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSBhIHRlbXBv
cmFyeSB0aW1lciB0byBkcml2ZSBpdHMgYW5pbWF0aW9ucywKKyAgICAgICAgYnV0IGxlYXZlIEZJ
WE1FIGNvbW1lbnRzIG5vdGluZyB0aGF0IHRoZXNlIGFuaW1hdGlvbnMgc2hvdWxkIG1vdmUgaW50
byBTY3JvbGxpbmdFZmZlY3RzQ29vcmRpbmF0b3IuCisKKyAgICAgICAgUHVzaCBhIGJpdCBtb3Jl
IGNvbW1vbiBTY3JvbGxBbmltYXRpb24gbG9naWMgaW50byB0aGUgYmFzZSBjbGFzcywgYW5kIGFk
ZCBhCisgICAgICAgICd3aWxsU3RhcnQnIGNsaWVudCBmdW5jdGlvbiB3aGljaCBTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlciBjYW4gdXNlIHRvCisgICAgICAgIHN0YXJ0IGNhbGxiYWNrcyBpZiBu
ZWNlc3NhcnkuCisKKyAgICAgICAgU2Nyb2xsQW5pbWF0aW9uIGxpZmV0aW1lIGlzIGNvbnRyb2xs
ZWQgYnkgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI7IGFuIGFuaW1hdGlvbgorICAgICAgICB3
aWxsIGJlIGRlbGV0ZWQgaW4gdGhlIGZpcnN0IGFuaW1hdGlvbkNhbGxiYWNrKCkgd2hlcmUgaXQg
aXMgbm8gbG9uZ2VyIGFjdGl2ZS4gVGhpcworICAgICAgICBhdm9pZHMgcG90ZW50aWFsIHBpdGZh
bGxzIHdoZXJlIGFuIGFuaW1hdGlvbiBtaWdodCBiZSBkZWxldGVkIGluc2lkZSB0aGUgc2Nyb2xs
QW5pbWF0aW9uRGlkRW5kKCkKKyAgICAgICAgY2FsbGJhY2suCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxF
dmVudDo6c3dpcGVWZWxvY2l0eSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25DbGllbnQ6OnNjcm9s
bEFuaW1hdGlvbldpbGxTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjppc0FjdGl2ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OmN1cnJlbnRPZmZzZXQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjpkaWRTdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OmRpZEVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb246OnRpbWVTaW5jZVN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvbjo6c2VydmljZUFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpTY3JvbGxBbmltYXRpb25L
aW5ldGljKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmNvbXB1
dGVWZWxvY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpz
dGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzZXJ2aWNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6YW5pbWF0aW9uVGlt
ZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5l
dGljOjpkZWx0YVRvTmV4dEZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25LaW5ldGljLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
TW9tZW50dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW06
OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpyZXRhcmdldEFjdGl2ZUFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c2VydmljZUFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6dXBkYXRlU2Nyb2xsRXh0
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6aXNBY3Rp
dmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1v
bWVudHVtLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRP
clJldGFyZ2V0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNt
b290aDo6c2VydmljZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRp
b25TbW9vdGg6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
aW9uU21vb3RoOjphbmltYXRpb25UaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnROZXh0VGltZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjppc0FjdGl2ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmFuaW1hdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydE9yU3Rv
cEFuaW1hdGlvbkNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEFuaW1hdGlvbldpbGxT
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Ny
b2xsQW5pbWF0aW9uRGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3RhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsU25hcCk6IElmIHRyYW5zaXRpb25Ub0dsaWRlQW5pbWF0aW9uU3RhdGUoKQorICAgICAgICBz
dGFydHMgYW4gYW5pbWF0aW9uIHdlIGhhdmUgdG8gY2FsbCBzdGFydFNjcm9sbFNuYXBBbmltYXRp
b24oKSAoYmVjYXVzZSB0aGUgcHJldmlvdXMgc3RvcCgpIHdpbGwgaGF2ZQorICAgICAgICBwdXRz
IHVzIGluIGEgIm5vdCBhbmltYXRpbmcgc2Nyb2xsIHNuYXAiIHN0YXRlKS4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwQW5pbWF0
aW5nU3RhdGUpOiBEZWxldGVkLgorCiAyMDIxLTA5LTIzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUn
cyBTY3JvbGxBbmltYXRpb25Nb21lbnR1bSBpbnRvIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEuY3BwCmluZGV4IGU0MDNlMjQxNTc0YWU5ZTUzMmFiODNmMjkyYmE4YWRkNWZhYzQ2
MGMuLjBmYjUzOGZjNjgwYWFlNDI2MmRlZDU5YmM0ZmNkZTgwZDZkMmJlODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEu
Y3BwCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogCisjaWYgVVNF
KEdMSUJfRVZFTlRfTE9PUCkKKyNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3Jp
dHkuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JvbGxBbmltYXRp
b247CiBjbGFzcyBTY3JvbGxBbmltYXRpb25LaW5ldGljOwpAQCAtMzksMTIgKzQzLDE4IEBAIGNs
YXNzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM7CiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEo
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUsIGJvb2wgc2Nyb2xsQW5p
bWF0b3JFbmFibGVkKQogICAgIDogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZShz
Y3JvbGxpbmdOb2RlKQogICAgICwgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQoc2Nyb2xsQW5pbWF0
b3JFbmFibGVkKQorI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCisgICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwg
dGhpcywgJlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRp
b25UaW1lckZpcmVkKQorI2VuZGlmCiB7CisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8
fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQorICAg
IG1fYW5pbWF0aW9uVGltZXIuc2V0UHJpb3JpdHkoV1RGOjpSdW5Mb29wU291cmNlUHJpb3JpdHk6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvclRpbWVyKTsKKyNlbmRpZgorI2VuZGlmICAgIAogfQogCi1T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6flNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhKCkKLXsKLX0KK1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEoKSA9IGRlZmF1bHQ7CiAKIHN0ZDo6dW5pcXVlX3B0cjxOaWNvc2lhOjpTY2VuZUlu
dGVncmF0aW9uOjpVcGRhdGVTY29wZT4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWE6OmNyZWF0ZVVwZGF0ZVNjb3BlKCkKIHsKQEAgLTgwLDYgKzkwLDcgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fa2luZXRpY0FuaW1hdGlv
biA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oKnRoaXMpOworICAgIHN0YXJ0
VGltZXJJZk5lY2Vzc2FyeSgpOwogfQogI2VuZGlmCiAKQEAgLTkwLDYgKzEwMSw3IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFu
aW1hdGlvblNtb290aCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc21vb3RoQW5pbWF0aW9u
ID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KCp0aGlzKTsKKyAgICBzdGFydFRp
bWVySWZOZWNlc3NhcnkoKTsKIH0KICNlbmRpZgogCkBAIC0xMTYsNiArMTI4LDcgQEAgV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjpoYW5kbGVXaGVlbEUKICAgICB9CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBUaGlzIG5l
ZWRzIHRvIHNoYXJlIGNvZGUgd2l0aCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudCgp
LCBwZXJoYXBzIGJ5IG1vdmluZyBjb2RlIGludG8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OmhhbmRsZVdoZWVsRXZlbnQoKS4KICAgICBmbG9hdCBkZWx0YVggPSBjYW5IYXZlSG9yaXpvbnRh
bFNjcm9sbGJhciA/IHdoZWVsRXZlbnQuZGVsdGFYKCkgOiAwOwogICAgIGZsb2F0IGRlbHRhWSA9
IGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhciA/IHdoZWVsRXZlbnQuZGVsdGFZKCkgOiAwOwogICAg
IGlmICgoZGVsdGFYIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPj0gbWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkueCgpKQpAQCAtMTg3LDYgKzIwMCw5IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkK
ICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCiAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5z
dG9wKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQorICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOworI2VuZGlmCiB9
CiAKIGZsb2F0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdl
U2NhbGVGYWN0b3IoKQpAQCAtMTk3LDcgKzIxMyw3IEBAIGZsb2F0IFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdlU2NhbGVGYWN0b3IoKQogICAgICAgICBkb3du
Y2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKCkpLmZy
YW1lU2NhbGVGYWN0b3IoKSA6IDEuOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0
aW9uJiBhbmltYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQordm9pZCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBk
YXRlKFNjcm9sbEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQp
CiB7CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCiAgICAgaWYgKCZhbmltYXRpb24gPT0g
bV9raW5ldGljQW5pbWF0aW9uLmdldCgpKSB7CkBAIC0yMDYsNyArMjIyLDkgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9uRGlk
VXBkYXRlKFNjcm9sbEEKICAgICB9CiAjZW5kaWYKICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY3Jl
YXRlVXBkYXRlU2NvcGUoKTsKLSAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsVG8ocG9zaXRpb24p
OworCisgICAgLy8gRklYTUU6IE5lZWQgdG8gY29udmVydCBhbiBvZmZzZXQgdG8gYSBwb3NpdGlv
bi4KKyAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsVG8ob2Zmc2V0KTsKIH0KIAogdm9pZCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9uRGlk
RW5kKFNjcm9sbEFuaW1hdGlvbiYpCkBAIC0yMjEsNiArMjM5LDM1IEBAIFNjcm9sbEV4dGVudHMg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEV4dGVudHNG
b3JBbmltYXRpCiAgICAgfTsKIH0KIAordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6c3RhcnRUaW1lcklmTmVjZXNzYXJ5KCkKK3sKKyNpZiBFTkFCTEUoS0lO
RVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlmIChtX2Fu
aW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpYyBj
b25zdGV4cHIgZG91YmxlIGZyYW1lUmF0ZSA9IDYwOworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vj
b25kcyB0aWNrVGltZSA9IDFfcyAvIGZyYW1lUmF0ZTsKKyAgICAKKyAgICBtX2FuaW1hdGlvblRp
bWVyLnN0YXJ0UmVwZWF0aW5nKHRpY2tUaW1lKTsKKyNlbmRpZgorfQorCit2b2lkIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZpcmVkKCkK
K3sKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShTTU9PVEhfU0NST0xM
SU5HKQorICAgIGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisjZW5kaWYKKworI2lm
IEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBpZiAobV9raW5ldGljQW5pbWF0aW9uKQor
ICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnNlcnZpY2VBbmltYXRpb24obm93KTsKKyNlbmRp
ZgorI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlmIChtX3Ntb290aEFuaW1hdGlv
bikKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNlcnZpY2VBbmltYXRpb24obm93KTsKKyNl
bmRpZiAgICAKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmgKaW5kZXggNjllZWIxZWU2
MDYxMTVmM2IwNzE1OWM1NjI3YmFkZTE4YTJiZTE3MC4uNzQ3NDJjMWZlM2E4Njg2YWU1MzIxNGEy
ZGFmMGRhYTIyYjk1ZWViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaApAQCAtNDMsOCArNDMsMTMgQEAKICNpbmNsdWRl
ICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEtJTkVUSUNf
U0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6IFRoaXMg
c2hvdWxkIG5vdCBiZSBhIFNjcm9sbEFuaW1hdGlvbkNsaWVudC4KIGNsYXNzIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhIDogcHVibGljIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGUsIHB1YmxpYyBTY3JvbGxBbmltYXRpb25DbGllbnQgewogcHVibGlj
OgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
KFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQp
OwpAQCAtNjcsMTcgKzcyLDI4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVTY3JvbGxBbmlt
YXRpb25TbW9vdGgoKTsKICNlbmRpZgogCisgICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7
CisgICAgdm9pZCBzdGFydFRpbWVySWZOZWNlc3NhcnkoKTsKKwogICAgIC8vIFNjcm9sbEFuaW1h
dGlvbkNsaWVudAogICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1h
dGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRQb3NpdGlvbikgZmluYWw7CiAgICAgdm9p
ZCBzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7CiAgICAgU2Ny
b2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpIGZp
bmFsOwogCisgICAgLy8gRklYTUU6IFRoZXNlIGFuaW1hdGlvbnMgc2hvdWxkIG5vdCBsaXZlIGhl
cmUuIFRoZXkgbmVlZCB0byBiZSBtYW5hZ2VkIGJ5IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
LAorICAgIC8vIHRvIGJlIGNvb3JkaW5hdGVkIHdpdGggb3RoZXIga2luZHMgb2Ygc2Nyb2xsIGFu
aW1hdGlvbnMsIGFuZCBiZSByZWZlcmVuY2VkIGJ5IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
OjptX2N1cnJlbnRBbmltYXRpb24uCisgICAgCiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5H
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNB
bmltYXRpb247CiAjZW5kaWYKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX3Ntb290aEFuaW1hdGlvbjsKICNl
bmRpZgorCisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1ND
Uk9MTElORykKKyAgICAvLyBGSVhNRTogV2hlbiB0aGUgYWJvdmUgdHdvIGFuaW1hdGlvbnMgYXJl
IHJlbW92ZWQsIHRoaXMgdGltZXIgY2FuIGJlIHJlbW92ZWQuCisgICAgUnVuTG9vcDo6VGltZXI8
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE+IG1fYW5pbWF0aW9uVGlt
ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKaW5kZXggYzc0ODg3MDRjOGZkNjQwNmU1
NjExOWVjNWJkZjI4MDY0ZjhkZDJkOS4uMDRlNjY3MzIyYWRmNjUwNzdhZTRiODNhODI0Mzg1ZTI1
MmQyY2FlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVl
bEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50
LmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW5kT2ZOb25Nb21l
bnR1bVNjcm9sbCgpIGNvbnN0OwogICAgIGJvb2wgaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNj
cm9sbCgpIGNvbnN0OwotICAgIEZsb2F0UG9pbnQgc3dpcGVWZWxvY2l0eSgpIGNvbnN0OworICAg
IEZsb2F0U2l6ZSBzd2lwZVZlbG9jaXR5KCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KFdJTikKQEAgLTI2MiwxMCArMjYyLDEwIEBAIGlubGluZSBib29sIFBsYXRmb3JtV2hlZWxFdmVu
dDo6aXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cGhhc2UgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok5vbmUgJiYgbV9tb21lbnR1bVBoYXNl
ID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpCZWdhbjsKIH0KIAotaW5saW5lIEZsb2F0UG9p
bnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKK2lubGluZSBGbG9h
dFNpemUgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKIHsKICAgICAv
LyBUaGUgc3dpcGluZyB2ZWxvY2l0eSBpcyBzdG9yZWQgaW4gdGhlIGRlbHRhcyBvZiB0aGUgZXZl
bnQgZGVjbGFyaW5nIGl0LgotICAgIHJldHVybiBpc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Ny
b2xsKCkgPyBGbG9hdFBvaW50KG1fd2hlZWxUaWNrc1gsIG1fd2hlZWxUaWNrc1kpIDogRmxvYXRQ
b2ludCgpOworICAgIHJldHVybiBpc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkgPyBG
bG9hdFNpemUobV93aGVlbFRpY2tzWCwgbV93aGVlbFRpY2tzWSkgOiBGbG9hdFNpemUoKTsKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKaW5kZXggNWM2NGFkN2UyNzU4MWE3NDA2MDczMmJlOWRh
NzBmOWM1OTQ3ZjM2ZC4uMTU1MzE1OGQwNTZiNmNmNTI2Zjg3MmNlMTZkZjViNzIxY2RhYmNmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKQEAgLTI2LDYgKzI2
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUg
PHd0Zi9Nb25vdG9uaWNUaW1lLmg+CkBAIC00MCw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5TY3JvbGxBbmltYXRpb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0
UG9pbnQmIC8qIGN1cnJlbnRPZmZzZXQgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxB
bmltYXRpb25XaWxsU3RhcnQoU2Nyb2xsQW5pbWF0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSB7IH0KICAgICB2aXJ0dWFs
IFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24m
KSA9IDA7CiB9OwpAQCAtNjIsMTYgKzY0LDQzIEBAIHB1YmxpYzoKICAgICBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2FuaW1hdGlvblR5cGU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCByZXRh
cmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5hdGlvbk9mZnNl
dCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpCisgICAgeworICAg
ICAgICBpZiAoIW1faXNBY3RpdmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRpZEVu
ZCgpOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBt
X2lzQWN0aXZlOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSB7IH07
CiAgICAgCi0gICAgLy8gUmV0dXJucyBjdXJyZW50IG9mZnNldC4KLSAgICB2aXJ0dWFsIEZsb2F0
UG9pbnQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSB7IHJldHVybiB7IH07IH07Cisg
ICAgRmxvYXRQb2ludCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50T2Zm
c2V0OyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3Rvbmlj
VGltZSkgPSAwOwogCiBwcm90ZWN0ZWQ6CisgICAgdm9pZCBkaWRTdGFydChNb25vdG9uaWNUaW1l
IGN1cnJlbnRUaW1lKQorICAgIHsKKyAgICAgICAgbV9zdGFydFRpbWUgPSBjdXJyZW50VGltZTsK
KyAgICAgICAgbV9pc0FjdGl2ZSA9IHRydWU7CisgICAgICAgIG1fY2xpZW50LnNjcm9sbEFuaW1h
dGlvbldpbGxTdGFydCgqdGhpcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZGlkRW5kKCkKKyAg
ICB7CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgbV9jbGllbnQuc2Nyb2xs
QW5pbWF0aW9uRGlkRW5kKCp0aGlzKTsKKyAgICB9CisgICAgCisgICAgU2Vjb25kcyB0aW1lU2lu
Y2VTdGFydChNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGN1cnJlbnRUaW1lIC0gbV9zdGFydFRpbWU7CisgICAgfQorCiAgICAgU2Nyb2xsQW5p
bWF0aW9uQ2xpZW50JiBtX2NsaWVudDsKICAgICBjb25zdCBUeXBlIG1fYW5pbWF0aW9uVHlwZTsK
KyAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OworICAgIE1vbm90b25pY1RpbWUgbV9zdGFy
dFRpbWU7CisgICAgRmxvYXRQb2ludCBtX2N1cnJlbnRPZmZzZXQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25LaW5ldGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuY3BwCmluZGV4IGE5YjY2NTRhNmJiNjY1OTVkMmUzNTc2MzBkNTQ0ZjRkYmJi
ODVjYTMuLjg3MzAwMzVkNjAzNzI4ZWMyMGJiNjY4NzRjYjcxZGYyZjU0NzNjYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCkBA
IC0yOSwxMCArMjksNiBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAKLSNp
ZiBVU0UoR0xJQl9FVkVOVF9MT09QKQotI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQ
cmlvcml0eS5oPgotI2VuZGlmCi0KIC8qCiAgKiBQZXJBeGlzRGF0YSBpcyBhIHBvcnQgb2YgR3Rr
S2luZXRpY1Njcm9sbGluZyBhcyBvZiBHVEsrIDMuMjAsCiAgKiBtaW1pY2tpbmcgaXRzIEFQSSBh
bmQgaXRzIGJlaGF2aW9yLgpAQCAtNjcsMTIgKzYzLDkgQEAKICAqLwogCiBzdGF0aWMgY29uc3Rl
eHByIGRvdWJsZSBkZWNlbEZyaWN0aW9uID0gNDsKLXN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGZy
YW1lUmF0ZSA9IDYwOwogc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdmVsb2NpdHlBY2N1bXVsYXRp
b25GbG9vciA9IDAuMzM7CiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSB2ZWxvY2l0eUFjY3VtdWxh
dGlvbkNlaWwgPSAxLjA7CiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSB2ZWxvY2l0eUFjY3VtdWxh
dGlvbk1heCA9IDYuMDsKLXN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyB0aWNrVGltZSA9IDFfcyAv
IGZyYW1lUmF0ZTsKLXN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBtaW5pbXVtVGltZXJJbnRlcnZh
bCB7IDFfbXMgfTsKIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBzY3JvbGxDYXB0dXJlVGhyZXNo
b2xkIHsgMTUwX21zIH07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg3LDExICs4MCwxMSBA
QCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQZXJBeGlzRGF0YTo6UGVyQXhpc0RhdGEoZG91Ymxl
IGxvd2VyLCBkb3VibGUgdXBwZXIsIGRvdQogewogfQogCi1ib29sIFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKFNlY29uZHMgdGltZURlbHRhKQorYm9v
bCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbChTZWNv
bmRzIGVsYXBzZWRUaW1lKQogewogICAgIGF1dG8gbGFzdE9mZnNldCA9IG1fb2Zmc2V0OwogICAg
IGF1dG8gbGFzdFRpbWUgPSBtX2VsYXBzZWRUaW1lOwotICAgIG1fZWxhcHNlZFRpbWUgKz0gdGlt
ZURlbHRhOworICAgIG1fZWxhcHNlZFRpbWUgPSBlbGFwc2VkVGltZTsKIAogICAgIGRvdWJsZSBl
eHBvbmVudGlhbFBhcnQgPSBleHAoLWRlY2VsRnJpY3Rpb24gKiBtX2VsYXBzZWRUaW1lLnZhbHVl
KCkpOwogICAgIG1fb2Zmc2V0ID0gbV9jb2VmMSArIG1fY29lZjIgKiBleHBvbmVudGlhbFBhcnQ7
CkBAIC0xMDUsNyArOTgsNyBAQCBib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlBlckF4aXNE
YXRhOjphbmltYXRlU2Nyb2xsKFNlY29uZHMgdGltZURlbHRhKQogICAgICAgICBtX29mZnNldCA9
IG1fdXBwZXI7CiAgICAgfQogCi0gICAgaWYgKGZhYnMobV92ZWxvY2l0eSkgPCAxIHx8IChsYXN0
VGltZSAmJiBmYWJzKG1fb2Zmc2V0IC0gbGFzdE9mZnNldCkgPCAxKSkgeworICAgIGlmIChmYWJz
KG1fdmVsb2NpdHkpIDwgMSB8fCAobGFzdFRpbWUgPiAwX3MgJiYgZmFicyhtX29mZnNldCAtIGxh
c3RPZmZzZXQpIDwgMSkpIHsKICAgICAgICAgbV9vZmZzZXQgPSByb3VuZChtX29mZnNldCk7CiAg
ICAgICAgIG1fdmVsb2NpdHkgPSAwOwogICAgIH0KQEAgLTExNSwyNSArMTA4LDExIEBAIGJvb2wg
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoU2Vjb25k
cyB0aW1lRGVsdGEpCiAKIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktp
bmV0aWMoU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBTY3JvbGxBbmltYXRp
b24oVHlwZTo6S2luZXRpYywgY2xpZW50KQotICAgICwgbV9hbmltYXRpb25UaW1lcihSdW5Mb29w
OjpjdXJyZW50KCksIHRoaXMsICZTY3JvbGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1l
ckZpcmVkKQogewotI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCi0gICAgbV9hbmltYXRpb25UaW1l
ci5zZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yVGltZXIpOwotI2VuZGlmCiB9CiAKIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6On5TY3Jv
bGxBbmltYXRpb25LaW5ldGljKCkgPSBkZWZhdWx0OwogCi12b2lkIFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OnN0b3AoKQotewotICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOwotfQotCi1ib29s
IFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpOwotfQotCiB2b2lkIFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OmFwcGVuZFRvU2Nyb2xsSGlzdG9yeShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2
ZW50KQogewogICAgIG1fc2Nyb2xsSGlzdG9yeS5yZW1vdmVBbGxNYXRjaGluZyhbJmV2ZW50XSAo
UGxhdGZvcm1XaGVlbEV2ZW50JiBvdGhlckV2ZW50KSAtPiBib29sIHsKQEAgLTE0OCw3ICsxMjcs
NyBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmNsZWFyU2Nyb2xsSGlzdG9yeSgpCiAg
ICAgbV9zY3JvbGxIaXN0b3J5LmNsZWFyKCk7CiB9CiAKLUZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYzo6Y29tcHV0ZVZlbG9jaXR5KCkKK0Zsb2F0U2l6ZSBTY3JvbGxBbmltYXRpb25L
aW5ldGljOjpjb21wdXRlVmVsb2NpdHkoKQogewogICAgIGlmIChtX3Njcm9sbEhpc3RvcnkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTY2LDI1ICsxNDUsMjQgQEAgRmxvYXRQ
b2ludCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpjb21wdXRlVmVsb2NpdHkoKQogICAgIC8vIEZJ
WE1FOiBJdCdzIG9kZCB0aGF0IGNvbXB1dGVWZWxvY2l0eSgpIGhhcyB0aGUgc2lkZSBlZmZlY3Qg
b2YgY2xlYXJpbmcgaGlzdG9yeS4KICAgICBtX3Njcm9sbEhpc3RvcnkuY2xlYXIoKTsKIAotICAg
IHJldHVybiBGbG9hdFBvaW50KGFjY3VtRGVsdGEueCgpICogLTEgLyAobGFzdCAtIGZpcnN0KS52
YWx1ZSgpLCBhY2N1bURlbHRhLnkoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCkudmFsdWUoKSk7Cisg
ICAgcmV0dXJuIEZsb2F0U2l6ZShhY2N1bURlbHRhLngoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCku
dmFsdWUoKSwgYWNjdW1EZWx0YS55KCkgKiAtMSAvIChsYXN0IC0gZmlyc3QpLnZhbHVlKCkpOwog
fQogCi1ib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRo
SW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZs
b2F0UG9pbnQmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCkKK2Jv
b2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFs
VmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXpl
JiB2ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwpCiB7CiAgICAgc3Rv
cCgpOwogCi0gICAgaWYgKCF2ZWxvY2l0eS54KCkgJiYgIXZlbG9jaXR5LnkoKSkgewotICAgICAg
ICBtX29mZnNldCA9IGluaXRpYWxPZmZzZXQ7CisgICAgaWYgKHZlbG9jaXR5LmlzWmVybygpKSB7
CiAgICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fdmVy
dGljYWxEYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgYXV0byBkZWx0YSA9IGRlbHRhVG9OZXh0RnJhbWUoKTsKKyAgICBhdXRvIGVsYXBzZWRU
aW1lID0gMF9zOwogICAgIGF1dG8gZXh0ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHNGb3JB
bmltYXRpb24oKnRoaXMpOwogCiAgICAgYXV0byBhY2N1bXVsYXRlVmVsb2NpdHkgPSBbJl0oZG91
YmxlIHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBheGlzRGF0YSkgLT4gZG91
YmxlIHsKLSAgICAgICAgaWYgKGF4aXNEYXRhICYmIGF4aXNEYXRhLnZhbHVlKCkuYW5pbWF0ZVNj
cm9sbChkZWx0YSkpIHsKKyAgICAgICAgaWYgKGF4aXNEYXRhICYmIGF4aXNEYXRhLnZhbHVlKCku
YW5pbWF0ZVNjcm9sbChlbGFwc2VkVGltZSkpIHsKICAgICAgICAgICAgIGRvdWJsZSBsYXN0VmVs
b2NpdHkgPSBheGlzRGF0YS52YWx1ZSgpLnZlbG9jaXR5KCk7CiAgICAgICAgICAgICBpZiAoKHN0
ZDo6c2lnbmJpdChsYXN0VmVsb2NpdHkpID09IHN0ZDo6c2lnbmJpdCh2ZWxvY2l0eSkpCiAgICAg
ICAgICAgICAgICAgJiYgKHN0ZDo6YWJzKHZlbG9jaXR5KSA+PSBzdGQ6OmFicyhsYXN0VmVsb2Np
dHkgKiB2ZWxvY2l0eUFjY3VtdWxhdGlvbkZsb29yKSkpIHsKQEAgLTIwMSwyMCArMTc5LDE5IEBA
IGJvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0
aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQCiAgICAgaWYgKG1heUhTY3JvbGwpIHsKICAgICAgICAg
bV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNl
dCgpLngoKSwKICAgICAgICAgICAgIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpLngoKSwK
LSAgICAgICAgICAgIGluaXRpYWxPZmZzZXQueCgpLCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2Np
dHkueCgpLCBtX2hvcml6b250YWxEYXRhKSk7CisgICAgICAgICAgICBpbml0aWFsT2Zmc2V0Lngo
KSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9jaXR5LndpZHRoKCksIG1faG9yaXpvbnRhbERhdGEp
KTsKICAgICB9IGVsc2UKICAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmIChtYXlWU2Nyb2xsKSB7CiAgICAgICAgIG1fdmVydGljYWxEYXRhID0gUGVyQXhp
c0RhdGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAogICAgICAgICAgICAgZXh0
ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAotICAgICAgICAgICAgaW5pdGlhbE9mZnNl
dC55KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS55KCksIG1fdmVydGljYWxEYXRhKSk7
CisgICAgICAgICAgICBpbml0aWFsT2Zmc2V0LnkoKSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9j
aXR5LmhlaWdodCgpLCBtX3ZlcnRpY2FsRGF0YSkpOwogICAgIH0gZWxzZQogICAgICAgICBtX3Zl
cnRpY2FsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIG1fb2Zmc2V0ID0gaW5pdGlhbE9mZnNl
dDsKLSAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gdGlja1RpbWUgLyAy
LjsKLSAgICBhbmltYXRpb25UaW1lckZpcmVkKCk7CisgICAgbV9jdXJyZW50T2Zmc2V0ID0gaW5p
dGlhbE9mZnNldDsKKyAgICBkaWRTdGFydChNb25vdG9uaWNUaW1lOjpub3coKSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTIyNywzMCArMjA0LDIzIEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYzo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmFuaW1hdGlv
blRpbWVyRmlyZWQoKQordm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzZXJ2aWNlQW5pbWF0
aW9uKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCiB7Ci0gICAgYXV0byBkZWx0YSA9IGRlbHRh
VG9OZXh0RnJhbWUoKTsKKyAgICBhdXRvIGVsYXBzZWRUaW1lID0gdGltZVNpbmNlU3RhcnQoY3Vy
cmVudFRpbWUpOwogCi0gICAgaWYgKG1faG9yaXpvbnRhbERhdGEgJiYgIW1faG9yaXpvbnRhbERh
dGEudmFsdWUoKS5hbmltYXRlU2Nyb2xsKGRlbHRhKSkKKyAgICBpZiAobV9ob3Jpem9udGFsRGF0
YSAmJiAhbV9ob3Jpem9udGFsRGF0YS52YWx1ZSgpLmFuaW1hdGVTY3JvbGwoZWxhcHNlZFRpbWUp
KQogICAgICAgICBtX2hvcml6b250YWxEYXRhID0gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKG1f
dmVydGljYWxEYXRhICYmICFtX3ZlcnRpY2FsRGF0YS52YWx1ZSgpLmFuaW1hdGVTY3JvbGwoZGVs
dGEpKQorICAgIGlmIChtX3ZlcnRpY2FsRGF0YSAmJiAhbV92ZXJ0aWNhbERhdGEudmFsdWUoKS5h
bmltYXRlU2Nyb2xsKGVsYXBzZWRUaW1lKSkKICAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAvLyBJZiBvbmUgb2YgdGhlIGF4ZXMgZGlkbid0IGZpbmlzaCBpdHMg
YW5pbWF0aW9uIHdlIG11c3QgY29udGludWUgaXQuCi0gICAgaWYgKG1faG9yaXpvbnRhbERhdGEg
fHwgbV92ZXJ0aWNhbERhdGEpCi0gICAgICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90
KHN0ZDo6bWF4KG1pbmltdW1UaW1lckludGVydmFsLCBkZWx0YSkpOworICAgIGRvdWJsZSB4ID0g
bV9ob3Jpem9udGFsRGF0YSA/IG1faG9yaXpvbnRhbERhdGEudmFsdWUoKS5vZmZzZXQoKSA6IG1f
Y3VycmVudE9mZnNldC54KCk7CisgICAgZG91YmxlIHkgPSBtX3ZlcnRpY2FsRGF0YSA/IG1fdmVy
dGljYWxEYXRhLnZhbHVlKCkub2Zmc2V0KCkgOiBtX2N1cnJlbnRPZmZzZXQueSgpOworICAgIG1f
Y3VycmVudE9mZnNldCA9IEZsb2F0UG9pbnQoeCwgeSk7CisgICAgbV9jbGllbnQuc2Nyb2xsQW5p
bWF0aW9uRGlkVXBkYXRlKCp0aGlzLCBtX2N1cnJlbnRPZmZzZXQpOwogCi0gICAgZG91YmxlIHgg
PSBtX2hvcml6b250YWxEYXRhID8gbV9ob3Jpem9udGFsRGF0YS52YWx1ZSgpLm9mZnNldCgpIDog
bV9vZmZzZXQueCgpOwotICAgIGRvdWJsZSB5ID0gbV92ZXJ0aWNhbERhdGEgPyBtX3ZlcnRpY2Fs
RGF0YS52YWx1ZSgpLm9mZnNldCgpIDogbV9vZmZzZXQueSgpOwotICAgIG1fb2Zmc2V0ID0gRmxv
YXRQb2ludCh4LCB5KTsKLSAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoKnRo
aXMsIG1fb2Zmc2V0KTsKLX0KLQotU2Vjb25kcyBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpkZWx0
YVRvTmV4dEZyYW1lKCkKLXsKLSAgICBNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lID0gTW9ub3Rv
bmljVGltZTo6bm93KCk7Ci0gICAgcmV0dXJuIDFfcyAqIGNlaWwoKGN1cnJlbnRUaW1lIC0gbV9z
dGFydFRpbWUpLnZhbHVlKCkgKiBmcmFtZVJhdGUpIC8gZnJhbWVSYXRlIC0gKGN1cnJlbnRUaW1l
IC0gbV9zdGFydFRpbWUpOworICAgIGlmICghbV9ob3Jpem9udGFsRGF0YSAmJiAhbV92ZXJ0aWNh
bERhdGEpCisgICAgICAgIGRpZEVuZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGlj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKaW5k
ZXggMTQxM2YzMzI4OGU5ZGUyZjNkMmVkZTZhOWZkZDJlMTcxODE0Yzg1YS4uYjc0ZDc3MDNlNjY5
NWM4NzhkZTExMzViNGM4ZGMzODM2ZWNlODExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5j
bHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbi5oIgotI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsMjggKzYw
LDIwIEBAIHB1YmxpYzoKICAgICBTY3JvbGxBbmltYXRpb25LaW5ldGljKFNjcm9sbEFuaW1hdGlv
bkNsaWVudCYpOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKIAotICAg
IC8vIEZJWE1FOiBWZWxvY2l0eSBzaG91bGQgYmUgYSBGbG9hdFNpemUuCi0gICAgYm9vbCBzdGFy
dEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0
aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBi
b29sIG1heVZTY3JvbGwpOwotCisgICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRp
YWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNp
emUmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCk7CiAgICAgYm9v
bCByZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdPZmZzZXQpIGZp
bmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBm
aW5hbDsKKworICAgIHZvaWQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsK
IAogICAgIHZvaWQgYXBwZW5kVG9TY3JvbGxIaXN0b3J5KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpOwogICAgIHZvaWQgY2xlYXJTY3JvbGxIaXN0b3J5KCk7CiAKLSAgICBGbG9hdFBvaW50IGNv
bXB1dGVWZWxvY2l0eSgpOworICAgIEZsb2F0U2l6ZSBjb21wdXRlVmVsb2NpdHkoKTsKIAogcHJp
dmF0ZToKLSAgICB2b2lkIGFuaW1hdGlvblRpbWVyRmlyZWQoKTsKLSAgICBTZWNvbmRzIGRlbHRh
VG9OZXh0RnJhbWUoKTsKLQogICAgIHN0ZDo6b3B0aW9uYWw8UGVyQXhpc0RhdGE+IG1faG9yaXpv
bnRhbERhdGE7CiAgICAgc3RkOjpvcHRpb25hbDxQZXJBeGlzRGF0YT4gbV92ZXJ0aWNhbERhdGE7
CiAKLSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwotICAgIFJ1bkxvb3A6OlRpbWVyPFNj
cm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fYW5pbWF0aW9uVGltZXI7Ci0gICAgRmxvYXRQb2ludCBt
X29mZnNldDsKICAgICBWZWN0b3I8UGxhdGZvcm1XaGVlbEV2ZW50PiBtX3Njcm9sbEhpc3Rvcnk7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25Nb21lbnR1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25N
b21lbnR1bS5jcHAKaW5kZXggZmE1NzM2OTE1NGEzODc5NDI5MzBkNmY4MzU1ZGVmMWM3ZmVkMDcz
ZS4uMjIzODVlMWYwYjliMmM1OGE5MDJlNzVkNDkxZjJhNDQ4ZTc3ZjQ4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcApAQCAt
MjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNjcm9sbGlu
Z01vbWVudHVtQ2FsY3VsYXRvci5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Miw1NSArNTEsNDkgQEAgYm9vbCBTY3JvbGxB
bmltYXRpb25Nb21lbnR1bTo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHko
Y29uc3QgRmxvYXQKIAogICAgIGlmIChwcmVkaWN0ZWRTY3JvbGxPZmZzZXQgPT0gaW5pdGlhbE9m
ZnNldCkgewogICAgICAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IG51bGxwdHI7Ci0gICAgICAg
IG1fYW5pbWF0aW9uQ29tcGxldGUgPSB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgbV9zdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICBtX2FuaW1h
dGlvbkNvbXBsZXRlID0gZmFsc2U7CisgICAgZGlkU3RhcnQoTW9ub3RvbmljVGltZTo6bm93KCkp
OwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpy
ZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5hdGlvbikK
IHsKLSAgICBpZiAobV9tb21lbnR1bUNhbGN1bGF0b3IpIHsKKyAgICBpZiAobV9tb21lbnR1bUNh
bGN1bGF0b3IgJiYgaXNBY3RpdmUoKSkgewogICAgICAgICBtX21vbWVudHVtQ2FsY3VsYXRvci0+
c2V0UmV0YXJnZXRlZFNjcm9sbE9mZnNldChuZXdEZXN0aW5hdGlvbik7CiAgICAgICAgIGF1dG8g
bmV3RHVyYXRpb24gPSBtX21vbWVudHVtQ2FsY3VsYXRvci0+YW5pbWF0aW9uRHVyYXRpb24oKTsK
LSAgICAgICAgbV9hbmltYXRpb25Db21wbGV0ZSA9IG5ld0R1cmF0aW9uID4gMF9zOwotICAgICAg
ICByZXR1cm4gIW1fYW5pbWF0aW9uQ29tcGxldGU7CisgICAgICAgIGJvb2wgYW5pbWF0aW9uQ29t
cGxldGUgPSBuZXdEdXJhdGlvbiA+IDBfczsKKyAgICAgICAgaWYgKGFuaW1hdGlvbkNvbXBsZXRl
KQorICAgICAgICAgICAgZGlkRW5kKCk7CisKKyAgICAgICAgcmV0dXJuICFhbmltYXRpb25Db21w
bGV0ZTsKICAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgU2Nyb2xsQW5pbWF0
aW9uTW9tZW50dW06OnN0b3AoKQogewogICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yID0gbnVsbHB0
cjsKLSAgICBtX2FuaW1hdGlvbkNvbXBsZXRlID0gdHJ1ZTsKLSAgICBtX2NsaWVudC5zY3JvbGxB
bmltYXRpb25EaWRFbmQoKnRoaXMpOwotfQotCi1ib29sIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVt
Ojppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtX2FuaW1hdGlvbkNvbXBsZXRlOwor
ICAgIFNjcm9sbEFuaW1hdGlvbjo6c3RvcCgpOwogfQogCi1GbG9hdFBvaW50IFNjcm9sbEFuaW1h
dGlvbk1vbWVudHVtOjpzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUp
Cit2b2lkIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25p
Y1RpbWUgY3VycmVudFRpbWUpCiB7CiAgICAgaWYgKCFtX21vbWVudHVtQ2FsY3VsYXRvcikgewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gZWxhcHNlZFRpbWUgPSBjdXJyZW50VGltZSAt
IG1fc3RhcnRUaW1lOwotICAgIG1fYW5pbWF0aW9uQ29tcGxldGUgPSBlbGFwc2VkVGltZSA+PSBt
X21vbWVudHVtQ2FsY3VsYXRvci0+YW5pbWF0aW9uRHVyYXRpb24oKTsKKyAgICBhdXRvIGVsYXBz
ZWRUaW1lID0gdGltZVNpbmNlU3RhcnQoY3VycmVudFRpbWUpOworICAgIGJvb2wgYW5pbWF0aW9u
Q29tcGxldGUgPSBlbGFwc2VkVGltZSA+PSBtX21vbWVudHVtQ2FsY3VsYXRvci0+YW5pbWF0aW9u
RHVyYXRpb24oKTsKICAgICBhdXRvIG5ld09mZnNldCA9IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5z
Y3JvbGxPZmZzZXRBZnRlckVsYXBzZWRUaW1lKGVsYXBzZWRUaW1lKTsKIAogICAgIG1fY2xpZW50
LnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhpcywgbmV3T2Zmc2V0KTsKIAotICAgIGlmICht
X2FuaW1hdGlvbkNvbXBsZXRlKQotICAgICAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRF
bmQoKnRoaXMpOwotICAgIAotICAgIHJldHVybiBuZXdPZmZzZXQ7CisgICAgaWYgKGFuaW1hdGlv
bkNvbXBsZXRlKQorICAgICAgICBkaWRFbmQoKTsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRpb25N
b21lbnR1bTo6dXBkYXRlU2Nyb2xsRXh0ZW50cygpCkBAIC0xMDgsMTEgKzEwMSw4IEBAIHZvaWQg
U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW06OnVwZGF0ZVNjcm9sbEV4dGVudHMoKQogICAgIGF1dG8g
ZXh0ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oKnRoaXMpOwogICAg
IGF1dG8gcHJlZGljdGVkU2Nyb2xsT2Zmc2V0ID0gbV9tb21lbnR1bUNhbGN1bGF0b3ItPnByZWRp
Y3RlZERlc3RpbmF0aW9uT2Zmc2V0KCk7CiAgICAgYXV0byBjb25zdHJhaW5lZE9mZnNldCA9IHBy
ZWRpY3RlZFNjcm9sbE9mZnNldC5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Ny
b2xsT2Zmc2V0KCksIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpKTsKLSAgICBpZiAoY29u
c3RyYWluZWRPZmZzZXQgIT0gcHJlZGljdGVkU2Nyb2xsT2Zmc2V0KSB7CisgICAgaWYgKGNvbnN0
cmFpbmVkT2Zmc2V0ICE9IHByZWRpY3RlZFNjcm9sbE9mZnNldCkKICAgICAgICAgcmV0YXJnZXRB
Y3RpdmVBbmltYXRpb24oY29uc3RyYWluZWRPZmZzZXQpOwotICAgICAgICBpZiAobV9hbmltYXRp
b25Db21wbGV0ZSkKLSAgICAgICAgICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZEVuZCgq
dGhpcyk7Ci0gICAgfQogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaAppbmRleCA2NjQyZGNi
NTQ2ZWZkOTA5MzliOGZmNTIxODBmYjAzOTA5M2RiNGVkLi41YzliZTkxMzQxZDY3MjRlYzUwNjk3
NGIyNzNlZjE3OWNmOTcyOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb25Nb21lbnR1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvbk1vbWVudHVtLmgKQEAgLTM2LDE4ICszNiwxMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0oKTsKIAogICAgIGJvb2wgc3RhcnRBbmlt
YXRlZFNjcm9sbFdpdGhJbml0aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9m
ZnNldCwgY29uc3QgRmxvYXRTaXplJiBpbml0aWFsVmVsb2NpdHksIGNvbnN0IEZsb2F0U2l6ZSYg
aW5pdGlhbERlbHRhLCBjb25zdCBXVEY6OkZ1bmN0aW9uPEZsb2F0UG9pbnQoY29uc3QgRmxvYXRQ
b2ludCYpPiYgZGVzdGluYXRpb25Nb2RpZmllcik7Ci0KICAgICBib29sIHJldGFyZ2V0QWN0aXZl
QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld0Rlc3RpbmF0aW9uKSBmaW5hbDsKICAgICB2
b2lkIHN0b3AoKSBmaW5hbDsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7Ci0gICAg
RmxvYXRQb2ludCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpIGZpbmFsOworICAgIHZv
aWQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0
ZVNjcm9sbEV4dGVudHMoKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yPiBtX21vbWVudHVtQ2FsY3VsYXRvcjsKLSAgICAK
LSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwotICAgIGJvb2wgbV9hbmltYXRpb25Db21w
bGV0ZSB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcAppbmRleCBiMDZm
MmYyNGVhNTc1MTI1MDRmNzIyMWQwYjliMjJiYTgyMDkzMmI1Li4wMzY2MmJjNjI0OGIxODllMTY2
YTMzMzlmYzAzMDVhMTNjOGZlZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbmltYXRpb25TbW9vdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKQEAgLTMzLDI1ICszMywxNSBAQAogI2luY2x1ZGUg
IlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiVGltaW5nRnVuY3Rpb24uaCIKIAotI2lmIFVT
RShHTElCX0VWRU5UX0xPT1ApCi0jaW5jbHVkZSA8d3RmL2dsaWIvUnVuTG9vcFNvdXJjZVByaW9y
aXR5Lmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgZG91
YmxlIGZyYW1lUmF0ZSA9IDYwOwogc3RhdGljIGNvbnN0IGZsb2F0IGFuaW1hdGlvblNwZWVkIHsg
MTAwMC4wZiB9Owotc3RhdGljIGNvbnN0ZXhwciBTZWNvbmRzIG1pbmltdW1UaW1lckludGVydmFs
IHsgMV9tcyB9Owogc3RhdGljIGNvbnN0IFNlY29uZHMgbWF4QW5pbWF0aW9uRHVyYXRpb24geyAy
MDBfbXMgfTsKIAogU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpTY3JvbGxBbmltYXRpb25TbW9vdGgo
U2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBTY3JvbGxBbmltYXRpb24oVHlw
ZTo6U21vb3RoLCBjbGllbnQpCi0gICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJl
bnQoKSwgdGhpcywgJlNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCkK
ICAgICAsIG1fZWFzZUluT3V0VGltaW5nRnVuY3Rpb24oQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlv
bjo6Y3JlYXRlKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OlRpbWluZ0Z1bmN0aW9uUHJlc2V0
OjpFYXNlSW5PdXQpKQogewotI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCi0gICAgbV9hbmltYXRp
b25UaW1lci5zZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJl
ZnJlc2hNb25pdG9yVGltZXIpOwotI2VuZGlmCiB9CiAKIFNjcm9sbEFuaW1hdGlvblNtb290aDo6
flNjcm9sbEFuaW1hdGlvblNtb290aCgpID0gZGVmYXVsdDsKQEAgLTc5LDE3ICs2OSwxMCBAQCBi
b29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRPclJldGFyZ2V0QW5pbWF0aW9uKGNvbnN0
IFNjcm9sbEV4dGVudHMmIGV4dGVudAogICAgIG1fZGVzdGluYXRpb25PZmZzZXQgPSBkZXN0aW5h
dGlvbk9mZnNldC5jb25zdHJhaW5lZEJldHdlZW4oZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0
KCksIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpKTsKICAgICBib29sIG5lZWRUb1Njcm9s
bCA9IG1fc3RhcnRPZmZzZXQgIT0gbV9kZXN0aW5hdGlvbk9mZnNldDsKIAotICAgIGlmIChuZWVk
VG9TY3JvbGwgJiYgIWlzQWN0aXZlKCkpIHsKLSAgICAgICAgbV9zdGFydFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKLSAgICAgICAgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwotICAgIH0KLSAg
ICByZXR1cm4gbmVlZFRvU2Nyb2xsOwotfQorICAgIGlmIChuZWVkVG9TY3JvbGwgJiYgIWlzQWN0
aXZlKCkpCisgICAgICAgIGRpZFN0YXJ0KE1vbm90b25pY1RpbWU6Om5vdygpKTsKIAotdm9pZCBT
Y3JvbGxBbmltYXRpb25TbW9vdGg6OnN0b3AoKQotewotICAgIG1fYW5pbWF0aW9uVGltZXIuc3Rv
cCgpOwotICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZEVuZCgqdGhpcyk7CisgICAgcmV0
dXJuIG5lZWRUb1Njcm9sbDsKIH0KIAogdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OnVwZGF0
ZVNjcm9sbEV4dGVudHMoKQpAQCAtMTEwLDYgKzkzLDE0IEBAIGlubGluZSBmbG9hdCBsaW5lYXJJ
bnRlcnBvbGF0aW9uKGZsb2F0IHByb2dyZXNzLCBmbG9hdCBhLCBmbG9hdCBiKQogICAgIHJldHVy
biBhICsgcHJvZ3Jlc3MgKiAoYiAtIGEpOwogfQogCit2b2lkIFNjcm9sbEFuaW1hdGlvblNtb290
aDo6c2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKQoreworICAgIGJv
b2wgYW5pbWF0aW9uQWN0aXZlID0gYW5pbWF0ZVNjcm9sbChjdXJyZW50VGltZSk7CisgICAgbV9j
bGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKCp0aGlzLCBtX2N1cnJlbnRPZmZzZXQpOwor
ICAgIGlmICghYW5pbWF0aW9uQWN0aXZlKQorICAgICAgICBkaWRFbmQoKTsKK30KKwogYm9vbCBT
Y3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1hdGVTY3JvbGwoTW9ub3RvbmljVGltZSBjdXJyZW50
VGltZSkKIHsKICAgICBNb25vdG9uaWNUaW1lIGVuZFRpbWUgPSBtX3N0YXJ0VGltZSArIG1fZHVy
YXRpb247CkBAIC0xMjYsMjkgKzExNyw0IEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjph
bmltYXRlU2Nyb2xsKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCiAgICAgcmV0dXJuIGN1cnJl
bnRUaW1lIDwgZW5kVGltZTsKIH0KIAotdm9pZCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OmFuaW1h
dGlvblRpbWVyRmlyZWQoKQotewotICAgIE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUgPSBNb25v
dG9uaWNUaW1lOjpub3coKTsKLSAgICBTZWNvbmRzIGRlbHRhVG9OZXh0RnJhbWUgPSAxX3MgKiBj
ZWlsKChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKS52YWx1ZSgpICogZnJhbWVSYXRlKSAvIGZy
YW1lUmF0ZSAtIChjdXJyZW50VGltZSAtIG1fc3RhcnRUaW1lKTsKLSAgICBjdXJyZW50VGltZSAr
PSBkZWx0YVRvTmV4dEZyYW1lOwotCi0gICAgYm9vbCBjb250aW51ZUFuaW1hdGlvbiA9IGFuaW1h
dGVTY3JvbGwoY3VycmVudFRpbWUpOwotICAgIGlmIChjb250aW51ZUFuaW1hdGlvbikKLSAgICAg
ICAgc3RhcnROZXh0VGltZXIoc3RkOjptYXgobWluaW11bVRpbWVySW50ZXJ2YWwsIGRlbHRhVG9O
ZXh0RnJhbWUpKTsKLQotICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZSgqdGhp
cywgbV9jdXJyZW50T2Zmc2V0KTsKLSAgICBpZiAoIWNvbnRpbnVlQW5pbWF0aW9uKQotICAgICAg
ICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRFbmQoKnRoaXMpOwotfQotCi12b2lkIFNjcm9s
bEFuaW1hdGlvblNtb290aDo6c3RhcnROZXh0VGltZXIoU2Vjb25kcyBkZWxheSkKLXsKLSAgICBt
X2FuaW1hdGlvblRpbWVyLnN0YXJ0T25lU2hvdChkZWxheSk7Ci19Ci0KLWJvb2wgU2Nyb2xsQW5p
bWF0aW9uU21vb3RoOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYW5pbWF0aW9u
VGltZXIuaXNBY3RpdmUoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9vdGguaAppbmRleCAxZDIzNGEy
OTJkNzc2Njk4ODMxN2MxODBmYTU0OTVkNjU1ZGJmYTgyLi5kYWY1Y2UwNjlkMjBhNzVmMzg5MTRk
MjI3NTcxYTc1NzAyNGRlY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRpb25TbW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25TbW9vdGguaApAQCAtMjgsOCArMjgsNiBAQAogCiAjaW5jbHVkZSAiU2Nyb2xs
QW5pbWF0aW9uLmgiCiAKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEZsb2F0UG9pbnQ7CkBAIC00MSwzMyArMzksMjUgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvblNtb290aCgpOwogCiAgICAgYm9vbCBzdGFydEFu
aW1hdGVkU2Nyb2xsVG9EZXN0aW5hdGlvbihjb25zdCBGbG9hdFBvaW50JiBmcm9tT2Zmc2V0LCBj
b25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbk9mZnNldCk7Ci0KICAgICBib29sIHJldGFyZ2V0
QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIG5ld09mZnNldCkgZmluYWw7Ci0gICAg
dm9pZCBzdG9wKCkgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVTY3JvbGxFeHRlbnRzKCkgZmluYWw7
Ci0gICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZpbmFsOwogCisgICAgLy8gRklYTUU6IG9ubHkg
cHVibGljIGZvciBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS4KKyAg
ICB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBib29s
IHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihjb25zdCBTY3JvbGxFeHRlbnRzJiwgY29uc3QgRmxv
YXRQb2ludCYgZGVzdGluYXRpb25PZmZzZXQpOworICAgIHZvaWQgc2VydmljZUFuaW1hdGlvbihN
b25vdG9uaWNUaW1lKSBmaW5hbDsKIAotICAgIHZvaWQgcmVxdWVzdEFuaW1hdGlvblRpbWVyRmly
ZWQoKTsKLSAgICB2b2lkIHN0YXJ0TmV4dFRpbWVyKFNlY29uZHMgZGVsYXkpOwotICAgIHZvaWQg
YW5pbWF0aW9uVGltZXJGaXJlZCgpOworICAgIGJvb2wgc3RhcnRPclJldGFyZ2V0QW5pbWF0aW9u
KGNvbnN0IFNjcm9sbEV4dGVudHMmLCBjb25zdCBGbG9hdFBvaW50JiBkZXN0aW5hdGlvbk9mZnNl
dCk7CiAgICAgCiAgICAgU2Vjb25kcyBkdXJhdGlvbkZyb21EaXN0YW5jZShjb25zdCBGbG9hdFNp
emUmKSBjb25zdDsKICAgICAKICAgICBib29sIGFuaW1hdGVTY3JvbGwoTW9ub3RvbmljVGltZSk7
CiAKLSAgICBNb25vdG9uaWNUaW1lIG1fc3RhcnRUaW1lOwogICAgIFNlY29uZHMgbV9kdXJhdGlv
bjsKIAogICAgIEZsb2F0UG9pbnQgbV9zdGFydE9mZnNldDsKICAgICBGbG9hdFBvaW50IG1fZGVz
dGluYXRpb25PZmZzZXQ7Ci0gICAgRmxvYXRQb2ludCBtX2N1cnJlbnRPZmZzZXQ7Ci0gICAgCi0g
ICAgLy8gRklYTUU6IFNob3VsZCBub3QgaGF2ZSB0aW1lciBoZXJlLCBhbmQgaW5zdGVhZCB1c2Ug
c2VydmljZUFuaW1hdGlvbigpLgotICAgIFJ1bkxvb3A6OlRpbWVyPFNjcm9sbEFuaW1hdGlvblNt
b290aD4gbV9hbmltYXRpb25UaW1lcjsKKwogICAgIFJlZlB0cjxUaW1pbmdGdW5jdGlvbj4gbV9l
YXNlSW5PdXRUaW1pbmdGdW5jdGlvbjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAppbmRleCA3OTg1NWEzMTQ2
YWZmMTMwMzUzODY1ZDY3YTFhMTA5Yzc2ODlkYjE4Li4yZDk0MzQxM2Y5YWVhZWVhOTlkZDE2YTM0
ZDRhMGYyZGZhZmFlMWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwCkBAIC00OCwxNCArNDgsMjMgQEAgdm9pZCBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6YW5pbWF0aW9uQ2FsbGJhY2soTW9ub3RvbmljVGlt
ZSBjdXJyZW50VGltZSkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0g
PDwgIlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIgPDwgdGhpcyA8PCAiIGFuaW1hdGlvbkNh
bGxiYWNrOiBpc0FuaW1hdGluZ1J1YmJlckJhbmQgIiA8PCBtX2lzQW5pbWF0aW5nUnViYmVyQmFu
ZCA8PCAiIGlzQW5pbWF0aW5nU2Nyb2xsU25hcCAiIDw8IG1faXNBbmltYXRpbmdTY3JvbGxTbmFw
IDw8ICJpc0FuaW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nIiA8PCBtX2lzQW5pbWF0aW5nS2V5Ym9h
cmRTY3JvbGxpbmcpOwogCi0gICAgdXBkYXRlU2Nyb2xsU25hcEFuaW1hdGluZ1N0YXRlKGN1cnJl
bnRUaW1lKTsKKyAgICBpZiAobV9jdXJyZW50QW5pbWF0aW9uKSB7CisgICAgICAgIGlmIChtX2N1
cnJlbnRBbmltYXRpb24tPmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX2N1cnJlbnRBbmltYXRp
b24tPnNlcnZpY2VBbmltYXRpb24oY3VycmVudFRpbWUpOworCisgICAgICAgIGlmIChtX2N1cnJl
bnRBbmltYXRpb24gJiYgIW1fY3VycmVudEFuaW1hdGlvbi0+aXNBY3RpdmUoKSkKKyAgICAgICAg
ICAgIG1fY3VycmVudEFuaW1hdGlvbiA9IG51bGxwdHI7CisgICAgfQorCiAgICAgdXBkYXRlUnVi
YmVyQmFuZEFuaW1hdGluZ1N0YXRlKGN1cnJlbnRUaW1lKTsKICAgICB1cGRhdGVLZXlib2FyZFNj
cm9sbGluZ0FuaW1hdGluZ1N0YXRlKGN1cnJlbnRUaW1lKTsKKyAgICAKKyAgICBzdGFydE9yU3Rv
cEFuaW1hdGlvbkNhbGxiYWNrcygpOwogfQogCiB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjpzdGFydE9yU3RvcEFuaW1hdGlvbkNhbGxiYWNrcygpCiB7Ci0gICAgYm9vbCBuZWVkc0Nh
bGxiYWNrcyA9IG1faXNBbmltYXRpbmdSdWJiZXJCYW5kIHx8IG1faXNBbmltYXRpbmdTY3JvbGxT
bmFwIHx8IG1faXNBbmltYXRpbmdLZXlib2FyZFNjcm9sbGluZzsKKyAgICBib29sIG5lZWRzQ2Fs
bGJhY2tzID0gbV9pc0FuaW1hdGluZ1J1YmJlckJhbmQgfHwgbV9pc0FuaW1hdGluZ0tleWJvYXJk
U2Nyb2xsaW5nIHx8IG1fY3VycmVudEFuaW1hdGlvbjsKICAgICBpZiAobmVlZHNDYWxsYmFja3Mg
PT0gbV9pc1J1bm5pbmdBbmltYXRpbmdDYWxsYmFjaykKICAgICAgICAgcmV0dXJuOwogCkBAIC04
NCw2ICs5Myw4IEBAIGJvb2wgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0
ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKEZsb2F0UG9pbnQgc3RhCiAgICAgaWYgKG1fY3VycmVudEFu
aW1hdGlvbikKICAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uLT5zdG9wKCk7CiAKKyAgICAvLyBX
ZSBhbHdheXMgY3JlYXRlIGFuZCBhdHRlbXB0IHRvIHN0YXJ0IHRoZSBhbmltYXRpb24uIElmIGl0
IHR1cm5zIG91dCB0byBub3QgbmVlZCBhbmltYXRpbmcsIHRoZW4gdGhlIGFuaW1hdGlvbgorICAg
IC8vIHJlbWFpbnMgaW5hY3RpdmUsIGFuZCB3ZSdsbCByZW1vdmUgaXQgb24gdGhlIG5leHQgYW5p
bWF0aW9uQ2FsbGJhY2soKS4KICAgICBtX2N1cnJlbnRBbmltYXRpb24gPSBtYWtlVW5pcXVlPFNj
cm9sbEFuaW1hdGlvblNtb290aD4oKnRoaXMpOwogICAgIHJldHVybiBkb3duY2FzdDxTY3JvbGxB
bmltYXRpb25TbW9vdGg+KCptX2N1cnJlbnRBbmltYXRpb24pLnN0YXJ0QW5pbWF0ZWRTY3JvbGxU
b0Rlc3RpbmF0aW9uKHN0YXJ0T2Zmc2V0LCBkZXN0aW5hdGlvbk9mZnNldCk7CiB9CkBAIC0yNTQs
NiArMjY1LDM1IEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnJlc25hcEFmdGVy
TGF5b3V0KCkKICAgICAgICAgbV9hY3RpdmVTY3JvbGxTbmFwSW5kZXhEaWRDaGFuZ2UgPSB0cnVl
OwogfQogCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydFNjcm9sbFNuYXBB
bmltYXRpb24oKQoreworICAgIGlmIChtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgc3RhcnRTY3JvbGxTbmFwQW5p
bWF0aW9uIChtYWluIHRocmVhZCAiIDw8IGlzTWFpblRocmVhZCgpIDw8ICIpIik7CisKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgc3RhcnREZWZlcnJpbmdXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25E
dWVUb1Njcm9sbFNuYXBwaW5nKCk7CisjZW5kaWYKKyAgICBtX2NsaWVudC53aWxsU3RhcnRTY3Jv
bGxTbmFwQW5pbWF0aW9uKCk7CisgICAgc2V0SXNBbmltYXRpbmdTY3JvbGxTbmFwKHRydWUpOwor
fQorCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdG9wU2Nyb2xsU25hcEFuaW1h
dGlvbigpCit7CisgICAgaWYgKCFtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgc3RvcFNjcm9sbFNuYXBBbmltYXRp
b24gKG1haW4gdGhyZWFkICIgPDwgaXNNYWluVGhyZWFkKCkgPDwgIikiKTsKKworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBzdG9wRGVmZXJyaW5nV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRHVlVG9T
Y3JvbGxTbmFwcGluZygpOworI2VuZGlmCisgICAgbV9jbGllbnQuZGlkU3RvcFNjcm9sbFNuYXBB
bmltYXRpb24oKTsKKworICAgIHNldElzQW5pbWF0aW5nU2Nyb2xsU25hcChmYWxzZSk7Cit9CisK
IHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZUtleWJvYXJkU2Nyb2xsaW5n
QW5pbWF0aW5nU3RhdGUoTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSkKIHsKICAgICBpZiAoIW1f
aXNBbmltYXRpbmdLZXlib2FyZFNjcm9sbGluZykKQEAgLTI3NCw5ICszMTQsMjAgQEAgdm9pZCBT
Y3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9s
bEFuaW1hdGlvbiYsIGNvbnMKICAgICBzY3JvbGxUb09mZnNldEZvckFuaW1hdGlvbihjdXJyZW50
T2Zmc2V0KTsKIH0KIAordm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsQW5p
bWF0aW9uV2lsbFN0YXJ0KFNjcm9sbEFuaW1hdGlvbiYpCit7CisgICAgc3RhcnRPclN0b3BBbmlt
YXRpb25DYWxsYmFja3MoKTsKK30KKwogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6
c2Nyb2xsQW5pbWF0aW9uRGlkRW5kKFNjcm9sbEFuaW1hdGlvbiYpCiB7CisgICAgaWYgKHVzZXNT
Y3JvbGxTbmFwKCkgJiYgbV9pc0FuaW1hdGluZ1Njcm9sbFNuYXApIHsKKyAgICAgICAgbV9zY3Jv
bGxTbmFwU3RhdGUtPnRyYW5zaXRpb25Ub0Rlc3RpbmF0aW9uUmVhY2hlZFN0YXRlKCk7CisgICAg
ICAgIHN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCk7CisgICAgfQorCiAgICAgbV9jbGllbnQuc2V0
U2Nyb2xsQmVoYXZpb3JTdGF0dXMoU2Nyb2xsQmVoYXZpb3JTdGF0dXM6Ok5vdEluQW5pbWF0aW9u
KTsKKyAgICBzdGFydE9yU3RvcEFuaW1hdGlvbkNhbGxiYWNrcygpOwogfQogCiBTY3JvbGxFeHRl
bnRzIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9u
KFNjcm9sbEFuaW1hdGlvbiYpCkBAIC0yOTksMTQgKzM1MCw4IEBAIHZvaWQgU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXI6OnNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpCiB7CiB9CiAKLXZvaWQgU2Ny
b2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZShN
b25vdG9uaWNUaW1lKQotewotCi19Ci0KIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OnVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNUaW1lKQogewotCiB9CiAK
ICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAppbmRleCA3MGMxOGVmZDNiZDQ5NzRiMTNl
ZjM3ZWZlMTlkNWNlMGUzY2JlMmFlLi5iNjI0YjAyNjUxZWRmNjY3Njc2OTVkZTVlZjE3ZWRkNmQ0
MGUzMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyLmgKQEAgLTE4Myw3ICsxODMsNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKLSAgICB2b2lkIHVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdTdGF0ZShNb25vdG9u
aWNUaW1lKTsKICAgICB2b2lkIHVwZGF0ZVJ1YmJlckJhbmRBbmltYXRpbmdTdGF0ZShNb25vdG9u
aWNUaW1lKTsKICAgICB2b2lkIHVwZGF0ZUtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0aW5nU3RhdGUo
TW9ub3RvbmljVGltZSk7CiAKQEAgLTE5MSwxMCArMTkwLDEwIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRJc0FuaW1hdGluZ1Njcm9sbFNuYXAoYm9vbCk7CiAgICAgdm9pZCBzZXRJc0FuaW1hdGlu
Z0tleWJvYXJkU2Nyb2xsaW5nKGJvb2wpOwogCi0jaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQg
c3RhcnRTY3JvbGxTbmFwQW5pbWF0aW9uKCk7CiAgICAgdm9pZCBzdG9wU2Nyb2xsU25hcEFuaW1h
dGlvbigpOwogCisjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVNb21l
bnR1bVNjcm9sbGluZygpIGNvbnN0OwogICAgIHZvaWQgc3RhdGVsZXNzU25hcFRyYW5zaXRpb25U
aW1lckZpcmVkKCk7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRlbGVzc1Njcm9sbFNuYXAoKTsKQEAg
LTIxNyw2ICsyMTYsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gU2Nyb2xsQW5pbWF0aW9uQ2xpZW50
CiAgICAgdm9pZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29u
c3QgRmxvYXRQb2ludCYgLyogY3VycmVudE9mZnNldCAqLykgZmluYWw7CisgICAgdm9pZCBzY3Jv
bGxBbmltYXRpb25XaWxsU3RhcnQoU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7CiAgICAgdm9pZCBz
Y3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7CiAgICAgU2Nyb2xs
RXh0ZW50cyBzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpICBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGlu
Z0VmZmVjdHNDb250cm9sbGVyLm1tCmluZGV4IDI3Mzk1OGI3ZjE3MDA2NjhmZWI3ZTYxNDQ2M2Ni
MWZjM2VkNGI3OWQuLmYwYjJjZmQwNzc1NTkyZGZiNWViZTU2YzM4ZjVjNGEzNTZkMTAyZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsaW5nRWZm
ZWN0c0NvbnRyb2xsZXIubW0KQEAgLTY5MCw4ICs2OTAsMTAgQEAgYm9vbCBTY3JvbGxpbmdFZmZl
Y3RzQ29udHJvbGxlcjo6cHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRm
b3JtV2gKICAgICAgICAgICAgIHN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFdoZWVsRXZlbnRTdGF0dXM6Ok1vbWVudHVtU2Nyb2xsQmVnaW46Ci0g
ICAgICAgIGlmIChtX3Njcm9sbFNuYXBTdGF0ZS0+dHJhbnNpdGlvblRvR2xpZGVBbmltYXRpb25T
dGF0ZShtX2NsaWVudC5zY3JvbGxFeHRlbnRzKCksIG1fY2xpZW50LnBhZ2VTY2FsZUZhY3Rvcigp
LCBtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSwgbV9kcmFnRW5kZWRTY3JvbGxpbmdWZWxvY2l0eSwg
RmxvYXRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCgpLCAtd2hlZWxFdmVudC5kZWx0YVkoKSkpKQor
ICAgICAgICBpZiAobV9zY3JvbGxTbmFwU3RhdGUtPnRyYW5zaXRpb25Ub0dsaWRlQW5pbWF0aW9u
U3RhdGUobV9jbGllbnQuc2Nyb2xsRXh0ZW50cygpLCBtX2NsaWVudC5wYWdlU2NhbGVGYWN0b3Io
KSwgbV9jbGllbnQuc2Nyb2xsT2Zmc2V0KCksIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVsb2NpdHks
IEZsb2F0U2l6ZSgtd2hlZWxFdmVudC5kZWx0YVgoKSwgLXdoZWVsRXZlbnQuZGVsdGFZKCkpKSkg
eworICAgICAgICAgICAgc3RhcnRTY3JvbGxTbmFwQW5pbWF0aW9uKCk7CiAgICAgICAgICAgICBp
c01vbWVudHVtU2Nyb2xsaW5nID0gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICBtX2RyYWdFbmRl
ZFNjcm9sbGluZ1ZlbG9jaXR5ID0geyB9OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdoZWVs
RXZlbnRTdGF0dXM6Ok1vbWVudHVtU2Nyb2xsaW5nOgpAQCAtNzIwLDYyICs3MjIsNiBAQCB2b2lk
IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVHZXN0dXJlSW5Qcm9ncmVzc1N0YXRl
KGNvbnN0IFBsYXRmb3JtV2hlZQogICAgIHVwZGF0ZVJ1YmJlckJhbmRpbmdTdGF0ZSgpOwogfQog
Ci12b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydFNjcm9sbFNuYXBBbmltYXRp
b24oKQotewotICAgIGlmIChtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbFNuYXAsIHN0cmVhbSA8PCAiU2Nyb2xsaW5n
RWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8ICIgc3RhcnRTY3JvbGxTbmFwQW5pbWF0aW9u
IChtYWluIHRocmVhZCAiIDw8IGlzTWFpblRocmVhZCgpIDw8ICIpIik7Ci0KLSAgICBzdGFydERl
ZmVycmluZ1doZWVsRXZlbnRUZXN0Q29tcGxldGlvbkR1ZVRvU2Nyb2xsU25hcHBpbmcoKTsKLSAg
ICBtX2NsaWVudC53aWxsU3RhcnRTY3JvbGxTbmFwQW5pbWF0aW9uKCk7Ci0gICAgc2V0SXNBbmlt
YXRpbmdTY3JvbGxTbmFwKHRydWUpOwotfQotCi12b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyOjpzdG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpCi17Ci0gICAgaWYgKCFtX2lzQW5pbWF0aW5n
U2Nyb2xsU25hcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9s
bFNuYXAsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlzIDw8
ICIgc3RvcFNjcm9sbFNuYXBBbmltYXRpb24gKG1haW4gdGhyZWFkICIgPDwgaXNNYWluVGhyZWFk
KCkgPDwgIikiKTsKLQotICAgIHN0b3BEZWZlcnJpbmdXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25E
dWVUb1Njcm9sbFNuYXBwaW5nKCk7Ci0gICAgbV9jbGllbnQuZGlkU3RvcFNjcm9sbFNuYXBBbmlt
YXRpb24oKTsKLQotICAgIHNldElzQW5pbWF0aW5nU2Nyb2xsU25hcChmYWxzZSk7Ci19Ci0KLXZv
aWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZVNjcm9sbFNuYXBBbmltYXRpbmdT
dGF0ZShNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKQotewotICAgIGlmICghbV9pc0FuaW1hdGlu
Z1Njcm9sbFNuYXApCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghdXNlc1Njcm9sbFNuYXAo
KSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmICghaXM8U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0+KG1fY3VycmVudEFuaW1h
dGlvbi5nZXQoKSkpIHsKLSAgICAgICAgbV9zY3JvbGxTbmFwU3RhdGUtPnRyYW5zaXRpb25Ub0Rl
c3RpbmF0aW9uUmVhY2hlZFN0YXRlKCk7Ci0gICAgICAgIHN0b3BTY3JvbGxTbmFwQW5pbWF0aW9u
KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvJiBtb21lbnR1bVNjcm9sbEFu
aW1hdGlvbiA9IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtPigqbV9jdXJyZW50QW5p
bWF0aW9uKTsKLQotICAgIGF1dG8gYW5pbWF0aW9uT2Zmc2V0ID0gbW9tZW50dW1TY3JvbGxBbmlt
YXRpb24uc2VydmljZUFuaW1hdGlvbihjdXJyZW50VGltZSk7Ci0gICAgYm9vbCBpc0FuaW1hdGlv
bkNvbXBsZXRlID0gIW1vbWVudHVtU2Nyb2xsQW5pbWF0aW9uLmlzQWN0aXZlKCk7Ci0KLSAgICBM
T0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlciAiIDw8IHRoaXMgPDwgIiB1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3RhdGUgLSBp
c0FuaW1hdGlvbkNvbXBsZXRlICIgPDwgaXNBbmltYXRpb25Db21wbGV0ZSA8PCAiIGFuaW1hdGlv
bk9mZnNldCAiIDw8IGFuaW1hdGlvbk9mZnNldCA8PCAiIChtYWluIHRocmVhZCAiIDw8IGlzTWFp
blRocmVhZCgpIDw8ICIpIik7Ci0KLSAgICBzY3JvbGxUb09mZnNldEZvckFuaW1hdGlvbihhbmlt
YXRpb25PZmZzZXQpOwotCi0gICAgaWYgKGlzQW5pbWF0aW9uQ29tcGxldGUpIHsKLSAgICAgICAg
bV9zY3JvbGxTbmFwU3RhdGUtPnRyYW5zaXRpb25Ub0Rlc3RpbmF0aW9uUmVhY2hlZFN0YXRlKCk7
Ci0gICAgICAgIHN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCk7Ci0gICAgfQotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439188</attachid>
            <date>2021-09-24 13:32:13 -0700</date>
            <delta_ts>2021-09-24 16:49:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230739-20210924133211.patch</filename>
            <type>text/plain</type>
            <size>43095</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMDI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTUwMGZhMWUyMzU1MzAw
N2ExN2QzZDNhN2FlNWM3OGI3ZTk2OGNlOC4uOWI1OTc2OTA1NjQwMjM1NzllNjhjNjQ0ZTNkMDBm
NzllNmJiYzQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIxLTA5LTIzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhdmUgU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXIgZHJpdmUgYWxsIHRoZSBTY3JvbGxBbmltYXRpb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3MzkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGVh
Y2ggU2Nyb2xsQW5pbWF0aW9uIHN1YmNsYXNzIGhhdmluZyBpdHMgb3duIHRpbWVyIGNvZGUsIGhh
dmUgdGhlbSBhbGwKKyAgICAgICAgaW1wbGVtZW50IHNlcnZpY2VBbmltYXRpb25zKCksIHNvIHRo
YXQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgY2FuIHRoZW4gZHJpdmUKKyAgICAgICAgdGhl
bSBhbGwgdmlhIGl0cyBleGlzdGluZyBhbmltYXRpb25DYWxsYmFjaygpIGNvZGUuCisKKyAgICAg
ICAgR2l2ZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYSBhIHRlbXBv
cmFyeSB0aW1lciB0byBkcml2ZSBpdHMgYW5pbWF0aW9ucywKKyAgICAgICAgYnV0IGxlYXZlIEZJ
WE1FIGNvbW1lbnRzIG5vdGluZyB0aGF0IHRoZXNlIGFuaW1hdGlvbnMgc2hvdWxkIG1vdmUgaW50
byBTY3JvbGxpbmdFZmZlY3RzQ29vcmRpbmF0b3IuCisKKyAgICAgICAgUHVzaCBhIGJpdCBtb3Jl
IGNvbW1vbiBTY3JvbGxBbmltYXRpb24gbG9naWMgaW50byB0aGUgYmFzZSBjbGFzcywgYW5kIGFk
ZCBhCisgICAgICAgICd3aWxsU3RhcnQnIGNsaWVudCBmdW5jdGlvbiB3aGljaCBTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlciBjYW4gdXNlIHRvCisgICAgICAgIHN0YXJ0IGNhbGxiYWNrcyBpZiBu
ZWNlc3NhcnkuCisKKyAgICAgICAgU2Nyb2xsQW5pbWF0aW9uIGxpZmV0aW1lIGlzIGNvbnRyb2xs
ZWQgYnkgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI7IGFuIGFuaW1hdGlvbgorICAgICAgICB3
aWxsIGJlIGRlbGV0ZWQgaW4gdGhlIGZpcnN0IGFuaW1hdGlvbkNhbGxiYWNrKCkgd2hlcmUgaXQg
aXMgbm8gbG9uZ2VyIGFjdGl2ZS4gVGhpcworICAgICAgICBhdm9pZHMgcG90ZW50aWFsIHBpdGZh
bGxzIHdoZXJlIGFuIGFuaW1hdGlvbiBtaWdodCBiZSBkZWxldGVkIGluc2lkZSB0aGUgc2Nyb2xs
QW5pbWF0aW9uRGlkRW5kKCkKKyAgICAgICAgY2FsbGJhY2suCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVdoZWVsRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxF
dmVudDo6c3dpcGVWZWxvY2l0eSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25DbGllbnQ6OnNjcm9s
bEFuaW1hdGlvbldpbGxTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjppc0FjdGl2ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OmN1cnJlbnRPZmZzZXQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uOjpkaWRTdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb246OmRpZEVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb246OnRpbWVTaW5jZVN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvbjo6c2VydmljZUFuaW1hdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpTY3JvbGxBbmltYXRpb25L
aW5ldGljKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmNvbXB1
dGVWZWxvY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpz
dGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzZXJ2aWNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6aXNBY3RpdmUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6YW5pbWF0aW9uVGlt
ZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25LaW5l
dGljOjpkZWx0YVRvTmV4dEZyYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxBbmltYXRpb25LaW5ldGljLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
TW9tZW50dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW06
OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRoSW5pdGlhbFZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpyZXRhcmdldEFjdGl2ZUFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c3RvcCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c2VydmljZUFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6dXBkYXRlU2Nyb2xsRXh0
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6aXNBY3Rp
dmUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1v
bWVudHVtLmg6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6U2Nyb2xsQW5pbWF0aW9u
U21vb3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnRP
clJldGFyZ2V0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdGlvblNt
b290aDo6c2VydmljZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRp
b25TbW9vdGg6OnN0b3ApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
aW9uU21vb3RoOjphbmltYXRpb25UaW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RhcnROZXh0VGltZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0aW9uU21vb3RoOjppc0FjdGl2ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmg6CisgICAg
ICAgICogcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OmFuaW1hdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzdGFydE9yU3Rv
cEFuaW1hdGlvbkNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3Rz
Q29udHJvbGxlcjo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEFuaW1hdGlvbldpbGxT
dGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Ny
b2xsQW5pbWF0aW9uRGlkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0VmZmVjdHND
b250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwQW5pbWF0aW5nU3RhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnByb2Nlc3NXaGVlbEV2ZW50Rm9yU2Ny
b2xsU25hcCk6IElmIHRyYW5zaXRpb25Ub0dsaWRlQW5pbWF0aW9uU3RhdGUoKQorICAgICAgICBz
dGFydHMgYW4gYW5pbWF0aW9uIHdlIGhhdmUgdG8gY2FsbCBzdGFydFNjcm9sbFNuYXBBbmltYXRp
b24oKSAoYmVjYXVzZSB0aGUgcHJldmlvdXMgc3RvcCgpIHdpbGwgaGF2ZQorICAgICAgICBwdXRz
IHVzIGluIGEgIm5vdCBhbmltYXRpbmcgc2Nyb2xsIHNuYXAiIHN0YXRlKS4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjp1cGRhdGVTY3JvbGxTbmFwQW5pbWF0
aW5nU3RhdGUpOiBEZWxldGVkLgorCiAyMDIxLTA5LTIzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUn
cyBTY3JvbGxBbmltYXRpb25Nb21lbnR1bSBpbnRvIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEuY3BwCmluZGV4IGU0MDNlMjQxNTc0YWU5ZTUzMmFiODNmMjkyYmE4YWRkNWZhYzQ2
MGMuLjBmYjUzOGZjNjgwYWFlNDI2MmRlZDU5YmM0ZmNkZTgwZDZkMmJlODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEu
Y3BwCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgIk5pY29zaWFQbGF0Zm9ybUxheWVyLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIgogCisjaWYgVVNF
KEdMSUJfRVZFTlRfTE9PUCkKKyNpbmNsdWRlIDx3dGYvZ2xpYi9SdW5Mb29wU291cmNlUHJpb3Jp
dHkuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JvbGxBbmltYXRp
b247CiBjbGFzcyBTY3JvbGxBbmltYXRpb25LaW5ldGljOwpAQCAtMzksMTIgKzQzLDE4IEBAIGNs
YXNzIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM7CiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEo
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUsIGJvb2wgc2Nyb2xsQW5p
bWF0b3JFbmFibGVkKQogICAgIDogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZShz
Y3JvbGxpbmdOb2RlKQogICAgICwgbV9zY3JvbGxBbmltYXRvckVuYWJsZWQoc2Nyb2xsQW5pbWF0
b3JFbmFibGVkKQorI2lmIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykgfHwgRU5BQkxFKFNNT09U
SF9TQ1JPTExJTkcpCisgICAgLCBtX2FuaW1hdGlvblRpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwg
dGhpcywgJlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRp
b25UaW1lckZpcmVkKQorI2VuZGlmCiB7CisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8
fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQorICAg
IG1fYW5pbWF0aW9uVGltZXIuc2V0UHJpb3JpdHkoV1RGOjpSdW5Mb29wU291cmNlUHJpb3JpdHk6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvclRpbWVyKTsKKyNlbmRpZgorI2VuZGlmICAgIAogfQogCi1T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6flNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhKCkKLXsKLX0KK1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVOaWNvc2lhOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWEoKSA9IGRlZmF1bHQ7CiAKIHN0ZDo6dW5pcXVlX3B0cjxOaWNvc2lhOjpTY2VuZUlu
dGVncmF0aW9uOjpVcGRhdGVTY29wZT4gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZU5pY29zaWE6OmNyZWF0ZVVwZGF0ZVNjb3BlKCkKIHsKQEAgLTgwLDYgKzkwLDcgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6ZW5zdXJlU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fa2luZXRpY0FuaW1hdGlv
biA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4oKnRoaXMpOworICAgIHN0YXJ0
VGltZXJJZk5lY2Vzc2FyeSgpOwogfQogI2VuZGlmCiAKQEAgLTkwLDYgKzEwMSw3IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OmVuc3VyZVNjcm9sbEFu
aW1hdGlvblNtb290aCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc21vb3RoQW5pbWF0aW9u
ID0gbWFrZVVuaXF1ZTxTY3JvbGxBbmltYXRpb25TbW9vdGg+KCp0aGlzKTsKKyAgICBzdGFydFRp
bWVySWZOZWNlc3NhcnkoKTsKIH0KICNlbmRpZgogCkBAIC0xMTYsNiArMTI4LDcgQEAgV2hlZWxF
dmVudEhhbmRsaW5nUmVzdWx0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNv
c2lhOjpoYW5kbGVXaGVlbEUKICAgICB9CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBUaGlzIG5l
ZWRzIHRvIHNoYXJlIGNvZGUgd2l0aCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudCgp
LCBwZXJoYXBzIGJ5IG1vdmluZyBjb2RlIGludG8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OmhhbmRsZVdoZWVsRXZlbnQoKS4KICAgICBmbG9hdCBkZWx0YVggPSBjYW5IYXZlSG9yaXpvbnRh
bFNjcm9sbGJhciA/IHdoZWVsRXZlbnQuZGVsdGFYKCkgOiAwOwogICAgIGZsb2F0IGRlbHRhWSA9
IGNhbkhhdmVWZXJ0aWNhbFNjcm9sbGJhciA/IHdoZWVsRXZlbnQuZGVsdGFZKCkgOiAwOwogICAg
IGlmICgoZGVsdGFYIDwgMCAmJiBjdXJyZW50U2Nyb2xsUG9zaXRpb24oKS54KCkgPj0gbWF4aW11
bVNjcm9sbFBvc2l0aW9uKCkueCgpKQpAQCAtMTg3LDYgKzIwMCw5IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnN0b3BTY3JvbGxBbmltYXRpb25zKCkK
ICAgICBpZiAobV9zbW9vdGhBbmltYXRpb24pCiAgICAgICAgIG1fc21vb3RoQW5pbWF0aW9uLT5z
dG9wKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShT
TU9PVEhfU0NST0xMSU5HKQorICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOworI2VuZGlmCiB9
CiAKIGZsb2F0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdl
U2NhbGVGYWN0b3IoKQpAQCAtMTk3LDcgKzIxMyw3IEBAIGZsb2F0IFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjpwYWdlU2NhbGVGYWN0b3IoKQogICAgICAgICBkb3du
Y2FzdDxTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlPihzY3JvbGxpbmdOb2RlKCkpLmZy
YW1lU2NhbGVGYWN0b3IoKSA6IDEuOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVOaWNvc2lhOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0
aW9uJiBhbmltYXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQordm9pZCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9uRGlkVXBk
YXRlKFNjcm9sbEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQp
CiB7CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCiAgICAgaWYgKCZhbmltYXRpb24gPT0g
bV9raW5ldGljQW5pbWF0aW9uLmdldCgpKSB7CkBAIC0yMDYsNyArMjIyLDkgQEAgdm9pZCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9uRGlk
VXBkYXRlKFNjcm9sbEEKICAgICB9CiAjZW5kaWYKICAgICBhdXRvIHVwZGF0ZVNjb3BlID0gY3Jl
YXRlVXBkYXRlU2NvcGUoKTsKLSAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsVG8ocG9zaXRpb24p
OworCisgICAgLy8gRklYTUU6IE5lZWQgdG8gY29udmVydCBhbiBvZmZzZXQgdG8gYSBwb3NpdGlv
bi4KKyAgICBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsVG8ob2Zmc2V0KTsKIH0KIAogdm9pZCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYTo6c2Nyb2xsQW5pbWF0aW9uRGlk
RW5kKFNjcm9sbEFuaW1hdGlvbiYpCkBAIC0yMjEsNiArMjM5LDM1IEBAIFNjcm9sbEV4dGVudHMg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE6OnNjcm9sbEV4dGVudHNG
b3JBbmltYXRpCiAgICAgfTsKIH0KIAordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlTmljb3NpYTo6c3RhcnRUaW1lcklmTmVjZXNzYXJ5KCkKK3sKKyNpZiBFTkFCTEUoS0lO
RVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlmIChtX2Fu
aW1hdGlvblRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0YXRpYyBj
b25zdGV4cHIgZG91YmxlIGZyYW1lUmF0ZSA9IDYwOworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vj
b25kcyB0aWNrVGltZSA9IDFfcyAvIGZyYW1lUmF0ZTsKKyAgICAKKyAgICBtX2FuaW1hdGlvblRp
bWVyLnN0YXJ0UmVwZWF0aW5nKHRpY2tUaW1lKTsKKyNlbmRpZgorfQorCit2b2lkIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhOjphbmltYXRpb25UaW1lckZpcmVkKCkK
K3sKKyNpZiBFTkFCTEUoS0lORVRJQ19TQ1JPTExJTkcpIHx8IEVOQUJMRShTTU9PVEhfU0NST0xM
SU5HKQorICAgIGF1dG8gbm93ID0gTW9ub3RvbmljVGltZTo6bm93KCk7CisjZW5kaWYKKworI2lm
IEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKKyAgICBpZiAobV9raW5ldGljQW5pbWF0aW9uKQor
ICAgICAgICBtX2tpbmV0aWNBbmltYXRpb24tPnNlcnZpY2VBbmltYXRpb24obm93KTsKKyNlbmRp
ZgorI2lmIEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQorICAgIGlmIChtX3Ntb290aEFuaW1hdGlv
bikKKyAgICAgICAgbV9zbW9vdGhBbmltYXRpb24tPnNlcnZpY2VBbmltYXRpb24obm93KTsKKyNl
bmRpZiAgICAKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KEFTWU5DX1NDUk9MTElORykgJiYgVVNFKE5JQ09TSUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhLmgKaW5kZXggNjllZWIxZWU2
MDYxMTVmM2IwNzE1OWM1NjI3YmFkZTE4YTJiZTE3MC4uNzQ3NDJjMWZlM2E4Njg2YWU1MzIxNGEy
ZGFmMGRhYTIyYjk1ZWViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlTmljb3NpYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuaApAQCAtNDMsOCArNDMsMTMgQEAKICNpbmNsdWRl
ICJTY3JvbGxBbmltYXRpb25TbW9vdGguaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEtJTkVUSUNf
U0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKKyNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gRklYTUU6IFRoaXMg
c2hvdWxkIG5vdCBiZSBhIFNjcm9sbEFuaW1hdGlvbkNsaWVudC4KIGNsYXNzIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lhIDogcHVibGljIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGUsIHB1YmxpYyBTY3JvbGxBbmltYXRpb25DbGllbnQgewogcHVibGlj
OgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVOaWNvc2lh
KFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQp
OwpAQCAtNjcsMTcgKzcyLDI4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVTY3JvbGxBbmlt
YXRpb25TbW9vdGgoKTsKICNlbmRpZgogCisgICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7
CisgICAgdm9pZCBzdGFydFRpbWVySWZOZWNlc3NhcnkoKTsKKwogICAgIC8vIFNjcm9sbEFuaW1h
dGlvbkNsaWVudAogICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1h
dGlvbiYsIGNvbnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRQb3NpdGlvbikgZmluYWw7CiAgICAgdm9p
ZCBzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikgZmluYWw7CiAgICAgU2Ny
b2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9uKFNjcm9sbEFuaW1hdGlvbiYpIGZp
bmFsOwogCisgICAgLy8gRklYTUU6IFRoZXNlIGFuaW1hdGlvbnMgc2hvdWxkIG5vdCBsaXZlIGhl
cmUuIFRoZXkgbmVlZCB0byBiZSBtYW5hZ2VkIGJ5IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
LAorICAgIC8vIHRvIGJlIGNvb3JkaW5hdGVkIHdpdGggb3RoZXIga2luZHMgb2Ygc2Nyb2xsIGFu
aW1hdGlvbnMsIGFuZCBiZSByZWZlcmVuY2VkIGJ5IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
OjptX2N1cnJlbnRBbmltYXRpb24uCisgICAgCiAjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5H
KQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxBbmltYXRpb25LaW5ldGljPiBtX2tpbmV0aWNB
bmltYXRpb247CiAjZW5kaWYKICNpZiBFTkFCTEUoU01PT1RIX1NDUk9MTElORykKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX3Ntb290aEFuaW1hdGlvbjsKICNl
bmRpZgorCisjaWYgRU5BQkxFKEtJTkVUSUNfU0NST0xMSU5HKSB8fCBFTkFCTEUoU01PT1RIX1ND
Uk9MTElORykKKyAgICAvLyBGSVhNRTogV2hlbiB0aGUgYWJvdmUgdHdvIGFuaW1hdGlvbnMgYXJl
IHJlbW92ZWQsIHRoaXMgdGltZXIgY2FuIGJlIHJlbW92ZWQuCisgICAgUnVuTG9vcDo6VGltZXI8
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZU5pY29zaWE+IG1fYW5pbWF0aW9uVGlt
ZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKaW5kZXggYzc0ODg3MDRjOGZkNjQwNmU1
NjExOWVjNWJkZjI4MDY0ZjhkZDJkOS4uMDRlNjY3MzIyYWRmNjUwNzdhZTRiODNhODI0Mzg1ZTI1
MmQyY2FlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVl
bEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50
LmgKQEAgLTE3Myw3ICsxNzMsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRW5kT2ZOb25Nb21l
bnR1bVNjcm9sbCgpIGNvbnN0OwogICAgIGJvb2wgaXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNj
cm9sbCgpIGNvbnN0OwotICAgIEZsb2F0UG9pbnQgc3dpcGVWZWxvY2l0eSgpIGNvbnN0OworICAg
IEZsb2F0U2l6ZSBzd2lwZVZlbG9jaXR5KCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KFdJTikKQEAgLTI2MiwxMCArMjYyLDEwIEBAIGlubGluZSBib29sIFBsYXRmb3JtV2hlZWxFdmVu
dDo6aXNUcmFuc2l0aW9uaW5nVG9Nb21lbnR1bVNjcm9sbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cGhhc2UgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2U6Ok5vbmUgJiYgbV9tb21lbnR1bVBoYXNl
ID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlOjpCZWdhbjsKIH0KIAotaW5saW5lIEZsb2F0UG9p
bnQgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKK2lubGluZSBGbG9h
dFNpemUgUGxhdGZvcm1XaGVlbEV2ZW50Ojpzd2lwZVZlbG9jaXR5KCkgY29uc3QKIHsKICAgICAv
LyBUaGUgc3dpcGluZyB2ZWxvY2l0eSBpcyBzdG9yZWQgaW4gdGhlIGRlbHRhcyBvZiB0aGUgZXZl
bnQgZGVjbGFyaW5nIGl0LgotICAgIHJldHVybiBpc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Ny
b2xsKCkgPyBGbG9hdFBvaW50KG1fd2hlZWxUaWNrc1gsIG1fd2hlZWxUaWNrc1kpIDogRmxvYXRQ
b2ludCgpOworICAgIHJldHVybiBpc1RyYW5zaXRpb25pbmdUb01vbWVudHVtU2Nyb2xsKCkgPyBG
bG9hdFNpemUobV93aGVlbFRpY2tzWCwgbV93aGVlbFRpY2tzWSkgOiBGbG9hdFNpemUoKTsKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShLSU5FVElDX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKaW5kZXggNWM2NGFkN2UyNzU4MWE3NDA2MDczMmJlOWRh
NzBmOWM1OTQ3ZjM2ZC4uMTU1MzE1OGQwNTZiNmNmNTI2Zjg3MmNlMTZkZjViNzIxY2RhYmNmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKQEAgLTI2LDYgKzI2
LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUg
PHd0Zi9Nb25vdG9uaWNUaW1lLmg+CkBAIC00MCw2ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5TY3JvbGxBbmltYXRpb25DbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0
UG9pbnQmIC8qIGN1cnJlbnRPZmZzZXQgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxB
bmltYXRpb25XaWxsU3RhcnQoU2Nyb2xsQW5pbWF0aW9uJikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSB7IH0KICAgICB2aXJ0dWFs
IFNjcm9sbEV4dGVudHMgc2Nyb2xsRXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24m
KSA9IDA7CiB9OwpAQCAtNjIsMTYgKzY0LDQzIEBAIHB1YmxpYzoKICAgICBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2FuaW1hdGlvblR5cGU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCByZXRh
cmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdEZXN0aW5hdGlvbk9mZnNl
dCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpCisgICAgeworICAg
ICAgICBpZiAoIW1faXNBY3RpdmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRpZEVu
ZCgpOworICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBt
X2lzQWN0aXZlOyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbEV4dGVudHMoKSB7IH07
CiAgICAgCi0gICAgLy8gUmV0dXJucyBjdXJyZW50IG9mZnNldC4KLSAgICB2aXJ0dWFsIEZsb2F0
UG9pbnQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSB7IHJldHVybiB7IH07IH07Cisg
ICAgRmxvYXRQb2ludCBjdXJyZW50T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50T2Zm
c2V0OyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHNlcnZpY2VBbmltYXRpb24oTW9ub3Rvbmlj
VGltZSkgPSAwOwogCiBwcm90ZWN0ZWQ6CisgICAgdm9pZCBkaWRTdGFydChNb25vdG9uaWNUaW1l
IGN1cnJlbnRUaW1lKQorICAgIHsKKyAgICAgICAgbV9zdGFydFRpbWUgPSBjdXJyZW50VGltZTsK
KyAgICAgICAgbV9pc0FjdGl2ZSA9IHRydWU7CisgICAgICAgIG1fY2xpZW50LnNjcm9sbEFuaW1h
dGlvbldpbGxTdGFydCgqdGhpcyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZGlkRW5kKCkKKyAg
ICB7CisgICAgICAgIG1faXNBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgbV9jbGllbnQuc2Nyb2xs
QW5pbWF0aW9uRGlkRW5kKCp0aGlzKTsKKyAgICB9CisgICAgCisgICAgU2Vjb25kcyB0aW1lU2lu
Y2VTdGFydChNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGN1cnJlbnRUaW1lIC0gbV9zdGFydFRpbWU7CisgICAgfQorCiAgICAgU2Nyb2xsQW5p
bWF0aW9uQ2xpZW50JiBtX2NsaWVudDsKICAgICBjb25zdCBUeXBlIG1fYW5pbWF0aW9uVHlwZTsK
KyAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OworICAgIE1vbm90b25pY1RpbWUgbV9zdGFy
dFRpbWU7CisgICAgRmxvYXRQb2ludCBtX2N1cnJlbnRPZmZzZXQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bmltYXRpb25LaW5ldGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dGlvbktpbmV0aWMuY3BwCmluZGV4IGE5YjY2NTRhNmJiNjY1OTVkMmUzNTc2MzBkNTQ0ZjRkYmJi
ODVjYTMuLjg3MzAwMzVkNjAzNzI4ZWMyMGJiNjY4NzRjYjcxZGYyZjU0NzNjYWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuY3BwCkBA
IC0yOSwxMCArMjksNiBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAKLSNp
ZiBVU0UoR0xJQl9FVkVOVF9MT09QKQotI2luY2x1ZGUgPHd0Zi9nbGliL1J1bkxvb3BTb3VyY2VQ
cmlvcml0eS5oPgotI2VuZGlmCi0KIC8qCiAgKiBQZXJBeGlzRGF0YSBpcyBhIHBvcnQgb2YgR3Rr
S2luZXRpY1Njcm9sbGluZyBhcyBvZiBHVEsrIDMuMjAsCiAgKiBtaW1pY2tpbmcgaXRzIEFQSSBh
bmQgaXRzIGJlaGF2aW9yLgpAQCAtNjcsMTIgKzYzLDkgQEAKICAqLwogCiBzdGF0aWMgY29uc3Rl
eHByIGRvdWJsZSBkZWNlbEZyaWN0aW9uID0gNDsKLXN0YXRpYyBjb25zdGV4cHIgZG91YmxlIGZy
YW1lUmF0ZSA9IDYwOwogc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgdmVsb2NpdHlBY2N1bXVsYXRp
b25GbG9vciA9IDAuMzM7CiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSB2ZWxvY2l0eUFjY3VtdWxh
dGlvbkNlaWwgPSAxLjA7CiBzdGF0aWMgY29uc3RleHByIGRvdWJsZSB2ZWxvY2l0eUFjY3VtdWxh
dGlvbk1heCA9IDYuMDsKLXN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyB0aWNrVGltZSA9IDFfcyAv
IGZyYW1lUmF0ZTsKLXN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBtaW5pbXVtVGltZXJJbnRlcnZh
bCB7IDFfbXMgfTsKIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBzY3JvbGxDYXB0dXJlVGhyZXNo
b2xkIHsgMTUwX21zIH07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg3LDExICs4MCwxMSBA
QCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQZXJBeGlzRGF0YTo6UGVyQXhpc0RhdGEoZG91Ymxl
IGxvd2VyLCBkb3VibGUgdXBwZXIsIGRvdQogewogfQogCi1ib29sIFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OlBlckF4aXNEYXRhOjphbmltYXRlU2Nyb2xsKFNlY29uZHMgdGltZURlbHRhKQorYm9v
bCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpQZXJBeGlzRGF0YTo6YW5pbWF0ZVNjcm9sbChTZWNv
bmRzIGVsYXBzZWRUaW1lKQogewogICAgIGF1dG8gbGFzdE9mZnNldCA9IG1fb2Zmc2V0OwogICAg
IGF1dG8gbGFzdFRpbWUgPSBtX2VsYXBzZWRUaW1lOwotICAgIG1fZWxhcHNlZFRpbWUgKz0gdGlt
ZURlbHRhOworICAgIG1fZWxhcHNlZFRpbWUgPSBlbGFwc2VkVGltZTsKIAogICAgIGRvdWJsZSBl
eHBvbmVudGlhbFBhcnQgPSBleHAoLWRlY2VsRnJpY3Rpb24gKiBtX2VsYXBzZWRUaW1lLnZhbHVl
KCkpOwogICAgIG1fb2Zmc2V0ID0gbV9jb2VmMSArIG1fY29lZjIgKiBleHBvbmVudGlhbFBhcnQ7
CkBAIC0xMDUsNyArOTgsNyBAQCBib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlBlckF4aXNE
YXRhOjphbmltYXRlU2Nyb2xsKFNlY29uZHMgdGltZURlbHRhKQogICAgICAgICBtX29mZnNldCA9
IG1fdXBwZXI7CiAgICAgfQogCi0gICAgaWYgKGZhYnMobV92ZWxvY2l0eSkgPCAxIHx8IChsYXN0
VGltZSAmJiBmYWJzKG1fb2Zmc2V0IC0gbGFzdE9mZnNldCkgPCAxKSkgeworICAgIGlmIChmYWJz
KG1fdmVsb2NpdHkpIDwgMSB8fCAobGFzdFRpbWUgPiAwX3MgJiYgZmFicyhtX29mZnNldCAtIGxh
c3RPZmZzZXQpIDwgMSkpIHsKICAgICAgICAgbV9vZmZzZXQgPSByb3VuZChtX29mZnNldCk7CiAg
ICAgICAgIG1fdmVsb2NpdHkgPSAwOwogICAgIH0KQEAgLTExNSwyNSArMTA4LDExIEBAIGJvb2wg
U2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6UGVyQXhpc0RhdGE6OmFuaW1hdGVTY3JvbGwoU2Vjb25k
cyB0aW1lRGVsdGEpCiAKIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OlNjcm9sbEFuaW1hdGlvbktp
bmV0aWMoU2Nyb2xsQW5pbWF0aW9uQ2xpZW50JiBjbGllbnQpCiAgICAgOiBTY3JvbGxBbmltYXRp
b24oVHlwZTo6S2luZXRpYywgY2xpZW50KQotICAgICwgbV9hbmltYXRpb25UaW1lcihSdW5Mb29w
OjpjdXJyZW50KCksIHRoaXMsICZTY3JvbGxBbmltYXRpb25LaW5ldGljOjphbmltYXRpb25UaW1l
ckZpcmVkKQogewotI2lmIFVTRShHTElCX0VWRU5UX0xPT1ApCi0gICAgbV9hbmltYXRpb25UaW1l
ci5zZXRQcmlvcml0eShXVEY6OlJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlzcGxheVJlZnJlc2hN
b25pdG9yVGltZXIpOwotI2VuZGlmCiB9CiAKIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6On5TY3Jv
bGxBbmltYXRpb25LaW5ldGljKCkgPSBkZWZhdWx0OwogCi12b2lkIFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OnN0b3AoKQotewotICAgIG1fYW5pbWF0aW9uVGltZXIuc3RvcCgpOwotfQotCi1ib29s
IFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpOwotfQotCiB2b2lkIFNjcm9sbEFuaW1hdGlvbktp
bmV0aWM6OmFwcGVuZFRvU2Nyb2xsSGlzdG9yeShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2
ZW50KQogewogICAgIG1fc2Nyb2xsSGlzdG9yeS5yZW1vdmVBbGxNYXRjaGluZyhbJmV2ZW50XSAo
UGxhdGZvcm1XaGVlbEV2ZW50JiBvdGhlckV2ZW50KSAtPiBib29sIHsKQEAgLTE0OCw3ICsxMjcs
NyBAQCB2b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmNsZWFyU2Nyb2xsSGlzdG9yeSgpCiAg
ICAgbV9zY3JvbGxIaXN0b3J5LmNsZWFyKCk7CiB9CiAKLUZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYzo6Y29tcHV0ZVZlbG9jaXR5KCkKK0Zsb2F0U2l6ZSBTY3JvbGxBbmltYXRpb25L
aW5ldGljOjpjb21wdXRlVmVsb2NpdHkoKQogewogICAgIGlmIChtX3Njcm9sbEhpc3RvcnkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwpAQCAtMTY2LDI1ICsxNDUsMjQgQEAgRmxvYXRQ
b2ludCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpjb21wdXRlVmVsb2NpdHkoKQogICAgIC8vIEZJ
WE1FOiBJdCdzIG9kZCB0aGF0IGNvbXB1dGVWZWxvY2l0eSgpIGhhcyB0aGUgc2lkZSBlZmZlY3Qg
b2YgY2xlYXJpbmcgaGlzdG9yeS4KICAgICBtX3Njcm9sbEhpc3RvcnkuY2xlYXIoKTsKIAotICAg
IHJldHVybiBGbG9hdFBvaW50KGFjY3VtRGVsdGEueCgpICogLTEgLyAobGFzdCAtIGZpcnN0KS52
YWx1ZSgpLCBhY2N1bURlbHRhLnkoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCkudmFsdWUoKSk7Cisg
ICAgcmV0dXJuIEZsb2F0U2l6ZShhY2N1bURlbHRhLngoKSAqIC0xIC8gKGxhc3QgLSBmaXJzdCku
dmFsdWUoKSwgYWNjdW1EZWx0YS55KCkgKiAtMSAvIChsYXN0IC0gZmlyc3QpLnZhbHVlKCkpOwog
fQogCi1ib29sIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OnN0YXJ0QW5pbWF0ZWRTY3JvbGxXaXRo
SW5pdGlhbFZlbG9jaXR5KGNvbnN0IEZsb2F0UG9pbnQmIGluaXRpYWxPZmZzZXQsIGNvbnN0IEZs
b2F0UG9pbnQmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCkKK2Jv
b2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0aWFs
VmVsb2NpdHkoY29uc3QgRmxvYXRQb2ludCYgaW5pdGlhbE9mZnNldCwgY29uc3QgRmxvYXRTaXpl
JiB2ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBib29sIG1heVZTY3JvbGwpCiB7CiAgICAgc3Rv
cCgpOwogCi0gICAgaWYgKCF2ZWxvY2l0eS54KCkgJiYgIXZlbG9jaXR5LnkoKSkgewotICAgICAg
ICBtX29mZnNldCA9IGluaXRpYWxPZmZzZXQ7CisgICAgaWYgKHZlbG9jaXR5LmlzWmVybygpKSB7
CiAgICAgICAgIG1faG9yaXpvbnRhbERhdGEgPSBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIG1fdmVy
dGljYWxEYXRhID0gc3RkOjpudWxsb3B0OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgYXV0byBkZWx0YSA9IGRlbHRhVG9OZXh0RnJhbWUoKTsKKyAgICBhdXRvIGVsYXBzZWRU
aW1lID0gMF9zOwogICAgIGF1dG8gZXh0ZW50cyA9IG1fY2xpZW50LnNjcm9sbEV4dGVudHNGb3JB
bmltYXRpb24oKnRoaXMpOwogCiAgICAgYXV0byBhY2N1bXVsYXRlVmVsb2NpdHkgPSBbJl0oZG91
YmxlIHZlbG9jaXR5LCBzdGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRhPiBheGlzRGF0YSkgLT4gZG91
YmxlIHsKLSAgICAgICAgaWYgKGF4aXNEYXRhICYmIGF4aXNEYXRhLnZhbHVlKCkuYW5pbWF0ZVNj
cm9sbChkZWx0YSkpIHsKKyAgICAgICAgaWYgKGF4aXNEYXRhICYmIGF4aXNEYXRhLnZhbHVlKCku
YW5pbWF0ZVNjcm9sbChlbGFwc2VkVGltZSkpIHsKICAgICAgICAgICAgIGRvdWJsZSBsYXN0VmVs
b2NpdHkgPSBheGlzRGF0YS52YWx1ZSgpLnZlbG9jaXR5KCk7CiAgICAgICAgICAgICBpZiAoKHN0
ZDo6c2lnbmJpdChsYXN0VmVsb2NpdHkpID09IHN0ZDo6c2lnbmJpdCh2ZWxvY2l0eSkpCiAgICAg
ICAgICAgICAgICAgJiYgKHN0ZDo6YWJzKHZlbG9jaXR5KSA+PSBzdGQ6OmFicyhsYXN0VmVsb2Np
dHkgKiB2ZWxvY2l0eUFjY3VtdWxhdGlvbkZsb29yKSkpIHsKQEAgLTIwMSwyMCArMTc5LDE5IEBA
IGJvb2wgU2Nyb2xsQW5pbWF0aW9uS2luZXRpYzo6c3RhcnRBbmltYXRlZFNjcm9sbFdpdGhJbml0
aWFsVmVsb2NpdHkoY29uc3QgRmxvYXRQCiAgICAgaWYgKG1heUhTY3JvbGwpIHsKICAgICAgICAg
bV9ob3Jpem9udGFsRGF0YSA9IFBlckF4aXNEYXRhKGV4dGVudHMubWluaW11bVNjcm9sbE9mZnNl
dCgpLngoKSwKICAgICAgICAgICAgIGV4dGVudHMubWF4aW11bVNjcm9sbE9mZnNldCgpLngoKSwK
LSAgICAgICAgICAgIGluaXRpYWxPZmZzZXQueCgpLCBhY2N1bXVsYXRlVmVsb2NpdHkodmVsb2Np
dHkueCgpLCBtX2hvcml6b250YWxEYXRhKSk7CisgICAgICAgICAgICBpbml0aWFsT2Zmc2V0Lngo
KSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9jaXR5LndpZHRoKCksIG1faG9yaXpvbnRhbERhdGEp
KTsKICAgICB9IGVsc2UKICAgICAgICAgbV9ob3Jpem9udGFsRGF0YSA9IHN0ZDo6bnVsbG9wdDsK
IAogICAgIGlmIChtYXlWU2Nyb2xsKSB7CiAgICAgICAgIG1fdmVydGljYWxEYXRhID0gUGVyQXhp
c0RhdGEoZXh0ZW50cy5taW5pbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAogICAgICAgICAgICAgZXh0
ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkueSgpLAotICAgICAgICAgICAgaW5pdGlhbE9mZnNl
dC55KCksIGFjY3VtdWxhdGVWZWxvY2l0eSh2ZWxvY2l0eS55KCksIG1fdmVydGljYWxEYXRhKSk7
CisgICAgICAgICAgICBpbml0aWFsT2Zmc2V0LnkoKSwgYWNjdW11bGF0ZVZlbG9jaXR5KHZlbG9j
aXR5LmhlaWdodCgpLCBtX3ZlcnRpY2FsRGF0YSkpOwogICAgIH0gZWxzZQogICAgICAgICBtX3Zl
cnRpY2FsRGF0YSA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIG1fb2Zmc2V0ID0gaW5pdGlhbE9mZnNl
dDsKLSAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gdGlja1RpbWUgLyAy
LjsKLSAgICBhbmltYXRpb25UaW1lckZpcmVkKCk7CisgICAgbV9jdXJyZW50T2Zmc2V0ID0gaW5p
dGlhbE9mZnNldDsKKyAgICBkaWRTdGFydChNb25vdG9uaWNUaW1lOjpub3coKSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTIyNywzMCArMjA0LDIzIEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9u
S2luZXRpYzo6cmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbEFuaW1hdGlvbktpbmV0aWM6OmFuaW1hdGlv
blRpbWVyRmlyZWQoKQordm9pZCBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpzZXJ2aWNlQW5pbWF0
aW9uKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCiB7Ci0gICAgYXV0byBkZWx0YSA9IGRlbHRh
VG9OZXh0RnJhbWUoKTsKKyAgICBhdXRvIGVsYXBzZWRUaW1lID0gdGltZVNpbmNlU3RhcnQoY3Vy
cmVudFRpbWUpOwogCi0gICAgaWYgKG1faG9yaXpvbnRhbERhdGEgJiYgIW1faG9yaXpvbnRhbERh
dGEudmFsdWUoKS5hbmltYXRlU2Nyb2xsKGRlbHRhKSkKKyAgICBpZiAobV9ob3Jpem9udGFsRGF0
YSAmJiAhbV9ob3Jpem9udGFsRGF0YS52YWx1ZSgpLmFuaW1hdGVTY3JvbGwoZWxhcHNlZFRpbWUp
KQogICAgICAgICBtX2hvcml6b250YWxEYXRhID0gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKG1f
dmVydGljYWxEYXRhICYmICFtX3ZlcnRpY2FsRGF0YS52YWx1ZSgpLmFuaW1hdGVTY3JvbGwoZGVs
dGEpKQorICAgIGlmIChtX3ZlcnRpY2FsRGF0YSAmJiAhbV92ZXJ0aWNhbERhdGEudmFsdWUoKS5h
bmltYXRlU2Nyb2xsKGVsYXBzZWRUaW1lKSkKICAgICAgICAgbV92ZXJ0aWNhbERhdGEgPSBzdGQ6
Om51bGxvcHQ7CiAKLSAgICAvLyBJZiBvbmUgb2YgdGhlIGF4ZXMgZGlkbid0IGZpbmlzaCBpdHMg
YW5pbWF0aW9uIHdlIG11c3QgY29udGludWUgaXQuCi0gICAgaWYgKG1faG9yaXpvbnRhbERhdGEg
fHwgbV92ZXJ0aWNhbERhdGEpCi0gICAgICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90
KHN0ZDo6bWF4KG1pbmltdW1UaW1lckludGVydmFsLCBkZWx0YSkpOworICAgIGRvdWJsZSB4ID0g
bV9ob3Jpem9udGFsRGF0YSA/IG1faG9yaXpvbnRhbERhdGEudmFsdWUoKS5vZmZzZXQoKSA6IG1f
Y3VycmVudE9mZnNldC54KCk7CisgICAgZG91YmxlIHkgPSBtX3ZlcnRpY2FsRGF0YSA/IG1fdmVy
dGljYWxEYXRhLnZhbHVlKCkub2Zmc2V0KCkgOiBtX2N1cnJlbnRPZmZzZXQueSgpOworICAgIG1f
Y3VycmVudE9mZnNldCA9IEZsb2F0UG9pbnQoeCwgeSk7CisgICAgbV9jbGllbnQuc2Nyb2xsQW5p
bWF0aW9uRGlkVXBkYXRlKCp0aGlzLCBtX2N1cnJlbnRPZmZzZXQpOwogCi0gICAgZG91YmxlIHgg
PSBtX2hvcml6b250YWxEYXRhID8gbV9ob3Jpem9udGFsRGF0YS52YWx1ZSgpLm9mZnNldCgpIDog
bV9vZmZzZXQueCgpOwotICAgIGRvdWJsZSB5ID0gbV92ZXJ0aWNhbERhdGEgPyBtX3ZlcnRpY2Fs
RGF0YS52YWx1ZSgpLm9mZnNldCgpIDogbV9vZmZzZXQueSgpOwotICAgIG1fb2Zmc2V0ID0gRmxv
YXRQb2ludCh4LCB5KTsKLSAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoKnRo
aXMsIG1fb2Zmc2V0KTsKLX0KLQotU2Vjb25kcyBTY3JvbGxBbmltYXRpb25LaW5ldGljOjpkZWx0
YVRvTmV4dEZyYW1lKCkKLXsKLSAgICBNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lID0gTW9ub3Rv
bmljVGltZTo6bm93KCk7Ci0gICAgcmV0dXJuIDFfcyAqIGNlaWwoKGN1cnJlbnRUaW1lIC0gbV9z
dGFydFRpbWUpLnZhbHVlKCkgKiBmcmFtZVJhdGUpIC8gZnJhbWVSYXRlIC0gKGN1cnJlbnRUaW1l
IC0gbV9zdGFydFRpbWUpOworICAgIGlmICghbV9ob3Jpem9udGFsRGF0YSAmJiAhbV92ZXJ0aWNh
bERhdGEpCisgICAgICAgIGRpZEVuZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGlj
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmgKaW5k
ZXggMTQxM2YzMzI4OGU5ZGUyZjNkMmVkZTZhOWZkZDJlMTcxODE0Yzg1YS4uZDQzMDJiMzc4Nzgx
ZWY1NDg2OWEwMTY4ZWM2ZTlkZTQ0MTIxNDM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbEFuaW1hdGlvbktpbmV0aWMuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5j
bHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdGlvbi5oIgotI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsMjggKzYw
LDIxIEBAIHB1YmxpYzoKICAgICBTY3JvbGxBbmltYXRpb25LaW5ldGljKFNjcm9sbEFuaW1hdGlv
bkNsaWVudCYpOwogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdGlvbktpbmV0aWMoKTsKIAotICAg
IC8vIEZJWE1FOiBWZWxvY2l0eSBzaG91bGQgYmUgYSBGbG9hdFNpemUuCi0gICAgYm9vbCBzdGFy
dEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0
aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgYm9vbCBtYXlIU2Nyb2xsLCBi
b29sIG1heVZTY3JvbGwpOwotCisgICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRp
YWxWZWxvY2l0eShjb25zdCBGbG9hdFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNp
emUmIHZlbG9jaXR5LCBib29sIG1heUhTY3JvbGwsIGJvb2wgbWF5VlNjcm9sbCk7CiAgICAgYm9v
bCByZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBuZXdPZmZzZXQpIGZp
bmFsOwotICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBm
aW5hbDsKKworICAgIC8vIEZJWE1FOiBvbmx5IHB1YmxpYyBmb3IgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZU5pY29zaWEuCisgICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90
b25pY1RpbWUpIGZpbmFsOwogCiAgICAgdm9pZCBhcHBlbmRUb1Njcm9sbEhpc3RvcnkoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgdm9pZCBjbGVhclNjcm9sbEhpc3RvcnkoKTsKIAot
ICAgIEZsb2F0UG9pbnQgY29tcHV0ZVZlbG9jaXR5KCk7CisgICAgRmxvYXRTaXplIGNvbXB1dGVW
ZWxvY2l0eSgpOwogCiBwcml2YXRlOgotICAgIHZvaWQgYW5pbWF0aW9uVGltZXJGaXJlZCgpOwot
ICAgIFNlY29uZHMgZGVsdGFUb05leHRGcmFtZSgpOwotCiAgICAgc3RkOjpvcHRpb25hbDxQZXJB
eGlzRGF0YT4gbV9ob3Jpem9udGFsRGF0YTsKICAgICBzdGQ6Om9wdGlvbmFsPFBlckF4aXNEYXRh
PiBtX3ZlcnRpY2FsRGF0YTsKIAotICAgIE1vbm90b25pY1RpbWUgbV9zdGFydFRpbWU7Ci0gICAg
UnVuTG9vcDo6VGltZXI8U2Nyb2xsQW5pbWF0aW9uS2luZXRpYz4gbV9hbmltYXRpb25UaW1lcjsK
LSAgICBGbG9hdFBvaW50IG1fb2Zmc2V0OwogICAgIFZlY3RvcjxQbGF0Zm9ybVdoZWVsRXZlbnQ+
IG1fc2Nyb2xsSGlzdG9yeTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcAppbmRleCBmYTU3MzY5MTU0YTM4Nzk0MjkzMGQ2
ZjgzNTVkZWYxYzdmZWQwNzNlLi4yMjM4NWUxZjBiOWIyYzU4YTkwMmU3NWQ0OTFmMmE0NDhlNzdm
NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25N
b21lbnR1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
TW9tZW50dW0uY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsaW5nTW9tZW50dW1DYWxjdWxhdG9yLmgiCi0jaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUyLDU1ICs1MSw0
OSBAQCBib29sIFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjpzdGFydEFuaW1hdGVkU2Nyb2xsV2l0
aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9hdAogCiAgICAgaWYgKHByZWRpY3RlZFNjcm9sbE9m
ZnNldCA9PSBpbml0aWFsT2Zmc2V0KSB7CiAgICAgICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yID0g
bnVsbHB0cjsKLSAgICAgICAgbV9hbmltYXRpb25Db21wbGV0ZSA9IHRydWU7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtX3N0YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5v
dygpOwotICAgIG1fYW5pbWF0aW9uQ29tcGxldGUgPSBmYWxzZTsKKyAgICBkaWRTdGFydChNb25v
dG9uaWNUaW1lOjpub3coKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgU2Nyb2xsQW5p
bWF0aW9uTW9tZW50dW06OnJldGFyZ2V0QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
IG5ld0Rlc3RpbmF0aW9uKQogewotICAgIGlmIChtX21vbWVudHVtQ2FsY3VsYXRvcikgeworICAg
IGlmIChtX21vbWVudHVtQ2FsY3VsYXRvciAmJiBpc0FjdGl2ZSgpKSB7CiAgICAgICAgIG1fbW9t
ZW50dW1DYWxjdWxhdG9yLT5zZXRSZXRhcmdldGVkU2Nyb2xsT2Zmc2V0KG5ld0Rlc3RpbmF0aW9u
KTsKICAgICAgICAgYXV0byBuZXdEdXJhdGlvbiA9IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5hbmlt
YXRpb25EdXJhdGlvbigpOwotICAgICAgICBtX2FuaW1hdGlvbkNvbXBsZXRlID0gbmV3RHVyYXRp
b24gPiAwX3M7Ci0gICAgICAgIHJldHVybiAhbV9hbmltYXRpb25Db21wbGV0ZTsKKyAgICAgICAg
Ym9vbCBhbmltYXRpb25Db21wbGV0ZSA9IG5ld0R1cmF0aW9uID4gMF9zOworICAgICAgICBpZiAo
YW5pbWF0aW9uQ29tcGxldGUpCisgICAgICAgICAgICBkaWRFbmQoKTsKKworICAgICAgICByZXR1
cm4gIWFuaW1hdGlvbkNvbXBsZXRlOwogICAgIH0KKwogICAgIHJldHVybiBmYWxzZTsKIH0KIAog
dm9pZCBTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6c3RvcCgpCiB7CiAgICAgbV9tb21lbnR1bUNh
bGN1bGF0b3IgPSBudWxscHRyOwotICAgIG1fYW5pbWF0aW9uQ29tcGxldGUgPSB0cnVlOwotICAg
IG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZEVuZCgqdGhpcyk7Ci19Ci0KLWJvb2wgU2Nyb2xs
QW5pbWF0aW9uTW9tZW50dW06OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gIW1fYW5p
bWF0aW9uQ29tcGxldGU7CisgICAgU2Nyb2xsQW5pbWF0aW9uOjpzdG9wKCk7CiB9CiAKLUZsb2F0
UG9pbnQgU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW06OnNlcnZpY2VBbmltYXRpb24oTW9ub3Rvbmlj
VGltZSBjdXJyZW50VGltZSkKK3ZvaWQgU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW06OnNlcnZpY2VB
bmltYXRpb24oTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSkKIHsKICAgICBpZiAoIW1fbW9tZW50
dW1DYWxjdWxhdG9yKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBlbGFwc2VkVGlt
ZSA9IGN1cnJlbnRUaW1lIC0gbV9zdGFydFRpbWU7Ci0gICAgbV9hbmltYXRpb25Db21wbGV0ZSA9
IGVsYXBzZWRUaW1lID49IG1fbW9tZW50dW1DYWxjdWxhdG9yLT5hbmltYXRpb25EdXJhdGlvbigp
OworICAgIGF1dG8gZWxhcHNlZFRpbWUgPSB0aW1lU2luY2VTdGFydChjdXJyZW50VGltZSk7Cisg
ICAgYm9vbCBhbmltYXRpb25Db21wbGV0ZSA9IGVsYXBzZWRUaW1lID49IG1fbW9tZW50dW1DYWxj
dWxhdG9yLT5hbmltYXRpb25EdXJhdGlvbigpOwogICAgIGF1dG8gbmV3T2Zmc2V0ID0gbV9tb21l
bnR1bUNhbGN1bGF0b3ItPnNjcm9sbE9mZnNldEFmdGVyRWxhcHNlZFRpbWUoZWxhcHNlZFRpbWUp
OwogCiAgICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKCp0aGlzLCBuZXdPZmZz
ZXQpOwogCi0gICAgaWYgKG1fYW5pbWF0aW9uQ29tcGxldGUpCi0gICAgICAgIG1fY2xpZW50LnNj
cm9sbEFuaW1hdGlvbkRpZEVuZCgqdGhpcyk7Ci0gICAgCi0gICAgcmV0dXJuIG5ld09mZnNldDsK
KyAgICBpZiAoYW5pbWF0aW9uQ29tcGxldGUpCisgICAgICAgIGRpZEVuZCgpOwogfQogCiB2b2lk
IFNjcm9sbEFuaW1hdGlvbk1vbWVudHVtOjp1cGRhdGVTY3JvbGxFeHRlbnRzKCkKQEAgLTEwOCwx
MSArMTAxLDggQEAgdm9pZCBTY3JvbGxBbmltYXRpb25Nb21lbnR1bTo6dXBkYXRlU2Nyb2xsRXh0
ZW50cygpCiAgICAgYXV0byBleHRlbnRzID0gbV9jbGllbnQuc2Nyb2xsRXh0ZW50c0ZvckFuaW1h
dGlvbigqdGhpcyk7CiAgICAgYXV0byBwcmVkaWN0ZWRTY3JvbGxPZmZzZXQgPSBtX21vbWVudHVt
Q2FsY3VsYXRvci0+cHJlZGljdGVkRGVzdGluYXRpb25PZmZzZXQoKTsKICAgICBhdXRvIGNvbnN0
cmFpbmVkT2Zmc2V0ID0gcHJlZGljdGVkU2Nyb2xsT2Zmc2V0LmNvbnN0cmFpbmVkQmV0d2Vlbihl
eHRlbnRzLm1pbmltdW1TY3JvbGxPZmZzZXQoKSwgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0
KCkpOwotICAgIGlmIChjb25zdHJhaW5lZE9mZnNldCAhPSBwcmVkaWN0ZWRTY3JvbGxPZmZzZXQp
IHsKKyAgICBpZiAoY29uc3RyYWluZWRPZmZzZXQgIT0gcHJlZGljdGVkU2Nyb2xsT2Zmc2V0KQog
ICAgICAgICByZXRhcmdldEFjdGl2ZUFuaW1hdGlvbihjb25zdHJhaW5lZE9mZnNldCk7Ci0gICAg
ICAgIGlmIChtX2FuaW1hdGlvbkNvbXBsZXRlKQotICAgICAgICAgICAgbV9jbGllbnQuc2Nyb2xs
QW5pbWF0aW9uRGlkRW5kKCp0aGlzKTsKLSAgICB9CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1v
bWVudHVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25Nb21lbnR1
bS5oCmluZGV4IDY2NDJkY2I1NDZlZmQ5MDkzOWI4ZmY1MjE4MGZiMDM5MDkzZGI0ZWQuLjVjOWJl
OTEzNDFkNjcyNGVjNTA2OTc0YjI3M2VmMTc5Y2Y5NzI5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaApAQCAtMzYsMTggKzM2LDEz
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRpb25Nb21lbnR1bSgpOwogCiAg
ICAgYm9vbCBzdGFydEFuaW1hdGVkU2Nyb2xsV2l0aEluaXRpYWxWZWxvY2l0eShjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsT2Zmc2V0LCBjb25zdCBGbG9hdFNpemUmIGluaXRpYWxWZWxvY2l0eSwg
Y29uc3QgRmxvYXRTaXplJiBpbml0aWFsRGVsdGEsIGNvbnN0IFdURjo6RnVuY3Rpb248RmxvYXRQ
b2ludChjb25zdCBGbG9hdFBvaW50Jik+JiBkZXN0aW5hdGlvbk1vZGlmaWVyKTsKLQogICAgIGJv
b2wgcmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3RGVzdGluYXRp
b24pIGZpbmFsOwogICAgIHZvaWQgc3RvcCgpIGZpbmFsOwotICAgIGJvb2wgaXNBY3RpdmUoKSBj
b25zdCBmaW5hbDsKLSAgICBGbG9hdFBvaW50IHNlcnZpY2VBbmltYXRpb24oTW9ub3RvbmljVGlt
ZSkgZmluYWw7CisgICAgdm9pZCBzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUpIGZpbmFs
OwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsRXh0ZW50cygpIGZpbmFsOwogCiBwcml2YXRlOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdNb21lbnR1bUNhbGN1bGF0b3I+IG1fbW9tZW50dW1D
YWxjdWxhdG9yOwotICAgIAotICAgIE1vbm90b25pY1RpbWUgbV9zdGFydFRpbWU7Ci0gICAgYm9v
bCBtX2FuaW1hdGlvbkNvbXBsZXRlIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlv
blNtb290aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRpb25TbW9v
dGguY3BwCmluZGV4IGIwNmYyZjI0ZWE1NzUxMjUwNGY3MjIxZDBiOWIyMmJhODIwOTMyYjUuLjAz
NjYyYmM2MjQ4YjE4OWUxNjZhMzMzOWZjMDMwNWExM2M4ZmVkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmNwcApAQCAtMzMsMjUgKzMz
LDE1IEBACiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJUaW1pbmdGdW5j
dGlvbi5oIgogCi0jaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKLSNpbmNsdWRlIDx3dGYvZ2xpYi9S
dW5Mb29wU291cmNlUHJpb3JpdHkuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBjb25zdCBkb3VibGUgZnJhbWVSYXRlID0gNjA7CiBzdGF0aWMgY29uc3QgZmxvYXQg
YW5pbWF0aW9uU3BlZWQgeyAxMDAwLjBmIH07Ci1zdGF0aWMgY29uc3RleHByIFNlY29uZHMgbWlu
aW11bVRpbWVySW50ZXJ2YWwgeyAxX21zIH07CiBzdGF0aWMgY29uc3QgU2Vjb25kcyBtYXhBbmlt
YXRpb25EdXJhdGlvbiB7IDIwMF9tcyB9OwogCiBTY3JvbGxBbmltYXRpb25TbW9vdGg6OlNjcm9s
bEFuaW1hdGlvblNtb290aChTY3JvbGxBbmltYXRpb25DbGllbnQmIGNsaWVudCkKICAgICA6IFNj
cm9sbEFuaW1hdGlvbihUeXBlOjpTbW9vdGgsIGNsaWVudCkKLSAgICAsIG1fYW5pbWF0aW9uVGlt
ZXIoUnVuTG9vcDo6Y3VycmVudCgpLCB0aGlzLCAmU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjphbmlt
YXRpb25UaW1lckZpcmVkKQogICAgICwgbV9lYXNlSW5PdXRUaW1pbmdGdW5jdGlvbihDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6VGlt
aW5nRnVuY3Rpb25QcmVzZXQ6OkVhc2VJbk91dCkpCiB7Ci0jaWYgVVNFKEdMSUJfRVZFTlRfTE9P
UCkKLSAgICBtX2FuaW1hdGlvblRpbWVyLnNldFByaW9yaXR5KFdURjo6UnVuTG9vcFNvdXJjZVBy
aW9yaXR5OjpEaXNwbGF5UmVmcmVzaE1vbml0b3JUaW1lcik7Ci0jZW5kaWYKIH0KIAogU2Nyb2xs
QW5pbWF0aW9uU21vb3RoOjp+U2Nyb2xsQW5pbWF0aW9uU21vb3RoKCkgPSBkZWZhdWx0OwpAQCAt
NzksMTcgKzY5LDEwIEBAIGJvb2wgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydE9yUmV0YXJn
ZXRBbmltYXRpb24oY29uc3QgU2Nyb2xsRXh0ZW50cyYgZXh0ZW50CiAgICAgbV9kZXN0aW5hdGlv
bk9mZnNldCA9IGRlc3RpbmF0aW9uT2Zmc2V0LmNvbnN0cmFpbmVkQmV0d2VlbihleHRlbnRzLm1p
bmltdW1TY3JvbGxPZmZzZXQoKSwgZXh0ZW50cy5tYXhpbXVtU2Nyb2xsT2Zmc2V0KCkpOwogICAg
IGJvb2wgbmVlZFRvU2Nyb2xsID0gbV9zdGFydE9mZnNldCAhPSBtX2Rlc3RpbmF0aW9uT2Zmc2V0
OwogCi0gICAgaWYgKG5lZWRUb1Njcm9sbCAmJiAhaXNBY3RpdmUoKSkgewotICAgICAgICBtX3N0
YXJ0VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgICAgICBhbmltYXRpb25UaW1lckZp
cmVkKCk7Ci0gICAgfQotICAgIHJldHVybiBuZWVkVG9TY3JvbGw7Ci19CisgICAgaWYgKG5lZWRU
b1Njcm9sbCAmJiAhaXNBY3RpdmUoKSkKKyAgICAgICAgZGlkU3RhcnQoTW9ub3RvbmljVGltZTo6
bm93KCkpOwogCi12b2lkIFNjcm9sbEFuaW1hdGlvblNtb290aDo6c3RvcCgpCi17Ci0gICAgbV9h
bmltYXRpb25UaW1lci5zdG9wKCk7Ci0gICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0aW9uRGlkRW5k
KCp0aGlzKTsKKyAgICByZXR1cm4gbmVlZFRvU2Nyb2xsOwogfQogCiB2b2lkIFNjcm9sbEFuaW1h
dGlvblNtb290aDo6dXBkYXRlU2Nyb2xsRXh0ZW50cygpCkBAIC0xMTAsNiArOTMsMTQgQEAgaW5s
aW5lIGZsb2F0IGxpbmVhckludGVycG9sYXRpb24oZmxvYXQgcHJvZ3Jlc3MsIGZsb2F0IGEsIGZs
b2F0IGIpCiAgICAgcmV0dXJuIGEgKyBwcm9ncmVzcyAqIChiIC0gYSk7CiB9CiAKK3ZvaWQgU2Ny
b2xsQW5pbWF0aW9uU21vb3RoOjpzZXJ2aWNlQW5pbWF0aW9uKE1vbm90b25pY1RpbWUgY3VycmVu
dFRpbWUpCit7CisgICAgYm9vbCBhbmltYXRpb25BY3RpdmUgPSBhbmltYXRlU2Nyb2xsKGN1cnJl
bnRUaW1lKTsKKyAgICBtX2NsaWVudC5zY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoKnRoaXMsIG1f
Y3VycmVudE9mZnNldCk7CisgICAgaWYgKCFhbmltYXRpb25BY3RpdmUpCisgICAgICAgIGRpZEVu
ZCgpOworfQorCiBib29sIFNjcm9sbEFuaW1hdGlvblNtb290aDo6YW5pbWF0ZVNjcm9sbChNb25v
dG9uaWNUaW1lIGN1cnJlbnRUaW1lKQogewogICAgIE1vbm90b25pY1RpbWUgZW5kVGltZSA9IG1f
c3RhcnRUaW1lICsgbV9kdXJhdGlvbjsKQEAgLTEyNiwyOSArMTE3LDQgQEAgYm9vbCBTY3JvbGxB
bmltYXRpb25TbW9vdGg6OmFuaW1hdGVTY3JvbGwoTW9ub3RvbmljVGltZSBjdXJyZW50VGltZSkK
ICAgICByZXR1cm4gY3VycmVudFRpbWUgPCBlbmRUaW1lOwogfQogCi12b2lkIFNjcm9sbEFuaW1h
dGlvblNtb290aDo6YW5pbWF0aW9uVGltZXJGaXJlZCgpCi17Ci0gICAgTW9ub3RvbmljVGltZSBj
dXJyZW50VGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpOwotICAgIFNlY29uZHMgZGVsdGFUb05l
eHRGcmFtZSA9IDFfcyAqIGNlaWwoKGN1cnJlbnRUaW1lIC0gbV9zdGFydFRpbWUpLnZhbHVlKCkg
KiBmcmFtZVJhdGUpIC8gZnJhbWVSYXRlIC0gKGN1cnJlbnRUaW1lIC0gbV9zdGFydFRpbWUpOwot
ICAgIGN1cnJlbnRUaW1lICs9IGRlbHRhVG9OZXh0RnJhbWU7Ci0KLSAgICBib29sIGNvbnRpbnVl
QW5pbWF0aW9uID0gYW5pbWF0ZVNjcm9sbChjdXJyZW50VGltZSk7Ci0gICAgaWYgKGNvbnRpbnVl
QW5pbWF0aW9uKQotICAgICAgICBzdGFydE5leHRUaW1lcihzdGQ6Om1heChtaW5pbXVtVGltZXJJ
bnRlcnZhbCwgZGVsdGFUb05leHRGcmFtZSkpOwotCi0gICAgbV9jbGllbnQuc2Nyb2xsQW5pbWF0
aW9uRGlkVXBkYXRlKCp0aGlzLCBtX2N1cnJlbnRPZmZzZXQpOwotICAgIGlmICghY29udGludWVB
bmltYXRpb24pCi0gICAgICAgIG1fY2xpZW50LnNjcm9sbEFuaW1hdGlvbkRpZEVuZCgqdGhpcyk7
Ci19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0aW9uU21vb3RoOjpzdGFydE5leHRUaW1lcihTZWNvbmRz
IGRlbGF5KQotewotICAgIG1fYW5pbWF0aW9uVGltZXIuc3RhcnRPbmVTaG90KGRlbGF5KTsKLX0K
LQotYm9vbCBTY3JvbGxBbmltYXRpb25TbW9vdGg6OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9hbmltYXRpb25UaW1lci5pc0FjdGl2ZSgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRp
b25TbW9vdGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290
aC5oCmluZGV4IDFkMjM0YTI5MmQ3NzY2OTg4MzE3YzE4MGZhNTQ5NWQ2NTVkYmZhODIuLjlkNWM2
M2QzYzJjMjNkMWM3MDUxNzM0NzdjYTJkZWVkMzlkY2ZkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdGlvblNtb290aC5oCkBAIC0yOCw4ICsyOCw2IEBACiAK
ICNpbmNsdWRlICJTY3JvbGxBbmltYXRpb24uaCIKIAotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRQb2ludDsKQEAgLTQxLDMzICsz
OSwyNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsQW5pbWF0aW9uU21vb3RoKCk7CiAK
ICAgICBib29sIHN0YXJ0QW5pbWF0ZWRTY3JvbGxUb0Rlc3RpbmF0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIGZyb21PZmZzZXQsIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uT2Zmc2V0KTsKLQog
ICAgIGJvb2wgcmV0YXJnZXRBY3RpdmVBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYgbmV3T2Zm
c2V0KSBmaW5hbDsKLSAgICB2b2lkIHN0b3AoKSBmaW5hbDsKLSAgICB2b2lkIHVwZGF0ZVNjcm9s
bEV4dGVudHMoKSBmaW5hbDsKLSAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7CiAKKyAg
ICAvLyBGSVhNRTogb25seSBwdWJsaWMgZm9yIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVOaWNvc2lhLgorICAgIHZvaWQgdXBkYXRlU2Nyb2xsRXh0ZW50cygpIGZpbmFsOworICAg
IHZvaWQgc2VydmljZUFuaW1hdGlvbihNb25vdG9uaWNUaW1lKSBmaW5hbDsKIAogcHJpdmF0ZToK
LSAgICBib29sIHN0YXJ0T3JSZXRhcmdldEFuaW1hdGlvbihjb25zdCBTY3JvbGxFeHRlbnRzJiwg
Y29uc3QgRmxvYXRQb2ludCYgZGVzdGluYXRpb25PZmZzZXQpOwogCi0gICAgdm9pZCByZXF1ZXN0
QW5pbWF0aW9uVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc3RhcnROZXh0VGltZXIoU2Vjb25kcyBk
ZWxheSk7Ci0gICAgdm9pZCBhbmltYXRpb25UaW1lckZpcmVkKCk7CisgICAgYm9vbCBzdGFydE9y
UmV0YXJnZXRBbmltYXRpb24oY29uc3QgU2Nyb2xsRXh0ZW50cyYsIGNvbnN0IEZsb2F0UG9pbnQm
IGRlc3RpbmF0aW9uT2Zmc2V0KTsKICAgICAKICAgICBTZWNvbmRzIGR1cmF0aW9uRnJvbURpc3Rh
bmNlKGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0OwogICAgIAogICAgIGJvb2wgYW5pbWF0ZVNjcm9s
bChNb25vdG9uaWNUaW1lKTsKIAotICAgIE1vbm90b25pY1RpbWUgbV9zdGFydFRpbWU7CiAgICAg
U2Vjb25kcyBtX2R1cmF0aW9uOwogCiAgICAgRmxvYXRQb2ludCBtX3N0YXJ0T2Zmc2V0OwogICAg
IEZsb2F0UG9pbnQgbV9kZXN0aW5hdGlvbk9mZnNldDsKLSAgICBGbG9hdFBvaW50IG1fY3VycmVu
dE9mZnNldDsKLSAgICAKLSAgICAvLyBGSVhNRTogU2hvdWxkIG5vdCBoYXZlIHRpbWVyIGhlcmUs
IGFuZCBpbnN0ZWFkIHVzZSBzZXJ2aWNlQW5pbWF0aW9uKCkuCi0gICAgUnVuTG9vcDo6VGltZXI8
U2Nyb2xsQW5pbWF0aW9uU21vb3RoPiBtX2FuaW1hdGlvblRpbWVyOworCiAgICAgUmVmUHRyPFRp
bWluZ0Z1bmN0aW9uPiBtX2Vhc2VJbk91dFRpbWluZ0Z1bmN0aW9uOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuY3Bw
CmluZGV4IDc5ODU1YTMxNDZhZmYxMzAzNTM4NjVkNjdhMWExMDljNzY4OWRiMTguLjJkOTQzNDEz
ZjlhZWFlZWE5OWRkMTZhMzRkNGEwZjJkZmFmYWUxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5jcHAKQEAgLTQ4LDE0
ICs0OCwyMyBAQCB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjphbmltYXRpb25DYWxs
YmFjayhNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1lKQogewogICAgIExPR19XSVRIX1NUUkVBTShT
Y3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIgIiA8PCB0aGlz
IDw8ICIgYW5pbWF0aW9uQ2FsbGJhY2s6IGlzQW5pbWF0aW5nUnViYmVyQmFuZCAiIDw8IG1faXNB
bmltYXRpbmdSdWJiZXJCYW5kIDw8ICIgaXNBbmltYXRpbmdTY3JvbGxTbmFwICIgPDwgbV9pc0Fu
aW1hdGluZ1Njcm9sbFNuYXAgPDwgImlzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmciIDw8IG1f
aXNBbmltYXRpbmdLZXlib2FyZFNjcm9sbGluZyk7CiAKLSAgICB1cGRhdGVTY3JvbGxTbmFwQW5p
bWF0aW5nU3RhdGUoY3VycmVudFRpbWUpOworICAgIGlmIChtX2N1cnJlbnRBbmltYXRpb24pIHsK
KyAgICAgICAgaWYgKG1fY3VycmVudEFuaW1hdGlvbi0+aXNBY3RpdmUoKSkKKyAgICAgICAgICAg
IG1fY3VycmVudEFuaW1hdGlvbi0+c2VydmljZUFuaW1hdGlvbihjdXJyZW50VGltZSk7CisKKyAg
ICAgICAgaWYgKG1fY3VycmVudEFuaW1hdGlvbiAmJiAhbV9jdXJyZW50QW5pbWF0aW9uLT5pc0Fj
dGl2ZSgpKQorICAgICAgICAgICAgbV9jdXJyZW50QW5pbWF0aW9uID0gbnVsbHB0cjsKKyAgICB9
CisKICAgICB1cGRhdGVSdWJiZXJCYW5kQW5pbWF0aW5nU3RhdGUoY3VycmVudFRpbWUpOwogICAg
IHVwZGF0ZUtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0aW5nU3RhdGUoY3VycmVudFRpbWUpOworICAg
IAorICAgIHN0YXJ0T3JTdG9wQW5pbWF0aW9uQ2FsbGJhY2tzKCk7CiB9CiAKIHZvaWQgU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0T3JTdG9wQW5pbWF0aW9uQ2FsbGJhY2tzKCkKIHsK
LSAgICBib29sIG5lZWRzQ2FsbGJhY2tzID0gbV9pc0FuaW1hdGluZ1J1YmJlckJhbmQgfHwgbV9p
c0FuaW1hdGluZ1Njcm9sbFNuYXAgfHwgbV9pc0FuaW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nOwor
ICAgIGJvb2wgbmVlZHNDYWxsYmFja3MgPSBtX2lzQW5pbWF0aW5nUnViYmVyQmFuZCB8fCBtX2lz
QW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcgfHwgbV9jdXJyZW50QW5pbWF0aW9uOwogICAgIGlm
IChuZWVkc0NhbGxiYWNrcyA9PSBtX2lzUnVubmluZ0FuaW1hdGluZ0NhbGxiYWNrKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTg0LDYgKzkzLDggQEAgYm9vbCBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6c3RhcnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oRmxvYXRQb2ludCBzdGEKICAg
ICBpZiAobV9jdXJyZW50QW5pbWF0aW9uKQogICAgICAgICBtX2N1cnJlbnRBbmltYXRpb24tPnN0
b3AoKTsKIAorICAgIC8vIFdlIGFsd2F5cyBjcmVhdGUgYW5kIGF0dGVtcHQgdG8gc3RhcnQgdGhl
IGFuaW1hdGlvbi4gSWYgaXQgdHVybnMgb3V0IHRvIG5vdCBuZWVkIGFuaW1hdGluZywgdGhlbiB0
aGUgYW5pbWF0aW9uCisgICAgLy8gcmVtYWlucyBpbmFjdGl2ZSwgYW5kIHdlJ2xsIHJlbW92ZSBp
dCBvbiB0aGUgbmV4dCBhbmltYXRpb25DYWxsYmFjaygpLgogICAgIG1fY3VycmVudEFuaW1hdGlv
biA9IG1ha2VVbmlxdWU8U2Nyb2xsQW5pbWF0aW9uU21vb3RoPigqdGhpcyk7CiAgICAgcmV0dXJu
IGRvd25jYXN0PFNjcm9sbEFuaW1hdGlvblNtb290aD4oKm1fY3VycmVudEFuaW1hdGlvbikuc3Rh
cnRBbmltYXRlZFNjcm9sbFRvRGVzdGluYXRpb24oc3RhcnRPZmZzZXQsIGRlc3RpbmF0aW9uT2Zm
c2V0KTsKIH0KQEAgLTI1NCw2ICsyNjUsMzUgQEAgdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlcjo6cmVzbmFwQWZ0ZXJMYXlvdXQoKQogICAgICAgICBtX2FjdGl2ZVNjcm9sbFNuYXBJbmRl
eERpZENoYW5nZSA9IHRydWU7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6
OnN0YXJ0U2Nyb2xsU25hcEFuaW1hdGlvbigpCit7CisgICAgaWYgKG1faXNBbmltYXRpbmdTY3Jv
bGxTbmFwKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25h
cCwgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiBz
dGFydFNjcm9sbFNuYXBBbmltYXRpb24gKG1haW4gdGhyZWFkICIgPDwgaXNNYWluVGhyZWFkKCkg
PDwgIikiKTsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBzdGFydERlZmVycmluZ1doZWVsRXZl
bnRUZXN0Q29tcGxldGlvbkR1ZVRvU2Nyb2xsU25hcHBpbmcoKTsKKyNlbmRpZgorICAgIG1fY2xp
ZW50LndpbGxTdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKTsKKyAgICBzZXRJc0FuaW1hdGluZ1Nj
cm9sbFNuYXAodHJ1ZSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0
b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkKK3sKKyAgICBpZiAoIW1faXNBbmltYXRpbmdTY3JvbGxT
bmFwKQorICAgICAgICByZXR1cm47CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwg
c3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiBzdG9w
U2Nyb2xsU25hcEFuaW1hdGlvbiAobWFpbiB0aHJlYWQgIiA8PCBpc01haW5UaHJlYWQoKSA8PCAi
KSIpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIHN0b3BEZWZlcnJpbmdXaGVlbEV2ZW50VGVz
dENvbXBsZXRpb25EdWVUb1Njcm9sbFNuYXBwaW5nKCk7CisjZW5kaWYKKyAgICBtX2NsaWVudC5k
aWRTdG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpOworCisgICAgc2V0SXNBbmltYXRpbmdTY3JvbGxT
bmFwKGZhbHNlKTsKK30KKwogdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRl
S2V5Ym9hcmRTY3JvbGxpbmdBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNUaW1lIGN1cnJlbnRUaW1l
KQogewogICAgIGlmICghbV9pc0FuaW1hdGluZ0tleWJvYXJkU2Nyb2xsaW5nKQpAQCAtMjc0LDkg
KzMxNCwyMCBAQCB2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRp
b25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiwgY29ucwogICAgIHNjcm9sbFRvT2Zmc2V0Rm9y
QW5pbWF0aW9uKGN1cnJlbnRPZmZzZXQpOwogfQogCit2b2lkIFNjcm9sbGluZ0VmZmVjdHNDb250
cm9sbGVyOjpzY3JvbGxBbmltYXRpb25XaWxsU3RhcnQoU2Nyb2xsQW5pbWF0aW9uJikKK3sKKyAg
ICBzdGFydE9yU3RvcEFuaW1hdGlvbkNhbGxiYWNrcygpOworfQorCiB2b2lkIFNjcm9sbGluZ0Vm
ZmVjdHNDb250cm9sbGVyOjpzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0aW9uJikK
IHsKKyAgICBpZiAodXNlc1Njcm9sbFNuYXAoKSAmJiBtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCkg
eworICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZS0+dHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFj
aGVkU3RhdGUoKTsKKyAgICAgICAgc3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKTsKKyAgICB9CisK
ICAgICBtX2NsaWVudC5zZXRTY3JvbGxCZWhhdmlvclN0YXR1cyhTY3JvbGxCZWhhdmlvclN0YXR1
czo6Tm90SW5BbmltYXRpb24pOworICAgIHN0YXJ0T3JTdG9wQW5pbWF0aW9uQ2FsbGJhY2tzKCk7
CiB9CiAKIFNjcm9sbEV4dGVudHMgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnNjcm9sbEV4
dGVudHNGb3JBbmltYXRpb24oU2Nyb2xsQW5pbWF0aW9uJikKQEAgLTI5OSwxNCArMzUwLDggQEAg
dm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkK
IHsKIH0KIAotdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlU2Nyb2xsU25h
cEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUpCi17Ci0KLX0KLQogdm9pZCBTY3JvbGxpbmdF
ZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlUnViYmVyQmFuZEFuaW1hdGluZ1N0YXRlKE1vbm90b25p
Y1RpbWUpCiB7Ci0KIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oCmluZGV4IDcw
YzE4ZWZkM2JkNDk3NGIxM2VmMzdlZmUxOWQ1Y2UwZTNjYmUyYWUuLmI2MjRiMDI2NTFlZGY2Njc2
NzY5NWRlNWVmMTdlZGQ2ZDQwZTMyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaApAQCAtMTgzLDcgKzE4Myw2IEBAIHB1
YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIHZvaWQgdXBkYXRlU2Nyb2xsU25hcEFuaW1h
dGluZ1N0YXRlKE1vbm90b25pY1RpbWUpOwogICAgIHZvaWQgdXBkYXRlUnViYmVyQmFuZEFuaW1h
dGluZ1N0YXRlKE1vbm90b25pY1RpbWUpOwogICAgIHZvaWQgdXBkYXRlS2V5Ym9hcmRTY3JvbGxp
bmdBbmltYXRpbmdTdGF0ZShNb25vdG9uaWNUaW1lKTsKIApAQCAtMTkxLDEwICsxOTAsMTAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldElzQW5pbWF0aW5nU2Nyb2xsU25hcChib29sKTsKICAgICB2
b2lkIHNldElzQW5pbWF0aW5nS2V5Ym9hcmRTY3JvbGxpbmcoYm9vbCk7CiAKLSNpZiBQTEFURk9S
TShNQUMpCiAgICAgdm9pZCBzdGFydFNjcm9sbFNuYXBBbmltYXRpb24oKTsKICAgICB2b2lkIHN0
b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCk7CiAKKyNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBz
aG91bGRPdmVycmlkZU1vbWVudHVtU2Nyb2xsaW5nKCkgY29uc3Q7CiAgICAgdm9pZCBzdGF0ZWxl
c3NTbmFwVHJhbnNpdGlvblRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHNjaGVkdWxlU3RhdGVsZXNz
U2Nyb2xsU25hcCgpOwpAQCAtMjE3LDYgKzIxNiw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBTY3Jv
bGxBbmltYXRpb25DbGllbnQKICAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZFVwZGF0ZShTY3Jv
bGxBbmltYXRpb24mLCBjb25zdCBGbG9hdFBvaW50JiAvKiBjdXJyZW50T2Zmc2V0ICovKSBmaW5h
bDsKKyAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbldpbGxTdGFydChTY3JvbGxBbmltYXRpb24mKSBm
aW5hbDsKICAgICB2b2lkIHNjcm9sbEFuaW1hdGlvbkRpZEVuZChTY3JvbGxBbmltYXRpb24mKSBm
aW5hbDsKICAgICBTY3JvbGxFeHRlbnRzIHNjcm9sbEV4dGVudHNGb3JBbmltYXRpb24oU2Nyb2xs
QW5pbWF0aW9uJikgIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0KaW5kZXggMjczOTU4YjdmMTcw
MDY2OGZlYjdlNjE0NDYzY2IxZmMzZWQ0Yjc5ZC4uZjBiMmNmZDA3NzU1OTJkZmI1ZWJlNTZjMzhm
NWM0YTM1NmQxMDJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbQpAQCAtNjkwLDggKzY5MCwxMCBAQCBi
b29sIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyOjpwcm9jZXNzV2hlZWxFdmVudEZvclNjcm9s
bFNuYXAoY29uc3QgUGxhdGZvcm1XaAogICAgICAgICAgICAgc3RhcnRTY3JvbGxTbmFwQW5pbWF0
aW9uKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2hlZWxFdmVudFN0YXR1czo6TW9tZW50
dW1TY3JvbGxCZWdpbjoKLSAgICAgICAgaWYgKG1fc2Nyb2xsU25hcFN0YXRlLT50cmFuc2l0aW9u
VG9HbGlkZUFuaW1hdGlvblN0YXRlKG1fY2xpZW50LnNjcm9sbEV4dGVudHMoKSwgbV9jbGllbnQu
cGFnZVNjYWxlRmFjdG9yKCksIG1fY2xpZW50LnNjcm9sbE9mZnNldCgpLCBtX2RyYWdFbmRlZFNj
cm9sbGluZ1ZlbG9jaXR5LCBGbG9hdFNpemUoLXdoZWVsRXZlbnQuZGVsdGFYKCksIC13aGVlbEV2
ZW50LmRlbHRhWSgpKSkpCisgICAgICAgIGlmIChtX3Njcm9sbFNuYXBTdGF0ZS0+dHJhbnNpdGlv
blRvR2xpZGVBbmltYXRpb25TdGF0ZShtX2NsaWVudC5zY3JvbGxFeHRlbnRzKCksIG1fY2xpZW50
LnBhZ2VTY2FsZUZhY3RvcigpLCBtX2NsaWVudC5zY3JvbGxPZmZzZXQoKSwgbV9kcmFnRW5kZWRT
Y3JvbGxpbmdWZWxvY2l0eSwgRmxvYXRTaXplKC13aGVlbEV2ZW50LmRlbHRhWCgpLCAtd2hlZWxF
dmVudC5kZWx0YVkoKSkpKSB7CisgICAgICAgICAgICBzdGFydFNjcm9sbFNuYXBBbmltYXRpb24o
KTsKICAgICAgICAgICAgIGlzTW9tZW50dW1TY3JvbGxpbmcgPSB0cnVlOworICAgICAgICB9CiAg
ICAgICAgIG1fZHJhZ0VuZGVkU2Nyb2xsaW5nVmVsb2NpdHkgPSB7IH07CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgV2hlZWxFdmVudFN0YXR1czo6TW9tZW50dW1TY3JvbGxpbmc6CkBAIC03MjAs
NjIgKzcyMiw2IEBAIHZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnVwZGF0ZUdlc3R1
cmVJblByb2dyZXNzU3RhdGUoY29uc3QgUGxhdGZvcm1XaGVlCiAgICAgdXBkYXRlUnViYmVyQmFu
ZGluZ1N0YXRlKCk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0YXJ0
U2Nyb2xsU25hcEFuaW1hdGlvbigpCi17Ci0gICAgaWYgKG1faXNBbmltYXRpbmdTY3JvbGxTbmFw
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3Ry
ZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlciAiIDw8IHRoaXMgPDwgIiBzdGFydFNj
cm9sbFNuYXBBbmltYXRpb24gKG1haW4gdGhyZWFkICIgPDwgaXNNYWluVGhyZWFkKCkgPDwgIiki
KTsKLQotICAgIHN0YXJ0RGVmZXJyaW5nV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRHVlVG9TY3Jv
bGxTbmFwcGluZygpOwotICAgIG1fY2xpZW50LndpbGxTdGFydFNjcm9sbFNuYXBBbmltYXRpb24o
KTsKLSAgICBzZXRJc0FuaW1hdGluZ1Njcm9sbFNuYXAodHJ1ZSk7Ci19Ci0KLXZvaWQgU2Nyb2xs
aW5nRWZmZWN0c0NvbnRyb2xsZXI6OnN0b3BTY3JvbGxTbmFwQW5pbWF0aW9uKCkKLXsKLSAgICBp
ZiAoIW1faXNBbmltYXRpbmdTY3JvbGxTbmFwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMT0df
V0lUSF9TVFJFQU0oU2Nyb2xsU25hcCwgc3RyZWFtIDw8ICJTY3JvbGxpbmdFZmZlY3RzQ29udHJv
bGxlciAiIDw8IHRoaXMgPDwgIiBzdG9wU2Nyb2xsU25hcEFuaW1hdGlvbiAobWFpbiB0aHJlYWQg
IiA8PCBpc01haW5UaHJlYWQoKSA8PCAiKSIpOwotCi0gICAgc3RvcERlZmVycmluZ1doZWVsRXZl
bnRUZXN0Q29tcGxldGlvbkR1ZVRvU2Nyb2xsU25hcHBpbmcoKTsKLSAgICBtX2NsaWVudC5kaWRT
dG9wU2Nyb2xsU25hcEFuaW1hdGlvbigpOwotCi0gICAgc2V0SXNBbmltYXRpbmdTY3JvbGxTbmFw
KGZhbHNlKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlcjo6dXBkYXRlU2Ny
b2xsU25hcEFuaW1hdGluZ1N0YXRlKE1vbm90b25pY1RpbWUgY3VycmVudFRpbWUpCi17Ci0gICAg
aWYgKCFtX2lzQW5pbWF0aW5nU2Nyb2xsU25hcCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KCF1c2VzU2Nyb2xsU25hcCgpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFpczxTY3JvbGxBbmltYXRpb25Nb21lbnR1
bT4obV9jdXJyZW50QW5pbWF0aW9uLmdldCgpKSkgewotICAgICAgICBtX3Njcm9sbFNuYXBTdGF0
ZS0+dHJhbnNpdGlvblRvRGVzdGluYXRpb25SZWFjaGVkU3RhdGUoKTsKLSAgICAgICAgc3RvcFNj
cm9sbFNuYXBBbmltYXRpb24oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8m
IG1vbWVudHVtU2Nyb2xsQW5pbWF0aW9uID0gZG93bmNhc3Q8U2Nyb2xsQW5pbWF0aW9uTW9tZW50
dW0+KCptX2N1cnJlbnRBbmltYXRpb24pOwotCi0gICAgYXV0byBhbmltYXRpb25PZmZzZXQgPSBt
b21lbnR1bVNjcm9sbEFuaW1hdGlvbi5zZXJ2aWNlQW5pbWF0aW9uKGN1cnJlbnRUaW1lKTsKLSAg
ICBib29sIGlzQW5pbWF0aW9uQ29tcGxldGUgPSAhbW9tZW50dW1TY3JvbGxBbmltYXRpb24uaXNB
Y3RpdmUoKTsKLQotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxTbmFwLCBzdHJlYW0gPDwgIlNj
cm9sbGluZ0VmZmVjdHNDb250cm9sbGVyICIgPDwgdGhpcyA8PCAiIHVwZGF0ZVNjcm9sbFNuYXBB
bmltYXRpbmdTdGF0ZSAtIGlzQW5pbWF0aW9uQ29tcGxldGUgIiA8PCBpc0FuaW1hdGlvbkNvbXBs
ZXRlIDw8ICIgYW5pbWF0aW9uT2Zmc2V0ICIgPDwgYW5pbWF0aW9uT2Zmc2V0IDw8ICIgKG1haW4g
dGhyZWFkICIgPDwgaXNNYWluVGhyZWFkKCkgPDwgIikiKTsKLQotICAgIHNjcm9sbFRvT2Zmc2V0
Rm9yQW5pbWF0aW9uKGFuaW1hdGlvbk9mZnNldCk7Ci0KLSAgICBpZiAoaXNBbmltYXRpb25Db21w
bGV0ZSkgewotICAgICAgICBtX3Njcm9sbFNuYXBTdGF0ZS0+dHJhbnNpdGlvblRvRGVzdGluYXRp
b25SZWFjaGVkU3RhdGUoKTsKLSAgICAgICAgc3RvcFNjcm9sbFNuYXBBbmltYXRpb24oKTsKLSAg
ICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykK
</data>

          </attachment>
      

    </bug>

</bugzilla>