<?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>214340</bug_id>
          
          <creation_ts>2020-07-14 20:48:10 -0700</creation_ts>
          <short_desc>There should be only one RunLoop Timer class</short_desc>
          <delta_ts>2022-02-28 03:35:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1671649</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-14 20:48:10 -0700</bug_when>
    <thetext>There should only be one RunLoop Timer class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671651</commentid>
    <comment_count>1</comment_count>
      <attachid>404318</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-14 20:50:08 -0700</bug_when>
    <thetext>Created attachment 404318
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1671983</commentid>
    <comment_count>2</comment_count>
      <attachid>404404</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-15 16:31:17 -0700</bug_when>
    <thetext>Created attachment 404404
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672157</commentid>
    <comment_count>3</comment_count>
      <attachid>404456</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-16 09:49:36 -0700</bug_when>
    <thetext>Created attachment 404456
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672182</commentid>
    <comment_count>4</comment_count>
      <attachid>404463</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-16 10:48:47 -0700</bug_when>
    <thetext>Created attachment 404463
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672222</commentid>
    <comment_count>5</comment_count>
      <attachid>404477</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-16 13:00:35 -0700</bug_when>
    <thetext>Created attachment 404477
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672552</commentid>
    <comment_count>6</comment_count>
      <attachid>404575</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-17 11:06:51 -0700</bug_when>
    <thetext>Created attachment 404575
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672772</commentid>
    <comment_count>7</comment_count>
      <attachid>404632</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-17 20:37:13 -0700</bug_when>
    <thetext>Created attachment 404632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672773</commentid>
    <comment_count>8</comment_count>
      <attachid>404633</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-17 20:42:03 -0700</bug_when>
    <thetext>Created attachment 404633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672923</commentid>
    <comment_count>9</comment_count>
      <attachid>404633</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-19 11:20:04 -0700</bug_when>
    <thetext>Comment on attachment 404633
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=404633&amp;action=review

Wish there was slightly more abstraction so we didn’t have to say COCOA_EVENT_LOOP all the time.

&gt; Source/WTF/wtf/RunLoop.h:53
&gt; +typedef HashSet&lt;RefPtr&lt;SchedulePair&gt;, SchedulePairHash&gt; SchedulePairHashSet;

In new code we should use &quot;using&quot; instead of typedef.

&gt; Source/WTF/wtf/cf/RunLoopCF.cpp:94
&gt; +        Function&lt;void()&gt; function(static_cast&lt;Function&lt;void()&gt;::Impl*&gt;(context));

Kind of wish this function constructor was named since it takes ownership. A sort of asymmetry with leakImpl.

&gt; Source/WTF/wtf/cf/RunLoopCF.cpp:122
&gt; +        TimerBase* timer = static_cast&lt;TimerBase*&gt;(context);

auto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672970</commentid>
    <comment_count>10</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-19 17:22:03 -0700</bug_when>
    <thetext>&gt; Wish there was slightly more abstraction so we didn’t have to say
&gt; COCOA_EVENT_LOOP all the time.

Yeah, me too. I&apos;m going to think about this more.

&gt; &gt; Source/WTF/wtf/RunLoop.h:53
&gt; &gt; +typedef HashSet&lt;RefPtr&lt;SchedulePair&gt;, SchedulePairHash&gt; SchedulePairHashSet;
&gt; 
&gt; In new code we should use &quot;using&quot; instead of typedef.

Fixed.

&gt; &gt; Source/WTF/wtf/cf/RunLoopCF.cpp:94
&gt; &gt; +        Function&lt;void()&gt; function(static_cast&lt;Function&lt;void()&gt;::Impl*&gt;(context));
&gt; 
&gt; Kind of wish this function constructor was named since it takes ownership. A
&gt; sort of asymmetry with leakImpl.

I&apos;ll take a look at making the constructor private and adding a friend adoptImpl function.

&gt; &gt; Source/WTF/wtf/cf/RunLoopCF.cpp:122
&gt; &gt; +        TimerBase* timer = static_cast&lt;TimerBase*&gt;(context);
&gt; 
&gt; auto?

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672971</commentid>
    <comment_count>11</comment_count>
      <attachid>404690</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-19 17:29:28 -0700</bug_when>
    <thetext>Created attachment 404690
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672973</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-19 18:22:02 -0700</bug_when>
    <thetext>Committed r264586: &lt;https://trac.webkit.org/changeset/264586&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 404690.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1672974</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-19 18:23:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/65801842&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404318</attachid>
            <date>2020-07-14 20:50:08 -0700</date>
            <delta_ts>2020-07-15 16:31:16 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-214340-20200714205008.patch</filename>
            <type>text/plain</type>
            <size>7667</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQzODYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA3LTE0ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIFJ1bkxv
b3AgVGltZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDM0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKiB3dGYvY2YvUnVuTG9vcENGLmNwcDoK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpjcmVhdGVUaW1lcik6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9nbGliL1J1
bkxvb3BHTGliLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjp1cGRhdGVS
ZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKiB3dGYvd2lu
L1J1bkxvb3BXaW4uY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0
KToKKwogMjAyMC0wNy0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2MjM0MSkgVVJMOjpjcmVhdGVDRlVSTCBzaG91
bGQgcHJvZHVjZSBhIENGVVJMIHRoYXQgdXNlcyBVVEYtOCB0byBkZWNvZGUgaXRzIHBlcmNlbnQt
ZW5jb2RlZCBzZXF1ZW5jZXMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNv
dXJjZS9XVEYvd3RmL1J1bkxvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTAgQEAK
IAogbmFtZXNwYWNlIFdURiB7CiAKK2NsYXNzIFNjaGVkdWxlUGFpcjsKK3N0cnVjdCBTY2hlZHVs
ZVBhaXJIYXNoOwordHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxTY2hlZHVsZVBhaXI+LCBTY2hlZHVs
ZVBhaXJIYXNoPiBTY2hlZHVsZVBhaXJIYXNoU2V0OworCiAjaWYgVVNFKENGKQogdXNpbmcgUnVu
TG9vcE1vZGUgPSBDRlN0cmluZ1JlZjsKICNkZWZpbmUgRGVmYXVsdFJ1bkxvb3BNb2RlIGtDRlJ1
bkxvb3BEZWZhdWx0TW9kZQpAQCAtMTEzLDggKzExNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBUaW1lckJhc2UoUnVuTG9vcCYpOwogICAgICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+VGltZXJCYXNlKCk7CiAKLSAgICAgICAgdm9pZCBz
dGFydFJlcGVhdGluZyhTZWNvbmRzIHJlcGVhdEludGVydmFsKSB7IHN0YXJ0SW50ZXJuYWwocmVw
ZWF0SW50ZXJ2YWwsIHRydWUpOyB9Ci0gICAgICAgIHZvaWQgc3RhcnRPbmVTaG90KFNlY29uZHMg
aW50ZXJ2YWwpIHsgc3RhcnRJbnRlcm5hbChpbnRlcnZhbCwgZmFsc2UpOyB9CisgICAgICAgIHZv
aWQgc3RhcnRSZXBlYXRpbmcoU2Vjb25kcyBpbnRlcnZhbCkgeyBzdGFydChzdGQ6Om1heChpbnRl
cnZhbCwgMF9zKSwgdHJ1ZSk7IH0KKyAgICAgICAgdm9pZCBzdGFydE9uZVNob3QoU2Vjb25kcyBp
bnRlcnZhbCkgeyBzdGFydChzdGQ6Om1heChpbnRlcnZhbCwgMF9zKSwgZmFsc2UpOyB9CisjaWYg
VVNFKENPQ09BX0VWRU5UX0xPT1ApCisgICAgICAgIHZvaWQgc3RhcnRPbmVTaG90KFNjaGVkdWxl
UGFpckhhc2hTZXQmIHNjaGVkdWxlUGFpcnMsIFNlY29uZHMgaW50ZXJ2YWwpIHsgc3RhcnQoc2No
ZWR1bGVQYWlycywgc3RkOjptYXgoaW50ZXJ2YWwsIDBfcyksIGZhbHNlKTsgfQorI2VuZGlmCiAK
ICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwogICAgICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwpAQCAtMTI4LDEyICsxMzUsMTAgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHN0YXJ0SW50ZXJu
YWwoU2Vjb25kcyBuZXh0RmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKLSAgICAgICAgewotICAg
ICAgICAgICAgc3RhcnQoc3RkOjptYXgobmV4dEZpcmVJbnRlcnZhbCwgMF9zKSwgcmVwZWF0KTsK
LSAgICAgICAgfQotCi0gICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHN0YXJ0KFNlY29u
ZHMgbmV4dEZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpOworICAgICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgdm9pZCBzdGFydChTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCk7CisjaWYgVVNF
KENPQ09BX0VWRU5UX0xPT1ApCisgICAgICAgIHZvaWQgc3RhcnQoU2NoZWR1bGVQYWlySGFzaFNl
dCYsIFNlY29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0KTsKKyNlbmRpZgogCiAgICAgICAgIFJl
ZjxSdW5Mb29wPiBtX3J1bkxvb3A7CiAKQEAgLTE0NiwxMiArMTUxLDEzIEBAIHB1YmxpYzoKICAg
ICAgICAgYm9vbCBtX2lzQWN0aXZlIHsgZmFsc2UgfTsKICNlbGlmIFVTRShDT0NPQV9FVkVOVF9M
T09QKQogICAgICAgICBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2
b2lkKik7CisgICAgICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gY3JlYXRlVGltZXIo
U2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpOwogICAgICAgICBSZXRhaW5QdHI8Q0ZSdW5M
b29wVGltZXJSZWY+IG1fdGltZXI7CiAjZWxpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgICAg
ICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpOwogICAgICAgICBHUmVmUHRyPEdTb3VyY2U+IG1fc291
cmNlOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmcgeyBmYWxzZSB9OwotICAgICAgICBTZWNv
bmRzIG1fZmlyZUludGVydmFsIHsgMCB9OworICAgICAgICBTZWNvbmRzIG1faW50ZXJ2YWwgeyAw
IH07CiAjZWxpZiBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQogICAgICAgICBib29sIGlzQWN0aXZl
KGNvbnN0IEFic3RyYWN0TG9ja2VyJikgY29uc3Q7CiAgICAgICAgIHZvaWQgc3RvcChjb25zdCBB
YnN0cmFjdExvY2tlciYpOwpJbmRleDogU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9jZi9SdW5Mb29wQ0YuY3BwCShyZXZpc2lvbiAy
NjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9jZi9SdW5Mb29wQ0YuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0Zi9BdXRv
ZHJhaW5lZFBvb2wuaD4KKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAKIG5hbWVzcGFj
ZSBXVEYgewogCkBAIC04Myw2ICs4NCwxMyBAQCB2b2lkIFJ1bkxvb3A6OnN0b3AoKQogCiAvLyBS
dW5Mb29wOjpUaW1lcgogCitSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IFJ1bkxvb3A6OlRp
bWVyQmFzZTo6Y3JlYXRlVGltZXIoU2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpCit7Cisg
ICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIDAsIDAsIDAgfTsK
KyAgICBTZWNvbmRzIHJlcGVhdEludGVydmFsID0gcmVwZWF0ID8gaW50ZXJ2YWwgOiAwX3M7Cisg
ICAgcmV0dXJuIGFkb3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgKyBpbnRlcnZhbC5zZWNvbmRzKCksIHJlcGVh
dEludGVydmFsLnNlY29uZHMoKSwgMCwgMCwgdGltZXJGaXJlZCwgJmNvbnRleHQpKTsKK30KKwog
dm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYgY2ZU
aW1lciwgdm9pZCogY29udGV4dCkKIHsKICAgICBUaW1lckJhc2UqIHRpbWVyID0gc3RhdGljX2Nh
c3Q8VGltZXJCYXNlKj4oY29udGV4dCk7CkBAIC0xMDUsMTcgKzExMywyNSBAQCBSdW5Mb29wOjpU
aW1lckJhc2U6On5UaW1lckJhc2UoKQogICAgIHN0b3AoKTsKIH0KIAotdm9pZCBSdW5Mb29wOjpU
aW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgbmV4dEZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit2
b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBl
YXQpCiB7CiAgICAgaWYgKG1fdGltZXIpCiAgICAgICAgIHN0b3AoKTsKLSAgICAKLSAgICBDRlJ1
bkxvb3BUaW1lckNvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgMCwgMCwgMCB9OwotICAgIFNl
Y29uZHMgcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXQgPyBuZXh0RmlyZUludGVydmFsIDogMF9zOwot
ICAgIG1fdGltZXIgPSBhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgbmV4dEZpcmVJbnRlcnZhbC5zZWNv
bmRzKCksIHJlcGVhdEludGVydmFsLnNlY29uZHMoKSwgMCwgMCwgdGltZXJGaXJlZCwgJmNvbnRl
eHQpKTsKKworICAgIG1fdGltZXIgPSBjcmVhdGVUaW1lcihpbnRlcnZhbCwgcmVwZWF0KTsKICAg
ICBDRlJ1bkxvb3BBZGRUaW1lcihtX3J1bkxvb3AtPm1fcnVuTG9vcC5nZXQoKSwgbV90aW1lci5n
ZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIH0KIAordm9pZCBSdW5Mb29wOjpUaW1lckJh
c2U6OnN0YXJ0KFNjaGVkdWxlUGFpckhhc2hTZXQmIHNjaGVkdWxlUGFpcnMsIFNlY29uZHMgaW50
ZXJ2YWwsIGJvb2wgcmVwZWF0KQoreworICAgIGlmIChtX3RpbWVyKQorICAgICAgICBzdG9wKCk7
CisKKyAgICBtX3RpbWVyID0gY3JlYXRlVGltZXIoaW50ZXJ2YWwsIHJlcGVhdCk7CisgICAgZm9y
IChhdXRvJiBzY2hlZHVsZVBhaXIgOiBzY2hlZHVsZVBhaXJzKQorICAgICAgICBDRlJ1bkxvb3BB
ZGRUaW1lcihzY2hlZHVsZVBhaXItPnJ1bkxvb3AoKSwgbV90aW1lci5nZXQoKSwgc2NoZWR1bGVQ
YWlyLT5tb2RlKCkpOworfQorCiB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCiB7CiAg
ICAgaWYgKCFtX3RpbWVyKQpJbmRleDogU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAJKHJl
dmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDEsMjAgKzIwMSwyMCBAQCB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFz
ZTo6c2V0UHJpb3JpdHkoaW50CiAKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjp1cGRhdGVSZWFk
eVRpbWUoKQogewotICAgIGlmICghbV9maXJlSW50ZXJ2YWwpIHsKKyAgICBpZiAoIW1faW50ZXJ2
YWwpIHsKICAgICAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUobV9zb3VyY2UuZ2V0KCksIDAp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZ2ludDY0IGN1cnJlbnRUaW1lID0gZ19n
ZXRfbW9ub3RvbmljX3RpbWUoKTsKLSAgICBnaW50NjQgdGFyZ2V0VGltZSA9IGN1cnJlbnRUaW1l
ICsgc3RkOjptaW48Z2ludDY0PihHX01BWElOVDY0IC0gY3VycmVudFRpbWUsIG1fZmlyZUludGVy
dmFsLm1pY3Jvc2Vjb25kc0FzPGdpbnQ2ND4oKSk7CisgICAgZ2ludDY0IHRhcmdldFRpbWUgPSBj
dXJyZW50VGltZSArIHN0ZDo6bWluPGdpbnQ2ND4oR19NQVhJTlQ2NCAtIGN1cnJlbnRUaW1lLCBt
X2ludGVydmFsLm1pY3Jvc2Vjb25kc0FzPGdpbnQ2ND4oKSk7CiAgICAgQVNTRVJUKHRhcmdldFRp
bWUgPj0gY3VycmVudFRpbWUpOwogICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fc291cmNl
LmdldCgpLCB0YXJnZXRUaW1lKTsKIH0KIAotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0
KFNlY29uZHMgZmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKK3ZvaWQgUnVuTG9vcDo6VGltZXJC
YXNlOjpzdGFydChTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCkKIHsKLSAgICBtX2ZpcmVJ
bnRlcnZhbCA9IGZpcmVJbnRlcnZhbDsKKyAgICBtX2ludGVydmFsID0gaW50ZXJ2YWw7CiAgICAg
bV9pc1JlcGVhdGluZyA9IHJlcGVhdDsKICAgICB1cGRhdGVSZWFkeVRpbWUoKTsKIH0KQEAgLTIy
Miw3ICsyMjIsNyBAQCB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBmCiB2
b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCgpCiB7CiAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5
X3RpbWUobV9zb3VyY2UuZ2V0KCksIC0xKTsKLSAgICBtX2ZpcmVJbnRlcnZhbCA9IHsgfTsKKyAg
ICBtX2ludGVydmFsID0geyB9OwogICAgIG1faXNSZXBlYXRpbmcgPSBmYWxzZTsKIH0KIApJbmRl
eDogU291cmNlL1dURi93dGYvd2luL1J1bkxvb3BXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XVEYvd3RmL3dpbi9SdW5Mb29wV2luLmNwcAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNl
L1dURi93dGYvd2luL1J1bkxvb3BXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsMTQgKzE4
MCwxNCBAQCBSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQogICAgIHN0b3AoKTsKIH0K
IAotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgbmV4dEZpcmVJbnRlcnZh
bCwgYm9vbCByZXBlYXQpCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBp
bnRlcnZhbCwgYm9vbCByZXBlYXQpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9ydW5Mb29w
LT5tX2xvb3BMb2NrKTsKICAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0OwogICAgIG1faXNBY3Rp
dmUgPSB0cnVlOwotICAgIG1faW50ZXJ2YWwgPSBuZXh0RmlyZUludGVydmFsOworICAgIG1faW50
ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICBtX25leHRGaXJlRGF0ZSA9IE1vbm90b25pY1RpbWU6Om5v
dygpICsgbV9pbnRlcnZhbDsKLSAgICA6OlNldFRpbWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wTWVz
c2FnZVdpbmRvdywgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odGhpcyksIG5leHRGaXJlSW50ZXJ2
YWwubWlsbGlzZWNvbmRzQXM8VUlOVD4oKSwgbnVsbHB0cik7CisgICAgOjpTZXRUaW1lcihtX3J1
bkxvb3AtPm1fcnVuTG9vcE1lc3NhZ2VXaW5kb3csIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRo
aXMpLCBpbnRlcnZhbC5taWxsaXNlY29uZHNBczxVSU5UPigpLCBudWxscHRyKTsKIH0KIAogdm9p
ZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404404</attachid>
            <date>2020-07-15 16:31:17 -0700</date>
            <delta_ts>2020-07-17 20:37:09 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-214340-20200715163117.patch</filename>
            <type>text/plain</type>
            <size>12476</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQzODYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA3LTE0ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIFJ1bkxv
b3AgVGltZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDM0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKiB3dGYvY2YvUnVuTG9vcENGLmNwcDoK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpjcmVhdGVUaW1lcik6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9nbGliL1J1
bkxvb3BHTGliLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjp1cGRhdGVS
ZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKiB3dGYvd2lu
L1J1bkxvb3BXaW4uY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0
KToKKwogMjAyMC0wNy0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2MjM0MSkgVVJMOjpjcmVhdGVDRlVSTCBzaG91
bGQgcHJvZHVjZSBhIENGVVJMIHRoYXQgdXNlcyBVVEYtOCB0byBkZWNvZGUgaXRzIHBlcmNlbnQt
ZW5jb2RlZCBzZXF1ZW5jZXMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisr
KyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0
MSwxNiBAQCB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+CiAgICAgICAg
IHdha2VVcCgpOwogfQogCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkZWxh
eSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIGF1dG8gdGltZXIgPSBuZXcg
RGlzcGF0Y2hUaW1lcigqdGhpcyk7CisgICAgdGltZXItPnNldEZ1bmN0aW9uKFt0aW1lciwgZnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgICAgICBmdW5jdGlvbigpOworICAgICAg
ICBkZWxldGUgdGltZXI7CisgICAgfSk7CisgICAgdGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7
Cit9CisKIHZvaWQgUnVuTG9vcDo6c3VzcGVuZEZ1bmN0aW9uRGlzcGF0Y2hGb3JDdXJyZW50Q3lj
bGUoKQogewogICAgIC8vIERvbid0IHN1c3BlbmQgaWYgdGhlcmUgYXJlIGFscmVhZHkgc3VzcGVu
ZGVkIGZ1bmN0aW9ucyB0byBhdm9pZCB1bmV4ZWN1dGVkIGZ1bmN0aW9uIHBpbGUtdXAuCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UnVuTG9vcC5oCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEwIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitj
bGFzcyBTY2hlZHVsZVBhaXI7CitzdHJ1Y3QgU2NoZWR1bGVQYWlySGFzaDsKK3R5cGVkZWYgSGFz
aFNldDxSZWZQdHI8U2NoZWR1bGVQYWlyPiwgU2NoZWR1bGVQYWlySGFzaD4gU2NoZWR1bGVQYWly
SGFzaFNldDsKKwogI2lmIFVTRShDRikKIHVzaW5nIFJ1bkxvb3BNb2RlID0gQ0ZTdHJpbmdSZWY7
CiAjZGVmaW5lIERlZmF1bHRSdW5Mb29wTW9kZSBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUKQEAgLTc0
LDYgKzc4LDEwIEBAIHB1YmxpYzoKICAgICB+UnVuTG9vcCgpIGZpbmFsOwogCiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9u
PHZvaWQoKT4mJik7CisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihTY2hlZHVsZVBhaXJIYXNoU2V0JiwgU2Vjb25kcywg
RnVuY3Rpb248dm9pZCgpPiYmKTsKKyNlbmRpZgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIHJ1bigpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHN0b3AoKTsKQEAg
LTEwMiwxMCArMTEwLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyUnVuTG9v
cE1lc3NhZ2VXaW5kb3dDbGFzcygpOwogI2VuZGlmCiAKLSNpZiAhVVNFKENPQ09BX0VWRU5UX0xP
T1ApCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihTZWNvbmRzLCBG
dW5jdGlvbjx2b2lkKCk+JiYpOwotI2VuZGlmCi0KICAgICBjbGFzcyBUaW1lckJhc2UgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIFJ1bkxv
b3A7CkBAIC0xMTMsOCArMTE3LDExIEBAIHB1YmxpYzoKICAgICAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIGV4cGxpY2l0IFRpbWVyQmFzZShSdW5Mb29wJik7CiAgICAgICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2aXJ0dWFsIH5UaW1lckJhc2UoKTsKIAotICAgICAgICB2b2lkIHN0YXJ0UmVwZWF0aW5n
KFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwpIHsgc3RhcnRJbnRlcm5hbChyZXBlYXRJbnRlcnZhbCwg
dHJ1ZSk7IH0KLSAgICAgICAgdm9pZCBzdGFydE9uZVNob3QoU2Vjb25kcyBpbnRlcnZhbCkgeyBz
dGFydEludGVybmFsKGludGVydmFsLCBmYWxzZSk7IH0KKyAgICAgICAgdm9pZCBzdGFydFJlcGVh
dGluZyhTZWNvbmRzIGludGVydmFsKSB7IHN0YXJ0KHN0ZDo6bWF4KGludGVydmFsLCAwX3MpLCB0
cnVlKTsgfQorICAgICAgICB2b2lkIHN0YXJ0T25lU2hvdChTZWNvbmRzIGludGVydmFsKSB7IHN0
YXJ0KHN0ZDo6bWF4KGludGVydmFsLCAwX3MpLCBmYWxzZSk7IH0KKyNpZiBVU0UoQ09DT0FfRVZF
TlRfTE9PUCkKKyAgICAgICAgdm9pZCBzdGFydE9uZVNob3QoU2NoZWR1bGVQYWlySGFzaFNldCYg
c2NoZWR1bGVQYWlycywgU2Vjb25kcyBpbnRlcnZhbCkgeyBzdGFydChzY2hlZHVsZVBhaXJzLCBz
dGQ6Om1heChpbnRlcnZhbCwgMF9zKSwgZmFsc2UpOyB9CisjZW5kaWYKIAogICAgICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wKCk7CiAgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSBi
b29sIGlzQWN0aXZlKCkgY29uc3Q7CkBAIC0xMjgsMTIgKzEzNSwxMCBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc3RhcnRJbnRlcm5hbChTZWNvbmRzIG5l
eHRGaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGFy
dChzdGQ6Om1heChuZXh0RmlyZUludGVydmFsLCAwX3MpLCByZXBlYXQpOwotICAgICAgICB9Ci0K
LSAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnQoU2Vjb25kcyBuZXh0RmlyZUlu
dGVydmFsLCBib29sIHJlcGVhdCk7CisgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHN0
YXJ0KFNlY29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0KTsKKyNpZiBVU0UoQ09DT0FfRVZFTlRf
TE9PUCkKKyAgICAgICAgdm9pZCBzdGFydChTY2hlZHVsZVBhaXJIYXNoU2V0JiwgU2Vjb25kcyBp
bnRlcnZhbCwgYm9vbCByZXBlYXQpOworI2VuZGlmCiAKICAgICAgICAgUmVmPFJ1bkxvb3A+IG1f
cnVuTG9vcDsKIApAQCAtMTQ2LDEyICsxNTEsMTMgQEAgcHVibGljOgogICAgICAgICBib29sIG1f
aXNBY3RpdmUgeyBmYWxzZSB9OwogI2VsaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCiAgICAgICAg
IHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKTsKKyAgICAg
ICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiBjcmVhdGVUaW1lcihTZWNvbmRzIGludGVy
dmFsLCBib29sIHJlcGVhdCk7CiAgICAgICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4g
bV90aW1lcjsKICNlbGlmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgICAgIHZvaWQgdXBkYXRl
UmVhZHlUaW1lKCk7CiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CiAgICAgICAg
IGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNlIH07Ci0gICAgICAgIFNlY29uZHMgbV9maXJlSW50
ZXJ2YWwgeyAwIH07CisgICAgICAgIFNlY29uZHMgbV9pbnRlcnZhbCB7IDAgfTsKICNlbGlmIFVT
RShHRU5FUklDX0VWRU5UX0xPT1ApCiAgICAgICAgIGJvb2wgaXNBY3RpdmUoY29uc3QgQWJzdHJh
Y3RMb2NrZXImKSBjb25zdDsKICAgICAgICAgdm9pZCBzdG9wKGNvbnN0IEFic3RyYWN0TG9ja2Vy
Jik7CkBAIC0xODIsNyArMTg4LDkgQEAgcHVibGljOgogICAgICAgICBUaW1lckZpcmVkQ2xhc3Mq
IG1fb2JqZWN0OwogICAgIH07CiAKLSNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorcHJpdmF0
ZToKKyAgICBjbGFzcyBIb2xkZXI7CisKICAgICBjbGFzcyBEaXNwYXRjaFRpbWVyIGZpbmFsIDog
cHVibGljIFRpbWVyQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBEaXNwYXRjaFRpbWVyKFJ1
bkxvb3AmIHJ1bkxvb3ApCkBAIC0xOTksMTEgKzIwNyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBG
dW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CiAgICAgfTsKLSNlbmRpZgogCi0gICAgY2xhc3Mg
SG9sZGVyOwotCi1wcml2YXRlOgogICAgIFJ1bkxvb3AoKTsKIAogICAgIHZvaWQgcGVyZm9ybVdv
cmsoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkocmV2aXNpb24gMjY0MzE1KQorKysg
U291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5j
bHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29s
Lmg+CisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApA
QCAtODEsOCArODIsMjUgQEAgdm9pZCBSdW5Mb29wOjpzdG9wKCkKICAgICBDRlJ1bkxvb3BTdG9w
KG1fcnVuTG9vcC5nZXQoKSk7CiB9CiAKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihTY2hl
ZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBhaXJzLCBTZWNvbmRzIGludGVydmFsLCBGdW5jdGlv
bjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgYXV0byB0aW1lciA9IG5ldyBEaXNwYXRjaFRp
bWVyKCp0aGlzKTsKKyAgICB0aW1lci0+c2V0RnVuY3Rpb24oW3RpbWVyLCBmdW5jdGlvbiA9IFdU
Rk1vdmUoZnVuY3Rpb24pXSB7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgICAgIGRlbGV0ZSB0
aW1lcjsKKyAgICB9KTsKKyAgICB0aW1lci0+c3RhcnRPbmVTaG90KHNjaGVkdWxlUGFpcnMsIGlu
dGVydmFsKTsKK30KKwogLy8gUnVuTG9vcDo6VGltZXIKIAorUmV0YWluUHRyPENGUnVuTG9vcFRp
bWVyUmVmPiBSdW5Mb29wOjpUaW1lckJhc2U6OmNyZWF0ZVRpbWVyKFNlY29uZHMgaW50ZXJ2YWws
IGJvb2wgcmVwZWF0KQoreworICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBjb250ZXh0ID0geyAw
LCB0aGlzLCAwLCAwLCAwIH07CisgICAgU2Vjb25kcyByZXBlYXRJbnRlcnZhbCA9IHJlcGVhdCA/
IGludGVydmFsIDogMF9zOworICAgIHJldHVybiBhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2
YWwuc2Vjb25kcygpLCByZXBlYXRJbnRlcnZhbC5zZWNvbmRzKCksIDAsIDAsIHRpbWVyRmlyZWQs
ICZjb250ZXh0KSk7Cit9CisKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjp0aW1lckZpcmVkKENG
UnVuTG9vcFRpbWVyUmVmIGNmVGltZXIsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgVGltZXJCYXNl
KiB0aW1lciA9IHN0YXRpY19jYXN0PFRpbWVyQmFzZSo+KGNvbnRleHQpOwpAQCAtMTA1LDE3ICsx
MjMsMjUgQEAgUnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKICAgICBzdG9wKCk7CiB9
CiAKLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2
YWwsIGJvb2wgcmVwZWF0KQordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMg
aW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQogewogICAgIGlmIChtX3RpbWVyKQogICAgICAgICBzdG9w
KCk7Ci0gICAgCi0gICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMs
IDAsIDAsIDAgfTsKLSAgICBTZWNvbmRzIHJlcGVhdEludGVydmFsID0gcmVwZWF0ID8gbmV4dEZp
cmVJbnRlcnZhbCA6IDBfczsKLSAgICBtX3RpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIG5l
eHRGaXJlSW50ZXJ2YWwuc2Vjb25kcygpLCByZXBlYXRJbnRlcnZhbC5zZWNvbmRzKCksIDAsIDAs
IHRpbWVyRmlyZWQsICZjb250ZXh0KSk7CisKKyAgICBtX3RpbWVyID0gY3JlYXRlVGltZXIoaW50
ZXJ2YWwsIHJlcGVhdCk7CiAgICAgQ0ZSdW5Mb29wQWRkVGltZXIobV9ydW5Mb29wLT5tX3J1bkxv
b3AuZ2V0KCksIG1fdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7CiB9CiAKK3Zv
aWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChTY2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVs
ZVBhaXJzLCBTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCkKK3sKKyAgICBpZiAobV90aW1l
cikKKyAgICAgICAgc3RvcCgpOworCisgICAgbV90aW1lciA9IGNyZWF0ZVRpbWVyKGludGVydmFs
LCByZXBlYXQpOworICAgIGZvciAoYXV0byYgc2NoZWR1bGVQYWlyIDogc2NoZWR1bGVQYWlycykK
KyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIoc2NoZWR1bGVQYWlyLT5ydW5Mb29wKCksIG1fdGlt
ZXIuZ2V0KCksIHNjaGVkdWxlUGFpci0+bW9kZSgpKTsKK30KKwogdm9pZCBSdW5Mb29wOjpUaW1l
ckJhc2U6OnN0b3AoKQogewogICAgIGlmICghbV90aW1lcikKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUw
LDE0ICsyNTAsNiBAQCB2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlQW5kV2FrZVVwKGNvbnN0IEFiCiAg
ICAgd2FrZVVwKGxvY2tlcik7CiB9CiAKLXZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihTZWNv
bmRzIGRlbGF5LCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCi17Ci0gICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9sb29wTG9jayk7Ci0gICAgYm9vbCByZXBlYXRpbmcgPSBmYWxzZTsKLSAgICBz
Y2hlZHVsZShsb2NrZXIsIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3JlYXRlKFdURk1vdmUo
ZnVuY3Rpb24pLCBkZWxheSwgcmVwZWF0aW5nKSk7Ci0gICAgd2FrZVVwKGxvY2tlcik7Ci19Ci0K
IC8vIFNpbmNlIFJ1bkxvb3AgZG9lcyBub3Qgb3duIHRoZSByZWdpc3RlcmVkIFRpbWVyQmFzZSwK
IC8vIFRpbWVyQmFzZSBhbmQgaXRzIG93bmVyIHNob3VsZCBtYW5hZ2UgdGhlc2UgbGlmZXRpbWUu
CiBSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQpJbmRleDog
U291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJj
ZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksMzkg
KzEyOSw2IEBAIFJ1bkxvb3A6OkN5Y2xlUmVzdWx0IFJ1bkxvb3A6OmN5Y2xlKFJ1bkwKICAgICBy
ZXR1cm4gQ3ljbGVSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi1jbGFzcyBEaXNwYXRjaEFmdGVyQ29u
dGV4dCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgRGlzcGF0
Y2hBZnRlckNvbnRleHQoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQotICAgICAgICA6IG1f
ZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgZGlz
cGF0Y2goKQotICAgIHsKLSAgICAgICAgbV9mdW5jdGlvbigpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247Ci19OwotCi12b2lkIFJ1bkxvb3A6OmRp
c3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9u
KQotewotICAgIEdSZWZQdHI8R1NvdXJjZT4gc291cmNlID0gYWRvcHRHUmVmKGdfc291cmNlX25l
dygmcnVuTG9vcFNvdXJjZUZ1bmN0aW9ucywgc2l6ZW9mKEdTb3VyY2UpKSk7Ci0gICAgZ19zb3Vy
Y2Vfc2V0X3ByaW9yaXR5KHNvdXJjZS5nZXQoKSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpSdW5M
b29wVGltZXIpOwotICAgIGdfc291cmNlX3NldF9uYW1lKHNvdXJjZS5nZXQoKSwgIltXZWJLaXRd
IFJ1bkxvb3AgZGlzcGF0Y2hBZnRlciIpOwotICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKHNv
dXJjZS5nZXQoKSwgZ19nZXRfbW9ub3RvbmljX3RpbWUoKSArIGR1cmF0aW9uLm1pY3Jvc2Vjb25k
c0FzPGdpbnQ2ND4oKSk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRlckNvbnRl
eHQ+IGNvbnRleHQgPSBtYWtlVW5pcXVlPERpc3BhdGNoQWZ0ZXJDb250ZXh0PihXVEZNb3ZlKGZ1
bmN0aW9uKSk7Ci0gICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKHNvdXJjZS5nZXQoKSwgW10oZ3Bv
aW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERp
c3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0KHN0YXRpY19jYXN0PERpc3BhdGNoQWZ0ZXJDb250
ZXh0Kj4odXNlckRhdGEpKTsKLSAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2goKTsKLSAgICAgICAg
cmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKLSAgICB9LCBjb250ZXh0LnJlbGVhc2UoKSwgbnVsbHB0
cik7Ci0gICAgZ19zb3VyY2VfYXR0YWNoKHNvdXJjZS5nZXQoKSwgbV9tYWluQ29udGV4dC5nZXQo
KSk7Ci19Ci0KIFJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3Ap
CiAgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKICAgICAsIG1fc291cmNlKGFkb3B0R1JlZihnX3Nv
dXJjZV9uZXcoJnJ1bkxvb3BTb3VyY2VGdW5jdGlvbnMsIHNpemVvZihHU291cmNlKSkpKQpAQCAt
MjAxLDIwICsxNjgsMjAgQEAgdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnNldFByaW9yaXR5KGlu
dAogCiB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dXBkYXRlUmVhZHlUaW1lKCkKIHsKLSAgICBp
ZiAoIW1fZmlyZUludGVydmFsKSB7CisgICAgaWYgKCFtX2ludGVydmFsKSB7CiAgICAgICAgIGdf
c291cmNlX3NldF9yZWFkeV90aW1lKG1fc291cmNlLmdldCgpLCAwKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGdpbnQ2NCBjdXJyZW50VGltZSA9IGdfZ2V0X21vbm90b25pY190aW1l
KCk7Ci0gICAgZ2ludDY0IHRhcmdldFRpbWUgPSBjdXJyZW50VGltZSArIHN0ZDo6bWluPGdpbnQ2
ND4oR19NQVhJTlQ2NCAtIGN1cnJlbnRUaW1lLCBtX2ZpcmVJbnRlcnZhbC5taWNyb3NlY29uZHNB
czxnaW50NjQ+KCkpOworICAgIGdpbnQ2NCB0YXJnZXRUaW1lID0gY3VycmVudFRpbWUgKyBzdGQ6
Om1pbjxnaW50NjQ+KEdfTUFYSU5UNjQgLSBjdXJyZW50VGltZSwgbV9pbnRlcnZhbC5taWNyb3Nl
Y29uZHNBczxnaW50NjQ+KCkpOwogICAgIEFTU0VSVCh0YXJnZXRUaW1lID49IGN1cnJlbnRUaW1l
KTsKICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3NvdXJjZS5nZXQoKSwgdGFyZ2V0VGlt
ZSk7CiB9CiAKLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChTZWNvbmRzIGZpcmVJbnRl
cnZhbCwgYm9vbCByZXBlYXQpCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoU2Vjb25k
cyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpCiB7Ci0gICAgbV9maXJlSW50ZXJ2YWwgPSBmaXJlSW50
ZXJ2YWw7CisgICAgbV9pbnRlcnZhbCA9IGludGVydmFsOwogICAgIG1faXNSZXBlYXRpbmcgPSBy
ZXBlYXQ7CiAgICAgdXBkYXRlUmVhZHlUaW1lKCk7CiB9CkBAIC0yMjIsNyArMTg5LDcgQEAgdm9p
ZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgZgogdm9pZCBSdW5Mb29wOjpUaW1l
ckJhc2U6OnN0b3AoKQogewogICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fc291cmNlLmdl
dCgpLCAtMSk7Ci0gICAgbV9maXJlSW50ZXJ2YWwgPSB7IH07CisgICAgbV9pbnRlcnZhbCA9IHsg
fTsKICAgICBtX2lzUmVwZWF0aW5nID0gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L3dpbi9SdW5Mb29wV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi93aW4vUnVu
TG9vcFdpbi5jcHAJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XVEYvd3RmL3dpbi9SdW5M
b29wV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDE2ICsxNDAsNiBAQCBSdW5Mb29wOjpD
eWNsZVJlc3VsdCBSdW5Mb29wOjpjeWNsZShSdW5MCiAgICAgcmV0dXJuIEN5Y2xlUmVzdWx0OjpD
b250aW51ZTsKIH0KIAotdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZGVsYXks
IEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKLXsKLSAgICBhdXRvIHRpbWVyID0gbmV3IERp
c3BhdGNoVGltZXIoKnRoaXMpOwotICAgIHRpbWVyLT5zZXRGdW5jdGlvbihbdGltZXIsIGZ1bmN0
aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKLSAgICAgICAgZnVuY3Rpb24oKTsKLSAgICAgICAg
ZGVsZXRlIHRpbWVyOwotICAgIH0pOwotICAgIHRpbWVyLT5zdGFydE9uZVNob3QoZGVsYXkpOwot
fQotCiAvLyBSdW5Mb29wOjpUaW1lcgogCiB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJG
aXJlZCgpCkBAIC0xODAsMTQgKzE3MCwxNCBAQCBSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJh
c2UoKQogICAgIHN0b3AoKTsKIH0KIAotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNl
Y29uZHMgbmV4dEZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit2b2lkIFJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQoU2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpCiB7CiAgICAgTG9ja0hv
bGRlciBsb2NrZXIobV9ydW5Mb29wLT5tX2xvb3BMb2NrKTsKICAgICBtX2lzUmVwZWF0aW5nID0g
cmVwZWF0OwogICAgIG1faXNBY3RpdmUgPSB0cnVlOwotICAgIG1faW50ZXJ2YWwgPSBuZXh0Rmly
ZUludGVydmFsOworICAgIG1faW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICBtX25leHRGaXJlRGF0
ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgbV9pbnRlcnZhbDsKLSAgICA6OlNldFRpbWVyKG1f
cnVuTG9vcC0+bV9ydW5Mb29wTWVzc2FnZVdpbmRvdywgYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
dGhpcyksIG5leHRGaXJlSW50ZXJ2YWwubWlsbGlzZWNvbmRzQXM8VUlOVD4oKSwgbnVsbHB0cik7
CisgICAgOjpTZXRUaW1lcihtX3J1bkxvb3AtPm1fcnVuTG9vcE1lc3NhZ2VXaW5kb3csIGJpdHdp
c2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBpbnRlcnZhbC5taWxsaXNlY29uZHNBczxVSU5UPigp
LCBudWxscHRyKTsKIH0KIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404456</attachid>
            <date>2020-07-16 09:49:36 -0700</date>
            <delta_ts>2020-07-16 10:36:50 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-214340-20200716094935.patch</filename>
            <type>text/plain</type>
            <size>19191</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQzODYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA3LTE0ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIFJ1bkxv
b3AgVGltZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDM0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKiB3dGYvY2YvUnVuTG9vcENGLmNwcDoK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpjcmVhdGVUaW1lcik6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9nbGliL1J1
bkxvb3BHTGliLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjp1cGRhdGVS
ZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKiB3dGYvd2lu
L1J1bkxvb3BXaW4uY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0
KToKKwogMjAyMC0wNy0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2MjM0MSkgVVJMOjpjcmVhdGVDRlVSTCBzaG91
bGQgcHJvZHVjZSBhIENGVVJMIHRoYXQgdXNlcyBVVEYtOCB0byBkZWNvZGUgaXRzIHBlcmNlbnQt
ZW5jb2RlZCBzZXF1ZW5jZXMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisr
KyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0
MSwxNiBAQCB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+CiAgICAgICAg
IHdha2VVcCgpOwogfQogCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkZWxh
eSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIGF1dG8gdGltZXIgPSBuZXcg
RGlzcGF0Y2hUaW1lcigqdGhpcyk7CisgICAgdGltZXItPnNldEZ1bmN0aW9uKFt0aW1lciwgZnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgICAgICBmdW5jdGlvbigpOworICAgICAg
ICBkZWxldGUgdGltZXI7CisgICAgfSk7CisgICAgdGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7
Cit9CisKIHZvaWQgUnVuTG9vcDo6c3VzcGVuZEZ1bmN0aW9uRGlzcGF0Y2hGb3JDdXJyZW50Q3lj
bGUoKQogewogICAgIC8vIERvbid0IHN1c3BlbmQgaWYgdGhlcmUgYXJlIGFscmVhZHkgc3VzcGVu
ZGVkIGZ1bmN0aW9ucyB0byBhdm9pZCB1bmV4ZWN1dGVkIGZ1bmN0aW9uIHBpbGUtdXAuCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UnVuTG9vcC5oCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEwIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitj
bGFzcyBTY2hlZHVsZVBhaXI7CitzdHJ1Y3QgU2NoZWR1bGVQYWlySGFzaDsKK3R5cGVkZWYgSGFz
aFNldDxSZWZQdHI8U2NoZWR1bGVQYWlyPiwgU2NoZWR1bGVQYWlySGFzaD4gU2NoZWR1bGVQYWly
SGFzaFNldDsKKwogI2lmIFVTRShDRikKIHVzaW5nIFJ1bkxvb3BNb2RlID0gQ0ZTdHJpbmdSZWY7
CiAjZGVmaW5lIERlZmF1bHRSdW5Mb29wTW9kZSBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUKQEAgLTcz
LDcgKzc3LDEyIEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
aXNNYWluKCk7CiAgICAgflJ1bkxvb3AoKSBmaW5hbDsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4m
Jik7CisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGRpc3BhdGNoKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmLCBGdW5jdGlvbjx2
b2lkKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkaXNwYXRjaEFm
dGVyKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmLCBTZWNvbmRzLCBGdW5jdGlvbjx2b2lkKCk+
JiYpOworI2VuZGlmCiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcnVuKCk7
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwpAQCAtMTAyLDEwICsxMTEsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJSdW5Mb29wTWVzc2FnZVdpbmRvd0Ns
YXNzKCk7CiAjZW5kaWYKIAotI2lmICFVU0UoQ09DT0FfRVZFTlRfTE9PUCkKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4m
Jik7Ci0jZW5kaWYKLQogICAgIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgUnVuTG9vcDsKQEAgLTExMyw4ICsx
MTgsMTEgQEAgcHVibGljOgogICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgVGlt
ZXJCYXNlKFJ1bkxvb3AmKTsKICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgflRp
bWVyQmFzZSgpOwogCi0gICAgICAgIHZvaWQgc3RhcnRSZXBlYXRpbmcoU2Vjb25kcyByZXBlYXRJ
bnRlcnZhbCkgeyBzdGFydEludGVybmFsKHJlcGVhdEludGVydmFsLCB0cnVlKTsgfQotICAgICAg
ICB2b2lkIHN0YXJ0T25lU2hvdChTZWNvbmRzIGludGVydmFsKSB7IHN0YXJ0SW50ZXJuYWwoaW50
ZXJ2YWwsIGZhbHNlKTsgfQorICAgICAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKFNlY29uZHMgaW50
ZXJ2YWwpIHsgc3RhcnQoc3RkOjptYXgoaW50ZXJ2YWwsIDBfcyksIHRydWUpOyB9CisgICAgICAg
IHZvaWQgc3RhcnRPbmVTaG90KFNlY29uZHMgaW50ZXJ2YWwpIHsgc3RhcnQoc3RkOjptYXgoaW50
ZXJ2YWwsIDBfcyksIGZhbHNlKTsgfQorI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorICAgICAg
ICB2b2lkIHN0YXJ0T25lU2hvdChjb25zdCBTY2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBh
aXJzLCBTZWNvbmRzIGludGVydmFsKSB7IHN0YXJ0KHNjaGVkdWxlUGFpcnMsIHN0ZDo6bWF4KGlu
dGVydmFsLCAwX3MpLCBmYWxzZSk7IH0KKyNlbmRpZgogCiAgICAgICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHN0b3AoKTsKICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNBY3Rp
dmUoKSBjb25zdDsKQEAgLTEyOCwxMiArMTM2LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdm9pZCBzdGFydEludGVybmFsKFNlY29uZHMgbmV4dEZpcmVJbnRl
cnZhbCwgYm9vbCByZXBlYXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXJ0KHN0ZDo6bWF4
KG5leHRGaXJlSW50ZXJ2YWwsIDBfcyksIHJlcGVhdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIGJv
b2wgcmVwZWF0KTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnQoU2Vjb25k
cyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpOworI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorICAg
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydChjb25zdCBTY2hlZHVsZVBhaXJIYXNo
U2V0JiwgU2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpOworI2VuZGlmCiAKICAgICAgICAg
UmVmPFJ1bkxvb3A+IG1fcnVuTG9vcDsKIApAQCAtMTQ2LDEyICsxNTIsMTMgQEAgcHVibGljOgog
ICAgICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogI2VsaWYgVVNFKENPQ09BX0VWRU5U
X0xPT1ApCiAgICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYs
IHZvaWQqKTsKKyAgICAgICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiBjcmVhdGVUaW1l
cihTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCk7CiAgICAgICAgIFJldGFpblB0cjxDRlJ1
bkxvb3BUaW1lclJlZj4gbV90aW1lcjsKICNlbGlmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAg
ICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCk7CiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9z
b3VyY2U7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNlIH07Ci0gICAgICAgIFNl
Y29uZHMgbV9maXJlSW50ZXJ2YWwgeyAwIH07CisgICAgICAgIFNlY29uZHMgbV9pbnRlcnZhbCB7
IDAgfTsKICNlbGlmIFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCiAgICAgICAgIGJvb2wgaXNBY3Rp
dmUoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBjb25zdDsKICAgICAgICAgdm9pZCBzdG9wKGNvbnN0
IEFic3RyYWN0TG9ja2VyJik7CkBAIC0xODIsNyArMTg5LDkgQEAgcHVibGljOgogICAgICAgICBU
aW1lckZpcmVkQ2xhc3MqIG1fb2JqZWN0OwogICAgIH07CiAKLSNpZiBVU0UoV0lORE9XU19FVkVO
VF9MT09QKQorcHJpdmF0ZToKKyAgICBjbGFzcyBIb2xkZXI7CisKICAgICBjbGFzcyBEaXNwYXRj
aFRpbWVyIGZpbmFsIDogcHVibGljIFRpbWVyQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBE
aXNwYXRjaFRpbWVyKFJ1bkxvb3AmIHJ1bkxvb3ApCkBAIC0xOTksMTEgKzIwOCw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CiAgICAgfTsKLSNlbmRp
ZgogCi0gICAgY2xhc3MgSG9sZGVyOwotCi1wcml2YXRlOgogICAgIFJ1bkxvb3AoKTsKIAogICAg
IHZvaWQgcGVyZm9ybVdvcmsoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkocmV2aXNp
b24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3dGYv
QXV0b2RyYWluZWRQb29sLmg+CisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApAQCAtODEsOCArODIsMzAgQEAgdm9pZCBSdW5Mb29wOjpzdG9wKCkKICAg
ICBDRlJ1bkxvb3BTdG9wKG1fcnVuTG9vcC5nZXQoKSk7CiB9CiAKK3ZvaWQgUnVuTG9vcDo6ZGlz
cGF0Y2goY29uc3QgU2NoZWR1bGVQYWlySGFzaFNldCYgc2NoZWR1bGVQYWlycywgRnVuY3Rpb248
dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIGRpc3BhdGNoQWZ0ZXIoc2NoZWR1bGVQYWlycywg
MF9zLCBXVEZNb3ZlKGZ1bmN0aW9uKSk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRl
cihjb25zdCBTY2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBhaXJzLCBTZWNvbmRzIGludGVy
dmFsLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgYXV0byB0aW1lciA9IG5l
dyBEaXNwYXRjaFRpbWVyKFJ1bkxvb3A6Om1haW4oKSk7CisgICAgdGltZXItPnNldEZ1bmN0aW9u
KFt0aW1lciwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgICAgICBmdW5jdGlv
bigpOworICAgICAgICBkZWxldGUgdGltZXI7CisgICAgfSk7CisgICAgdGltZXItPnN0YXJ0T25l
U2hvdChzY2hlZHVsZVBhaXJzLCBpbnRlcnZhbCk7Cit9CisKIC8vIFJ1bkxvb3A6OlRpbWVyCiAK
K1JldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gUnVuTG9vcDo6VGltZXJCYXNlOjpjcmVhdGVU
aW1lcihTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCkKK3sKKyAgICBDRlJ1bkxvb3BUaW1l
ckNvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgMCwgMCwgMCB9OworICAgIFNlY29uZHMgcmVw
ZWF0SW50ZXJ2YWwgPSByZXBlYXQgPyBpbnRlcnZhbCA6IDBfczsKKyAgICByZXR1cm4gYWRvcHRD
RihDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSArIGludGVydmFsLnNlY29uZHMoKSwgcmVwZWF0SW50ZXJ2YWwuc2Vjb25k
cygpLCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOworfQorCiB2b2lkIFJ1bkxvb3A6OlRp
bWVyQmFzZTo6dGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiBjZlRpbWVyLCB2b2lkKiBjb250
ZXh0KQogewogICAgIFRpbWVyQmFzZSogdGltZXIgPSBzdGF0aWNfY2FzdDxUaW1lckJhc2UqPihj
b250ZXh0KTsKQEAgLTEwNSwxNyArMTI4LDI1IEBAIFJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVy
QmFzZSgpCiAgICAgc3RvcCgpOwogfQogCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQo
U2Vjb25kcyBuZXh0RmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKK3ZvaWQgUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdGFydChTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCkKIHsKICAgICBpZiAo
bV90aW1lcikKICAgICAgICAgc3RvcCgpOwotICAgIAotICAgIENGUnVuTG9vcFRpbWVyQ29udGV4
dCBjb250ZXh0ID0geyAwLCB0aGlzLCAwLCAwLCAwIH07Ci0gICAgU2Vjb25kcyByZXBlYXRJbnRl
cnZhbCA9IHJlcGVhdCA/IG5leHRGaXJlSW50ZXJ2YWwgOiAwX3M7Ci0gICAgbV90aW1lciA9IGFk
b3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0
ZVRpbWVHZXRDdXJyZW50KCkgKyBuZXh0RmlyZUludGVydmFsLnNlY29uZHMoKSwgcmVwZWF0SW50
ZXJ2YWwuc2Vjb25kcygpLCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOworCisgICAgbV90
aW1lciA9IGNyZWF0ZVRpbWVyKGludGVydmFsLCByZXBlYXQpOwogICAgIENGUnVuTG9vcEFkZFRp
bWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOwogfQogCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoY29uc3Qg
U2NoZWR1bGVQYWlySGFzaFNldCYgc2NoZWR1bGVQYWlycywgU2Vjb25kcyBpbnRlcnZhbCwgYm9v
bCByZXBlYXQpCit7CisgICAgaWYgKG1fdGltZXIpCisgICAgICAgIHN0b3AoKTsKKworICAgIG1f
dGltZXIgPSBjcmVhdGVUaW1lcihpbnRlcnZhbCwgcmVwZWF0KTsKKyAgICBmb3IgKGF1dG8mIHNj
aGVkdWxlUGFpciA6IHNjaGVkdWxlUGFpcnMpCisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKHNj
aGVkdWxlUGFpci0+cnVuTG9vcCgpLCBtX3RpbWVyLmdldCgpLCBzY2hlZHVsZVBhaXItPm1vZGUo
KSk7Cit9CisKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKIHsKICAgICBpZiAoIW1f
dGltZXIpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAko
cmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJp
Yy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MCwxNCArMjUwLDYgQEAgdm9pZCBSdW5Mb29wOjpz
Y2hlZHVsZUFuZFdha2VVcChjb25zdCBBYgogICAgIHdha2VVcChsb2NrZXIpOwogfQogCi12b2lk
IFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkZWxheSwgRnVuY3Rpb248dm9pZCgpPiYm
IGZ1bmN0aW9uKQotewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOwotICAgIGJv
b2wgcmVwZWF0aW5nID0gZmFsc2U7Ci0gICAgc2NoZWR1bGUobG9ja2VyLCBUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSwgZGVsYXksIHJlcGVhdGluZykp
OwotICAgIHdha2VVcChsb2NrZXIpOwotfQotCiAvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93
biB0aGUgcmVnaXN0ZXJlZCBUaW1lckJhc2UsCiAvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBz
aG91bGQgbWFuYWdlIHRoZXNlIGxpZmV0aW1lLgogUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJh
c2UoUnVuTG9vcCYgcnVuTG9vcCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdM
aWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3Bw
CShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDM5ICsxMjksNiBAQCBSdW5Mb29wOjpDeWNsZVJlc3Vs
dCBSdW5Mb29wOjpjeWNsZShSdW5MCiAgICAgcmV0dXJuIEN5Y2xlUmVzdWx0OjpDb250aW51ZTsK
IH0KIAotY2xhc3MgRGlzcGF0Y2hBZnRlckNvbnRleHQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIERpc3BhdGNoQWZ0ZXJDb250ZXh0KEZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikKLSAgICAgICAgOiBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGRpc3BhdGNoKCkKLSAgICB7Ci0gICAgICAgIG1fZnVu
Y3Rpb24oKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0
aW9uOwotfTsKLQotdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24s
IEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKLXsKLSAgICBHUmVmUHRyPEdTb3VyY2U+IHNv
dXJjZSA9IGFkb3B0R1JlZihnX3NvdXJjZV9uZXcoJnJ1bkxvb3BTb3VyY2VGdW5jdGlvbnMsIHNp
emVvZihHU291cmNlKSkpOwotICAgIGdfc291cmNlX3NldF9wcmlvcml0eShzb3VyY2UuZ2V0KCks
IFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6UnVuTG9vcFRpbWVyKTsKLSAgICBnX3NvdXJjZV9zZXRf
bmFtZShzb3VyY2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKLSAg
ICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UuZ2V0KCksIGdfZ2V0X21vbm90b25pY190
aW1lKCkgKyBkdXJhdGlvbi5taWNyb3NlY29uZHNBczxnaW50NjQ+KCkpOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNw
YXRjaEFmdGVyQ29udGV4dD4oV1RGTW92ZShmdW5jdGlvbikpOwotICAgIGdfc291cmNlX3NldF9j
YWxsYmFjayhzb3VyY2UuZ2V0KCksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dChz
dGF0aWNfY2FzdDxEaXNwYXRjaEFmdGVyQ29udGV4dCo+KHVzZXJEYXRhKSk7Ci0gICAgICAgIGNv
bnRleHQtPmRpc3BhdGNoKCk7Ci0gICAgICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Ci0gICAg
fSwgY29udGV4dC5yZWxlYXNlKCksIG51bGxwdHIpOwotICAgIGdfc291cmNlX2F0dGFjaChzb3Vy
Y2UuZ2V0KCksIG1fbWFpbkNvbnRleHQuZ2V0KCkpOwotfQotCiBSdW5Mb29wOjpUaW1lckJhc2U6
OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiAg
ICAgLCBtX3NvdXJjZShhZG9wdEdSZWYoZ19zb3VyY2VfbmV3KCZydW5Mb29wU291cmNlRnVuY3Rp
b25zLCBzaXplb2YoR1NvdXJjZSkpKSkKQEAgLTIwMSwyMCArMTY4LDIwIEBAIHZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzZXRQcmlvcml0eShpbnQKIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6
OnVwZGF0ZVJlYWR5VGltZSgpCiB7Ci0gICAgaWYgKCFtX2ZpcmVJbnRlcnZhbCkgeworICAgIGlm
ICghbV9pbnRlcnZhbCkgewogICAgICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3NvdXJj
ZS5nZXQoKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBnaW50NjQgY3VycmVu
dFRpbWUgPSBnX2dldF9tb25vdG9uaWNfdGltZSgpOwotICAgIGdpbnQ2NCB0YXJnZXRUaW1lID0g
Y3VycmVudFRpbWUgKyBzdGQ6Om1pbjxnaW50NjQ+KEdfTUFYSU5UNjQgLSBjdXJyZW50VGltZSwg
bV9maXJlSW50ZXJ2YWwubWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsKKyAgICBnaW50NjQgdGFy
Z2V0VGltZSA9IGN1cnJlbnRUaW1lICsgc3RkOjptaW48Z2ludDY0PihHX01BWElOVDY0IC0gY3Vy
cmVudFRpbWUsIG1faW50ZXJ2YWwubWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsKICAgICBBU1NF
UlQodGFyZ2V0VGltZSA+PSBjdXJyZW50VGltZSk7CiAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3Rp
bWUobV9zb3VyY2UuZ2V0KCksIHRhcmdldFRpbWUpOwogfQogCi12b2lkIFJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQoU2Vjb25kcyBmaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQordm9pZCBSdW5M
b29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQogewot
ICAgIG1fZmlyZUludGVydmFsID0gZmlyZUludGVydmFsOworICAgIG1faW50ZXJ2YWwgPSBpbnRl
cnZhbDsKICAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0OwogICAgIHVwZGF0ZVJlYWR5VGltZSgp
OwogfQpAQCAtMjIyLDcgKzE4OSw3IEBAIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChT
ZWNvbmRzIGYKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKIHsKICAgICBnX3NvdXJj
ZV9zZXRfcmVhZHlfdGltZShtX3NvdXJjZS5nZXQoKSwgLTEpOwotICAgIG1fZmlyZUludGVydmFs
ID0geyB9OworICAgIG1faW50ZXJ2YWwgPSB7IH07CiAgICAgbV9pc1JlcGVhdGluZyA9IGZhbHNl
OwogfQogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvd2luL1J1bkxvb3BXaW4uY3BwCShyZXZpc2lvbiAyNjQzMTUp
CisrKyBTb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MCwxNiArMTQwLDYgQEAgUnVuTG9vcDo6Q3ljbGVSZXN1bHQgUnVuTG9vcDo6Y3ljbGUoUnVu
TAogICAgIHJldHVybiBDeWNsZVJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgUnVuTG9vcDo6
ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGRlbGF5LCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24p
Ci17Ci0gICAgYXV0byB0aW1lciA9IG5ldyBEaXNwYXRjaFRpbWVyKCp0aGlzKTsKLSAgICB0aW1l
ci0+c2V0RnVuY3Rpb24oW3RpbWVyLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7Ci0g
ICAgICAgIGZ1bmN0aW9uKCk7Ci0gICAgICAgIGRlbGV0ZSB0aW1lcjsKLSAgICB9KTsKLSAgICB0
aW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKLX0KLQogLy8gUnVuTG9vcDo6VGltZXIKIAogdm9p
ZCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQoKQpAQCAtMTgwLDE0ICsxNzAsMTQgQEAg
UnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKICAgICBzdG9wKCk7CiB9CiAKLXZvaWQg
UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wg
cmVwZWF0KQordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgaW50ZXJ2YWws
IGJvb2wgcmVwZWF0KQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcnVuTG9vcC0+bV9sb29w
TG9jayk7CiAgICAgbV9pc1JlcGVhdGluZyA9IHJlcGVhdDsKICAgICBtX2lzQWN0aXZlID0gdHJ1
ZTsKLSAgICBtX2ludGVydmFsID0gbmV4dEZpcmVJbnRlcnZhbDsKKyAgICBtX2ludGVydmFsID0g
aW50ZXJ2YWw7CiAgICAgbV9uZXh0RmlyZURhdGUgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIG1f
aW50ZXJ2YWw7Ci0gICAgOjpTZXRUaW1lcihtX3J1bkxvb3AtPm1fcnVuTG9vcE1lc3NhZ2VXaW5k
b3csIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBuZXh0RmlyZUludGVydmFsLm1pbGxp
c2Vjb25kc0FzPFVJTlQ+KCksIG51bGxwdHIpOworICAgIDo6U2V0VGltZXIobV9ydW5Mb29wLT5t
X3J1bkxvb3BNZXNzYWdlV2luZG93LCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0aGlzKSwgaW50
ZXJ2YWwubWlsbGlzZWNvbmRzQXM8VUlOVD4oKSwgbnVsbHB0cik7CiB9CiAKIHZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzdG9wKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIERvY3Vt
ZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXMKICAgICAsIG1fcmVxdWVzdChyZXF1
ZXN0KQogICAgICwgbV9vcmlnaW5hbFN1YnN0aXR1dGVEYXRhV2FzVmFsaWQoc3Vic3RpdHV0ZURh
dGEuaXNWYWxpZCgpKQogICAgICwgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyKCp0
aGlzLCAmRG9jdW1lbnRMb2FkZXI6OnN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXJGaXJl
ZCkKLSAgICAsIG1fZGF0YUxvYWRUaW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVyOjpoYW5kbGVT
dWJzdGl0dXRlRGF0YUxvYWROb3cpCisgICAgLCBtX2RhdGFMb2FkVGltZXIoUnVuTG9vcDo6Y3Vy
cmVudCgpLCB0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5v
dykKICAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3QobWFrZVVuaXF1ZTxBcHBsaWNhdGlvbkNh
Y2hlSG9zdD4oKnRoaXMpKQogewogfQpAQCAtNDk0LDExICs0OTQsMTAgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdAogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFy
dERhdGFMb2FkVGltZXIoKQogeworI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorICAgIG1fZGF0
YUxvYWRUaW1lci5zdGFydE9uZVNob3QoKm1fZnJhbWUtPnBhZ2UoKS0+c2NoZWR1bGVkUnVuTG9v
cFBhaXJzKCksIDBfcyk7CisjZWxzZQogICAgIG1fZGF0YUxvYWRUaW1lci5zdGFydE9uZVNob3Qo
MF9zKTsKLQotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICBpZiAoU2NoZWR1bGVQYWlySGFz
aFNldCogc2NoZWR1bGVkUGFpcnMgPSBtX2ZyYW1lLT5wYWdlKCktPnNjaGVkdWxlZFJ1bkxvb3BQ
YWlycygpKQotICAgICAgICBtX2RhdGFMb2FkVGltZXIuc2NoZWR1bGUoKnNjaGVkdWxlZFBhaXJz
KTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC00ODksMTEgKzQ5MCw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwogICAgIFJlc291
cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcigpIGNvbnN0OwogCi0jaWYg
SEFWRShSVU5MT09QX1RJTUVSKQotICAgIHR5cGVkZWYgUnVuTG9vcFRpbWVyPERvY3VtZW50TG9h
ZGVyPiBEb2N1bWVudExvYWRlclRpbWVyOwotI2Vsc2UKLSAgICB0eXBlZGVmIFRpbWVyIERvY3Vt
ZW50TG9hZGVyVGltZXI7Ci0jZW5kaWYKICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9h
ZE5vdygpOwogICAgIHZvaWQgc3RhcnREYXRhTG9hZFRpbWVyKCk7CiAKQEAgLTYwMCw3ICs1OTYs
NyBAQCBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVk
OwogICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxv
YWRlciB7IDAgfTsKIAotICAgIERvY3VtZW50TG9hZGVyVGltZXIgbV9kYXRhTG9hZFRpbWVyOwor
ICAgIFJ1bkxvb3A6OlRpbWVyPERvY3VtZW50TG9hZGVyPiBtX2RhdGFMb2FkVGltZXI7CiAgICAg
Ym9vbCBtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5IHsgZmFsc2UgfTsKICAgICBib29sIG1fd2Fp
dGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Niwx
MSArMjY2LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogICAgIEFTU0VS
VCh1cmwucHJvdG9jb2xJc0RhdGEoKSk7CiAKICAgICBEYXRhVVJMRGVjb2Rlcjo6U2NoZWR1bGVD
b250ZXh0IHNjaGVkdWxlQ29udGV4dDsKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0gICAgaWYg
KGF1dG8gcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBpZiAoYXV0byBzY2hlZHVs
ZWRQYWlycyA9IHBhZ2UtPnNjaGVkdWxlZFJ1bkxvb3BQYWlycygpKQotICAgICAgICAgICAgc2No
ZWR1bGVDb250ZXh0LnNjaGVkdWxlZFBhaXJzID0gKnNjaGVkdWxlZFBhaXJzOwotICAgIH0KKyNp
ZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyAgICBpZiAoYXV0byBwYWdlID0gbV9mcmFtZS0+cGFn
ZSgpKQorICAgICAgICBzY2hlZHVsZUNvbnRleHQuc2NoZWR1bGVkUGFpcnMgPSAqcGFnZS0+c2No
ZWR1bGVkUnVuTG9vcFBhaXJzKCk7CiAjZW5kaWYKICAgICBhdXRvIG1vZGUgPSBEYXRhVVJMRGVj
b2Rlcjo6TW9kZTo6TGVnYWN5OwogICAgIGlmIChtX3JlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVz
b3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6OkZldGNoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAJKHJldmlzaW9uIDI2NDMx
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Nyw1MiArOTcsNiBAQCBwdWJsaWM6CiAgICAgUmVzdWx0IHJl
c3VsdDsKIH07CiAKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0KLWNsYXNzIERlY29kaW5nUmVz
dWx0RGlzcGF0Y2hlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWNvZGluZ1Jlc3Vs
dERpc3BhdGNoZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaChzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2RlVGFzaz4gZGVjb2RlVGFzaykKLSAgICB7Ci0gICAgICAgIFJlZjxEZWNv
ZGluZ1Jlc3VsdERpc3BhdGNoZXI+IGRpc3BhdGNoZXIgPSBhZG9wdFJlZigqbmV3IERlY29kaW5n
UmVzdWx0RGlzcGF0Y2hlcihXVEZNb3ZlKGRlY29kZVRhc2spKSk7Ci0gICAgICAgIGRpc3BhdGNo
ZXItPnN0YXJ0VGltZXIoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRGVjb2RpbmdSZXN1bHRE
aXNwYXRjaGVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBkZWNvZGVUYXNrKQotICAgICAg
ICA6IG1fdGltZXIoKnRoaXMsICZEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI6OnRpbWVyRmlyZWQp
Ci0gICAgICAgICwgbV9kZWNvZGVUYXNrKFdURk1vdmUoZGVjb2RlVGFzaykpCi0gICAgewotICAg
IH0KLQotICAgIHZvaWQgc3RhcnRUaW1lcigpCi0gICAgewotICAgICAgICAvLyBLZWVwIGFsaXZl
IHVudGlsIHRoZSB0aW1lciBoYXMgZmlyZWQuCi0gICAgICAgIHJlZigpOwotCi0gICAgICAgIGF1
dG8gc2NoZWR1bGVkUGFpcnMgPSBtX2RlY29kZVRhc2stPnNjaGVkdWxlQ29udGV4dC5zY2hlZHVs
ZWRQYWlyczsKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMF9zKTsKLSAgICAgICAgbV90
aW1lci5zY2hlZHVsZShzY2hlZHVsZWRQYWlycyk7Ci0gICAgfQotCi0gICAgdm9pZCB0aW1lckZp
cmVkKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2RlY29kZVRhc2stPnJlc3VsdC5kYXRhKQotICAg
ICAgICAgICAgbV9kZWNvZGVUYXNrLT5jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1fZGVjb2Rl
VGFzay0+cmVzdWx0KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZGVjb2RlVGFzay0+
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLQotICAgICAgICAvLyBFbnN1cmUgRGVjb2RlVGFzayBn
ZXRzIGRlbGV0ZWQgaW4gdGhlIG1haW4gdGhyZWFkLgotICAgICAgICBtX2RlY29kZVRhc2sgPSBu
dWxscHRyOwotCi0gICAgICAgIGRlcmVmKCk7Ci0gICAgfQotCi0gICAgUnVuTG9vcFRpbWVyPERl
Y29kaW5nUmVzdWx0RGlzcGF0Y2hlcj4gbV90aW1lcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2RlVGFzaz4gbV9kZWNvZGVUYXNrOwotfTsKLQotI2VuZGlmIC8vIEhBVkUoUlVOTE9PUF9USU1F
UikKLQogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBjcmVhdGVEZWNvZGVUYXNr
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwg
RGVjb2RlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxEZWNvZGVUYXNrPigKQEAgLTE5NCwxNiArMTQ4LDE4IEBAIHZvaWQgZGVj
b2RlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHUKICAgICAgICAgICAgICAgICBkZWNvZGVF
c2NhcGVkKCpkZWNvZGVUYXNrKTsKICAgICAgICAgfQogCi0jaWYgSEFWRShSVU5MT09QX1RJTUVS
KQotICAgICAgICBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI6OmRpc3BhdGNoKFdURk1vdmUoZGVj
b2RlVGFzaykpOwotI2Vsc2UKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjb2RlVGFzayA9
IFdURk1vdmUoZGVjb2RlVGFzayldIHsKKyAgICAgICAgYXV0byBjYWxsQ29tcGxldGlvbkhhbmRs
ZXIgPSBbZGVjb2RlVGFzayA9IFdURk1vdmUoZGVjb2RlVGFzayldIHsKICAgICAgICAgICAgIGlm
ICghZGVjb2RlVGFzay0+cmVzdWx0LmRhdGEpIHsKICAgICAgICAgICAgICAgICBkZWNvZGVUYXNr
LT5jb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGRlY29kZVRhc2stPmNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoZGVjb2RlVGFzay0+cmVzdWx0KSk7Ci0gICAgICAgIH0pOworICAgICAgICB9OworCisjaWYg
VVNFKENPQ09BX0VWRU5UX0xPT1ApCisgICAgICAgIFJ1bkxvb3A6OmRpc3BhdGNoKGRlY29kZVRh
c2stPnNjaGVkdWxlQ29udGV4dC5zY2hlZHVsZWRQYWlycywgV1RGTW92ZShjYWxsQ29tcGxldGlv
bkhhbmRsZXIpKTsKKyNlbHNlCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZN
b3ZlKGNhbGxDb21wbGV0aW9uSGFuZGxlcikpOwogI2VuZGlmCiAgICAgfSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCShy
ZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IFJlc3Vs
dCB7CiAKIHVzaW5nIERlY29kZUNvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lk
IChPcHRpb25hbDxSZXN1bHQ+KT47CiBzdHJ1Y3QgU2NoZWR1bGVDb250ZXh0IHsKLSNpZiBIQVZF
KFJVTkxPT1BfVElNRVIpCisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCiAgICAgU2NoZWR1bGVQ
YWlySGFzaFNldCBzY2hlZHVsZWRQYWlyczsKICNlbmRpZgogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404463</attachid>
            <date>2020-07-16 10:48:47 -0700</date>
            <delta_ts>2020-07-16 13:01:09 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-214340-20200716104846.patch</filename>
            <type>text/plain</type>
            <size>19391</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQzODYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA3LTE0ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIFJ1bkxv
b3AgVGltZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDM0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKiB3dGYvY2YvUnVuTG9vcENGLmNwcDoK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpjcmVhdGVUaW1lcik6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9nbGliL1J1
bkxvb3BHTGliLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjp1cGRhdGVS
ZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKiB3dGYvd2lu
L1J1bkxvb3BXaW4uY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0
KToKKwogMjAyMC0wNy0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2MjM0MSkgVVJMOjpjcmVhdGVDRlVSTCBzaG91
bGQgcHJvZHVjZSBhIENGVVJMIHRoYXQgdXNlcyBVVEYtOCB0byBkZWNvZGUgaXRzIHBlcmNlbnQt
ZW5jb2RlZCBzZXF1ZW5jZXMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisr
KyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0
MSwxNiBAQCB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+CiAgICAgICAg
IHdha2VVcCgpOwogfQogCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkZWxh
eSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIGF1dG8gdGltZXIgPSBuZXcg
RGlzcGF0Y2hUaW1lcigqdGhpcyk7CisgICAgdGltZXItPnNldEZ1bmN0aW9uKFt0aW1lciwgZnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgICAgICBmdW5jdGlvbigpOworICAgICAg
ICBkZWxldGUgdGltZXI7CisgICAgfSk7CisgICAgdGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7
Cit9CisKIHZvaWQgUnVuTG9vcDo6c3VzcGVuZEZ1bmN0aW9uRGlzcGF0Y2hGb3JDdXJyZW50Q3lj
bGUoKQogewogICAgIC8vIERvbid0IHN1c3BlbmQgaWYgdGhlcmUgYXJlIGFscmVhZHkgc3VzcGVu
ZGVkIGZ1bmN0aW9ucyB0byBhdm9pZCB1bmV4ZWN1dGVkIGZ1bmN0aW9uIHBpbGUtdXAuCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UnVuTG9vcC5oCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEwIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitj
bGFzcyBTY2hlZHVsZVBhaXI7CitzdHJ1Y3QgU2NoZWR1bGVQYWlySGFzaDsKK3R5cGVkZWYgSGFz
aFNldDxSZWZQdHI8U2NoZWR1bGVQYWlyPiwgU2NoZWR1bGVQYWlySGFzaD4gU2NoZWR1bGVQYWly
SGFzaFNldDsKKwogI2lmIFVTRShDRikKIHVzaW5nIFJ1bkxvb3BNb2RlID0gQ0ZTdHJpbmdSZWY7
CiAjZGVmaW5lIERlZmF1bHRSdW5Mb29wTW9kZSBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUKQEAgLTcz
LDcgKzc3LDEyIEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
aXNNYWluKCk7CiAgICAgflJ1bkxvb3AoKSBmaW5hbDsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4m
Jik7CisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGRpc3BhdGNoKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmLCBGdW5jdGlvbjx2
b2lkKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkaXNwYXRjaEFm
dGVyKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmLCBTZWNvbmRzLCBGdW5jdGlvbjx2b2lkKCk+
JiYpOworI2VuZGlmCiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcnVuKCk7
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwpAQCAtMTAyLDEwICsxMTEsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJSdW5Mb29wTWVzc2FnZVdpbmRvd0Ns
YXNzKCk7CiAjZW5kaWYKIAotI2lmICFVU0UoQ09DT0FfRVZFTlRfTE9PUCkKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4m
Jik7Ci0jZW5kaWYKLQogICAgIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgUnVuTG9vcDsKQEAgLTExMyw4ICsx
MTgsMTEgQEAgcHVibGljOgogICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgVGlt
ZXJCYXNlKFJ1bkxvb3AmKTsKICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgflRp
bWVyQmFzZSgpOwogCi0gICAgICAgIHZvaWQgc3RhcnRSZXBlYXRpbmcoU2Vjb25kcyByZXBlYXRJ
bnRlcnZhbCkgeyBzdGFydEludGVybmFsKHJlcGVhdEludGVydmFsLCB0cnVlKTsgfQotICAgICAg
ICB2b2lkIHN0YXJ0T25lU2hvdChTZWNvbmRzIGludGVydmFsKSB7IHN0YXJ0SW50ZXJuYWwoaW50
ZXJ2YWwsIGZhbHNlKTsgfQorICAgICAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKFNlY29uZHMgaW50
ZXJ2YWwpIHsgc3RhcnQoc3RkOjptYXgoaW50ZXJ2YWwsIDBfcyksIHRydWUpOyB9CisgICAgICAg
IHZvaWQgc3RhcnRPbmVTaG90KFNlY29uZHMgaW50ZXJ2YWwpIHsgc3RhcnQoc3RkOjptYXgoaW50
ZXJ2YWwsIDBfcyksIGZhbHNlKTsgfQorI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorICAgICAg
ICB2b2lkIHN0YXJ0T25lU2hvdChjb25zdCBTY2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBh
aXJzLCBTZWNvbmRzIGludGVydmFsKSB7IHN0YXJ0KHNjaGVkdWxlUGFpcnMsIHN0ZDo6bWF4KGlu
dGVydmFsLCAwX3MpLCBmYWxzZSk7IH0KKyNlbmRpZgogCiAgICAgICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHN0b3AoKTsKICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNBY3Rp
dmUoKSBjb25zdDsKQEAgLTEyOCwxMiArMTM2LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdm9pZCBzdGFydEludGVybmFsKFNlY29uZHMgbmV4dEZpcmVJbnRl
cnZhbCwgYm9vbCByZXBlYXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXJ0KHN0ZDo6bWF4
KG5leHRGaXJlSW50ZXJ2YWwsIDBfcyksIHJlcGVhdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIGJv
b2wgcmVwZWF0KTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnQoU2Vjb25k
cyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpOworI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorICAg
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydChjb25zdCBTY2hlZHVsZVBhaXJIYXNo
U2V0JiwgU2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpOworI2VuZGlmCiAKICAgICAgICAg
UmVmPFJ1bkxvb3A+IG1fcnVuTG9vcDsKIApAQCAtMTQ2LDEyICsxNTIsMTMgQEAgcHVibGljOgog
ICAgICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogI2VsaWYgVVNFKENPQ09BX0VWRU5U
X0xPT1ApCiAgICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYs
IHZvaWQqKTsKKyAgICAgICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiBjcmVhdGVUaW1l
cihTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCk7CiAgICAgICAgIFJldGFpblB0cjxDRlJ1
bkxvb3BUaW1lclJlZj4gbV90aW1lcjsKICNlbGlmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAg
ICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCk7CiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9z
b3VyY2U7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNlIH07Ci0gICAgICAgIFNl
Y29uZHMgbV9maXJlSW50ZXJ2YWwgeyAwIH07CisgICAgICAgIFNlY29uZHMgbV9pbnRlcnZhbCB7
IDAgfTsKICNlbGlmIFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCiAgICAgICAgIGJvb2wgaXNBY3Rp
dmUoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBjb25zdDsKICAgICAgICAgdm9pZCBzdG9wKGNvbnN0
IEFic3RyYWN0TG9ja2VyJik7CkBAIC0xODIsNyArMTg5LDkgQEAgcHVibGljOgogICAgICAgICBU
aW1lckZpcmVkQ2xhc3MqIG1fb2JqZWN0OwogICAgIH07CiAKLSNpZiBVU0UoV0lORE9XU19FVkVO
VF9MT09QKQorcHJpdmF0ZToKKyAgICBjbGFzcyBIb2xkZXI7CisKICAgICBjbGFzcyBEaXNwYXRj
aFRpbWVyIGZpbmFsIDogcHVibGljIFRpbWVyQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBE
aXNwYXRjaFRpbWVyKFJ1bkxvb3AmIHJ1bkxvb3ApCkBAIC0xOTksMTEgKzIwOCw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CiAgICAgfTsKLSNlbmRp
ZgogCi0gICAgY2xhc3MgSG9sZGVyOwotCi1wcml2YXRlOgogICAgIFJ1bkxvb3AoKTsKIAogICAg
IHZvaWQgcGVyZm9ybVdvcmsoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkocmV2aXNp
b24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3dGYv
QXV0b2RyYWluZWRQb29sLmg+CisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApAQCAtODEsOCArODIsMzAgQEAgdm9pZCBSdW5Mb29wOjpzdG9wKCkKICAg
ICBDRlJ1bkxvb3BTdG9wKG1fcnVuTG9vcC5nZXQoKSk7CiB9CiAKK3ZvaWQgUnVuTG9vcDo6ZGlz
cGF0Y2goY29uc3QgU2NoZWR1bGVQYWlySGFzaFNldCYgc2NoZWR1bGVQYWlycywgRnVuY3Rpb248
dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIGRpc3BhdGNoQWZ0ZXIoc2NoZWR1bGVQYWlycywg
MF9zLCBXVEZNb3ZlKGZ1bmN0aW9uKSk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRl
cihjb25zdCBTY2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBhaXJzLCBTZWNvbmRzIGludGVy
dmFsLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgYXV0byB0aW1lciA9IG5l
dyBEaXNwYXRjaFRpbWVyKFJ1bkxvb3A6Om1haW4oKSk7CisgICAgdGltZXItPnNldEZ1bmN0aW9u
KFt0aW1lciwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgICAgICBmdW5jdGlv
bigpOworICAgICAgICBkZWxldGUgdGltZXI7CisgICAgfSk7CisgICAgdGltZXItPnN0YXJ0T25l
U2hvdChzY2hlZHVsZVBhaXJzLCBpbnRlcnZhbCk7Cit9CisKIC8vIFJ1bkxvb3A6OlRpbWVyCiAK
K1JldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gUnVuTG9vcDo6VGltZXJCYXNlOjpjcmVhdGVU
aW1lcihTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCkKK3sKKyAgICBDRlJ1bkxvb3BUaW1l
ckNvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgMCwgMCwgMCB9OworICAgIFNlY29uZHMgcmVw
ZWF0SW50ZXJ2YWwgPSByZXBlYXQgPyBpbnRlcnZhbCA6IDBfczsKKyAgICByZXR1cm4gYWRvcHRD
RihDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSArIGludGVydmFsLnNlY29uZHMoKSwgcmVwZWF0SW50ZXJ2YWwuc2Vjb25k
cygpLCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOworfQorCiB2b2lkIFJ1bkxvb3A6OlRp
bWVyQmFzZTo6dGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiBjZlRpbWVyLCB2b2lkKiBjb250
ZXh0KQogewogICAgIFRpbWVyQmFzZSogdGltZXIgPSBzdGF0aWNfY2FzdDxUaW1lckJhc2UqPihj
b250ZXh0KTsKQEAgLTEwNSwxNyArMTI4LDI1IEBAIFJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVy
QmFzZSgpCiAgICAgc3RvcCgpOwogfQogCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQo
U2Vjb25kcyBuZXh0RmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKK3ZvaWQgUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdGFydChTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCkKIHsKICAgICBpZiAo
bV90aW1lcikKICAgICAgICAgc3RvcCgpOwotICAgIAotICAgIENGUnVuTG9vcFRpbWVyQ29udGV4
dCBjb250ZXh0ID0geyAwLCB0aGlzLCAwLCAwLCAwIH07Ci0gICAgU2Vjb25kcyByZXBlYXRJbnRl
cnZhbCA9IHJlcGVhdCA/IG5leHRGaXJlSW50ZXJ2YWwgOiAwX3M7Ci0gICAgbV90aW1lciA9IGFk
b3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0
ZVRpbWVHZXRDdXJyZW50KCkgKyBuZXh0RmlyZUludGVydmFsLnNlY29uZHMoKSwgcmVwZWF0SW50
ZXJ2YWwuc2Vjb25kcygpLCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOworCisgICAgbV90
aW1lciA9IGNyZWF0ZVRpbWVyKGludGVydmFsLCByZXBlYXQpOwogICAgIENGUnVuTG9vcEFkZFRp
bWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOwogfQogCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoY29uc3Qg
U2NoZWR1bGVQYWlySGFzaFNldCYgc2NoZWR1bGVQYWlycywgU2Vjb25kcyBpbnRlcnZhbCwgYm9v
bCByZXBlYXQpCit7CisgICAgaWYgKG1fdGltZXIpCisgICAgICAgIHN0b3AoKTsKKworICAgIG1f
dGltZXIgPSBjcmVhdGVUaW1lcihpbnRlcnZhbCwgcmVwZWF0KTsKKyAgICBmb3IgKGF1dG8mIHNj
aGVkdWxlUGFpciA6IHNjaGVkdWxlUGFpcnMpCisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKHNj
aGVkdWxlUGFpci0+cnVuTG9vcCgpLCBtX3RpbWVyLmdldCgpLCBzY2hlZHVsZVBhaXItPm1vZGUo
KSk7Cit9CisKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKIHsKICAgICBpZiAoIW1f
dGltZXIpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAko
cmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJp
Yy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MCwxNCArMjUwLDYgQEAgdm9pZCBSdW5Mb29wOjpz
Y2hlZHVsZUFuZFdha2VVcChjb25zdCBBYgogICAgIHdha2VVcChsb2NrZXIpOwogfQogCi12b2lk
IFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkZWxheSwgRnVuY3Rpb248dm9pZCgpPiYm
IGZ1bmN0aW9uKQotewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOwotICAgIGJv
b2wgcmVwZWF0aW5nID0gZmFsc2U7Ci0gICAgc2NoZWR1bGUobG9ja2VyLCBUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSwgZGVsYXksIHJlcGVhdGluZykp
OwotICAgIHdha2VVcChsb2NrZXIpOwotfQotCiAvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93
biB0aGUgcmVnaXN0ZXJlZCBUaW1lckJhc2UsCiAvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBz
aG91bGQgbWFuYWdlIHRoZXNlIGxpZmV0aW1lLgogUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJh
c2UoUnVuTG9vcCYgcnVuTG9vcCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdM
aWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3Bw
CShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDM5ICsxMjksNiBAQCBSdW5Mb29wOjpDeWNsZVJlc3Vs
dCBSdW5Mb29wOjpjeWNsZShSdW5MCiAgICAgcmV0dXJuIEN5Y2xlUmVzdWx0OjpDb250aW51ZTsK
IH0KIAotY2xhc3MgRGlzcGF0Y2hBZnRlckNvbnRleHQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIERpc3BhdGNoQWZ0ZXJDb250ZXh0KEZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikKLSAgICAgICAgOiBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGRpc3BhdGNoKCkKLSAgICB7Ci0gICAgICAgIG1fZnVu
Y3Rpb24oKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0
aW9uOwotfTsKLQotdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24s
IEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKLXsKLSAgICBHUmVmUHRyPEdTb3VyY2U+IHNv
dXJjZSA9IGFkb3B0R1JlZihnX3NvdXJjZV9uZXcoJnJ1bkxvb3BTb3VyY2VGdW5jdGlvbnMsIHNp
emVvZihHU291cmNlKSkpOwotICAgIGdfc291cmNlX3NldF9wcmlvcml0eShzb3VyY2UuZ2V0KCks
IFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6UnVuTG9vcFRpbWVyKTsKLSAgICBnX3NvdXJjZV9zZXRf
bmFtZShzb3VyY2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKLSAg
ICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UuZ2V0KCksIGdfZ2V0X21vbm90b25pY190
aW1lKCkgKyBkdXJhdGlvbi5taWNyb3NlY29uZHNBczxnaW50NjQ+KCkpOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNw
YXRjaEFmdGVyQ29udGV4dD4oV1RGTW92ZShmdW5jdGlvbikpOwotICAgIGdfc291cmNlX3NldF9j
YWxsYmFjayhzb3VyY2UuZ2V0KCksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dChz
dGF0aWNfY2FzdDxEaXNwYXRjaEFmdGVyQ29udGV4dCo+KHVzZXJEYXRhKSk7Ci0gICAgICAgIGNv
bnRleHQtPmRpc3BhdGNoKCk7Ci0gICAgICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Ci0gICAg
fSwgY29udGV4dC5yZWxlYXNlKCksIG51bGxwdHIpOwotICAgIGdfc291cmNlX2F0dGFjaChzb3Vy
Y2UuZ2V0KCksIG1fbWFpbkNvbnRleHQuZ2V0KCkpOwotfQotCiBSdW5Mb29wOjpUaW1lckJhc2U6
OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiAg
ICAgLCBtX3NvdXJjZShhZG9wdEdSZWYoZ19zb3VyY2VfbmV3KCZydW5Mb29wU291cmNlRnVuY3Rp
b25zLCBzaXplb2YoR1NvdXJjZSkpKSkKQEAgLTIwMSwyMCArMTY4LDIwIEBAIHZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzZXRQcmlvcml0eShpbnQKIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6
OnVwZGF0ZVJlYWR5VGltZSgpCiB7Ci0gICAgaWYgKCFtX2ZpcmVJbnRlcnZhbCkgeworICAgIGlm
ICghbV9pbnRlcnZhbCkgewogICAgICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3NvdXJj
ZS5nZXQoKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBnaW50NjQgY3VycmVu
dFRpbWUgPSBnX2dldF9tb25vdG9uaWNfdGltZSgpOwotICAgIGdpbnQ2NCB0YXJnZXRUaW1lID0g
Y3VycmVudFRpbWUgKyBzdGQ6Om1pbjxnaW50NjQ+KEdfTUFYSU5UNjQgLSBjdXJyZW50VGltZSwg
bV9maXJlSW50ZXJ2YWwubWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsKKyAgICBnaW50NjQgdGFy
Z2V0VGltZSA9IGN1cnJlbnRUaW1lICsgc3RkOjptaW48Z2ludDY0PihHX01BWElOVDY0IC0gY3Vy
cmVudFRpbWUsIG1faW50ZXJ2YWwubWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsKICAgICBBU1NF
UlQodGFyZ2V0VGltZSA+PSBjdXJyZW50VGltZSk7CiAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3Rp
bWUobV9zb3VyY2UuZ2V0KCksIHRhcmdldFRpbWUpOwogfQogCi12b2lkIFJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQoU2Vjb25kcyBmaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQordm9pZCBSdW5M
b29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQogewot
ICAgIG1fZmlyZUludGVydmFsID0gZmlyZUludGVydmFsOworICAgIG1faW50ZXJ2YWwgPSBpbnRl
cnZhbDsKICAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0OwogICAgIHVwZGF0ZVJlYWR5VGltZSgp
OwogfQpAQCAtMjIyLDcgKzE4OSw3IEBAIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChT
ZWNvbmRzIGYKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKIHsKICAgICBnX3NvdXJj
ZV9zZXRfcmVhZHlfdGltZShtX3NvdXJjZS5nZXQoKSwgLTEpOwotICAgIG1fZmlyZUludGVydmFs
ID0geyB9OworICAgIG1faW50ZXJ2YWwgPSB7IH07CiAgICAgbV9pc1JlcGVhdGluZyA9IGZhbHNl
OwogfQogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvd2luL1J1bkxvb3BXaW4uY3BwCShyZXZpc2lvbiAyNjQzMTUp
CisrKyBTb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MCwxNiArMTQwLDYgQEAgUnVuTG9vcDo6Q3ljbGVSZXN1bHQgUnVuTG9vcDo6Y3ljbGUoUnVu
TAogICAgIHJldHVybiBDeWNsZVJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgUnVuTG9vcDo6
ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGRlbGF5LCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24p
Ci17Ci0gICAgYXV0byB0aW1lciA9IG5ldyBEaXNwYXRjaFRpbWVyKCp0aGlzKTsKLSAgICB0aW1l
ci0+c2V0RnVuY3Rpb24oW3RpbWVyLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7Ci0g
ICAgICAgIGZ1bmN0aW9uKCk7Ci0gICAgICAgIGRlbGV0ZSB0aW1lcjsKLSAgICB9KTsKLSAgICB0
aW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKLX0KLQogLy8gUnVuTG9vcDo6VGltZXIKIAogdm9p
ZCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQoKQpAQCAtMTgwLDE0ICsxNzAsMTQgQEAg
UnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKICAgICBzdG9wKCk7CiB9CiAKLXZvaWQg
UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wg
cmVwZWF0KQordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgaW50ZXJ2YWws
IGJvb2wgcmVwZWF0KQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcnVuTG9vcC0+bV9sb29w
TG9jayk7CiAgICAgbV9pc1JlcGVhdGluZyA9IHJlcGVhdDsKICAgICBtX2lzQWN0aXZlID0gdHJ1
ZTsKLSAgICBtX2ludGVydmFsID0gbmV4dEZpcmVJbnRlcnZhbDsKKyAgICBtX2ludGVydmFsID0g
aW50ZXJ2YWw7CiAgICAgbV9uZXh0RmlyZURhdGUgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIG1f
aW50ZXJ2YWw7Ci0gICAgOjpTZXRUaW1lcihtX3J1bkxvb3AtPm1fcnVuTG9vcE1lc3NhZ2VXaW5k
b3csIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBuZXh0RmlyZUludGVydmFsLm1pbGxp
c2Vjb25kc0FzPFVJTlQ+KCksIG51bGxwdHIpOworICAgIDo6U2V0VGltZXIobV9ydW5Mb29wLT5t
X3J1bkxvb3BNZXNzYWdlV2luZG93LCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0aGlzKSwgaW50
ZXJ2YWwubWlsbGlzZWNvbmRzQXM8VUlOVD4oKSwgbnVsbHB0cik7CiB9CiAKIHZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzdG9wKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIERvY3Vt
ZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXMKICAgICAsIG1fcmVxdWVzdChyZXF1
ZXN0KQogICAgICwgbV9vcmlnaW5hbFN1YnN0aXR1dGVEYXRhV2FzVmFsaWQoc3Vic3RpdHV0ZURh
dGEuaXNWYWxpZCgpKQogICAgICwgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyKCp0
aGlzLCAmRG9jdW1lbnRMb2FkZXI6OnN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXJGaXJl
ZCkKLSAgICAsIG1fZGF0YUxvYWRUaW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVyOjpoYW5kbGVT
dWJzdGl0dXRlRGF0YUxvYWROb3cpCisgICAgLCBtX2RhdGFMb2FkVGltZXIoUnVuTG9vcDo6Y3Vy
cmVudCgpLCB0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5v
dykKICAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3QobWFrZVVuaXF1ZTxBcHBsaWNhdGlvbkNh
Y2hlSG9zdD4oKnRoaXMpKQogewogfQpAQCAtNDk0LDExICs0OTQsMTAgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdAogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFy
dERhdGFMb2FkVGltZXIoKQogeworI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorICAgIG1fZGF0
YUxvYWRUaW1lci5zdGFydE9uZVNob3QoKm1fZnJhbWUtPnBhZ2UoKS0+c2NoZWR1bGVkUnVuTG9v
cFBhaXJzKCksIDBfcyk7CisjZWxzZQogICAgIG1fZGF0YUxvYWRUaW1lci5zdGFydE9uZVNob3Qo
MF9zKTsKLQotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICBpZiAoU2NoZWR1bGVQYWlySGFz
aFNldCogc2NoZWR1bGVkUGFpcnMgPSBtX2ZyYW1lLT5wYWdlKCktPnNjaGVkdWxlZFJ1bkxvb3BQ
YWlycygpKQotICAgICAgICBtX2RhdGFMb2FkVGltZXIuc2NoZWR1bGUoKnNjaGVkdWxlZFBhaXJz
KTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC00ODksMTEgKzQ5MCw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwogICAgIFJlc291
cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcigpIGNvbnN0OwogCi0jaWYg
SEFWRShSVU5MT09QX1RJTUVSKQotICAgIHR5cGVkZWYgUnVuTG9vcFRpbWVyPERvY3VtZW50TG9h
ZGVyPiBEb2N1bWVudExvYWRlclRpbWVyOwotI2Vsc2UKLSAgICB0eXBlZGVmIFRpbWVyIERvY3Vt
ZW50TG9hZGVyVGltZXI7Ci0jZW5kaWYKICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9h
ZE5vdygpOwogICAgIHZvaWQgc3RhcnREYXRhTG9hZFRpbWVyKCk7CiAKQEAgLTYwMCw3ICs1OTYs
NyBAQCBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVk
OwogICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxv
YWRlciB7IDAgfTsKIAotICAgIERvY3VtZW50TG9hZGVyVGltZXIgbV9kYXRhTG9hZFRpbWVyOwor
ICAgIFJ1bkxvb3A6OlRpbWVyPERvY3VtZW50TG9hZGVyPiBtX2RhdGFMb2FkVGltZXI7CiAgICAg
Ym9vbCBtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5IHsgZmFsc2UgfTsKICAgICBib29sIG1fd2Fp
dGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Niwx
MSArMjY2LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogICAgIEFTU0VS
VCh1cmwucHJvdG9jb2xJc0RhdGEoKSk7CiAKICAgICBEYXRhVVJMRGVjb2Rlcjo6U2NoZWR1bGVD
b250ZXh0IHNjaGVkdWxlQ29udGV4dDsKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0gICAgaWYg
KGF1dG8gcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBpZiAoYXV0byBzY2hlZHVs
ZWRQYWlycyA9IHBhZ2UtPnNjaGVkdWxlZFJ1bkxvb3BQYWlycygpKQotICAgICAgICAgICAgc2No
ZWR1bGVDb250ZXh0LnNjaGVkdWxlZFBhaXJzID0gKnNjaGVkdWxlZFBhaXJzOwotICAgIH0KKyNp
ZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyAgICBpZiAoYXV0byBwYWdlID0gbV9mcmFtZS0+cGFn
ZSgpKQorICAgICAgICBzY2hlZHVsZUNvbnRleHQuc2NoZWR1bGVkUGFpcnMgPSAqcGFnZS0+c2No
ZWR1bGVkUnVuTG9vcFBhaXJzKCk7CiAjZW5kaWYKICAgICBhdXRvIG1vZGUgPSBEYXRhVVJMRGVj
b2Rlcjo6TW9kZTo6TGVnYWN5OwogICAgIGlmIChtX3JlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVz
b3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6OkZldGNoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAJKHJldmlzaW9uIDI2NDMx
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Nyw1MiArOTcsNiBAQCBwdWJsaWM6CiAgICAgUmVzdWx0IHJl
c3VsdDsKIH07CiAKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0KLWNsYXNzIERlY29kaW5nUmVz
dWx0RGlzcGF0Y2hlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWNvZGluZ1Jlc3Vs
dERpc3BhdGNoZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaChzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2RlVGFzaz4gZGVjb2RlVGFzaykKLSAgICB7Ci0gICAgICAgIFJlZjxEZWNv
ZGluZ1Jlc3VsdERpc3BhdGNoZXI+IGRpc3BhdGNoZXIgPSBhZG9wdFJlZigqbmV3IERlY29kaW5n
UmVzdWx0RGlzcGF0Y2hlcihXVEZNb3ZlKGRlY29kZVRhc2spKSk7Ci0gICAgICAgIGRpc3BhdGNo
ZXItPnN0YXJ0VGltZXIoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRGVjb2RpbmdSZXN1bHRE
aXNwYXRjaGVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBkZWNvZGVUYXNrKQotICAgICAg
ICA6IG1fdGltZXIoKnRoaXMsICZEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI6OnRpbWVyRmlyZWQp
Ci0gICAgICAgICwgbV9kZWNvZGVUYXNrKFdURk1vdmUoZGVjb2RlVGFzaykpCi0gICAgewotICAg
IH0KLQotICAgIHZvaWQgc3RhcnRUaW1lcigpCi0gICAgewotICAgICAgICAvLyBLZWVwIGFsaXZl
IHVudGlsIHRoZSB0aW1lciBoYXMgZmlyZWQuCi0gICAgICAgIHJlZigpOwotCi0gICAgICAgIGF1
dG8gc2NoZWR1bGVkUGFpcnMgPSBtX2RlY29kZVRhc2stPnNjaGVkdWxlQ29udGV4dC5zY2hlZHVs
ZWRQYWlyczsKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMF9zKTsKLSAgICAgICAgbV90
aW1lci5zY2hlZHVsZShzY2hlZHVsZWRQYWlycyk7Ci0gICAgfQotCi0gICAgdm9pZCB0aW1lckZp
cmVkKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2RlY29kZVRhc2stPnJlc3VsdC5kYXRhKQotICAg
ICAgICAgICAgbV9kZWNvZGVUYXNrLT5jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1fZGVjb2Rl
VGFzay0+cmVzdWx0KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZGVjb2RlVGFzay0+
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLQotICAgICAgICAvLyBFbnN1cmUgRGVjb2RlVGFzayBn
ZXRzIGRlbGV0ZWQgaW4gdGhlIG1haW4gdGhyZWFkLgotICAgICAgICBtX2RlY29kZVRhc2sgPSBu
dWxscHRyOwotCi0gICAgICAgIGRlcmVmKCk7Ci0gICAgfQotCi0gICAgUnVuTG9vcFRpbWVyPERl
Y29kaW5nUmVzdWx0RGlzcGF0Y2hlcj4gbV90aW1lcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2RlVGFzaz4gbV9kZWNvZGVUYXNrOwotfTsKLQotI2VuZGlmIC8vIEhBVkUoUlVOTE9PUF9USU1F
UikKLQogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBjcmVhdGVEZWNvZGVUYXNr
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwg
RGVjb2RlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxEZWNvZGVUYXNrPigKQEAgLTE5NCwxNiArMTQ4LDE4IEBAIHZvaWQgZGVj
b2RlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHUKICAgICAgICAgICAgICAgICBkZWNvZGVF
c2NhcGVkKCpkZWNvZGVUYXNrKTsKICAgICAgICAgfQogCi0jaWYgSEFWRShSVU5MT09QX1RJTUVS
KQotICAgICAgICBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI6OmRpc3BhdGNoKFdURk1vdmUoZGVj
b2RlVGFzaykpOwotI2Vsc2UKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjb2RlVGFzayA9
IFdURk1vdmUoZGVjb2RlVGFzayldIHsKKyAgICAgICAgYXV0byBjYWxsQ29tcGxldGlvbkhhbmRs
ZXIgPSBbZGVjb2RlVGFzayA9IFdURk1vdmUoZGVjb2RlVGFzayldIHsKICAgICAgICAgICAgIGlm
ICghZGVjb2RlVGFzay0+cmVzdWx0LmRhdGEpIHsKICAgICAgICAgICAgICAgICBkZWNvZGVUYXNr
LT5jb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGRlY29kZVRhc2stPmNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUoZGVjb2RlVGFzay0+cmVzdWx0KSk7Ci0gICAgICAgIH0pOworICAgICAgICB9OworCisjaWYg
VVNFKENPQ09BX0VWRU5UX0xPT1ApCisgICAgICAgIFJ1bkxvb3A6OmRpc3BhdGNoKGRlY29kZVRh
c2stPnNjaGVkdWxlQ29udGV4dC5zY2hlZHVsZWRQYWlycywgV1RGTW92ZShjYWxsQ29tcGxldGlv
bkhhbmRsZXIpKTsKKyNlbHNlCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZN
b3ZlKGNhbGxDb21wbGV0aW9uSGFuZGxlcikpOwogI2VuZGlmCiAgICAgfSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCShy
ZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFV
UkxEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAKIAogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgSEFWRShSVU5MT09QX1RJTUVSKQotI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wVGltZXIuaD4KKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyNpbmNs
dWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNDYsNyArNDYsNyBAQCBzdHJ1Y3QgUmVzdWx0IHsKIAogdXNpbmcgRGVjb2RlQ29tcGxldGlv
bkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFJlc3VsdD4pPjsKIHN0cnVj
dCBTY2hlZHVsZUNvbnRleHQgewotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKKyNpZiBVU0UoQ09D
T0FfRVZFTlRfTE9PUCkKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0IHNjaGVkdWxlZFBhaXJzOwog
I2VuZGlmCiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404477</attachid>
            <date>2020-07-16 13:00:35 -0700</date>
            <delta_ts>2020-07-17 20:37:10 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-214340-20200716130034.patch</filename>
            <type>text/plain</type>
            <size>19475</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQzODYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA3LTE0ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIFJ1bkxv
b3AgVGltZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDM0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKiB3dGYvY2YvUnVuTG9vcENGLmNwcDoK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpjcmVhdGVUaW1lcik6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9nbGliL1J1
bkxvb3BHTGliLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjp1cGRhdGVS
ZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKiB3dGYvd2lu
L1J1bkxvb3BXaW4uY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0
KToKKwogMjAyMC0wNy0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2MjM0MSkgVVJMOjpjcmVhdGVDRlVSTCBzaG91
bGQgcHJvZHVjZSBhIENGVVJMIHRoYXQgdXNlcyBVVEYtOCB0byBkZWNvZGUgaXRzIHBlcmNlbnQt
ZW5jb2RlZCBzZXF1ZW5jZXMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisr
KyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0
MSwxNiBAQCB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+CiAgICAgICAg
IHdha2VVcCgpOwogfQogCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkZWxh
eSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIGF1dG8gdGltZXIgPSBuZXcg
RGlzcGF0Y2hUaW1lcigqdGhpcyk7CisgICAgdGltZXItPnNldEZ1bmN0aW9uKFt0aW1lciwgZnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgICAgICBmdW5jdGlvbigpOworICAgICAg
ICBkZWxldGUgdGltZXI7CisgICAgfSk7CisgICAgdGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7
Cit9CisKIHZvaWQgUnVuTG9vcDo6c3VzcGVuZEZ1bmN0aW9uRGlzcGF0Y2hGb3JDdXJyZW50Q3lj
bGUoKQogewogICAgIC8vIERvbid0IHN1c3BlbmQgaWYgdGhlcmUgYXJlIGFscmVhZHkgc3VzcGVu
ZGVkIGZ1bmN0aW9ucyB0byBhdm9pZCB1bmV4ZWN1dGVkIGZ1bmN0aW9uIHBpbGUtdXAuCkluZGV4
OiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UnVuTG9vcC5oCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEwIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitj
bGFzcyBTY2hlZHVsZVBhaXI7CitzdHJ1Y3QgU2NoZWR1bGVQYWlySGFzaDsKK3R5cGVkZWYgSGFz
aFNldDxSZWZQdHI8U2NoZWR1bGVQYWlyPiwgU2NoZWR1bGVQYWlySGFzaD4gU2NoZWR1bGVQYWly
SGFzaFNldDsKKwogI2lmIFVTRShDRikKIHVzaW5nIFJ1bkxvb3BNb2RlID0gQ0ZTdHJpbmdSZWY7
CiAjZGVmaW5lIERlZmF1bHRSdW5Mb29wTW9kZSBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUKQEAgLTcz
LDcgKzc3LDEyIEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wg
aXNNYWluKCk7CiAgICAgflJ1bkxvb3AoKSBmaW5hbDsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goRnVuY3Rpb248dm9pZCgpPiYmKTsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4m
Jik7CisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyB2b2lkIGRpc3BhdGNoKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmLCBGdW5jdGlvbjx2
b2lkKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkaXNwYXRjaEFm
dGVyKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmLCBTZWNvbmRzLCBGdW5jdGlvbjx2b2lkKCk+
JiYpOworI2VuZGlmCiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgcnVuKCk7
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwpAQCAtMTAyLDEwICsxMTEsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJSdW5Mb29wTWVzc2FnZVdpbmRvd0Ns
YXNzKCk7CiAjZW5kaWYKIAotI2lmICFVU0UoQ09DT0FfRVZFTlRfTE9PUCkKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4m
Jik7Ci0jZW5kaWYKLQogICAgIGNsYXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgUnVuTG9vcDsKQEAgLTExMyw4ICsx
MTgsMTEgQEAgcHVibGljOgogICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgVGlt
ZXJCYXNlKFJ1bkxvb3AmKTsKICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgflRp
bWVyQmFzZSgpOwogCi0gICAgICAgIHZvaWQgc3RhcnRSZXBlYXRpbmcoU2Vjb25kcyByZXBlYXRJ
bnRlcnZhbCkgeyBzdGFydEludGVybmFsKHJlcGVhdEludGVydmFsLCB0cnVlKTsgfQotICAgICAg
ICB2b2lkIHN0YXJ0T25lU2hvdChTZWNvbmRzIGludGVydmFsKSB7IHN0YXJ0SW50ZXJuYWwoaW50
ZXJ2YWwsIGZhbHNlKTsgfQorICAgICAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKFNlY29uZHMgaW50
ZXJ2YWwpIHsgc3RhcnQoc3RkOjptYXgoaW50ZXJ2YWwsIDBfcyksIHRydWUpOyB9CisgICAgICAg
IHZvaWQgc3RhcnRPbmVTaG90KFNlY29uZHMgaW50ZXJ2YWwpIHsgc3RhcnQoc3RkOjptYXgoaW50
ZXJ2YWwsIDBfcyksIGZhbHNlKTsgfQorI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorICAgICAg
ICB2b2lkIHN0YXJ0T25lU2hvdChjb25zdCBTY2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBh
aXJzLCBTZWNvbmRzIGludGVydmFsKSB7IHN0YXJ0KHNjaGVkdWxlUGFpcnMsIHN0ZDo6bWF4KGlu
dGVydmFsLCAwX3MpLCBmYWxzZSk7IH0KKyNlbmRpZgogCiAgICAgICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHN0b3AoKTsKICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNBY3Rp
dmUoKSBjb25zdDsKQEAgLTEyOCwxMiArMTM2LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdm9pZCBzdGFydEludGVybmFsKFNlY29uZHMgbmV4dEZpcmVJbnRl
cnZhbCwgYm9vbCByZXBlYXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXJ0KHN0ZDo6bWF4
KG5leHRGaXJlSW50ZXJ2YWwsIDBfcyksIHJlcGVhdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIGJv
b2wgcmVwZWF0KTsKKyAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnQoU2Vjb25k
cyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpOworI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorICAg
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydChjb25zdCBTY2hlZHVsZVBhaXJIYXNo
U2V0JiwgU2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpOworI2VuZGlmCiAKICAgICAgICAg
UmVmPFJ1bkxvb3A+IG1fcnVuTG9vcDsKIApAQCAtMTQ2LDEyICsxNTIsMTMgQEAgcHVibGljOgog
ICAgICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogI2VsaWYgVVNFKENPQ09BX0VWRU5U
X0xPT1ApCiAgICAgICAgIHN0YXRpYyB2b2lkIHRpbWVyRmlyZWQoQ0ZSdW5Mb29wVGltZXJSZWYs
IHZvaWQqKTsKKyAgICAgICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiBjcmVhdGVUaW1l
cihTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCk7CiAgICAgICAgIFJldGFpblB0cjxDRlJ1
bkxvb3BUaW1lclJlZj4gbV90aW1lcjsKICNlbGlmIFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAg
ICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCk7CiAgICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9z
b3VyY2U7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNlIH07Ci0gICAgICAgIFNl
Y29uZHMgbV9maXJlSW50ZXJ2YWwgeyAwIH07CisgICAgICAgIFNlY29uZHMgbV9pbnRlcnZhbCB7
IDAgfTsKICNlbGlmIFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCiAgICAgICAgIGJvb2wgaXNBY3Rp
dmUoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBjb25zdDsKICAgICAgICAgdm9pZCBzdG9wKGNvbnN0
IEFic3RyYWN0TG9ja2VyJik7CkBAIC0xODIsNyArMTg5LDkgQEAgcHVibGljOgogICAgICAgICBU
aW1lckZpcmVkQ2xhc3MqIG1fb2JqZWN0OwogICAgIH07CiAKLSNpZiBVU0UoV0lORE9XU19FVkVO
VF9MT09QKQorcHJpdmF0ZToKKyAgICBjbGFzcyBIb2xkZXI7CisKICAgICBjbGFzcyBEaXNwYXRj
aFRpbWVyIGZpbmFsIDogcHVibGljIFRpbWVyQmFzZSB7CiAgICAgcHVibGljOgogICAgICAgICBE
aXNwYXRjaFRpbWVyKFJ1bkxvb3AmIHJ1bkxvb3ApCkBAIC0xOTksMTEgKzIwOCw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247CiAgICAgfTsKLSNlbmRp
ZgogCi0gICAgY2xhc3MgSG9sZGVyOwotCi1wcml2YXRlOgogICAgIFJ1bkxvb3AoKTsKIAogICAg
IHZvaWQgcGVyZm9ybVdvcmsoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkocmV2aXNp
b24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KICNpbmNsdWRlIDx3dGYv
QXV0b2RyYWluZWRQb29sLmg+CisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIApAQCAtODEsOCArODIsMzAgQEAgdm9pZCBSdW5Mb29wOjpzdG9wKCkKICAg
ICBDRlJ1bkxvb3BTdG9wKG1fcnVuTG9vcC5nZXQoKSk7CiB9CiAKK3ZvaWQgUnVuTG9vcDo6ZGlz
cGF0Y2goY29uc3QgU2NoZWR1bGVQYWlySGFzaFNldCYgc2NoZWR1bGVQYWlycywgRnVuY3Rpb248
dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIGRpc3BhdGNoQWZ0ZXIoc2NoZWR1bGVQYWlycywg
MF9zLCBXVEZNb3ZlKGZ1bmN0aW9uKSk7Cit9CisKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRl
cihjb25zdCBTY2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBhaXJzLCBTZWNvbmRzIGludGVy
dmFsLCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgYXV0byB0aW1lciA9IG5l
dyBEaXNwYXRjaFRpbWVyKFJ1bkxvb3A6Om1haW4oKSk7CisgICAgdGltZXItPnNldEZ1bmN0aW9u
KFt0aW1lciwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgICAgICBmdW5jdGlv
bigpOworICAgICAgICBkZWxldGUgdGltZXI7CisgICAgfSk7CisgICAgdGltZXItPnN0YXJ0T25l
U2hvdChzY2hlZHVsZVBhaXJzLCBpbnRlcnZhbCk7Cit9CisKIC8vIFJ1bkxvb3A6OlRpbWVyCiAK
K1JldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gUnVuTG9vcDo6VGltZXJCYXNlOjpjcmVhdGVU
aW1lcihTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCkKK3sKKyAgICBDRlJ1bkxvb3BUaW1l
ckNvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywgMCwgMCwgMCB9OworICAgIFNlY29uZHMgcmVw
ZWF0SW50ZXJ2YWwgPSByZXBlYXQgPyBpbnRlcnZhbCA6IDBfczsKKyAgICByZXR1cm4gYWRvcHRD
RihDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRlVGlt
ZUdldEN1cnJlbnQoKSArIGludGVydmFsLnNlY29uZHMoKSwgcmVwZWF0SW50ZXJ2YWwuc2Vjb25k
cygpLCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOworfQorCiB2b2lkIFJ1bkxvb3A6OlRp
bWVyQmFzZTo6dGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiBjZlRpbWVyLCB2b2lkKiBjb250
ZXh0KQogewogICAgIFRpbWVyQmFzZSogdGltZXIgPSBzdGF0aWNfY2FzdDxUaW1lckJhc2UqPihj
b250ZXh0KTsKQEAgLTEwNSwxNyArMTI4LDI1IEBAIFJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVy
QmFzZSgpCiAgICAgc3RvcCgpOwogfQogCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQo
U2Vjb25kcyBuZXh0RmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKK3ZvaWQgUnVuTG9vcDo6VGlt
ZXJCYXNlOjpzdGFydChTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCkKIHsKICAgICBpZiAo
bV90aW1lcikKICAgICAgICAgc3RvcCgpOwotICAgIAotICAgIENGUnVuTG9vcFRpbWVyQ29udGV4
dCBjb250ZXh0ID0geyAwLCB0aGlzLCAwLCAwLCAwIH07Ci0gICAgU2Vjb25kcyByZXBlYXRJbnRl
cnZhbCA9IHJlcGVhdCA/IG5leHRGaXJlSW50ZXJ2YWwgOiAwX3M7Ci0gICAgbV90aW1lciA9IGFk
b3B0Q0YoQ0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0
ZVRpbWVHZXRDdXJyZW50KCkgKyBuZXh0RmlyZUludGVydmFsLnNlY29uZHMoKSwgcmVwZWF0SW50
ZXJ2YWwuc2Vjb25kcygpLCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOworCisgICAgbV90
aW1lciA9IGNyZWF0ZVRpbWVyKGludGVydmFsLCByZXBlYXQpOwogICAgIENGUnVuTG9vcEFkZFRp
bWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29w
Q29tbW9uTW9kZXMpOwogfQogCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoY29uc3Qg
U2NoZWR1bGVQYWlySGFzaFNldCYgc2NoZWR1bGVQYWlycywgU2Vjb25kcyBpbnRlcnZhbCwgYm9v
bCByZXBlYXQpCit7CisgICAgaWYgKG1fdGltZXIpCisgICAgICAgIHN0b3AoKTsKKworICAgIG1f
dGltZXIgPSBjcmVhdGVUaW1lcihpbnRlcnZhbCwgcmVwZWF0KTsKKyAgICBmb3IgKGF1dG8mIHNj
aGVkdWxlUGFpciA6IHNjaGVkdWxlUGFpcnMpCisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKHNj
aGVkdWxlUGFpci0+cnVuTG9vcCgpLCBtX3RpbWVyLmdldCgpLCBzY2hlZHVsZVBhaXItPm1vZGUo
KSk7Cit9CisKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKIHsKICAgICBpZiAoIW1f
dGltZXIpCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAko
cmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJp
Yy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MCwxNCArMjUwLDYgQEAgdm9pZCBSdW5Mb29wOjpz
Y2hlZHVsZUFuZFdha2VVcChjb25zdCBBYgogICAgIHdha2VVcChsb2NrZXIpOwogfQogCi12b2lk
IFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkZWxheSwgRnVuY3Rpb248dm9pZCgpPiYm
IGZ1bmN0aW9uKQotewotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOwotICAgIGJv
b2wgcmVwZWF0aW5nID0gZmFsc2U7Ci0gICAgc2NoZWR1bGUobG9ja2VyLCBUaW1lckJhc2U6OlNj
aGVkdWxlZFRhc2s6OmNyZWF0ZShXVEZNb3ZlKGZ1bmN0aW9uKSwgZGVsYXksIHJlcGVhdGluZykp
OwotICAgIHdha2VVcChsb2NrZXIpOwotfQotCiAvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93
biB0aGUgcmVnaXN0ZXJlZCBUaW1lckJhc2UsCiAvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBz
aG91bGQgbWFuYWdlIHRoZXNlIGxpZmV0aW1lLgogUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJh
c2UoUnVuTG9vcCYgcnVuTG9vcCkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdM
aWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3Bw
CShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDM5ICsxMjksNiBAQCBSdW5Mb29wOjpDeWNsZVJlc3Vs
dCBSdW5Mb29wOjpjeWNsZShSdW5MCiAgICAgcmV0dXJuIEN5Y2xlUmVzdWx0OjpDb250aW51ZTsK
IH0KIAotY2xhc3MgRGlzcGF0Y2hBZnRlckNvbnRleHQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIERpc3BhdGNoQWZ0ZXJDb250ZXh0KEZ1bmN0aW9uPHZvaWQo
KT4mJiBmdW5jdGlvbikKLSAgICAgICAgOiBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGRpc3BhdGNoKCkKLSAgICB7Ci0gICAgICAgIG1fZnVu
Y3Rpb24oKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0
aW9uOwotfTsKLQotdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24s
IEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKLXsKLSAgICBHUmVmUHRyPEdTb3VyY2U+IHNv
dXJjZSA9IGFkb3B0R1JlZihnX3NvdXJjZV9uZXcoJnJ1bkxvb3BTb3VyY2VGdW5jdGlvbnMsIHNp
emVvZihHU291cmNlKSkpOwotICAgIGdfc291cmNlX3NldF9wcmlvcml0eShzb3VyY2UuZ2V0KCks
IFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6UnVuTG9vcFRpbWVyKTsKLSAgICBnX3NvdXJjZV9zZXRf
bmFtZShzb3VyY2UuZ2V0KCksICJbV2ViS2l0XSBSdW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKLSAg
ICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3VyY2UuZ2V0KCksIGdfZ2V0X21vbm90b25pY190
aW1lKCkgKyBkdXJhdGlvbi5taWNyb3NlY29uZHNBczxnaW50NjQ+KCkpOwotCi0gICAgc3RkOjp1
bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNw
YXRjaEFmdGVyQ29udGV4dD4oV1RGTW92ZShmdW5jdGlvbikpOwotICAgIGdfc291cmNlX3NldF9j
YWxsYmFjayhzb3VyY2UuZ2V0KCksIFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dChz
dGF0aWNfY2FzdDxEaXNwYXRjaEFmdGVyQ29udGV4dCo+KHVzZXJEYXRhKSk7Ci0gICAgICAgIGNv
bnRleHQtPmRpc3BhdGNoKCk7Ci0gICAgICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Ci0gICAg
fSwgY29udGV4dC5yZWxlYXNlKCksIG51bGxwdHIpOwotICAgIGdfc291cmNlX2F0dGFjaChzb3Vy
Y2UuZ2V0KCksIG1fbWFpbkNvbnRleHQuZ2V0KCkpOwotfQotCiBSdW5Mb29wOjpUaW1lckJhc2U6
OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiAg
ICAgLCBtX3NvdXJjZShhZG9wdEdSZWYoZ19zb3VyY2VfbmV3KCZydW5Mb29wU291cmNlRnVuY3Rp
b25zLCBzaXplb2YoR1NvdXJjZSkpKSkKQEAgLTIwMSwyMCArMTY4LDIwIEBAIHZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzZXRQcmlvcml0eShpbnQKIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6
OnVwZGF0ZVJlYWR5VGltZSgpCiB7Ci0gICAgaWYgKCFtX2ZpcmVJbnRlcnZhbCkgeworICAgIGlm
ICghbV9pbnRlcnZhbCkgewogICAgICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3NvdXJj
ZS5nZXQoKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBnaW50NjQgY3VycmVu
dFRpbWUgPSBnX2dldF9tb25vdG9uaWNfdGltZSgpOwotICAgIGdpbnQ2NCB0YXJnZXRUaW1lID0g
Y3VycmVudFRpbWUgKyBzdGQ6Om1pbjxnaW50NjQ+KEdfTUFYSU5UNjQgLSBjdXJyZW50VGltZSwg
bV9maXJlSW50ZXJ2YWwubWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsKKyAgICBnaW50NjQgdGFy
Z2V0VGltZSA9IGN1cnJlbnRUaW1lICsgc3RkOjptaW48Z2ludDY0PihHX01BWElOVDY0IC0gY3Vy
cmVudFRpbWUsIG1faW50ZXJ2YWwubWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsKICAgICBBU1NF
UlQodGFyZ2V0VGltZSA+PSBjdXJyZW50VGltZSk7CiAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3Rp
bWUobV9zb3VyY2UuZ2V0KCksIHRhcmdldFRpbWUpOwogfQogCi12b2lkIFJ1bkxvb3A6OlRpbWVy
QmFzZTo6c3RhcnQoU2Vjb25kcyBmaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQordm9pZCBSdW5M
b29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQogewot
ICAgIG1fZmlyZUludGVydmFsID0gZmlyZUludGVydmFsOworICAgIG1faW50ZXJ2YWwgPSBpbnRl
cnZhbDsKICAgICBtX2lzUmVwZWF0aW5nID0gcmVwZWF0OwogICAgIHVwZGF0ZVJlYWR5VGltZSgp
OwogfQpAQCAtMjIyLDcgKzE4OSw3IEBAIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChT
ZWNvbmRzIGYKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKIHsKICAgICBnX3NvdXJj
ZV9zZXRfcmVhZHlfdGltZShtX3NvdXJjZS5nZXQoKSwgLTEpOwotICAgIG1fZmlyZUludGVydmFs
ID0geyB9OworICAgIG1faW50ZXJ2YWwgPSB7IH07CiAgICAgbV9pc1JlcGVhdGluZyA9IGZhbHNl
OwogfQogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dURi93dGYvd2luL1J1bkxvb3BXaW4uY3BwCShyZXZpc2lvbiAyNjQzMTUp
CisrKyBTb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MCwxNiArMTQwLDYgQEAgUnVuTG9vcDo6Q3ljbGVSZXN1bHQgUnVuTG9vcDo6Y3ljbGUoUnVu
TAogICAgIHJldHVybiBDeWNsZVJlc3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgUnVuTG9vcDo6
ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGRlbGF5LCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24p
Ci17Ci0gICAgYXV0byB0aW1lciA9IG5ldyBEaXNwYXRjaFRpbWVyKCp0aGlzKTsKLSAgICB0aW1l
ci0+c2V0RnVuY3Rpb24oW3RpbWVyLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7Ci0g
ICAgICAgIGZ1bmN0aW9uKCk7Ci0gICAgICAgIGRlbGV0ZSB0aW1lcjsKLSAgICB9KTsKLSAgICB0
aW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKLX0KLQogLy8gUnVuTG9vcDo6VGltZXIKIAogdm9p
ZCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmlyZWQoKQpAQCAtMTgwLDE0ICsxNzAsMTQgQEAg
UnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNlKCkKICAgICBzdG9wKCk7CiB9CiAKLXZvaWQg
UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wg
cmVwZWF0KQordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgaW50ZXJ2YWws
IGJvb2wgcmVwZWF0KQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcnVuTG9vcC0+bV9sb29w
TG9jayk7CiAgICAgbV9pc1JlcGVhdGluZyA9IHJlcGVhdDsKICAgICBtX2lzQWN0aXZlID0gdHJ1
ZTsKLSAgICBtX2ludGVydmFsID0gbmV4dEZpcmVJbnRlcnZhbDsKKyAgICBtX2ludGVydmFsID0g
aW50ZXJ2YWw7CiAgICAgbV9uZXh0RmlyZURhdGUgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIG1f
aW50ZXJ2YWw7Ci0gICAgOjpTZXRUaW1lcihtX3J1bkxvb3AtPm1fcnVuTG9vcE1lc3NhZ2VXaW5k
b3csIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBuZXh0RmlyZUludGVydmFsLm1pbGxp
c2Vjb25kc0FzPFVJTlQ+KCksIG51bGxwdHIpOworICAgIDo6U2V0VGltZXIobV9ydW5Mb29wLT5t
X3J1bkxvb3BNZXNzYWdlV2luZG93LCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0aGlzKSwgaW50
ZXJ2YWwubWlsbGlzZWNvbmRzQXM8VUlOVD4oKSwgbnVsbHB0cik7CiB9CiAKIHZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzdG9wKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1Myw3IEBAIERvY3Vt
ZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXMKICAgICAsIG1fcmVxdWVzdChyZXF1
ZXN0KQogICAgICwgbV9vcmlnaW5hbFN1YnN0aXR1dGVEYXRhV2FzVmFsaWQoc3Vic3RpdHV0ZURh
dGEuaXNWYWxpZCgpKQogICAgICwgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyKCp0
aGlzLCAmRG9jdW1lbnRMb2FkZXI6OnN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXJGaXJl
ZCkKLSAgICAsIG1fZGF0YUxvYWRUaW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVyOjpoYW5kbGVT
dWJzdGl0dXRlRGF0YUxvYWROb3cpCisgICAgLCBtX2RhdGFMb2FkVGltZXIoUnVuTG9vcDo6Y3Vy
cmVudCgpLCB0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5v
dykKICAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3QobWFrZVVuaXF1ZTxBcHBsaWNhdGlvbkNh
Y2hlSG9zdD4oKnRoaXMpKQogewogfQpAQCAtNDk0LDExICs0OTQsMTAgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdAogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFy
dERhdGFMb2FkVGltZXIoKQogeworI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorICAgIG1fZGF0
YUxvYWRUaW1lci5zdGFydE9uZVNob3QoKm1fZnJhbWUtPnBhZ2UoKS0+c2NoZWR1bGVkUnVuTG9v
cFBhaXJzKCksIDBfcyk7CisjZWxzZQogICAgIG1fZGF0YUxvYWRUaW1lci5zdGFydE9uZVNob3Qo
MF9zKTsKLQotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICBpZiAoU2NoZWR1bGVQYWlySGFz
aFNldCogc2NoZWR1bGVkUGFpcnMgPSBtX2ZyYW1lLT5wYWdlKCktPnNjaGVkdWxlZFJ1bkxvb3BQ
YWlycygpKQotICAgICAgICBtX2RhdGFMb2FkVGltZXIuc2NoZWR1bGUoKnNjaGVkdWxlZFBhaXJz
KTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
ICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCkBAIC00ODksMTEgKzQ5MCw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwogICAgIFJlc291
cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcigpIGNvbnN0OwogCi0jaWYg
SEFWRShSVU5MT09QX1RJTUVSKQotICAgIHR5cGVkZWYgUnVuTG9vcFRpbWVyPERvY3VtZW50TG9h
ZGVyPiBEb2N1bWVudExvYWRlclRpbWVyOwotI2Vsc2UKLSAgICB0eXBlZGVmIFRpbWVyIERvY3Vt
ZW50TG9hZGVyVGltZXI7Ci0jZW5kaWYKICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9h
ZE5vdygpOwogICAgIHZvaWQgc3RhcnREYXRhTG9hZFRpbWVyKCk7CiAKQEAgLTYwMCw3ICs1OTYs
NyBAQCBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVk
OwogICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxv
YWRlciB7IDAgfTsKIAotICAgIERvY3VtZW50TG9hZGVyVGltZXIgbV9kYXRhTG9hZFRpbWVyOwor
ICAgIFJ1bkxvb3A6OlRpbWVyPERvY3VtZW50TG9hZGVyPiBtX2RhdGFMb2FkVGltZXI7CiAgICAg
Ym9vbCBtX3dhaXRpbmdGb3JDb250ZW50UG9saWN5IHsgZmFsc2UgfTsKICAgICBib29sIG1fd2Fp
dGluZ0Zvck5hdmlnYXRpb25Qb2xpY3kgeyBmYWxzZSB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Niwx
MSArMjY2LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogICAgIEFTU0VS
VCh1cmwucHJvdG9jb2xJc0RhdGEoKSk7CiAKICAgICBEYXRhVVJMRGVjb2Rlcjo6U2NoZWR1bGVD
b250ZXh0IHNjaGVkdWxlQ29udGV4dDsKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0gICAgaWYg
KGF1dG8gcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBpZiAoYXV0byBzY2hlZHVs
ZWRQYWlycyA9IHBhZ2UtPnNjaGVkdWxlZFJ1bkxvb3BQYWlycygpKQotICAgICAgICAgICAgc2No
ZWR1bGVDb250ZXh0LnNjaGVkdWxlZFBhaXJzID0gKnNjaGVkdWxlZFBhaXJzOwotICAgIH0KKyNp
ZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyAgICBpZiAoYXV0byBwYWdlID0gbV9mcmFtZS0+cGFn
ZSgpKQorICAgICAgICBzY2hlZHVsZUNvbnRleHQuc2NoZWR1bGVkUGFpcnMgPSAqcGFnZS0+c2No
ZWR1bGVkUnVuTG9vcFBhaXJzKCk7CiAjZW5kaWYKICAgICBhdXRvIG1vZGUgPSBEYXRhVVJMRGVj
b2Rlcjo6TW9kZTo6TGVnYWN5OwogICAgIGlmIChtX3JlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVz
b3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6OkZldGNoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAJKHJldmlzaW9uIDI2NDMx
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05Nyw1MiArOTcsNiBAQCBwdWJsaWM6CiAgICAgUmVzdWx0IHJl
c3VsdDsKIH07CiAKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0KLWNsYXNzIERlY29kaW5nUmVz
dWx0RGlzcGF0Y2hlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWNvZGluZ1Jlc3Vs
dERpc3BhdGNoZXI+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaChzdGQ6OnVu
aXF1ZV9wdHI8RGVjb2RlVGFzaz4gZGVjb2RlVGFzaykKLSAgICB7Ci0gICAgICAgIFJlZjxEZWNv
ZGluZ1Jlc3VsdERpc3BhdGNoZXI+IGRpc3BhdGNoZXIgPSBhZG9wdFJlZigqbmV3IERlY29kaW5n
UmVzdWx0RGlzcGF0Y2hlcihXVEZNb3ZlKGRlY29kZVRhc2spKSk7Ci0gICAgICAgIGRpc3BhdGNo
ZXItPnN0YXJ0VGltZXIoKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRGVjb2RpbmdSZXN1bHRE
aXNwYXRjaGVyKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBkZWNvZGVUYXNrKQotICAgICAg
ICA6IG1fdGltZXIoKnRoaXMsICZEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI6OnRpbWVyRmlyZWQp
Ci0gICAgICAgICwgbV9kZWNvZGVUYXNrKFdURk1vdmUoZGVjb2RlVGFzaykpCi0gICAgewotICAg
IH0KLQotICAgIHZvaWQgc3RhcnRUaW1lcigpCi0gICAgewotICAgICAgICAvLyBLZWVwIGFsaXZl
IHVudGlsIHRoZSB0aW1lciBoYXMgZmlyZWQuCi0gICAgICAgIHJlZigpOwotCi0gICAgICAgIGF1
dG8gc2NoZWR1bGVkUGFpcnMgPSBtX2RlY29kZVRhc2stPnNjaGVkdWxlQ29udGV4dC5zY2hlZHVs
ZWRQYWlyczsKLSAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMF9zKTsKLSAgICAgICAgbV90
aW1lci5zY2hlZHVsZShzY2hlZHVsZWRQYWlycyk7Ci0gICAgfQotCi0gICAgdm9pZCB0aW1lckZp
cmVkKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2RlY29kZVRhc2stPnJlc3VsdC5kYXRhKQotICAg
ICAgICAgICAgbV9kZWNvZGVUYXNrLT5jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1fZGVjb2Rl
VGFzay0+cmVzdWx0KSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZGVjb2RlVGFzay0+
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKLQotICAgICAgICAvLyBFbnN1cmUgRGVjb2RlVGFzayBn
ZXRzIGRlbGV0ZWQgaW4gdGhlIG1haW4gdGhyZWFkLgotICAgICAgICBtX2RlY29kZVRhc2sgPSBu
dWxscHRyOwotCi0gICAgICAgIGRlcmVmKCk7Ci0gICAgfQotCi0gICAgUnVuTG9vcFRpbWVyPERl
Y29kaW5nUmVzdWx0RGlzcGF0Y2hlcj4gbV90aW1lcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVj
b2RlVGFzaz4gbV9kZWNvZGVUYXNrOwotfTsKLQotI2VuZGlmIC8vIEhBVkUoUlVOTE9PUF9USU1F
UikKLQogc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBjcmVhdGVEZWNvZGVUYXNr
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwg
RGVjb2RlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxEZWNvZGVUYXNrPigKQEAgLTE5NCwxNiArMTQ4LDIyIEBAIHZvaWQgZGVj
b2RlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTY2hlZHUKICAgICAgICAgICAgICAgICBkZWNvZGVF
c2NhcGVkKCpkZWNvZGVUYXNrKTsKICAgICAgICAgfQogCi0jaWYgSEFWRShSVU5MT09QX1RJTUVS
KQotICAgICAgICBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI6OmRpc3BhdGNoKFdURk1vdmUoZGVj
b2RlVGFzaykpOwotI2Vsc2UKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjb2RlVGFzayA9
IFdURk1vdmUoZGVjb2RlVGFzayldIHsKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyAgICAg
ICAgYXV0byBzY2hlZHVsZWRQYWlycyA9IGRlY29kZVRhc2stPnNjaGVkdWxlQ29udGV4dC5zY2hl
ZHVsZWRQYWlyczsKKyNlbmRpZgorCisgICAgICAgIGF1dG8gY2FsbENvbXBsZXRpb25IYW5kbGVy
ID0gW2RlY29kZVRhc2sgPSBXVEZNb3ZlKGRlY29kZVRhc2spXSB7CiAgICAgICAgICAgICBpZiAo
IWRlY29kZVRhc2stPnJlc3VsdC5kYXRhKSB7CiAgICAgICAgICAgICAgICAgZGVjb2RlVGFzay0+
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBkZWNvZGVUYXNrLT5jb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KGRlY29kZVRhc2stPnJlc3VsdCkpOwotICAgICAgICB9KTsKKyAgICAgICAgfTsKKworI2lmIFVT
RShDT0NPQV9FVkVOVF9MT09QKQorICAgICAgICBSdW5Mb29wOjpkaXNwYXRjaChzY2hlZHVsZWRQ
YWlycywgV1RGTW92ZShjYWxsQ29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbHNlCisgICAgICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZNb3ZlKGNhbGxDb21wbGV0aW9uSGFuZGxlcikpOwog
I2VuZGlmCiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0RhdGFVUkxEZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDggKzI3LDggQEAKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYg
SEFWRShSVU5MT09QX1RJTUVSKQotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wVGltZXIuaD4KKyNpZiBV
U0UoQ09DT0FfRVZFTlRfTE9PUCkKKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjZW5k
aWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNyArNDYsNyBAQCBzdHJ1Y3QgUmVzdWx0
IHsKIAogdXNpbmcgRGVjb2RlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQg
KE9wdGlvbmFsPFJlc3VsdD4pPjsKIHN0cnVjdCBTY2hlZHVsZUNvbnRleHQgewotI2lmIEhBVkUo
UlVOTE9PUF9USU1FUikKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKICAgICBTY2hlZHVsZVBh
aXJIYXNoU2V0IHNjaGVkdWxlZFBhaXJzOwogI2VuZGlmCiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404575</attachid>
            <date>2020-07-17 11:06:51 -0700</date>
            <delta_ts>2020-07-17 20:37:11 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-214340-20200717110650.patch</filename>
            <type>text/plain</type>
            <size>35281</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQzODYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA3LTE0ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIFJ1bkxv
b3AgVGltZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDM0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogd3RmL1J1bkxvb3AuaDoKKyAgICAgICAgKiB3dGYvY2YvUnVuTG9vcENGLmNwcDoK
KyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpjcmVhdGVUaW1lcik6CisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQpOgorICAgICAgICAqIHd0Zi9nbGliL1J1
bkxvb3BHTGliLmNwcDoKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjp1cGRhdGVS
ZWFkeVRpbWUpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKToKKyAgICAgICAgKiB3dGYvd2lu
L1J1bkxvb3BXaW4uY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0
KToKKwogMjAyMC0wNy0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2MjM0MSkgVVJMOjpjcmVhdGVDRlVSTCBzaG91
bGQgcHJvZHVjZSBhIENGVVJMIHRoYXQgdXNlcyBVVEYtOCB0byBkZWNvZGUgaXRzIHBlcmNlbnQt
ZW5jb2RlZCBzZXF1ZW5jZXMKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw2IEBACiAJCUEzRTRE
RDkzMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzRTRERDkxMUYzQTgwMzQwMERFRDBCNCAvKiBU
ZXh0U3RyZWFtLmNwcCAqLzsgfTsKIAkJQTNFRTVDM0EyMUZGQUM1RjAwRkFCRDYxIC8qIE9TQWxs
b2NhdG9yUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTNFRTVDMzkyMUZGQUM1RTAwRkFCRDYxIC8qIE9TQWxsb2NhdG9yUE9TSVguY3BwICov
OyB9OwogCQlBM0VFNUMzRDIxRkZBQzdEMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyQ0YuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNFRTVDM0IyMUZG
QUM3QzAwRkFCRDYxIC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLzsgfTsKLQkJQTNFRTVDM0UyMUZG
QUM3RDAwRkFCRDYxIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzRUU1QzNDMjFGRkFDN0QwMEZBQkQ2MSAvKiBSdW5M
b29wVGltZXJDRi5jcHAgKi87IH07CiAJCUEzRUU1QzQwMjFGRkFDQTIwMEZBQkQ2MSAvKiBTY2hl
ZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBM0VFNUMzRjIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovOyB9
OwogCQlBNUJBMTVGMzE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVGMjE4MjQzM0E5MDBB
ODJFNjkgLyogU3RyaW5nQ29jb2EubW0gKi87IH07CiAJCUE1QkExNUY1MTgyNDM0ODAwMEE4MkU2
OSAvKiBTdHJpbmdJbXBsQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNUJBMTVGNDE4MjQzNDgwMDBBODJFNjkgLyogU3RyaW5nSW1wbENvY29h
Lm1tICovOyB9OwpAQCAtMzEzLDcgKzMxMiw2IEBACiAJCTE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0
QSAvKiBSQU1TaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJBTVNpemUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0N0FFQzUxOEZDRTU3NzAwQjNEN0ZG
IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9uLmZy
YW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkxNDQ3QUVDQTE4RkNFNUI5
MDBCM0Q3RkYgLyogbGliaWN1Y29yZS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGli
aWN1Y29yZS5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmljdWNvcmUuZHlsaWI7IHNvdXJjZVRy
ZWUgPSAiPGFic29sdXRlPiI7IH07Ci0JCTE0Njk0MTkwMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5M
b29wVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuTG9vcFRpbWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0Njk0MTk0MTZFQUFGRjgwMDI0RTE0
NiAvKiBTY2hlZHVsZVBhaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2No
ZWR1bGVQYWlyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0Njk0MTlBMTZFQUIx
MEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQXV0b2RyYWluZWRQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0Njk0MTlCMTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b2RyYWluZWRQb29sLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUxNyw3ICs1MTUsNiBAQAogCQlBM0U0REQ5MjFGM0E4
MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZXh0U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRUU1QzM5
MjFGRkFDNUUwMEZBQkQ2MSAvKiBPU0FsbG9jYXRvclBPU0lYLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9TQWxsb2NhdG9yUE9TSVguY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBM0VFNUMzQjIxRkZBQzdDMDBGQUJENjEgLyogU2NoZWR1bGVQYWly
Q0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NoZWR1bGVQYWly
Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBM0VFNUMzQzIxRkZBQzdEMDBG
QUJENjEgLyogUnVuTG9vcFRpbWVyQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUnVuTG9vcFRpbWVyQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBM0VFNUMzRjIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2NoZWR1bGVQYWlyTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEFGRjFDMTY5RTA3MDAwODc3OTcgLyogU2Fu
ZGJveFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW5kYm94U1BJLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDk4QjAxMUMxNkE0RjkwMDA4Nzc5NyAv
KiBTZWN1cml0eVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWN1cml0
eVNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODE5LDcgKzgxNiw2IEBACiAJ
CQkJQTMzMUQ5NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8sCiAJCQkJ
QzJCQ0ZDNDExRjYxRDYxNjAwQzkyMjJDIC8qIExhbmd1YWdlQ0YuY3BwICovLAogCQkJCTJDREVE
MEVFMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAotCQkJCUEzRUU1QzNDMjFG
RkFDN0QwMEZBQkQ2MSAvKiBSdW5Mb29wVGltZXJDRi5jcHAgKi8sCiAJCQkJQTNFRTVDM0IyMUZG
QUM3QzAwRkFCRDYxIC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQkxQUZERTY0NzE5NTIw
MUMzMDBDNDhGRkEgLyogVHlwZUNhc3RzQ0YuaCAqLywKIAkJCQk1QzFGMDU5NDIxNjQzN0IzMDAz
OTMwMkMgLyogVVJMQ0YuY3BwICovLApAQCAtMTIwNSw3ICsxMjAxLDYgQEAKIAkJCQlBOEE0NzMw
NTE1MUE4MjVCMDA0MTIzRkYgLyogUmV0YWluUHRyLmggKi8sCiAJCQkJMkNERUQwRjExODExNUM4
NTAwNERCQTcwIC8qIFJ1bkxvb3AuY3BwICovLAogCQkJCTJDREVEMEYyMTgxMTVDODUwMDREQkE3
MCAvKiBSdW5Mb29wLmggKi8sCi0JCQkJMTQ2OTQxOTAxNkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxv
b3BUaW1lci5oICovLAogCQkJCTE0RjNCMEY2MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRB
cml0aG1ldGljLmggKi8sCiAJCQkJMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxl
UGFpci5oICovLAogCQkJCTFBMzUyNEFBMUQ2M0EyRkYwMDMxNzI5QiAvKiBTY29wZS5oICovLApA
QCAtMTcyNCw3ICsxNzE5LDYgQEAKIAkJCQlFMzkyRkEyNzIyRTkyQkZGMDBFQ0RDNzMgLyogUmVz
b3VyY2VVc2FnZUNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEYzMTgxMTVDODUw
MDREQkE3MCAvKiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEVGMTgxMTVD
MzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTNFRTVDM0Uy
MUZGQUM3RDAwRkFCRDYxIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFDQTg1Q0E5MjQxQjBCMjYwMDcxQzJGNSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2Nv
YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBM0VFNUMzRDIxRkZBQzdEMDBGQUJENjEgLyogU2No
ZWR1bGVQYWlyQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTVDNDAyMUZGQUNBMjAwRkFC
RDYxIC8qIFNjaGVkdWxlUGFpck1hYy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDYgQEAgc2V0KFdURl9QVUJMSUNfSEVB
REVSUwogICAgIFJlc291cmNlVXNhZ2UuaAogICAgIFJldGFpblB0ci5oCiAgICAgUnVuTG9vcC5o
Ci0gICAgUnVuTG9vcFRpbWVyLmgKICAgICBTSEExLmgKICAgICBTYXR1cmF0ZWRBcml0aG1ldGlj
LmgKICAgICBTY2hlZHVsZVBhaXIuaApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHJldmlzaW9u
IDI2NDMxNSkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MSwxMCArNjEsNiBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0jZGVmaW5l
IEhBVkVfUlVOTE9PUF9USU1FUiAxCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKICNkZWZp
bmUgSEFWRV9TRUNfS0VZQ0hBSU4gMQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFj
LmNtYWtlCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5j
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBsaXN0KEFQUEVORCBXVEZfU09V
UkNFUwogICAgIGNmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICBjZi9MYW5ndWFnZUNGLmNwcAogICAg
IGNmL1J1bkxvb3BDRi5jcHAKLSAgICBjZi9SdW5Mb29wVGltZXJDRi5jcHAKICAgICBjZi9TY2hl
ZHVsZVBhaXJDRi5jcHAKICAgICBjZi9VUkxDRi5jcHAKIApJbmRleDogU291cmNlL1dURi93dGYv
UnVuTG9vcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAJKHJl
dmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDEsNiArMTQxLDE2IEBAIHZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2goRnVuY3Rpb248
dm9pZCAoKT4KICAgICAgICAgd2FrZVVwKCk7CiB9CiAKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hB
ZnRlcihTZWNvbmRzIGRlbGF5LCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAg
YXV0byB0aW1lciA9IG5ldyBEaXNwYXRjaFRpbWVyKCp0aGlzKTsKKyAgICB0aW1lci0+c2V0RnVu
Y3Rpb24oW3RpbWVyLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7CisgICAgICAgIGZ1
bmN0aW9uKCk7CisgICAgICAgIGRlbGV0ZSB0aW1lcjsKKyAgICB9KTsKKyAgICB0aW1lci0+c3Rh
cnRPbmVTaG90KGRlbGF5KTsKK30KKwogdm9pZCBSdW5Mb29wOjpzdXNwZW5kRnVuY3Rpb25EaXNw
YXRjaEZvckN1cnJlbnRDeWNsZSgpCiB7CiAgICAgLy8gRG9uJ3Qgc3VzcGVuZCBpZiB0aGVyZSBh
cmUgYWxyZWFkeSBzdXNwZW5kZWQgZnVuY3Rpb25zIHRvIGF2b2lkIHVuZXhlY3V0ZWQgZnVuY3Rp
b24gcGlsZS11cC4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9X
VEYvd3RmL1J1bkxvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTIgQEAKIAogbmFt
ZXNwYWNlIFdURiB7CiAKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKK2NsYXNzIFNjaGVkdWxl
UGFpcjsKK3N0cnVjdCBTY2hlZHVsZVBhaXJIYXNoOwordHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxT
Y2hlZHVsZVBhaXI+LCBTY2hlZHVsZVBhaXJIYXNoPiBTY2hlZHVsZVBhaXJIYXNoU2V0OworI2Vu
ZGlmCisKICNpZiBVU0UoQ0YpCiB1c2luZyBSdW5Mb29wTW9kZSA9IENGU3RyaW5nUmVmOwogI2Rl
ZmluZSBEZWZhdWx0UnVuTG9vcE1vZGUga0NGUnVuTG9vcERlZmF1bHRNb2RlCkBAIC03Myw3ICs3
OSwxMSBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzTWFp
bigpOwogICAgIH5SdW5Mb29wKCkgZmluYWw7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihTZWNvbmRzLCBGdW5jdGlvbjx2b2lkKCk+JiYpOwor
I2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
dm9pZCBkaXNwYXRjaChjb25zdCBTY2hlZHVsZVBhaXJIYXNoU2V0JiwgRnVuY3Rpb248dm9pZCgp
PiYmKTsKKyNlbmRpZgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHJ1bigp
OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHN0b3AoKTsKQEAgLTg0LDEwICs5NCw2IEBA
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEN5Y2xlUmVzdWx0IHsgQ29udGludWUsIFN0b3AgfTsK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ3ljbGVSZXN1bHQgc3RhdGljIGN5Y2xlKFJ1bkxvb3BN
b2RlID0gRGVmYXVsdFJ1bkxvb3BNb2RlKTsKIAotI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJ1bkZvckR1cmF0aW9uKFNlY29uZHMgZHVyYXRp
b24pOwotI2VuZGlmCi0KICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBHTWFpbkNvbnRleHQqIG1haW5Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9tYWlu
Q29udGV4dC5nZXQoKTsgfQogI2VuZGlmCkBAIC0xMDIsMTAgKzEwOCw2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCByZWdpc3RlclJ1bkxvb3BNZXNzYWdlV2luZG93Q2xhc3MoKTsKICNlbmRp
ZgogCi0jaWYgIVVTRShDT0NPQV9FVkVOVF9MT09QKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGRpc3BhdGNoQWZ0ZXIoU2Vjb25kcywgRnVuY3Rpb248dm9pZCgpPiYmKTsKLSNlbmRpZgot
CiAgICAgY2xhc3MgVGltZXJCYXNlIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBSdW5Mb29wOwpAQCAtMTEzLDggKzExNSw4IEBAIHB1Ymxp
YzoKICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFRpbWVyQmFzZShSdW5Mb29w
Jik7CiAgICAgICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5UaW1lckJhc2UoKTsKIAot
ICAgICAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwpIHsgc3Rh
cnRJbnRlcm5hbChyZXBlYXRJbnRlcnZhbCwgdHJ1ZSk7IH0KLSAgICAgICAgdm9pZCBzdGFydE9u
ZVNob3QoU2Vjb25kcyBpbnRlcnZhbCkgeyBzdGFydEludGVybmFsKGludGVydmFsLCBmYWxzZSk7
IH0KKyAgICAgICAgdm9pZCBzdGFydFJlcGVhdGluZyhTZWNvbmRzIGludGVydmFsKSB7IHN0YXJ0
KHN0ZDo6bWF4KGludGVydmFsLCAwX3MpLCB0cnVlKTsgfQorICAgICAgICB2b2lkIHN0YXJ0T25l
U2hvdChTZWNvbmRzIGludGVydmFsKSB7IHN0YXJ0KHN0ZDo6bWF4KGludGVydmFsLCAwX3MpLCBm
YWxzZSk7IH0KIAogICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wKCk7CiAgICAg
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGlzQWN0aXZlKCkgY29uc3Q7CkBAIC0xMjgsMTIg
KzEzMCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBz
dGFydEludGVybmFsKFNlY29uZHMgbmV4dEZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXJ0KHN0ZDo6bWF4KG5leHRGaXJlSW50ZXJ2YWwsIDBfcyks
IHJlcGVhdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBz
dGFydChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KTsKKyAgICAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnQoU2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQp
OwogCiAgICAgICAgIFJlZjxSdW5Mb29wPiBtX3J1bkxvb3A7CiAKQEAgLTE0NSwxMyArMTQyLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nIHsgZmFsc2UgfTsKICAgICAg
ICAgYm9vbCBtX2lzQWN0aXZlIHsgZmFsc2UgfTsKICNlbGlmIFVTRShDT0NPQV9FVkVOVF9MT09Q
KQotICAgICAgICBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lk
Kik7CiAgICAgICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gbV90aW1lcjsKICNlbGlm
IFVTRShHTElCX0VWRU5UX0xPT1ApCiAgICAgICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCk7CiAg
ICAgICAgIEdSZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVh
dGluZyB7IGZhbHNlIH07Ci0gICAgICAgIFNlY29uZHMgbV9maXJlSW50ZXJ2YWwgeyAwIH07Cisg
ICAgICAgIFNlY29uZHMgbV9pbnRlcnZhbCB7IDAgfTsKICNlbGlmIFVTRShHRU5FUklDX0VWRU5U
X0xPT1ApCiAgICAgICAgIGJvb2wgaXNBY3RpdmUoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBjb25z
dDsKICAgICAgICAgdm9pZCBzdG9wKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CkBAIC0xODIsNyAr
MTc4LDkgQEAgcHVibGljOgogICAgICAgICBUaW1lckZpcmVkQ2xhc3MqIG1fb2JqZWN0OwogICAg
IH07CiAKLSNpZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorcHJpdmF0ZToKKyAgICBjbGFzcyBI
b2xkZXI7CisKICAgICBjbGFzcyBEaXNwYXRjaFRpbWVyIGZpbmFsIDogcHVibGljIFRpbWVyQmFz
ZSB7CiAgICAgcHVibGljOgogICAgICAgICBEaXNwYXRjaFRpbWVyKFJ1bkxvb3AmIHJ1bkxvb3Ap
CkBAIC0xOTksMTEgKzE5Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBGdW5jdGlvbjx2b2lkKCk+
IG1fZnVuY3Rpb247CiAgICAgfTsKLSNlbmRpZgogCi0gICAgY2xhc3MgSG9sZGVyOwotCi1wcml2
YXRlOgogICAgIFJ1bkxvb3AoKTsKIAogICAgIHZvaWQgcGVyZm9ybVdvcmsoKTsKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL1J1bkxvb3BUaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3Rm
L1J1bkxvb3BUaW1lci5oCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5M
b29wVGltZXIuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
IDx3dGYvU2NoZWR1bGVQYWlyLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KLQotI2lmIFVT
RShDRikKLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLS8vIFRpbWUgaW50ZXJ2YWxzIGFyZSBhbGwgaW4gc2Vjb25kcy4KLQotY2xhc3MgUnVu
TG9vcFRpbWVyQmFzZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVuTG9vcFRpbWVyQmFz
ZSk7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIFJ1bkxvb3BUaW1lckJhc2UoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdmly
dHVhbCB+UnVuTG9vcFRpbWVyQmFzZSgpOwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2NoZWR1bGUoY29uc3QgU2NoZWR1bGVQYWlyKik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgc2NoZWR1bGUoY29uc3QgU2NoZWR1bGVQYWlySGFzaFNldCYpOwotCi0gICAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgc3RhcnQoU2Vjb25kcyBuZXh0RmlyZUludGVydmFsLCBTZWNvbmRzIHJl
cGVhdEludGVydmFsKTsKLQotICAgIHZvaWQgc3RhcnRSZXBlYXRpbmcoU2Vjb25kcyByZXBlYXRJ
bnRlcnZhbCkgeyBzdGFydChyZXBlYXRJbnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOyB9Ci0gICAg
dm9pZCBzdGFydE9uZVNob3QoU2Vjb25kcyBpbnRlcnZhbCkgeyBzdGFydChpbnRlcnZhbCwgMF9z
KTsgfQotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwotICAgIGJvb2wgaXNB
Y3RpdmUoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKLQotcHJpdmF0
ZToKLSNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiBtX3RpbWVy
OwotI2VuZGlmCi19OwotCi0vLyBGSVhNRTogVGhpcyBkb2Vzbid0IGhhdmUgdG8gYmUgYSBjbGFz
cyB0ZW1wbGF0ZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUaW1lckZpcmVkQ2xhc3M+IGNsYXNzIFJ1
bkxvb3BUaW1lciA6IHB1YmxpYyBSdW5Mb29wVGltZXJCYXNlIHsKLXB1YmxpYzoKLSAgICB0eXBl
ZGVmIHZvaWQgKFRpbWVyRmlyZWRDbGFzczo6KlRpbWVyRmlyZWRGdW5jdGlvbikoKTsKLQotICAg
IFJ1bkxvb3BUaW1lcihUaW1lckZpcmVkQ2xhc3MmIG8sIFRpbWVyRmlyZWRGdW5jdGlvbiBmKQot
ICAgICAgICA6IG1fb2JqZWN0KCZvKSwgbV9mdW5jdGlvbihmKSB7IH0KLQotICAgIHZpcnR1YWwg
dm9pZCBmaXJlZCgpIHsgKG1fb2JqZWN0LT4qbV9mdW5jdGlvbikoKTsgfQotCi1wcml2YXRlOgot
ICAgIFRpbWVyRmlyZWRDbGFzcyogbV9vYmplY3Q7Ci0gICAgVGltZXJGaXJlZEZ1bmN0aW9uIG1f
ZnVuY3Rpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpSdW5Mb29w
VGltZXI7CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wVGltZXIu
aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZl
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2Nm
L1J1bkxvb3BDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENG
LmNwcAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksMTcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRh
dGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAj
aW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgorI2luY2x1ZGUgPHd0Zi9TY2hlZHVsZVBh
aXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGlt
ZXJSZWY+IGNyZWF0ZVRpbWVyKFNlY29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0LCB2b2lkKCp0
aW1lckZpcmVkKShDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopLCB2b2lkKiBpbmZvKQoreworICAg
IENGUnVuTG9vcFRpbWVyQ29udGV4dCBjb250ZXh0ID0geyAwLCBpbmZvLCAwLCAwLCAwIH07Cisg
ICAgU2Vjb25kcyByZXBlYXRJbnRlcnZhbCA9IHJlcGVhdCA/IGludGVydmFsIDogMF9zOworICAg
IHJldHVybiBhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2YWwuc2Vjb25kcygpLCByZXBlYXRJ
bnRlcnZhbC5zZWNvbmRzKCksIDAsIDAsIHRpbWVyRmlyZWQsICZjb250ZXh0KSk7Cit9CisKIHZv
aWQgUnVuTG9vcDo6cGVyZm9ybVdvcmsodm9pZCogY29udGV4dCkKIHsKICAgICBBdXRvZHJhaW5l
ZFBvb2wgcG9vbDsKQEAgLTUxLDExICs1OSw2IEBAIFJ1bkxvb3A6On5SdW5Mb29wKCkKICAgICBD
RlJ1bkxvb3BTb3VyY2VJbnZhbGlkYXRlKG1fcnVuTG9vcFNvdXJjZS5nZXQoKSk7CiB9CiAKLXZv
aWQgUnVuTG9vcDo6cnVuRm9yRHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbikKLXsKLSAgICBDRlJ1
bkxvb3BSdW5Jbk1vZGUoa0NGUnVuTG9vcERlZmF1bHRNb2RlLCBkdXJhdGlvbi5zZWNvbmRzKCks
IHRydWUpOwotfQotCiB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiB7CiAgICAgQ0ZSdW5Mb29wU291
cmNlU2lnbmFsKG1fcnVuTG9vcFNvdXJjZS5nZXQoKSk7CkBAIC04MSwyMCArODQsMjMgQEAgdm9p
ZCBSdW5Mb29wOjpzdG9wKCkKICAgICBDRlJ1bkxvb3BTdG9wKG1fcnVuTG9vcC5nZXQoKSk7CiB9
CiAKLS8vIFJ1bkxvb3A6OlRpbWVyCi0KLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjp0aW1lckZp
cmVkKENGUnVuTG9vcFRpbWVyUmVmIGNmVGltZXIsIHZvaWQqIGNvbnRleHQpCit2b2lkIFJ1bkxv
b3A6OmRpc3BhdGNoKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmIHNjaGVkdWxlUGFpcnMsIEZ1
bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBUaW1lckJhc2UqIHRpbWVyID0gc3Rh
dGljX2Nhc3Q8VGltZXJCYXNlKj4oY29udGV4dCk7CisgICAgYXV0byB0aW1lciA9IGNyZWF0ZVRp
bWVyKDBfcywgZmFsc2UsIFtdIChDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgdm9pZCogY29udGV4
dCkgeworICAgICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKIAotICAgIEF1dG9kcmFpbmVkUG9v
bCBwb29sOworICAgICAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUodGltZXIpOwogCi0gICAg
aWYgKCFDRlJ1bkxvb3BUaW1lckRvZXNSZXBlYXQoY2ZUaW1lcikpCi0gICAgICAgIHRpbWVyLT5z
dG9wKCk7CisgICAgICAgIEZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24oc3RhdGljX2Nhc3Q8RnVu
Y3Rpb248dm9pZCgpPjo6SW1wbCo+KGNvbnRleHQpKTsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAg
ICB9LCBmdW5jdGlvbi5sZWFrSW1wbCgpKTsKIAotICAgIHRpbWVyLT5maXJlZCgpOworICAgIGZv
ciAoYXV0byYgc2NoZWR1bGVQYWlyIDogc2NoZWR1bGVQYWlycykKKyAgICAgICAgQ0ZSdW5Mb29w
QWRkVGltZXIoc2NoZWR1bGVQYWlyLT5ydW5Mb29wKCksIHRpbWVyLmdldCgpLCBzY2hlZHVsZVBh
aXItPm1vZGUoKSk7CiB9CiAKKy8vIFJ1bkxvb3A6OlRpbWVyCisKIFJ1bkxvb3A6OlRpbWVyQmFz
ZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCiAgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkK
IHsKQEAgLTEwNSwxNCArMTExLDIwIEBAIFJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSgp
CiAgICAgc3RvcCgpOwogfQogCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoU2Vjb25k
cyBuZXh0RmlyZUludGVydmFsLCBib29sIHJlcGVhdCkKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNl
OjpzdGFydChTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCkKIHsKICAgICBpZiAobV90aW1l
cikKICAgICAgICAgc3RvcCgpOwotICAgIAotICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBjb250
ZXh0ID0geyAwLCB0aGlzLCAwLCAwLCAwIH07Ci0gICAgU2Vjb25kcyByZXBlYXRJbnRlcnZhbCA9
IHJlcGVhdCA/IG5leHRGaXJlSW50ZXJ2YWwgOiAwX3M7Ci0gICAgbV90aW1lciA9IGFkb3B0Q0Yo
Q0ZSdW5Mb29wVGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVH
ZXRDdXJyZW50KCkgKyBuZXh0RmlyZUludGVydmFsLnNlY29uZHMoKSwgcmVwZWF0SW50ZXJ2YWwu
c2Vjb25kcygpLCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOworCisgICAgbV90aW1lciA9
IGNyZWF0ZVRpbWVyKGludGVydmFsLCByZXBlYXQsIFtdIChDRlJ1bkxvb3BUaW1lclJlZiBjZlRp
bWVyLCB2b2lkKiBjb250ZXh0KSB7CisgICAgICAgIEF1dG9kcmFpbmVkUG9vbCBwb29sOworCisg
ICAgICAgIFRpbWVyQmFzZSogdGltZXIgPSBzdGF0aWNfY2FzdDxUaW1lckJhc2UqPihjb250ZXh0
KTsKKyAgICAgICAgaWYgKCFDRlJ1bkxvb3BUaW1lckRvZXNSZXBlYXQoY2ZUaW1lcikpCisgICAg
ICAgICAgICB0aW1lci0+c3RvcCgpOworCisgICAgICAgIHRpbWVyLT5maXJlZCgpOworICAgIH0s
IHRoaXMpOwogICAgIENGUnVuTG9vcEFkZFRpbWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wLmdldCgp
LCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV1RGL3d0Zi9jZi9SdW5Mb29wVGltZXJDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvY2YvUnVuTG9vcFRpbWVyQ0YuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9jZi9SdW5Mb29wVGltZXJDRi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFJVTkxP
T1BfVElNRVIpCi0KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcFRpbWVyLmg+Ci0KLSNpbmNsdWRlIDx3
dGYvQXV0b2RyYWluZWRQb29sLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1SdW5Mb29wVGltZXJC
YXNlOjpSdW5Mb29wVGltZXJCYXNlKCkgPSBkZWZhdWx0OwotCi1SdW5Mb29wVGltZXJCYXNlOjp+
UnVuTG9vcFRpbWVyQmFzZSgpCi17Ci0gICAgc3RvcCgpOwotfQotCi1zdGF0aWMgdm9pZCB0aW1l
ckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKiBjb250ZXh0KQotewotICAgIC8vIENGUnVu
TG9vcFRpbWVyIGRvZXMgbm90IGNyZWF0ZSBhbiBOU0F1dG9yZWxlYXNlUG9vbCwgbGlrZSBOU1Rp
bWVyIGRvZXMuIFRoaXMgY2FuIGxlYWQgdG8KLSAgICAvLyBhdXRvcmVsZWFzZWQgb2JqZWN0cyBi
ZWluZyBwdXNoZWQgaW50byBOU0F1dG9yZWxlYXNlUG9vbHMgdW5kZXJuZWF0aCB0aGUgcnVuIGxv
b3AsIHdoaWNoCi0gICAgLy8gYXJlIHZlcnkgaW5mcmVxdWVudGx5IGRyYWluZWQuIENyZWF0ZSBh
IG5ldyBhdXRvcmVsZWFzZSBwb29sIGhlcmUgdG8gZ2l2ZSBhdXRvcmVsZWFzZWQgb2JqZWN0cwot
ICAgIC8vIGEgcGxhY2UgdG8gY29sbGVjdC4KLSAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKLSAg
ICBSdW5Mb29wVGltZXJCYXNlKiB0aW1lciA9IHN0YXRpY19jYXN0PFJ1bkxvb3BUaW1lckJhc2Uq
Pihjb250ZXh0KTsKLSAgICB0aW1lci0+ZmlyZWQoKTsKLX0KLQotdm9pZCBSdW5Mb29wVGltZXJC
YXNlOjpzdGFydChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIFNlY29uZHMgcmVwZWF0SW50ZXJ2
YWwpCi17Ci0gICAgaWYgKG1fdGltZXIpCi0gICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0
ZShtX3RpbWVyLmdldCgpKTsKLSAgICBDRlJ1bkxvb3BUaW1lckNvbnRleHQgY29udGV4dCA9IHsg
MCwgdGhpcywgMCwgMCwgMCB9OwotICAgIG1fdGltZXIgPSBhZG9wdENGKENGUnVuTG9vcFRpbWVy
Q3JlYXRlKDAsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgbmV4dEZpcmVJbnRlcnZhbC5z
ZWNvbmRzKCksIHJlcGVhdEludGVydmFsLnNlY29uZHMoKSwgMCwgMCwgdGltZXJGaXJlZCwgJmNv
bnRleHQpKTsKLX0KLQotdm9pZCBSdW5Mb29wVGltZXJCYXNlOjpzY2hlZHVsZShjb25zdCBTY2hl
ZHVsZVBhaXIqIHNjaGVkdWxlUGFpcikKLXsKLSAgICBBU1NFUlRfQVJHKHNjaGVkdWxlUGFpciwg
c2NoZWR1bGVQYWlyKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fdGltZXIsICJUaW1lciBt
dXN0IGhhdmUgb25lIG9mIHRoZSBzdGFydCBmdW5jdGlvbnMgY2FsbGVkIGJlZm9yZSBjYWxsaW5n
IHNjaGVkdWxlKCkuIik7Ci0gICAgQ0ZSdW5Mb29wQWRkVGltZXIoc2NoZWR1bGVQYWlyLT5ydW5M
b29wKCksIG1fdGltZXIuZ2V0KCksIHNjaGVkdWxlUGFpci0+bW9kZSgpKTsKLX0KLQotdm9pZCBS
dW5Mb29wVGltZXJCYXNlOjpzY2hlZHVsZShjb25zdCBTY2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hl
ZHVsZVBhaXJzKQotewotICAgIFNjaGVkdWxlUGFpckhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IHNjaGVkdWxlUGFpcnMuZW5kKCk7Ci0gICAgZm9yIChTY2hlZHVsZVBhaXJIYXNoU2V0Ojpj
b25zdF9pdGVyYXRvciBpdCA9IHNjaGVkdWxlUGFpcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KQotICAgICAgICBzY2hlZHVsZSgoKml0KS5nZXQoKSk7Ci19Ci0KLXZvaWQgUnVuTG9vcFRpbWVy
QmFzZTo6c3RvcCgpCi17Ci0gICAgaWYgKCFtX3RpbWVyKQotICAgICAgICByZXR1cm47Ci0gICAg
Q0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fdGltZXIuZ2V0KCkpOwotICAgIG1fdGltZXIgPSAw
OwotfQotCi1ib29sIFJ1bkxvb3BUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV90aW1lciAmJiBDRlJ1bkxvb3BUaW1lcklzVmFsaWQobV90aW1lci5nZXQoKSk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEhB
VkUoUlVOTE9PUF9USU1FUikKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XVEYvd3RmL2Nm
L1J1bkxvb3BUaW1lckNGLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMg
LTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCShyZXZpc2lvbiAyNjQz
MTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUwLDE0ICsyNTAsNiBAQCB2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlQW5kV2Fr
ZVVwKGNvbnN0IEFiCiAgICAgd2FrZVVwKGxvY2tlcik7CiB9CiAKLXZvaWQgUnVuTG9vcDo6ZGlz
cGF0Y2hBZnRlcihTZWNvbmRzIGRlbGF5LCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCi17
Ci0gICAgTG9ja0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7Ci0gICAgYm9vbCByZXBlYXRpbmcg
PSBmYWxzZTsKLSAgICBzY2hlZHVsZShsb2NrZXIsIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6
Y3JlYXRlKFdURk1vdmUoZnVuY3Rpb24pLCBkZWxheSwgcmVwZWF0aW5nKSk7Ci0gICAgd2FrZVVw
KGxvY2tlcik7Ci19Ci0KIC8vIFNpbmNlIFJ1bkxvb3AgZG9lcyBub3Qgb3duIHRoZSByZWdpc3Rl
cmVkIFRpbWVyQmFzZSwKIC8vIFRpbWVyQmFzZSBhbmQgaXRzIG93bmVyIHNob3VsZCBtYW5hZ2Ug
dGhlc2UgbGlmZXRpbWUuCiBSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBy
dW5Mb29wKQpJbmRleDogU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAJKHJldmlzaW9uIDI2
NDMxNSkKKysrIFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjksMzkgKzEyOSw2IEBAIFJ1bkxvb3A6OkN5Y2xlUmVzdWx0IFJ1bkxvb3A6OmN5
Y2xlKFJ1bkwKICAgICByZXR1cm4gQ3ljbGVSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi1jbGFzcyBE
aXNwYXRjaEFmdGVyQ29udGV4dCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0gICAgRGlzcGF0Y2hBZnRlckNvbnRleHQoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9u
KQotICAgICAgICA6IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCi0gICAgewotICAgIH0K
LQotICAgIHZvaWQgZGlzcGF0Y2goKQotICAgIHsKLSAgICAgICAgbV9mdW5jdGlvbigpOwotICAg
IH0KLQotcHJpdmF0ZToKLSAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247Ci19OwotCi12
b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rpb248dm9p
ZCgpPiYmIGZ1bmN0aW9uKQotewotICAgIEdSZWZQdHI8R1NvdXJjZT4gc291cmNlID0gYWRvcHRH
UmVmKGdfc291cmNlX25ldygmcnVuTG9vcFNvdXJjZUZ1bmN0aW9ucywgc2l6ZW9mKEdTb3VyY2Up
KSk7Ci0gICAgZ19zb3VyY2Vfc2V0X3ByaW9yaXR5KHNvdXJjZS5nZXQoKSwgUnVuTG9vcFNvdXJj
ZVByaW9yaXR5OjpSdW5Mb29wVGltZXIpOwotICAgIGdfc291cmNlX3NldF9uYW1lKHNvdXJjZS5n
ZXQoKSwgIltXZWJLaXRdIFJ1bkxvb3AgZGlzcGF0Y2hBZnRlciIpOwotICAgIGdfc291cmNlX3Nl
dF9yZWFkeV90aW1lKHNvdXJjZS5nZXQoKSwgZ19nZXRfbW9ub3RvbmljX3RpbWUoKSArIGR1cmF0
aW9uLm1pY3Jvc2Vjb25kc0FzPGdpbnQ2ND4oKSk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlz
cGF0Y2hBZnRlckNvbnRleHQ+IGNvbnRleHQgPSBtYWtlVW5pcXVlPERpc3BhdGNoQWZ0ZXJDb250
ZXh0PihXVEZNb3ZlKGZ1bmN0aW9uKSk7Ci0gICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKHNvdXJj
ZS5nZXQoKSwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0KHN0YXRpY19jYXN0PERp
c3BhdGNoQWZ0ZXJDb250ZXh0Kj4odXNlckRhdGEpKTsKLSAgICAgICAgY29udGV4dC0+ZGlzcGF0
Y2goKTsKLSAgICAgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKLSAgICB9LCBjb250ZXh0LnJl
bGVhc2UoKSwgbnVsbHB0cik7Ci0gICAgZ19zb3VyY2VfYXR0YWNoKHNvdXJjZS5nZXQoKSwgbV9t
YWluQ29udGV4dC5nZXQoKSk7Ci19Ci0KIFJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1
bkxvb3AmIHJ1bkxvb3ApCiAgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKICAgICAsIG1fc291cmNl
KGFkb3B0R1JlZihnX3NvdXJjZV9uZXcoJnJ1bkxvb3BTb3VyY2VGdW5jdGlvbnMsIHNpemVvZihH
U291cmNlKSkpKQpAQCAtMjAxLDIwICsxNjgsMjAgQEAgdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6
OnNldFByaW9yaXR5KGludAogCiB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dXBkYXRlUmVhZHlU
aW1lKCkKIHsKLSAgICBpZiAoIW1fZmlyZUludGVydmFsKSB7CisgICAgaWYgKCFtX2ludGVydmFs
KSB7CiAgICAgICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fc291cmNlLmdldCgpLCAwKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGdpbnQ2NCBjdXJyZW50VGltZSA9IGdfZ2V0
X21vbm90b25pY190aW1lKCk7Ci0gICAgZ2ludDY0IHRhcmdldFRpbWUgPSBjdXJyZW50VGltZSAr
IHN0ZDo6bWluPGdpbnQ2ND4oR19NQVhJTlQ2NCAtIGN1cnJlbnRUaW1lLCBtX2ZpcmVJbnRlcnZh
bC5taWNyb3NlY29uZHNBczxnaW50NjQ+KCkpOworICAgIGdpbnQ2NCB0YXJnZXRUaW1lID0gY3Vy
cmVudFRpbWUgKyBzdGQ6Om1pbjxnaW50NjQ+KEdfTUFYSU5UNjQgLSBjdXJyZW50VGltZSwgbV9p
bnRlcnZhbC5taWNyb3NlY29uZHNBczxnaW50NjQ+KCkpOwogICAgIEFTU0VSVCh0YXJnZXRUaW1l
ID49IGN1cnJlbnRUaW1lKTsKICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3NvdXJjZS5n
ZXQoKSwgdGFyZ2V0VGltZSk7CiB9CiAKLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChT
ZWNvbmRzIGZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFz
ZTo6c3RhcnQoU2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpCiB7Ci0gICAgbV9maXJlSW50
ZXJ2YWwgPSBmaXJlSW50ZXJ2YWw7CisgICAgbV9pbnRlcnZhbCA9IGludGVydmFsOwogICAgIG1f
aXNSZXBlYXRpbmcgPSByZXBlYXQ7CiAgICAgdXBkYXRlUmVhZHlUaW1lKCk7CiB9CkBAIC0yMjIs
NyArMTg5LDcgQEAgdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgZgogdm9p
ZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQogewogICAgIGdfc291cmNlX3NldF9yZWFkeV90
aW1lKG1fc291cmNlLmdldCgpLCAtMSk7Ci0gICAgbV9maXJlSW50ZXJ2YWwgPSB7IH07CisgICAg
bV9pbnRlcnZhbCA9IHsgfTsKICAgICBtX2lzUmVwZWF0aW5nID0gZmFsc2U7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XVEYvd3RmL3dpbi9SdW5Mb29wV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9X
VEYvd3RmL3dpbi9SdW5Mb29wV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDE2ICsxNDAs
NiBAQCBSdW5Mb29wOjpDeWNsZVJlc3VsdCBSdW5Mb29wOjpjeWNsZShSdW5MCiAgICAgcmV0dXJu
IEN5Y2xlUmVzdWx0OjpDb250aW51ZTsKIH0KIAotdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVy
KFNlY29uZHMgZGVsYXksIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKLXsKLSAgICBhdXRv
IHRpbWVyID0gbmV3IERpc3BhdGNoVGltZXIoKnRoaXMpOwotICAgIHRpbWVyLT5zZXRGdW5jdGlv
bihbdGltZXIsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKLSAgICAgICAgZnVuY3Rp
b24oKTsKLSAgICAgICAgZGVsZXRlIHRpbWVyOwotICAgIH0pOwotICAgIHRpbWVyLT5zdGFydE9u
ZVNob3QoZGVsYXkpOwotfQotCiAvLyBSdW5Mb29wOjpUaW1lcgogCiB2b2lkIFJ1bkxvb3A6OlRp
bWVyQmFzZTo6dGltZXJGaXJlZCgpCkBAIC0xODAsMTQgKzE3MCwxNCBAQCBSdW5Mb29wOjpUaW1l
ckJhc2U6On5UaW1lckJhc2UoKQogICAgIHN0b3AoKTsKIH0KIAotdm9pZCBSdW5Mb29wOjpUaW1l
ckJhc2U6OnN0YXJ0KFNlY29uZHMgbmV4dEZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit2b2lk
IFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQp
CiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9ydW5Mb29wLT5tX2xvb3BMb2NrKTsKICAgICBt
X2lzUmVwZWF0aW5nID0gcmVwZWF0OwogICAgIG1faXNBY3RpdmUgPSB0cnVlOwotICAgIG1faW50
ZXJ2YWwgPSBuZXh0RmlyZUludGVydmFsOworICAgIG1faW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAg
ICBtX25leHRGaXJlRGF0ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgbV9pbnRlcnZhbDsKLSAg
ICA6OlNldFRpbWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wTWVzc2FnZVdpbmRvdywgYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4odGhpcyksIG5leHRGaXJlSW50ZXJ2YWwubWlsbGlzZWNvbmRzQXM8VUlO
VD4oKSwgbnVsbHB0cik7CisgICAgOjpTZXRUaW1lcihtX3J1bkxvb3AtPm1fcnVuTG9vcE1lc3Nh
Z2VXaW5kb3csIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBpbnRlcnZhbC5taWxsaXNl
Y29uZHNBczxVSU5UPigpLCBudWxscHRyKTsKIH0KIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6
OnN0b3AoKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShy
ZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDYgQEAgRG9jdW1lbnRMb2FkZXI6OkRv
Y3VtZW50TG9hZGVyKGNvbnN0IFJlcwogICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCiAgICAgLCBt
X29yaWdpbmFsU3Vic3RpdHV0ZURhdGFXYXNWYWxpZChzdWJzdGl0dXRlRGF0YS5pc1ZhbGlkKCkp
CiAgICAgLCBtX3N1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXIoKnRoaXMsICZEb2N1bWVu
dExvYWRlcjo6c3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVkKQotICAgICwgbV9k
YXRhTG9hZFRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXRh
TG9hZE5vdykKICAgICAsIG1fYXBwbGljYXRpb25DYWNoZUhvc3QobWFrZVVuaXF1ZTxBcHBsaWNh
dGlvbkNhY2hlSG9zdD4oKnRoaXMpKQogewogfQpAQCAtNDkyLDE2ICs0OTEsNiBAQCB2b2lkIERv
Y3VtZW50TG9hZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0CiAgICAgcmVzcG9uc2VSZWNlaXZlZChy
ZXNwb25zZSwgbnVsbHB0cik7CiB9CiAKLXZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0RGF0YUxv
YWRUaW1lcigpCi17Ci0gICAgbV9kYXRhTG9hZFRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwotCi0j
aWYgSEFWRShSVU5MT09QX1RJTUVSKQotICAgIGlmIChTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hl
ZHVsZWRQYWlycyA9IG1fZnJhbWUtPnBhZ2UoKS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkpCi0g
ICAgICAgIG1fZGF0YUxvYWRUaW1lci5zY2hlZHVsZSgqc2NoZWR1bGVkUGFpcnMpOwotI2VuZGlm
Ci19Ci0KICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiBib29sIERvY3VtZW50TG9hZGVyOjpz
ZXRDb250cm9sbGluZ1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEmJiBkYXRhKQogewpAQCAtNzExLDggKzcwMCwyMCBAQCBib29sIERvY3VtZW50
TG9hZGVyOjp0cnlMb2FkaW5nU3Vic3RpdHV0CiAKICAgICBpZiAoIW1fZGVmZXJNYWluUmVzb3Vy
Y2VEYXRhTG9hZCB8fCBmcmFtZUxvYWRlcigpLT5sb2Fkc1N5bmNocm9ub3VzbHkoKSkKICAgICAg
ICAgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KCk7Ci0gICAgZWxzZQotICAgICAgICBzdGFy
dERhdGFMb2FkVGltZXIoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byBsb2FkRGF0YSA9IFt0
aGlzLCB3ZWFrRGF0YUxvYWRUb2tlbiA9IG1ha2VXZWFrUHRyKG1fZGF0YUxvYWRUb2tlbildIHsK
KyAgICAgICAgICAgIGlmICghd2Vha0RhdGFMb2FkVG9rZW4pCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgbV9kYXRhTG9hZFRva2VuLmNsZWFyKCk7CisgICAgICAgICAgICBo
YW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coKTsKKyAgICAgICAgfTsKKworI2lmIFVTRShDT0NP
QV9FVkVOVF9MT09QKQorICAgICAgICBSdW5Mb29wOjpkaXNwYXRjaCgqbV9mcmFtZS0+cGFnZSgp
LT5zY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSwgV1RGTW92ZShsb2FkRGF0YSkpOworI2Vsc2UKKyAg
ICAgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFdURk1vdmUobG9hZERhdGEpKTsKKyNl
bmRpZgorICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjAwNSw3ICsyMDA2LDcgQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTAogCiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiY2FuY2VsTWFpblJlc291cmNlTG9hZDogKHR5cGUgPSAlZCwgY29kZSA9
ICVkKSIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2RlKCkp
OwogCi0gICAgbV9kYXRhTG9hZFRpbWVyLnN0b3AoKTsKKyAgICBtX2RhdGFMb2FkVG9rZW4uY2xl
YXIoKTsKIAogICAgIGNhbmNlbFBvbGljeUNoZWNrSWZOZWVkZWQoKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwx
MCArNTksNiBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uTWFuaWZlc3QuaCIKICNlbmRpZgogCi0j
aWYgSEFWRShSVU5MT09QX1RJTUVSKQotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wVGltZXIuaD4KLSNl
bmRpZgotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5o
PgogI2VuZGlmCkBAIC00MjksNiArNDI1LDExIEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fZGVm
ZXJNYWluUmVzb3VyY2VEYXRhTG9hZCB7IHRydWUgfTsKIAogcHJpdmF0ZToKKyAgICBjbGFzcyBE
YXRhTG9hZFRva2VuIDogcHVibGljIENhbk1ha2VXZWFrUHRyPERhdGFMb2FkVG9rZW4+IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHZvaWQgY2xlYXIoKSB7IHdlYWtQdHJGYWN0b3J5KCkucmV2b2tl
QWxsKCk7IH0KKyAgICB9OworCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC00ODksMTMgKzQ5MCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzdG9wTG9hZGluZ0ZvclBvbGljeUNoYW5nZSgpOwogICAgIFJlc291cmNlRXJyb3Ig
aW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcigpIGNvbnN0OwogCi0jaWYgSEFWRShSVU5M
T09QX1RJTUVSKQotICAgIHR5cGVkZWYgUnVuTG9vcFRpbWVyPERvY3VtZW50TG9hZGVyPiBEb2N1
bWVudExvYWRlclRpbWVyOwotI2Vsc2UKLSAgICB0eXBlZGVmIFRpbWVyIERvY3VtZW50TG9hZGVy
VGltZXI7Ci0jZW5kaWYKICAgICB2b2lkIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdygpOwot
ICAgIHZvaWQgc3RhcnREYXRhTG9hZFRpbWVyKCk7CiAKICAgICB2b2lkIGRlbGl2ZXJTdWJzdGl0
dXRlUmVzb3VyY2VzQWZ0ZXJEZWxheSgpOwogICAgIHZvaWQgc3Vic3RpdHV0ZVJlc291cmNlRGVs
aXZlcnlUaW1lckZpcmVkKCk7CkBAIC02MDAsNyArNTk1LDcgQEAgcHJpdmF0ZToKICAgICBNb25v
dG9uaWNUaW1lIG1fdGltZU9mTGFzdERhdGFSZWNlaXZlZDsKICAgICB1bnNpZ25lZCBsb25nIG1f
aWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIgeyAwIH07CiAKLSAgICBEb2N1
bWVudExvYWRlclRpbWVyIG1fZGF0YUxvYWRUaW1lcjsKKyAgICBEYXRhTG9hZFRva2VuIG1fZGF0
YUxvYWRUb2tlbjsKICAgICBib29sIG1fd2FpdGluZ0ZvckNvbnRlbnRQb2xpY3kgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV93YWl0aW5nRm9yTmF2aWdhdGlvblBvbGljeSB7IGZhbHNlIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjY0
MzE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjY2LDExICsyNjYsOSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkRGF0
YVVSTCgpCiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzRGF0YSgpKTsKIAogICAgIERhdGFVUkxE
ZWNvZGVyOjpTY2hlZHVsZUNvbnRleHQgc2NoZWR1bGVDb250ZXh0OwotI2lmIEhBVkUoUlVOTE9P
UF9USU1FUikKLSAgICBpZiAoYXV0byBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKSB7Ci0gICAgICAg
IGlmIChhdXRvIHNjaGVkdWxlZFBhaXJzID0gcGFnZS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkp
Ci0gICAgICAgICAgICBzY2hlZHVsZUNvbnRleHQuc2NoZWR1bGVkUGFpcnMgPSAqc2NoZWR1bGVk
UGFpcnM7Ci0gICAgfQorI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorICAgIGlmIChhdXRvIHBh
Z2UgPSBtX2ZyYW1lLT5wYWdlKCkpCisgICAgICAgIHNjaGVkdWxlQ29udGV4dC5zY2hlZHVsZWRQ
YWlycyA9ICpwYWdlLT5zY2hlZHVsZWRSdW5Mb29wUGFpcnMoKTsKICNlbmRpZgogICAgIGF1dG8g
bW9kZSA9IERhdGFVUkxEZWNvZGVyOjpNb2RlOjpMZWdhY3k7CiAgICAgaWYgKG1fcmVxdWVzdC5y
ZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6RmV0Y2gpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
YXRhVVJMRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDUyICs5Nyw2IEBAIHB1Ymxp
YzoKICAgICBSZXN1bHQgcmVzdWx0OwogfTsKIAotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLQot
Y2xhc3MgRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPERlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcj4gewotcHVibGljOgotICAgIHN0YXRpYyB2b2lk
IGRpc3BhdGNoKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBkZWNvZGVUYXNrKQotICAgIHsK
LSAgICAgICAgUmVmPERlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcj4gZGlzcGF0Y2hlciA9IGFkb3B0
UmVmKCpuZXcgRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyKFdURk1vdmUoZGVjb2RlVGFzaykpKTsK
LSAgICAgICAgZGlzcGF0Y2hlci0+c3RhcnRUaW1lcigpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXIoc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IGRl
Y29kZVRhc2spCi0gICAgICAgIDogbV90aW1lcigqdGhpcywgJkRlY29kaW5nUmVzdWx0RGlzcGF0
Y2hlcjo6dGltZXJGaXJlZCkKLSAgICAgICAgLCBtX2RlY29kZVRhc2soV1RGTW92ZShkZWNvZGVU
YXNrKSkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBzdGFydFRpbWVyKCkKLSAgICB7Ci0gICAg
ICAgIC8vIEtlZXAgYWxpdmUgdW50aWwgdGhlIHRpbWVyIGhhcyBmaXJlZC4KLSAgICAgICAgcmVm
KCk7Ci0KLSAgICAgICAgYXV0byBzY2hlZHVsZWRQYWlycyA9IG1fZGVjb2RlVGFzay0+c2NoZWR1
bGVDb250ZXh0LnNjaGVkdWxlZFBhaXJzOwotICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgw
X3MpOwotICAgICAgICBtX3RpbWVyLnNjaGVkdWxlKHNjaGVkdWxlZFBhaXJzKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHRpbWVyRmlyZWQoKQotICAgIHsKLSAgICAgICAgaWYgKG1fZGVjb2RlVGFzay0+
cmVzdWx0LmRhdGEpCi0gICAgICAgICAgICBtX2RlY29kZVRhc2stPmNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUobV9kZWNvZGVUYXNrLT5yZXN1bHQpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV9kZWNvZGVUYXNrLT5jb21wbGV0aW9uSGFuZGxlcih7IH0pOwotCi0gICAgICAgIC8vIEVu
c3VyZSBEZWNvZGVUYXNrIGdldHMgZGVsZXRlZCBpbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgICAg
IG1fZGVjb2RlVGFzayA9IG51bGxwdHI7Ci0KLSAgICAgICAgZGVyZWYoKTsKLSAgICB9Ci0KLSAg
ICBSdW5Mb29wVGltZXI8RGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyPiBtX3RpbWVyOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBtX2RlY29kZVRhc2s7Ci19OwotCi0jZW5kaWYgLy8g
SEFWRShSVU5MT09QX1RJTUVSKQotCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+
IGNyZWF0ZURlY29kZVRhc2soY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjaGVkdWxlQ29udGV4dCYg
c2NoZWR1bGVDb250ZXh0LCBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPERlY29kZVRhc2s+KApAQCAtMTk0LDE2ICsx
NDgsMjIgQEAgdm9pZCBkZWNvZGUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNjaGVkdQogICAgICAg
ICAgICAgICAgIGRlY29kZUVzY2FwZWQoKmRlY29kZVRhc2spOwogICAgICAgICB9CiAKLSNpZiBI
QVZFKFJVTkxPT1BfVElNRVIpCi0gICAgICAgIERlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2goV1RGTW92ZShkZWNvZGVUYXNrKSk7Ci0jZWxzZQotICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFtkZWNvZGVUYXNrID0gV1RGTW92ZShkZWNvZGVUYXNrKV0geworI2lmIFVTRShDT0NPQV9F
VkVOVF9MT09QKQorICAgICAgICBhdXRvIHNjaGVkdWxlZFBhaXJzID0gZGVjb2RlVGFzay0+c2No
ZWR1bGVDb250ZXh0LnNjaGVkdWxlZFBhaXJzOworI2VuZGlmCisKKyAgICAgICAgYXV0byBjYWxs
Q29tcGxldGlvbkhhbmRsZXIgPSBbZGVjb2RlVGFzayA9IFdURk1vdmUoZGVjb2RlVGFzayldIHsK
ICAgICAgICAgICAgIGlmICghZGVjb2RlVGFzay0+cmVzdWx0LmRhdGEpIHsKICAgICAgICAgICAg
ICAgICBkZWNvZGVUYXNrLT5jb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlY29kZVRhc2stPmNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUoZGVjb2RlVGFzay0+cmVzdWx0KSk7Ci0gICAgICAgIH0pOworICAg
ICAgICB9OworCisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisgICAgICAgIFJ1bkxvb3A6OmRp
c3BhdGNoKHNjaGVkdWxlZFBhaXJzLCBXVEZNb3ZlKGNhbGxDb21wbGV0aW9uSGFuZGxlcikpOwor
I2Vsc2UKKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY2FsbENvbXBs
ZXRpb25IYW5kbGVyKSk7CiAjZW5kaWYKICAgICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgJKHJldmlzaW9uIDI2NDMx
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0jaW5jbHVkZSA8d3RmL1J1bkxv
b3BUaW1lci5oPgorI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQorI2luY2x1ZGUgPHd0Zi9TY2hl
ZHVsZVBhaXIuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw3ICs0Niw3
IEBAIHN0cnVjdCBSZXN1bHQgewogCiB1c2luZyBEZWNvZGVDb21wbGV0aW9uSGFuZGxlciA9IFdU
Rjo6RnVuY3Rpb248dm9pZCAoT3B0aW9uYWw8UmVzdWx0Pik+Owogc3RydWN0IFNjaGVkdWxlQ29u
dGV4dCB7Ci0jaWYgSEFWRShSVU5MT09QX1RJTUVSKQorI2lmIFVTRShDT0NPQV9FVkVOVF9MT09Q
KQogICAgIFNjaGVkdWxlUGFpckhhc2hTZXQgc2NoZWR1bGVkUGFpcnM7CiAjZW5kaWYKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404632</attachid>
            <date>2020-07-17 20:37:13 -0700</date>
            <delta_ts>2020-07-17 20:42:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214340-20200717203712.patch</filename>
            <type>text/plain</type>
            <size>38669</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQ1NDQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDIwLTA3LTE3ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIFJ1bkxv
b3AgVGltZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDM0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJ1bkxvb3A6OlRpbWVyIHdpbnMuIFJ1bkxvb3BUaW1lciBsb3Nlcy4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisgICAgICAgICogd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlOiBSZW1vdmUgUnVuTG9vcFRpbWVyLgorCisgICAgICAgICogd3RmL1J1
bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKTogV2hpbGUg
d2UncmUgaGVyZS4gbGV0J3MgbWFrZSBkaXNwYXRjaEFmdGVyCisgICAgICAgIGF2YWlsYWJsZSBv
biBhbGwgcGxhdGZvcm1zLiBXZSBoYWQgY3Jvc3MtcGxhdGZvcm0gY29kZSwgYnV0IGl0IHdhcwor
ICAgICAgICBmYWN0b3JlZCB0byBiZSBuZWVkbGVzc2x5IHBsYXRmb3JtLXNwZWNpZmljLgorCisg
ICAgICAgICogd3RmL1J1bkxvb3AuaDogQWRkZWQgYSB2ZXJzaW9uIG9mIGRpc3BhdGNoKCkgdGhh
dCBhY2NlcHRzIGEKKyAgICAgICAgU2NoZWR1bGVQYWlySGFzaFNldCBmb3IgQ29jb2EuIFJlbW92
ZWQgc29tZSBpbmRpcmVjdGlvbiBmcm9tIHRpbWVyCisgICAgICAgIHN0dWZmLCBzaW5jZSBpdCB3
YXMgY29uZnVzaW5nIG1lLiBDb25zaXN0ZW50bHkgbmFtZWQgYWxsIHRpbWUgaW50ZXJ2YWxzCisg
ICAgICAgICJpbnRlcnZhbCIuCisKKyAgICAgICAgKiB3dGYvUnVuTG9vcFRpbWVyLmg6IFJlbW92
ZWQuCisKKyAgICAgICAgKiB3dGYvY2YvUnVuTG9vcENGLmNwcDoKKyAgICAgICAgKFdURjo6Y3Jl
YXRlVGltZXIpOiBGYWN0b3JlZCBvdXQgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGRpc3BhdGNoKCkg
dG8gdXNlLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaCk6IFRoaXMgZnVuY3Rpb24g
aXMgdGhlIG1lYXQgb2YgdGhlIHBhdGguIEl0J3MKKyAgICAgICAgdGhlIG9ubHkgdW5pcXVlIGZ1
bmN0aW9uYWxpdHkgdGhhdCBSdW5Mb29wVGltZXIgdXNlZCB0byBwcm92aWRlLgorICAgICAgICAo
V1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KTogQWRvcHRlZCBoZWxwZXIgZnVuY3Rpb24u
CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OnJ1bkZvckR1cmF0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjp0aW1lckZpcmVkKTogRGVsZXRlZC4KKworICAg
ICAgICAqIHd0Zi9jZi9SdW5Mb29wVGltZXJDRi5jcHA6IFJlbW92ZWQuCisKKyAgICAgICAgKiB3
dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRp
c3BhdGNoQWZ0ZXIpOiBEZWxldGVkLiBOb3cgY3Jvc3MtcGxhdGZvcm0uCisKKyAgICAgICAgKiB3
dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHA6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFz
ZTo6dXBkYXRlUmVhZHlUaW1lKToKKyAgICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpz
dGFydCk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RvcCk6CisgICAgICAg
IChXVEY6OkRpc3BhdGNoQWZ0ZXJDb250ZXh0OjpEaXNwYXRjaEFmdGVyQ29udGV4dCk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OkRpc3BhdGNoQWZ0ZXJDb250ZXh0OjpkaXNwYXRjaCk6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6OlJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOiBEZWxldGVkLiBOb3cg
Y3Jvc3MtcGxhdGZvcm0uCisKKyAgICAgICAgKiB3dGYvd2luL1J1bkxvb3BXaW4uY3BwOgorICAg
ICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KToKKyAgICAgICAgKFdURjo6UnVu
TG9vcDo6ZGlzcGF0Y2hBZnRlcik6IERlbGV0ZWQuIE5vdyBjcm9zcy1wbGF0Zm9ybS4KKwogMjAy
MC0wNy0xNyAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAg
ICAgICBEb24ndCBpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4gaW4gU1ZHUGFyc2VyVXRp
bGl0aWVzLmgKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw2IEBACiAJCUEzRTRERDkzMUYzQTgw
MzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEEzRTRERDkxMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFt
LmNwcCAqLzsgfTsKIAkJQTNFRTVDM0EyMUZGQUM1RjAwRkFCRDYxIC8qIE9TQWxsb2NhdG9yUE9T
SVguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNF
RTVDMzkyMUZGQUM1RTAwRkFCRDYxIC8qIE9TQWxsb2NhdG9yUE9TSVguY3BwICovOyB9OwogCQlB
M0VFNUMzRDIxRkZBQzdEMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyQ0YuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNFRTVDM0IyMUZGQUM3QzAwRkFC
RDYxIC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLzsgfTsKLQkJQTNFRTVDM0UyMUZGQUM3RDAwRkFC
RDYxIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEzRUU1QzNDMjFGRkFDN0QwMEZBQkQ2MSAvKiBSdW5Mb29wVGltZXJD
Ri5jcHAgKi87IH07CiAJCUEzRUU1QzQwMjFGRkFDQTIwMEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJN
YWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0VF
NUMzRjIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovOyB9OwogCQlBNUJB
MTVGMzE4MjQzM0E5MDBBODJFNjkgLyogU3RyaW5nQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUJBMTVGMjE4MjQzM0E5MDBBODJFNjkgLyog
U3RyaW5nQ29jb2EubW0gKi87IH07CiAJCUE1QkExNUY1MTgyNDM0ODAwMEE4MkU2OSAvKiBTdHJp
bmdJbXBsQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNUJBMTVGNDE4MjQzNDgwMDBBODJFNjkgLyogU3RyaW5nSW1wbENvY29hLm1tICovOyB9
OwpAQCAtMzEzLDcgKzMxMiw2IEBACiAJCTE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1T
aXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJBTVNpemUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ0N0FFQzUxOEZDRTU3NzAwQjNEN0ZGIC8qIEZvdW5k
YXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9uLmZyYW1ld29yazsg
cGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrOyBz
b3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkxNDQ3QUVDQTE4RkNFNUI5MDBCM0Q3RkYg
LyogbGliaWN1Y29yZS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGliaWN1Y29yZS5k
eWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmljdWNvcmUuZHlsaWI7IHNvdXJjZVRyZWUgPSAiPGFi
c29sdXRlPiI7IH07Ci0JCTE0Njk0MTkwMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuTG9vcFRpbWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0Njk0MTk0MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hl
ZHVsZVBhaXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NoZWR1bGVQYWly
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0Njk0MTlBMTZFQUIxMEEwMDI0RTE0
NiAvKiBBdXRvZHJhaW5lZFBvb2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXV0b2RyYWluZWRQb29sLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0Njk0MTlC
MTZFQUIxMEEwMDI0RTE0NiAvKiBBdXRvZHJhaW5lZFBvb2wuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b2RyYWluZWRQb29sLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTUxNyw3ICs1MTUsNiBAQAogCQlBM0U0REQ5MjFGM0E4MDM0MDBERUQw
QjQgLyogVGV4dFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0
U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRUU1QzM5MjFGRkFDNUUw
MEZBQkQ2MSAvKiBPU0FsbG9jYXRvclBPU0lYLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE9TQWxsb2NhdG9yUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBM0VFNUMzQjIxRkZBQzdDMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyQ0YuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NoZWR1bGVQYWlyQ0YuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBM0VFNUMzQzIxRkZBQzdEMDBGQUJENjEgLyog
UnVuTG9vcFRpbWVyQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UnVuTG9vcFRpbWVyQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0VFNUMz
RjIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2NoZWR1bGVQYWlyTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNTA5OEFGRjFDMTY5RTA3MDAwODc3OTcgLyogU2FuZGJveFNQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW5kYm94U1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDk4QjAxMUMxNkE0RjkwMDA4Nzc5NyAvKiBTZWN1cml0
eVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZWN1cml0eVNQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODE5LDcgKzgxNiw2IEBACiAJCQkJQTMzMUQ5
NUMyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8sCiAJCQkJQzJCQ0ZDNDEx
RjYxRDYxNjAwQzkyMjJDIC8qIExhbmd1YWdlQ0YuY3BwICovLAogCQkJCTJDREVEMEVFMTgxMTVD
MzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAotCQkJCUEzRUU1QzNDMjFGRkFDN0QwMEZB
QkQ2MSAvKiBSdW5Mb29wVGltZXJDRi5jcHAgKi8sCiAJCQkJQTNFRTVDM0IyMUZGQUM3QzAwRkFC
RDYxIC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQkxQUZERTY0NzE5NTIwMUMzMDBDNDhG
RkEgLyogVHlwZUNhc3RzQ0YuaCAqLywKIAkJCQk1QzFGMDU5NDIxNjQzN0IzMDAzOTMwMkMgLyog
VVJMQ0YuY3BwICovLApAQCAtMTIwNSw3ICsxMjAxLDYgQEAKIAkJCQlBOEE0NzMwNTE1MUE4MjVC
MDA0MTIzRkYgLyogUmV0YWluUHRyLmggKi8sCiAJCQkJMkNERUQwRjExODExNUM4NTAwNERCQTcw
IC8qIFJ1bkxvb3AuY3BwICovLAogCQkJCTJDREVEMEYyMTgxMTVDODUwMDREQkE3MCAvKiBSdW5M
b29wLmggKi8sCi0JCQkJMTQ2OTQxOTAxNkVBQUY2RDAwMjRFMTQ2IC8qIFJ1bkxvb3BUaW1lci5o
ICovLAogCQkJCTE0RjNCMEY2MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGlj
LmggKi8sCiAJCQkJMTQ2OTQxOTQxNkVBQUZGODAwMjRFMTQ2IC8qIFNjaGVkdWxlUGFpci5oICov
LAogCQkJCTFBMzUyNEFBMUQ2M0EyRkYwMDMxNzI5QiAvKiBTY29wZS5oICovLApAQCAtMTcyNCw3
ICsxNzE5LDYgQEAKIAkJCQlFMzkyRkEyNzIyRTkyQkZGMDBFQ0RDNzMgLyogUmVzb3VyY2VVc2Fn
ZUNvY29hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEYzMTgxMTVDODUwMDREQkE3MCAv
KiBSdW5Mb29wLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDREVEMEVGMTgxMTVDMzgwMDREQkE3
MCAvKiBSdW5Mb29wQ0YuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQTNFRTVDM0UyMUZGQUM3RDAw
RkFCRDYxIC8qIFJ1bkxvb3BUaW1lckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQTg1Q0E5
MjQxQjBCMjYwMDcxQzJGNSAvKiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBM0VFNUMzRDIxRkZBQzdEMDBGQUJENjEgLyogU2NoZWR1bGVQYWly
Q0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTNFRTVDNDAyMUZGQUNBMjAwRkFCRDYxIC8qIFNj
aGVkdWxlUGFpck1hYy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTMsNyArMjEzLDYgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAg
IFJlc291cmNlVXNhZ2UuaAogICAgIFJldGFpblB0ci5oCiAgICAgUnVuTG9vcC5oCi0gICAgUnVu
TG9vcFRpbWVyLmgKICAgICBTSEExLmgKICAgICBTYXR1cmF0ZWRBcml0aG1ldGljLmgKICAgICBT
Y2hlZHVsZVBhaXIuaApJbmRleDogU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgJKHJldmlzaW9uIDI2NDMxNSkK
KysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSwx
MCArNjEsNiBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0jZGVmaW5lIEhBVkVfUlVO
TE9PUF9USU1FUiAxCi0jZW5kaWYKLQotI2lmIFBMQVRGT1JNKE1BQykKICNkZWZpbmUgSEFWRV9T
RUNfS0VZQ0hBSU4gMQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFj
LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtTWFjLmNtYWtlCShy
ZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAg
IGNmL0ZpbGVTeXN0ZW1DRi5jcHAKICAgICBjZi9MYW5ndWFnZUNGLmNwcAogICAgIGNmL1J1bkxv
b3BDRi5jcHAKLSAgICBjZi9SdW5Mb29wVGltZXJDRi5jcHAKICAgICBjZi9TY2hlZHVsZVBhaXJD
Ri5jcHAKICAgICBjZi9VUkxDRi5jcHAKIApJbmRleDogU291cmNlL1dURi93dGYvUnVuTG9vcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvUnVuTG9vcC5jcHAJKHJldmlzaW9uIDI2
NDMxNSkKKysrIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDEsNiArMTQxLDE2IEBAIHZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2goRnVuY3Rpb248dm9pZCAoKT4K
ICAgICAgICAgd2FrZVVwKCk7CiB9CiAKK3ZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihTZWNv
bmRzIGRlbGF5LCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCit7CisgICAgYXV0byB0aW1l
ciA9IG5ldyBEaXNwYXRjaFRpbWVyKCp0aGlzKTsKKyAgICB0aW1lci0+c2V0RnVuY3Rpb24oW3Rp
bWVyLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7CisgICAgICAgIGZ1bmN0aW9uKCk7
CisgICAgICAgIGRlbGV0ZSB0aW1lcjsKKyAgICB9KTsKKyAgICB0aW1lci0+c3RhcnRPbmVTaG90
KGRlbGF5KTsKK30KKwogdm9pZCBSdW5Mb29wOjpzdXNwZW5kRnVuY3Rpb25EaXNwYXRjaEZvckN1
cnJlbnRDeWNsZSgpCiB7CiAgICAgLy8gRG9uJ3Qgc3VzcGVuZCBpZiB0aGVyZSBhcmUgYWxyZWFk
eSBzdXNwZW5kZWQgZnVuY3Rpb25zIHRvIGF2b2lkIHVuZXhlY3V0ZWQgZnVuY3Rpb24gcGlsZS11
cC4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9SdW5Mb29wLmgJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XVEYvd3RmL1J1
bkxvb3AuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTIgQEAKIAogbmFtZXNwYWNlIFdU
RiB7CiAKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKK2NsYXNzIFNjaGVkdWxlUGFpcjsKK3N0
cnVjdCBTY2hlZHVsZVBhaXJIYXNoOwordHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxTY2hlZHVsZVBh
aXI+LCBTY2hlZHVsZVBhaXJIYXNoPiBTY2hlZHVsZVBhaXJIYXNoU2V0OworI2VuZGlmCisKICNp
ZiBVU0UoQ0YpCiB1c2luZyBSdW5Mb29wTW9kZSA9IENGU3RyaW5nUmVmOwogI2RlZmluZSBEZWZh
dWx0UnVuTG9vcE1vZGUga0NGUnVuTG9vcERlZmF1bHRNb2RlCkBAIC03Myw3ICs3OSwxMSBAQCBw
dWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBib29sIGlzTWFpbigpOwogICAg
IH5SdW5Mb29wKCkgZmluYWw7CiAKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRj
aChGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgZGlzcGF0Y2hBZnRlcihTZWNvbmRzLCBGdW5jdGlvbjx2b2lkKCk+JiYpOworI2lmIFVTRShD
T0NPQV9FVkVOVF9MT09QKQorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBkaXNw
YXRjaChjb25zdCBTY2hlZHVsZVBhaXJIYXNoU2V0JiwgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyNl
bmRpZgogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHJ1bigpOwogICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSB2b2lkIHN0b3AoKTsKQEAgLTg0LDEwICs5NCw2IEBAIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIEN5Y2xlUmVzdWx0IHsgQ29udGludWUsIFN0b3AgfTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgQ3ljbGVSZXN1bHQgc3RhdGljIGN5Y2xlKFJ1bkxvb3BNb2RlID0gRGVm
YXVsdFJ1bkxvb3BNb2RlKTsKIAotI2lmIFVTRShDT0NPQV9FVkVOVF9MT09QKQotICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIHJ1bkZvckR1cmF0aW9uKFNlY29uZHMgZHVyYXRpb24pOwotI2Vu
ZGlmCi0KICNpZiBVU0UoR0xJQl9FVkVOVF9MT09QKQogICAgIFdURl9FWFBPUlRfUFJJVkFURSBH
TWFpbkNvbnRleHQqIG1haW5Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9tYWluQ29udGV4dC5n
ZXQoKTsgfQogI2VuZGlmCkBAIC0xMDIsMTAgKzEwOCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCByZWdpc3RlclJ1bkxvb3BNZXNzYWdlV2luZG93Q2xhc3MoKTsKICNlbmRpZgogCi0jaWYg
IVVTRShDT0NPQV9FVkVOVF9MT09QKQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGRpc3Bh
dGNoQWZ0ZXIoU2Vjb25kcywgRnVuY3Rpb248dm9pZCgpPiYmKTsKLSNlbmRpZgotCiAgICAgY2xh
c3MgVGltZXJCYXNlIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBSdW5Mb29wOwpAQCAtMTEzLDggKzExNSw4IEBAIHB1YmxpYzoKICAgICAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFRpbWVyQmFzZShSdW5Mb29wJik7CiAgICAg
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5UaW1lckJhc2UoKTsKIAotICAgICAgICB2
b2lkIHN0YXJ0UmVwZWF0aW5nKFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwpIHsgc3RhcnRJbnRlcm5h
bChyZXBlYXRJbnRlcnZhbCwgdHJ1ZSk7IH0KLSAgICAgICAgdm9pZCBzdGFydE9uZVNob3QoU2Vj
b25kcyBpbnRlcnZhbCkgeyBzdGFydEludGVybmFsKGludGVydmFsLCBmYWxzZSk7IH0KKyAgICAg
ICAgdm9pZCBzdGFydFJlcGVhdGluZyhTZWNvbmRzIGludGVydmFsKSB7IHN0YXJ0KHN0ZDo6bWF4
KGludGVydmFsLCAwX3MpLCB0cnVlKTsgfQorICAgICAgICB2b2lkIHN0YXJ0T25lU2hvdChTZWNv
bmRzIGludGVydmFsKSB7IHN0YXJ0KHN0ZDo6bWF4KGludGVydmFsLCAwX3MpLCBmYWxzZSk7IH0K
IAogICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wKCk7CiAgICAgICAgIFdURl9F
WFBPUlRfUFJJVkFURSBib29sIGlzQWN0aXZlKCkgY29uc3Q7CkBAIC0xMjgsMTIgKzEzMCw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBzdGFydEludGVy
bmFsKFNlY29uZHMgbmV4dEZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXJ0KHN0ZDo6bWF4KG5leHRGaXJlSW50ZXJ2YWwsIDBfcyksIHJlcGVhdCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdGFydChTZWNv
bmRzIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KTsKKyAgICAgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZvaWQgc3RhcnQoU2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpOwogCiAgICAg
ICAgIFJlZjxSdW5Mb29wPiBtX3J1bkxvb3A7CiAKQEAgLTE0NSwxMyArMTQyLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgYm9vbCBtX2lzUmVwZWF0aW5nIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBt
X2lzQWN0aXZlIHsgZmFsc2UgfTsKICNlbGlmIFVTRShDT0NPQV9FVkVOVF9MT09QKQotICAgICAg
ICBzdGF0aWMgdm9pZCB0aW1lckZpcmVkKENGUnVuTG9vcFRpbWVyUmVmLCB2b2lkKik7CiAgICAg
ICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gbV90aW1lcjsKICNlbGlmIFVTRShHTElC
X0VWRU5UX0xPT1ApCiAgICAgICAgIHZvaWQgdXBkYXRlUmVhZHlUaW1lKCk7CiAgICAgICAgIEdS
ZWZQdHI8R1NvdXJjZT4gbV9zb3VyY2U7CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZh
bHNlIH07Ci0gICAgICAgIFNlY29uZHMgbV9maXJlSW50ZXJ2YWwgeyAwIH07CisgICAgICAgIFNl
Y29uZHMgbV9pbnRlcnZhbCB7IDAgfTsKICNlbGlmIFVTRShHRU5FUklDX0VWRU5UX0xPT1ApCiAg
ICAgICAgIGJvb2wgaXNBY3RpdmUoY29uc3QgQWJzdHJhY3RMb2NrZXImKSBjb25zdDsKICAgICAg
ICAgdm9pZCBzdG9wKGNvbnN0IEFic3RyYWN0TG9ja2VyJik7CkBAIC0xODIsNyArMTc4LDkgQEAg
cHVibGljOgogICAgICAgICBUaW1lckZpcmVkQ2xhc3MqIG1fb2JqZWN0OwogICAgIH07CiAKLSNp
ZiBVU0UoV0lORE9XU19FVkVOVF9MT09QKQorcHJpdmF0ZToKKyAgICBjbGFzcyBIb2xkZXI7CisK
ICAgICBjbGFzcyBEaXNwYXRjaFRpbWVyIGZpbmFsIDogcHVibGljIFRpbWVyQmFzZSB7CiAgICAg
cHVibGljOgogICAgICAgICBEaXNwYXRjaFRpbWVyKFJ1bkxvb3AmIHJ1bkxvb3ApCkBAIC0xOTks
MTEgKzE5Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rp
b247CiAgICAgfTsKLSNlbmRpZgogCi0gICAgY2xhc3MgSG9sZGVyOwotCi1wcml2YXRlOgogICAg
IFJ1bkxvb3AoKTsKIAogICAgIHZvaWQgcGVyZm9ybVdvcmsoKTsKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1J1bkxvb3BUaW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3BU
aW1lci5oCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wVGltZXIu
aAkobm9uZXhpc3RlbnQpCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvU2No
ZWR1bGVQYWlyLmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KLQotI2lmIFVTRShDRikKLSNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdURiB7Ci0KLS8v
IFRpbWUgaW50ZXJ2YWxzIGFyZSBhbGwgaW4gc2Vjb25kcy4KLQotY2xhc3MgUnVuTG9vcFRpbWVy
QmFzZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVuTG9vcFRpbWVyQmFzZSk7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IFJ1bkxvb3BUaW1lckJhc2UoKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+UnVu
TG9vcFRpbWVyQmFzZSgpOwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2NoZWR1bGUo
Y29uc3QgU2NoZWR1bGVQYWlyKik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc2NoZWR1
bGUoY29uc3QgU2NoZWR1bGVQYWlySGFzaFNldCYpOwotCi0gICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgc3RhcnQoU2Vjb25kcyBuZXh0RmlyZUludGVydmFsLCBTZWNvbmRzIHJlcGVhdEludGVy
dmFsKTsKLQotICAgIHZvaWQgc3RhcnRSZXBlYXRpbmcoU2Vjb25kcyByZXBlYXRJbnRlcnZhbCkg
eyBzdGFydChyZXBlYXRJbnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOyB9Ci0gICAgdm9pZCBzdGFy
dE9uZVNob3QoU2Vjb25kcyBpbnRlcnZhbCkgeyBzdGFydChpbnRlcnZhbCwgMF9zKTsgfQotCi0g
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwotICAgIGJvb2wgaXNBY3RpdmUoKSBj
b25zdDsKLQotICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpID0gMDsKLQotcHJpdmF0ZToKLSNpZiBV
U0UoQ0YpCi0gICAgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiBtX3RpbWVyOwotI2VuZGlm
Ci19OwotCi0vLyBGSVhNRTogVGhpcyBkb2Vzbid0IGhhdmUgdG8gYmUgYSBjbGFzcyB0ZW1wbGF0
ZS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUaW1lckZpcmVkQ2xhc3M+IGNsYXNzIFJ1bkxvb3BUaW1l
ciA6IHB1YmxpYyBSdW5Mb29wVGltZXJCYXNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHZvaWQg
KFRpbWVyRmlyZWRDbGFzczo6KlRpbWVyRmlyZWRGdW5jdGlvbikoKTsKLQotICAgIFJ1bkxvb3BU
aW1lcihUaW1lckZpcmVkQ2xhc3MmIG8sIFRpbWVyRmlyZWRGdW5jdGlvbiBmKQotICAgICAgICA6
IG1fb2JqZWN0KCZvKSwgbV9mdW5jdGlvbihmKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBmaXJl
ZCgpIHsgKG1fb2JqZWN0LT4qbV9mdW5jdGlvbikoKTsgfQotCi1wcml2YXRlOgotICAgIFRpbWVy
RmlyZWRDbGFzcyogbV9vYmplY3Q7Ci0gICAgVGltZXJGaXJlZEZ1bmN0aW9uIG1fZnVuY3Rpb247
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXVEYKLQotdXNpbmcgV1RGOjpSdW5Mb29wVGltZXI7CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wVGltZXIuaApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BD
Ri5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkocmV2
aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvY2YvUnVuTG9vcENGLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksOSArMjksMTcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW5jbHVkZSA8
d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgorI2luY2x1ZGUgPHd0Zi9TY2hlZHVsZVBhaXIuaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IGNy
ZWF0ZVRpbWVyKFNlY29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0LCB2b2lkKCp0aW1lckZpcmVk
KShDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopLCB2b2lkKiBpbmZvKQoreworICAgIENGUnVuTG9v
cFRpbWVyQ29udGV4dCBjb250ZXh0ID0geyAwLCBpbmZvLCAwLCAwLCAwIH07CisgICAgU2Vjb25k
cyByZXBlYXRJbnRlcnZhbCA9IHJlcGVhdCA/IGludGVydmFsIDogMF9zOworICAgIHJldHVybiBh
ZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1
dGVUaW1lR2V0Q3VycmVudCgpICsgaW50ZXJ2YWwuc2Vjb25kcygpLCByZXBlYXRJbnRlcnZhbC5z
ZWNvbmRzKCksIDAsIDAsIHRpbWVyRmlyZWQsICZjb250ZXh0KSk7Cit9CisKIHZvaWQgUnVuTG9v
cDo6cGVyZm9ybVdvcmsodm9pZCogY29udGV4dCkKIHsKICAgICBBdXRvZHJhaW5lZFBvb2wgcG9v
bDsKQEAgLTUxLDExICs1OSw2IEBAIFJ1bkxvb3A6On5SdW5Mb29wKCkKICAgICBDRlJ1bkxvb3BT
b3VyY2VJbnZhbGlkYXRlKG1fcnVuTG9vcFNvdXJjZS5nZXQoKSk7CiB9CiAKLXZvaWQgUnVuTG9v
cDo6cnVuRm9yRHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbikKLXsKLSAgICBDRlJ1bkxvb3BSdW5J
bk1vZGUoa0NGUnVuTG9vcERlZmF1bHRNb2RlLCBkdXJhdGlvbi5zZWNvbmRzKCksIHRydWUpOwot
fQotCiB2b2lkIFJ1bkxvb3A6Ondha2VVcCgpCiB7CiAgICAgQ0ZSdW5Mb29wU291cmNlU2lnbmFs
KG1fcnVuTG9vcFNvdXJjZS5nZXQoKSk7CkBAIC04MSwyMCArODQsMjMgQEAgdm9pZCBSdW5Mb29w
OjpzdG9wKCkKICAgICBDRlJ1bkxvb3BTdG9wKG1fcnVuTG9vcC5nZXQoKSk7CiB9CiAKLS8vIFJ1
bkxvb3A6OlRpbWVyCi0KLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjp0aW1lckZpcmVkKENGUnVu
TG9vcFRpbWVyUmVmIGNmVGltZXIsIHZvaWQqIGNvbnRleHQpCit2b2lkIFJ1bkxvb3A6OmRpc3Bh
dGNoKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmIHNjaGVkdWxlUGFpcnMsIEZ1bmN0aW9uPHZv
aWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBUaW1lckJhc2UqIHRpbWVyID0gc3RhdGljX2Nhc3Q8
VGltZXJCYXNlKj4oY29udGV4dCk7CisgICAgYXV0byB0aW1lciA9IGNyZWF0ZVRpbWVyKDBfcywg
ZmFsc2UsIFtdIChDRlJ1bkxvb3BUaW1lclJlZiB0aW1lciwgdm9pZCogY29udGV4dCkgeworICAg
ICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKIAotICAgIEF1dG9kcmFpbmVkUG9vbCBwb29sOwor
ICAgICAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUodGltZXIpOwogCi0gICAgaWYgKCFDRlJ1
bkxvb3BUaW1lckRvZXNSZXBlYXQoY2ZUaW1lcikpCi0gICAgICAgIHRpbWVyLT5zdG9wKCk7Cisg
ICAgICAgIEZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24oc3RhdGljX2Nhc3Q8RnVuY3Rpb248dm9p
ZCgpPjo6SW1wbCo+KGNvbnRleHQpKTsKKyAgICAgICAgZnVuY3Rpb24oKTsKKyAgICB9LCBmdW5j
dGlvbi5sZWFrSW1wbCgpKTsKIAotICAgIHRpbWVyLT5maXJlZCgpOworICAgIGZvciAoYXV0byYg
c2NoZWR1bGVQYWlyIDogc2NoZWR1bGVQYWlycykKKyAgICAgICAgQ0ZSdW5Mb29wQWRkVGltZXIo
c2NoZWR1bGVQYWlyLT5ydW5Mb29wKCksIHRpbWVyLmdldCgpLCBzY2hlZHVsZVBhaXItPm1vZGUo
KSk7CiB9CiAKKy8vIFJ1bkxvb3A6OlRpbWVyCisKIFJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJC
YXNlKFJ1bkxvb3AmIHJ1bkxvb3ApCiAgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKIHsKQEAgLTEw
NSwxNCArMTExLDIwIEBAIFJ1bkxvb3A6OlRpbWVyQmFzZTo6flRpbWVyQmFzZSgpCiAgICAgc3Rv
cCgpOwogfQogCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBuZXh0Rmly
ZUludGVydmFsLCBib29sIHJlcGVhdCkKK3ZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChT
ZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCkKIHsKICAgICBpZiAobV90aW1lcikKICAgICAg
ICAgc3RvcCgpOwotICAgIAotICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBjb250ZXh0ID0geyAw
LCB0aGlzLCAwLCAwLCAwIH07Ci0gICAgU2Vjb25kcyByZXBlYXRJbnRlcnZhbCA9IHJlcGVhdCA/
IG5leHRGaXJlSW50ZXJ2YWwgOiAwX3M7Ci0gICAgbV90aW1lciA9IGFkb3B0Q0YoQ0ZSdW5Mb29w
VGltZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50
KCkgKyBuZXh0RmlyZUludGVydmFsLnNlY29uZHMoKSwgcmVwZWF0SW50ZXJ2YWwuc2Vjb25kcygp
LCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOworCisgICAgbV90aW1lciA9IGNyZWF0ZVRp
bWVyKGludGVydmFsLCByZXBlYXQsIFtdIChDRlJ1bkxvb3BUaW1lclJlZiBjZlRpbWVyLCB2b2lk
KiBjb250ZXh0KSB7CisgICAgICAgIEF1dG9kcmFpbmVkUG9vbCBwb29sOworCisgICAgICAgIFRp
bWVyQmFzZSogdGltZXIgPSBzdGF0aWNfY2FzdDxUaW1lckJhc2UqPihjb250ZXh0KTsKKyAgICAg
ICAgaWYgKCFDRlJ1bkxvb3BUaW1lckRvZXNSZXBlYXQoY2ZUaW1lcikpCisgICAgICAgICAgICB0
aW1lci0+c3RvcCgpOworCisgICAgICAgIHRpbWVyLT5maXJlZCgpOworICAgIH0sIHRoaXMpOwog
ICAgIENGUnVuTG9vcEFkZFRpbWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wLmdldCgpLCBtX3RpbWVy
LmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwogfQogCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9jZi9SdW5Mb29wVGltZXJDRi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvY2Yv
UnVuTG9vcFRpbWVyQ0YuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9j
Zi9SdW5Mb29wVGltZXJDRi5jcHAJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLQotI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFJVTkxPT1BfVElNRVIp
Ci0KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcFRpbWVyLmg+Ci0KLSNpbmNsdWRlIDx3dGYvQXV0b2Ry
YWluZWRQb29sLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1SdW5Mb29wVGltZXJCYXNlOjpSdW5M
b29wVGltZXJCYXNlKCkgPSBkZWZhdWx0OwotCi1SdW5Mb29wVGltZXJCYXNlOjp+UnVuTG9vcFRp
bWVyQmFzZSgpCi17Ci0gICAgc3RvcCgpOwotfQotCi1zdGF0aWMgdm9pZCB0aW1lckZpcmVkKENG
UnVuTG9vcFRpbWVyUmVmLCB2b2lkKiBjb250ZXh0KQotewotICAgIC8vIENGUnVuTG9vcFRpbWVy
IGRvZXMgbm90IGNyZWF0ZSBhbiBOU0F1dG9yZWxlYXNlUG9vbCwgbGlrZSBOU1RpbWVyIGRvZXMu
IFRoaXMgY2FuIGxlYWQgdG8KLSAgICAvLyBhdXRvcmVsZWFzZWQgb2JqZWN0cyBiZWluZyBwdXNo
ZWQgaW50byBOU0F1dG9yZWxlYXNlUG9vbHMgdW5kZXJuZWF0aCB0aGUgcnVuIGxvb3AsIHdoaWNo
Ci0gICAgLy8gYXJlIHZlcnkgaW5mcmVxdWVudGx5IGRyYWluZWQuIENyZWF0ZSBhIG5ldyBhdXRv
cmVsZWFzZSBwb29sIGhlcmUgdG8gZ2l2ZSBhdXRvcmVsZWFzZWQgb2JqZWN0cwotICAgIC8vIGEg
cGxhY2UgdG8gY29sbGVjdC4KLSAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKLSAgICBSdW5Mb29w
VGltZXJCYXNlKiB0aW1lciA9IHN0YXRpY19jYXN0PFJ1bkxvb3BUaW1lckJhc2UqPihjb250ZXh0
KTsKLSAgICB0aW1lci0+ZmlyZWQoKTsKLX0KLQotdm9pZCBSdW5Mb29wVGltZXJCYXNlOjpzdGFy
dChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwpCi17Ci0g
ICAgaWYgKG1fdGltZXIpCi0gICAgICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShtX3RpbWVy
LmdldCgpKTsKLSAgICBDRlJ1bkxvb3BUaW1lckNvbnRleHQgY29udGV4dCA9IHsgMCwgdGhpcywg
MCwgMCwgMCB9OwotICAgIG1fdGltZXIgPSBhZG9wdENGKENGUnVuTG9vcFRpbWVyQ3JlYXRlKDAs
IENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpICsgbmV4dEZpcmVJbnRlcnZhbC5zZWNvbmRzKCks
IHJlcGVhdEludGVydmFsLnNlY29uZHMoKSwgMCwgMCwgdGltZXJGaXJlZCwgJmNvbnRleHQpKTsK
LX0KLQotdm9pZCBSdW5Mb29wVGltZXJCYXNlOjpzY2hlZHVsZShjb25zdCBTY2hlZHVsZVBhaXIq
IHNjaGVkdWxlUGFpcikKLXsKLSAgICBBU1NFUlRfQVJHKHNjaGVkdWxlUGFpciwgc2NoZWR1bGVQ
YWlyKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fdGltZXIsICJUaW1lciBtdXN0IGhhdmUg
b25lIG9mIHRoZSBzdGFydCBmdW5jdGlvbnMgY2FsbGVkIGJlZm9yZSBjYWxsaW5nIHNjaGVkdWxl
KCkuIik7Ci0gICAgQ0ZSdW5Mb29wQWRkVGltZXIoc2NoZWR1bGVQYWlyLT5ydW5Mb29wKCksIG1f
dGltZXIuZ2V0KCksIHNjaGVkdWxlUGFpci0+bW9kZSgpKTsKLX0KLQotdm9pZCBSdW5Mb29wVGlt
ZXJCYXNlOjpzY2hlZHVsZShjb25zdCBTY2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBhaXJz
KQotewotICAgIFNjaGVkdWxlUGFpckhhc2hTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHNjaGVk
dWxlUGFpcnMuZW5kKCk7Ci0gICAgZm9yIChTY2hlZHVsZVBhaXJIYXNoU2V0Ojpjb25zdF9pdGVy
YXRvciBpdCA9IHNjaGVkdWxlUGFpcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAg
ICBzY2hlZHVsZSgoKml0KS5nZXQoKSk7Ci19Ci0KLXZvaWQgUnVuTG9vcFRpbWVyQmFzZTo6c3Rv
cCgpCi17Ci0gICAgaWYgKCFtX3RpbWVyKQotICAgICAgICByZXR1cm47Ci0gICAgQ0ZSdW5Mb29w
VGltZXJJbnZhbGlkYXRlKG1fdGltZXIuZ2V0KCkpOwotICAgIG1fdGltZXIgPSAwOwotfQotCi1i
b29sIFJ1bkxvb3BUaW1lckJhc2U6OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90
aW1lciAmJiBDRlJ1bkxvb3BUaW1lcklzVmFsaWQobV90aW1lci5nZXQoKSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgotCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpICYmIEhBVkUoUlVOTE9P
UF9USU1FUikKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BU
aW1lckNGLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAj
IwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisrKyBT
b3VyY2UvV1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjUwLDE0ICsyNTAsNiBAQCB2b2lkIFJ1bkxvb3A6OnNjaGVkdWxlQW5kV2FrZVVwKGNvbnN0
IEFiCiAgICAgd2FrZVVwKGxvY2tlcik7CiB9CiAKLXZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRl
cihTZWNvbmRzIGRlbGF5LCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCi17Ci0gICAgTG9j
a0hvbGRlciBsb2NrZXIobV9sb29wTG9jayk7Ci0gICAgYm9vbCByZXBlYXRpbmcgPSBmYWxzZTsK
LSAgICBzY2hlZHVsZShsb2NrZXIsIFRpbWVyQmFzZTo6U2NoZWR1bGVkVGFzazo6Y3JlYXRlKFdU
Rk1vdmUoZnVuY3Rpb24pLCBkZWxheSwgcmVwZWF0aW5nKSk7Ci0gICAgd2FrZVVwKGxvY2tlcik7
Ci19Ci0KIC8vIFNpbmNlIFJ1bkxvb3AgZG9lcyBub3Qgb3duIHRoZSByZWdpc3RlcmVkIFRpbWVy
QmFzZSwKIC8vIFRpbWVyQmFzZSBhbmQgaXRzIG93bmVyIHNob3VsZCBtYW5hZ2UgdGhlc2UgbGlm
ZXRpbWUuCiBSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQpJ
bmRleDogU291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dURi93dGYvZ2xpYi9SdW5Mb29wR0xpYi5jcHAJKHJldmlzaW9uIDI2NDMxNSkKKysr
IFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjksMzkgKzEyOSw2IEBAIFJ1bkxvb3A6OkN5Y2xlUmVzdWx0IFJ1bkxvb3A6OmN5Y2xlKFJ1bkwK
ICAgICByZXR1cm4gQ3ljbGVSZXN1bHQ6OkNvbnRpbnVlOwogfQogCi1jbGFzcyBEaXNwYXRjaEFm
dGVyQ29udGV4dCB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAg
RGlzcGF0Y2hBZnRlckNvbnRleHQoRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQotICAgICAg
ICA6IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCi0gICAgewotICAgIH0KLQotICAgIHZv
aWQgZGlzcGF0Y2goKQotICAgIHsKLSAgICAgICAgbV9mdW5jdGlvbigpOwotICAgIH0KLQotcHJp
dmF0ZToKLSAgICBGdW5jdGlvbjx2b2lkKCk+IG1fZnVuY3Rpb247Ci19OwotCi12b2lkIFJ1bkxv
b3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25kcyBkdXJhdGlvbiwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1
bmN0aW9uKQotewotICAgIEdSZWZQdHI8R1NvdXJjZT4gc291cmNlID0gYWRvcHRHUmVmKGdfc291
cmNlX25ldygmcnVuTG9vcFNvdXJjZUZ1bmN0aW9ucywgc2l6ZW9mKEdTb3VyY2UpKSk7Ci0gICAg
Z19zb3VyY2Vfc2V0X3ByaW9yaXR5KHNvdXJjZS5nZXQoKSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5
OjpSdW5Mb29wVGltZXIpOwotICAgIGdfc291cmNlX3NldF9uYW1lKHNvdXJjZS5nZXQoKSwgIltX
ZWJLaXRdIFJ1bkxvb3AgZGlzcGF0Y2hBZnRlciIpOwotICAgIGdfc291cmNlX3NldF9yZWFkeV90
aW1lKHNvdXJjZS5nZXQoKSwgZ19nZXRfbW9ub3RvbmljX3RpbWUoKSArIGR1cmF0aW9uLm1pY3Jv
c2Vjb25kc0FzPGdpbnQ2ND4oKSk7Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlzcGF0Y2hBZnRl
ckNvbnRleHQ+IGNvbnRleHQgPSBtYWtlVW5pcXVlPERpc3BhdGNoQWZ0ZXJDb250ZXh0PihXVEZN
b3ZlKGZ1bmN0aW9uKSk7Ci0gICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKHNvdXJjZS5nZXQoKSwg
W10oZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0PiBjb250ZXh0KHN0YXRpY19jYXN0PERpc3BhdGNoQWZ0
ZXJDb250ZXh0Kj4odXNlckRhdGEpKTsKLSAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2goKTsKLSAg
ICAgICAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKLSAgICB9LCBjb250ZXh0LnJlbGVhc2UoKSwg
bnVsbHB0cik7Ci0gICAgZ19zb3VyY2VfYXR0YWNoKHNvdXJjZS5nZXQoKSwgbV9tYWluQ29udGV4
dC5nZXQoKSk7Ci19Ci0KIFJ1bkxvb3A6OlRpbWVyQmFzZTo6VGltZXJCYXNlKFJ1bkxvb3AmIHJ1
bkxvb3ApCiAgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKICAgICAsIG1fc291cmNlKGFkb3B0R1Jl
ZihnX3NvdXJjZV9uZXcoJnJ1bkxvb3BTb3VyY2VGdW5jdGlvbnMsIHNpemVvZihHU291cmNlKSkp
KQpAQCAtMjAxLDIwICsxNjgsMjAgQEAgdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnNldFByaW9y
aXR5KGludAogCiB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dXBkYXRlUmVhZHlUaW1lKCkKIHsK
LSAgICBpZiAoIW1fZmlyZUludGVydmFsKSB7CisgICAgaWYgKCFtX2ludGVydmFsKSB7CiAgICAg
ICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fc291cmNlLmdldCgpLCAwKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAogICAgIGdpbnQ2NCBjdXJyZW50VGltZSA9IGdfZ2V0X21vbm90b25p
Y190aW1lKCk7Ci0gICAgZ2ludDY0IHRhcmdldFRpbWUgPSBjdXJyZW50VGltZSArIHN0ZDo6bWlu
PGdpbnQ2ND4oR19NQVhJTlQ2NCAtIGN1cnJlbnRUaW1lLCBtX2ZpcmVJbnRlcnZhbC5taWNyb3Nl
Y29uZHNBczxnaW50NjQ+KCkpOworICAgIGdpbnQ2NCB0YXJnZXRUaW1lID0gY3VycmVudFRpbWUg
KyBzdGQ6Om1pbjxnaW50NjQ+KEdfTUFYSU5UNjQgLSBjdXJyZW50VGltZSwgbV9pbnRlcnZhbC5t
aWNyb3NlY29uZHNBczxnaW50NjQ+KCkpOwogICAgIEFTU0VSVCh0YXJnZXRUaW1lID49IGN1cnJl
bnRUaW1lKTsKICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3NvdXJjZS5nZXQoKSwgdGFy
Z2V0VGltZSk7CiB9CiAKLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChTZWNvbmRzIGZp
cmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQo
U2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpCiB7Ci0gICAgbV9maXJlSW50ZXJ2YWwgPSBm
aXJlSW50ZXJ2YWw7CisgICAgbV9pbnRlcnZhbCA9IGludGVydmFsOwogICAgIG1faXNSZXBlYXRp
bmcgPSByZXBlYXQ7CiAgICAgdXBkYXRlUmVhZHlUaW1lKCk7CiB9CkBAIC0yMjIsNyArMTg5LDcg
QEAgdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgZgogdm9pZCBSdW5Mb29w
OjpUaW1lckJhc2U6OnN0b3AoKQogewogICAgIGdfc291cmNlX3NldF9yZWFkeV90aW1lKG1fc291
cmNlLmdldCgpLCAtMSk7Ci0gICAgbV9maXJlSW50ZXJ2YWwgPSB7IH07CisgICAgbV9pbnRlcnZh
bCA9IHsgfTsKICAgICBtX2lzUmVwZWF0aW5nID0gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL3dpbi9SdW5Mb29wV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi93
aW4vUnVuTG9vcFdpbi5jcHAJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XVEYvd3RmL3dp
bi9SdW5Mb29wV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDE2ICsxNDAsNiBAQCBSdW5M
b29wOjpDeWNsZVJlc3VsdCBSdW5Mb29wOjpjeWNsZShSdW5MCiAgICAgcmV0dXJuIEN5Y2xlUmVz
dWx0OjpDb250aW51ZTsKIH0KIAotdm9pZCBSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMg
ZGVsYXksIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKLXsKLSAgICBhdXRvIHRpbWVyID0g
bmV3IERpc3BhdGNoVGltZXIoKnRoaXMpOwotICAgIHRpbWVyLT5zZXRGdW5jdGlvbihbdGltZXIs
IGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildIHsKLSAgICAgICAgZnVuY3Rpb24oKTsKLSAg
ICAgICAgZGVsZXRlIHRpbWVyOwotICAgIH0pOwotICAgIHRpbWVyLT5zdGFydE9uZVNob3QoZGVs
YXkpOwotfQotCiAvLyBSdW5Mb29wOjpUaW1lcgogCiB2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6
dGltZXJGaXJlZCgpCkBAIC0xODAsMTQgKzE3MCwxNCBAQCBSdW5Mb29wOjpUaW1lckJhc2U6On5U
aW1lckJhc2UoKQogICAgIHN0b3AoKTsKIH0KIAotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0
YXJ0KFNlY29uZHMgbmV4dEZpcmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit2b2lkIFJ1bkxvb3A6
OlRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpCiB7CiAgICAg
TG9ja0hvbGRlciBsb2NrZXIobV9ydW5Mb29wLT5tX2xvb3BMb2NrKTsKICAgICBtX2lzUmVwZWF0
aW5nID0gcmVwZWF0OwogICAgIG1faXNBY3RpdmUgPSB0cnVlOwotICAgIG1faW50ZXJ2YWwgPSBu
ZXh0RmlyZUludGVydmFsOworICAgIG1faW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICBtX25leHRG
aXJlRGF0ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpICsgbV9pbnRlcnZhbDsKLSAgICA6OlNldFRp
bWVyKG1fcnVuTG9vcC0+bV9ydW5Mb29wTWVzc2FnZVdpbmRvdywgYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odGhpcyksIG5leHRGaXJlSW50ZXJ2YWwubWlsbGlzZWNvbmRzQXM8VUlOVD4oKSwgbnVs
bHB0cik7CisgICAgOjpTZXRUaW1lcihtX3J1bkxvb3AtPm1fcnVuTG9vcE1lc3NhZ2VXaW5kb3cs
IGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLCBpbnRlcnZhbC5taWxsaXNlY29uZHNBczxV
SU5UPigpLCBudWxscHRyKTsKIH0KIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3AoKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjAtMDctMTcgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBUaGVyZSBzaG91bGQgYmUgb25s
eSBvbmUgUnVuTG9vcCBUaW1lciBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MzQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUnVuTG9vcDo6VGltZXIgd2lucy4gUnVuTG9vcFRpbWVyIGxvc2Vz
LgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudExvYWRlcjo6dHJ5TG9hZGluZ1N1YnN0aXR1dGVEYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdGFydERhdGFMb2FkVGltZXIpOiBEZWxldGVkLiBVc2UK
KyAgICAgICAgUnVuTG9vcDo6ZGlzcGF0Y2ggaW5zdGVhZCBvZiBhIHRpbWVyIGJlY2F1c2Ugd2Ug
aGF2ZSBubyBuZWVkIHRvIGNvbnRyb2wKKyAgICAgICAgdGhlIHRpbWUgcGVyaW9kIG9yIHRvIGZp
cmUgbW9yZSB0aGFuIG9uY2UuIFVzZSBhbiBleHBsaWNpdCB0b2tlbiBzbyB0aGF0CisgICAgICAg
IHdlIGNhbiBzdGlsbCBjYW5jZWwuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpEYXRhTG9hZFRva2VuOjpjbGVh
cik6IEFkZGVkIGFuIGV4cGxpY2l0IHRva2VuCisgICAgICAgIGNsYXNzIHRvIHdlIGNhbiBjYW5j
ZWwgYSBkYXRhIGxvYWQuCisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKTogcGFnZS0+c2No
ZWR1bGVkUnVuTG9vcFBhaXJzKCkKKyAgICAgICAgaXMgbmV2ZXIgbnVsbDsgYW5kIGlmIGl0IHdl
cmUgbnVsbCwgZGF0YSBsb2FkcyB3b3VsZCBhbHdheXMgZmFpbC4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVS
TERlY29kZXI6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVVJMRGVjb2Rlcjo6RGVj
b2RpbmdSZXN1bHREaXNwYXRjaGVyOjpkaXNwYXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEYXRhVVJMRGVjb2Rlcjo6RGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyOjpEZWNvZGluZ1Jl
c3VsdERpc3BhdGNoZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29k
ZXI6OkRlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcjo6c3RhcnRUaW1lcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEYXRhVVJMRGVjb2Rlcjo6RGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyOjp0
aW1lckZpcmVkKTogRGVsZXRlZC4KKyAgICAgICAgTm8gbmVlZCBmb3IgdHdvIGNvZGUgcGF0aHMs
IG5vdyB0aGF0IHdlIGNhbiBqdXN0IGNhbGwgUnVuTG9vcDo6ZGlzcGF0Y2guCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmg6CisKIDIwMjAtMDctMTMgIEdlb2Zm
cmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZS1s
YW5kaW5nIHIyNjQyNDIgd2l0aCBjcmFzaCBmaXhlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzLDcgKzE1
Myw2IEBAIERvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcihjb25zdCBSZXMKICAgICAsIG1f
cmVxdWVzdChyZXF1ZXN0KQogICAgICwgbV9vcmlnaW5hbFN1YnN0aXR1dGVEYXRhV2FzVmFsaWQo
c3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQogICAgICwgbV9zdWJzdGl0dXRlUmVzb3VyY2VEZWxp
dmVyeVRpbWVyKCp0aGlzLCAmRG9jdW1lbnRMb2FkZXI6OnN1YnN0aXR1dGVSZXNvdXJjZURlbGl2
ZXJ5VGltZXJGaXJlZCkKLSAgICAsIG1fZGF0YUxvYWRUaW1lcigqdGhpcywgJkRvY3VtZW50TG9h
ZGVyOjpoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3cpCiAgICAgLCBtX2FwcGxpY2F0aW9uQ2Fj
aGVIb3N0KG1ha2VVbmlxdWU8QXBwbGljYXRpb25DYWNoZUhvc3Q+KCp0aGlzKSkKIHsKIH0KQEAg
LTQ5MiwxNiArNDkxLDYgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURh
dAogICAgIHJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UsIG51bGxwdHIpOwogfQogCi12b2lkIERv
Y3VtZW50TG9hZGVyOjpzdGFydERhdGFMb2FkVGltZXIoKQotewotICAgIG1fZGF0YUxvYWRUaW1l
ci5zdGFydE9uZVNob3QoMF9zKTsKLQotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICBpZiAo
U2NoZWR1bGVQYWlySGFzaFNldCogc2NoZWR1bGVkUGFpcnMgPSBtX2ZyYW1lLT5wYWdlKCktPnNj
aGVkdWxlZFJ1bkxvb3BQYWlycygpKQotICAgICAgICBtX2RhdGFMb2FkVGltZXIuc2NoZWR1bGUo
KnNjaGVkdWxlZFBhaXJzKTsKLSNlbmRpZgotfQotCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogYm9vbCBEb2N1bWVudExvYWRlcjo6c2V0Q29udHJvbGxpbmdTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgZGF0YSkKIHsKQEAgLTcxMSw4
ICs3MDAsMjAgQEAgYm9vbCBEb2N1bWVudExvYWRlcjo6dHJ5TG9hZGluZ1N1YnN0aXR1dAogCiAg
ICAgaWYgKCFtX2RlZmVyTWFpblJlc291cmNlRGF0YUxvYWQgfHwgZnJhbWVMb2FkZXIoKS0+bG9h
ZHNTeW5jaHJvbm91c2x5KCkpCiAgICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdygp
OwotICAgIGVsc2UKLSAgICAgICAgc3RhcnREYXRhTG9hZFRpbWVyKCk7CisgICAgZWxzZSB7Cisg
ICAgICAgIGF1dG8gbG9hZERhdGEgPSBbdGhpcywgd2Vha0RhdGFMb2FkVG9rZW4gPSBtYWtlV2Vh
a1B0cihtX2RhdGFMb2FkVG9rZW4pXSB7CisgICAgICAgICAgICBpZiAoIXdlYWtEYXRhTG9hZFRv
a2VuKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fZGF0YUxvYWRUb2tl
bi5jbGVhcigpOworICAgICAgICAgICAgaGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KCk7Cisg
ICAgICAgIH07CisKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyAgICAgICAgUnVuTG9vcDo6
ZGlzcGF0Y2goKm1fZnJhbWUtPnBhZ2UoKS0+c2NoZWR1bGVkUnVuTG9vcFBhaXJzKCksIFdURk1v
dmUobG9hZERhdGEpKTsKKyNlbHNlCisgICAgICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChXVEZNb3ZlKGxvYWREYXRhKSk7CisjZW5kaWYKKyAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTIwMDUsNyArMjAwNiw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5S
ZXNvdXJjZUwKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhbmNlbE1haW5SZXNvdXJj
ZUxvYWQ6ICh0eXBlID0gJWQsIGNvZGUgPSAlZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5
cGUoKSksIGVycm9yLmVycm9yQ29kZSgpKTsKIAotICAgIG1fZGF0YUxvYWRUaW1lci5zdG9wKCk7
CisgICAgbV9kYXRhTG9hZFRva2VuLmNsZWFyKCk7CiAKICAgICBjYW5jZWxQb2xpY3lDaGVja0lm
TmVlZGVkKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShy
ZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5LDYgQEAKICNpbmNsdWRlICJBcHBsaWNhdGlv
bk1hbmlmZXN0LmgiCiAjZW5kaWYKIAotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSNpbmNsdWRl
IDx3dGYvUnVuTG9vcFRpbWVyLmg+Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2lu
Y2x1ZGUgPHd0Zi9TY2hlZHVsZVBhaXIuaD4KICNlbmRpZgpAQCAtNDI5LDYgKzQyNSwxMSBAQCBw
cm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxvYWQgeyB0cnVlIH07
CiAKIHByaXZhdGU6CisgICAgY2xhc3MgRGF0YUxvYWRUb2tlbiA6IHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxEYXRhTG9hZFRva2VuPiB7CisgICAgcHVibGljOgorICAgICAgICB2b2lkIGNsZWFyKCkg
eyB3ZWFrUHRyRmFjdG9yeSgpLnJldm9rZUFsbCgpOyB9CisgICAgfTsKKwogICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtNDg5
LDEzICs0OTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcExvYWRpbmdGb3JQb2xpY3lDaGFu
Z2UoKTsKICAgICBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3Io
KSBjb25zdDsKIAotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICB0eXBlZGVmIFJ1bkxvb3BU
aW1lcjxEb2N1bWVudExvYWRlcj4gRG9jdW1lbnRMb2FkZXJUaW1lcjsKLSNlbHNlCi0gICAgdHlw
ZWRlZiBUaW1lciBEb2N1bWVudExvYWRlclRpbWVyOwotI2VuZGlmCiAgICAgdm9pZCBoYW5kbGVT
dWJzdGl0dXRlRGF0YUxvYWROb3coKTsKLSAgICB2b2lkIHN0YXJ0RGF0YUxvYWRUaW1lcigpOwog
CiAgICAgdm9pZCBkZWxpdmVyU3Vic3RpdHV0ZVJlc291cmNlc0FmdGVyRGVsYXkoKTsKICAgICB2
b2lkIHN1YnN0aXR1dGVSZXNvdXJjZURlbGl2ZXJ5VGltZXJGaXJlZCgpOwpAQCAtNjAwLDcgKzU5
NSw3IEBAIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVPZkxhc3REYXRhUmVjZWl2
ZWQ7CiAgICAgdW5zaWduZWQgbG9uZyBtX2lkZW50aWZpZXJGb3JMb2FkV2l0aG91dFJlc291cmNl
TG9hZGVyIHsgMCB9OwogCi0gICAgRG9jdW1lbnRMb2FkZXJUaW1lciBtX2RhdGFMb2FkVGltZXI7
CisgICAgRGF0YUxvYWRUb2tlbiBtX2RhdGFMb2FkVG9rZW47CiAgICAgYm9vbCBtX3dhaXRpbmdG
b3JDb250ZW50UG9saWN5IHsgZmFsc2UgfTsKICAgICBib29sIG1fd2FpdGluZ0Zvck5hdmlnYXRp
b25Qb2xpY3kgeyBmYWxzZSB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NiwxMSArMjY2LDkgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJ
c0RhdGEoKSk7CiAKICAgICBEYXRhVVJMRGVjb2Rlcjo6U2NoZWR1bGVDb250ZXh0IHNjaGVkdWxl
Q29udGV4dDsKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0gICAgaWYgKGF1dG8gcGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICBpZiAoYXV0byBzY2hlZHVsZWRQYWlycyA9IHBhZ2Ut
PnNjaGVkdWxlZFJ1bkxvb3BQYWlycygpKQotICAgICAgICAgICAgc2NoZWR1bGVDb250ZXh0LnNj
aGVkdWxlZFBhaXJzID0gKnNjaGVkdWxlZFBhaXJzOwotICAgIH0KKyNpZiBVU0UoQ09DT0FfRVZF
TlRfTE9PUCkKKyAgICBpZiAoYXV0byBwYWdlID0gbV9mcmFtZS0+cGFnZSgpKQorICAgICAgICBz
Y2hlZHVsZUNvbnRleHQuc2NoZWR1bGVkUGFpcnMgPSAqcGFnZS0+c2NoZWR1bGVkUnVuTG9vcFBh
aXJzKCk7CiAjZW5kaWYKICAgICBhdXRvIG1vZGUgPSBEYXRhVVJMRGVjb2Rlcjo6TW9kZTo6TGVn
YWN5OwogICAgIGlmIChtX3JlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1ZXN0OjpS
ZXF1ZXN0ZXI6OkZldGNoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9E
YXRhVVJMRGVjb2Rlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Nyw1MiArOTcsNiBAQCBwdWJsaWM6CiAgICAgUmVzdWx0IHJlc3VsdDsKIH07CiAKLSNp
ZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0KLWNsYXNzIERlY29kaW5nUmVzdWx0RGlzcGF0Y2hlciA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI+IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaChzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rl
VGFzaz4gZGVjb2RlVGFzaykKLSAgICB7Ci0gICAgICAgIFJlZjxEZWNvZGluZ1Jlc3VsdERpc3Bh
dGNoZXI+IGRpc3BhdGNoZXIgPSBhZG9wdFJlZigqbmV3IERlY29kaW5nUmVzdWx0RGlzcGF0Y2hl
cihXVEZNb3ZlKGRlY29kZVRhc2spKSk7Ci0gICAgICAgIGRpc3BhdGNoZXItPnN0YXJ0VGltZXIo
KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyKHN0ZDo6
dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBkZWNvZGVUYXNrKQotICAgICAgICA6IG1fdGltZXIoKnRo
aXMsICZEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI6OnRpbWVyRmlyZWQpCi0gICAgICAgICwgbV9k
ZWNvZGVUYXNrKFdURk1vdmUoZGVjb2RlVGFzaykpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQg
c3RhcnRUaW1lcigpCi0gICAgewotICAgICAgICAvLyBLZWVwIGFsaXZlIHVudGlsIHRoZSB0aW1l
ciBoYXMgZmlyZWQuCi0gICAgICAgIHJlZigpOwotCi0gICAgICAgIGF1dG8gc2NoZWR1bGVkUGFp
cnMgPSBtX2RlY29kZVRhc2stPnNjaGVkdWxlQ29udGV4dC5zY2hlZHVsZWRQYWlyczsKLSAgICAg
ICAgbV90aW1lci5zdGFydE9uZVNob3QoMF9zKTsKLSAgICAgICAgbV90aW1lci5zY2hlZHVsZShz
Y2hlZHVsZWRQYWlycyk7Ci0gICAgfQotCi0gICAgdm9pZCB0aW1lckZpcmVkKCkKLSAgICB7Ci0g
ICAgICAgIGlmIChtX2RlY29kZVRhc2stPnJlc3VsdC5kYXRhKQotICAgICAgICAgICAgbV9kZWNv
ZGVUYXNrLT5jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1fZGVjb2RlVGFzay0+cmVzdWx0KSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZGVjb2RlVGFzay0+Y29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKLQotICAgICAgICAvLyBFbnN1cmUgRGVjb2RlVGFzayBnZXRzIGRlbGV0ZWQgaW4g
dGhlIG1haW4gdGhyZWFkLgotICAgICAgICBtX2RlY29kZVRhc2sgPSBudWxscHRyOwotCi0gICAg
ICAgIGRlcmVmKCk7Ci0gICAgfQotCi0gICAgUnVuTG9vcFRpbWVyPERlY29kaW5nUmVzdWx0RGlz
cGF0Y2hlcj4gbV90aW1lcjsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RGVjb2RlVGFzaz4gbV9kZWNv
ZGVUYXNrOwotfTsKLQotI2VuZGlmIC8vIEhBVkUoUlVOTE9PUF9USU1FUikKLQogc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxEZWNvZGVUYXNrPiBjcmVhdGVEZWNvZGVUYXNrKGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTY2hlZHVsZUNvbnRleHQmIHNjaGVkdWxlQ29udGV4dCwgRGVjb2RlQ29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxE
ZWNvZGVUYXNrPigKQEAgLTE5NCwxNiArMTQ4LDIyIEBAIHZvaWQgZGVjb2RlKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTY2hlZHUKICAgICAgICAgICAgICAgICBkZWNvZGVFc2NhcGVkKCpkZWNvZGVU
YXNrKTsKICAgICAgICAgfQogCi0jaWYgSEFWRShSVU5MT09QX1RJTUVSKQotICAgICAgICBEZWNv
ZGluZ1Jlc3VsdERpc3BhdGNoZXI6OmRpc3BhdGNoKFdURk1vdmUoZGVjb2RlVGFzaykpOwotI2Vs
c2UKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbZGVjb2RlVGFzayA9IFdURk1vdmUoZGVjb2Rl
VGFzayldIHsKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyAgICAgICAgYXV0byBzY2hlZHVs
ZWRQYWlycyA9IGRlY29kZVRhc2stPnNjaGVkdWxlQ29udGV4dC5zY2hlZHVsZWRQYWlyczsKKyNl
bmRpZgorCisgICAgICAgIGF1dG8gY2FsbENvbXBsZXRpb25IYW5kbGVyID0gW2RlY29kZVRhc2sg
PSBXVEZNb3ZlKGRlY29kZVRhc2spXSB7CiAgICAgICAgICAgICBpZiAoIWRlY29kZVRhc2stPnJl
c3VsdC5kYXRhKSB7CiAgICAgICAgICAgICAgICAgZGVjb2RlVGFzay0+Y29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBkZWNvZGVUYXNrLT5jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGRlY29kZVRhc2stPnJl
c3VsdCkpOwotICAgICAgICB9KTsKKyAgICAgICAgfTsKKworI2lmIFVTRShDT0NPQV9FVkVOVF9M
T09QKQorICAgICAgICBSdW5Mb29wOjpkaXNwYXRjaChzY2hlZHVsZWRQYWlycywgV1RGTW92ZShj
YWxsQ29tcGxldGlvbkhhbmRsZXIpKTsKKyNlbHNlCisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChXVEZNb3ZlKGNhbGxDb21wbGV0aW9uSGFuZGxlcikpOwogI2VuZGlmCiAgICAgfSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJM
RGVjb2Rlci5oCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAK
IAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYgSEFWRShSVU5MT09QX1RJ
TUVSKQotI2luY2x1ZGUgPHd0Zi9SdW5Mb29wVGltZXIuaD4KKyNpZiBVU0UoQ09DT0FfRVZFTlRf
TE9PUCkKKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDYsNyArNDYsNyBAQCBzdHJ1Y3QgUmVzdWx0IHsKIAogdXNpbmcgRGVj
b2RlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKE9wdGlvbmFsPFJlc3Vs
dD4pPjsKIHN0cnVjdCBTY2hlZHVsZUNvbnRleHQgewotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikK
KyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKICAgICBTY2hlZHVsZVBhaXJIYXNoU2V0IHNjaGVk
dWxlZFBhaXJzOwogI2VuZGlmCiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404633</attachid>
            <date>2020-07-17 20:42:03 -0700</date>
            <delta_ts>2022-02-28 03:35:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214340-20200717204202.patch</filename>
            <type>text/plain</type>
            <size>38670</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQ1NDQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDIwLTA3LTE3ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIFJ1bkxv
b3AgVGltZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDM0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJ1bkxvb3A6OlRpbWVyIHdpbnMuIFJ1bkxvb3BUaW1lciBsb3Nlcy4KKworICAgICAg
ICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisgICAgICAgICogd3RmL1Bs
YXRmb3JtTWFjLmNtYWtlOiBSZW1vdmUgUnVuTG9vcFRpbWVyLgorCisgICAgICAgICogd3RmL1J1
bkxvb3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKTogV2hpbGUg
d2UncmUgaGVyZS4gbGV0J3MgbWFrZSBkaXNwYXRjaEFmdGVyCisgICAgICAgIGF2YWlsYWJsZSBv
biBhbGwgcGxhdGZvcm1zLiBXZSBoYWQgY3Jvc3MtcGxhdGZvcm0gY29kZSwgYnV0IGl0IHdhcwor
ICAgICAgICBmYWN0b3JlZCB0byBiZSBuZWVkbGVzc2x5IHBsYXRmb3JtLXNwZWNpZmljLgorCisg
ICAgICAgICogd3RmL1J1bkxvb3AuaDogQWRkZWQgYSB2ZXJzaW9uIG9mIGRpc3BhdGNoKCkgdGhh
dCBhY2NlcHRzIGEKKyAgICAgICAgU2NoZWR1bGVQYWlySGFzaFNldCBmb3IgQ29jb2EuIFJlbW92
ZWQgc29tZSBpbmRpcmVjdGlvbiBmcm9tIHRpbWVyCisgICAgICAgIHN0dWZmLCBzaW5jZSBpdCB3
YXMgY29uZnVzaW5nIG1lLiBDb25zaXN0ZW50bHkgbmFtZWQgYWxsIHRpbWUgaW50ZXJ2YWxzCisg
ICAgICAgICJpbnRlcnZhbCIuCisKKyAgICAgICAgKiB3dGYvUnVuTG9vcFRpbWVyLmg6IFJlbW92
ZWQuCisKKyAgICAgICAgKiB3dGYvY2YvUnVuTG9vcENGLmNwcDoKKyAgICAgICAgKFdURjo6Y3Jl
YXRlVGltZXIpOiBGYWN0b3JlZCBvdXQgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGRpc3BhdGNoKCkg
dG8gdXNlLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaCk6IFRoaXMgZnVuY3Rpb24g
aXMgdGhlIG1lYXQgb2YgdGhlIHBhdGNoLiBJdCdzCisgICAgICAgIHRoZSBvbmx5IHVuaXF1ZSBm
dW5jdGlvbmFsaXR5IHRoYXQgUnVuTG9vcFRpbWVyIHVzZWQgdG8gcHJvdmlkZS4KKyAgICAgICAg
KFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6IEFkb3B0ZWQgaGVscGVyIGZ1bmN0aW9u
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpydW5Gb3JEdXJhdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZCk6IERlbGV0ZWQuCisKKyAg
ICAgICAgKiB3dGYvY2YvUnVuTG9vcFRpbWVyQ0YuY3BwOiBSZW1vdmVkLgorCisgICAgICAgICog
d3RmL2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpk
aXNwYXRjaEFmdGVyKTogRGVsZXRlZC4gTm93IGNyb3NzLXBsYXRmb3JtLgorCisgICAgICAgICog
d3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJh
c2U6OnVwZGF0ZVJlYWR5VGltZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6
c3RhcnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAgICAg
ICAoV1RGOjpEaXNwYXRjaEFmdGVyQ29udGV4dDo6RGlzcGF0Y2hBZnRlckNvbnRleHQpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpEaXNwYXRjaEFmdGVyQ29udGV4dDo6ZGlzcGF0Y2gpOiBEZWxl
dGVkLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4gTm93
IGNyb3NzLXBsYXRmb3JtLgorCisgICAgICAgICogd3RmL3dpbi9SdW5Mb29wV2luLmNwcDoKKyAg
ICAgICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAgIChXVEY6OlJ1
bkxvb3A6OmRpc3BhdGNoQWZ0ZXIpOiBEZWxldGVkLiBOb3cgY3Jvc3MtcGxhdGZvcm0uCisKIDIw
MjAtMDctMTcgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAg
ICAgICAgRG9uJ3QgaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+IGluIFNWR1BhcnNlclV0
aWxpdGllcy5oCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNiBAQAogCQlBM0U0REQ5MzFGM0E4
MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBM0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVh
bS5jcHAgKi87IH07CiAJCUEzRUU1QzNBMjFGRkFDNUYwMEZBQkQ2MSAvKiBPU0FsbG9jYXRvclBP
U0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEz
RUU1QzM5MjFGRkFDNUUwMEZBQkQ2MSAvKiBPU0FsbG9jYXRvclBPU0lYLmNwcCAqLzsgfTsKIAkJ
QTNFRTVDM0QyMUZGQUM3RDAwRkFCRDYxIC8qIFNjaGVkdWxlUGFpckNGLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzRUU1QzNCMjFGRkFDN0MwMEZB
QkQ2MSAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgKi87IH07Ci0JCUEzRUU1QzNFMjFGRkFDN0QwMEZB
QkQ2MSAvKiBSdW5Mb29wVGltZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBM0VFNUMzQzIxRkZBQzdEMDBGQUJENjEgLyogUnVuTG9vcFRpbWVy
Q0YuY3BwICovOyB9OwogCQlBM0VFNUM0MDIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWly
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNF
RTVDM0YyMUZGQUNBMjAwRkFCRDYxIC8qIFNjaGVkdWxlUGFpck1hYy5tbSAqLzsgfTsKIAkJQTVC
QTE1RjMxODI0MzNBOTAwQTgyRTY5IC8qIFN0cmluZ0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RjIxODI0MzNBOTAwQTgyRTY5IC8q
IFN0cmluZ0NvY29hLm1tICovOyB9OwogCQlBNUJBMTVGNTE4MjQzNDgwMDBBODJFNjkgLyogU3Ry
aW5nSW1wbENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTVCQTE1RjQxODI0MzQ4MDAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDb2NvYS5tbSAqLzsg
fTsKQEAgLTMxMyw3ICszMTIsNiBAQAogCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFN
U2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSQU1TaXplLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NDdBRUM1MThGQ0U1NzcwMEIzRDdGRiAvKiBGb3Vu
ZGF0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7
IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsg
c291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMTQ0N0FFQ0ExOEZDRTVCOTAwQjNEN0ZG
IC8qIGxpYmljdWNvcmUuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmljdWNvcmUu
ZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJpY3Vjb3JlLmR5bGliOyBzb3VyY2VUcmVlID0gIjxh
YnNvbHV0ZT4iOyB9OwotCQkxNDY5NDE5MDE2RUFBRjZEMDAyNEUxNDYgLyogUnVuTG9vcFRpbWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bkxvb3BUaW1lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDY5NDE5NDE2RUFBRkY4MDAyNEUxNDYgLyogU2No
ZWR1bGVQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjaGVkdWxlUGFp
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDY5NDE5QTE2RUFCMTBBMDAyNEUx
NDYgLyogQXV0b2RyYWluZWRQb29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEF1dG9kcmFpbmVkUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDY5NDE5
QjE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dG9kcmFpbmVkUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01MTcsNyArNTE1LDYgQEAKIAkJQTNFNEREOTIxRjNBODAzNDAwREVE
MEI0IC8qIFRleHRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dFN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0VFNUMzOTIxRkZBQzVF
MDBGQUJENjEgLyogT1NBbGxvY2F0b3JQT1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBPU0FsbG9jYXRvclBPU0lYLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTNFRTVDM0IyMUZGQUM3QzAwRkFCRDYxIC8qIFNjaGVkdWxlUGFpckNGLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjaGVkdWxlUGFpckNGLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTNFRTVDM0MyMUZGQUM3RDAwRkFCRDYxIC8q
IFJ1bkxvb3BUaW1lckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJ1bkxvb3BUaW1lckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNFRTVD
M0YyMUZGQUNBMjAwRkFCRDYxIC8qIFNjaGVkdWxlUGFpck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjaGVkdWxlUGFpck1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTUwOThBRkYxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FuZGJveFNQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEIwMTFDMTZBNEY5MDAwODc3OTcgLyogU2VjdXJp
dHlTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjdXJpdHlTUEkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxOSw3ICs4MTYsNiBAQAogCQkJCUEzMzFE
OTVDMjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCUMyQkNGQzQx
MUY2MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNwcCAqLywKIAkJCQkyQ0RFRDBFRTE4MTE1
QzM4MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCAqLywKLQkJCQlBM0VFNUMzQzIxRkZBQzdEMDBG
QUJENjEgLyogUnVuTG9vcFRpbWVyQ0YuY3BwICovLAogCQkJCUEzRUU1QzNCMjFGRkFDN0MwMEZB
QkQ2MSAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgKi8sCiAJCQkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4
RkZBIC8qIFR5cGVDYXN0c0NGLmggKi8sCiAJCQkJNUMxRjA1OTQyMTY0MzdCMzAwMzkzMDJDIC8q
IFVSTENGLmNwcCAqLywKQEAgLTEyMDUsNyArMTIwMSw2IEBACiAJCQkJQThBNDczMDUxNTFBODI1
QjAwNDEyM0ZGIC8qIFJldGFpblB0ci5oICovLAogCQkJCTJDREVEMEYxMTgxMTVDODUwMDREQkE3
MCAvKiBSdW5Mb29wLmNwcCAqLywKIAkJCQkyQ0RFRDBGMjE4MTE1Qzg1MDA0REJBNzAgLyogUnVu
TG9vcC5oICovLAotCQkJCTE0Njk0MTkwMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXIu
aCAqLywKIAkJCQkxNEYzQjBGNjE1RTQ1RTQ2MDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRp
Yy5oICovLAogCQkJCTE0Njk0MTk0MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAq
LywKIAkJCQkxQTM1MjRBQTFENjNBMkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKQEAgLTE3MjQs
NyArMTcxOSw2IEBACiAJCQkJRTM5MkZBMjcyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNh
Z2VDb2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAg
LyogUnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQ0RFRDBFRjE4MTE1QzM4MDA0REJB
NzAgLyogUnVuTG9vcENGLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUEzRUU1QzNFMjFGRkFDN0Qw
MEZBQkQ2MSAvKiBSdW5Mb29wVGltZXJDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0E4NUNB
OTI0MUIwQjI2MDA3MUMyRjUgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTNFRTVDM0QyMUZGQUM3RDAwRkFCRDYxIC8qIFNjaGVkdWxlUGFp
ckNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRUU1QzQwMjFGRkFDQTIwMEZBQkQ2MSAvKiBT
Y2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw2IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAg
ICBSZXNvdXJjZVVzYWdlLmgKICAgICBSZXRhaW5QdHIuaAogICAgIFJ1bkxvb3AuaAotICAgIFJ1
bkxvb3BUaW1lci5oCiAgICAgU0hBMS5oCiAgICAgU2F0dXJhdGVkQXJpdGhtZXRpYy5oCiAgICAg
U2NoZWR1bGVQYWlyLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCShyZXZpc2lvbiAyNjQzMTUp
CisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjEs
MTAgKzYxLDYgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotI2RlZmluZSBIQVZFX1JV
TkxPT1BfVElNRVIgMQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIEhBVkVf
U0VDX0tFWUNIQUlOIDEKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1h
Yy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQko
cmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAg
ICBjZi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAgICBjZi9SdW5M
b29wQ0YuY3BwCi0gICAgY2YvUnVuTG9vcFRpbWVyQ0YuY3BwCiAgICAgY2YvU2NoZWR1bGVQYWly
Q0YuY3BwCiAgICAgY2YvVVJMQ0YuY3BwCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3Au
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCShyZXZpc2lvbiAy
NjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQxLDYgKzE0MSwxNiBAQCB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+
CiAgICAgICAgIHdha2VVcCgpOwogfQogCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vj
b25kcyBkZWxheSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIGF1dG8gdGlt
ZXIgPSBuZXcgRGlzcGF0Y2hUaW1lcigqdGhpcyk7CisgICAgdGltZXItPnNldEZ1bmN0aW9uKFt0
aW1lciwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgICAgICBmdW5jdGlvbigp
OworICAgICAgICBkZWxldGUgdGltZXI7CisgICAgfSk7CisgICAgdGltZXItPnN0YXJ0T25lU2hv
dChkZWxheSk7Cit9CisKIHZvaWQgUnVuTG9vcDo6c3VzcGVuZEZ1bmN0aW9uRGlzcGF0Y2hGb3JD
dXJyZW50Q3ljbGUoKQogewogICAgIC8vIERvbid0IHN1c3BlbmQgaWYgdGhlcmUgYXJlIGFscmVh
ZHkgc3VzcGVuZGVkIGZ1bmN0aW9ucyB0byBhdm9pZCB1bmV4ZWN1dGVkIGZ1bmN0aW9uIHBpbGUt
dXAuCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dURi93dGYvUnVuTG9vcC5oCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9S
dW5Mb29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEyIEBACiAKIG5hbWVzcGFjZSBX
VEYgewogCisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCitjbGFzcyBTY2hlZHVsZVBhaXI7Citz
dHJ1Y3QgU2NoZWR1bGVQYWlySGFzaDsKK3R5cGVkZWYgSGFzaFNldDxSZWZQdHI8U2NoZWR1bGVQ
YWlyPiwgU2NoZWR1bGVQYWlySGFzaD4gU2NoZWR1bGVQYWlySGFzaFNldDsKKyNlbmRpZgorCiAj
aWYgVVNFKENGKQogdXNpbmcgUnVuTG9vcE1vZGUgPSBDRlN0cmluZ1JlZjsKICNkZWZpbmUgRGVm
YXVsdFJ1bkxvb3BNb2RlIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZQpAQCAtNzMsNyArNzksMTEgQEAg
cHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBpc01haW4oKTsKICAg
ICB+UnVuTG9vcCgpIGZpbmFsOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0
Y2goRnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkaXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIGRpc3BhdGNoQWZ0ZXIoU2Vjb25kcywgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyNpZiBVU0Uo
Q09DT0FfRVZFTlRfTE9PUCkKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGlz
cGF0Y2goY29uc3QgU2NoZWR1bGVQYWlySGFzaFNldCYsIEZ1bmN0aW9uPHZvaWQoKT4mJik7Cisj
ZW5kaWYKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBydW4oKTsKICAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wKCk7CkBAIC04NCwxMCArOTQsNiBAQCBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBDeWNsZVJlc3VsdCB7IENvbnRpbnVlLCBTdG9wIH07CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIEN5Y2xlUmVzdWx0IHN0YXRpYyBjeWNsZShSdW5Mb29wTW9kZSA9IERl
ZmF1bHRSdW5Mb29wTW9kZSk7CiAKLSNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBydW5Gb3JEdXJhdGlvbihTZWNvbmRzIGR1cmF0aW9uKTsKLSNl
bmRpZgotCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
R01haW5Db250ZXh0KiBtYWluQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkNvbnRleHQu
Z2V0KCk7IH0KICNlbmRpZgpAQCAtMTAyLDEwICsxMDgsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgcmVnaXN0ZXJSdW5Mb29wTWVzc2FnZVdpbmRvd0NsYXNzKCk7CiAjZW5kaWYKIAotI2lm
ICFVU0UoQ09DT0FfRVZFTlRfTE9PUCkKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNw
YXRjaEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0jZW5kaWYKLQogICAgIGNs
YXNzIFRpbWVyQmFzZSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAg
ICBmcmllbmQgY2xhc3MgUnVuTG9vcDsKQEAgLTExMyw4ICsxMTUsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBUaW1lckJhc2UoUnVuTG9vcCYpOwogICAg
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+VGltZXJCYXNlKCk7CiAKLSAgICAgICAg
dm9pZCBzdGFydFJlcGVhdGluZyhTZWNvbmRzIHJlcGVhdEludGVydmFsKSB7IHN0YXJ0SW50ZXJu
YWwocmVwZWF0SW50ZXJ2YWwsIHRydWUpOyB9Ci0gICAgICAgIHZvaWQgc3RhcnRPbmVTaG90KFNl
Y29uZHMgaW50ZXJ2YWwpIHsgc3RhcnRJbnRlcm5hbChpbnRlcnZhbCwgZmFsc2UpOyB9CisgICAg
ICAgIHZvaWQgc3RhcnRSZXBlYXRpbmcoU2Vjb25kcyBpbnRlcnZhbCkgeyBzdGFydChzdGQ6Om1h
eChpbnRlcnZhbCwgMF9zKSwgdHJ1ZSk7IH0KKyAgICAgICAgdm9pZCBzdGFydE9uZVNob3QoU2Vj
b25kcyBpbnRlcnZhbCkgeyBzdGFydChzdGQ6Om1heChpbnRlcnZhbCwgMF9zKSwgZmFsc2UpOyB9
CiAKICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwogICAgICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwpAQCAtMTI4LDEyICsxMzAsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc3RhcnRJbnRl
cm5hbChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGFydChzdGQ6Om1heChuZXh0RmlyZUludGVydmFsLCAwX3MpLCByZXBlYXQp
OwotICAgICAgICB9Ci0KLSAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnQoU2Vj
b25kcyBuZXh0RmlyZUludGVydmFsLCBib29sIHJlcGVhdCk7CisgICAgICAgIFdURl9FWFBPUlRf
UFJJVkFURSB2b2lkIHN0YXJ0KFNlY29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0KTsKIAogICAg
ICAgICBSZWY8UnVuTG9vcD4gbV9ydW5Mb29wOwogCkBAIC0xNDUsMTMgKzE0MiwxMiBAQCBwdWJs
aWM6CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wg
bV9pc0FjdGl2ZSB7IGZhbHNlIH07CiAjZWxpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKLSAgICAg
ICAgc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogICAg
ICAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7CiAjZWxpZiBVU0UoR0xJ
Ql9FVkVOVF9MT09QKQogICAgICAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpOwogICAgICAgICBH
UmVmUHRyPEdTb3VyY2U+IG1fc291cmNlOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmcgeyBm
YWxzZSB9OwotICAgICAgICBTZWNvbmRzIG1fZmlyZUludGVydmFsIHsgMCB9OworICAgICAgICBT
ZWNvbmRzIG1faW50ZXJ2YWwgeyAwIH07CiAjZWxpZiBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQog
ICAgICAgICBib29sIGlzQWN0aXZlKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgY29uc3Q7CiAgICAg
ICAgIHZvaWQgc3RvcChjb25zdCBBYnN0cmFjdExvY2tlciYpOwpAQCAtMTgyLDcgKzE3OCw5IEBA
IHB1YmxpYzoKICAgICAgICAgVGltZXJGaXJlZENsYXNzKiBtX29iamVjdDsKICAgICB9OwogCi0j
aWYgVVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKK3ByaXZhdGU6CisgICAgY2xhc3MgSG9sZGVyOwor
CiAgICAgY2xhc3MgRGlzcGF0Y2hUaW1lciBmaW5hbCA6IHB1YmxpYyBUaW1lckJhc2UgewogICAg
IHB1YmxpYzoKICAgICAgICAgRGlzcGF0Y2hUaW1lcihSdW5Mb29wJiBydW5Mb29wKQpAQCAtMTk5
LDExICsxOTcsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0
aW9uOwogICAgIH07Ci0jZW5kaWYKIAotICAgIGNsYXNzIEhvbGRlcjsKLQotcHJpdmF0ZToKICAg
ICBSdW5Mb29wKCk7CiAKICAgICB2b2lkIHBlcmZvcm1Xb3JrKCk7CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9SdW5Mb29wVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29w
VGltZXIuaAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvUnVuTG9vcFRpbWVy
LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL1Nj
aGVkdWxlUGFpci5oPgotI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+Ci0KLSNpZiBVU0UoQ0YpCi0j
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotCi0v
LyBUaW1lIGludGVydmFscyBhcmUgYWxsIGluIHNlY29uZHMuCi0KLWNsYXNzIFJ1bkxvb3BUaW1l
ckJhc2UgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJ1bkxvb3BUaW1lckJhc2UpOwotICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBSdW5Mb29wVGltZXJCYXNlKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgflJ1
bkxvb3BUaW1lckJhc2UoKTsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNjaGVkdWxl
KGNvbnN0IFNjaGVkdWxlUGFpciopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNjaGVk
dWxlKGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmKTsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFU
RSB2b2lkIHN0YXJ0KFNlY29uZHMgbmV4dEZpcmVJbnRlcnZhbCwgU2Vjb25kcyByZXBlYXRJbnRl
cnZhbCk7Ci0KLSAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwp
IHsgc3RhcnQocmVwZWF0SW50ZXJ2YWwsIHJlcGVhdEludGVydmFsKTsgfQotICAgIHZvaWQgc3Rh
cnRPbmVTaG90KFNlY29uZHMgaW50ZXJ2YWwpIHsgc3RhcnQoaW50ZXJ2YWwsIDBfcyk7IH0KLQot
ICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHN0b3AoKTsKLSAgICBib29sIGlzQWN0aXZlKCkg
Y29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSA9IDA7Ci0KLXByaXZhdGU6Ci0jaWYg
VVNFKENGKQotICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gbV90aW1lcjsKLSNlbmRp
ZgotfTsKLQotLy8gRklYTUU6IFRoaXMgZG9lc24ndCBoYXZlIHRvIGJlIGEgY2xhc3MgdGVtcGxh
dGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVGltZXJGaXJlZENsYXNzPiBjbGFzcyBSdW5Mb29wVGlt
ZXIgOiBwdWJsaWMgUnVuTG9vcFRpbWVyQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lk
IChUaW1lckZpcmVkQ2xhc3M6OipUaW1lckZpcmVkRnVuY3Rpb24pKCk7Ci0KLSAgICBSdW5Mb29w
VGltZXIoVGltZXJGaXJlZENsYXNzJiBvLCBUaW1lckZpcmVkRnVuY3Rpb24gZikKLSAgICAgICAg
OiBtX29iamVjdCgmbyksIG1fZnVuY3Rpb24oZikgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZmly
ZWQoKSB7IChtX29iamVjdC0+Km1fZnVuY3Rpb24pKCk7IH0KLQotcHJpdmF0ZToKLSAgICBUaW1l
ckZpcmVkQ2xhc3MqIG1fb2JqZWN0OwotICAgIFRpbWVyRmlyZWRGdW5jdGlvbiBtX2Z1bmN0aW9u
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6UnVuTG9vcFRpbWVyOwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dURi93dGYvUnVuTG9vcFRpbWVyLmgKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9jZi9SdW5Mb29w
Q0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5jcHAJKHJl
dmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDkgKzI5LDE3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUg
PHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAK
IG5hbWVzcGFjZSBXVEYgewogCitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiBj
cmVhdGVUaW1lcihTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCwgdm9pZCgqdGltZXJGaXJl
ZCkoQ0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKSwgdm9pZCogaW5mbykKK3sKKyAgICBDRlJ1bkxv
b3BUaW1lckNvbnRleHQgY29udGV4dCA9IHsgMCwgaW5mbywgMCwgMCwgMCB9OworICAgIFNlY29u
ZHMgcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXQgPyBpbnRlcnZhbCA6IDBfczsKKyAgICByZXR1cm4g
YWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29s
dXRlVGltZUdldEN1cnJlbnQoKSArIGludGVydmFsLnNlY29uZHMoKSwgcmVwZWF0SW50ZXJ2YWwu
c2Vjb25kcygpLCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOworfQorCiB2b2lkIFJ1bkxv
b3A6OnBlcmZvcm1Xb3JrKHZvaWQqIGNvbnRleHQpCiB7CiAgICAgQXV0b2RyYWluZWRQb29sIHBv
b2w7CkBAIC01MSwxMSArNTksNiBAQCBSdW5Mb29wOjp+UnVuTG9vcCgpCiAgICAgQ0ZSdW5Mb29w
U291cmNlSW52YWxpZGF0ZShtX3J1bkxvb3BTb3VyY2UuZ2V0KCkpOwogfQogCi12b2lkIFJ1bkxv
b3A6OnJ1bkZvckR1cmF0aW9uKFNlY29uZHMgZHVyYXRpb24pCi17Ci0gICAgQ0ZSdW5Mb29wUnVu
SW5Nb2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgZHVyYXRpb24uc2Vjb25kcygpLCB0cnVlKTsK
LX0KLQogdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogewogICAgIENGUnVuTG9vcFNvdXJjZVNpZ25h
bChtX3J1bkxvb3BTb3VyY2UuZ2V0KCkpOwpAQCAtODEsMjAgKzg0LDIzIEBAIHZvaWQgUnVuTG9v
cDo6c3RvcCgpCiAgICAgQ0ZSdW5Mb29wU3RvcChtX3J1bkxvb3AuZ2V0KCkpOwogfQogCi0vLyBS
dW5Mb29wOjpUaW1lcgotCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZChDRlJ1
bkxvb3BUaW1lclJlZiBjZlRpbWVyLCB2b2lkKiBjb250ZXh0KQordm9pZCBSdW5Mb29wOjpkaXNw
YXRjaChjb25zdCBTY2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBhaXJzLCBGdW5jdGlvbjx2
b2lkKCk+JiYgZnVuY3Rpb24pCiB7Ci0gICAgVGltZXJCYXNlKiB0aW1lciA9IHN0YXRpY19jYXN0
PFRpbWVyQmFzZSo+KGNvbnRleHQpOworICAgIGF1dG8gdGltZXIgPSBjcmVhdGVUaW1lcigwX3Ms
IGZhbHNlLCBbXSAoQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQqIGNvbnRleHQpIHsKKyAg
ICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CiAKLSAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsK
KyAgICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHRpbWVyKTsKIAotICAgIGlmICghQ0ZS
dW5Mb29wVGltZXJEb2VzUmVwZWF0KGNmVGltZXIpKQotICAgICAgICB0aW1lci0+c3RvcCgpOwor
ICAgICAgICBGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKHN0YXRpY19jYXN0PEZ1bmN0aW9uPHZv
aWQoKT46OkltcGwqPihjb250ZXh0KSk7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSwgZnVu
Y3Rpb24ubGVha0ltcGwoKSk7CiAKLSAgICB0aW1lci0+ZmlyZWQoKTsKKyAgICBmb3IgKGF1dG8m
IHNjaGVkdWxlUGFpciA6IHNjaGVkdWxlUGFpcnMpCisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVy
KHNjaGVkdWxlUGFpci0+cnVuTG9vcCgpLCB0aW1lci5nZXQoKSwgc2NoZWR1bGVQYWlyLT5tb2Rl
KCkpOwogfQogCisvLyBSdW5Mb29wOjpUaW1lcgorCiBSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVy
QmFzZShSdW5Mb29wJiBydW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiB7CkBAIC0x
MDUsMTQgKzExMSwyMCBAQCBSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQogICAgIHN0
b3AoKTsKIH0KIAotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgbmV4dEZp
cmVJbnRlcnZhbCwgYm9vbCByZXBlYXQpCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQo
U2Vjb25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpCiB7CiAgICAgaWYgKG1fdGltZXIpCiAgICAg
ICAgIHN0b3AoKTsKLSAgICAKLSAgICBDRlJ1bkxvb3BUaW1lckNvbnRleHQgY29udGV4dCA9IHsg
MCwgdGhpcywgMCwgMCwgMCB9OwotICAgIFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXQg
PyBuZXh0RmlyZUludGVydmFsIDogMF9zOwotICAgIG1fdGltZXIgPSBhZG9wdENGKENGUnVuTG9v
cFRpbWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVu
dCgpICsgbmV4dEZpcmVJbnRlcnZhbC5zZWNvbmRzKCksIHJlcGVhdEludGVydmFsLnNlY29uZHMo
KSwgMCwgMCwgdGltZXJGaXJlZCwgJmNvbnRleHQpKTsKKworICAgIG1fdGltZXIgPSBjcmVhdGVU
aW1lcihpbnRlcnZhbCwgcmVwZWF0LCBbXSAoQ0ZSdW5Mb29wVGltZXJSZWYgY2ZUaW1lciwgdm9p
ZCogY29udGV4dCkgeworICAgICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKworICAgICAgICBU
aW1lckJhc2UqIHRpbWVyID0gc3RhdGljX2Nhc3Q8VGltZXJCYXNlKj4oY29udGV4dCk7CisgICAg
ICAgIGlmICghQ0ZSdW5Mb29wVGltZXJEb2VzUmVwZWF0KGNmVGltZXIpKQorICAgICAgICAgICAg
dGltZXItPnN0b3AoKTsKKworICAgICAgICB0aW1lci0+ZmlyZWQoKTsKKyAgICB9LCB0aGlzKTsK
ICAgICBDRlJ1bkxvb3BBZGRUaW1lcihtX3J1bkxvb3AtPm1fcnVuTG9vcC5nZXQoKSwgbV90aW1l
ci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIH0KIApJbmRleDogU291cmNlL1dURi93
dGYvY2YvUnVuTG9vcFRpbWVyQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2Nm
L1J1bkxvb3BUaW1lckNGLmNwcAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYv
Y2YvUnVuTG9vcFRpbWVyQ0YuY3BwCShub25leGlzdGVudCkKQEAgLTEsOTQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBQTEFURk9STShDT0NPQSkgJiYgSEFWRShSVU5MT09QX1RJTUVS
KQotCi0jaW5jbHVkZSA8d3RmL1J1bkxvb3BUaW1lci5oPgotCi0jaW5jbHVkZSA8d3RmL0F1dG9k
cmFpbmVkUG9vbC5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotUnVuTG9vcFRpbWVyQmFzZTo6UnVu
TG9vcFRpbWVyQmFzZSgpID0gZGVmYXVsdDsKLQotUnVuTG9vcFRpbWVyQmFzZTo6flJ1bkxvb3BU
aW1lckJhc2UoKQotewotICAgIHN0b3AoKTsKLX0KLQotc3RhdGljIHZvaWQgdGltZXJGaXJlZChD
RlJ1bkxvb3BUaW1lclJlZiwgdm9pZCogY29udGV4dCkKLXsKLSAgICAvLyBDRlJ1bkxvb3BUaW1l
ciBkb2VzIG5vdCBjcmVhdGUgYW4gTlNBdXRvcmVsZWFzZVBvb2wsIGxpa2UgTlNUaW1lciBkb2Vz
LiBUaGlzIGNhbiBsZWFkIHRvCi0gICAgLy8gYXV0b3JlbGVhc2VkIG9iamVjdHMgYmVpbmcgcHVz
aGVkIGludG8gTlNBdXRvcmVsZWFzZVBvb2xzIHVuZGVybmVhdGggdGhlIHJ1biBsb29wLCB3aGlj
aAotICAgIC8vIGFyZSB2ZXJ5IGluZnJlcXVlbnRseSBkcmFpbmVkLiBDcmVhdGUgYSBuZXcgYXV0
b3JlbGVhc2UgcG9vbCBoZXJlIHRvIGdpdmUgYXV0b3JlbGVhc2VkIG9iamVjdHMKLSAgICAvLyBh
IHBsYWNlIHRvIGNvbGxlY3QuCi0gICAgQXV0b2RyYWluZWRQb29sIHBvb2w7Ci0gICAgUnVuTG9v
cFRpbWVyQmFzZSogdGltZXIgPSBzdGF0aWNfY2FzdDxSdW5Mb29wVGltZXJCYXNlKj4oY29udGV4
dCk7Ci0gICAgdGltZXItPmZpcmVkKCk7Ci19Ci0KLXZvaWQgUnVuTG9vcFRpbWVyQmFzZTo6c3Rh
cnQoU2Vjb25kcyBuZXh0RmlyZUludGVydmFsLCBTZWNvbmRzIHJlcGVhdEludGVydmFsKQotewot
ICAgIGlmIChtX3RpbWVyKQotICAgICAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV90aW1l
ci5nZXQoKSk7Ci0gICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMs
IDAsIDAsIDAgfTsKLSAgICBtX3RpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZSgw
LCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIG5leHRGaXJlSW50ZXJ2YWwuc2Vjb25kcygp
LCByZXBlYXRJbnRlcnZhbC5zZWNvbmRzKCksIDAsIDAsIHRpbWVyRmlyZWQsICZjb250ZXh0KSk7
Ci19Ci0KLXZvaWQgUnVuTG9vcFRpbWVyQmFzZTo6c2NoZWR1bGUoY29uc3QgU2NoZWR1bGVQYWly
KiBzY2hlZHVsZVBhaXIpCi17Ci0gICAgQVNTRVJUX0FSRyhzY2hlZHVsZVBhaXIsIHNjaGVkdWxl
UGFpcik7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3RpbWVyLCAiVGltZXIgbXVzdCBoYXZl
IG9uZSBvZiB0aGUgc3RhcnQgZnVuY3Rpb25zIGNhbGxlZCBiZWZvcmUgY2FsbGluZyBzY2hlZHVs
ZSgpLiIpOwotICAgIENGUnVuTG9vcEFkZFRpbWVyKHNjaGVkdWxlUGFpci0+cnVuTG9vcCgpLCBt
X3RpbWVyLmdldCgpLCBzY2hlZHVsZVBhaXItPm1vZGUoKSk7Ci19Ci0KLXZvaWQgUnVuTG9vcFRp
bWVyQmFzZTo6c2NoZWR1bGUoY29uc3QgU2NoZWR1bGVQYWlySGFzaFNldCYgc2NoZWR1bGVQYWly
cykKLXsKLSAgICBTY2hlZHVsZVBhaXJIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBzY2hl
ZHVsZVBhaXJzLmVuZCgpOwotICAgIGZvciAoU2NoZWR1bGVQYWlySGFzaFNldDo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBzY2hlZHVsZVBhaXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAg
ICAgc2NoZWR1bGUoKCppdCkuZ2V0KCkpOwotfQotCi12b2lkIFJ1bkxvb3BUaW1lckJhc2U6OnN0
b3AoKQotewotICAgIGlmICghbV90aW1lcikKLSAgICAgICAgcmV0dXJuOwotICAgIENGUnVuTG9v
cFRpbWVySW52YWxpZGF0ZShtX3RpbWVyLmdldCgpKTsKLSAgICBtX3RpbWVyID0gMDsKLX0KLQot
Ym9vbCBSdW5Mb29wVGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
dGltZXIgJiYgQ0ZSdW5Mb29wVGltZXJJc1ZhbGlkKG1fdGltZXIuZ2V0KCkpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXVEYKLQotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFJVTkxP
T1BfVElNRVIpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV1RGL3d0Zi9jZi9SdW5Mb29w
VGltZXJDRi5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAg
IyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9nZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAkocmV2aXNpb24gMjY0MzE1KQorKysg
U291cmNlL1dURi93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1MCwxNCArMjUwLDYgQEAgdm9pZCBSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VVcChjb25z
dCBBYgogICAgIHdha2VVcChsb2NrZXIpOwogfQogCi12b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0
ZXIoU2Vjb25kcyBkZWxheSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQotewotICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbG9vcExvY2spOwotICAgIGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7
Ci0gICAgc2NoZWR1bGUobG9ja2VyLCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZShX
VEZNb3ZlKGZ1bmN0aW9uKSwgZGVsYXksIHJlcGVhdGluZykpOwotICAgIHdha2VVcChsb2NrZXIp
OwotfQotCiAvLyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93biB0aGUgcmVnaXN0ZXJlZCBUaW1l
ckJhc2UsCiAvLyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBzaG91bGQgbWFuYWdlIHRoZXNlIGxp
ZmV0aW1lLgogUnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisr
KyBTb3VyY2UvV1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI5LDM5ICsxMjksNiBAQCBSdW5Mb29wOjpDeWNsZVJlc3VsdCBSdW5Mb29wOjpjeWNsZShSdW5M
CiAgICAgcmV0dXJuIEN5Y2xlUmVzdWx0OjpDb250aW51ZTsKIH0KIAotY2xhc3MgRGlzcGF0Y2hB
ZnRlckNvbnRleHQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IERpc3BhdGNoQWZ0ZXJDb250ZXh0KEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKLSAgICAg
ICAgOiBtX2Z1bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQotICAgIHsKLSAgICB9Ci0KLSAgICB2
b2lkIGRpc3BhdGNoKCkKLSAgICB7Ci0gICAgICAgIG1fZnVuY3Rpb24oKTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOwotfTsKLQotdm9pZCBSdW5M
b29wOjpkaXNwYXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBm
dW5jdGlvbikKLXsKLSAgICBHUmVmUHRyPEdTb3VyY2U+IHNvdXJjZSA9IGFkb3B0R1JlZihnX3Nv
dXJjZV9uZXcoJnJ1bkxvb3BTb3VyY2VGdW5jdGlvbnMsIHNpemVvZihHU291cmNlKSkpOwotICAg
IGdfc291cmNlX3NldF9wcmlvcml0eShzb3VyY2UuZ2V0KCksIFJ1bkxvb3BTb3VyY2VQcmlvcml0
eTo6UnVuTG9vcFRpbWVyKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZShzb3VyY2UuZ2V0KCksICJb
V2ViS2l0XSBSdW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKLSAgICBnX3NvdXJjZV9zZXRfcmVhZHlf
dGltZShzb3VyY2UuZ2V0KCksIGdfZ2V0X21vbm90b25pY190aW1lKCkgKyBkdXJhdGlvbi5taWNy
b3NlY29uZHNBczxnaW50NjQ+KCkpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNoQWZ0
ZXJDb250ZXh0PiBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwYXRjaEFmdGVyQ29udGV4dD4oV1RG
TW92ZShmdW5jdGlvbikpOwotICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhzb3VyY2UuZ2V0KCks
IFtdKGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7Ci0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxEaXNwYXRjaEFmdGVyQ29udGV4dD4gY29udGV4dChzdGF0aWNfY2FzdDxEaXNwYXRjaEFm
dGVyQ29udGV4dCo+KHVzZXJEYXRhKSk7Ci0gICAgICAgIGNvbnRleHQtPmRpc3BhdGNoKCk7Ci0g
ICAgICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Ci0gICAgfSwgY29udGV4dC5yZWxlYXNlKCks
IG51bGxwdHIpOwotICAgIGdfc291cmNlX2F0dGFjaChzb3VyY2UuZ2V0KCksIG1fbWFpbkNvbnRl
eHQuZ2V0KCkpOwotfQotCiBSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBy
dW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiAgICAgLCBtX3NvdXJjZShhZG9wdEdS
ZWYoZ19zb3VyY2VfbmV3KCZydW5Mb29wU291cmNlRnVuY3Rpb25zLCBzaXplb2YoR1NvdXJjZSkp
KSkKQEAgLTIwMSwyMCArMTY4LDIwIEBAIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzZXRQcmlv
cml0eShpbnQKIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnVwZGF0ZVJlYWR5VGltZSgpCiB7
Ci0gICAgaWYgKCFtX2ZpcmVJbnRlcnZhbCkgeworICAgIGlmICghbV9pbnRlcnZhbCkgewogICAg
ICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3NvdXJjZS5nZXQoKSwgMCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBnaW50NjQgY3VycmVudFRpbWUgPSBnX2dldF9tb25vdG9u
aWNfdGltZSgpOwotICAgIGdpbnQ2NCB0YXJnZXRUaW1lID0gY3VycmVudFRpbWUgKyBzdGQ6Om1p
bjxnaW50NjQ+KEdfTUFYSU5UNjQgLSBjdXJyZW50VGltZSwgbV9maXJlSW50ZXJ2YWwubWljcm9z
ZWNvbmRzQXM8Z2ludDY0PigpKTsKKyAgICBnaW50NjQgdGFyZ2V0VGltZSA9IGN1cnJlbnRUaW1l
ICsgc3RkOjptaW48Z2ludDY0PihHX01BWElOVDY0IC0gY3VycmVudFRpbWUsIG1faW50ZXJ2YWwu
bWljcm9zZWNvbmRzQXM8Z2ludDY0PigpKTsKICAgICBBU1NFUlQodGFyZ2V0VGltZSA+PSBjdXJy
ZW50VGltZSk7CiAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUobV9zb3VyY2UuZ2V0KCksIHRh
cmdldFRpbWUpOwogfQogCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBm
aXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0
KFNlY29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQogewotICAgIG1fZmlyZUludGVydmFsID0g
ZmlyZUludGVydmFsOworICAgIG1faW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICBtX2lzUmVwZWF0
aW5nID0gcmVwZWF0OwogICAgIHVwZGF0ZVJlYWR5VGltZSgpOwogfQpAQCAtMjIyLDcgKzE4OSw3
IEBAIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChTZWNvbmRzIGYKIHZvaWQgUnVuTG9v
cDo6VGltZXJCYXNlOjpzdG9wKCkKIHsKICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3Nv
dXJjZS5nZXQoKSwgLTEpOwotICAgIG1fZmlyZUludGVydmFsID0geyB9OworICAgIG1faW50ZXJ2
YWwgPSB7IH07CiAgICAgbV9pc1JlcGVhdGluZyA9IGZhbHNlOwogfQogCkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi93aW4vUnVuTG9vcFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
d2luL1J1bkxvb3BXaW4uY3BwCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi93
aW4vUnVuTG9vcFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwxNiArMTQwLDYgQEAgUnVu
TG9vcDo6Q3ljbGVSZXN1bHQgUnVuTG9vcDo6Y3ljbGUoUnVuTAogICAgIHJldHVybiBDeWNsZVJl
c3VsdDo6Q29udGludWU7CiB9CiAKLXZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihTZWNvbmRz
IGRlbGF5LCBGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCi17Ci0gICAgYXV0byB0aW1lciA9
IG5ldyBEaXNwYXRjaFRpbWVyKCp0aGlzKTsKLSAgICB0aW1lci0+c2V0RnVuY3Rpb24oW3RpbWVy
LCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXSB7Ci0gICAgICAgIGZ1bmN0aW9uKCk7Ci0g
ICAgICAgIGRlbGV0ZSB0aW1lcjsKLSAgICB9KTsKLSAgICB0aW1lci0+c3RhcnRPbmVTaG90KGRl
bGF5KTsKLX0KLQogLy8gUnVuTG9vcDo6VGltZXIKIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6
OnRpbWVyRmlyZWQoKQpAQCAtMTgwLDE0ICsxNzAsMTQgQEAgUnVuTG9vcDo6VGltZXJCYXNlOjp+
VGltZXJCYXNlKCkKICAgICBzdG9wKCk7CiB9CiAKLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpz
dGFydChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQordm9pZCBSdW5Mb29w
OjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQogewogICAg
IExvY2tIb2xkZXIgbG9ja2VyKG1fcnVuTG9vcC0+bV9sb29wTG9jayk7CiAgICAgbV9pc1JlcGVh
dGluZyA9IHJlcGVhdDsKICAgICBtX2lzQWN0aXZlID0gdHJ1ZTsKLSAgICBtX2ludGVydmFsID0g
bmV4dEZpcmVJbnRlcnZhbDsKKyAgICBtX2ludGVydmFsID0gaW50ZXJ2YWw7CiAgICAgbV9uZXh0
RmlyZURhdGUgPSBNb25vdG9uaWNUaW1lOjpub3coKSArIG1faW50ZXJ2YWw7Ci0gICAgOjpTZXRU
aW1lcihtX3J1bkxvb3AtPm1fcnVuTG9vcE1lc3NhZ2VXaW5kb3csIGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KHRoaXMpLCBuZXh0RmlyZUludGVydmFsLm1pbGxpc2Vjb25kc0FzPFVJTlQ+KCksIG51
bGxwdHIpOworICAgIDo6U2V0VGltZXIobV9ydW5Mb29wLT5tX3J1bkxvb3BNZXNzYWdlV2luZG93
LCBiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0aGlzKSwgaW50ZXJ2YWwubWlsbGlzZWNvbmRzQXM8
VUlOVD4oKSwgbnVsbHB0cik7CiB9CiAKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA3LTE3ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG9u
bHkgb25lIFJ1bkxvb3AgVGltZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNDM0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJ1bkxvb3A6OlRpbWVyIHdpbnMuIFJ1bkxvb3BUaW1lciBsb3Nl
cy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OnRyeUxvYWRpbmdTdWJzdGl0dXRlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3RhcnREYXRhTG9hZFRpbWVyKTogRGVsZXRlZC4gVXNl
CisgICAgICAgIFJ1bkxvb3A6OmRpc3BhdGNoIGluc3RlYWQgb2YgYSB0aW1lciBiZWNhdXNlIHdl
IGhhdmUgbm8gbmVlZCB0byBjb250cm9sCisgICAgICAgIHRoZSB0aW1lIHBlcmlvZCBvciB0byBm
aXJlIG1vcmUgdGhhbiBvbmNlLiBVc2UgYW4gZXhwbGljaXQgdG9rZW4gc28gdGhhdAorICAgICAg
ICB3ZSBjYW4gc3RpbGwgY2FuY2VsLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6RGF0YUxvYWRUb2tlbjo6Y2xl
YXIpOiBBZGRlZCBhbiBleHBsaWNpdCB0b2tlbgorICAgICAgICBjbGFzcyB0byB3ZSBjYW4gY2Fu
Y2VsIGEgZGF0YSBsb2FkLgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6IHBhZ2UtPnNj
aGVkdWxlZFJ1bkxvb3BQYWlycygpCisgICAgICAgIGlzIG5ldmVyIG51bGw7IGFuZCBpZiBpdCB3
ZXJlIG51bGwsIGRhdGEgbG9hZHMgd291bGQgYWx3YXlzIGZhaWwuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFV
UkxEZWNvZGVyOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OkRl
Y29kaW5nUmVzdWx0RGlzcGF0Y2hlcjo6ZGlzcGF0Y2gpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YVVSTERlY29kZXI6OkRlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcjo6RGVjb2RpbmdS
ZXN1bHREaXNwYXRjaGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNv
ZGVyOjpEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI6OnN0YXJ0VGltZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OkRlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcjo6
dGltZXJGaXJlZCk6IERlbGV0ZWQuCisgICAgICAgIE5vIG5lZWQgZm9yIHR3byBjb2RlIHBhdGhz
LCBub3cgdGhhdCB3ZSBjYW4ganVzdCBjYWxsIFJ1bkxvb3A6OmRpc3BhdGNoLgorCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgorCiAyMDIwLTA3LTEzICBHZW9m
ZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmUt
bGFuZGluZyByMjY0MjQyIHdpdGggY3Jhc2ggZml4ZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsx
NTMsNiBAQCBEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzCiAgICAgLCBt
X3JlcXVlc3QocmVxdWVzdCkKICAgICAsIG1fb3JpZ2luYWxTdWJzdGl0dXRlRGF0YVdhc1ZhbGlk
KHN1YnN0aXR1dGVEYXRhLmlzVmFsaWQoKSkKICAgICAsIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVs
aXZlcnlUaW1lcigqdGhpcywgJkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxp
dmVyeVRpbWVyRmlyZWQpCi0gICAgLCBtX2RhdGFMb2FkVGltZXIoKnRoaXMsICZEb2N1bWVudExv
YWRlcjo6aGFuZGxlU3Vic3RpdHV0ZURhdGFMb2FkTm93KQogICAgICwgbV9hcHBsaWNhdGlvbkNh
Y2hlSG9zdChtYWtlVW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykpCiB7CiB9CkBA
IC00OTIsMTYgKzQ5MSw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVE
YXQKICAgICByZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlLCBudWxscHRyKTsKIH0KIAotdm9pZCBE
b2N1bWVudExvYWRlcjo6c3RhcnREYXRhTG9hZFRpbWVyKCkKLXsKLSAgICBtX2RhdGFMb2FkVGlt
ZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci0KLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0gICAgaWYg
KFNjaGVkdWxlUGFpckhhc2hTZXQqIHNjaGVkdWxlZFBhaXJzID0gbV9mcmFtZS0+cGFnZSgpLT5z
Y2hlZHVsZWRSdW5Mb29wUGFpcnMoKSkKLSAgICAgICAgbV9kYXRhTG9hZFRpbWVyLnNjaGVkdWxl
KCpzY2hlZHVsZWRQYWlycyk7Ci0jZW5kaWYKLX0KLQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnNldENvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIGRhdGEpCiB7CkBAIC03MTEs
OCArNzAwLDIwIEBAIGJvb2wgRG9jdW1lbnRMb2FkZXI6OnRyeUxvYWRpbmdTdWJzdGl0dXQKIAog
ICAgIGlmICghbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkIHx8IGZyYW1lTG9hZGVyKCktPmxv
YWRzU3luY2hyb25vdXNseSgpKQogICAgICAgICBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3co
KTsKLSAgICBlbHNlCi0gICAgICAgIHN0YXJ0RGF0YUxvYWRUaW1lcigpOworICAgIGVsc2Ugewor
ICAgICAgICBhdXRvIGxvYWREYXRhID0gW3RoaXMsIHdlYWtEYXRhTG9hZFRva2VuID0gbWFrZVdl
YWtQdHIobV9kYXRhTG9hZFRva2VuKV0geworICAgICAgICAgICAgaWYgKCF3ZWFrRGF0YUxvYWRU
b2tlbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2RhdGFMb2FkVG9r
ZW4uY2xlYXIoKTsKKyAgICAgICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdygpOwor
ICAgICAgICB9OworCisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisgICAgICAgIFJ1bkxvb3A6
OmRpc3BhdGNoKCptX2ZyYW1lLT5wYWdlKCktPnNjaGVkdWxlZFJ1bkxvb3BQYWlycygpLCBXVEZN
b3ZlKGxvYWREYXRhKSk7CisjZWxzZQorICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goV1RGTW92ZShsb2FkRGF0YSkpOworI2VuZGlmCisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0yMDA1LDcgKzIwMDYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWlu
UmVzb3VyY2VMCiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5jZWxNYWluUmVzb3Vy
Y2VMb2FkOiAodHlwZSA9ICVkLCBjb2RlID0gJWQpIiwgc3RhdGljX2Nhc3Q8aW50PihlcnJvci50
eXBlKCkpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKLSAgICBtX2RhdGFMb2FkVGltZXIuc3RvcCgp
OworICAgIG1fZGF0YUxvYWRUb2tlbi5jbGVhcigpOwogCiAgICAgY2FuY2VsUG9saWN5Q2hlY2tJ
Zk5lZWRlZCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAko
cmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDEwICs1OSw2IEBACiAjaW5jbHVkZSAiQXBwbGljYXRp
b25NYW5pZmVzdC5oIgogI2VuZGlmCiAKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0jaW5jbHVk
ZSA8d3RmL1J1bkxvb3BUaW1lci5oPgotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICNp
bmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAjZW5kaWYKQEAgLTQyOSw2ICs0MjUsMTEgQEAg
cHJvdGVjdGVkOgogICAgIGJvb2wgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkIHsgdHJ1ZSB9
OwogCiBwcml2YXRlOgorICAgIGNsYXNzIERhdGFMb2FkVG9rZW4gOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8RGF0YUxvYWRUb2tlbj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdm9pZCBjbGVhcigp
IHsgd2Vha1B0ckZhY3RvcnkoKS5yZXZva2VBbGwoKTsgfQorICAgIH07CisKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTQ4
OSwxMyArNDkwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hh
bmdlKCk7CiAgICAgUmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9y
KCkgY29uc3Q7CiAKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0gICAgdHlwZWRlZiBSdW5Mb29w
VGltZXI8RG9jdW1lbnRMb2FkZXI+IERvY3VtZW50TG9hZGVyVGltZXI7Ci0jZWxzZQotICAgIHR5
cGVkZWYgVGltZXIgRG9jdW1lbnRMb2FkZXJUaW1lcjsKLSNlbmRpZgogICAgIHZvaWQgaGFuZGxl
U3Vic3RpdHV0ZURhdGFMb2FkTm93KCk7Ci0gICAgdm9pZCBzdGFydERhdGFMb2FkVGltZXIoKTsK
IAogICAgIHZvaWQgZGVsaXZlclN1YnN0aXR1dGVSZXNvdXJjZXNBZnRlckRlbGF5KCk7CiAgICAg
dm9pZCBzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQoKTsKQEAgLTYwMCw3ICs1
OTUsNyBAQCBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV90aW1lT2ZMYXN0RGF0YVJlY2Vp
dmVkOwogICAgIHVuc2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJj
ZUxvYWRlciB7IDAgfTsKIAotICAgIERvY3VtZW50TG9hZGVyVGltZXIgbV9kYXRhTG9hZFRpbWVy
OworICAgIERhdGFMb2FkVG9rZW4gbV9kYXRhTG9hZFRva2VuOwogICAgIGJvb2wgbV93YWl0aW5n
Rm9yQ29udGVudFBvbGljeSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JOYXZpZ2F0
aW9uUG9saWN5IHsgZmFsc2UgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsMTEgKzI2Niw5IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKCkKICAgICBBU1NFUlQodXJsLnByb3RvY29s
SXNEYXRhKCkpOwogCiAgICAgRGF0YVVSTERlY29kZXI6OlNjaGVkdWxlQ29udGV4dCBzY2hlZHVs
ZUNvbnRleHQ7Ci0jaWYgSEFWRShSVU5MT09QX1RJTUVSKQotICAgIGlmIChhdXRvIHBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2NoZWR1bGVkUGFpcnMgPSBwYWdl
LT5zY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSkKLSAgICAgICAgICAgIHNjaGVkdWxlQ29udGV4dC5z
Y2hlZHVsZWRQYWlycyA9ICpzY2hlZHVsZWRQYWlyczsKLSAgICB9CisjaWYgVVNFKENPQ09BX0VW
RU5UX0xPT1ApCisgICAgaWYgKGF1dG8gcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAg
c2NoZWR1bGVDb250ZXh0LnNjaGVkdWxlZFBhaXJzID0gKnBhZ2UtPnNjaGVkdWxlZFJ1bkxvb3BQ
YWlycygpOwogI2VuZGlmCiAgICAgYXV0byBtb2RlID0gRGF0YVVSTERlY29kZXI6Ok1vZGU6Okxl
Z2FjeTsKICAgICBpZiAobV9yZXF1ZXN0LnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6
UmVxdWVzdGVyOjpGZXRjaCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
RGF0YVVSTERlY29kZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRGF0YVVSTERlY29kZXIuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTcsNTIgKzk3LDYgQEAgcHVibGljOgogICAgIFJlc3VsdCByZXN1bHQ7CiB9OwogCi0j
aWYgSEFWRShSVU5MT09QX1RJTUVSKQotCi1jbGFzcyBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyPiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2goc3RkOjp1bmlxdWVfcHRyPERlY29k
ZVRhc2s+IGRlY29kZVRhc2spCi0gICAgewotICAgICAgICBSZWY8RGVjb2RpbmdSZXN1bHREaXNw
YXRjaGVyPiBkaXNwYXRjaGVyID0gYWRvcHRSZWYoKm5ldyBEZWNvZGluZ1Jlc3VsdERpc3BhdGNo
ZXIoV1RGTW92ZShkZWNvZGVUYXNrKSkpOwotICAgICAgICBkaXNwYXRjaGVyLT5zdGFydFRpbWVy
KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIERlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcihzdGQ6
OnVuaXF1ZV9wdHI8RGVjb2RlVGFzaz4gZGVjb2RlVGFzaykKLSAgICAgICAgOiBtX3RpbWVyKCp0
aGlzLCAmRGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyOjp0aW1lckZpcmVkKQotICAgICAgICAsIG1f
ZGVjb2RlVGFzayhXVEZNb3ZlKGRlY29kZVRhc2spKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lk
IHN0YXJ0VGltZXIoKQotICAgIHsKLSAgICAgICAgLy8gS2VlcCBhbGl2ZSB1bnRpbCB0aGUgdGlt
ZXIgaGFzIGZpcmVkLgotICAgICAgICByZWYoKTsKLQotICAgICAgICBhdXRvIHNjaGVkdWxlZFBh
aXJzID0gbV9kZWNvZGVUYXNrLT5zY2hlZHVsZUNvbnRleHQuc2NoZWR1bGVkUGFpcnM7Ci0gICAg
ICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci0gICAgICAgIG1fdGltZXIuc2NoZWR1bGUo
c2NoZWR1bGVkUGFpcnMpOwotICAgIH0KLQotICAgIHZvaWQgdGltZXJGaXJlZCgpCi0gICAgewot
ICAgICAgICBpZiAobV9kZWNvZGVUYXNrLT5yZXN1bHQuZGF0YSkKLSAgICAgICAgICAgIG1fZGVj
b2RlVGFzay0+Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShtX2RlY29kZVRhc2stPnJlc3VsdCkp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2RlY29kZVRhc2stPmNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7Ci0KLSAgICAgICAgLy8gRW5zdXJlIERlY29kZVRhc2sgZ2V0cyBkZWxldGVkIGlu
IHRoZSBtYWluIHRocmVhZC4KLSAgICAgICAgbV9kZWNvZGVUYXNrID0gbnVsbHB0cjsKLQotICAg
ICAgICBkZXJlZigpOwotICAgIH0KLQotICAgIFJ1bkxvb3BUaW1lcjxEZWNvZGluZ1Jlc3VsdERp
c3BhdGNoZXI+IG1fdGltZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IG1fZGVj
b2RlVGFzazsKLX07Ci0KLSNlbmRpZiAvLyBIQVZFKFJVTkxPT1BfVElNRVIpCi0KIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8RGVjb2RlVGFzaz4gY3JlYXRlRGVjb2RlVGFzayhjb25zdCBVUkwmIHVy
bCwgY29uc3QgU2NoZWR1bGVDb250ZXh0JiBzY2hlZHVsZUNvbnRleHQsIERlY29kZUNvbXBsZXRp
b25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
RGVjb2RlVGFzaz4oCkBAIC0xOTQsMTYgKzE0OCwyMiBAQCB2b2lkIGRlY29kZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU2NoZWR1CiAgICAgICAgICAgICAgICAgZGVjb2RlRXNjYXBlZCgqZGVjb2Rl
VGFzayk7CiAgICAgICAgIH0KIAotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICAgICAgRGVj
b2RpbmdSZXN1bHREaXNwYXRjaGVyOjpkaXNwYXRjaChXVEZNb3ZlKGRlY29kZVRhc2spKTsKLSNl
bHNlCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2RlY29kZVRhc2sgPSBXVEZNb3ZlKGRlY29k
ZVRhc2spXSB7CisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisgICAgICAgIGF1dG8gc2NoZWR1
bGVkUGFpcnMgPSBkZWNvZGVUYXNrLT5zY2hlZHVsZUNvbnRleHQuc2NoZWR1bGVkUGFpcnM7Cisj
ZW5kaWYKKworICAgICAgICBhdXRvIGNhbGxDb21wbGV0aW9uSGFuZGxlciA9IFtkZWNvZGVUYXNr
ID0gV1RGTW92ZShkZWNvZGVUYXNrKV0gewogICAgICAgICAgICAgaWYgKCFkZWNvZGVUYXNrLT5y
ZXN1bHQuZGF0YSkgewogICAgICAgICAgICAgICAgIGRlY29kZVRhc2stPmNvbXBsZXRpb25IYW5k
bGVyKHsgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZGVjb2RlVGFzay0+Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkZWNvZGVUYXNrLT5y
ZXN1bHQpKTsKLSAgICAgICAgfSk7CisgICAgICAgIH07CisKKyNpZiBVU0UoQ09DT0FfRVZFTlRf
TE9PUCkKKyAgICAgICAgUnVuTG9vcDo6ZGlzcGF0Y2goc2NoZWR1bGVkUGFpcnMsIFdURk1vdmUo
Y2FsbENvbXBsZXRpb25IYW5kbGVyKSk7CisjZWxzZQorICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goV1RGTW92ZShjYWxsQ29tcGxldGlvbkhhbmRsZXIpKTsKICNlbmRpZgogICAgIH0p
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuaAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBA
CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEhBVkUoUlVOTE9PUF9U
SU1FUikKLSNpbmNsdWRlIDx3dGYvUnVuTG9vcFRpbWVyLmg+CisjaWYgVVNFKENPQ09BX0VWRU5U
X0xPT1ApCisjaW5jbHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IFJlc3VsdCB7CiAKIHVzaW5nIERl
Y29kZUNvbXBsZXRpb25IYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxSZXN1
bHQ+KT47CiBzdHJ1Y3QgU2NoZWR1bGVDb250ZXh0IHsKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIp
CisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCiAgICAgU2NoZWR1bGVQYWlySGFzaFNldCBzY2hl
ZHVsZWRQYWlyczsKICNlbmRpZgogfTsK
</data>
<flag name="review"
          id="420026"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>404690</attachid>
            <date>2020-07-19 17:29:28 -0700</date>
            <delta_ts>2020-07-19 18:22:02 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-214340-20200719172927.patch</filename>
            <type>text/plain</type>
            <size>38658</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjQ1NDQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDIwLTA3LTE3ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIFJ1bkxv
b3AgVGltZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDM0MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIFJ1bkxvb3A6OlRpbWVyIHdpbnMuIFJ1bkxvb3BUaW1lciBsb3Nlcy4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisgICAgICAgICogd3RmL1BsYXRm
b3JtTWFjLmNtYWtlOiBSZW1vdmUgUnVuTG9vcFRpbWVyLgorCisgICAgICAgICogd3RmL1J1bkxv
b3AuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKTogV2hpbGUgd2Un
cmUgaGVyZS4gbGV0J3MgbWFrZSBkaXNwYXRjaEFmdGVyCisgICAgICAgIGF2YWlsYWJsZSBvbiBh
bGwgcGxhdGZvcm1zLiBXZSBoYWQgY3Jvc3MtcGxhdGZvcm0gY29kZSwgYnV0IGl0IHdhcworICAg
ICAgICBmYWN0b3JlZCB0byBiZSBuZWVkbGVzc2x5IHBsYXRmb3JtLXNwZWNpZmljLgorCisgICAg
ICAgICogd3RmL1J1bkxvb3AuaDogQWRkZWQgYSB2ZXJzaW9uIG9mIGRpc3BhdGNoKCkgdGhhdCBh
Y2NlcHRzIGEKKyAgICAgICAgU2NoZWR1bGVQYWlySGFzaFNldCBmb3IgQ29jb2EuIFJlbW92ZWQg
c29tZSBpbmRpcmVjdGlvbiBmcm9tIHRpbWVyCisgICAgICAgIHN0dWZmLCBzaW5jZSBpdCB3YXMg
Y29uZnVzaW5nIG1lLiBDb25zaXN0ZW50bHkgbmFtZWQgYWxsIHRpbWUgaW50ZXJ2YWxzCisgICAg
ICAgICJpbnRlcnZhbCIuCisKKyAgICAgICAgKiB3dGYvUnVuTG9vcFRpbWVyLmg6IFJlbW92ZWQu
CisKKyAgICAgICAgKiB3dGYvY2YvUnVuTG9vcENGLmNwcDoKKyAgICAgICAgKFdURjo6Y3JlYXRl
VGltZXIpOiBGYWN0b3JlZCBvdXQgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGRpc3BhdGNoKCkgdG8g
dXNlLgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaCk6IFRoaXMgZnVuY3Rpb24gaXMg
dGhlIG1lYXQgb2YgdGhlIHBhdGNoLiBJdCdzCisgICAgICAgIHRoZSBvbmx5IHVuaXF1ZSBmdW5j
dGlvbmFsaXR5IHRoYXQgUnVuTG9vcFRpbWVyIHVzZWQgdG8gcHJvdmlkZS4KKyAgICAgICAgKFdU
Rjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6IEFkb3B0ZWQgaGVscGVyIGZ1bmN0aW9uLgor
ICAgICAgICAoV1RGOjpSdW5Mb29wOjpydW5Gb3JEdXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZCk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiB3dGYvY2YvUnVuTG9vcFRpbWVyQ0YuY3BwOiBSZW1vdmVkLgorCisgICAgICAgICogd3Rm
L2dlbmVyaWMvUnVuTG9vcEdlbmVyaWMuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNw
YXRjaEFmdGVyKTogRGVsZXRlZC4gTm93IGNyb3NzLXBsYXRmb3JtLgorCisgICAgICAgICogd3Rm
L2dsaWIvUnVuTG9vcEdMaWIuY3BwOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6
OnVwZGF0ZVJlYWR5VGltZSk6CisgICAgICAgIChXVEY6OlJ1bkxvb3A6OlRpbWVyQmFzZTo6c3Rh
cnQpOgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpUaW1lckJhc2U6OnN0b3ApOgorICAgICAgICAo
V1RGOjpEaXNwYXRjaEFmdGVyQ29udGV4dDo6RGlzcGF0Y2hBZnRlckNvbnRleHQpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpEaXNwYXRjaEFmdGVyQ29udGV4dDo6ZGlzcGF0Y2gpOiBEZWxldGVk
LgorICAgICAgICAoV1RGOjpSdW5Mb29wOjpkaXNwYXRjaEFmdGVyKTogRGVsZXRlZC4gTm93IGNy
b3NzLXBsYXRmb3JtLgorCisgICAgICAgICogd3RmL3dpbi9SdW5Mb29wV2luLmNwcDoKKyAgICAg
ICAgKFdURjo6UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydCk6CisgICAgICAgIChXVEY6OlJ1bkxv
b3A6OmRpc3BhdGNoQWZ0ZXIpOiBEZWxldGVkLiBOb3cgY3Jvc3MtcGxhdGZvcm0uCisKIDIwMjAt
MDctMTcgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAg
ICAgRG9uJ3QgaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+IGluIFNWR1BhcnNlclV0aWxp
dGllcy5oCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTExMSw3ICsxMTEsNiBAQAogCQlBM0U0REQ5MzFGM0E4MDM0
MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBM0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5j
cHAgKi87IH07CiAJCUEzRUU1QzNBMjFGRkFDNUYwMEZBQkQ2MSAvKiBPU0FsbG9jYXRvclBPU0lY
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzRUU1
QzM5MjFGRkFDNUUwMEZBQkQ2MSAvKiBPU0FsbG9jYXRvclBPU0lYLmNwcCAqLzsgfTsKIAkJQTNF
RTVDM0QyMUZGQUM3RDAwRkFCRDYxIC8qIFNjaGVkdWxlUGFpckNGLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzRUU1QzNCMjFGRkFDN0MwMEZBQkQ2
MSAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgKi87IH07Ci0JCUEzRUU1QzNFMjFGRkFDN0QwMEZBQkQ2
MSAvKiBSdW5Mb29wVGltZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBM0VFNUMzQzIxRkZBQzdEMDBGQUJENjEgLyogUnVuTG9vcFRpbWVyQ0Yu
Y3BwICovOyB9OwogCQlBM0VFNUM0MDIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNFRTVD
M0YyMUZGQUNBMjAwRkFCRDYxIC8qIFNjaGVkdWxlUGFpck1hYy5tbSAqLzsgfTsKIAkJQTVCQTE1
RjMxODI0MzNBOTAwQTgyRTY5IC8qIFN0cmluZ0NvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVCQTE1RjIxODI0MzNBOTAwQTgyRTY5IC8qIFN0
cmluZ0NvY29hLm1tICovOyB9OwogCQlBNUJBMTVGNTE4MjQzNDgwMDBBODJFNjkgLyogU3RyaW5n
SW1wbENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTVCQTE1RjQxODI0MzQ4MDAwQTgyRTY5IC8qIFN0cmluZ0ltcGxDb2NvYS5tbSAqLzsgfTsK
QEAgLTMxMyw3ICszMTIsNiBAQAogCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSQU1TaXplLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NDdBRUM1MThGQ0U1NzcwMEIzRDdGRiAvKiBGb3VuZGF0
aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBh
dGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291
cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMTQ0N0FFQ0ExOEZDRTVCOTAwQjNEN0ZGIC8q
IGxpYmljdWNvcmUuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmljdWNvcmUuZHls
aWI7IHBhdGggPSAvdXNyL2xpYi9saWJpY3Vjb3JlLmR5bGliOyBzb3VyY2VUcmVlID0gIjxhYnNv
bHV0ZT4iOyB9OwotCQkxNDY5NDE5MDE2RUFBRjZEMDAyNEUxNDYgLyogUnVuTG9vcFRpbWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bkxvb3BUaW1lci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDY5NDE5NDE2RUFBRkY4MDAyNEUxNDYgLyogU2NoZWR1
bGVQYWlyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjaGVkdWxlUGFpci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDY5NDE5QTE2RUFCMTBBMDAyNEUxNDYg
LyogQXV0b2RyYWluZWRQb29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
dG9kcmFpbmVkUG9vbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDY5NDE5QjE2
RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEF1dG9kcmFpbmVkUG9vbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC01MTcsNyArNTE1LDYgQEAKIAkJQTNFNEREOTIxRjNBODAzNDAwREVEMEI0
IC8qIFRleHRTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFN0
cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0VFNUMzOTIxRkZBQzVFMDBG
QUJENjEgLyogT1NBbGxvY2F0b3JQT1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBPU0FsbG9jYXRvclBPU0lYLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTNFRTVDM0IyMUZGQUM3QzAwRkFCRDYxIC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjaGVkdWxlUGFpckNGLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTNFRTVDM0MyMUZGQUM3RDAwRkFCRDYxIC8qIFJ1
bkxvb3BUaW1lckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1
bkxvb3BUaW1lckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNFRTVDM0Yy
MUZGQUNBMjAwRkFCRDYxIC8qIFNjaGVkdWxlUGFpck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjaGVkdWxlUGFpck1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTUwOThBRkYxQzE2OUUwNzAwMDg3Nzk3IC8qIFNhbmRib3hTUEkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FuZGJveFNQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEIwMTFDMTZBNEY5MDAwODc3OTcgLyogU2VjdXJpdHlT
UEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjdXJpdHlTUEkuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxOSw3ICs4MTYsNiBAQAogCQkJCUEzMzFEOTVD
MjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCUMyQkNGQzQxMUY2
MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNwcCAqLywKIAkJCQkyQ0RFRDBFRTE4MTE1QzM4
MDA0REJBNzAgLyogUnVuTG9vcENGLmNwcCAqLywKLQkJCQlBM0VFNUMzQzIxRkZBQzdEMDBGQUJE
NjEgLyogUnVuTG9vcFRpbWVyQ0YuY3BwICovLAogCQkJCUEzRUU1QzNCMjFGRkFDN0MwMEZBQkQ2
MSAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgKi8sCiAJCQkJMUFGREU2NDcxOTUyMDFDMzAwQzQ4RkZB
IC8qIFR5cGVDYXN0c0NGLmggKi8sCiAJCQkJNUMxRjA1OTQyMTY0MzdCMzAwMzkzMDJDIC8qIFVS
TENGLmNwcCAqLywKQEAgLTEyMDUsNyArMTIwMSw2IEBACiAJCQkJQThBNDczMDUxNTFBODI1QjAw
NDEyM0ZGIC8qIFJldGFpblB0ci5oICovLAogCQkJCTJDREVEMEYxMTgxMTVDODUwMDREQkE3MCAv
KiBSdW5Mb29wLmNwcCAqLywKIAkJCQkyQ0RFRDBGMjE4MTE1Qzg1MDA0REJBNzAgLyogUnVuTG9v
cC5oICovLAotCQkJCTE0Njk0MTkwMTZFQUFGNkQwMDI0RTE0NiAvKiBSdW5Mb29wVGltZXIuaCAq
LywKIAkJCQkxNEYzQjBGNjE1RTQ1RTQ2MDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpYy5o
ICovLAogCQkJCTE0Njk0MTk0MTZFQUFGRjgwMDI0RTE0NiAvKiBTY2hlZHVsZVBhaXIuaCAqLywK
IAkJCQkxQTM1MjRBQTFENjNBMkZGMDAzMTcyOUIgLyogU2NvcGUuaCAqLywKQEAgLTE3MjQsNyAr
MTcxOSw2IEBACiAJCQkJRTM5MkZBMjcyMkU5MkJGRjAwRUNEQzczIC8qIFJlc291cmNlVXNhZ2VD
b2NvYS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQ0RFRDBGMzE4MTE1Qzg1MDA0REJBNzAgLyog
UnVuTG9vcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQ0RFRDBFRjE4MTE1QzM4MDA0REJBNzAg
LyogUnVuTG9vcENGLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUEzRUU1QzNFMjFGRkFDN0QwMEZB
QkQ2MSAvKiBSdW5Mb29wVGltZXJDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQ0E4NUNBOTI0
MUIwQjI2MDA3MUMyRjUgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTNFRTVDM0QyMUZGQUM3RDAwRkFCRDYxIC8qIFNjaGVkdWxlUGFpckNG
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzRUU1QzQwMjFGRkFDQTIwMEZBQkQ2MSAvKiBTY2hl
ZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEzLDcgKzIxMyw2IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBS
ZXNvdXJjZVVzYWdlLmgKICAgICBSZXRhaW5QdHIuaAogICAgIFJ1bkxvb3AuaAotICAgIFJ1bkxv
b3BUaW1lci5oCiAgICAgU0hBMS5oCiAgICAgU2F0dXJhdGVkQXJpdGhtZXRpYy5oCiAgICAgU2No
ZWR1bGVQYWlyLmgKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCShyZXZpc2lvbiAyNjQzMTUpCisr
KyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTAg
KzYxLDYgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotI2RlZmluZSBIQVZFX1JVTkxP
T1BfVElNRVIgMQotI2VuZGlmCi0KLSNpZiBQTEFURk9STShNQUMpCiAjZGVmaW5lIEhBVkVfU0VD
X0tFWUNIQUlOIDEKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5j
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybU1hYy5jbWFrZQkocmV2
aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAgbGlzdChBUFBFTkQgV1RGX1NPVVJDRVMKICAgICBj
Zi9GaWxlU3lzdGVtQ0YuY3BwCiAgICAgY2YvTGFuZ3VhZ2VDRi5jcHAKICAgICBjZi9SdW5Mb29w
Q0YuY3BwCi0gICAgY2YvUnVuTG9vcFRpbWVyQ0YuY3BwCiAgICAgY2YvU2NoZWR1bGVQYWlyQ0Yu
Y3BwCiAgICAgY2YvVVJMQ0YuY3BwCiAKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1J1bkxvb3AuY3BwCShyZXZpc2lvbiAyNjQz
MTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQx
LDYgKzE0MSwxNiBAQCB2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoKEZ1bmN0aW9uPHZvaWQgKCk+CiAg
ICAgICAgIHdha2VVcCgpOwogfQogCit2b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25k
cyBkZWxheSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQoreworICAgIGF1dG8gdGltZXIg
PSBuZXcgRGlzcGF0Y2hUaW1lcigqdGhpcyk7CisgICAgdGltZXItPnNldEZ1bmN0aW9uKFt0aW1l
ciwgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0geworICAgICAgICBmdW5jdGlvbigpOwor
ICAgICAgICBkZWxldGUgdGltZXI7CisgICAgfSk7CisgICAgdGltZXItPnN0YXJ0T25lU2hvdChk
ZWxheSk7Cit9CisKIHZvaWQgUnVuTG9vcDo6c3VzcGVuZEZ1bmN0aW9uRGlzcGF0Y2hGb3JDdXJy
ZW50Q3ljbGUoKQogewogICAgIC8vIERvbid0IHN1c3BlbmQgaWYgdGhlcmUgYXJlIGFscmVhZHkg
c3VzcGVuZGVkIGZ1bmN0aW9ucyB0byBhdm9pZCB1bmV4ZWN1dGVkIGZ1bmN0aW9uIHBpbGUtdXAu
CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dU
Ri93dGYvUnVuTG9vcC5oCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi9SdW5M
b29wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEyIEBACiAKIG5hbWVzcGFjZSBXVEYg
ewogCisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCitjbGFzcyBTY2hlZHVsZVBhaXI7CitzdHJ1
Y3QgU2NoZWR1bGVQYWlySGFzaDsKK3VzaW5nIFNjaGVkdWxlUGFpckhhc2hTZXQgPSBIYXNoU2V0
PFJlZlB0cjxTY2hlZHVsZVBhaXI+LCBTY2hlZHVsZVBhaXJIYXNoPjsKKyNlbmRpZgorCiAjaWYg
VVNFKENGKQogdXNpbmcgUnVuTG9vcE1vZGUgPSBDRlN0cmluZ1JlZjsKICNkZWZpbmUgRGVmYXVs
dFJ1bkxvb3BNb2RlIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZQpAQCAtNzMsNyArNzksMTEgQEAgcHVi
bGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBpc01haW4oKTsKICAgICB+
UnVuTG9vcCgpIGZpbmFsOwogCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2go
RnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBk
aXNwYXRjaChGdW5jdGlvbjx2b2lkKCk+JiYpOworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lk
IGRpc3BhdGNoQWZ0ZXIoU2Vjb25kcywgRnVuY3Rpb248dm9pZCgpPiYmKTsKKyNpZiBVU0UoQ09D
T0FfRVZFTlRfTE9PUCkKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIHZvaWQgZGlzcGF0
Y2goY29uc3QgU2NoZWR1bGVQYWlySGFzaFNldCYsIEZ1bmN0aW9uPHZvaWQoKT4mJik7CisjZW5k
aWYKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBydW4oKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzdG9wKCk7CkBAIC04NCwxMCArOTQsNiBAQCBwdWJsaWM6CiAg
ICAgZW51bSBjbGFzcyBDeWNsZVJlc3VsdCB7IENvbnRpbnVlLCBTdG9wIH07CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIEN5Y2xlUmVzdWx0IHN0YXRpYyBjeWNsZShSdW5Mb29wTW9kZSA9IERlZmF1
bHRSdW5Mb29wTW9kZSk7CiAKLSNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKLSAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBydW5Gb3JEdXJhdGlvbihTZWNvbmRzIGR1cmF0aW9uKTsKLSNlbmRp
ZgotCiAjaWYgVVNFKEdMSUJfRVZFTlRfTE9PUCkKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgR01h
aW5Db250ZXh0KiBtYWluQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkNvbnRleHQuZ2V0
KCk7IH0KICNlbmRpZgpAQCAtMTAyLDEwICsxMDgsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgcmVnaXN0ZXJSdW5Mb29wTWVzc2FnZVdpbmRvd0NsYXNzKCk7CiAjZW5kaWYKIAotI2lmICFV
U0UoQ09DT0FfRVZFTlRfTE9PUCkKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkaXNwYXRj
aEFmdGVyKFNlY29uZHMsIEZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0jZW5kaWYKLQogICAgIGNsYXNz
IFRpbWVyQmFzZSB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBm
cmllbmQgY2xhc3MgUnVuTG9vcDsKQEAgLTExMyw4ICsxMTUsOCBAQCBwdWJsaWM6CiAgICAgICAg
IFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBUaW1lckJhc2UoUnVuTG9vcCYpOwogICAgICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+VGltZXJCYXNlKCk7CiAKLSAgICAgICAgdm9p
ZCBzdGFydFJlcGVhdGluZyhTZWNvbmRzIHJlcGVhdEludGVydmFsKSB7IHN0YXJ0SW50ZXJuYWwo
cmVwZWF0SW50ZXJ2YWwsIHRydWUpOyB9Ci0gICAgICAgIHZvaWQgc3RhcnRPbmVTaG90KFNlY29u
ZHMgaW50ZXJ2YWwpIHsgc3RhcnRJbnRlcm5hbChpbnRlcnZhbCwgZmFsc2UpOyB9CisgICAgICAg
IHZvaWQgc3RhcnRSZXBlYXRpbmcoU2Vjb25kcyBpbnRlcnZhbCkgeyBzdGFydChzdGQ6Om1heChp
bnRlcnZhbCwgMF9zKSwgdHJ1ZSk7IH0KKyAgICAgICAgdm9pZCBzdGFydE9uZVNob3QoU2Vjb25k
cyBpbnRlcnZhbCkgeyBzdGFydChzdGQ6Om1heChpbnRlcnZhbCwgMF9zKSwgZmFsc2UpOyB9CiAK
ICAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RvcCgpOwogICAgICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OwpAQCAtMTI4LDEyICsxMzAsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgc3RhcnRJbnRlcm5h
bChTZWNvbmRzIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGFydChzdGQ6Om1heChuZXh0RmlyZUludGVydmFsLCAwX3MpLCByZXBlYXQpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnQoU2Vjb25k
cyBuZXh0RmlyZUludGVydmFsLCBib29sIHJlcGVhdCk7CisgICAgICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHN0YXJ0KFNlY29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0KTsKIAogICAgICAg
ICBSZWY8UnVuTG9vcD4gbV9ydW5Mb29wOwogCkBAIC0xNDUsMTMgKzE0MiwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIGJvb2wgbV9pc1JlcGVhdGluZyB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9p
c0FjdGl2ZSB7IGZhbHNlIH07CiAjZWxpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKLSAgICAgICAg
c3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOwogICAgICAg
ICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7CiAjZWxpZiBVU0UoR0xJQl9F
VkVOVF9MT09QKQogICAgICAgICB2b2lkIHVwZGF0ZVJlYWR5VGltZSgpOwogICAgICAgICBHUmVm
UHRyPEdTb3VyY2U+IG1fc291cmNlOwogICAgICAgICBib29sIG1faXNSZXBlYXRpbmcgeyBmYWxz
ZSB9OwotICAgICAgICBTZWNvbmRzIG1fZmlyZUludGVydmFsIHsgMCB9OworICAgICAgICBTZWNv
bmRzIG1faW50ZXJ2YWwgeyAwIH07CiAjZWxpZiBVU0UoR0VORVJJQ19FVkVOVF9MT09QKQogICAg
ICAgICBib29sIGlzQWN0aXZlKGNvbnN0IEFic3RyYWN0TG9ja2VyJikgY29uc3Q7CiAgICAgICAg
IHZvaWQgc3RvcChjb25zdCBBYnN0cmFjdExvY2tlciYpOwpAQCAtMTgyLDcgKzE3OCw5IEBAIHB1
YmxpYzoKICAgICAgICAgVGltZXJGaXJlZENsYXNzKiBtX29iamVjdDsKICAgICB9OwogCi0jaWYg
VVNFKFdJTkRPV1NfRVZFTlRfTE9PUCkKK3ByaXZhdGU6CisgICAgY2xhc3MgSG9sZGVyOworCiAg
ICAgY2xhc3MgRGlzcGF0Y2hUaW1lciBmaW5hbCA6IHB1YmxpYyBUaW1lckJhc2UgewogICAgIHB1
YmxpYzoKICAgICAgICAgRGlzcGF0Y2hUaW1lcihSdW5Mb29wJiBydW5Mb29wKQpAQCAtMTk5LDEx
ICsxOTcsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9u
OwogICAgIH07Ci0jZW5kaWYKIAotICAgIGNsYXNzIEhvbGRlcjsKLQotcHJpdmF0ZToKICAgICBS
dW5Mb29wKCk7CiAKICAgICB2b2lkIHBlcmZvcm1Xb3JrKCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9SdW5Mb29wVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SdW5Mb29wVGlt
ZXIuaAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvUnVuTG9vcFRpbWVyLmgJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL1NjaGVk
dWxlUGFpci5oPgotI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+Ci0KLSNpZiBVU0UoQ0YpCi0jaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXVEYgewotCi0vLyBU
aW1lIGludGVydmFscyBhcmUgYWxsIGluIHNlY29uZHMuCi0KLWNsYXNzIFJ1bkxvb3BUaW1lckJh
c2UgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJ1bkxvb3BUaW1lckJhc2UpOwotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIFdURl9FWFBPUlRfUFJJVkFURSBS
dW5Mb29wVGltZXJCYXNlKCk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgflJ1bkxv
b3BUaW1lckJhc2UoKTsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNjaGVkdWxlKGNv
bnN0IFNjaGVkdWxlUGFpciopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHNjaGVkdWxl
KGNvbnN0IFNjaGVkdWxlUGFpckhhc2hTZXQmKTsKLQotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2
b2lkIHN0YXJ0KFNlY29uZHMgbmV4dEZpcmVJbnRlcnZhbCwgU2Vjb25kcyByZXBlYXRJbnRlcnZh
bCk7Ci0KLSAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nKFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwpIHsg
c3RhcnQocmVwZWF0SW50ZXJ2YWwsIHJlcGVhdEludGVydmFsKTsgfQotICAgIHZvaWQgc3RhcnRP
bmVTaG90KFNlY29uZHMgaW50ZXJ2YWwpIHsgc3RhcnQoaW50ZXJ2YWwsIDBfcyk7IH0KLQotICAg
IFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHN0b3AoKTsKLSAgICBib29sIGlzQWN0aXZlKCkgY29u
c3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSA9IDA7Ci0KLXByaXZhdGU6Ci0jaWYgVVNF
KENGKQotICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gbV90aW1lcjsKLSNlbmRpZgot
fTsKLQotLy8gRklYTUU6IFRoaXMgZG9lc24ndCBoYXZlIHRvIGJlIGEgY2xhc3MgdGVtcGxhdGUu
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVGltZXJGaXJlZENsYXNzPiBjbGFzcyBSdW5Mb29wVGltZXIg
OiBwdWJsaWMgUnVuTG9vcFRpbWVyQmFzZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkIChU
aW1lckZpcmVkQ2xhc3M6OipUaW1lckZpcmVkRnVuY3Rpb24pKCk7Ci0KLSAgICBSdW5Mb29wVGlt
ZXIoVGltZXJGaXJlZENsYXNzJiBvLCBUaW1lckZpcmVkRnVuY3Rpb24gZikKLSAgICAgICAgOiBt
X29iamVjdCgmbyksIG1fZnVuY3Rpb24oZikgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZmlyZWQo
KSB7IChtX29iamVjdC0+Km1fZnVuY3Rpb24pKCk7IH0KLQotcHJpdmF0ZToKLSAgICBUaW1lckZp
cmVkQ2xhc3MqIG1fb2JqZWN0OwotICAgIFRpbWVyRmlyZWRGdW5jdGlvbiBtX2Z1bmN0aW9uOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdURjo6UnVuTG9vcFRpbWVyOwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dURi93dGYvUnVuTG9vcFRpbWVyLmgKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9jZi9SdW5Mb29wQ0Yu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5jcHAJKHJldmlz
aW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BDRi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDkgKzI5LDE3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZv
dW5kYXRpb24uaD4KICNpbmNsdWRlIDxkaXNwYXRjaC9kaXNwYXRjaC5oPgogI2luY2x1ZGUgPHd0
Zi9BdXRvZHJhaW5lZFBvb2wuaD4KKyNpbmNsdWRlIDx3dGYvU2NoZWR1bGVQYWlyLmg+CiAKIG5h
bWVzcGFjZSBXVEYgewogCitzdGF0aWMgUmV0YWluUHRyPENGUnVuTG9vcFRpbWVyUmVmPiBjcmVh
dGVUaW1lcihTZWNvbmRzIGludGVydmFsLCBib29sIHJlcGVhdCwgdm9pZCgqdGltZXJGaXJlZCko
Q0ZSdW5Mb29wVGltZXJSZWYsIHZvaWQqKSwgdm9pZCogaW5mbykKK3sKKyAgICBDRlJ1bkxvb3BU
aW1lckNvbnRleHQgY29udGV4dCA9IHsgMCwgaW5mbywgMCwgMCwgMCB9OworICAgIFNlY29uZHMg
cmVwZWF0SW50ZXJ2YWwgPSByZXBlYXQgPyBpbnRlcnZhbCA6IDBfczsKKyAgICByZXR1cm4gYWRv
cHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRkFic29sdXRl
VGltZUdldEN1cnJlbnQoKSArIGludGVydmFsLnNlY29uZHMoKSwgcmVwZWF0SW50ZXJ2YWwuc2Vj
b25kcygpLCAwLCAwLCB0aW1lckZpcmVkLCAmY29udGV4dCkpOworfQorCiB2b2lkIFJ1bkxvb3A6
OnBlcmZvcm1Xb3JrKHZvaWQqIGNvbnRleHQpCiB7CiAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7
CkBAIC01MSwxMSArNTksNiBAQCBSdW5Mb29wOjp+UnVuTG9vcCgpCiAgICAgQ0ZSdW5Mb29wU291
cmNlSW52YWxpZGF0ZShtX3J1bkxvb3BTb3VyY2UuZ2V0KCkpOwogfQogCi12b2lkIFJ1bkxvb3A6
OnJ1bkZvckR1cmF0aW9uKFNlY29uZHMgZHVyYXRpb24pCi17Ci0gICAgQ0ZSdW5Mb29wUnVuSW5N
b2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgZHVyYXRpb24uc2Vjb25kcygpLCB0cnVlKTsKLX0K
LQogdm9pZCBSdW5Mb29wOjp3YWtlVXAoKQogewogICAgIENGUnVuTG9vcFNvdXJjZVNpZ25hbCht
X3J1bkxvb3BTb3VyY2UuZ2V0KCkpOwpAQCAtODEsMjAgKzg0LDIzIEBAIHZvaWQgUnVuTG9vcDo6
c3RvcCgpCiAgICAgQ0ZSdW5Mb29wU3RvcChtX3J1bkxvb3AuZ2V0KCkpOwogfQogCi0vLyBSdW5M
b29wOjpUaW1lcgotCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6dGltZXJGaXJlZChDRlJ1bkxv
b3BUaW1lclJlZiBjZlRpbWVyLCB2b2lkKiBjb250ZXh0KQordm9pZCBSdW5Mb29wOjpkaXNwYXRj
aChjb25zdCBTY2hlZHVsZVBhaXJIYXNoU2V0JiBzY2hlZHVsZVBhaXJzLCBGdW5jdGlvbjx2b2lk
KCk+JiYgZnVuY3Rpb24pCiB7Ci0gICAgVGltZXJCYXNlKiB0aW1lciA9IHN0YXRpY19jYXN0PFRp
bWVyQmFzZSo+KGNvbnRleHQpOworICAgIGF1dG8gdGltZXIgPSBjcmVhdGVUaW1lcigwX3MsIGZh
bHNlLCBbXSAoQ0ZSdW5Mb29wVGltZXJSZWYgdGltZXIsIHZvaWQqIGNvbnRleHQpIHsKKyAgICAg
ICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CiAKLSAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKyAg
ICAgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKHRpbWVyKTsKIAotICAgIGlmICghQ0ZSdW5M
b29wVGltZXJEb2VzUmVwZWF0KGNmVGltZXIpKQotICAgICAgICB0aW1lci0+c3RvcCgpOworICAg
ICAgICBGdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKHN0YXRpY19jYXN0PEZ1bmN0aW9uPHZvaWQo
KT46OkltcGwqPihjb250ZXh0KSk7CisgICAgICAgIGZ1bmN0aW9uKCk7CisgICAgfSwgZnVuY3Rp
b24ubGVha0ltcGwoKSk7CiAKLSAgICB0aW1lci0+ZmlyZWQoKTsKKyAgICBmb3IgKGF1dG8mIHNj
aGVkdWxlUGFpciA6IHNjaGVkdWxlUGFpcnMpCisgICAgICAgIENGUnVuTG9vcEFkZFRpbWVyKHNj
aGVkdWxlUGFpci0+cnVuTG9vcCgpLCB0aW1lci5nZXQoKSwgc2NoZWR1bGVQYWlyLT5tb2RlKCkp
OwogfQogCisvLyBSdW5Mb29wOjpUaW1lcgorCiBSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFz
ZShSdW5Mb29wJiBydW5Mb29wKQogICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiB7CkBAIC0xMDUs
MTQgKzExMSwyMCBAQCBSdW5Mb29wOjpUaW1lckJhc2U6On5UaW1lckJhc2UoKQogICAgIHN0b3Ao
KTsKIH0KIAotdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMgbmV4dEZpcmVJ
bnRlcnZhbCwgYm9vbCByZXBlYXQpCit2b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoU2Vj
b25kcyBpbnRlcnZhbCwgYm9vbCByZXBlYXQpCiB7CiAgICAgaWYgKG1fdGltZXIpCiAgICAgICAg
IHN0b3AoKTsKLSAgICAKLSAgICBDRlJ1bkxvb3BUaW1lckNvbnRleHQgY29udGV4dCA9IHsgMCwg
dGhpcywgMCwgMCwgMCB9OwotICAgIFNlY29uZHMgcmVwZWF0SW50ZXJ2YWwgPSByZXBlYXQgPyBu
ZXh0RmlyZUludGVydmFsIDogMF9zOwotICAgIG1fdGltZXIgPSBhZG9wdENGKENGUnVuTG9vcFRp
bWVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgp
ICsgbmV4dEZpcmVJbnRlcnZhbC5zZWNvbmRzKCksIHJlcGVhdEludGVydmFsLnNlY29uZHMoKSwg
MCwgMCwgdGltZXJGaXJlZCwgJmNvbnRleHQpKTsKKworICAgIG1fdGltZXIgPSBjcmVhdGVUaW1l
cihpbnRlcnZhbCwgcmVwZWF0LCBbXSAoQ0ZSdW5Mb29wVGltZXJSZWYgY2ZUaW1lciwgdm9pZCog
Y29udGV4dCkgeworICAgICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKworICAgICAgICBhdXRv
IHRpbWVyID0gc3RhdGljX2Nhc3Q8VGltZXJCYXNlKj4oY29udGV4dCk7CisgICAgICAgIGlmICgh
Q0ZSdW5Mb29wVGltZXJEb2VzUmVwZWF0KGNmVGltZXIpKQorICAgICAgICAgICAgdGltZXItPnN0
b3AoKTsKKworICAgICAgICB0aW1lci0+ZmlyZWQoKTsKKyAgICB9LCB0aGlzKTsKICAgICBDRlJ1
bkxvb3BBZGRUaW1lcihtX3J1bkxvb3AtPm1fcnVuTG9vcC5nZXQoKSwgbV90aW1lci5nZXQoKSwg
a0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKIH0KIApJbmRleDogU291cmNlL1dURi93dGYvY2YvUnVu
TG9vcFRpbWVyQ0YuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL2NmL1J1bkxvb3BU
aW1lckNGLmNwcAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dURi93dGYvY2YvUnVuTG9v
cFRpbWVyQ0YuY3BwCShub25leGlzdGVudCkKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBw
bGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0KLSNpZiBQTEFURk9STShDT0NPQSkgJiYgSEFWRShSVU5MT09QX1RJTUVSKQotCi0jaW5j
bHVkZSA8d3RmL1J1bkxvb3BUaW1lci5oPgotCi0jaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9v
bC5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotUnVuTG9vcFRpbWVyQmFzZTo6UnVuTG9vcFRpbWVy
QmFzZSgpID0gZGVmYXVsdDsKLQotUnVuTG9vcFRpbWVyQmFzZTo6flJ1bkxvb3BUaW1lckJhc2Uo
KQotewotICAgIHN0b3AoKTsKLX0KLQotc3RhdGljIHZvaWQgdGltZXJGaXJlZChDRlJ1bkxvb3BU
aW1lclJlZiwgdm9pZCogY29udGV4dCkKLXsKLSAgICAvLyBDRlJ1bkxvb3BUaW1lciBkb2VzIG5v
dCBjcmVhdGUgYW4gTlNBdXRvcmVsZWFzZVBvb2wsIGxpa2UgTlNUaW1lciBkb2VzLiBUaGlzIGNh
biBsZWFkIHRvCi0gICAgLy8gYXV0b3JlbGVhc2VkIG9iamVjdHMgYmVpbmcgcHVzaGVkIGludG8g
TlNBdXRvcmVsZWFzZVBvb2xzIHVuZGVybmVhdGggdGhlIHJ1biBsb29wLCB3aGljaAotICAgIC8v
IGFyZSB2ZXJ5IGluZnJlcXVlbnRseSBkcmFpbmVkLiBDcmVhdGUgYSBuZXcgYXV0b3JlbGVhc2Ug
cG9vbCBoZXJlIHRvIGdpdmUgYXV0b3JlbGVhc2VkIG9iamVjdHMKLSAgICAvLyBhIHBsYWNlIHRv
IGNvbGxlY3QuCi0gICAgQXV0b2RyYWluZWRQb29sIHBvb2w7Ci0gICAgUnVuTG9vcFRpbWVyQmFz
ZSogdGltZXIgPSBzdGF0aWNfY2FzdDxSdW5Mb29wVGltZXJCYXNlKj4oY29udGV4dCk7Ci0gICAg
dGltZXItPmZpcmVkKCk7Ci19Ci0KLXZvaWQgUnVuTG9vcFRpbWVyQmFzZTo6c3RhcnQoU2Vjb25k
cyBuZXh0RmlyZUludGVydmFsLCBTZWNvbmRzIHJlcGVhdEludGVydmFsKQotewotICAgIGlmICht
X3RpbWVyKQotICAgICAgICBDRlJ1bkxvb3BUaW1lckludmFsaWRhdGUobV90aW1lci5nZXQoKSk7
Ci0gICAgQ0ZSdW5Mb29wVGltZXJDb250ZXh0IGNvbnRleHQgPSB7IDAsIHRoaXMsIDAsIDAsIDAg
fTsKLSAgICBtX3RpbWVyID0gYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBDRkFic29s
dXRlVGltZUdldEN1cnJlbnQoKSArIG5leHRGaXJlSW50ZXJ2YWwuc2Vjb25kcygpLCByZXBlYXRJ
bnRlcnZhbC5zZWNvbmRzKCksIDAsIDAsIHRpbWVyRmlyZWQsICZjb250ZXh0KSk7Ci19Ci0KLXZv
aWQgUnVuTG9vcFRpbWVyQmFzZTo6c2NoZWR1bGUoY29uc3QgU2NoZWR1bGVQYWlyKiBzY2hlZHVs
ZVBhaXIpCi17Ci0gICAgQVNTRVJUX0FSRyhzY2hlZHVsZVBhaXIsIHNjaGVkdWxlUGFpcik7Ci0g
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3RpbWVyLCAiVGltZXIgbXVzdCBoYXZlIG9uZSBvZiB0
aGUgc3RhcnQgZnVuY3Rpb25zIGNhbGxlZCBiZWZvcmUgY2FsbGluZyBzY2hlZHVsZSgpLiIpOwot
ICAgIENGUnVuTG9vcEFkZFRpbWVyKHNjaGVkdWxlUGFpci0+cnVuTG9vcCgpLCBtX3RpbWVyLmdl
dCgpLCBzY2hlZHVsZVBhaXItPm1vZGUoKSk7Ci19Ci0KLXZvaWQgUnVuTG9vcFRpbWVyQmFzZTo6
c2NoZWR1bGUoY29uc3QgU2NoZWR1bGVQYWlySGFzaFNldCYgc2NoZWR1bGVQYWlycykKLXsKLSAg
ICBTY2hlZHVsZVBhaXJIYXNoU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBzY2hlZHVsZVBhaXJz
LmVuZCgpOwotICAgIGZvciAoU2NoZWR1bGVQYWlySGFzaFNldDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBzY2hlZHVsZVBhaXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgc2NoZWR1
bGUoKCppdCkuZ2V0KCkpOwotfQotCi12b2lkIFJ1bkxvb3BUaW1lckJhc2U6OnN0b3AoKQotewot
ICAgIGlmICghbV90aW1lcikKLSAgICAgICAgcmV0dXJuOwotICAgIENGUnVuTG9vcFRpbWVySW52
YWxpZGF0ZShtX3RpbWVyLmdldCgpKTsKLSAgICBtX3RpbWVyID0gMDsKLX0KLQotYm9vbCBSdW5M
b29wVGltZXJCYXNlOjppc0FjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdGltZXIgJiYg
Q0ZSdW5Mb29wVGltZXJJc1ZhbGlkKG1fdGltZXIuZ2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXVEYKLQotI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKFJVTkxPT1BfVElNRVIp
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV1RGL3d0Zi9jZi9SdW5Mb29wVGltZXJDRi5j
cHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2
ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9n
ZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9n
ZW5lcmljL1J1bkxvb3BHZW5lcmljLmNwcAkocmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dU
Ri93dGYvZ2VuZXJpYy9SdW5Mb29wR2VuZXJpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MCwx
NCArMjUwLDYgQEAgdm9pZCBSdW5Mb29wOjpzY2hlZHVsZUFuZFdha2VVcChjb25zdCBBYgogICAg
IHdha2VVcChsb2NrZXIpOwogfQogCi12b2lkIFJ1bkxvb3A6OmRpc3BhdGNoQWZ0ZXIoU2Vjb25k
cyBkZWxheSwgRnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0aW9uKQotewotICAgIExvY2tIb2xkZXIg
bG9ja2VyKG1fbG9vcExvY2spOwotICAgIGJvb2wgcmVwZWF0aW5nID0gZmFsc2U7Ci0gICAgc2No
ZWR1bGUobG9ja2VyLCBUaW1lckJhc2U6OlNjaGVkdWxlZFRhc2s6OmNyZWF0ZShXVEZNb3ZlKGZ1
bmN0aW9uKSwgZGVsYXksIHJlcGVhdGluZykpOwotICAgIHdha2VVcChsb2NrZXIpOwotfQotCiAv
LyBTaW5jZSBSdW5Mb29wIGRvZXMgbm90IG93biB0aGUgcmVnaXN0ZXJlZCBUaW1lckJhc2UsCiAv
LyBUaW1lckJhc2UgYW5kIGl0cyBvd25lciBzaG91bGQgbWFuYWdlIHRoZXNlIGxpZmV0aW1lLgog
UnVuTG9vcDo6VGltZXJCYXNlOjpUaW1lckJhc2UoUnVuTG9vcCYgcnVuTG9vcCkKSW5kZXg6IFNv
dXJjZS9XVEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL2dsaWIvUnVuTG9vcEdMaWIuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2Uv
V1RGL3d0Zi9nbGliL1J1bkxvb3BHTGliLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDM5ICsx
MjksNiBAQCBSdW5Mb29wOjpDeWNsZVJlc3VsdCBSdW5Mb29wOjpjeWNsZShSdW5MCiAgICAgcmV0
dXJuIEN5Y2xlUmVzdWx0OjpDb250aW51ZTsKIH0KIAotY2xhc3MgRGlzcGF0Y2hBZnRlckNvbnRl
eHQgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIERpc3BhdGNo
QWZ0ZXJDb250ZXh0KEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKLSAgICAgICAgOiBtX2Z1
bmN0aW9uKFdURk1vdmUoZnVuY3Rpb24pKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIGRpc3Bh
dGNoKCkKLSAgICB7Ci0gICAgICAgIG1fZnVuY3Rpb24oKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0g
ICAgRnVuY3Rpb248dm9pZCgpPiBtX2Z1bmN0aW9uOwotfTsKLQotdm9pZCBSdW5Mb29wOjpkaXNw
YXRjaEFmdGVyKFNlY29uZHMgZHVyYXRpb24sIEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikK
LXsKLSAgICBHUmVmUHRyPEdTb3VyY2U+IHNvdXJjZSA9IGFkb3B0R1JlZihnX3NvdXJjZV9uZXco
JnJ1bkxvb3BTb3VyY2VGdW5jdGlvbnMsIHNpemVvZihHU291cmNlKSkpOwotICAgIGdfc291cmNl
X3NldF9wcmlvcml0eShzb3VyY2UuZ2V0KCksIFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6UnVuTG9v
cFRpbWVyKTsKLSAgICBnX3NvdXJjZV9zZXRfbmFtZShzb3VyY2UuZ2V0KCksICJbV2ViS2l0XSBS
dW5Mb29wIGRpc3BhdGNoQWZ0ZXIiKTsKLSAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShzb3Vy
Y2UuZ2V0KCksIGdfZ2V0X21vbm90b25pY190aW1lKCkgKyBkdXJhdGlvbi5taWNyb3NlY29uZHNB
czxnaW50NjQ+KCkpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPERpc3BhdGNoQWZ0ZXJDb250ZXh0
PiBjb250ZXh0ID0gbWFrZVVuaXF1ZTxEaXNwYXRjaEFmdGVyQ29udGV4dD4oV1RGTW92ZShmdW5j
dGlvbikpOwotICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhzb3VyY2UuZ2V0KCksIFtdKGdwb2lu
dGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNw
YXRjaEFmdGVyQ29udGV4dD4gY29udGV4dChzdGF0aWNfY2FzdDxEaXNwYXRjaEFmdGVyQ29udGV4
dCo+KHVzZXJEYXRhKSk7Ci0gICAgICAgIGNvbnRleHQtPmRpc3BhdGNoKCk7Ci0gICAgICAgIHJl
dHVybiBHX1NPVVJDRV9SRU1PVkU7Ci0gICAgfSwgY29udGV4dC5yZWxlYXNlKCksIG51bGxwdHIp
OwotICAgIGdfc291cmNlX2F0dGFjaChzb3VyY2UuZ2V0KCksIG1fbWFpbkNvbnRleHQuZ2V0KCkp
OwotfQotCiBSdW5Mb29wOjpUaW1lckJhc2U6OlRpbWVyQmFzZShSdW5Mb29wJiBydW5Mb29wKQog
ICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiAgICAgLCBtX3NvdXJjZShhZG9wdEdSZWYoZ19zb3Vy
Y2VfbmV3KCZydW5Mb29wU291cmNlRnVuY3Rpb25zLCBzaXplb2YoR1NvdXJjZSkpKSkKQEAgLTIw
MSwyMCArMTY4LDIwIEBAIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzZXRQcmlvcml0eShpbnQK
IAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnVwZGF0ZVJlYWR5VGltZSgpCiB7Ci0gICAgaWYg
KCFtX2ZpcmVJbnRlcnZhbCkgeworICAgIGlmICghbV9pbnRlcnZhbCkgewogICAgICAgICBnX3Nv
dXJjZV9zZXRfcmVhZHlfdGltZShtX3NvdXJjZS5nZXQoKSwgMCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBnaW50NjQgY3VycmVudFRpbWUgPSBnX2dldF9tb25vdG9uaWNfdGltZSgp
OwotICAgIGdpbnQ2NCB0YXJnZXRUaW1lID0gY3VycmVudFRpbWUgKyBzdGQ6Om1pbjxnaW50NjQ+
KEdfTUFYSU5UNjQgLSBjdXJyZW50VGltZSwgbV9maXJlSW50ZXJ2YWwubWljcm9zZWNvbmRzQXM8
Z2ludDY0PigpKTsKKyAgICBnaW50NjQgdGFyZ2V0VGltZSA9IGN1cnJlbnRUaW1lICsgc3RkOjpt
aW48Z2ludDY0PihHX01BWElOVDY0IC0gY3VycmVudFRpbWUsIG1faW50ZXJ2YWwubWljcm9zZWNv
bmRzQXM8Z2ludDY0PigpKTsKICAgICBBU1NFUlQodGFyZ2V0VGltZSA+PSBjdXJyZW50VGltZSk7
CiAgICAgZ19zb3VyY2Vfc2V0X3JlYWR5X3RpbWUobV9zb3VyY2UuZ2V0KCksIHRhcmdldFRpbWUp
OwogfQogCi12b2lkIFJ1bkxvb3A6OlRpbWVyQmFzZTo6c3RhcnQoU2Vjb25kcyBmaXJlSW50ZXJ2
YWwsIGJvb2wgcmVwZWF0KQordm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnN0YXJ0KFNlY29uZHMg
aW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQogewotICAgIG1fZmlyZUludGVydmFsID0gZmlyZUludGVy
dmFsOworICAgIG1faW50ZXJ2YWwgPSBpbnRlcnZhbDsKICAgICBtX2lzUmVwZWF0aW5nID0gcmVw
ZWF0OwogICAgIHVwZGF0ZVJlYWR5VGltZSgpOwogfQpAQCAtMjIyLDcgKzE4OSw3IEBAIHZvaWQg
UnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChTZWNvbmRzIGYKIHZvaWQgUnVuTG9vcDo6VGltZXJC
YXNlOjpzdG9wKCkKIHsKICAgICBnX3NvdXJjZV9zZXRfcmVhZHlfdGltZShtX3NvdXJjZS5nZXQo
KSwgLTEpOwotICAgIG1fZmlyZUludGVydmFsID0geyB9OworICAgIG1faW50ZXJ2YWwgPSB7IH07
CiAgICAgbV9pc1JlcGVhdGluZyA9IGZhbHNlOwogfQogCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi93
aW4vUnVuTG9vcFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvd2luL1J1bkxv
b3BXaW4uY3BwCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV1RGL3d0Zi93aW4vUnVuTG9v
cFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwxNiArMTQwLDYgQEAgUnVuTG9vcDo6Q3lj
bGVSZXN1bHQgUnVuTG9vcDo6Y3ljbGUoUnVuTAogICAgIHJldHVybiBDeWNsZVJlc3VsdDo6Q29u
dGludWU7CiB9CiAKLXZvaWQgUnVuTG9vcDo6ZGlzcGF0Y2hBZnRlcihTZWNvbmRzIGRlbGF5LCBG
dW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCi17Ci0gICAgYXV0byB0aW1lciA9IG5ldyBEaXNw
YXRjaFRpbWVyKCp0aGlzKTsKLSAgICB0aW1lci0+c2V0RnVuY3Rpb24oW3RpbWVyLCBmdW5jdGlv
biA9IFdURk1vdmUoZnVuY3Rpb24pXSB7Ci0gICAgICAgIGZ1bmN0aW9uKCk7Ci0gICAgICAgIGRl
bGV0ZSB0aW1lcjsKLSAgICB9KTsKLSAgICB0aW1lci0+c3RhcnRPbmVTaG90KGRlbGF5KTsKLX0K
LQogLy8gUnVuTG9vcDo6VGltZXIKIAogdm9pZCBSdW5Mb29wOjpUaW1lckJhc2U6OnRpbWVyRmly
ZWQoKQpAQCAtMTgwLDE0ICsxNzAsMTQgQEAgUnVuTG9vcDo6VGltZXJCYXNlOjp+VGltZXJCYXNl
KCkKICAgICBzdG9wKCk7CiB9CiAKLXZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdGFydChTZWNv
bmRzIG5leHRGaXJlSW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQordm9pZCBSdW5Mb29wOjpUaW1lckJh
c2U6OnN0YXJ0KFNlY29uZHMgaW50ZXJ2YWwsIGJvb2wgcmVwZWF0KQogewogICAgIExvY2tIb2xk
ZXIgbG9ja2VyKG1fcnVuTG9vcC0+bV9sb29wTG9jayk7CiAgICAgbV9pc1JlcGVhdGluZyA9IHJl
cGVhdDsKICAgICBtX2lzQWN0aXZlID0gdHJ1ZTsKLSAgICBtX2ludGVydmFsID0gbmV4dEZpcmVJ
bnRlcnZhbDsKKyAgICBtX2ludGVydmFsID0gaW50ZXJ2YWw7CiAgICAgbV9uZXh0RmlyZURhdGUg
PSBNb25vdG9uaWNUaW1lOjpub3coKSArIG1faW50ZXJ2YWw7Ci0gICAgOjpTZXRUaW1lcihtX3J1
bkxvb3AtPm1fcnVuTG9vcE1lc3NhZ2VXaW5kb3csIGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRo
aXMpLCBuZXh0RmlyZUludGVydmFsLm1pbGxpc2Vjb25kc0FzPFVJTlQ+KCksIG51bGxwdHIpOwor
ICAgIDo6U2V0VGltZXIobV9ydW5Mb29wLT5tX3J1bkxvb3BNZXNzYWdlV2luZG93LCBiaXR3aXNl
X2Nhc3Q8dWludHB0cl90Pih0aGlzKSwgaW50ZXJ2YWwubWlsbGlzZWNvbmRzQXM8VUlOVD4oKSwg
bnVsbHB0cik7CiB9CiAKIHZvaWQgUnVuTG9vcDo6VGltZXJCYXNlOjpzdG9wKCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDIwLTA3LTE3ICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG9ubHkgb25lIFJ1
bkxvb3AgVGltZXIgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNDM0MAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisg
ICAgICAgIFJ1bkxvb3A6OlRpbWVyIHdpbnMuIFJ1bkxvb3BUaW1lciBsb3Nlcy4KKworICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OnRyeUxvYWRpbmdTdWJzdGl0dXRlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6c3RhcnREYXRhTG9hZFRpbWVyKTogRGVsZXRlZC4gVXNlCisgICAgICAgIFJ1
bkxvb3A6OmRpc3BhdGNoIGluc3RlYWQgb2YgYSB0aW1lciBiZWNhdXNlIHdlIGhhdmUgbm8gbmVl
ZCB0byBjb250cm9sCisgICAgICAgIHRoZSB0aW1lIHBlcmlvZCBvciB0byBmaXJlIG1vcmUgdGhh
biBvbmNlLiBVc2UgYW4gZXhwbGljaXQgdG9rZW4gc28gdGhhdAorICAgICAgICB3ZSBjYW4gc3Rp
bGwgY2FuY2VsLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6RGF0YUxvYWRUb2tlbjo6Y2xlYXIpOiBBZGRlZCBh
biBleHBsaWNpdCB0b2tlbgorICAgICAgICBjbGFzcyB0byB3ZSBjYW4gY2FuY2VsIGEgZGF0YSBs
b2FkLgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCk6IHBhZ2UtPnNjaGVkdWxlZFJ1bkxv
b3BQYWlycygpCisgICAgICAgIGlzIG5ldmVyIG51bGw7IGFuZCBpZiBpdCB3ZXJlIG51bGwsIGRh
dGEgbG9hZHMgd291bGQgYWx3YXlzIGZhaWwuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L0RhdGFVUkxEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpk
ZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OkRlY29kaW5nUmVzdWx0
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2gpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVS
TERlY29kZXI6OkRlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcjo6RGVjb2RpbmdSZXN1bHREaXNwYXRj
aGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFVUkxEZWNvZGVyOjpEZWNvZGlu
Z1Jlc3VsdERpc3BhdGNoZXI6OnN0YXJ0VGltZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RGF0YVVSTERlY29kZXI6OkRlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcjo6dGltZXJGaXJlZCk6
IERlbGV0ZWQuCisgICAgICAgIE5vIG5lZWQgZm9yIHR3byBjb2RlIHBhdGhzLCBub3cgdGhhdCB3
ZSBjYW4ganVzdCBjYWxsIFJ1bkxvb3A6OmRpc3BhdGNoLgorCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9EYXRhVVJMRGVjb2Rlci5oOgorCiAyMDIwLTA3LTEzICBHZW9mZnJleSBHYXJlbiAg
PGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmUtbGFuZGluZyByMjY0
MjQyIHdpdGggY3Jhc2ggZml4ZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHAJKHJldmlzaW9uIDI2NDMxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsxNTMsNiBAQCBEb2N1
bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzCiAgICAgLCBtX3JlcXVlc3QocmVx
dWVzdCkKICAgICAsIG1fb3JpZ2luYWxTdWJzdGl0dXRlRGF0YVdhc1ZhbGlkKHN1YnN0aXR1dGVE
YXRhLmlzVmFsaWQoKSkKICAgICAsIG1fc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lcigq
dGhpcywgJkRvY3VtZW50TG9hZGVyOjpzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmly
ZWQpCi0gICAgLCBtX2RhdGFMb2FkVGltZXIoKnRoaXMsICZEb2N1bWVudExvYWRlcjo6aGFuZGxl
U3Vic3RpdHV0ZURhdGFMb2FkTm93KQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlSG9zdChtYWtl
VW5pcXVlPEFwcGxpY2F0aW9uQ2FjaGVIb3N0PigqdGhpcykpCiB7CiB9CkBAIC00OTIsMTYgKzQ5
MSw2IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmhhbmRsZVN1YnN0aXR1dGVEYXQKICAgICByZXNw
b25zZVJlY2VpdmVkKHJlc3BvbnNlLCBudWxscHRyKTsKIH0KIAotdm9pZCBEb2N1bWVudExvYWRl
cjo6c3RhcnREYXRhTG9hZFRpbWVyKCkKLXsKLSAgICBtX2RhdGFMb2FkVGltZXIuc3RhcnRPbmVT
aG90KDBfcyk7Ci0KLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0gICAgaWYgKFNjaGVkdWxlUGFp
ckhhc2hTZXQqIHNjaGVkdWxlZFBhaXJzID0gbV9mcmFtZS0+cGFnZSgpLT5zY2hlZHVsZWRSdW5M
b29wUGFpcnMoKSkKLSAgICAgICAgbV9kYXRhTG9hZFRpbWVyLnNjaGVkdWxlKCpzY2hlZHVsZWRQ
YWlycyk7Ci0jZW5kaWYKLX0KLQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIGJvb2wgRG9j
dW1lbnRMb2FkZXI6OnNldENvbnRyb2xsaW5nU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIGRhdGEpCiB7CkBAIC03MTEsOCArNzAwLDIwIEBA
IGJvb2wgRG9jdW1lbnRMb2FkZXI6OnRyeUxvYWRpbmdTdWJzdGl0dXQKIAogICAgIGlmICghbV9k
ZWZlck1haW5SZXNvdXJjZURhdGFMb2FkIHx8IGZyYW1lTG9hZGVyKCktPmxvYWRzU3luY2hyb25v
dXNseSgpKQogICAgICAgICBoYW5kbGVTdWJzdGl0dXRlRGF0YUxvYWROb3coKTsKLSAgICBlbHNl
Ci0gICAgICAgIHN0YXJ0RGF0YUxvYWRUaW1lcigpOworICAgIGVsc2UgeworICAgICAgICBhdXRv
IGxvYWREYXRhID0gW3RoaXMsIHdlYWtEYXRhTG9hZFRva2VuID0gbWFrZVdlYWtQdHIobV9kYXRh
TG9hZFRva2VuKV0geworICAgICAgICAgICAgaWYgKCF3ZWFrRGF0YUxvYWRUb2tlbikKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2RhdGFMb2FkVG9rZW4uY2xlYXIoKTsK
KyAgICAgICAgICAgIGhhbmRsZVN1YnN0aXR1dGVEYXRhTG9hZE5vdygpOworICAgICAgICB9Owor
CisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisgICAgICAgIFJ1bkxvb3A6OmRpc3BhdGNoKCpt
X2ZyYW1lLT5wYWdlKCktPnNjaGVkdWxlZFJ1bkxvb3BQYWlycygpLCBXVEZNb3ZlKGxvYWREYXRh
KSk7CisjZWxzZQorICAgICAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goV1RGTW92ZShs
b2FkRGF0YSkpOworI2VuZGlmCisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMDA1
LDcgKzIwMDYsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VMCiAK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5jZWxNYWluUmVzb3VyY2VMb2FkOiAodHlw
ZSA9ICVkLCBjb2RlID0gJWQpIiwgc3RhdGljX2Nhc3Q8aW50PihlcnJvci50eXBlKCkpLCBlcnJv
ci5lcnJvckNvZGUoKSk7CiAKLSAgICBtX2RhdGFMb2FkVGltZXIuc3RvcCgpOworICAgIG1fZGF0
YUxvYWRUb2tlbi5jbGVhcigpOwogCiAgICAgY2FuY2VsUG9saWN5Q2hlY2tJZk5lZWRlZCgpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gMjY0
MzE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDEwICs1OSw2IEBACiAjaW5jbHVkZSAiQXBwbGljYXRpb25NYW5pZmVzdC5o
IgogI2VuZGlmCiAKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0jaW5jbHVkZSA8d3RmL1J1bkxv
b3BUaW1lci5oPgotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlIDx3dGYv
U2NoZWR1bGVQYWlyLmg+CiAjZW5kaWYKQEAgLTQyOSw2ICs0MjUsMTEgQEAgcHJvdGVjdGVkOgog
ICAgIGJvb2wgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkIHsgdHJ1ZSB9OwogCiBwcml2YXRl
OgorICAgIGNsYXNzIERhdGFMb2FkVG9rZW4gOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YUxv
YWRUb2tlbj4geworICAgIHB1YmxpYzoKKyAgICAgICAgdm9pZCBjbGVhcigpIHsgd2Vha1B0ckZh
Y3RvcnkoKS5yZXZva2VBbGwoKTsgfQorICAgIH07CisKICAgICBEb2N1bWVudCogZG9jdW1lbnQo
KSBjb25zdDsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKQEAgLTQ4OSwxMyArNDkwLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHN0b3BMb2FkaW5nRm9yUG9saWN5Q2hhbmdlKCk7CiAgICAg
UmVzb3VyY2VFcnJvciBpbnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKCkgY29uc3Q7CiAK
LSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCi0gICAgdHlwZWRlZiBSdW5Mb29wVGltZXI8RG9jdW1l
bnRMb2FkZXI+IERvY3VtZW50TG9hZGVyVGltZXI7Ci0jZWxzZQotICAgIHR5cGVkZWYgVGltZXIg
RG9jdW1lbnRMb2FkZXJUaW1lcjsKLSNlbmRpZgogICAgIHZvaWQgaGFuZGxlU3Vic3RpdHV0ZURh
dGFMb2FkTm93KCk7Ci0gICAgdm9pZCBzdGFydERhdGFMb2FkVGltZXIoKTsKIAogICAgIHZvaWQg
ZGVsaXZlclN1YnN0aXR1dGVSZXNvdXJjZXNBZnRlckRlbGF5KCk7CiAgICAgdm9pZCBzdWJzdGl0
dXRlUmVzb3VyY2VEZWxpdmVyeVRpbWVyRmlyZWQoKTsKQEAgLTYwMCw3ICs1OTUsNyBAQCBwcml2
YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkOwogICAgIHVu
c2lnbmVkIGxvbmcgbV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlciB7IDAg
fTsKIAotICAgIERvY3VtZW50TG9hZGVyVGltZXIgbV9kYXRhTG9hZFRpbWVyOworICAgIERhdGFM
b2FkVG9rZW4gbV9kYXRhTG9hZFRva2VuOwogICAgIGJvb2wgbV93YWl0aW5nRm9yQ29udGVudFBv
bGljeSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dhaXRpbmdGb3JOYXZpZ2F0aW9uUG9saWN5IHsg
ZmFsc2UgfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsMTEgKzI2Niw5IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmxvYWREYXRhVVJMKCkKICAgICBBU1NFUlQodXJsLnByb3RvY29sSXNEYXRhKCkpOwog
CiAgICAgRGF0YVVSTERlY29kZXI6OlNjaGVkdWxlQ29udGV4dCBzY2hlZHVsZUNvbnRleHQ7Ci0j
aWYgSEFWRShSVU5MT09QX1RJTUVSKQotICAgIGlmIChhdXRvIHBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc2NoZWR1bGVkUGFpcnMgPSBwYWdlLT5zY2hlZHVsZWRS
dW5Mb29wUGFpcnMoKSkKLSAgICAgICAgICAgIHNjaGVkdWxlQ29udGV4dC5zY2hlZHVsZWRQYWly
cyA9ICpzY2hlZHVsZWRQYWlyczsKLSAgICB9CisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisg
ICAgaWYgKGF1dG8gcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgc2NoZWR1bGVDb250
ZXh0LnNjaGVkdWxlZFBhaXJzID0gKnBhZ2UtPnNjaGVkdWxlZFJ1bkxvb3BQYWlycygpOwogI2Vu
ZGlmCiAgICAgYXV0byBtb2RlID0gRGF0YVVSTERlY29kZXI6Ok1vZGU6OkxlZ2FjeTsKICAgICBp
ZiAobV9yZXF1ZXN0LnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpG
ZXRjaCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29k
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0
YVVSTERlY29kZXIuY3BwCShyZXZpc2lvbiAyNjQzMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNTIg
Kzk3LDYgQEAgcHVibGljOgogICAgIFJlc3VsdCByZXN1bHQ7CiB9OwogCi0jaWYgSEFWRShSVU5M
T09QX1RJTUVSKQotCi1jbGFzcyBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXIgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8RGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyPiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIHZvaWQgZGlzcGF0Y2goc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IGRlY29k
ZVRhc2spCi0gICAgewotICAgICAgICBSZWY8RGVjb2RpbmdSZXN1bHREaXNwYXRjaGVyPiBkaXNw
YXRjaGVyID0gYWRvcHRSZWYoKm5ldyBEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXIoV1RGTW92ZShk
ZWNvZGVUYXNrKSkpOwotICAgICAgICBkaXNwYXRjaGVyLT5zdGFydFRpbWVyKCk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIERlY29kaW5nUmVzdWx0RGlzcGF0Y2hlcihzdGQ6OnVuaXF1ZV9wdHI8
RGVjb2RlVGFzaz4gZGVjb2RlVGFzaykKLSAgICAgICAgOiBtX3RpbWVyKCp0aGlzLCAmRGVjb2Rp
bmdSZXN1bHREaXNwYXRjaGVyOjp0aW1lckZpcmVkKQotICAgICAgICAsIG1fZGVjb2RlVGFzayhX
VEZNb3ZlKGRlY29kZVRhc2spKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lkIHN0YXJ0VGltZXIo
KQotICAgIHsKLSAgICAgICAgLy8gS2VlcCBhbGl2ZSB1bnRpbCB0aGUgdGltZXIgaGFzIGZpcmVk
LgotICAgICAgICByZWYoKTsKLQotICAgICAgICBhdXRvIHNjaGVkdWxlZFBhaXJzID0gbV9kZWNv
ZGVUYXNrLT5zY2hlZHVsZUNvbnRleHQuc2NoZWR1bGVkUGFpcnM7Ci0gICAgICAgIG1fdGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7Ci0gICAgICAgIG1fdGltZXIuc2NoZWR1bGUoc2NoZWR1bGVkUGFp
cnMpOwotICAgIH0KLQotICAgIHZvaWQgdGltZXJGaXJlZCgpCi0gICAgewotICAgICAgICBpZiAo
bV9kZWNvZGVUYXNrLT5yZXN1bHQuZGF0YSkKLSAgICAgICAgICAgIG1fZGVjb2RlVGFzay0+Y29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShtX2RlY29kZVRhc2stPnJlc3VsdCkpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX2RlY29kZVRhc2stPmNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0K
LSAgICAgICAgLy8gRW5zdXJlIERlY29kZVRhc2sgZ2V0cyBkZWxldGVkIGluIHRoZSBtYWluIHRo
cmVhZC4KLSAgICAgICAgbV9kZWNvZGVUYXNrID0gbnVsbHB0cjsKLQotICAgICAgICBkZXJlZigp
OwotICAgIH0KLQotICAgIFJ1bkxvb3BUaW1lcjxEZWNvZGluZ1Jlc3VsdERpc3BhdGNoZXI+IG1f
dGltZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPERlY29kZVRhc2s+IG1fZGVjb2RlVGFzazsKLX07
Ci0KLSNlbmRpZiAvLyBIQVZFKFJVTkxPT1BfVElNRVIpCi0KIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8RGVjb2RlVGFzaz4gY3JlYXRlRGVjb2RlVGFzayhjb25zdCBVUkwmIHVybCwgY29uc3QgU2No
ZWR1bGVDb250ZXh0JiBzY2hlZHVsZUNvbnRleHQsIERlY29kZUNvbXBsZXRpb25IYW5kbGVyJiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RGVjb2RlVGFzaz4o
CkBAIC0xOTQsMTYgKzE0OCwyMiBAQCB2b2lkIGRlY29kZShjb25zdCBVUkwmIHVybCwgY29uc3Qg
U2NoZWR1CiAgICAgICAgICAgICAgICAgZGVjb2RlRXNjYXBlZCgqZGVjb2RlVGFzayk7CiAgICAg
ICAgIH0KIAotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSAgICAgICAgRGVjb2RpbmdSZXN1bHRE
aXNwYXRjaGVyOjpkaXNwYXRjaChXVEZNb3ZlKGRlY29kZVRhc2spKTsKLSNlbHNlCi0gICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW2RlY29kZVRhc2sgPSBXVEZNb3ZlKGRlY29kZVRhc2spXSB7Cisj
aWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisgICAgICAgIGF1dG8gc2NoZWR1bGVkUGFpcnMgPSBk
ZWNvZGVUYXNrLT5zY2hlZHVsZUNvbnRleHQuc2NoZWR1bGVkUGFpcnM7CisjZW5kaWYKKworICAg
ICAgICBhdXRvIGNhbGxDb21wbGV0aW9uSGFuZGxlciA9IFtkZWNvZGVUYXNrID0gV1RGTW92ZShk
ZWNvZGVUYXNrKV0gewogICAgICAgICAgICAgaWYgKCFkZWNvZGVUYXNrLT5yZXN1bHQuZGF0YSkg
ewogICAgICAgICAgICAgICAgIGRlY29kZVRhc2stPmNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGVjb2Rl
VGFzay0+Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShkZWNvZGVUYXNrLT5yZXN1bHQpKTsKLSAg
ICAgICAgfSk7CisgICAgICAgIH07CisKKyNpZiBVU0UoQ09DT0FfRVZFTlRfTE9PUCkKKyAgICAg
ICAgUnVuTG9vcDo6ZGlzcGF0Y2goc2NoZWR1bGVkUGFpcnMsIFdURk1vdmUoY2FsbENvbXBsZXRp
b25IYW5kbGVyKSk7CisjZWxzZQorICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RG
TW92ZShjYWxsQ29tcGxldGlvbkhhbmRsZXIpKTsKICNlbmRpZgogICAgIH0pOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERlY29kZXIuaAko
cmV2aXNpb24gMjY0MzE1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRh
VVJMRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIEhBVkUoUlVOTE9PUF9USU1FUikKLSNpbmNs
dWRlIDx3dGYvUnVuTG9vcFRpbWVyLmg+CisjaWYgVVNFKENPQ09BX0VWRU5UX0xPT1ApCisjaW5j
bHVkZSA8d3RmL1NjaGVkdWxlUGFpci5oPgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTQ2LDcgKzQ2LDcgQEAgc3RydWN0IFJlc3VsdCB7CiAKIHVzaW5nIERlY29kZUNvbXBsZXRp
b25IYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkIChPcHRpb25hbDxSZXN1bHQ+KT47CiBzdHJ1
Y3QgU2NoZWR1bGVDb250ZXh0IHsKLSNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCisjaWYgVVNFKENP
Q09BX0VWRU5UX0xPT1ApCiAgICAgU2NoZWR1bGVQYWlySGFzaFNldCBzY2hlZHVsZWRQYWlyczsK
ICNlbmRpZgogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>