<?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>192287</bug_id>
          
          <creation_ts>2018-12-02 07:16:51 -0800</creation_ts>
          <short_desc>Use WallTime for file time</short_desc>
          <delta_ts>2018-12-03 09:51:41 -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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1484193</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-02 07:16:51 -0800</bug_when>
    <thetext>Use WallTime for file time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484194</commentid>
    <comment_count>1</comment_count>
      <attachid>356337</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-02 07:20:49 -0800</bug_when>
    <thetext>Created attachment 356337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484230</commentid>
    <comment_count>2</comment_count>
      <attachid>356337</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-12-02 16:35:33 -0800</bug_when>
    <thetext>Comment on attachment 356337
Patch

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

&gt; Source/WebCore/Modules/webdatabase/Database.cpp:641
&gt; +    return DatabaseDetails(stringIdentifier(), displayName(), estimatedSize(), 0, WallTime::fromRawSeconds(0), WallTime::fromRawSeconds(0));

Is the result of WallTime::fromRawSeconds(0) different from default-constructing a WallTime with &quot;WallTime { }&quot;? I seem to see a mix of things below where in some cases a 0 turns into WallTime::fromRawSeconds(0), but in other cases it turns into default initialization. I don’t understand the distinction between the two cases.

&gt; Source/WebCore/page/Page.cpp:1384
&gt; +    if (m_didLoadUserStyleSheet &amp;&amp; modificationTime &lt;= m_userStyleSheetModificationTime)

Does &quot;&lt;=&quot; work here without explicitly calling &quot;value()&quot; on the std::optional?

&gt; Source/WebCore/page/Page.h:814
&gt; +    mutable WallTime m_userStyleSheetModificationTime;

Maybe this should use std::optional instead of the magic value of 0?

&gt; Source/WebCore/platform/FileStream.cpp:59
&gt; -        if (static_cast&lt;time_t&gt;(expectedModificationTime) != modificationTime)
&gt; +        if (expectedModificationTime.secondsSinceEpoch().secondsAs&lt;time_t&gt;() != modificationTime-&gt;secondsSinceEpoch().secondsAs&lt;time_t&gt;())

No &quot;!=&quot; operator available on WallTime itself?

&gt; Source/WebCore/platform/FileSystem.h:136
&gt; +inline WallTime invalidFileTime() { return WallTime::nan(); }
&gt; +inline bool isValidFileTime(WallTime time) { return std::isnan(time); }

Do we really need these? What are they used for? Why not use std::optional instead?

&gt; Source/WebCore/platform/sql/SQLiteFileSystem.h:101
&gt; +    WEBCORE_EXPORT static WallTime databaseCreationTime(const String&amp; fileName);
&gt; +    WEBCORE_EXPORT static WallTime databaseModificationTime(const String&amp; fileName);

Change to return std::optional?

&gt; Source/WebKit/WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:111
&gt; +    removeAllMediaKeyStorageForOriginPath(originPath, WallTime::fromRawSeconds(std::numeric_limits&lt;double&gt;::lowest()), WallTime::fromRawSeconds(std::numeric_limits&lt;double&gt;::max()));

Maybe WallTime itself should offer a lowest and max equivalent?

&gt; Source/WebKit/WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:131
&gt; +        removeAllMediaKeyStorageForOriginPath(originPath, WallTime::fromRawSeconds(std::numeric_limits&lt;double&gt;::lowest()), WallTime::fromRawSeconds(std::numeric_limits&lt;double&gt;::max()));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484305</commentid>
    <comment_count>3</comment_count>
      <attachid>356337</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-03 01:53:34 -0800</bug_when>
    <thetext>Comment on attachment 356337
Patch

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

Thank you for your review!

&gt;&gt; Source/WebCore/Modules/webdatabase/Database.cpp:641
&gt;&gt; +    return DatabaseDetails(stringIdentifier(), displayName(), estimatedSize(), 0, WallTime::fromRawSeconds(0), WallTime::fromRawSeconds(0));
&gt; 
&gt; Is the result of WallTime::fromRawSeconds(0) different from default-constructing a WallTime with &quot;WallTime { }&quot;? I seem to see a mix of things below where in some cases a 0 turns into WallTime::fromRawSeconds(0), but in other cases it turns into default initialization. I don’t understand the distinction between the two cases.

WallTime() and WallTime::fromRawSeconds(0) are the same. They return WallTime with 0.
In this case, WallTime(0) is used as a placeholder for unknown WallTime. I think `std::optional&lt;&gt;` is better. Fixed.

&gt;&gt; Source/WebCore/page/Page.cpp:1384
&gt;&gt; +    if (m_didLoadUserStyleSheet &amp;&amp; modificationTime &lt;= m_userStyleSheetModificationTime)
&gt; 
&gt; Does &quot;&lt;=&quot; work here without explicitly calling &quot;value()&quot; on the std::optional?

Internally, operator&lt;= checks nullopt and calls value() if it is not nullopt. But in this case, we should call `value()` in the caller side since this nullopt check is unnecessary. Fixed.

&gt;&gt; Source/WebCore/page/Page.h:814
&gt;&gt; +    mutable WallTime m_userStyleSheetModificationTime;
&gt; 
&gt; Maybe this should use std::optional instead of the magic value of 0?

Sounds good. Fixed.

&gt;&gt; Source/WebCore/platform/FileStream.cpp:59
&gt;&gt; +        if (expectedModificationTime.secondsSinceEpoch().secondsAs&lt;time_t&gt;() != modificationTime-&gt;secondsSinceEpoch().secondsAs&lt;time_t&gt;())
&gt; 
&gt; No &quot;!=&quot; operator available on WallTime itself?

Here, I keep the original semantics in the code, using `time_t` cast. This is because typical FileSystem can only save the time in time_t precision... seconds.

&gt;&gt; Source/WebCore/platform/FileSystem.h:136
&gt;&gt; +inline bool isValidFileTime(WallTime time) { return std::isnan(time); }
&gt; 
&gt; Do we really need these? What are they used for? Why not use std::optional instead?

Yeah, this is not necessary. Dropped.

&gt;&gt; Source/WebCore/platform/sql/SQLiteFileSystem.h:101
&gt;&gt; +    WEBCORE_EXPORT static WallTime databaseModificationTime(const String&amp; fileName);
&gt; 
&gt; Change to return std::optional?

Sounds nice, fixed.

&gt;&gt; Source/WebKit/WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:111
&gt;&gt; +    removeAllMediaKeyStorageForOriginPath(originPath, WallTime::fromRawSeconds(std::numeric_limits&lt;double&gt;::lowest()), WallTime::fromRawSeconds(std::numeric_limits&lt;double&gt;::max()));
&gt; 
&gt; Maybe WallTime itself should offer a lowest and max equivalent?

After looking into the code, I think we can replace them with `-WallTime::infinity()` and `WallTime::infinity()`. Fixed.

&gt;&gt; Source/WebKit/WebProcess/MediaCache/WebMediaKeyStorageManager.cpp:131
&gt;&gt; +        removeAllMediaKeyStorageForOriginPath(originPath, WallTime::fromRawSeconds(std::numeric_limits&lt;double&gt;::lowest()), WallTime::fromRawSeconds(std::numeric_limits&lt;double&gt;::max()));
&gt; 
&gt; Ditto.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484306</commentid>
    <comment_count>4</comment_count>
      <attachid>356368</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-03 01:54:13 -0800</bug_when>
    <thetext>Created attachment 356368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484310</commentid>
    <comment_count>5</comment_count>
      <attachid>356370</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-03 02:14:29 -0800</bug_when>
    <thetext>Created attachment 356370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484334</commentid>
    <comment_count>6</comment_count>
      <attachid>356376</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-03 04:30:16 -0800</bug_when>
    <thetext>Created attachment 356376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484369</commentid>
    <comment_count>7</comment_count>
      <attachid>356376</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-12-03 09:38:33 -0800</bug_when>
    <thetext>Comment on attachment 356376
Patch

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

&gt; Source/WebCore/fileapi/File.cpp:116
&gt; +    if (modificationTime &amp;&amp; !std::isnan(modificationTime.value()))

Do we need to allow FileSystem::getFileModificationTime implementations to return NAN instead of std::nullopt? If so, what is the distinct meaning of the NAN?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484374</commentid>
    <comment_count>8</comment_count>
      <attachid>356376</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-03 09:48:00 -0800</bug_when>
    <thetext>Comment on attachment 356376
Patch

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

&gt;&gt; Source/WebCore/fileapi/File.cpp:116
&gt;&gt; +    if (modificationTime &amp;&amp; !std::isnan(modificationTime.value()))
&gt; 
&gt; Do we need to allow FileSystem::getFileModificationTime implementations to return NAN instead of std::nullopt? If so, what is the distinct meaning of the NAN?

Never happens. So we can remove this check :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484375</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-03 09:50:26 -0800</bug_when>
    <thetext>Committed r238802: &lt;https://trac.webkit.org/changeset/238802&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484376</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-03 09:51:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/46421683&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356337</attachid>
            <date>2018-12-02 07:20:49 -0800</date>
            <delta_ts>2018-12-03 01:54:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192287-20181203002048.patch</filename>
            <type>text/plain</type>
            <size>47493</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4Nzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGNmNjAyZjdmYjI4OWM1
NTIwZDA3ZDAyZDVjN2Y1YWQ1ZjU5N2EzZS4uYTk0NTI5YTlmMGE5N2YyYWI3NWYxOGExZjY3Y2Q5
ZDMwMGExNzU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE4LTEyLTAyICBZdXN1
a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFdh
bGxUaW1lIGZvciBmaWxlIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBhIHR5cGUgb2YgZmlsZSB0aW1lIGZyb20g
ZG91YmxlIHRvIFdhbGxUaW1lIHRvIHVzZSBzdHJvbmdseSB0eXBlZCBmaWxlIHRpbWUuCisKKyAg
ICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZGV0YWlscyBjb25z
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6RGF0YWJhc2VEZXRhaWxzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6Y3JlYXRpb25UaW1lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6bW9kaWZpY2F0aW9uVGltZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpQcm9wb3NlZERhdGFiYXNlOjpQcm9wb3NlZERh
dGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1lQW5k
T3JpZ2luKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OmdldFNpemUpOgorICAgICAgICAqIGZpbGVhcGkv
QXN5bmNGaWxlU3RyZWFtLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGU6Omxhc3RNb2RpZmllZCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTdHJlYW06OmdldFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlk
RmlsZVRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6aXNWYWxpZEZpbGVUaW1l
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVDcmVhdGlvblRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhVXNpbmdGdW5jdGlvbik6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtRGF0YTo6YXBwZW5kRmlsZVJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkZvcm1EYXRhRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRGaWxlRGF0
YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZUN1cnJlbnRTdHJlYW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZUNyZWF0aW9uVGltZSk6CisgICAgICAgIChXZWJD
b3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6CisgICAgICAgICogcGxh
dGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRl
RmlsZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9GaWxl
U3lzdGVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVDcmVh
dGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmluZERhdGFUb0ZpbGVN
ZXRhZGF0YSk6CisKIDIwMTgtMTItMDEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgTGlmZXRpbWUgb2YgSFRNTE1lZGlhRWxlbWVudCBpcyBub3QgcHJvcGVy
bHkgaGFuZGxlZCBpbiBhc3luY2hyb25vdXMgYWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5NzgzNzIzYTI1
NzhlNTlhOGJhYzcxNmExZDY3ZjdkM2NlMTQ4NWUwLi45N2ZkMmExODU1OTY0NzFiYzIxNGRhNGNm
MWEyY2RmN2Y3OTgwOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE4LTEyLTAyICBZ
dXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNl
IFdhbGxUaW1lIGZvciBmaWxlIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MjI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2hhcmVkL1Nlc3Npb25TdGF0ZS5oOgorICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PERhdGFiYXNlRGV0YWlscz46OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuY3BwOgorICAgICAgICAoZGVjb2RlSFRUUEJvZHkp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5JbmZvQ2FjaGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvQ2FjaGU6OmdldFBsdWdpbkluZm8pOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5JbmZvQ2FjaGU6OnVwZGF0ZVBsdWdpbkluZm8pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpoYXNGaWxlQ2hhbmdlZFNpbmNlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRhdGFiYXNlc01vZGlmaWVkU2lu
Y2UpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Om9yaWdp
bkRldGFpbHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6cmVtb3ZlQWxsTWVkaWFLZXlTdG9y
YWdlRm9yT3JpZ2luUGF0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXI6OmRlbGV0ZU1lZGlhS2V5RW50cmllc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZU1lZGlhS2V5RW50cmllc01vZGlmaWVk
QmV0d2VlbkRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
cjo6ZGVsZXRlQWxsTWVkaWFLZXlFbnRyaWVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL01lZGlh
Q2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oOgorCiAyMDE4LTEyLTAxICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1BTT05dIHByb2Nlc3Mtc3dhcHBp
bmcgbWF5IG9jY3VyIGV2ZW4gdGhvdWdoIG9wZW5lciBoYXMgaGFuZGxlIHRvIG9wZW5lZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDNhNzdlN2YwNjgwNGI3NjcwMTU5MTRhYmQ4ZmMz
NDg1ODhlODYwYjYuLjExNDEyOTA1NGFkYjQ0MjU5YzY4ZjBlYTBhN2M5ZjgwY2ZkYjJiOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMi0wMiAg
WXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFVz
ZSBXYWxsVGltZSBmb3IgZmlsZSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTIyODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OnJlZnJlc2gpOgorCiAyMDE4LTExLTMwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdpbmRv
d3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2UuY3BwCmluZGV4IGU5ZjI1MDFlZjg0YmRkODk4ZjM0MWM4YTQxNWJkNjExOGU1MWI2NmEuLjVl
OWI0YWRiZDE5ODQ2ZTZkYjliMjU2MTYzNWQ2Mjc3MWYwMDdiMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBAIC02MzgsNyArNjM4LDcg
QEAgU3RyaW5nIERhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0CiBEYXRhYmFzZURldGFpbHMgRGF0
YWJhc2U6OmRldGFpbHMoKSBjb25zdAogewogICAgIC8vIFRoaXMgY29kZSBwYXRoIGlzIG9ubHkg
dXNlZCBmb3IgZGF0YWJhc2UgcXVvdGEgZGVsZWdhdGUgY2FsbHMsIHNvIGZpbGUgZGF0ZXMgYXJl
IGlycmVsZXZhbnQgYW5kIGxlZnQgdW5pbml0aWFsaXplZC4KLSAgICByZXR1cm4gRGF0YWJhc2VE
ZXRhaWxzKHN0cmluZ0lkZW50aWZpZXIoKSwgZGlzcGxheU5hbWUoKSwgZXN0aW1hdGVkU2l6ZSgp
LCAwLCAwLCAwKTsKKyAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKHN0cmluZ0lkZW50aWZpZXIo
KSwgZGlzcGxheU5hbWUoKSwgZXN0aW1hdGVkU2l6ZSgpLCAwLCBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoMCksIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygwKSk7CiB9CiAKIHZvaWQgRGF0YWJh
c2U6OmRpc2FibGVBdXRob3JpemVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlRGV0YWlscy5oCmluZGV4IDZhOTZlMjNmMDc1NWYwNWQzMDZh
Y2RjZjkxZDZiNWI1YTI2ZDU4OTYuLjBlZjVjYzk0YjI4YmRmZGRkNzQ5YmU5YWI4ZmRjYTQyYWNh
MTg1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VEZXRhaWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZURldGFpbHMuaApAQCAtMjksNiArMjksNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY0LDcg
KzY1LDcgQEAgY2xhc3MgRGF0YWJhc2VEZXRhaWxzIHsKICAgICAgICAgcmV0dXJuICp0aGlzOwog
ICAgIH0KIAotICAgIERhdGFiYXNlRGV0YWlscyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkVXNh
Z2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2UsIGRvdWJsZSBjcmVhdGlvblRpbWUs
IGRvdWJsZSBtb2RpZmljYXRpb25UaW1lKQorICAgIERhdGFiYXNlRGV0YWlscyhjb25zdCBTdHJp
bmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9u
ZyBsb25nIGV4cGVjdGVkVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2UsIFdh
bGxUaW1lIGNyZWF0aW9uVGltZSwgV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAg
OiBtX25hbWUoZGF0YWJhc2VOYW1lKQogICAgICAgICAsIG1fZGlzcGxheU5hbWUoZGlzcGxheU5h
bWUpCiAgICAgICAgICwgbV9leHBlY3RlZFVzYWdlKGV4cGVjdGVkVXNhZ2UpCkBAIC03OCw4ICs3
OSw4IEBAIGNsYXNzIERhdGFiYXNlRGV0YWlscyB7CiAgICAgY29uc3QgU3RyaW5nJiBkaXNwbGF5
TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0KICAgICB1aW50NjRfdCBleHBl
Y3RlZFVzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9leHBlY3RlZFVzYWdlOyB9CiAgICAgdWludDY0
X3QgY3VycmVudFVzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50VXNhZ2U7IH0KLSAgICBk
b3VibGUgY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9jcmVhdGlvblRpbWU7IH0KLSAg
ICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kaWZpY2F0aW9u
VGltZTsgfQorICAgIFdhbGxUaW1lIGNyZWF0aW9uVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Jl
YXRpb25UaW1lOyB9CisgICAgV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kaWZpY2F0aW9uVGltZTsgfQogI2lmbmRlZiBOREVCVUcKICAgICBUaHJlYWQmIHRo
cmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkLmdldCgpOyB9CiAjZW5kaWYKQEAgLTg5LDgg
KzkwLDggQEAgY2xhc3MgRGF0YWJhc2VEZXRhaWxzIHsKICAgICBTdHJpbmcgbV9kaXNwbGF5TmFt
ZTsKICAgICB1aW50NjRfdCBtX2V4cGVjdGVkVXNhZ2UgeyAwIH07CiAgICAgdWludDY0X3QgbV9j
dXJyZW50VXNhZ2UgeyAwIH07Ci0gICAgZG91YmxlIG1fY3JlYXRpb25UaW1lIHsgMC4wIH07Ci0g
ICAgZG91YmxlIG1fbW9kaWZpY2F0aW9uVGltZSB7IDAuMCB9OworICAgIFdhbGxUaW1lIG1fY3Jl
YXRpb25UaW1lOworICAgIFdhbGxUaW1lIG1fbW9kaWZpY2F0aW9uVGltZTsKICNpZm5kZWYgTkRF
QlVHCiAgICAgUmVmPFRocmVhZD4gbV90aHJlYWQgeyBUaHJlYWQ6OmN1cnJlbnQoKSB9OwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFi
YXNlTWFuYWdlci5jcHAKaW5kZXggZmZiN2U4NmEyODk1ZmYyZGQ1NmIwODA5ODVmYTdkOTE2ZWVj
Zjk2Mi4uMTkwZGUwMDFlNGVkNDY1Y2JhOTA0NWU0MzYyYzA0MzU1YWM1ZDYxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2Vy
LmNwcApAQCAtNTksNyArNTksNyBAQCBjbGFzcyBEYXRhYmFzZU1hbmFnZXI6OlByb3Bvc2VkRGF0
YWJhc2UgewogRGF0YWJhc2VNYW5hZ2VyOjpQcm9wb3NlZERhdGFiYXNlOjpQcm9wb3NlZERhdGFi
YXNlKERhdGFiYXNlTWFuYWdlciYgbWFuYWdlciwgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUpCiAgICAgOiBtX21hbmFnZXIobWFuYWdlcikKICAgICAsIG1fb3JpZ2lu
KG9yaWdpbi5pc29sYXRlZENvcHkoKSkKLSAgICAsIG1fZGV0YWlscyhuYW1lLmlzb2xhdGVkQ29w
eSgpLCBkaXNwbGF5TmFtZS5pc29sYXRlZENvcHkoKSwgZXN0aW1hdGVkU2l6ZSwgMCwgMCwgMCkK
KyAgICAsIG1fZGV0YWlscyhuYW1lLmlzb2xhdGVkQ29weSgpLCBkaXNwbGF5TmFtZS5pc29sYXRl
ZENvcHkoKSwgZXN0aW1hdGVkU2l6ZSwgMCwgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApLCBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCkpCiB7CiAgICAgbV9tYW5hZ2VyLmFkZFByb3Bvc2Vk
RGF0YWJhc2UoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwCmluZGV4IDBkOTEyOTEzYTAyM2QyMzdjM2M4
MTQ1ZGYwOTI0ZTYzOTM3NzFmNDMuLjgzYzNmNzZiM2Y4ODU3OTUyZWI2MTNjOTZlNmI0OTJkNDU0
MjllMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTQ3Miw3ICs0NzIsNyBAQCBEYXRhYmFzZURldGFpbHMg
RGF0YWJhc2VUcmFja2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbgogCiAgICAgU3RyaW5nIHBhdGggPSBmdWxsUGF0aEZvckRhdGFiYXNlKG9yaWdpbiwg
bmFtZSwgZmFsc2UpOwogICAgIGlmIChwYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIERh
dGFiYXNlRGV0YWlscyhuYW1lLCBkaXNwbGF5TmFtZSwgZXhwZWN0ZWRVc2FnZSwgMCwgMCwgMCk7
CisgICAgICAgIHJldHVybiBEYXRhYmFzZURldGFpbHMobmFtZSwgZGlzcGxheU5hbWUsIGV4cGVj
dGVkVXNhZ2UsIDAsIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygwKSwgV2FsbFRpbWU6OmZyb21S
YXdTZWNvbmRzKDApKTsKICAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKG5hbWUsIGRpc3BsYXlO
YW1lLCBleHBlY3RlZFVzYWdlLCBTUUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVTaXpl
KHBhdGgpLCBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZUNyZWF0aW9uVGltZShwYXRoKSwgU1FM
aXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKHBhdGgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCmluZGV4IDczYTM2NTIyODc5
OWMxNmI5YTk4OGQ5YTExODllMGNmOTM4MGZlOWQuLjhjYjIyMjYxZTY2MmYyYzEwOTg0MDg5YjA3
NjMzYWIxNGQyZmZlMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNG
aWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEFzeW5jRmlsZVN0cmVhbTo6cGVyZm9ybShX
VEY6OkZ1bmN0aW9uPFdURjo6RnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50JgogICAgIH0p
OwogfQogCi12b2lkIEFzeW5jRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgs
IGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCit2b2lkIEFzeW5jRmlsZVN0cmVhbTo6
Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIGV4cGVjdGVkTW9kaWZpY2F0aW9u
VGltZSkKIHsKICAgICAvLyBGSVhNRTogRXhwbGljaXQgcmV0dXJuIHR5cGUgaGVyZSBhbmQgaW4g
YWxsIHRoZSBvdGhlciBjYXNlcyBsaWtlIHRoaXMgYmVsb3cgaXMgYSB3b3JrYXJvdW5kIGZvciBh
IGRlZmljaWVuY3kKICAgICAvLyBpbiB0aGUgV2luZG93cyBjb21waWxlciBhdCB0aGUgdGltZSBv
ZiB0aGlzIHdyaXRpbmcuIENvdWxkIHJlbW92ZSBpdCBpZiB0aGF0IGlzIHJlc29sdmVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKaW5kZXggNjJjYWZmZTJkOThhZDFk
NWQxMGY0ZWQ2ODgxN2RhOTA0OTRlYTE3OC4uNDk3OGI0OWY2NjlkNGM3Yjc0ZDc2NDczYTM1ZmUw
MjQ4MDVlYjM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCkBA
IC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQ0LDcgKzQ1LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgQXN5bmNGaWxl
U3RyZWFtIHsKICAgICBleHBsaWNpdCBBc3luY0ZpbGVTdHJlYW0oRmlsZVN0cmVhbUNsaWVudCYp
OwogICAgIH5Bc3luY0ZpbGVTdHJlYW0oKTsKIAotICAgIHZvaWQgZ2V0U2l6ZShjb25zdCBTdHJp
bmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgIHZvaWQgZ2V0
U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSk7CiAgICAgdm9pZCBvcGVuRm9yUmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBv
ZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwogICAgIHZvaWQgY2xvc2UoKTsKICAgICB2b2lkIHJl
YWQoY2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvRmlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3BwCmluZGV4
IGU3YjBkM2VjOTJmNDhlMmE1YzhlNzYxOGY2MWNjOTg1MGU4ZmU5MDEuLjljNWVjMTJmOGEyZjc1
NmNhYmYyOGExNjE5YjBhYmUxZTIzYWFmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcApAQCAt
MTEyLDExICsxMTIsMTEgQEAgaW50NjRfdCBGaWxlOjpsYXN0TW9kaWZpZWQoKSBjb25zdAogICAg
IC8vIEZJWE1FOiBUaGlzIGRvZXMgc3luYy1pL28gb24gdGhlIG1haW4gdGhyZWFkIGFuZCBhbHNv
IHJlY2FsY3VsYXRlcyBldmVyeSB0aW1lIHRoZSBtZXRob2QgaXMgY2FsbGVkLgogICAgIC8vIFRo
ZSBpL28gc2hvdWxkIGJlIHBlcmZvcm1lZCBvbiBhIGJhY2tncm91bmQgdGhyZWFkLAogICAgIC8v
IGFuZCB0aGUgcmVzdWx0IHNob3VsZCBiZSBjYWNoZWQgYWxvbmcgd2l0aCBhbiBhc3luY2hyb25v
dXMgbW9uaXRvciBmb3IgY2hhbmdlcyB0byB0aGUgZmlsZS4KLSAgICB0aW1lX3QgbW9kaWZpY2F0
aW9uVGltZTsKLSAgICBpZiAoRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV9w
YXRoLCBtb2RpZmljYXRpb25UaW1lKSAmJiBGaWxlU3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUobW9k
aWZpY2F0aW9uVGltZSkpCi0gICAgICAgIHJlc3VsdCA9IG1vZGlmaWNhdGlvblRpbWUgKiBtc1Bl
clNlY29uZDsKKyAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxl
TW9kaWZpY2F0aW9uVGltZShtX3BhdGgpOworICAgIGlmIChtb2RpZmljYXRpb25UaW1lICYmIEZp
bGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShtb2RpZmljYXRpb25UaW1lLnZhbHVlKCkpKQorICAg
ICAgICByZXN1bHQgPSBtb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxp
c2Vjb25kc0FzPGludDY0X3Q+KCk7CiAgICAgZWxzZQotICAgICAgICByZXN1bHQgPSBXYWxsVGlt
ZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHMoKTsKKyAgICAgICAgcmVz
dWx0ID0gV2FsbFRpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzQXM8
aW50NjRfdD4oKTsKIAogICAgIHJldHVybiBXVEY6OnRpbWVDbGlwKHJlc3VsdCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCBiZDAzNDdmNzZkNzI1ZjgzNGQ5MDYzM2Y4MzE3ODE5NjgzYmVkYjdl
Li5hYTcyNmVmMmNjNWIyZmJmODIyYjIzZDNmYWNhZGRlYmQxM2RhOTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTEzNDcsNyArMTM0Nyw3IEBAIHZvaWQgUGFnZTo6dXNlclN0eWxlU2hlZXRMb2Nh
dGlvbkNoYW5nZWQoKQogCiAgICAgbV9kaWRMb2FkVXNlclN0eWxlU2hlZXQgPSBmYWxzZTsKICAg
ICBtX3VzZXJTdHlsZVNoZWV0ID0gU3RyaW5nKCk7Ci0gICAgbV91c2VyU3R5bGVTaGVldE1vZGlm
aWNhdGlvblRpbWUgPSAwOworICAgIG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lID0g
V2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKDApOwogCiAgICAgLy8gRGF0YSBVUkxzIHdpdGggYmFz
ZTY0LWVuY29kZWQgVVRGLTggc3R5bGUgc2hlZXRzIGFyZSBjb21tb24uIFdlIGNhbiBwcm9jZXNz
IHRoZW0KICAgICAvLyBzeW5jaHJvbm91c2x5IGFuZCBhdm9pZCB1c2luZyBhIGxvYWRlci4gCkBA
IC0xMzcwLDggKzEzNzAsOCBAQCBjb25zdCBTdHJpbmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkg
Y29uc3QKICAgICBpZiAobV91c2VyU3R5bGVTaGVldFBhdGguaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gbV91c2VyU3R5bGVTaGVldDsKIAotICAgIHRpbWVfdCBtb2RUaW1lOwotICAgIGlmICgh
RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobV91c2VyU3R5bGVTaGVldFBhdGgs
IG1vZFRpbWUpKSB7CisgICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0
RmlsZU1vZGlmaWNhdGlvblRpbWUobV91c2VyU3R5bGVTaGVldFBhdGgpOworICAgIGlmICghbW9k
aWZpY2F0aW9uVGltZSkgewogICAgICAgICAvLyBUaGUgc3R5bGVzaGVldCBlaXRoZXIgZG9lc24n
dCBleGlzdCwgd2FzIGp1c3QgZGVsZXRlZCwgb3IgaXMKICAgICAgICAgLy8gb3RoZXJ3aXNlIHVu
cmVhZGFibGUuIElmIHdlJ3ZlIHJlYWQgdGhlIHN0eWxlc2hlZXQgYmVmb3JlLCB3ZSBzaG91bGQK
ICAgICAgICAgLy8gdGhyb3cgYXdheSB0aGF0IGRhdGEgbm93IGFzIGl0IG5vIGxvbmdlciByZXBy
ZXNlbnRzIHdoYXQncyBvbiBkaXNrLgpAQCAtMTM4MSwxMiArMTM4MSwxMiBAQCBjb25zdCBTdHJp
bmcmIFBhZ2U6OnVzZXJTdHlsZVNoZWV0KCkgY29uc3QKIAogICAgIC8vIElmIHRoZSBzdHlsZXNo
ZWV0IGhhc24ndCBjaGFuZ2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgd2UgcmVhZCBpdCwgd2UgY2Fu
CiAgICAgLy8ganVzdCByZXR1cm4gdGhlIG9sZCBkYXRhLgotICAgIGlmIChtX2RpZExvYWRVc2Vy
U3R5bGVTaGVldCAmJiBtb2RUaW1lIDw9IG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1l
KQorICAgIGlmIChtX2RpZExvYWRVc2VyU3R5bGVTaGVldCAmJiBtb2RpZmljYXRpb25UaW1lIDw9
IG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lKQogICAgICAgICByZXR1cm4gbV91c2Vy
U3R5bGVTaGVldDsKIAogICAgIG1fZGlkTG9hZFVzZXJTdHlsZVNoZWV0ID0gdHJ1ZTsKICAgICBt
X3VzZXJTdHlsZVNoZWV0ID0gU3RyaW5nKCk7Ci0gICAgbV91c2VyU3R5bGVTaGVldE1vZGlmaWNh
dGlvblRpbWUgPSBtb2RUaW1lOworICAgIG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1l
ID0gbW9kaWZpY2F0aW9uVGltZS52YWx1ZSgpOwogCiAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJl
IGJldHRlciB0byBsb2FkIHRoaXMgYXN5bmNocm9ub3VzbHkgdG8gYXZvaWQgYmxvY2tpbmcKICAg
ICAvLyB0aGUgcHJvY2VzcywgYnV0IHdlIHdpbGwgZmlyc3QgbmVlZCB0byBjcmVhdGUgYW4gYXN5
bmNocm9ub3VzIGxvYWRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggNDExNDg3ZjgzNzVlZmJlNzlkMjhh
ZTFkMzI0NDc4Mzg5MWY1ODBjMi4uNDk4ZWUwNTcwYjdkOWVjMWQ4MGFmOTgyYmRiZDFlZWNmNGNh
YzAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTgxMSw3ICs4MTEsNyBAQCBjbGFzcyBQYWdlIDogcHVi
bGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+IHsKICAgICBTdHJpbmcgbV91c2VyU3R5bGVTaGVldFBh
dGg7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV91c2VyU3R5bGVTaGVldDsKICAgICBtdXRhYmxlIGJv
b2wgbV9kaWRMb2FkVXNlclN0eWxlU2hlZXQgeyBmYWxzZSB9OwotICAgIG11dGFibGUgdGltZV90
IG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lIHsgMCB9OworICAgIG11dGFibGUgV2Fs
bFRpbWUgbV91c2VyU3R5bGVTaGVldE1vZGlmaWNhdGlvblRpbWU7CiAKICAgICBTdHJpbmcgbV9j
YXB0aW9uVXNlclByZWZlcmVuY2VzU3R5bGVTaGVldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZU1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlTWV0YWRhdGEuaAppbmRleCA4MTY0ZDZkYjhhMDhkZDcyMDA4MTk1Y2MxOTI3N2ZiODMwN2Fi
MDI2Li43ZDg4NDk1M2U3Njc1ZDkyYzA2MzhkZWNhZDg1N2NkNDFhNTljNTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaApAQCAtMzAsMTEgKzMwLDEzIEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogc3RydWN0IEZpbGVNZXRhZGF0YSB7CiAgICAgLy8gVGhlIGxhc3QgbW9kaWZpY2F0aW9u
IHRpbWUgb2YgdGhlIGZpbGUsIGluIHNlY29uZHMuCi0gICAgZG91YmxlIG1vZGlmaWNhdGlvblRp
bWU7CisgICAgV2FsbFRpbWUgbW9kaWZpY2F0aW9uVGltZTsKIAogICAgIC8vIFRoZSBsZW5ndGgg
b2YgdGhlIGZpbGUgaW4gYnl0ZXMuCiAgICAgbG9uZyBsb25nIGxlbmd0aDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKaW5kZXggYWI0OGMwNGFjZWNhMzlkMGI3NzU1M2RjZTc1
Y2FkYjVkNGIzMzVhNC4uYzk3YmQxYTI0N2U1ZTM5ZTg5YjFlNWI4MGY2OWQ2OTI5YjkzYzM2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAKQEAgLTQ5LDE0ICs0OSwxNCBA
QCBGaWxlU3RyZWFtOjp+RmlsZVN0cmVhbSgpCiAgICAgY2xvc2UoKTsKIH0KIAotbG9uZyBsb25n
IEZpbGVTdHJlYW06OmdldFNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBkb3VibGUgZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKQorbG9uZyBsb25nIEZpbGVTdHJlYW06OmdldFNpemUoY29uc3QgU3Ry
aW5nJiBwYXRoLCBXYWxsVGltZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCiB7CiAgICAgLy8g
Q2hlY2sgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUgcG9zc2libGUgZmlsZSBjaGFuZ2Uu
Ci0gICAgdGltZV90IG1vZGlmaWNhdGlvblRpbWU7Ci0gICAgaWYgKCFGaWxlU3lzdGVtOjpnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmljYXRpb25UaW1lKSkKKyAgICBhdXRvIG1v
ZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRo
KTsKKyAgICBpZiAoIW1vZGlmaWNhdGlvblRpbWUpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBp
ZiAoRmlsZVN5c3RlbTo6aXNWYWxpZEZpbGVUaW1lKGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkp
IHsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHRpbWVfdD4oZXhwZWN0ZWRNb2RpZmljYXRpb25U
aW1lKSAhPSBtb2RpZmljYXRpb25UaW1lKQorICAgICAgICBpZiAoZXhwZWN0ZWRNb2RpZmljYXRp
b25UaW1lLnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSAhPSBtb2RpZmlj
YXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkpCiAgICAg
ICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9GaWxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFt
LmgKaW5kZXggYjJhYTI4NDQ3OWY3YjEyMjZlYmY3YWFhOWI3ZmRjYWMzMGMzMzc2MS4uMTY5OTZj
ZDUyMDA2MjljN2RiNGJmYmUyYzE4ZjY4MmUwMzRkNWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0ZpbGVTdHJlYW0uaApAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBGaWxlU3RyZWFtIHsKIAogICAg
IC8vIEdldHMgdGhlIHNpemUgb2YgYSBmaWxlLiBBbHNvIHZhbGlkYXRlcyBpZiB0aGUgZmlsZSBo
YXMgYmVlbiBjaGFuZ2VkIG9yIG5vdCBpZiB0aGUgZXhwZWN0ZWQgbW9kaWZpY2F0aW9uIHRpbWUg
aXMgcHJvdmlkZWQsIGkuZS4gbm9uLXplcm8uCiAgICAgLy8gUmV0dXJucyB0b3RhbCBudW1iZXIg
b2YgYnl0ZXMgaWYgc3VjY2Vzc2Z1bC4gLTEgb3RoZXJ3aXNlLgotICAgIGxvbmcgbG9uZyBnZXRT
aXplKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7
CisgICAgbG9uZyBsb25nIGdldFNpemUoY29uc3QgU3RyaW5nJiBwYXRoLCBXYWxsVGltZSBleHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUpOwogCiAgICAgLy8gT3BlbnMgYSBmaWxlIGZvciByZWFkaW5n
LiBUaGUgcmVhZGluZyBzdGFydHMgYXQgdGhlIHNwZWNpZmllZCBvZmZzZXQgYW5kIGxhc3RzIHRp
bGwgdGhlIHNwZWNpZmllZCBsZW5ndGguCiAgICAgLy8gUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3Mu
IEZhbHNlIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKaW5k
ZXggMmZkYjI2MGY4MjkzNjJiYmNhYzY1OTc2NzBiMDM4ODMxOWZkMjQ2YS4uYTc3OTk4Y2NmMjA3
MGU0ZDEyMTlkNDFmMTJjZjkyN2NiYTBhOWRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5jcHAKQEAgLTM2MSwxMyArMzYxLDUgQEAgYm9vbCBmaWxlSXNEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtzIHNob3VsZEZvbGxvd1MK
ICAgICByZXR1cm4gbWV0YWRhdGEudmFsdWUoKS50eXBlID09IEZpbGVNZXRhZGF0YTo6VHlwZTo6
RGlyZWN0b3J5OwogfQogCi1zdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0
aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgdGltZV90IG1vZGlmaWNhdGlvblRp
bWUgPSAwOwotICAgIGlmICghZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0
aW9uVGltZSkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhtb2RpZmljYXRpb25UaW1lKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgRmlsZVN5c3RlbQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5oCmluZGV4IGUxNDBiMjQ1N2UxYWU2YWU4YWJlZjFlMmI0MTQ3MGE4NDcxZWY4
MTEuLmIxZTFiYzJkZmY3M2I4NDliMjlhMWZhNzgxNzMyYjEwNWFlNDY2OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKQEAgLTEwNCw5ICsxMDQsOCBAQCBXRUJDT1JFX0VYUE9S
VCBib29sIGRlbGV0ZUVtcHR5RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBP
UlQgYm9vbCBtb3ZlRmlsZShjb25zdCBTdHJpbmcmIG9sZFBhdGgsIGNvbnN0IFN0cmluZyYgbmV3
UGF0aCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVTaXplKGNvbnN0IFN0cmluZyYsIGxv
bmcgbG9uZyYgcmVzdWx0KTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZv
cm1GaWxlSGFuZGxlLCBsb25nIGxvbmcmIHJlc3VsdCk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIGdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYsIHRpbWVfdCYgcmVzdWx0KTsKIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVNb2RpZmljYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlQ3JlYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYsIHRpbWVfdCYgcmVzdWx0KTsgLy8gTm90IGFsbCBwbGF0Zm9ybXMg
c3RvcmUgZmlsZSBjcmVhdGlvbiB0aW1lLgorV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxX
YWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmKTsgLy8gTm90IGFsbCBw
bGF0Zm9ybXMgc3RvcmUgZmlsZSBjcmVhdGlvbiB0aW1lLgogV0VCQ09SRV9FWFBPUlQgc3RkOjpv
cHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YShjb25zdCBTdHJpbmcmIHBhdGgpOwog
V0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbGVNZXRhZGF0YUZv
bGxvd2luZ1N5bWxpbmtzKGNvbnN0IFN0cmluZyYgcGF0aCk7CiBXRUJDT1JFX0VYUE9SVCBib29s
IGZpbGVJc0RpcmVjdG9yeShjb25zdCBTdHJpbmcmLCBTaG91bGRGb2xsb3dTeW1ib2xpY0xpbmtz
KTsKQEAgLTEzMyw4ICsxMzIsOCBAQCBTdHJpbmcgc3RyaW5nRnJvbUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihjb25zdCBjaGFyKik7CiAKIGlubGluZSBib29sIGlzSGFuZGxlVmFsaWQoY29uc3Qg
UGxhdGZvcm1GaWxlSGFuZGxlJiBoYW5kbGUpIHsgcmV0dXJuIGhhbmRsZSAhPSBpbnZhbGlkUGxh
dGZvcm1GaWxlSGFuZGxlOyB9CiAKLWlubGluZSBkb3VibGUgaW52YWxpZEZpbGVUaW1lKCkgeyBy
ZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsgfQotaW5saW5l
IGJvb2wgaXNWYWxpZEZpbGVUaW1lKGRvdWJsZSB0aW1lKSB7IHJldHVybiBzdGQ6OmlzZmluaXRl
KHRpbWUpOyB9CitpbmxpbmUgV2FsbFRpbWUgaW52YWxpZEZpbGVUaW1lKCkgeyByZXR1cm4gV2Fs
bFRpbWU6Om5hbigpOyB9CitpbmxpbmUgYm9vbCBpc1ZhbGlkRmlsZVRpbWUoV2FsbFRpbWUgdGlt
ZSkgeyByZXR1cm4gc3RkOjppc25hbih0aW1lKTsgfQogCiAvLyBQcmVmaXggaXMgd2hhdCB0aGUg
ZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgsIG5vdCB0aGUgZnVsbCBwYXRoLgogV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIG9wZW5UZW1wb3JhcnlGaWxlKGNvbnN0IFN0cmluZyYgcHJlZml4
LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggZjk0MDgxNWY1MTI0ODAxNWY3M2IwMDUxNzgyZGQ1
YjgyNTY1ODhhZi4uOGZjNjg2NGNlYzY3YWRkZTI5YjMxMmJiODEwZWJhNTM3M2IxODgzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAg
LTE1MSwyMCArMTUxLDE5IEBAIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlLCBs
b25nIGxvbmcmKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBnZXRGaWxlQ3JlYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYsIHRpbWVfdCYpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBnZXRG
aWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IElzIHRoZXJl
IGEgd2F5IHRvIHJldHJpZXZlIGZpbGUgY3JlYXRpb24gdGltZSB3aXRoIEd0ayBvbiBwbGF0Zm9y
bXMgdGhhdCBzdXBwb3J0IGl0PwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogfQogCi1ib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
cGF0aCwgdGltZV90JiBtb2RpZmllZFRpbWUpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgR1N0YXRCdWYg
c3RhdFJlc3VsdDsKICAgICBpZiAoIWdldEZpbGVTdGF0KHBhdGgsICZzdGF0UmVzdWx0KSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
bW9kaWZpZWRUaW1lID0gc3RhdFJlc3VsdC5zdF9tdGltZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRSZXN1bHQuc3RfbXRpbWUpOwog
fQogCiBzdGF0aWMgRmlsZU1ldGFkYXRhOjpUeXBlIHRvRmlsZU1ldGF0YVR5cGUoR1N0YXRCdWYg
c3RhdFJlc3VsdCkKQEAgLTE4Niw3ICsxODUsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxl
TWV0YWRhdGE+IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLAog
ICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNFbXB0eSgpICYmIGZpbGVuYW1lWzBdID09
ICcuJzsKIAogICAgIHJldHVybiBGaWxlTWV0YWRhdGEgewotICAgICAgICBzdGF0aWNfY2FzdDxk
b3VibGU+KHN0YXRSZXN1bHQuc3RfbXRpbWUpLAorICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1Nl
Y29uZHMoc3RhdFJlc3VsdC5zdF9tdGltZSksCiAgICAgICAgIHN0YXRSZXN1bHQuc3Rfc2l6ZSwK
ICAgICAgICAgaXNIaWRkZW4sCiAgICAgICAgIHRvRmlsZU1ldGF0YVR5cGUoc3RhdFJlc3VsdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxl
UmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmNwcAppbmRleCA2YTVmMTJlODRkNzQ3ZDg1YzA5ZTA1ZmExNDMwOTNmNDgx
MDA2ZDMxLi44NGVmZWNmYzI0NmJmOWMxZTI4MzVlMjViZjk3N2U1ZTRjMDg4YWFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iRGF0
YUZpbGVSZWZlcmVuY2U6OnNpemUoKQogICAgIHJldHVybiBtX3NpemU7CiB9CiAKLWRvdWJsZSBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCitXYWxsVGlt
ZSBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCiB7CiAj
aWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgLy8gV2UgZG8gbm90IGN1cnJlbnRseSB0
cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmlsZXMsIGJlY2F1c2Ugd2UgaGF2ZSBh
IHNuYXBzaG90LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKaW5kZXggYTUzZjc3NTUxMjU4YjQ4ZjNlYmI4YWE0NzAx
OWI4ZTRlNDdkZmFmYi4uNWFmZjY3NjdkN2Y1ZTcwZTY1MzhjZmU4NDk4NmMwYTU0ZmM4Y2JjOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVS
ZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEJsb2JEYXRhRmlsZVJl
ZmVyZW5jZV9oCiAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9X
YWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00NCw3ICs0NSw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEJsb2JEYXRh
RmlsZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3VudGVkPEJsb2JEYXRhRmlsZVJlZmVyCiAKICAg
ICBjb25zdCBTdHJpbmcmIHBhdGgoKTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpOwot
ICAgIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUoKTsKKyAgICBXYWxsVGltZSBleHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRmls
ZUFjY2VzcygpOwogICAgIHZpcnR1YWwgdm9pZCByZXZva2VGaWxlQWNjZXNzKCk7CkBAIC02Myw3
ICs2NCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEJsb2JEYXRhRmlsZVJlZmVyZW5jZSA6IHB1
YmxpYyBSZWZDb3VudGVkPEJsb2JEYXRhRmlsZVJlZmVyCiAgICAgYm9vbCBtX3JlcGxhY2VtZW50
U2hvdWxkQmVHZW5lcmF0ZWQ7CiAjZW5kaWYKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9zaXpl
OwotICAgIGRvdWJsZSBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZTsKKyAgICBXYWxsVGltZSBt
X2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggOGRiM2RlYzZkOTU0MzJmNjhmMjNjNDAy
NjljZTM0NWI4MjI0NTQxNi4uMGU0YTRiNTM3NDg3ZDk2NzExZWJmNDg4M2U4ZjM2MDg4ZmRmMTY3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKQEAg
LTE5MCw3ICsxOTAsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRGaWxlKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKQogICAgIG1fbGVuZ3RoSW5CeXRlcyA9
IHN0ZDo6bnVsbG9wdDsKIH0KIAotdm9pZCBGb3JtRGF0YTo6YXBwZW5kRmlsZVJhbmdlKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgZG91
YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpCit2
b2lkIEZvcm1EYXRhOjphcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgbG9u
ZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBXYWxsVGltZSBleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKQogewogICAgIG1fZWxlbWVudHMuYXBw
ZW5kKEZvcm1EYXRhRWxlbWVudChmaWxlbmFtZSwgc3RhcnQsIGxlbmd0aCwgZXhwZWN0ZWRNb2Rp
ZmljYXRpb25UaW1lLCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKICAgICBtX2xlbmd0aEluQnl0ZXMg
PSBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRh
LmgKaW5kZXggYmJhYWRlMTg1Yjc5ZjU0ZjhjMDcwNzUzOTYzMjE2NjM0NmVjMmRlYy4uODkxOWMz
ZmVlZDVhMWQyYTM1YjZmOTNiOWNmYzM0MmU5YjRkMjhjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGEuaApAQCAtNDUsNyArNDUsNyBAQCBzdHJ1Y3QgRm9ybURh
dGFFbGVtZW50IHsKICAgICAgICAgOiBkYXRhKFdURk1vdmUoZGF0YSkpIHsgfQogICAgIGV4cGxp
Y2l0IEZvcm1EYXRhRWxlbWVudChWZWN0b3I8Y2hhcj4mJiBhcnJheSkKICAgICAgICAgOiBkYXRh
KFdURk1vdmUoYXJyYXkpKSB7IH0KLSAgICBGb3JtRGF0YUVsZW1lbnQoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgaW50NjRfdCBmaWxlU3RhcnQsIGludDY0X3QgZmlsZUxlbmd0aCwgZG91YmxlIGV4
cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKQorICAg
IEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBpbnQ2NF90IGZpbGVTdGFy
dCwgaW50NjRfdCBmaWxlTGVuZ3RoLCBXYWxsVGltZSBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkKICAgICAgICAgOiBkYXRhKEVuY29kZWRGaWxl
RGF0YSB7IGZpbGVuYW1lLCBmaWxlU3RhcnQsIGZpbGVMZW5ndGgsIGV4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUsIHsgfSwgc2hvdWxkR2VuZXJhdGVGaWxlLCBmYWxzZSB9KSB7IH0KICAgICBl
eHBsaWNpdCBGb3JtRGF0YUVsZW1lbnQoY29uc3QgVVJMJiBibG9iVVJMKQogICAgICAgICA6IGRh
dGEoRW5jb2RlZEJsb2JEYXRhIHsgYmxvYlVSTCB9KSB7IH0KQEAgLTcxLDcgKzcxLDcgQEAgc3Ry
dWN0IEZvcm1EYXRhRWxlbWVudCB7CiAgICAgICAgIFN0cmluZyBmaWxlbmFtZTsKICAgICAgICAg
aW50NjRfdCBmaWxlU3RhcnQgeyAwIH07CiAgICAgICAgIGludDY0X3QgZmlsZUxlbmd0aCB7IDAg
fTsKLSAgICAgICAgZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgeyAwIH07Cisg
ICAgICAgIFdhbGxUaW1lIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgeyBXYWxsVGltZTo6
ZnJvbVJhd1NlY29uZHMoMCkgfTsKICAgICAgICAgU3RyaW5nIGdlbmVyYXRlZEZpbGVuYW1lOwog
ICAgICAgICBib29sIHNob3VsZEdlbmVyYXRlRmlsZSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wg
b3duc0dlbmVyYXRlZEZpbGUgeyBmYWxzZSB9OwpAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVjdCBG
b3JtRGF0YUVsZW1lbnQgewogICAgICAgICAgICAgaWYgKCFmaWxlTGVuZ3RoKQogICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOworICAgICAg
ICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGlt
ZTsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsK
ICAgICAgICAgICAgIGlmICghZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjE4LDcgKzIxOCw3IEBAIGNsYXNzIEZv
cm1EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9ybURhdGE+IHsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpOwogICAgIHZvaWQg
YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sIHNob3VsZEdlbmVyYXRlRmls
ZSA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZEZpbGVSYW5nZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBsZW5ndGgsIGRv
dWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlID0g
ZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRmlsZVJhbmdlKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGxlbmd0aCwgV2FsbFRp
bWUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSA9IGZh
bHNlKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiBibG9i
VVJMKTsKIAogICAgIFZlY3RvcjxjaGFyPiBmbGF0dGVuKCkgY29uc3Q7IC8vIG9taXRzIGZpbGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRh
U3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3Jt
RGF0YVN0cmVhbUNGTmV0LmNwcAppbmRleCA0NWUzMWU1NDM3YWY4ZDlhNDEyNDk0ZDQyNmZkMmRj
MzgwNTgyOTk0Li40MmZiN2VhYzQ2ZTZlODIzZDc1YzMyMTFhODg5N2U2OGYyMGU1OWQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURh
dGFTdHJlYW1DRk5ldC5jcHAKQEAgLTE0Niw4ICsxNDYsOCBAQCBzdGF0aWMgYm9vbCBhZHZhbmNl
Q3VycmVudFN0cmVhbShGb3JtU3RyZWFtRmllbGRzKiBmb3JtKQogICAgICAgICB9LCBbZm9ybV0g
KGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewogICAg
ICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvciBub3QgaWYg
cmVxdWlyZWQuCiAgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNWYWxpZEZpbGVUaW1lKGZp
bGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKSB7Ci0gICAgICAgICAgICAgICAg
dGltZV90IGZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAgICAgICAgICAgIGlmICghRmlsZVN5
c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZURhdGEuZmlsZW5hbWUsIGZpbGVNb2Rp
ZmljYXRpb25UaW1lKSB8fCBmaWxlTW9kaWZpY2F0aW9uVGltZSAhPSBzdGF0aWNfY2FzdDx0aW1l
X3Q+KGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKQorICAgICAgICAgICAg
ICAgIGF1dG8gZmlsZU1vZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShmaWxlRGF0YS5maWxlbmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKCFmaWxl
TW9kaWZpY2F0aW9uVGltZSB8fCBmaWxlTW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBv
Y2goKS5zZWNvbmRzQXM8dGltZV90PigpICE9IGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNh
dGlvblRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBj
b25zdCBTdHJpbmcmIHBhdGggPSBmaWxlRGF0YS5zaG91bGRHZW5lcmF0ZUZpbGUgPyBmaWxlRGF0
YS5nZW5lcmF0ZWRGaWxlbmFtZSA6IGZpbGVEYXRhLmZpbGVuYW1lOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNv
dXAuY3BwCmluZGV4IDIyOWM1M2NmNTcyMDI3NmU1MjVlOWE2ZmI2Zjc2MmI4ZmY1OGVlMDcuLmZi
NGEyMzI2Y2ViYjIzNTM1OTkwYzY5NWY3ZTk0ZjE2NjAxOTRmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
U291cC5jcHAKQEAgLTQ0LDkgKzQ0LDggQEAgc3RhdGljIHVpbnQ2NF90IGFwcGVuZEVuY29kZWRC
bG9iSXRlbVRvU291cE1lc3NhZ2VCb2R5KFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwKICAgICAg
ICAgaWYgKCFGaWxlU3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUoYmxvYkl0ZW0uZmlsZSgpLT5leHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUoKSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAg
ICB0aW1lX3QgZmlsZU1vZGlmaWNhdGlvblRpbWU7Ci0gICAgICAgIGlmICghRmlsZVN5c3RlbTo6
Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoYmxvYkl0ZW0uZmlsZSgpLT5wYXRoKCksIGZpbGVNb2Rp
ZmljYXRpb25UaW1lKQotICAgICAgICAgICAgfHwgZmlsZU1vZGlmaWNhdGlvblRpbWUgIT0gc3Rh
dGljX2Nhc3Q8dGltZV90PihibG9iSXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGlt
ZSgpKSkKKyAgICAgICAgYXV0byBmaWxlTW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06Omdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpKTsKKyAgICAgICAg
aWYgKCFmaWxlTW9kaWZpY2F0aW9uVGltZSB8fCBmaWxlTW9kaWZpY2F0aW9uVGltZS0+c2Vjb25k
c1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpICE9IGJsb2JJdGVtLmZpbGUoKS0+ZXhw
ZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGlt
ZV90PigpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgaWYgKFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRzT2ZGaWxl
KGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggMWU2ODIzMTcxZDJmNTJjYzkyNGIz
Yzk3OGI0M2YzMDJhODYxZDEyYS4uOGQyODRjMjVmYTAxMDU3Nzg2YzczYzA1NmMyNzc4NGM4MGY1
YjdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVt
UE9TSVguY3BwCkBAIC0yMDIsNDIgKzIwMiwzOSBAQCBib29sIGdldEZpbGVTaXplKFBsYXRmb3Jt
RmlsZUhhbmRsZSBoYW5kbGUsIGxvbmcgbG9uZyYgcmVzdWx0KQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3Qm
IHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVDcmVhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQogewogI2lmIE9TKERBUldJTikgfHwgT1MoT1BFTkJTRCkgfHwgT1Mo
TkVUQlNEKSB8fCBPUyhGUkVFQlNEKQogICAgIENTdHJpbmcgZnNSZXAgPSBmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24ocGF0aCk7CiAKICAgICBpZiAoIWZzUmVwLmRhdGEoKSB8fCBmc1JlcC5kYXRh
KClbMF0gPT0gJ1wwJykKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgc3RydWN0IHN0YXQgZmlsZUluZm87CiAKICAgICBpZiAoc3RhdChm
c1JlcC5kYXRhKCksICZmaWxlSW5mbykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJlc3VsdCA9IGZpbGVJbmZvLnN0X2JpcnRodGlt
ZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRz
KGZpbGVJbmZvLnN0X2JpcnRodGltZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShwYXRoKTsK
LSAgICBVTlVTRURfUEFSQU0ocmVzdWx0KTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICNlbmRpZgogfQogCi1ib29sIGdldEZpbGVNb2RpZmljYXRpb25UaW1l
KGNvbnN0IFN0cmluZyYgcGF0aCwgdGltZV90JiByZXN1bHQpCitzdGQ6Om9wdGlvbmFsPFdhbGxU
aW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAg
Q1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKIAogICAgIGlm
ICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAnKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBzdHJ1Y3Qgc3Rh
dCBmaWxlSW5mbzsKIAogICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwgJmZpbGVJbmZvKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
cmVzdWx0ID0gZmlsZUluZm8uc3RfbXRpbWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJu
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSk7CiB9CiAKIHN0YXRp
YyBGaWxlTWV0YWRhdGE6OlR5cGUgdG9GaWxlTWV0YXRhVHlwZShzdHJ1Y3Qgc3RhdCBmaWxlSW5m
bykKQEAgLTI2Myw3ICsyNjAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+
IGZpbGVNZXRhZGF0YVVzaW5nRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBwYXRoLAogICAgIFN0cmlu
ZyBmaWxlbmFtZSA9IHBhdGhHZXRGaWxlTmFtZShwYXRoKTsKICAgICBib29sIGlzSGlkZGVuID0g
IWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CiAgICAgcmV0dXJuIEZp
bGVNZXRhZGF0YSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oZmlsZUluZm8uc3RfbXRp
bWUpLAorICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3RfbXRpbWUp
LAogICAgICAgICBmaWxlSW5mby5zdF9zaXplLAogICAgICAgICBpc0hpZGRlbiwKICAgICAgICAg
dG9GaWxlTWV0YXRhVHlwZShmaWxlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAppbmRleCA5ZWYxODY4NzA3ZTAzMDcwM2Y2OTAxOTlh
MTJjNjY2Mjc0NzU0YjUyLi5hNTBhMTRmOGMwYjBhNmZkZTc3MzM0ODE1YTE4YWIwYzU4NTAzNGQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3Rl
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0u
Y3BwCkBAIC0xMDgsMTYgKzEwOCwyMCBAQCBsb25nIGxvbmcgU1FMaXRlRmlsZVN5c3RlbTo6Z2V0
RGF0YWJhc2VGaWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogICAgIHJldHVybiBGaWxl
U3lzdGVtOjpnZXRGaWxlU2l6ZShmaWxlTmFtZSwgc2l6ZSkgPyBzaXplIDogMDsKIH0KIAotZG91
YmxlIFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCitXYWxsVGltZSBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZUNyZWF0aW9uVGlt
ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogewotICAgIHRpbWVfdCB0aW1lOwotICAgIHJldHVy
biBGaWxlU3lzdGVtOjpnZXRGaWxlQ3JlYXRpb25UaW1lKGZpbGVOYW1lLCB0aW1lKSA/IHRpbWUg
OiAwOworICAgIGF1dG8gcmVzdWx0ID0gRmlsZVN5c3RlbTo6Z2V0RmlsZUNyZWF0aW9uVGltZShm
aWxlTmFtZSk7CisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC52YWx1ZSgp
OworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoMCk7CiB9CiAKLWRvdWJsZSBT
UUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSkKK1dhbGxUaW1lIFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9u
VGltZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKQogewotICAgIHRpbWVfdCB0aW1lOwotICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShmaWxlTmFtZSwgdGltZSkg
PyB0aW1lIDogMDsKKyAgICBhdXRvIHJlc3VsdCA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKGZpbGVOYW1lKTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVz
dWx0LnZhbHVlKCk7CisgICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcygwKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVGaWxlU3lzdGVtLmgKaW5kZXggYzhhNGY5NDBlODE2OGU3MTQ3MDIzNDAxMWFiYjI4
ZmUzNmYxZTA4Ny4uZjZjNjlhOGJjNzlmYzcyNDJhYThkNDA1YzQxYmQxYWQyMjZiZDgwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCkBAIC05
Nyw4ICs5Nyw4IEBAIGNsYXNzIFNRTGl0ZUZpbGVTeXN0ZW0gewogI2VuZGlmCiAgICAgCiAgICAg
c3RhdGljIGxvbmcgbG9uZyBnZXREYXRhYmFzZUZpbGVTaXplKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBkb3VibGUgZGF0YWJhc2VDcmVhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGRv
dWJsZSBkYXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFdhbGxUaW1lIGRhdGFiYXNlQ3JlYXRpb25UaW1lKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBXYWxsVGlt
ZSBkYXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CiAKIHBy
aXZhdGU6CiAgICAgLy8gZG8gbm90IGluc3RhbnRpYXRlIHRoaXMgY2xhc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCA0OWZhMTQ0MTJhOTY1
MjBmODM0ODZlZTcwY2RmNDUwMTk5NTNlMzRmLi40MmEyN2ZkNTg3MmVlNzQxMTNhY2YzNzYyNDc3
ZTM5ZjA5OTkxMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vRmls
ZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0
ZW1XaW4uY3BwCkBAIC0xMjQsMjQgKzEyNCwyNSBAQCBib29sIGdldEZpbGVTaXplKFBsYXRmb3Jt
RmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcmIHNpemUpCiAgICAgcmV0dXJuIGdldEZp
bGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9uU3RydWN0dXJlKGZpbGVJbmZvcm1hdGlv
biwgc2l6ZSk7CiB9CiAKLWJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5n
JiBwYXRoLCB0aW1lX3QmIHRpbWUpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9k
aWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgV0lOMzJfRklORF9EQVRB
VyBmaW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRhKHBhdGgsIGZpbmREYXRhKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisgICAgdGlt
ZV90IHRpbWUgPSAwOwogICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1lRnJvbUZpbmREYXRhKGZp
bmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKHRpbWUpOwogfQogCi1ib29sIGdldEZpbGVDcmVhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBnZXRG
aWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBXSU4zMl9GSU5EX0RB
VEFXIGZpbmREYXRhOwogICAgIGlmICghZ2V0RmluZERhdGEocGF0aCwgZmluZERhdGEpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBn
ZXRGaWxlQ3JlYXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCB0aW1lKTsKLSAgICByZXR1
cm4gdHJ1ZTsKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOwogfQog
CiBzdGF0aWMgU3RyaW5nIGdldEZpbmFsUGF0aE5hbWUoY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAt
MTg1LDcgKzE4Niw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmluZERh
dGFUb0ZpbGVNZXRhZGF0YShXSU4zMl9GSU5EX0RBVEFXIGZpbmRECiAgICAgZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWVGcm9tRmluZERhdGEoZmluZERhdGEsIG1vZGlmaWNhdGlvblRpbWUpOwogCiAg
ICAgcmV0dXJuIEZpbGVNZXRhZGF0YSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4obW9k
aWZpY2F0aW9uVGltZSksCisgICAgICAgIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhtb2RpZmlj
YXRpb25UaW1lKSwKICAgICAgICAgbGVuZ3RoLAogICAgICAgICBzdGF0aWNfY2FzdDxib29sPihm
aW5kRGF0YS5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfSElEREVOKSwKICAgICAg
ICAgdG9GaWxlTWV0YWRhdGFUeXBlKGZpbmREYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvU2Vzc2lvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3Rh
dGUuaAppbmRleCBmZTgxYTVkODA5NTVlY2U1ZDJjNjI1Zjg5Njk2MmVhOWU2YzMzNmJkLi45MmFm
ZGM1OThhMmIzN2Y5MTE5N2FkZjg5N2M2MWNmNTk0MTY1YzNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
ZXNzaW9uU3RhdGUuaApAQCAtNjksNyArNjksNyBAQCBzdHJ1Y3QgSFRUUEJvZHkgewogICAgICAg
ICBTdHJpbmcgZmlsZVBhdGg7CiAgICAgICAgIGludDY0X3QgZmlsZVN0YXJ0OwogICAgICAgICBz
dGQ6Om9wdGlvbmFsPGludDY0X3Q+IGZpbGVMZW5ndGg7Ci0gICAgICAgIHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogCiAgICAgICAgIC8v
IEJsb2IuCiAgICAgICAgIFN0cmluZyBibG9iVVJMU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggNjZmZmU5MTk0YjA0N2UxY2Y1
ZTYwOGEyOTdmYWU1MmYyODg5MjM0MC4uMGEyYjg4ZjVlZDdiOTljMjE1MDRmMzQ3NjZiMjhlMTk1
MzEyMDI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCkBAIC0xNjIyLDExICsxNjIyLDExIEBAIGJvb2wgQXJndW1lbnRDb2RlcjxEYXRhYmFz
ZURldGFpbHM+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YWJhc2VEZXRhaWxzJiBkCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShjdXJyZW50VXNhZ2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBkb3VibGUgY3JlYXRpb25UaW1lOworICAgIFdhbGxUaW1lIGNyZWF0aW9uVGlt
ZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNyZWF0aW9uVGltZSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGRvdWJsZSBtb2RpZmljYXRpb25UaW1lOworICAgIFdhbGxUaW1lIG1v
ZGlmaWNhdGlvblRpbWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtb2RpZmljYXRpb25UaW1l
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuY3BwCmlu
ZGV4IGM3OWI1Njc4NzMyZDIwMTRjMmVlODVhNmIyZTdiY2QyNzVkMDE2NDQuLjdlZTA0NWRjYzU4
NzZjZjdiOGQxYzliNjI3ZDk0MmY4NWM2MDE3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUu
Y3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgc3RhdGljIGlubGluZSBib29sIGRlY29kZUhUVFBCb2R5
KEdWYXJpYW50KiBodHRwQm9keVZhcmlhbnQsIEhUVFBCb2R5JiBodHRwQm9keSkKICAgICAgICAg
aWYgKGhhc0ZpbGVMZW5ndGgpCiAgICAgICAgICAgICBlbGVtZW50LmZpbGVMZW5ndGggPSBmaWxl
TGVuZ3RoOwogICAgICAgICBpZiAoaGFzRmlsZU1vZGlmaWNhdGlvblRpbWUpCi0gICAgICAgICAg
ICBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgPSBmaWxlTW9kaWZpY2F0aW9u
VGltZTsKKyAgICAgICAgICAgIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlTW9kaWZpY2F0aW9uVGltZSk7CiAgICAgICAg
IGVsZW1lbnQuYmxvYlVSTFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoYmxvYlVSTFN0cmluZyk7
CiAKICAgICAgICAgaHR0cEJvZHkuZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoZWxl
bWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsv
UGx1Z2luSW5mb0NhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3Rr
L1BsdWdpbkluZm9DYWNoZS5jcHAKaW5kZXggYjliMGMyZWFlMzYwYjRlMDFmZjQ0NDQ4Y2IyNmI0
Mzk0OGU5YzZjYS4uODA2NDdlYjEyZWU1MjUxMWExMTllODVmZGUyZjU5YzRlMjM3Nzg4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0Nh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9QbHVnaW5J
bmZvQ2FjaGUuY3BwCkBAIC0xMTIsMTEgKzExMiwxMSBAQCBib29sIFBsdWdpbkluZm9DYWNoZTo6
Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8m
CiAgICAgaWYgKCFnX2tleV9maWxlX2hhc19ncm91cChtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2lu
R3JvdXAuZGF0YSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdGltZV90IGxhc3RN
b2RpZmllZDsKLSAgICBpZiAoIVdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRp
b25UaW1lKHBsdWdpblBhdGgsIGxhc3RNb2RpZmllZCkpCisgICAgYXV0byBsYXN0TW9kaWZpZWRU
aW1lID0gV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2lu
UGF0aCk7CisgICAgaWYgKCFsYXN0TW9kaWZpZWRUaW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgdGltZV90IGNhY2hlZExhc3RNb2RpZmllZCA9IHN0YXRpY19jYXN0PHRpbWVfdD4oZ19r
ZXlfZmlsZV9nZXRfdWludDY0KG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCks
ICJtdGltZSIsIG51bGxwdHIpKTsKLSAgICBpZiAobGFzdE1vZGlmaWVkICE9IGNhY2hlZExhc3RN
b2RpZmllZCkKKyAgICBpZiAobGFzdE1vZGlmaWVkVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5z
ZWNvbmRzQXM8dGltZV90PigpICE9IGNhY2hlZExhc3RNb2RpZmllZCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgcGx1Z2luLnBhdGggPSBwbHVnaW5QYXRoOwpAQCAtMTQwLDEyICsxNDAs
MTIgQEAgYm9vbCBQbHVnaW5JbmZvQ2FjaGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgogCiB2b2lkIFBsdWdpbkluZm9DYWNoZTo6dXBk
YXRlUGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFBsdWdpbk1vZHVs
ZUluZm8mIHBsdWdpbikKIHsKLSAgICB0aW1lX3QgbGFzdE1vZGlmaWVkOwotICAgIGlmICghV2Vi
Q29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCwgbGFz
dE1vZGlmaWVkKSkKKyAgICBhdXRvIGxhc3RNb2RpZmllZFRpbWUgPSBXZWJDb3JlOjpGaWxlU3lz
dGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwbHVnaW5QYXRoKTsKKyAgICBpZiAoIWxhc3RN
b2RpZmllZFRpbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIENTdHJpbmcgcGx1Z2luR3JvdXAg
PSBwbHVnaW5QYXRoLnV0ZjgoKTsKLSAgICBnX2tleV9maWxlX3NldF91aW50NjQobV9jYWNoZUZp
bGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSwgIm10aW1lIiwgc3RhdGljX2Nhc3Q8Z3VpbnQ2
ND4obGFzdE1vZGlmaWVkKSk7CisgICAgZ19rZXlfZmlsZV9zZXRfdWludDY0KG1fY2FjaGVGaWxl
LmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCksICJtdGltZSIsIGxhc3RNb2RpZmllZFRpbWUtPnNl
Y29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kc0FzPGd1aW50NjQ+KCkpOwogICAgIGdfa2V5X2ZpbGVf
c2V0X3N0cmluZyhtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAibmFtZSIs
IHBsdWdpbi5pbmZvLm5hbWUudXRmOCgpLmRhdGEoKSk7CiAgICAgZ19rZXlfZmlsZV9zZXRfc3Ry
aW5nKG1fY2FjaGVGaWxlLmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCksICJkZXNjcmlwdGlvbiIs
IHBsdWdpbi5pbmZvLmRlc2MudXRmOCgpLmRhdGEoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwCmluZGV4IDZmODVkMzZmOTQ3YWMyMTY0NTBmNzVjMDUzNTg1NjU2ODY3
ODRhZmMuLjc3MGU4Mzc4NTcwNjMzNzBhNDdlZGUxYzBmZDI3NDdmZWZiY2FkMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcApAQCAtNDUsMTEgKzQ1LDExIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogc3RhdGljIGJvb2wgaGFzRmlsZUNoYW5nZWRTaW5jZShjb25z
dCBTdHJpbmcmIHBhdGgsIFdhbGxUaW1lIHNpbmNlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwotICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lOwotICAgIGlmICghRmlsZVN5
c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGF0aCwgbW9kaWZpY2F0aW9uVGltZSkpCisg
ICAgYXV0byBtb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlv
blRpbWUocGF0aCk7CisgICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9u
VGltZSkgPiBzaW5jZTsKKyAgICByZXR1cm4gbW9kaWZpY2F0aW9uVGltZS52YWx1ZSgpID4gc2lu
Y2U7CiB9CiAKIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBjcmVhdGVEZWNv
ZGVyRm9yRmlsZShjb25zdCBTdHJpbmcmIHBhdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5jcHAKaW5kZXggMGEwYTE1NjBjNTRlNTdjZTAzNjNhODA0ZDMwN2JmMGQ0MWVlMjFjOC4u
ZjEwNGIwNDJlMzRjYTNkNzFjYTcyZDc5NDM3ZjljZGQ4NzU5ODExZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIFZlY3RvcjxTZWN1cml0
eU9yaWdpbkRhdGE+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6ZGF0YWJhc2VzTW9kaWZp
ZWRTaW5jZShXCiAgICAgZm9yIChhdXRvIG9yaWdpbiA6IGRhdGFiYXNlT3JpZ2lucykgewogICAg
ICAgICBhdXRvIHBhdGggPSBkYXRhYmFzZVBhdGgob3JpZ2luKTsKICAgICAgICAgCi0gICAgICAg
IGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhTUUxpdGVG
aWxlU3lzdGVtOjpkYXRhYmFzZU1vZGlmaWNhdGlvblRpbWUocGF0aCkpOworICAgICAgICBhdXRv
IG1vZGlmaWNhdGlvblRpbWUgPSBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZU1vZGlmaWNhdGlv
blRpbWUocGF0aCk7CiAgICAgICAgIGlmIChtb2RpZmljYXRpb25UaW1lID49IHRpbWUpCiAgICAg
ICAgICAgICBkYXRhYmFzZU9yaWdpbnNNb2RpZmllZC5hcHBlbmQob3JpZ2luKTsKICAgICB9CkBA
IC0xMzksOCArMTM5LDggQEAgVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3Jp
Z2luRGV0YWlscz4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjoKIAogICAgICAgICBPcmln
aW5EZXRhaWxzIGRldGFpbHM7CiAgICAgICAgIGRldGFpbHMub3JpZ2luSWRlbnRpZmllciA9IG9y
aWdpbi5kYXRhYmFzZUlkZW50aWZpZXIoKTsKLSAgICAgICAgZGV0YWlscy5jcmVhdGlvblRpbWUg
PSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VDcmVh
dGlvblRpbWUocGF0aCkpOwotICAgICAgICBkZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUgPSBXYWxs
VGltZTo6ZnJvbVJhd1NlY29uZHMoU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRp
b25UaW1lKHBhdGgpKTsKKyAgICAgICAgZGV0YWlscy5jcmVhdGlvblRpbWUgPSBTUUxpdGVGaWxl
U3lzdGVtOjpkYXRhYmFzZUNyZWF0aW9uVGltZShwYXRoKTsKKyAgICAgICAgZGV0YWlscy5tb2Rp
ZmljYXRpb25UaW1lID0gU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1l
KHBhdGgpOwogICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGRldGFpbHMpOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFD
YWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCA5MDNjNmQwMTJjMWRiMjg4
ZmJhMjM4YjU3OGJkMDY1NjM0NDhkODE0Li40ZWQ2MzhiNDFjMDZlNTI5MjA5MTQ0NDI1MzkyNDU5
YjFkMmVlOWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNo
ZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNzksNyAr
NzksNyBAQCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBXZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyOjpnZXRNZWRpYUtleU9yaWdpbnMoKQogICAgIHJldHVybiByZXN1bHRzOwogfQogCi1zdGF0
aWMgdm9pZCByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmlu
ZyYgb3JpZ2luUGF0aCwgZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUpCitzdGF0aWMg
dm9pZCByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYg
b3JpZ2luUGF0aCwgV2FsbFRpbWUgc3RhcnREYXRlLCBXYWxsVGltZSBlbmREYXRlKQogewogICAg
IFZlY3RvcjxTdHJpbmc+IG1lZGlhS2V5UGF0aHMgPSBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5
KG9yaWdpblBhdGgsICIqIik7CiAKQEAgLTg5LDEwICs4OSwxMCBAQCBzdGF0aWMgdm9pZCByZW1v
dmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0
aCwgZG91YgogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMobWVkaWFLZXlGaWxl
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIHRpbWVfdCBtb2RUaW1lOwotICAg
ICAgICBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUsIG1v
ZFRpbWUpOwotCi0gICAgICAgIGlmIChtb2RUaW1lIDwgc3RhcnREYXRlIHx8IG1vZFRpbWUgPiBl
bmREYXRlKQorICAgICAgICBhdXRvIG1vZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUpOworICAgICAgICBpZiAoIW1vZGlmaWNh
dGlvblRpbWUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG1vZGlmaWNhdGlv
blRpbWUgPCBzdGFydERhdGUgfHwgbW9kaWZpY2F0aW9uVGltZSA+IGVuZERhdGUpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAogICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1lZGlhS2V5
RmlsZSk7CkBAIC0xMDgsMTAgKzEwOCwxMCBAQCB2b2lkIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXI6OmRlbGV0ZU1lZGlhS2V5RW50cmllc0Zvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaQogICAg
ICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgb3JpZ2luUGF0aCA9IG1lZGlhS2V5U3RvcmFnZURp
cmVjdG9yeUZvck9yaWdpbihvcmlnaW5EYXRhKTsKLSAgICByZW1vdmVBbGxNZWRpYUtleVN0b3Jh
Z2VGb3JPcmlnaW5QYXRoKG9yaWdpblBhdGgsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
bG93ZXN0KCksIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworICAgIHJlbW92
ZUFsbE1lZGlhS2V5U3RvcmFnZUZvck9yaWdpblBhdGgob3JpZ2luUGF0aCwgV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bG93ZXN0KCkpLCBXYWxs
VGltZTo6ZnJvbVJhd1NlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSkp
OwogfQogCi12b2lkIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZU1lZGlhS2V5RW50
cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRl
KQordm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVNZWRpYUtleUVudHJpZXNN
b2RpZmllZEJldHdlZW5EYXRlcyhXYWxsVGltZSBzdGFydERhdGUsIFdhbGxUaW1lIGVuZERhdGUp
CiB7CiAgICAgaWYgKG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlcjo6ZGVsZXRlQWxsTWVkaWFLZXlFbnRyaWVzKCkKIAogICAgIFZlY3RvcjxTdHJpbmc+IG9y
aWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX21lZGlhS2V5U3RvcmFnZURp
cmVjdG9yeSwgIioiKTsKICAgICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBvcmlnaW5QYXRocykK
LSAgICAgICAgcmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRo
LCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGRvdWJsZT46Om1heCgpKTsKKyAgICAgICAgcmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9y
T3JpZ2luUGF0aChvcmlnaW5QYXRoLCBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSksIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhz
dGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1h
bmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXIuaAppbmRleCAxMTllY2U4MzRlNDRkY2U4OWEzYjM3YzE1N2RlMjkzZjli
M2ZmOTQyLi5jYzBiZDE0YzkxZDBkNTBjYTUzN2FmMWExMTU5MWZmYTk4YjU4ZDgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFdlYk1lZGlh
S2V5U3RvcmFnZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQgewogCiAgICAg
VmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0TWVkaWFLZXlPcmlnaW5zKCk7
CiAgICAgdm9pZCBkZWxldGVNZWRpYUtleUVudHJpZXNGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJik7Ci0gICAgdm9pZCBkZWxldGVNZWRpYUtleUVudHJpZXNNb2Rp
ZmllZEJldHdlZW5EYXRlcyhkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSk7CisgICAg
dm9pZCBkZWxldGVNZWRpYUtleUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhXYWxsVGltZSBz
dGFydERhdGUsIFdhbGxUaW1lIGVuZERhdGUpOwogICAgIHZvaWQgZGVsZXRlQWxsTWVkaWFLZXlF
bnRyaWVzKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1Bs
dWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmluZGV4IDljZGNjMTQ1YjcxOTk5Y2RhNjk4NDE0ZTUy
ZmUyMmMzN2E4OTdiODQuLmY3ZTNlZGY0ZGNhMTI4ODc5YWI3YzJhNzUwMzMxYmFiYjY3NmEzNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwCkBAIC0xMjUsOSArMTI1LDEwIEBAIGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2go
KQogCiAgICAgYXV0byBwYXRoc0VuZCA9IHBhdGhzLmVuZCgpOwogICAgIGZvciAoYXV0byBpdCA9
IHBhdGhzLmJlZ2luKCk7IGl0ICE9IHBhdGhzRW5kOyArK2l0KSB7Ci0gICAgICAgIHRpbWVfdCBs
YXN0TW9kaWZpZWQ7Ci0gICAgICAgIGlmICghRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlv
blRpbWUoKml0LCBsYXN0TW9kaWZpZWQpKQorICAgICAgICBhdXRvIGxhc3RNb2RpZmllZFRpbWUg
PSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgqaXQpOworICAgICAgICBpZiAo
IWxhc3RNb2RpZmllZFRpbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdGltZV90
IGxhc3RNb2RpZmllZCA9IGxhc3RNb2RpZmllZFRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS5zZWNv
bmRzQXM8dGltZV90PigpOwogCiAgICAgICAgIHBhdGhzV2l0aFRpbWVzLmFkZCgqaXQsIGxhc3RN
b2RpZmllZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356368</attachid>
            <date>2018-12-03 01:54:13 -0800</date>
            <delta_ts>2018-12-03 02:14:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192287-20181203185412.patch</filename>
            <type>text/plain</type>
            <size>55333</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFhYzU2ZmY0YWMwMWFj
ZDE1MTk2NDI4YjY1MTYyMDU0ZjBiYjhiOS4uMzllMTE4ZDIyMmYyMzFiYTc1NjU3NTczYmYzZjQ0
NmYxYTk2Mzk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE4LTEyLTAzICBZdXN1
a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFdh
bGxUaW1lIGZvciBmaWxlIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBhIHR5cGUgb2YgZmlsZSB0aW1lIGZyb20g
ZG91YmxlIHRvIFdhbGxUaW1lIHRvIHVzZSBzdHJvbmdseSB0eXBlZCBmaWxlIHRpbWUuCisKKyAg
ICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZGV0YWlscyBjb25z
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6RGF0YWJhc2VEZXRhaWxzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6Y3JlYXRpb25UaW1lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6bW9kaWZpY2F0aW9uVGltZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpQcm9wb3NlZERhdGFiYXNlOjpQcm9wb3NlZERh
dGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1lQW5k
T3JpZ2luKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OmdldFNpemUpOgorICAgICAgICAqIGZpbGVhcGkv
QXN5bmNGaWxlU3RyZWFtLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGU6Omxhc3RNb2RpZmllZCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTdHJlYW06OmdldFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlk
RmlsZVRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6aXNWYWxp
ZEZpbGVUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1H
bGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVDcmVhdGlvblRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhVXNpbmdGdW5j
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZp
bGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpl
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kRmlsZVJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6
OkZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVu
Y29kZWRGaWxlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zv
cm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZUN1cnJlbnRT
dHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RT
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1l
c3NhZ2VCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZUNyZWF0aW9uVGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmdldEZpbGVDcmVhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmlu
ZERhdGFUb0ZpbGVNZXRhZGF0YSk6CisKIDIwMTgtMTItMDIgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBydW50aW1lIGZlYXR1cmUgZmxhZyBmb3IgTGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhYzNlNjJmNDVlMWIxNmI5N2I0MDU5
YTY1ZTM2ZTUyOWE3YmY2YTAuLjk5ZDU5NjFjZDI3NzM3MjhmYzk1ZWQxMjZhMjkxYzkzMzI3NmY5
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTgtMTItMDMgIFl1c3VrZSBTdXp1a2kg
IDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBVc2UgV2FsbFRpbWUgZm9y
IGZpbGUgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyMjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RGF0YWJhc2VEZXRh
aWxzPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3Jh
Z2VEZXRhaWxzQnlPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3U2Vzc2lvblN0YXRlLmNwcDoKKyAgICAgICAgKGRlY29kZUhUVFBCb2R5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luSW5mb0NhY2hlOjp1cGRhdGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6aGFzRmlsZUNoYW5nZWRTaW5jZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZXNNb2RpZmllZFNpbmNlKToKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5EZXRhaWxz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGlu
Zy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmVuY29kZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OmRlY29kZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9N
ZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTWVkaWFLZXlFbnRyaWVzRm9yT3Jp
Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRl
TWVkaWFLZXlFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVBbGxNZWRpYUtleUVudHJpZXMpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9IVFRQQm9keSk6CisgICAgICAgIChXZWJLaXQ6
OnRvRm9ybURhdGEpOgorCiAyMDE4LTEyLTAyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGEgcnVudGltZSBmZWF0dXJlIGZsYWcgZm9yIExheW91dEZvcm1h
dHRpbmdDb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDNhNzdlN2YwNjgw
NGI3NjcwMTU5MTRhYmQ4ZmMzNDg1ODhlODYwYjYuLjU1NjQwNjE3ZTQ0MzZlMGUzZGJkZWI5ODAz
YjkwMGQ5NTIyNWRjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxOC0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQu
b3JnPgorCisgICAgICAgIFVzZSBXYWxsVGltZSBmb3IgZmlsZSB0aW1lCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIyODcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OnJlZnJlc2gpOgorCiAy
MDE4LTExLTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRml4IFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IGU5ZjI1MDFlZjg0YmRkODk4ZjM0MWM4YTQx
NWJkNjExOGU1MWI2NmEuLmVjOWIwNWY5ZTZlZWU0NjkzMjU3ZDNiOTkwZjAwYmQ2YjczY2Y1MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
CkBAIC02MzgsNyArNjM4LDcgQEAgU3RyaW5nIERhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0CiBE
YXRhYmFzZURldGFpbHMgRGF0YWJhc2U6OmRldGFpbHMoKSBjb25zdAogewogICAgIC8vIFRoaXMg
Y29kZSBwYXRoIGlzIG9ubHkgdXNlZCBmb3IgZGF0YWJhc2UgcXVvdGEgZGVsZWdhdGUgY2FsbHMs
IHNvIGZpbGUgZGF0ZXMgYXJlIGlycmVsZXZhbnQgYW5kIGxlZnQgdW5pbml0aWFsaXplZC4KLSAg
ICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKHN0cmluZ0lkZW50aWZpZXIoKSwgZGlzcGxheU5hbWUo
KSwgZXN0aW1hdGVkU2l6ZSgpLCAwLCAwLCAwKTsKKyAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxz
KHN0cmluZ0lkZW50aWZpZXIoKSwgZGlzcGxheU5hbWUoKSwgZXN0aW1hdGVkU2l6ZSgpLCAwLCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OmRpc2FibGVB
dXRob3JpemVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VEZXRhaWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlRGV0YWlscy5oCmluZGV4IDZhOTZlMjNmMDc1NWYwNWQzMDZhY2RjZjkxZDZiNWI1
YTI2ZDU4OTYuLjY3MDIxMDI0MGIyYTg2OGM2MjdlYjUxMGRlZmM3MmE4ODA0ZDk1MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFp
bHMuaApAQCAtMjgsNyArMjgsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9N
YXJrYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvV2Fs
bFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNjQsNyArNjYsNyBAQCBjbGFzcyBEYXRhYmFzZURldGFpbHMgewogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgRGF0YWJhc2VEZXRhaWxzKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGxvbmcgZXhwZWN0ZWRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwgZG91
YmxlIGNyZWF0aW9uVGltZSwgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUpCisgICAgRGF0YWJhc2VE
ZXRhaWxzKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25n
IGN1cnJlbnRVc2FnZSwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lLCBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRpb25UaW1lKQogICAgICAgICA6IG1fbmFtZShk
YXRhYmFzZU5hbWUpCiAgICAgICAgICwgbV9kaXNwbGF5TmFtZShkaXNwbGF5TmFtZSkKICAgICAg
ICAgLCBtX2V4cGVjdGVkVXNhZ2UoZXhwZWN0ZWRVc2FnZSkKQEAgLTc4LDggKzgwLDggQEAgY2xh
c3MgRGF0YWJhc2VEZXRhaWxzIHsKICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQogICAgIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkVXNhZ2U7IH0KICAgICB1aW50NjRfdCBjdXJyZW50
VXNhZ2UoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRVc2FnZTsgfQotICAgIGRvdWJsZSBjcmVh
dGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0aW9uVGltZTsgfQotICAgIGRvdWJsZSBt
b2RpZmljYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmljYXRpb25UaW1lOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jcmVhdGlvblRpbWU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRp
b25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmljYXRpb25UaW1lOyB9CiAjaWZuZGVmIE5E
RUJVRwogICAgIFRocmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7
IH0KICNlbmRpZgpAQCAtODksOCArOTEsOCBAQCBjbGFzcyBEYXRhYmFzZURldGFpbHMgewogICAg
IFN0cmluZyBtX2Rpc3BsYXlOYW1lOwogICAgIHVpbnQ2NF90IG1fZXhwZWN0ZWRVc2FnZSB7IDAg
fTsKICAgICB1aW50NjRfdCBtX2N1cnJlbnRVc2FnZSB7IDAgfTsKLSAgICBkb3VibGUgbV9jcmVh
dGlvblRpbWUgeyAwLjAgfTsKLSAgICBkb3VibGUgbV9tb2RpZmljYXRpb25UaW1lIHsgMC4wIH07
CisgICAgTWFya2FibGU8V2FsbFRpbWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9jcmVh
dGlvblRpbWU7CisgICAgTWFya2FibGU8V2FsbFRpbWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0
cz4gbV9tb2RpZmljYXRpb25UaW1lOwogI2lmbmRlZiBOREVCVUcKICAgICBSZWY8VGhyZWFkPiBt
X3RocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBm
ZmI3ZTg2YTI4OTVmZjJkZDU2YjA4MDk4NWZhN2Q5MTZlZWNmOTYyLi4yM2MzYzMwMzRmZDZhYzgx
YjUxYTQyNzg2OWRiM2ZkZDc2ODJhZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBA
IGNsYXNzIERhdGFiYXNlTWFuYWdlcjo6UHJvcG9zZWREYXRhYmFzZSB7CiBEYXRhYmFzZU1hbmFn
ZXI6OlByb3Bvc2VkRGF0YWJhc2U6OlByb3Bvc2VkRGF0YWJhc2UoRGF0YWJhc2VNYW5hZ2VyJiBt
YW5hZ2VyLCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKICAgICA6
IG1fbWFuYWdlcihtYW5hZ2VyKQogICAgICwgbV9vcmlnaW4ob3JpZ2luLmlzb2xhdGVkQ29weSgp
KQotICAgICwgbV9kZXRhaWxzKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xh
dGVkQ29weSgpLCBlc3RpbWF0ZWRTaXplLCAwLCAwLCAwKQorICAgICwgbV9kZXRhaWxzKG5hbWUu
aXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpLCBlc3RpbWF0ZWRTaXpl
LCAwLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCkKIHsKICAgICBtX21hbmFnZXIuYWRkUHJv
cG9zZWREYXRhYmFzZSgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggMGQ5MTI5MTNhMDIzZDIz
N2MzYzgxNDVkZjA5MjRlNjM5Mzc3MWY0My4uOWY1YjVhZTE4YzczOTQ3ZGE5N2UzYjJkNmFkNDAx
ZDk2ZTBkNTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNDcyLDcgKzQ3Miw3IEBAIERhdGFiYXNlRGV0
YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uCiAKICAgICBTdHJpbmcgcGF0aCA9IGZ1bGxQYXRoRm9yRGF0YWJhc2Uob3Jp
Z2luLCBuYW1lLCBmYWxzZSk7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gRGF0YWJhc2VEZXRhaWxzKG5hbWUsIGRpc3BsYXlOYW1lLCBleHBlY3RlZFVzYWdlLCAwLCAw
LCAwKTsKKyAgICAgICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscyhuYW1lLCBkaXNwbGF5TmFtZSwg
ZXhwZWN0ZWRVc2FnZSwgMCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIHJldHVy
biBEYXRhYmFzZURldGFpbHMobmFtZSwgZGlzcGxheU5hbWUsIGV4cGVjdGVkVXNhZ2UsIFNRTGl0
ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmlsZVNpemUocGF0aCksIFNRTGl0ZUZpbGVTeXN0ZW06
OmRhdGFiYXNlQ3JlYXRpb25UaW1lKHBhdGgpLCBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZU1v
ZGlmaWNhdGlvblRpbWUocGF0aCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHAKaW5kZXggNzNhMzY1MjI4Nzk5YzE2YjlhOTg4ZDlhMTE4OWUwY2Y5Mzgw
ZmU5ZC4uMzI1ZTM0ZDBjNmI4ZTdjYzkzYWZkYjY0NDVmNTQ4ZjVmY2ViZWUzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBA
IHZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKFdURjo6RnVuY3Rpb248V1RGOjpGdW5jdGlv
bjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmCiAgICAgfSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3Ry
ZWFtOjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSkKK3ZvaWQgQXN5bmNGaWxlU3RyZWFtOjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0
aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQogewog
ICAgIC8vIEZJWE1FOiBFeHBsaWNpdCByZXR1cm4gdHlwZSBoZXJlIGFuZCBpbiBhbGwgdGhlIG90
aGVyIGNhc2VzIGxpa2UgdGhpcyBiZWxvdyBpcyBhIHdvcmthcm91bmQgZm9yIGEgZGVmaWNpZW5j
eQogICAgIC8vIGluIHRoZSBXaW5kb3dzIGNvbXBpbGVyIGF0IHRoZSB0aW1lIG9mIHRoaXMgd3Jp
dGluZy4gQ291bGQgcmVtb3ZlIGl0IGlmIHRoYXQgaXMgcmVzb2x2ZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAppbmRleCA2MmNhZmZlMmQ5OGFkMWQ1ZDEwZjRlZDY4
ODE3ZGE5MDQ5NGVhMTc4Li43YTkzMzdlMzNiZTJjOTNlNzkzMjY2ZTYxMWIxM2JjNGNlMzZlNDM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKQEAgLTMzLDYgKzMz
LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNDQsNyArNDUsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBc3luY0ZpbGVTdHJlYW0gewog
ICAgIGV4cGxpY2l0IEFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50Jik7CiAgICAgfkFz
eW5jRmlsZVN0cmVhbSgpOwogCi0gICAgdm9pZCBnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwg
ZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CisgICAgdm9pZCBnZXRTaXplKGNvbnN0
IFN0cmluZyYgcGF0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRp
b25UaW1lKTsKICAgICB2b2lkIG9wZW5Gb3JSZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBs
b25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZv
aWQgcmVhZChjaGFyKiBidWZmZXIsIGludCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAK
aW5kZXggZTdiMGQzZWM5MmY0OGUyYTVjOGU3NjE4ZjYxY2M5ODUwZThmZTkwMS4uMzg3ZDdmMDFm
YjBmYjE2MDM5ZTNkNjVhYTlmMDZkY2E5YzIzNzdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
CkBAIC0xMTIsMTEgKzExMiwxMSBAQCBpbnQ2NF90IEZpbGU6Omxhc3RNb2RpZmllZCgpIGNvbnN0
CiAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBzeW5jLWkvbyBvbiB0aGUgbWFpbiB0aHJlYWQgYW5k
IGFsc28gcmVjYWxjdWxhdGVzIGV2ZXJ5IHRpbWUgdGhlIG1ldGhvZCBpcyBjYWxsZWQuCiAgICAg
Ly8gVGhlIGkvbyBzaG91bGQgYmUgcGVyZm9ybWVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQsCiAg
ICAgLy8gYW5kIHRoZSByZXN1bHQgc2hvdWxkIGJlIGNhY2hlZCBhbG9uZyB3aXRoIGFuIGFzeW5j
aHJvbm91cyBtb25pdG9yIGZvciBjaGFuZ2VzIHRvIHRoZSBmaWxlLgotICAgIHRpbWVfdCBtb2Rp
ZmljYXRpb25UaW1lOwotICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShtX3BhdGgsIG1vZGlmaWNhdGlvblRpbWUpICYmIEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGlt
ZShtb2RpZmljYXRpb25UaW1lKSkKLSAgICAgICAgcmVzdWx0ID0gbW9kaWZpY2F0aW9uVGltZSAq
IG1zUGVyU2Vjb25kOworICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06Omdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKG1fcGF0aCk7CisgICAgaWYgKG1vZGlmaWNhdGlvblRpbWUg
JiYgIXN0ZDo6aXNuYW4obW9kaWZpY2F0aW9uVGltZS52YWx1ZSgpKSkKKyAgICAgICAgcmVzdWx0
ID0gbW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHNBczxp
bnQ2NF90PigpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gV2FsbFRpbWU6Om5vdygpLnNl
Y29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCk7CisgICAgICAgIHJlc3VsdCA9IFdhbGxU
aW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kc0FzPGludDY0X3Q+KCk7
CiAKICAgICByZXR1cm4gV1RGOjp0aW1lQ2xpcChyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggYmQwMzQ3Zjc2ZDcyNWY4MzRkOTA2MzNmODMxNzgxOTY4M2JlZGI3ZS4uZmIwZmMzODlh
MDQ0ZjliMTc1MTMxMDJiMDljNjkxZGEyYmNmNzM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0x
MzQ3LDcgKzEzNDcsNyBAQCB2b2lkIFBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2Vk
KCkKIAogICAgIG1fZGlkTG9hZFVzZXJTdHlsZVNoZWV0ID0gZmFsc2U7CiAgICAgbV91c2VyU3R5
bGVTaGVldCA9IFN0cmluZygpOwotICAgIG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1l
ID0gMDsKKyAgICBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSA9IHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIERhdGEgVVJMcyB3aXRoIGJhc2U2NC1lbmNvZGVkIFVURi04IHN0eWxlIHNo
ZWV0cyBhcmUgY29tbW9uLiBXZSBjYW4gcHJvY2VzcyB0aGVtCiAgICAgLy8gc3luY2hyb25vdXNs
eSBhbmQgYXZvaWQgdXNpbmcgYSBsb2FkZXIuIApAQCAtMTM3MCw4ICsxMzcwLDggQEAgY29uc3Qg
U3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgaWYgKG1fdXNlclN0eWxl
U2hlZXRQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAK
LSAgICB0aW1lX3QgbW9kVGltZTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKG1fdXNlclN0eWxlU2hlZXRQYXRoLCBtb2RUaW1lKSkgeworICAgIGF1dG8gbW9k
aWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fdXNl
clN0eWxlU2hlZXRQYXRoKTsKKyAgICBpZiAoIW1vZGlmaWNhdGlvblRpbWUpIHsKICAgICAgICAg
Ly8gVGhlIHN0eWxlc2hlZXQgZWl0aGVyIGRvZXNuJ3QgZXhpc3QsIHdhcyBqdXN0IGRlbGV0ZWQs
IG9yIGlzCiAgICAgICAgIC8vIG90aGVyd2lzZSB1bnJlYWRhYmxlLiBJZiB3ZSd2ZSByZWFkIHRo
ZSBzdHlsZXNoZWV0IGJlZm9yZSwgd2Ugc2hvdWxkCiAgICAgICAgIC8vIHRocm93IGF3YXkgdGhh
dCBkYXRhIG5vdyBhcyBpdCBubyBsb25nZXIgcmVwcmVzZW50cyB3aGF0J3Mgb24gZGlzay4KQEAg
LTEzODEsMTIgKzEzODEsMTIgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgp
IGNvbnN0CiAKICAgICAvLyBJZiB0aGUgc3R5bGVzaGVldCBoYXNuJ3QgY2hhbmdlZCBzaW5jZSB0
aGUgbGFzdCB0aW1lIHdlIHJlYWQgaXQsIHdlIGNhbgogICAgIC8vIGp1c3QgcmV0dXJuIHRoZSBv
bGQgZGF0YS4KLSAgICBpZiAobV9kaWRMb2FkVXNlclN0eWxlU2hlZXQgJiYgbW9kVGltZSA8PSBt
X3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSkKKyAgICBpZiAobV9kaWRMb2FkVXNlclN0
eWxlU2hlZXQgJiYgKG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lICYmIG1vZGlmaWNh
dGlvblRpbWUudmFsdWUoKSA8PSBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZS52YWx1
ZSgpKSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKICAgICBtX2RpZExvYWRV
c2VyU3R5bGVTaGVldCA9IHRydWU7CiAgICAgbV91c2VyU3R5bGVTaGVldCA9IFN0cmluZygpOwot
ICAgIG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lID0gbW9kVGltZTsKKyAgICBtX3Vz
ZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSA9IG1vZGlmaWNhdGlvblRpbWU7CiAKICAgICAv
LyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIGxvYWQgdGhpcyBhc3luY2hyb25vdXNseSB0
byBhdm9pZCBibG9ja2luZwogICAgIC8vIHRoZSBwcm9jZXNzLCBidXQgd2Ugd2lsbCBmaXJzdCBu
ZWVkIHRvIGNyZWF0ZSBhbiBhc3luY2hyb25vdXMgbG9hZGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA0
MTE0ODdmODM3NWVmYmU3OWQyOGFlMWQzMjQ0NzgzODkxZjU4MGMyLi5kNjU2ZjFlODNlZmZhMTRj
NThkNTcyYTE4YmJhZmJmNzE5N2QwZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtODExLDcgKzgxMSw3
IEBAIGNsYXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4gewogICAgIFN0cmlu
ZyBtX3VzZXJTdHlsZVNoZWV0UGF0aDsKICAgICBtdXRhYmxlIFN0cmluZyBtX3VzZXJTdHlsZVNo
ZWV0OwogICAgIG11dGFibGUgYm9vbCBtX2RpZExvYWRVc2VyU3R5bGVTaGVldCB7IGZhbHNlIH07
Ci0gICAgbXV0YWJsZSB0aW1lX3QgbV91c2VyU3R5bGVTaGVldE1vZGlmaWNhdGlvblRpbWUgeyAw
IH07CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtX3VzZXJTdHlsZVNoZWV0
TW9kaWZpY2F0aW9uVGltZTsKIAogICAgIFN0cmluZyBtX2NhcHRpb25Vc2VyUHJlZmVyZW5jZXNT
dHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0
YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCmluZGV4IDgx
NjRkNmRiOGEwOGRkNzIwMDgxOTVjYzE5Mjc3ZmI4MzA3YWIwMjYuLjdkODg0OTUzZTc2NzVkOTJj
MDYzOGRlY2FkODU3Y2Q0MWE1OWM1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRh
ZGF0YS5oCkBAIC0zMCwxMSArMzAsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3
dGYvV2FsbFRpbWUuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRmlsZU1ldGFk
YXRhIHsKICAgICAvLyBUaGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZSwgaW4g
c2Vjb25kcy4KLSAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBXYWxsVGltZSBtb2Rp
ZmljYXRpb25UaW1lOwogCiAgICAgLy8gVGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBpbiBieXRlcy4K
ICAgICBsb25nIGxvbmcgbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNw
cAppbmRleCBhYjQ4YzA0YWNlY2EzOWQwYjc3NTUzZGNlNzVjYWRiNWQ0YjMzNWE0Li5hMjE5MGFh
ODRiYWY4NzU4NjllMTU3ZGMwMGVkZTBkZDY1NWU1NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3RyZWFtLmNwcApAQCAtNDksMTQgKzQ5LDE0IEBAIEZpbGVTdHJlYW06On5GaWxlU3Ry
ZWFtKCkKICAgICBjbG9zZSgpOwogfQogCi1sb25nIGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShj
b25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCitsb25n
IGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6b3B0aW9u
YWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKIHsKICAgICAvLyBDaGVjayB0
aGUgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZSBwb3NzaWJsZSBmaWxlIGNoYW5nZS4KLSAgICB0
aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQorICAgIGF1dG8gbW9kaWZpY2F0
aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgpOworICAg
IGlmICghbW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChGaWxl
U3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUoZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSkgewotICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8dGltZV90PihleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpICE9
IG1vZGlmaWNhdGlvblRpbWUpCisgICAgaWYgKGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkgewor
ICAgICAgICBpZiAoZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgp
LnNlY29uZHNBczx0aW1lX3Q+KCkgIT0gbW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBv
Y2goKS5zZWNvbmRzQXM8dGltZV90PigpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCmluZGV4IGIyYWEyODQ0NzlmN2IxMjI2
ZWJmN2FhYTliN2ZkY2FjMzBjMzM3NjEuLjdhNjgxYjQ5ZDUwZGUyMzIxNGFjZDIwY2E5ZWQ5Yzkx
N2UzM2YyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKQEAgLTQzLDcgKzQz
LDcgQEAgY2xhc3MgRmlsZVN0cmVhbSB7CiAKICAgICAvLyBHZXRzIHRoZSBzaXplIG9mIGEgZmls
ZS4gQWxzbyB2YWxpZGF0ZXMgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvciBub3QgaWYg
dGhlIGV4cGVjdGVkIG1vZGlmaWNhdGlvbiB0aW1lIGlzIHByb3ZpZGVkLCBpLmUuIG5vbi16ZXJv
LgogICAgIC8vIFJldHVybnMgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGlmIHN1Y2Nlc3NmdWwuIC0x
IG90aGVyd2lzZS4KLSAgICBsb25nIGxvbmcgZ2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRv
dWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgIGxvbmcgbG9uZyBnZXRTaXplKGNv
bnN0IFN0cmluZyYgcGF0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKTsKIAogICAgIC8vIE9wZW5zIGEgZmlsZSBmb3IgcmVhZGluZy4gVGhlIHJlYWRp
bmcgc3RhcnRzIGF0IHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGFuZCBsYXN0cyB0aWxsIHRoZSBzcGVj
aWZpZWQgbGVuZ3RoLgogICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiBGYWxzZSBvdGhl
cndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDJmZGIyNjBm
ODI5MzYyYmJjYWM2NTk3NjcwYjAzODgzMTlmZDI0NmEuLmE3Nzk5OGNjZjIwNzBlNGQxMjE5ZDQx
ZjEyY2Y5MjdjYmEwYTlkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3Bw
CkBAIC0zNjEsMTMgKzM2MSw1IEBAIGJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTCiAgICAgcmV0dXJu
IG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsK
IH0KIAotc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lID0gMDsKLSAg
ICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJh
d1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0
ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0u
aAppbmRleCBlMTQwYjI0NTdlMWFlNmFlOGFiZWYxZTJiNDE0NzBhODQ3MWVmODExLi44MDE4OTM1
YzM4NmEwZDk5OTgyMWNiY2FmMmQ5NWE0NzEwMGIzNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5oCkBAIC0xMDQsOSArMTA0LDggQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxl
dGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgbW92
ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpOwogV0VC
Q09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJl
c3VsdCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgbG9uZyBsb25nJiByZXN1bHQpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShjb25zdCBTdHJpbmcmLCB0aW1lX3QmIHJlc3VsdCk7CiBXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBT
dHJpbmcmLCB0aW1lX3QmIHJlc3VsdCk7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0b3JlIGZpbGUg
Y3JlYXRpb24gdGltZS4KK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGdl
dEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0
b3JlIGZpbGUgY3JlYXRpb24gdGltZS4KIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Rmls
ZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1s
aW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlSXNEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyk7CkBAIC0xMzMs
OSArMTMyLDYgQEAgU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgY2hhciopOwogCiBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZTsgfQogCi1pbmxpbmUgZG91YmxlIGludmFsaWRGaWxlVGltZSgpIHsgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7IH0KLWlubGluZSBib29sIGlzVmFs
aWRGaWxlVGltZShkb3VibGUgdGltZSkgeyByZXR1cm4gc3RkOjppc2Zpbml0ZSh0aW1lKTsgfQot
CiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgs
IG5vdCB0aGUgZnVsbCBwYXRoLgogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKIFdFQkNPUkVf
RVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZp
bGVPcGVuTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0Zp
bGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwCmluZGV4IGY5NDA4MTVmNTEyNDgwMTVmNzNiMDA1MTc4MmRkNWI4MjU2NTg4YWYu
LjhmYzY4NjRjZWM2N2FkZGUyOWIzMTJiYjgxMGViYTUzNzNiMTg4MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xNTEsMjAgKzE1
MSwxOSBAQCBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nJikK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBT
dHJpbmcmLCB0aW1lX3QmKQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9u
VGltZShjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIHdheSB0byBy
ZXRyaWV2ZSBmaWxlIGNyZWF0aW9uIHRpbWUgd2l0aCBHdGsgb24gcGxhdGZvcm1zIHRoYXQgc3Vw
cG9ydCBpdD8KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAotYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVf
dCYgbW9kaWZpZWRUaW1lKQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7
CiAgICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIG1vZGlmaWVkVGlt
ZSA9IHN0YXRSZXN1bHQuc3RfbXRpbWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1lKTsKIH0KIAogc3RhdGlj
IEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKEdTdGF0QnVmIHN0YXRSZXN1bHQp
CkBAIC0xODYsNyArMTg1LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBm
aWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICBib29sIGlz
SGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CiAKICAg
ICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0
UmVzdWx0LnN0X210aW1lKSwKKyAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRS
ZXN1bHQuc3RfbXRpbWUpLAogICAgICAgICBzdGF0UmVzdWx0LnN0X3NpemUsCiAgICAgICAgIGlz
SGlkZGVuLAogICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKHN0YXRSZXN1bHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZS5jcHAKaW5kZXggNmE1ZjEyZTg0ZDc0N2Q4NWMwOWUwNWZhMTQzMDkzZjQ4MTAwNmQzMS4uYjhk
MTMxMmFmZTVmZjFiNDIzNjViODJiZjIxNTAwOWZkNTRjODdkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNw
cApAQCAtMzQsMTEgKzM0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAg
OiBtX3BhdGgocGF0aCkKLSNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICAsIG1fcmVw
bGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZChmYWxzZSkKLSNlbmRpZgotICAgICwgbV9zaXplKDAp
Ci0gICAgLCBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZShGaWxlU3lzdGVtOjppbnZhbGlkRmls
ZVRpbWUoKSkKIHsKIH0KIApAQCAtNzMsMTUgKzY4LDE0IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUoKQogICAgIHJldHVybiBtX3NpemU7CiB9CiAKLWRv
dWJsZSBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCitz
dGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgLy8g
V2UgZG8gbm90IGN1cnJlbnRseSB0cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmls
ZXMsIGJlY2F1c2Ugd2UgaGF2ZSBhIHNuYXBzaG90LgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRo
aXMgaXMgaW5jb25zaXN0ZW50IHdpdGggcmVndWxhciBmaWxlIGhhbmRsaW5nIC0gRmlsZSBvYmpl
Y3RzIHNob3VsZCBiZSBpbnZhbGlkYXRlZCB3aGVuIHVuZGVybHlpbmcgZmlsZXMgY2hhbmdlLgog
ICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgfHwgIW1fcmVwbGFjZW1lbnRQ
YXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6aW52YWxpZEZpbGVUaW1l
KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKLQogICAgIHJldHVybiBt
X2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKaW5kZXggYTUzZjc3
NTUxMjU4YjQ4ZjNlYmI4YWE0NzAxOWI4ZTRlNDdkZmFmYi4uNDBkZWY2OWY2ZjhjN2JhOGNiNjQz
MDdlNWM5OWNkYTk0ZmQyZTgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCkBAIC0yNiw3ICsyNiw5IEBACiAj
aWZuZGVmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZV9oCiAjZGVmaW5lIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZV9oCiAKKyNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCw3ICs0Niw3IEBAIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIEJsb2JEYXRhRmlsZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEJsb2JEYXRhRmlsZVJlZmVyCiAKICAgICBjb25zdCBTdHJpbmcmIHBhdGgoKTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgc2l6ZSgpOwotICAgIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRmlsZUFjY2VzcygpOwogICAgIHZp
cnR1YWwgdm9pZCByZXZva2VGaWxlQWNjZXNzKCk7CkBAIC02MCwxMCArNjIsMTAgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8
QmxvYkRhdGFGaWxlUmVmZXIKICAgICBTdHJpbmcgbV9wYXRoOwogI2lmIEVOQUJMRShGSUxFX1JF
UExBQ0VNRU5UKQogICAgIFN0cmluZyBtX3JlcGxhY2VtZW50UGF0aDsKLSAgICBib29sIG1fcmVw
bGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZDsKKyAgICBib29sIG1fcmVwbGFjZW1lbnRTaG91bGRC
ZUdlbmVyYXRlZCB7IGZhbHNlIH07CiAjZW5kaWYKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9z
aXplOwotICAgIGRvdWJsZSBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZTsKKyAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgbV9zaXplIHsgMCB9OworICAgIE1hcmthYmxlPFdhbGxUaW1lLCBXYWxsVGlt
ZTo6TWFya2FibGVUcmFpdHM+IG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCA4ZGIz
ZGVjNmQ5NTQzMmY2OGYyM2M0MDI2OWNlMzQ1YjgyMjQ1NDE2Li40NWFlYmFlNTIwOWM5YjVkNTBm
MWYyMTQ1ZGE1NTNmOWU0NWVlOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcApAQCAtMTg2LDExICsxODYsMTEgQEAgdm9pZCBGb3JtRGF0YTo6YXBw
ZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogdm9pZCBGb3JtRGF0YTo6
YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmls
ZSkKIHsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAs
IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgp
LCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVs
ZW1lbnQoZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIHN0ZDo6bnVsbG9w
dCwgc2hvdWxkR2VuZXJhdGVGaWxlKSk7CiAgICAgbV9sZW5ndGhJbkJ5dGVzID0gc3RkOjpudWxs
b3B0OwogfQogCi12b2lkIEZvcm1EYXRhOjphcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0
ZWRNb2RpZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkKK3ZvaWQgRm9ybURh
dGE6OmFwcGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3Rh
cnQsIGxvbmcgbG9uZyBsZW5ndGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpCiB7CiAgICAgbV9lbGVtZW50
cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGZpbGVuYW1lLCBzdGFydCwgbGVuZ3RoLCBleHBlY3Rl
ZE1vZGlmaWNhdGlvblRpbWUsIHNob3VsZEdlbmVyYXRlRmlsZSkpOwogICAgIG1fbGVuZ3RoSW5C
eXRlcyA9IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaAppbmRleCBiYmFhZGUxODViNzlmNTRmOGMwNzA3NTM5NjMyMTY2MzQ2ZWMyZGVjLi41
OWY1NWY4MzM4YmRiZTVlMjQwZmM0NWUwNTQ4NWY1YzIzZmFiYWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBG
b3JtRGF0YUVsZW1lbnQgewogICAgICAgICA6IGRhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAgICAg
ZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KFZlY3RvcjxjaGFyPiYmIGFycmF5KQogICAgICAgICA6
IGRhdGEoV1RGTW92ZShhcnJheSkpIHsgfQotICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBpbnQ2NF90IGZpbGVTdGFydCwgaW50NjRfdCBmaWxlTGVuZ3RoLCBkb3Vi
bGUgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUp
CisgICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGludDY0X3QgZmls
ZVN0YXJ0LCBpbnQ2NF90IGZpbGVMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVj
dGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKQogICAgICAg
ICA6IGRhdGEoRW5jb2RlZEZpbGVEYXRhIHsgZmlsZW5hbWUsIGZpbGVTdGFydCwgZmlsZUxlbmd0
aCwgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgeyB9LCBzaG91bGRHZW5lcmF0ZUZpbGUs
IGZhbHNlIH0pIHsgfQogICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChjb25zdCBVUkwmIGJs
b2JVUkwpCiAgICAgICAgIDogZGF0YShFbmNvZGVkQmxvYkRhdGEgeyBibG9iVVJMIH0pIHsgfQpA
QCAtNzEsNyArNzEsNyBAQCBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICAgICAgU3RyaW5n
IGZpbGVuYW1lOwogICAgICAgICBpbnQ2NF90IGZpbGVTdGFydCB7IDAgfTsKICAgICAgICAgaW50
NjRfdCBmaWxlTGVuZ3RoIHsgMCB9OwotICAgICAgICBkb3VibGUgZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSB7IDAgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgU3RyaW5nIGdlbmVyYXRlZEZpbGVuYW1l
OwogICAgICAgICBib29sIHNob3VsZEdlbmVyYXRlRmlsZSB7IGZhbHNlIH07CiAgICAgICAgIGJv
b2wgb3duc0dlbmVyYXRlZEZpbGUgeyBmYWxzZSB9OwpAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVj
dCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICAgICAgaWYgKCFmaWxlTGVuZ3RoKQogICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOworICAg
ICAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPj4gZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZXhwZWN0ZWRGaWxl
TW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgICAgIGlmICghZXhwZWN0ZWRGaWxlTW9kaWZpY2F0
aW9uVGltZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjE4LDcg
KzIxOCw3IEBAIGNsYXNzIEZvcm1EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9ybURhdGE+IHsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QpOwogICAgIHZvaWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29s
IHNob3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxv
bmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hv
dWxkR2VuZXJhdGVGaWxlID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
RmlsZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGxlbmd0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25U
aW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiBibG9iVVJMKTsKIAogICAgIFZlY3RvcjxjaGFy
PiBmbGF0dGVuKCkgY29uc3Q7IC8vIG9taXRzIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAppbmRl
eCA0NWUzMWU1NDM3YWY4ZDlhNDEyNDk0ZDQyNmZkMmRjMzgwNTgyOTk0Li45ZTJkODgxZDYzNTQ5
MTUyNWQ3MWFmNDU2YzJkMTk1ZmQxM2I5NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAgLTE0
NSw5ICsxNDUsMTEgQEAgc3RhdGljIGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cmVh
bUZpZWxkcyogZm9ybSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9LCBbZm9y
bV0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewog
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvciBub3Qg
aWYgcmVxdWlyZWQuCi0gICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNWYWxpZEZpbGVUaW1l
KGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKSB7Ci0gICAgICAgICAgICAg
ICAgdGltZV90IGZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAgICAgICAgICAgIGlmICghRmls
ZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZURhdGEuZmlsZW5hbWUsIGZpbGVN
b2RpZmljYXRpb25UaW1lKSB8fCBmaWxlTW9kaWZpY2F0aW9uVGltZSAhPSBzdGF0aWNfY2FzdDx0
aW1lX3Q+KGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKQorICAgICAgICAg
ICAgaWYgKGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpIHsKKyAgICAgICAg
ICAgICAgICBhdXRvIGZpbGVNb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUoZmlsZURhdGEuZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIGlmICgh
ZmlsZU1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICBpZiAoZmlsZU1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVw
b2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSAhPSBmaWxlRGF0YS5leHBlY3RlZEZpbGVNb2RpZmlj
YXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyYgcGF0aCA9IGZpbGVEYXRhLnNob3VsZEdlbmVyYXRlRmlsZSA/IGZpbGVE
YXRhLmdlbmVyYXRlZEZpbGVuYW1lIDogZmlsZURhdGEuZmlsZW5hbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
U291cC5jcHAKaW5kZXggMjI5YzUzY2Y1NzIwMjc2ZTUyNWU5YTZmYjZmNzYyYjhmZjU4ZWUwNy4u
ZWM0OTAzZTQwMjdmNWEzNDkxYmQ4OTI2OTRhYzI0NTFkODE1ODVkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3RTb3VwLmNwcApAQCAtNDEsMTIgKzQxLDE0IEBAIHN0YXRpYyB1aW50NjRfdCBhcHBlbmRFbmNv
ZGVkQmxvYkl0ZW1Ub1NvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsCiAg
ICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChzb3VwTWVzc2FnZS0+cmVxdWVzdF9ib2R5
LCBTT1VQX01FTU9SWV9URU1QT1JBUlksIGJsb2JJdGVtLmRhdGEoKS5kYXRhKCktPmRhdGEoKSAr
IGJsb2JJdGVtLm9mZnNldCgpLCBibG9iSXRlbS5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBi
bG9iSXRlbS5sZW5ndGgoKTsKICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZTogewot
ICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShibG9iSXRlbS5maWxlKCkt
PmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpKSkKKyAgICAgICAgaWYgKCFibG9iSXRlbS5maWxl
KCktPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICAgICAgdGltZV90IGZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAgICBpZiAoIUZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpLCBm
aWxlTW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgIHx8IGZpbGVNb2RpZmljYXRpb25UaW1l
ICE9IHN0YXRpY19jYXN0PHRpbWVfdD4oYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUoKSkpCisgICAgICAgIGF1dG8gZmlsZU1vZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lz
dGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSk7Cisg
ICAgICAgIGlmICghZmlsZU1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgICAgICByZXR1cm4gMDsK
KworICAgICAgICBpZiAoZmlsZU1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCku
c2Vjb25kc0FzPHRpbWVfdD4oKSAhPSBibG9iSXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSgpLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoYmxvYkl0ZW0uZmls
ZSgpLT5wYXRoKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcAppbmRleCAxZTY4MjMxNzFkMmY1MmNjOTI0YjNjOTc4YjQzZjMwMmE4
NjFkMTJhLi44ZDI4NGMyNWZhMDEwNTc3ODZjNzNjMDU2YzI3Nzg0YzgwZjViN2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAg
LTIwMiw0MiArMjAyLDM5IEBAIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSwgbG9uZyBsb25nJiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0
RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQorc3Rk
OjpvcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAjaWYgT1MoREFSV0lOKSB8fCBPUyhPUEVOQlNEKSB8fCBPUyhORVRCU0QpIHx8IE9T
KEZSRUVCU0QpCiAgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKIAogICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAn
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKIAogICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwg
JmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgcmVzdWx0ID0gZmlsZUluZm8uc3RfYmlydGh0aW1lOwotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3Rf
YmlydGh0aW1lKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhdGgpOwotICAgIFVOVVNFRF9Q
QVJBTShyZXN1bHQpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogI2VuZGlmCiB9CiAKLWJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5n
JiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVN
b2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBDU3RyaW5nIGZzUmVw
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogCiAgICAgaWYgKCFmc1JlcC5kYXRh
KCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwog
CiAgICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXN1bHQgPSBmaWxl
SW5mby5zdF9tdGltZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKIH0KIAogc3RhdGljIEZpbGVNZXRhZGF0
YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQpAQCAtMjYzLDcg
KzI2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRh
VXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgU3RyaW5nIGZpbGVuYW1lID0g
cGF0aEdldEZpbGVOYW1lKHBhdGgpOwogICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNF
bXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKICAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsK
LSAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihmaWxlSW5mby5zdF9tdGltZSksCisgICAgICAg
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSksCiAgICAgICAgIGZp
bGVJbmZvLnN0X3NpemUsCiAgICAgICAgIGlzSGlkZGVuLAogICAgICAgICB0b0ZpbGVNZXRhdGFU
eXBlKGZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZp
bGVTeXN0ZW0uY3BwCmluZGV4IDllZjE4Njg3MDdlMDMwNzAzZjY5MDE5OWExMmM2NjYyNzQ3NTRi
NTIuLjViMTEwYThiZGU4MjM4ZWM5ZTE4OTlhZGEzMmQ5NDIyNWI3ZDc3ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKQEAgLTEwOCwx
NiArMTA4LDE0IEBAIGxvbmcgbG9uZyBTUUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVT
aXplKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmdldEZp
bGVTaXplKGZpbGVOYW1lLCBzaXplKSA/IHNpemUgOiAwOwogfQogCi1kb3VibGUgU1FMaXRlRmls
ZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKK3N0
ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlQ3JlYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7Ci0gICAgdGltZV90IHRpbWU7Ci0gICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVDcmVhdGlvblRpbWUoZmlsZU5hbWUsIHRpbWUpID8gdGlt
ZSA6IDA7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVDcmVhdGlvblRpbWUoZmlsZU5h
bWUpOwogfQogCi1kb3VibGUgU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBTUUxp
dGVGaWxlU3lzdGVtOjpkYXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSkKIHsKLSAgICB0aW1lX3QgdGltZTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6Z2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUoZmlsZU5hbWUsIHRpbWUpID8gdGltZSA6IDA7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVOYW1lKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVGaWxlU3lzdGVtLmgKaW5kZXggYzhhNGY5NDBlODE2OGU3MTQ3MDIzNDAxMWFiYjI4ZmUzNmYx
ZTA4Ny4uMTdiZmEwNjI4NzkwYmI5ODEyOTQwOTNlZWE1YTBjMGIzODZiODk0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCkBAIC05Nyw4ICs5
Nyw4IEBAIGNsYXNzIFNRTGl0ZUZpbGVTeXN0ZW0gewogI2VuZGlmCiAgICAgCiAgICAgc3RhdGlj
IGxvbmcgbG9uZyBnZXREYXRhYmFzZUZpbGVTaXplKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBkb3VibGUgZGF0YWJhc2VDcmVhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGRvdWJsZSBk
YXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRhdGFiYXNlQ3JlYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkYXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSk7CiAKIHByaXZhdGU6CiAgICAgLy8gZG8gbm90IGluc3RhbnRpYXRl
IHRoaXMgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxl
U3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcAppbmRleCA0OWZhMTQ0MTJhOTY1MjBmODM0ODZlZTcwY2RmNDUwMTk5NTNlMzRmLi5iMzA2
MjFmOTQzMGIyODFiMzQ1MjAyNjUzMmQ1YzMxMGZhYThkNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0xMjQsMjQgKzEyNCwyNiBAQCBi
b29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcm
IHNpemUpCiAgICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9u
U3RydWN0dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6ZSk7CiB9CiAKLWJvb2wgZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCitzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgp
CiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRh
KHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCisgICAgdGltZV90IHRpbWUgPSAwOwogICAgIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOwogfQogCi1ib29sIGdl
dEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCitzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwogICAgIGlmICghZ2V0RmluZERh
dGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKKyAgICB0aW1lX3QgdGltZSA9IDA7CiAgICAgZ2V0RmlsZUNyZWF0
aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7Ci0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKIH0KIAogc3RhdGljIFN0
cmluZyBnZXRGaW5hbFBhdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKQEAgLTE4NSw3ICsxODcs
NyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0
YWRhdGEoV0lOMzJfRklORF9EQVRBVyBmaW5kRAogICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1l
RnJvbUZpbmREYXRhKGZpbmREYXRhLCBtb2RpZmljYXRpb25UaW1lKTsKIAogICAgIHJldHVybiBG
aWxlTWV0YWRhdGEgewotICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1vZGlmaWNhdGlvblRp
bWUpLAorICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSks
CiAgICAgICAgIGxlbmd0aCwKICAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4oZmluZERhdGEuZHdG
aWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0hJRERFTiksCiAgICAgICAgIHRvRmlsZU1l
dGFkYXRhVHlwZShmaW5kRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
c3Npb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKaW5kZXgg
ZmU4MWE1ZDgwOTU1ZWNlNWQyYzYyNWY4OTY5NjJlYTllNmMzMzZiZC4uOTJhZmRjNTk4YTJiMzdm
OTExOTdhZGY4OTdjNjFjZjU5NDE2NWMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRl
LmgKQEAgLTY5LDcgKzY5LDcgQEAgc3RydWN0IEhUVFBCb2R5IHsKICAgICAgICAgU3RyaW5nIGZp
bGVQYXRoOwogICAgICAgICBpbnQ2NF90IGZpbGVTdGFydDsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxpbnQ2NF90PiBmaWxlTGVuZ3RoOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGlt
ZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKIAogICAgICAgICAvLyBCbG9iLgogICAg
ICAgICBTdHJpbmcgYmxvYlVSTFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY2ZmZlOTE5NGIwNDdlMWNmNWU2MDhhMjk3ZmFl
NTJmMjg4OTIzNDAuLjJjNjNjNmYwNmE0NWRkYjFmNjJmNjExYzMzNTNjNzI0YjI1MmU3NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MTYyMiwxMSArMTYyMiwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8RGF0YWJhc2VEZXRhaWxzPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERhdGFiYXNlRGV0YWlscyYgZAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoY3VycmVudFVzYWdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ZG91YmxlIGNyZWF0aW9uVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBjcmVhdGlv
blRpbWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjcmVhdGlvblRpbWUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRpb25UaW1lOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggMzkxZjg1ZTM3NWVmMjY1M2EwZTI0MTg5OWViMGZkMzU0MDc1NDE4ZC4u
ZWZhZWJmN2U2NmMzYjIyZDM0NTBhYzFiOWIyMTE5NDlhZDBmZDM0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXIuY3BwCkBAIC0xMDIsOSArMTAyLDkgQEAgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclIKIAogICAg
ICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7CiAgICAgICAgICAgICBpZiAob3JpZ2lu
RGV0YWlscy5jcmVhdGlvblRpbWUpCi0gICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9J
bXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3RyaW5n
KCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUuc2Vjb25k
c1NpbmNlRXBvY2goKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQo
dG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3Ry
aW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUtPnNl
Y29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOwogICAgICAgICAgICAgaWYgKG9yaWdpbkRldGFp
bHMubW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0lt
cGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpKS0+c3Ry
aW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5tb2RpZmljYXRpb25UaW1l
LnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIGRldGFpbHNN
YXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1l
S2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLm1vZGlm
aWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOwogCiAgICAgICAgICAg
ICByZXN1bHQudW5jaGVja2VkQXBwZW5kKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUo
ZGV0YWlsc01hcCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNwcAppbmRl
eCBjNzliNTY3ODczMmQyMDE0YzJlZTg1YTZiMmU3YmNkMjc1ZDAxNjQ0Li43ZWUwNDVkY2M1ODc2
Y2Y3YjhkMWM5YjYyN2Q5NDJmODVjNjAxN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNw
cApAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkZWNvZGVIVFRQQm9keShH
VmFyaWFudCogaHR0cEJvZHlWYXJpYW50LCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgIGlm
IChoYXNGaWxlTGVuZ3RoKQogICAgICAgICAgICAgZWxlbWVudC5maWxlTGVuZ3RoID0gZmlsZUxl
bmd0aDsKICAgICAgICAgaWYgKGhhc0ZpbGVNb2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAg
ZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lID0gZmlsZU1vZGlmaWNhdGlvblRp
bWU7CisgICAgICAgICAgICBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgPSBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZU1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICBl
bGVtZW50LmJsb2JVUkxTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGJsb2JVUkxTdHJpbmcpOwog
CiAgICAgICAgIGh0dHBCb2R5LmVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1l
bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1Bs
dWdpbkluZm9DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9Q
bHVnaW5JbmZvQ2FjaGUuY3BwCmluZGV4IGI5YjBjMmVhZTM2MGI0ZTAxZmY0NDQ0OGNiMjZiNDM5
NDhlOWM2Y2EuLjgwNjQ3ZWIxMmVlNTI1MTFhMTE5ZTg1ZmRlMmY1OWM0ZTIzNzc4ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5m
b0NhY2hlLmNwcApAQCAtMTEyLDExICsxMTIsMTEgQEAgYm9vbCBQbHVnaW5JbmZvQ2FjaGU6Omdl
dFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgog
ICAgIGlmICghZ19rZXlfZmlsZV9oYXNfZ3JvdXAobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdy
b3VwLmRhdGEoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRpbWVfdCBsYXN0TW9k
aWZpZWQ7Ci0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShwbHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpKQorICAgIGF1dG8gbGFzdE1vZGlmaWVkVGlt
ZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBh
dGgpOworICAgIGlmICghbGFzdE1vZGlmaWVkVGltZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHRpbWVfdCBjYWNoZWRMYXN0TW9kaWZpZWQgPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGdfa2V5
X2ZpbGVfZ2V0X3VpbnQ2NChtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAi
bXRpbWUiLCBudWxscHRyKSk7Ci0gICAgaWYgKGxhc3RNb2RpZmllZCAhPSBjYWNoZWRMYXN0TW9k
aWZpZWQpCisgICAgaWYgKGxhc3RNb2RpZmllZFRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vj
b25kc0FzPHRpbWVfdD4oKSAhPSBjYWNoZWRMYXN0TW9kaWZpZWQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKQEAgLTE0MCwxMiArMTQwLDEy
IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKIAogdm9pZCBQbHVnaW5JbmZvQ2FjaGU6OnVwZGF0
ZVBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBQbHVnaW5Nb2R1bGVJ
bmZvJiBwbHVnaW4pCiB7Ci0gICAgdGltZV90IGxhc3RNb2RpZmllZDsKLSAgICBpZiAoIVdlYkNv
cmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgsIGxhc3RN
b2RpZmllZCkpCisgICAgYXV0byBsYXN0TW9kaWZpZWRUaW1lID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCk7CisgICAgaWYgKCFsYXN0TW9k
aWZpZWRUaW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBDU3RyaW5nIHBsdWdpbkdyb3VwID0g
cGx1Z2luUGF0aC51dGY4KCk7Ci0gICAgZ19rZXlfZmlsZV9zZXRfdWludDY0KG1fY2FjaGVGaWxl
LmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCksICJtdGltZSIsIHN0YXRpY19jYXN0PGd1aW50NjQ+
KGxhc3RNb2RpZmllZCkpOworICAgIGdfa2V5X2ZpbGVfc2V0X3VpbnQ2NChtX2NhY2hlRmlsZS5n
ZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAibXRpbWUiLCBsYXN0TW9kaWZpZWRUaW1lLT5zZWNv
bmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczxndWludDY0PigpKTsKICAgICBnX2tleV9maWxlX3Nl
dF9zdHJpbmcobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSwgIm5hbWUiLCBw
bHVnaW4uaW5mby5uYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgIGdfa2V5X2ZpbGVfc2V0X3N0cmlu
ZyhtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAiZGVzY3JpcHRpb24iLCBw
bHVnaW4uaW5mby5kZXNjLnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlLmNwcAppbmRleCA2Zjg1ZDM2Zjk0N2FjMjE2NDUwZjc1YzA1MzU4NTY1Njg2Nzg0
YWZjLi43NzBlODM3ODU3MDYzMzcwYTQ3ZWRlMWMwZmQyNzQ3ZmVmYmNhZDE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTQ1LDExICs0NSwxMSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBib29sIGhhc0ZpbGVDaGFuZ2VkU2luY2UoY29uc3Qg
U3RyaW5nJiBwYXRoLCBXYWxsVGltZSBzaW5jZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIUZpbGVTeXN0
ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQorICAg
IGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25U
aW1lKHBhdGgpOworICAgIGlmICghbW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vZGlmaWNhdGlvblRp
bWUpID4gc2luY2U7CisgICAgcmV0dXJuIG1vZGlmaWNhdGlvblRpbWUudmFsdWUoKSA+IHNpbmNl
OwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gY3JlYXRlRGVjb2Rl
ckZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuY3BwCmluZGV4IDBhMGExNTYwYzU0ZTU3Y2UwMzYzYTgwNGQzMDdiZjBkNDFlZTIxYzguLmQx
OTQwNGQ1MDYxN2Y2MTQ1MTMyOTRhNmNkYjZiZGY1ODg4ZGQ2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTEwMiw4ICsxMDIsMTEgQEAgVmVjdG9yPFNlY3VyaXR5
T3JpZ2luRGF0YT4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZXNNb2RpZmll
ZFNpbmNlKFcKICAgICBmb3IgKGF1dG8gb3JpZ2luIDogZGF0YWJhc2VPcmlnaW5zKSB7CiAgICAg
ICAgIGF1dG8gcGF0aCA9IGRhdGFiYXNlUGF0aChvcmlnaW4pOwogICAgICAgICAKLSAgICAgICAg
YXV0byBtb2RpZmljYXRpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKFNRTGl0ZUZp
bGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShwYXRoKSk7Ci0gICAgICAgIGlmICht
b2RpZmljYXRpb25UaW1lID49IHRpbWUpCisgICAgICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9
IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsKKyAgICAg
ICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgaWYgKG1vZGlmaWNhdGlvblRpbWUudmFsdWUoKSA+PSB0aW1lKQogICAgICAgICAgICAgZGF0
YWJhc2VPcmlnaW5zTW9kaWZpZWQuYXBwZW5kKG9yaWdpbik7CiAgICAgfQogCkBAIC0xMzksOCAr
MTQyLDggQEAgVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWls
cz4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjoKIAogICAgICAgICBPcmlnaW5EZXRhaWxz
IGRldGFpbHM7CiAgICAgICAgIGRldGFpbHMub3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbi5kYXRh
YmFzZUlkZW50aWZpZXIoKTsKLSAgICAgICAgZGV0YWlscy5jcmVhdGlvblRpbWUgPSBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUo
cGF0aCkpOwotICAgICAgICBkZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUgPSBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKHBh
dGgpKTsKKyAgICAgICAgZGV0YWlscy5jcmVhdGlvblRpbWUgPSBTUUxpdGVGaWxlU3lzdGVtOjpk
YXRhYmFzZUNyZWF0aW9uVGltZShwYXRoKTsKKyAgICAgICAgZGV0YWlscy5tb2RpZmljYXRpb25U
aW1lID0gU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKHBhdGgpOwog
ICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGRldGFpbHMpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKaW5kZXggYTA0ZGY1YTU2YmFiY2IyYzY4M2U3MDAwYTlm
MmFkMTA4YzA2YTUwYS4uNDA4Mzg2OWM2YzBmNWMyMjczZTI0ODI4ZTdhMWE4MTVkYWVkMTEyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgpAQCAtNTcsOCArNTgsOCBAQCBjbGFzcyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9jYWxTdG9yYWdlRGF0YQogCiAg
ICAgc3RydWN0IE9yaWdpbkRldGFpbHMgewogICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmll
cjsKLSAgICAgICAgV2FsbFRpbWUgY3JlYXRpb25UaW1lOwotICAgICAgICBXYWxsVGltZSBtb2Rp
ZmljYXRpb25UaW1lOworICAgICAgICBNYXJrYWJsZTxXYWxsVGltZSwgV2FsbFRpbWU6Ok1hcmth
YmxlVHJhaXRzPiBjcmVhdGlvblRpbWU7CisgICAgICAgIE1hcmthYmxlPFdhbGxUaW1lLCBXYWxs
VGltZTo6TWFya2FibGVUcmFpdHM+IG1vZGlmaWNhdGlvblRpbWU7CiAgICAgfTsKICAgICBWZWN0
b3I8T3JpZ2luRGV0YWlscz4gb3JpZ2luRGV0YWlscygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4
IDVlZThkYmFlNDNmMDBkYTgxMDhkYzc2MWVjODZkYzk4MWRkYzE2ZDkuLjM1ODE0ZGZmYWE0ZDdj
ZWY3M2RkNDA2MWU0NWU2ZjI5ZjIwZmZhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0yODMsNyAr
MjgzLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlRm9ybURhdGFFbGVtZW50KEhpc3RvcnlFbnRyeURh
dGFFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBIVFRQQm8KIAogICAgICAgICBlbmNvZGVyIDw8IGVs
ZW1lbnQuZmlsZVN0YXJ0OwogICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52
YWx1ZV9vcigtMSk7Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lLnZhbHVlX29yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRf
TmFOKCkpOworICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0
aW9uVGltZS52YWx1ZV9vcihXYWxsVGltZTo6bmFuKCkpOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkJsb2I6CkBAIC04MjUsMTAgKzgyNSw5IEBA
IHN0YXRpYyB2b2lkIGRlY29kZUZvcm1EYXRhRWxlbWVudChIaXN0b3J5RW50cnlEYXRhRGVjb2Rl
ciYgZGVjb2RlciwgSFRUUEJvZHk6OkVsCiAgICAgICAgICAgICBmb3JtRGF0YUVsZW1lbnQuZmls
ZUxlbmd0aCA9IGZpbGVMZW5ndGg7CiAgICAgICAgIH0KIAotCi0gICAgICAgIGRvdWJsZSBleHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOworICAgICAgICBXYWxsVGltZSBleHBlY3RlZEZpbGVN
b2RpZmljYXRpb25UaW1lOwogICAgICAgICBkZWNvZGVyID4+IGV4cGVjdGVkRmlsZU1vZGlmaWNh
dGlvblRpbWU7Ci0gICAgICAgIGlmIChleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lICE9IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpCisgICAgICAgIGlmICghc3Rk
Ojppc25hbihleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKSkKICAgICAgICAgICAgIGZvcm1E
YXRhRWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lID0gZXhwZWN0ZWRGaWxlTW9k
aWZpY2F0aW9uVGltZTsKIAogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggOTAzYzZkMDEyYzFkYjI4OGZiYTIzOGI1NzhiZDA2NTYzNDQ4ZDgxNC4u
NGJmNDhkMGU5NGVlZjc2MDY2Y2EzMGVhOWNmMzU3MDRhYjNkZWFlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgVmVjdG9yPFNlY3VyaXR5T3Jp
Z2luRGF0YT4gV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6Z2V0TWVkaWFLZXlPcmlnaW5zKCkK
ICAgICByZXR1cm4gcmVzdWx0czsKIH0KIAotc3RhdGljIHZvaWQgcmVtb3ZlQWxsTWVkaWFLZXlT
dG9yYWdlRm9yT3JpZ2luUGF0aChjb25zdCBTdHJpbmcmIG9yaWdpblBhdGgsIGRvdWJsZSBzdGFy
dERhdGUsIGRvdWJsZSBlbmREYXRlKQorc3RhdGljIHZvaWQgcmVtb3ZlQWxsTWVkaWFLZXlTdG9y
YWdlRm9yT3JpZ2luUGF0aChjb25zdCBTdHJpbmcmIG9yaWdpblBhdGgsIFdhbGxUaW1lIHN0YXJ0
RGF0ZSwgV2FsbFRpbWUgZW5kRGF0ZSkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiBtZWRpYUtleVBh
dGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShvcmlnaW5QYXRoLCAiKiIpOwogCkBAIC04
OSwxMCArODksMTAgQEAgc3RhdGljIHZvaWQgcmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9yT3Jp
Z2luUGF0aChjb25zdCBTdHJpbmcmIG9yaWdpblBhdGgsIGRvdWIKICAgICAgICAgaWYgKCFGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKG1lZGlhS2V5RmlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICB0aW1lX3QgbW9kVGltZTsKLSAgICAgICAgRmlsZVN5c3RlbTo6Z2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUobWVkaWFLZXlGaWxlLCBtb2RUaW1lKTsKLQotICAgICAgICBpZiAobW9k
VGltZSA8IHN0YXJ0RGF0ZSB8fCBtb2RUaW1lID4gZW5kRGF0ZSkKKyAgICAgICAgYXV0byBtb2Rp
ZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUobWVkaWFL
ZXlGaWxlKTsKKyAgICAgICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIGlmIChtb2RpZmljYXRpb25UaW1lLnZhbHVlKCkgPCBzdGFydERhdGUg
fHwgbW9kaWZpY2F0aW9uVGltZS52YWx1ZSgpID4gZW5kRGF0ZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobWVkaWFLZXlGaWxlKTsKQEAg
LTEwOCwxMCArMTA4LDEwIEBAIHZvaWQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRl
TWVkaWFLZXlFbnRyaWVzRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIFN0cmluZyBvcmlnaW5QYXRoID0gbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5Rm9y
T3JpZ2luKG9yaWdpbkRhdGEpOwotICAgIHJlbW92ZUFsbE1lZGlhS2V5U3RvcmFnZUZvck9yaWdp
blBhdGgob3JpZ2luUGF0aCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dlc3QoKSwg
c3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgcmVtb3ZlQWxsTWVkaWFL
ZXlTdG9yYWdlRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCAtV2FsbFRpbWU6OmluZmluaXR5KCks
IFdhbGxUaW1lOjppbmZpbml0eSgpKTsKIH0KIAotdm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyOjpkZWxldGVNZWRpYUtleUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhkb3VibGUgc3Rh
cnREYXRlLCBkb3VibGUgZW5kRGF0ZSkKK3ZvaWQgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6
ZGVsZXRlTWVkaWFLZXlFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoV2FsbFRpbWUgc3RhcnRE
YXRlLCBXYWxsVGltZSBlbmREYXRlKQogewogICAgIGlmIChtX21lZGlhS2V5U3RvcmFnZURpcmVj
dG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lk
IFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmRlbGV0ZUFsbE1lZGlhS2V5RW50cmllcygpCiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBvcmlnaW5QYXRocyA9IEZpbGVTeXN0ZW06Omxpc3REaXJlY3Rv
cnkobV9tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnksICIqIik7CiAgICAgZm9yIChhdXRvJiBvcmln
aW5QYXRoIDogb3JpZ2luUGF0aHMpCi0gICAgICAgIHJlbW92ZUFsbE1lZGlhS2V5U3RvcmFnZUZv
ck9yaWdpblBhdGgob3JpZ2luUGF0aCwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpsb3dl
c3QoKSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7CisgICAgICAgIHJlbW92
ZUFsbE1lZGlhS2V5U3RvcmFnZUZvck9yaWdpblBhdGgob3JpZ2luUGF0aCwgLVdhbGxUaW1lOjpp
bmZpbml0eSgpLCBXYWxsVGltZTo6aW5maW5pdHkoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3Rv
cmFnZU1hbmFnZXIuaAppbmRleCAxMTllY2U4MzRlNDRkY2U4OWEzYjM3YzE1N2RlMjkzZjliM2Zm
OTQyLi5jYzBiZDE0YzkxZDBkNTBjYTUzN2FmMWExMTU5MWZmYTk4YjU4ZDgyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5oCkBAIC01MCw3ICs1MCw3IEBAIGNsYXNzIFdlYk1lZGlhS2V5
U3RvcmFnZU1hbmFnZXIgOiBwdWJsaWMgV2ViUHJvY2Vzc1N1cHBsZW1lbnQgewogCiAgICAgVmVj
dG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gZ2V0TWVkaWFLZXlPcmlnaW5zKCk7CiAg
ICAgdm9pZCBkZWxldGVNZWRpYUtleUVudHJpZXNGb3JPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJik7Ci0gICAgdm9pZCBkZWxldGVNZWRpYUtleUVudHJpZXNNb2RpZmll
ZEJldHdlZW5EYXRlcyhkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSk7CisgICAgdm9p
ZCBkZWxldGVNZWRpYUtleUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhXYWxsVGltZSBzdGFy
dERhdGUsIFdhbGxUaW1lIGVuZERhdGUpOwogICAgIHZvaWQgZGVsZXRlQWxsTWVkaWFLZXlFbnRy
aWVzKCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5k
ZXggOTI4Nzk1NzViNzBjZDFlZDE4ZDkzZThjZTAxYmQxZGExNDk3M2RmMy4uZjI4M2M3Mjg2MzBl
ZDRlNDI0ZDZkMGJkZDRlMjgwNmUyODIzNDgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252
ZXJzaW9uLmNwcApAQCAtNTEsOCArNTEsNyBAQCBzdGF0aWMgSFRUUEJvZHkgdG9IVFRQQm9keShj
b25zdCBGb3JtRGF0YSYgZm9ybURhdGEpCiAgICAgICAgICAgICAgICAgZWxlbWVudC5maWxlU3Rh
cnQgPSBmaWxlRGF0YS5maWxlU3RhcnQ7CiAgICAgICAgICAgICAgICAgaWYgKGZpbGVEYXRhLmZp
bGVMZW5ndGggIT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkKICAgICAgICAgICAgICAgICAg
ICAgZWxlbWVudC5maWxlTGVuZ3RoID0gZmlsZURhdGEuZmlsZUxlbmd0aDsKLSAgICAgICAgICAg
ICAgICBpZiAoZmlsZURhdGEuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSAhPSBGaWxlU3lz
dGVtOjppbnZhbGlkRmlsZVRpbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5leHBl
Y3RlZEZpbGVNb2RpZmljYXRpb25UaW1lID0gZmlsZURhdGEuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0
aW9uVGltZTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlv
blRpbWUgPSBmaWxlRGF0YS5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwogICAgICAgICAg
ICAgfSwgWyZdIChjb25zdCBGb3JtRGF0YUVsZW1lbnQ6OkVuY29kZWRCbG9iRGF0YSYgYmxvYkRh
dGEpIHsKICAgICAgICAgICAgICAgICBlbGVtZW50LmJsb2JVUkxTdHJpbmcgPSBibG9iRGF0YS51
cmwuc3RyaW5nKCk7CiAgICAgICAgICAgICB9CkBAIC0xMjksNyArMTI4LDcgQEAgc3RhdGljIFJl
ZjxGb3JtRGF0YT4gdG9Gb3JtRGF0YShjb25zdCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBlOjpGaWxl
OgotICAgICAgICAgICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRo
LCBlbGVtZW50LmZpbGVTdGFydCwgZWxlbWVudC5maWxlTGVuZ3RoLnZhbHVlX29yKEJsb2JEYXRh
SXRlbTo6dG9FbmRPZkZpbGUpLCBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUu
dmFsdWVfb3IoRmlsZVN5c3RlbTo6aW52YWxpZEZpbGVUaW1lKCkpKTsKKyAgICAgICAgICAgIGZv
cm1EYXRhLT5hcHBlbmRGaWxlUmFuZ2UoZWxlbWVudC5maWxlUGF0aCwgZWxlbWVudC5maWxlU3Rh
cnQsIGVsZW1lbnQuZmlsZUxlbmd0aC52YWx1ZV9vcihCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxl
KSwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lKTsKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkJsb2I6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpbkRhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCmlu
ZGV4IDljZGNjMTQ1YjcxOTk5Y2RhNjk4NDE0ZTUyZmUyMmMzN2E4OTdiODQuLjVjMDc3MTIxMWVh
ZWQ2NDkwNzNlMTAzZTkwNGE1ZWM5MDQ5YjQ2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwCkBAIC0xMjUsOSArMTI1LDEwIEBA
IGJvb2wgUGx1Z2luRGF0YWJhc2U6OnJlZnJlc2goKQogCiAgICAgYXV0byBwYXRoc0VuZCA9IHBh
dGhzLmVuZCgpOwogICAgIGZvciAoYXV0byBpdCA9IHBhdGhzLmJlZ2luKCk7IGl0ICE9IHBhdGhz
RW5kOyArK2l0KSB7Ci0gICAgICAgIHRpbWVfdCBsYXN0TW9kaWZpZWQ7Ci0gICAgICAgIGlmICgh
RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoKml0LCBsYXN0TW9kaWZpZWQpKQor
ICAgICAgICBhdXRvIGxhc3RNb2RpZmllZFRpbWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZSgqaXQpOworICAgICAgICBpZiAoIWxhc3RNb2RpZmllZFRpbWUpCiAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgdGltZV90IGxhc3RNb2RpZmllZCA9IGxhc3RNb2RpZmll
ZFRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKTsKIAogICAgICAg
ICBwYXRoc1dpdGhUaW1lcy5hZGQoKml0LCBsYXN0TW9kaWZpZWQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356370</attachid>
            <date>2018-12-03 02:14:29 -0800</date>
            <delta_ts>2018-12-03 04:30:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192287-20181203191428.patch</filename>
            <type>text/plain</type>
            <size>55437</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFhYzU2ZmY0YWMwMWFj
ZDE1MTk2NDI4YjY1MTYyMDU0ZjBiYjhiOS4uMzllMTE4ZDIyMmYyMzFiYTc1NjU3NTczYmYzZjQ0
NmYxYTk2Mzk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE4LTEyLTAzICBZdXN1
a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFdh
bGxUaW1lIGZvciBmaWxlIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBhIHR5cGUgb2YgZmlsZSB0aW1lIGZyb20g
ZG91YmxlIHRvIFdhbGxUaW1lIHRvIHVzZSBzdHJvbmdseSB0eXBlZCBmaWxlIHRpbWUuCisKKyAg
ICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZGV0YWlscyBjb25z
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6RGF0YWJhc2VEZXRhaWxzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6Y3JlYXRpb25UaW1lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6bW9kaWZpY2F0aW9uVGltZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpQcm9wb3NlZERhdGFiYXNlOjpQcm9wb3NlZERh
dGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1lQW5k
T3JpZ2luKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OmdldFNpemUpOgorICAgICAgICAqIGZpbGVhcGkv
QXN5bmNGaWxlU3RyZWFtLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGU6Omxhc3RNb2RpZmllZCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTdHJlYW06OmdldFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlk
RmlsZVRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6aXNWYWxp
ZEZpbGVUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1H
bGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVDcmVhdGlvblRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhVXNpbmdGdW5j
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZp
bGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpl
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kRmlsZVJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6
OkZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVu
Y29kZWRGaWxlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zv
cm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZUN1cnJlbnRT
dHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RT
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1l
c3NhZ2VCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZUNyZWF0aW9uVGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmdldEZpbGVDcmVhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmlu
ZERhdGFUb0ZpbGVNZXRhZGF0YSk6CisKIDIwMTgtMTItMDIgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBydW50aW1lIGZlYXR1cmUgZmxhZyBmb3IgTGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhYzNlNjJmNDVlMWIxNmI5N2I0MDU5
YTY1ZTM2ZTUyOWE3YmY2YTAuLjk5ZDU5NjFjZDI3NzM3MjhmYzk1ZWQxMjZhMjkxYzkzMzI3NmY5
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTgtMTItMDMgIFl1c3VrZSBTdXp1a2kg
IDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBVc2UgV2FsbFRpbWUgZm9y
IGZpbGUgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyMjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RGF0YWJhc2VEZXRh
aWxzPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3Jh
Z2VEZXRhaWxzQnlPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3U2Vzc2lvblN0YXRlLmNwcDoKKyAgICAgICAgKGRlY29kZUhUVFBCb2R5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luSW5mb0NhY2hlOjp1cGRhdGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6aGFzRmlsZUNoYW5nZWRTaW5jZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZXNNb2RpZmllZFNpbmNlKToKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5EZXRhaWxz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGlu
Zy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmVuY29kZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OmRlY29kZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9N
ZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTWVkaWFLZXlFbnRyaWVzRm9yT3Jp
Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRl
TWVkaWFLZXlFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVBbGxNZWRpYUtleUVudHJpZXMpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9IVFRQQm9keSk6CisgICAgICAgIChXZWJLaXQ6
OnRvRm9ybURhdGEpOgorCiAyMDE4LTEyLTAyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGEgcnVudGltZSBmZWF0dXJlIGZsYWcgZm9yIExheW91dEZvcm1h
dHRpbmdDb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDNhNzdlN2YwNjgw
NGI3NjcwMTU5MTRhYmQ4ZmMzNDg1ODhlODYwYjYuLjU1NjQwNjE3ZTQ0MzZlMGUzZGJkZWI5ODAz
YjkwMGQ5NTIyNWRjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxOC0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQu
b3JnPgorCisgICAgICAgIFVzZSBXYWxsVGltZSBmb3IgZmlsZSB0aW1lCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIyODcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OnJlZnJlc2gpOgorCiAy
MDE4LTExLTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRml4IFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IGU5ZjI1MDFlZjg0YmRkODk4ZjM0MWM4YTQx
NWJkNjExOGU1MWI2NmEuLmVjOWIwNWY5ZTZlZWU0NjkzMjU3ZDNiOTkwZjAwYmQ2YjczY2Y1MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
CkBAIC02MzgsNyArNjM4LDcgQEAgU3RyaW5nIERhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0CiBE
YXRhYmFzZURldGFpbHMgRGF0YWJhc2U6OmRldGFpbHMoKSBjb25zdAogewogICAgIC8vIFRoaXMg
Y29kZSBwYXRoIGlzIG9ubHkgdXNlZCBmb3IgZGF0YWJhc2UgcXVvdGEgZGVsZWdhdGUgY2FsbHMs
IHNvIGZpbGUgZGF0ZXMgYXJlIGlycmVsZXZhbnQgYW5kIGxlZnQgdW5pbml0aWFsaXplZC4KLSAg
ICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKHN0cmluZ0lkZW50aWZpZXIoKSwgZGlzcGxheU5hbWUo
KSwgZXN0aW1hdGVkU2l6ZSgpLCAwLCAwLCAwKTsKKyAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxz
KHN0cmluZ0lkZW50aWZpZXIoKSwgZGlzcGxheU5hbWUoKSwgZXN0aW1hdGVkU2l6ZSgpLCAwLCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OmRpc2FibGVB
dXRob3JpemVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VEZXRhaWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlRGV0YWlscy5oCmluZGV4IDZhOTZlMjNmMDc1NWYwNWQzMDZhY2RjZjkxZDZiNWI1
YTI2ZDU4OTYuLjY3MDIxMDI0MGIyYTg2OGM2MjdlYjUxMGRlZmM3MmE4ODA0ZDk1MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFp
bHMuaApAQCAtMjgsNyArMjgsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9N
YXJrYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvV2Fs
bFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNjQsNyArNjYsNyBAQCBjbGFzcyBEYXRhYmFzZURldGFpbHMgewogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgRGF0YWJhc2VEZXRhaWxzKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGxvbmcgZXhwZWN0ZWRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwgZG91
YmxlIGNyZWF0aW9uVGltZSwgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUpCisgICAgRGF0YWJhc2VE
ZXRhaWxzKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25n
IGN1cnJlbnRVc2FnZSwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lLCBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRpb25UaW1lKQogICAgICAgICA6IG1fbmFtZShk
YXRhYmFzZU5hbWUpCiAgICAgICAgICwgbV9kaXNwbGF5TmFtZShkaXNwbGF5TmFtZSkKICAgICAg
ICAgLCBtX2V4cGVjdGVkVXNhZ2UoZXhwZWN0ZWRVc2FnZSkKQEAgLTc4LDggKzgwLDggQEAgY2xh
c3MgRGF0YWJhc2VEZXRhaWxzIHsKICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQogICAgIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkVXNhZ2U7IH0KICAgICB1aW50NjRfdCBjdXJyZW50
VXNhZ2UoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRVc2FnZTsgfQotICAgIGRvdWJsZSBjcmVh
dGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0aW9uVGltZTsgfQotICAgIGRvdWJsZSBt
b2RpZmljYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmljYXRpb25UaW1lOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jcmVhdGlvblRpbWU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRp
b25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmljYXRpb25UaW1lOyB9CiAjaWZuZGVmIE5E
RUJVRwogICAgIFRocmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7
IH0KICNlbmRpZgpAQCAtODksOCArOTEsOCBAQCBjbGFzcyBEYXRhYmFzZURldGFpbHMgewogICAg
IFN0cmluZyBtX2Rpc3BsYXlOYW1lOwogICAgIHVpbnQ2NF90IG1fZXhwZWN0ZWRVc2FnZSB7IDAg
fTsKICAgICB1aW50NjRfdCBtX2N1cnJlbnRVc2FnZSB7IDAgfTsKLSAgICBkb3VibGUgbV9jcmVh
dGlvblRpbWUgeyAwLjAgfTsKLSAgICBkb3VibGUgbV9tb2RpZmljYXRpb25UaW1lIHsgMC4wIH07
CisgICAgTWFya2FibGU8V2FsbFRpbWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9jcmVh
dGlvblRpbWU7CisgICAgTWFya2FibGU8V2FsbFRpbWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0
cz4gbV9tb2RpZmljYXRpb25UaW1lOwogI2lmbmRlZiBOREVCVUcKICAgICBSZWY8VGhyZWFkPiBt
X3RocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBm
ZmI3ZTg2YTI4OTVmZjJkZDU2YjA4MDk4NWZhN2Q5MTZlZWNmOTYyLi4yM2MzYzMwMzRmZDZhYzgx
YjUxYTQyNzg2OWRiM2ZkZDc2ODJhZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBA
IGNsYXNzIERhdGFiYXNlTWFuYWdlcjo6UHJvcG9zZWREYXRhYmFzZSB7CiBEYXRhYmFzZU1hbmFn
ZXI6OlByb3Bvc2VkRGF0YWJhc2U6OlByb3Bvc2VkRGF0YWJhc2UoRGF0YWJhc2VNYW5hZ2VyJiBt
YW5hZ2VyLCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKICAgICA6
IG1fbWFuYWdlcihtYW5hZ2VyKQogICAgICwgbV9vcmlnaW4ob3JpZ2luLmlzb2xhdGVkQ29weSgp
KQotICAgICwgbV9kZXRhaWxzKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xh
dGVkQ29weSgpLCBlc3RpbWF0ZWRTaXplLCAwLCAwLCAwKQorICAgICwgbV9kZXRhaWxzKG5hbWUu
aXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpLCBlc3RpbWF0ZWRTaXpl
LCAwLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCkKIHsKICAgICBtX21hbmFnZXIuYWRkUHJv
cG9zZWREYXRhYmFzZSgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggMGQ5MTI5MTNhMDIzZDIz
N2MzYzgxNDVkZjA5MjRlNjM5Mzc3MWY0My4uOWY1YjVhZTE4YzczOTQ3ZGE5N2UzYjJkNmFkNDAx
ZDk2ZTBkNTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNDcyLDcgKzQ3Miw3IEBAIERhdGFiYXNlRGV0
YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uCiAKICAgICBTdHJpbmcgcGF0aCA9IGZ1bGxQYXRoRm9yRGF0YWJhc2Uob3Jp
Z2luLCBuYW1lLCBmYWxzZSk7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gRGF0YWJhc2VEZXRhaWxzKG5hbWUsIGRpc3BsYXlOYW1lLCBleHBlY3RlZFVzYWdlLCAwLCAw
LCAwKTsKKyAgICAgICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscyhuYW1lLCBkaXNwbGF5TmFtZSwg
ZXhwZWN0ZWRVc2FnZSwgMCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIHJldHVy
biBEYXRhYmFzZURldGFpbHMobmFtZSwgZGlzcGxheU5hbWUsIGV4cGVjdGVkVXNhZ2UsIFNRTGl0
ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmlsZVNpemUocGF0aCksIFNRTGl0ZUZpbGVTeXN0ZW06
OmRhdGFiYXNlQ3JlYXRpb25UaW1lKHBhdGgpLCBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZU1v
ZGlmaWNhdGlvblRpbWUocGF0aCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHAKaW5kZXggNzNhMzY1MjI4Nzk5YzE2YjlhOTg4ZDlhMTE4OWUwY2Y5Mzgw
ZmU5ZC4uMzI1ZTM0ZDBjNmI4ZTdjYzkzYWZkYjY0NDVmNTQ4ZjVmY2ViZWUzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBA
IHZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKFdURjo6RnVuY3Rpb248V1RGOjpGdW5jdGlv
bjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmCiAgICAgfSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3Ry
ZWFtOjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSkKK3ZvaWQgQXN5bmNGaWxlU3RyZWFtOjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0
aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQogewog
ICAgIC8vIEZJWE1FOiBFeHBsaWNpdCByZXR1cm4gdHlwZSBoZXJlIGFuZCBpbiBhbGwgdGhlIG90
aGVyIGNhc2VzIGxpa2UgdGhpcyBiZWxvdyBpcyBhIHdvcmthcm91bmQgZm9yIGEgZGVmaWNpZW5j
eQogICAgIC8vIGluIHRoZSBXaW5kb3dzIGNvbXBpbGVyIGF0IHRoZSB0aW1lIG9mIHRoaXMgd3Jp
dGluZy4gQ291bGQgcmVtb3ZlIGl0IGlmIHRoYXQgaXMgcmVzb2x2ZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAppbmRleCA2MmNhZmZlMmQ5OGFkMWQ1ZDEwZjRlZDY4
ODE3ZGE5MDQ5NGVhMTc4Li43YTkzMzdlMzNiZTJjOTNlNzkzMjY2ZTYxMWIxM2JjNGNlMzZlNDM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKQEAgLTMzLDYgKzMz
LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNDQsNyArNDUsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBc3luY0ZpbGVTdHJlYW0gewog
ICAgIGV4cGxpY2l0IEFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50Jik7CiAgICAgfkFz
eW5jRmlsZVN0cmVhbSgpOwogCi0gICAgdm9pZCBnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwg
ZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CisgICAgdm9pZCBnZXRTaXplKGNvbnN0
IFN0cmluZyYgcGF0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRp
b25UaW1lKTsKICAgICB2b2lkIG9wZW5Gb3JSZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBs
b25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZv
aWQgcmVhZChjaGFyKiBidWZmZXIsIGludCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAK
aW5kZXggZTdiMGQzZWM5MmY0OGUyYTVjOGU3NjE4ZjYxY2M5ODUwZThmZTkwMS4uMzg3ZDdmMDFm
YjBmYjE2MDM5ZTNkNjVhYTlmMDZkY2E5YzIzNzdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
CkBAIC0xMTIsMTEgKzExMiwxMSBAQCBpbnQ2NF90IEZpbGU6Omxhc3RNb2RpZmllZCgpIGNvbnN0
CiAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBzeW5jLWkvbyBvbiB0aGUgbWFpbiB0aHJlYWQgYW5k
IGFsc28gcmVjYWxjdWxhdGVzIGV2ZXJ5IHRpbWUgdGhlIG1ldGhvZCBpcyBjYWxsZWQuCiAgICAg
Ly8gVGhlIGkvbyBzaG91bGQgYmUgcGVyZm9ybWVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQsCiAg
ICAgLy8gYW5kIHRoZSByZXN1bHQgc2hvdWxkIGJlIGNhY2hlZCBhbG9uZyB3aXRoIGFuIGFzeW5j
aHJvbm91cyBtb25pdG9yIGZvciBjaGFuZ2VzIHRvIHRoZSBmaWxlLgotICAgIHRpbWVfdCBtb2Rp
ZmljYXRpb25UaW1lOwotICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShtX3BhdGgsIG1vZGlmaWNhdGlvblRpbWUpICYmIEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGlt
ZShtb2RpZmljYXRpb25UaW1lKSkKLSAgICAgICAgcmVzdWx0ID0gbW9kaWZpY2F0aW9uVGltZSAq
IG1zUGVyU2Vjb25kOworICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06Omdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKG1fcGF0aCk7CisgICAgaWYgKG1vZGlmaWNhdGlvblRpbWUg
JiYgIXN0ZDo6aXNuYW4obW9kaWZpY2F0aW9uVGltZS52YWx1ZSgpKSkKKyAgICAgICAgcmVzdWx0
ID0gbW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHNBczxp
bnQ2NF90PigpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gV2FsbFRpbWU6Om5vdygpLnNl
Y29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCk7CisgICAgICAgIHJlc3VsdCA9IFdhbGxU
aW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kc0FzPGludDY0X3Q+KCk7
CiAKICAgICByZXR1cm4gV1RGOjp0aW1lQ2xpcChyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggYmQwMzQ3Zjc2ZDcyNWY4MzRkOTA2MzNmODMxNzgxOTY4M2JlZGI3ZS4uZmIwZmMzODlh
MDQ0ZjliMTc1MTMxMDJiMDljNjkxZGEyYmNmNzM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0x
MzQ3LDcgKzEzNDcsNyBAQCB2b2lkIFBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2Vk
KCkKIAogICAgIG1fZGlkTG9hZFVzZXJTdHlsZVNoZWV0ID0gZmFsc2U7CiAgICAgbV91c2VyU3R5
bGVTaGVldCA9IFN0cmluZygpOwotICAgIG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1l
ID0gMDsKKyAgICBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSA9IHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIERhdGEgVVJMcyB3aXRoIGJhc2U2NC1lbmNvZGVkIFVURi04IHN0eWxlIHNo
ZWV0cyBhcmUgY29tbW9uLiBXZSBjYW4gcHJvY2VzcyB0aGVtCiAgICAgLy8gc3luY2hyb25vdXNs
eSBhbmQgYXZvaWQgdXNpbmcgYSBsb2FkZXIuIApAQCAtMTM3MCw4ICsxMzcwLDggQEAgY29uc3Qg
U3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgaWYgKG1fdXNlclN0eWxl
U2hlZXRQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAK
LSAgICB0aW1lX3QgbW9kVGltZTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKG1fdXNlclN0eWxlU2hlZXRQYXRoLCBtb2RUaW1lKSkgeworICAgIGF1dG8gbW9k
aWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fdXNl
clN0eWxlU2hlZXRQYXRoKTsKKyAgICBpZiAoIW1vZGlmaWNhdGlvblRpbWUpIHsKICAgICAgICAg
Ly8gVGhlIHN0eWxlc2hlZXQgZWl0aGVyIGRvZXNuJ3QgZXhpc3QsIHdhcyBqdXN0IGRlbGV0ZWQs
IG9yIGlzCiAgICAgICAgIC8vIG90aGVyd2lzZSB1bnJlYWRhYmxlLiBJZiB3ZSd2ZSByZWFkIHRo
ZSBzdHlsZXNoZWV0IGJlZm9yZSwgd2Ugc2hvdWxkCiAgICAgICAgIC8vIHRocm93IGF3YXkgdGhh
dCBkYXRhIG5vdyBhcyBpdCBubyBsb25nZXIgcmVwcmVzZW50cyB3aGF0J3Mgb24gZGlzay4KQEAg
LTEzODEsMTIgKzEzODEsMTIgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgp
IGNvbnN0CiAKICAgICAvLyBJZiB0aGUgc3R5bGVzaGVldCBoYXNuJ3QgY2hhbmdlZCBzaW5jZSB0
aGUgbGFzdCB0aW1lIHdlIHJlYWQgaXQsIHdlIGNhbgogICAgIC8vIGp1c3QgcmV0dXJuIHRoZSBv
bGQgZGF0YS4KLSAgICBpZiAobV9kaWRMb2FkVXNlclN0eWxlU2hlZXQgJiYgbW9kVGltZSA8PSBt
X3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSkKKyAgICBpZiAobV9kaWRMb2FkVXNlclN0
eWxlU2hlZXQgJiYgKG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lICYmIG1vZGlmaWNh
dGlvblRpbWUudmFsdWUoKSA8PSBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZS52YWx1
ZSgpKSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKICAgICBtX2RpZExvYWRV
c2VyU3R5bGVTaGVldCA9IHRydWU7CiAgICAgbV91c2VyU3R5bGVTaGVldCA9IFN0cmluZygpOwot
ICAgIG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lID0gbW9kVGltZTsKKyAgICBtX3Vz
ZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSA9IG1vZGlmaWNhdGlvblRpbWU7CiAKICAgICAv
LyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIGxvYWQgdGhpcyBhc3luY2hyb25vdXNseSB0
byBhdm9pZCBibG9ja2luZwogICAgIC8vIHRoZSBwcm9jZXNzLCBidXQgd2Ugd2lsbCBmaXJzdCBu
ZWVkIHRvIGNyZWF0ZSBhbiBhc3luY2hyb25vdXMgbG9hZGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA0
MTE0ODdmODM3NWVmYmU3OWQyOGFlMWQzMjQ0NzgzODkxZjU4MGMyLi5kNjU2ZjFlODNlZmZhMTRj
NThkNTcyYTE4YmJhZmJmNzE5N2QwZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtODExLDcgKzgxMSw3
IEBAIGNsYXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4gewogICAgIFN0cmlu
ZyBtX3VzZXJTdHlsZVNoZWV0UGF0aDsKICAgICBtdXRhYmxlIFN0cmluZyBtX3VzZXJTdHlsZVNo
ZWV0OwogICAgIG11dGFibGUgYm9vbCBtX2RpZExvYWRVc2VyU3R5bGVTaGVldCB7IGZhbHNlIH07
Ci0gICAgbXV0YWJsZSB0aW1lX3QgbV91c2VyU3R5bGVTaGVldE1vZGlmaWNhdGlvblRpbWUgeyAw
IH07CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtX3VzZXJTdHlsZVNoZWV0
TW9kaWZpY2F0aW9uVGltZTsKIAogICAgIFN0cmluZyBtX2NhcHRpb25Vc2VyUHJlZmVyZW5jZXNT
dHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0
YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCmluZGV4IDgx
NjRkNmRiOGEwOGRkNzIwMDgxOTVjYzE5Mjc3ZmI4MzA3YWIwMjYuLjdkODg0OTUzZTc2NzVkOTJj
MDYzOGRlY2FkODU3Y2Q0MWE1OWM1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRh
ZGF0YS5oCkBAIC0zMCwxMSArMzAsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3
dGYvV2FsbFRpbWUuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRmlsZU1ldGFk
YXRhIHsKICAgICAvLyBUaGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZSwgaW4g
c2Vjb25kcy4KLSAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBXYWxsVGltZSBtb2Rp
ZmljYXRpb25UaW1lOwogCiAgICAgLy8gVGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBpbiBieXRlcy4K
ICAgICBsb25nIGxvbmcgbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNw
cAppbmRleCBhYjQ4YzA0YWNlY2EzOWQwYjc3NTUzZGNlNzVjYWRiNWQ0YjMzNWE0Li5hMjE5MGFh
ODRiYWY4NzU4NjllMTU3ZGMwMGVkZTBkZDY1NWU1NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3RyZWFtLmNwcApAQCAtNDksMTQgKzQ5LDE0IEBAIEZpbGVTdHJlYW06On5GaWxlU3Ry
ZWFtKCkKICAgICBjbG9zZSgpOwogfQogCi1sb25nIGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShj
b25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCitsb25n
IGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6b3B0aW9u
YWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKIHsKICAgICAvLyBDaGVjayB0
aGUgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZSBwb3NzaWJsZSBmaWxlIGNoYW5nZS4KLSAgICB0
aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQorICAgIGF1dG8gbW9kaWZpY2F0
aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgpOworICAg
IGlmICghbW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChGaWxl
U3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUoZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSkgewotICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8dGltZV90PihleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpICE9
IG1vZGlmaWNhdGlvblRpbWUpCisgICAgaWYgKGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkgewor
ICAgICAgICBpZiAoZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgp
LnNlY29uZHNBczx0aW1lX3Q+KCkgIT0gbW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBv
Y2goKS5zZWNvbmRzQXM8dGltZV90PigpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCmluZGV4IGIyYWEyODQ0NzlmN2IxMjI2
ZWJmN2FhYTliN2ZkY2FjMzBjMzM3NjEuLjdhNjgxYjQ5ZDUwZGUyMzIxNGFjZDIwY2E5ZWQ5Yzkx
N2UzM2YyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKQEAgLTQzLDcgKzQz
LDcgQEAgY2xhc3MgRmlsZVN0cmVhbSB7CiAKICAgICAvLyBHZXRzIHRoZSBzaXplIG9mIGEgZmls
ZS4gQWxzbyB2YWxpZGF0ZXMgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvciBub3QgaWYg
dGhlIGV4cGVjdGVkIG1vZGlmaWNhdGlvbiB0aW1lIGlzIHByb3ZpZGVkLCBpLmUuIG5vbi16ZXJv
LgogICAgIC8vIFJldHVybnMgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGlmIHN1Y2Nlc3NmdWwuIC0x
IG90aGVyd2lzZS4KLSAgICBsb25nIGxvbmcgZ2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRv
dWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgIGxvbmcgbG9uZyBnZXRTaXplKGNv
bnN0IFN0cmluZyYgcGF0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKTsKIAogICAgIC8vIE9wZW5zIGEgZmlsZSBmb3IgcmVhZGluZy4gVGhlIHJlYWRp
bmcgc3RhcnRzIGF0IHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGFuZCBsYXN0cyB0aWxsIHRoZSBzcGVj
aWZpZWQgbGVuZ3RoLgogICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiBGYWxzZSBvdGhl
cndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDJmZGIyNjBm
ODI5MzYyYmJjYWM2NTk3NjcwYjAzODgzMTlmZDI0NmEuLmE3Nzk5OGNjZjIwNzBlNGQxMjE5ZDQx
ZjEyY2Y5MjdjYmEwYTlkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3Bw
CkBAIC0zNjEsMTMgKzM2MSw1IEBAIGJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTCiAgICAgcmV0dXJu
IG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsK
IH0KIAotc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lID0gMDsKLSAg
ICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJh
d1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0
ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0u
aAppbmRleCBlMTQwYjI0NTdlMWFlNmFlOGFiZWYxZTJiNDE0NzBhODQ3MWVmODExLi44MDE4OTM1
YzM4NmEwZDk5OTgyMWNiY2FmMmQ5NWE0NzEwMGIzNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5oCkBAIC0xMDQsOSArMTA0LDggQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxl
dGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgbW92
ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpOwogV0VC
Q09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJl
c3VsdCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgbG9uZyBsb25nJiByZXN1bHQpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShjb25zdCBTdHJpbmcmLCB0aW1lX3QmIHJlc3VsdCk7CiBXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBT
dHJpbmcmLCB0aW1lX3QmIHJlc3VsdCk7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0b3JlIGZpbGUg
Y3JlYXRpb24gdGltZS4KK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGdl
dEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0
b3JlIGZpbGUgY3JlYXRpb24gdGltZS4KIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Rmls
ZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1s
aW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlSXNEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyk7CkBAIC0xMzMs
OSArMTMyLDYgQEAgU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgY2hhciopOwogCiBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZTsgfQogCi1pbmxpbmUgZG91YmxlIGludmFsaWRGaWxlVGltZSgpIHsgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7IH0KLWlubGluZSBib29sIGlzVmFs
aWRGaWxlVGltZShkb3VibGUgdGltZSkgeyByZXR1cm4gc3RkOjppc2Zpbml0ZSh0aW1lKTsgfQot
CiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgs
IG5vdCB0aGUgZnVsbCBwYXRoLgogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKIFdFQkNPUkVf
RVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZp
bGVPcGVuTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0Zp
bGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwCmluZGV4IGY5NDA4MTVmNTEyNDgwMTVmNzNiMDA1MTc4MmRkNWI4MjU2NTg4YWYu
LjhmYzY4NjRjZWM2N2FkZGUyOWIzMTJiYjgxMGViYTUzNzNiMTg4MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xNTEsMjAgKzE1
MSwxOSBAQCBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nJikK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBT
dHJpbmcmLCB0aW1lX3QmKQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9u
VGltZShjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIHdheSB0byBy
ZXRyaWV2ZSBmaWxlIGNyZWF0aW9uIHRpbWUgd2l0aCBHdGsgb24gcGxhdGZvcm1zIHRoYXQgc3Vw
cG9ydCBpdD8KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAotYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVf
dCYgbW9kaWZpZWRUaW1lKQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7
CiAgICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIG1vZGlmaWVkVGlt
ZSA9IHN0YXRSZXN1bHQuc3RfbXRpbWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1lKTsKIH0KIAogc3RhdGlj
IEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKEdTdGF0QnVmIHN0YXRSZXN1bHQp
CkBAIC0xODYsNyArMTg1LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBm
aWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICBib29sIGlz
SGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CiAKICAg
ICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0
UmVzdWx0LnN0X210aW1lKSwKKyAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRS
ZXN1bHQuc3RfbXRpbWUpLAogICAgICAgICBzdGF0UmVzdWx0LnN0X3NpemUsCiAgICAgICAgIGlz
SGlkZGVuLAogICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKHN0YXRSZXN1bHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZS5jcHAKaW5kZXggNmE1ZjEyZTg0ZDc0N2Q4NWMwOWUwNWZhMTQzMDkzZjQ4MTAwNmQzMS4uYjhk
MTMxMmFmZTVmZjFiNDIzNjViODJiZjIxNTAwOWZkNTRjODdkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNw
cApAQCAtMzQsMTEgKzM0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAg
OiBtX3BhdGgocGF0aCkKLSNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICAsIG1fcmVw
bGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZChmYWxzZSkKLSNlbmRpZgotICAgICwgbV9zaXplKDAp
Ci0gICAgLCBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZShGaWxlU3lzdGVtOjppbnZhbGlkRmls
ZVRpbWUoKSkKIHsKIH0KIApAQCAtNzMsMTUgKzY4LDE0IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUoKQogICAgIHJldHVybiBtX3NpemU7CiB9CiAKLWRv
dWJsZSBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCitz
dGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgLy8g
V2UgZG8gbm90IGN1cnJlbnRseSB0cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmls
ZXMsIGJlY2F1c2Ugd2UgaGF2ZSBhIHNuYXBzaG90LgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRo
aXMgaXMgaW5jb25zaXN0ZW50IHdpdGggcmVndWxhciBmaWxlIGhhbmRsaW5nIC0gRmlsZSBvYmpl
Y3RzIHNob3VsZCBiZSBpbnZhbGlkYXRlZCB3aGVuIHVuZGVybHlpbmcgZmlsZXMgY2hhbmdlLgog
ICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgfHwgIW1fcmVwbGFjZW1lbnRQ
YXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6aW52YWxpZEZpbGVUaW1l
KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKLQogICAgIHJldHVybiBt
X2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKaW5kZXggYTUzZjc3
NTUxMjU4YjQ4ZjNlYmI4YWE0NzAxOWI4ZTRlNDdkZmFmYi4uNDBkZWY2OWY2ZjhjN2JhOGNiNjQz
MDdlNWM5OWNkYTk0ZmQyZTgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCkBAIC0yNiw3ICsyNiw5IEBACiAj
aWZuZGVmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZV9oCiAjZGVmaW5lIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZV9oCiAKKyNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCw3ICs0Niw3IEBAIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIEJsb2JEYXRhRmlsZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEJsb2JEYXRhRmlsZVJlZmVyCiAKICAgICBjb25zdCBTdHJpbmcmIHBhdGgoKTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgc2l6ZSgpOwotICAgIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRmlsZUFjY2VzcygpOwogICAgIHZp
cnR1YWwgdm9pZCByZXZva2VGaWxlQWNjZXNzKCk7CkBAIC02MCwxMCArNjIsMTAgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8
QmxvYkRhdGFGaWxlUmVmZXIKICAgICBTdHJpbmcgbV9wYXRoOwogI2lmIEVOQUJMRShGSUxFX1JF
UExBQ0VNRU5UKQogICAgIFN0cmluZyBtX3JlcGxhY2VtZW50UGF0aDsKLSAgICBib29sIG1fcmVw
bGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZDsKKyAgICBib29sIG1fcmVwbGFjZW1lbnRTaG91bGRC
ZUdlbmVyYXRlZCB7IGZhbHNlIH07CiAjZW5kaWYKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9z
aXplOwotICAgIGRvdWJsZSBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZTsKKyAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgbV9zaXplIHsgMCB9OworICAgIE1hcmthYmxlPFdhbGxUaW1lLCBXYWxsVGlt
ZTo6TWFya2FibGVUcmFpdHM+IG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCA4ZGIz
ZGVjNmQ5NTQzMmY2OGYyM2M0MDI2OWNlMzQ1YjgyMjQ1NDE2Li40NWFlYmFlNTIwOWM5YjVkNTBm
MWYyMTQ1ZGE1NTNmOWU0NWVlOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcApAQCAtMTg2LDExICsxODYsMTEgQEAgdm9pZCBGb3JtRGF0YTo6YXBw
ZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogdm9pZCBGb3JtRGF0YTo6
YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmls
ZSkKIHsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAs
IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgp
LCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVs
ZW1lbnQoZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIHN0ZDo6bnVsbG9w
dCwgc2hvdWxkR2VuZXJhdGVGaWxlKSk7CiAgICAgbV9sZW5ndGhJbkJ5dGVzID0gc3RkOjpudWxs
b3B0OwogfQogCi12b2lkIEZvcm1EYXRhOjphcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0
ZWRNb2RpZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkKK3ZvaWQgRm9ybURh
dGE6OmFwcGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3Rh
cnQsIGxvbmcgbG9uZyBsZW5ndGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpCiB7CiAgICAgbV9lbGVtZW50
cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGZpbGVuYW1lLCBzdGFydCwgbGVuZ3RoLCBleHBlY3Rl
ZE1vZGlmaWNhdGlvblRpbWUsIHNob3VsZEdlbmVyYXRlRmlsZSkpOwogICAgIG1fbGVuZ3RoSW5C
eXRlcyA9IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaAppbmRleCBiYmFhZGUxODViNzlmNTRmOGMwNzA3NTM5NjMyMTY2MzQ2ZWMyZGVjLi41
OWY1NWY4MzM4YmRiZTVlMjQwZmM0NWUwNTQ4NWY1YzIzZmFiYWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBG
b3JtRGF0YUVsZW1lbnQgewogICAgICAgICA6IGRhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAgICAg
ZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KFZlY3RvcjxjaGFyPiYmIGFycmF5KQogICAgICAgICA6
IGRhdGEoV1RGTW92ZShhcnJheSkpIHsgfQotICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBpbnQ2NF90IGZpbGVTdGFydCwgaW50NjRfdCBmaWxlTGVuZ3RoLCBkb3Vi
bGUgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUp
CisgICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGludDY0X3QgZmls
ZVN0YXJ0LCBpbnQ2NF90IGZpbGVMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVj
dGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKQogICAgICAg
ICA6IGRhdGEoRW5jb2RlZEZpbGVEYXRhIHsgZmlsZW5hbWUsIGZpbGVTdGFydCwgZmlsZUxlbmd0
aCwgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgeyB9LCBzaG91bGRHZW5lcmF0ZUZpbGUs
IGZhbHNlIH0pIHsgfQogICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChjb25zdCBVUkwmIGJs
b2JVUkwpCiAgICAgICAgIDogZGF0YShFbmNvZGVkQmxvYkRhdGEgeyBibG9iVVJMIH0pIHsgfQpA
QCAtNzEsNyArNzEsNyBAQCBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICAgICAgU3RyaW5n
IGZpbGVuYW1lOwogICAgICAgICBpbnQ2NF90IGZpbGVTdGFydCB7IDAgfTsKICAgICAgICAgaW50
NjRfdCBmaWxlTGVuZ3RoIHsgMCB9OwotICAgICAgICBkb3VibGUgZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSB7IDAgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgU3RyaW5nIGdlbmVyYXRlZEZpbGVuYW1l
OwogICAgICAgICBib29sIHNob3VsZEdlbmVyYXRlRmlsZSB7IGZhbHNlIH07CiAgICAgICAgIGJv
b2wgb3duc0dlbmVyYXRlZEZpbGUgeyBmYWxzZSB9OwpAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVj
dCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICAgICAgaWYgKCFmaWxlTGVuZ3RoKQogICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOworICAg
ICAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPj4gZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZXhwZWN0ZWRGaWxl
TW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgICAgIGlmICghZXhwZWN0ZWRGaWxlTW9kaWZpY2F0
aW9uVGltZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjE4LDcg
KzIxOCw3IEBAIGNsYXNzIEZvcm1EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9ybURhdGE+IHsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QpOwogICAgIHZvaWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29s
IHNob3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxv
bmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hv
dWxkR2VuZXJhdGVGaWxlID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
RmlsZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGxlbmd0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25U
aW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiBibG9iVVJMKTsKIAogICAgIFZlY3RvcjxjaGFy
PiBmbGF0dGVuKCkgY29uc3Q7IC8vIG9taXRzIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAppbmRl
eCA0NWUzMWU1NDM3YWY4ZDlhNDEyNDk0ZDQyNmZkMmRjMzgwNTgyOTk0Li45ZTJkODgxZDYzNTQ5
MTUyNWQ3MWFmNDU2YzJkMTk1ZmQxM2I5NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAgLTE0
NSw5ICsxNDUsMTEgQEAgc3RhdGljIGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cmVh
bUZpZWxkcyogZm9ybSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9LCBbZm9y
bV0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewog
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvciBub3Qg
aWYgcmVxdWlyZWQuCi0gICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNWYWxpZEZpbGVUaW1l
KGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKSB7Ci0gICAgICAgICAgICAg
ICAgdGltZV90IGZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAgICAgICAgICAgIGlmICghRmls
ZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZURhdGEuZmlsZW5hbWUsIGZpbGVN
b2RpZmljYXRpb25UaW1lKSB8fCBmaWxlTW9kaWZpY2F0aW9uVGltZSAhPSBzdGF0aWNfY2FzdDx0
aW1lX3Q+KGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKQorICAgICAgICAg
ICAgaWYgKGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpIHsKKyAgICAgICAg
ICAgICAgICBhdXRvIGZpbGVNb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUoZmlsZURhdGEuZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIGlmICgh
ZmlsZU1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICBpZiAoZmlsZU1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVw
b2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSAhPSBmaWxlRGF0YS5leHBlY3RlZEZpbGVNb2RpZmlj
YXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyYgcGF0aCA9IGZpbGVEYXRhLnNob3VsZEdlbmVyYXRlRmlsZSA/IGZpbGVE
YXRhLmdlbmVyYXRlZEZpbGVuYW1lIDogZmlsZURhdGEuZmlsZW5hbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
U291cC5jcHAKaW5kZXggMjI5YzUzY2Y1NzIwMjc2ZTUyNWU5YTZmYjZmNzYyYjhmZjU4ZWUwNy4u
ZWM0OTAzZTQwMjdmNWEzNDkxYmQ4OTI2OTRhYzI0NTFkODE1ODVkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3RTb3VwLmNwcApAQCAtNDEsMTIgKzQxLDE0IEBAIHN0YXRpYyB1aW50NjRfdCBhcHBlbmRFbmNv
ZGVkQmxvYkl0ZW1Ub1NvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsCiAg
ICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChzb3VwTWVzc2FnZS0+cmVxdWVzdF9ib2R5
LCBTT1VQX01FTU9SWV9URU1QT1JBUlksIGJsb2JJdGVtLmRhdGEoKS5kYXRhKCktPmRhdGEoKSAr
IGJsb2JJdGVtLm9mZnNldCgpLCBibG9iSXRlbS5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBi
bG9iSXRlbS5sZW5ndGgoKTsKICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZTogewot
ICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShibG9iSXRlbS5maWxlKCkt
PmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpKSkKKyAgICAgICAgaWYgKCFibG9iSXRlbS5maWxl
KCktPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICAgICAgdGltZV90IGZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAgICBpZiAoIUZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpLCBm
aWxlTW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgIHx8IGZpbGVNb2RpZmljYXRpb25UaW1l
ICE9IHN0YXRpY19jYXN0PHRpbWVfdD4oYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUoKSkpCisgICAgICAgIGF1dG8gZmlsZU1vZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lz
dGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSk7Cisg
ICAgICAgIGlmICghZmlsZU1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgICAgICByZXR1cm4gMDsK
KworICAgICAgICBpZiAoZmlsZU1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCku
c2Vjb25kc0FzPHRpbWVfdD4oKSAhPSBibG9iSXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSgpLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoYmxvYkl0ZW0uZmls
ZSgpLT5wYXRoKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcAppbmRleCAxZTY4MjMxNzFkMmY1MmNjOTI0YjNjOTc4YjQzZjMwMmE4
NjFkMTJhLi44ZDI4NGMyNWZhMDEwNTc3ODZjNzNjMDU2YzI3Nzg0YzgwZjViN2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAg
LTIwMiw0MiArMjAyLDM5IEBAIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSwgbG9uZyBsb25nJiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0
RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQorc3Rk
OjpvcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAjaWYgT1MoREFSV0lOKSB8fCBPUyhPUEVOQlNEKSB8fCBPUyhORVRCU0QpIHx8IE9T
KEZSRUVCU0QpCiAgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKIAogICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAn
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKIAogICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwg
JmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgcmVzdWx0ID0gZmlsZUluZm8uc3RfYmlydGh0aW1lOwotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3Rf
YmlydGh0aW1lKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhdGgpOwotICAgIFVOVVNFRF9Q
QVJBTShyZXN1bHQpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogI2VuZGlmCiB9CiAKLWJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5n
JiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVN
b2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBDU3RyaW5nIGZzUmVw
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogCiAgICAgaWYgKCFmc1JlcC5kYXRh
KCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwog
CiAgICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXN1bHQgPSBmaWxl
SW5mby5zdF9tdGltZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKIH0KIAogc3RhdGljIEZpbGVNZXRhZGF0
YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQpAQCAtMjYzLDcg
KzI2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRh
VXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgU3RyaW5nIGZpbGVuYW1lID0g
cGF0aEdldEZpbGVOYW1lKHBhdGgpOwogICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNF
bXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKICAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsK
LSAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihmaWxlSW5mby5zdF9tdGltZSksCisgICAgICAg
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSksCiAgICAgICAgIGZp
bGVJbmZvLnN0X3NpemUsCiAgICAgICAgIGlzSGlkZGVuLAogICAgICAgICB0b0ZpbGVNZXRhdGFU
eXBlKGZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZp
bGVTeXN0ZW0uY3BwCmluZGV4IDllZjE4Njg3MDdlMDMwNzAzZjY5MDE5OWExMmM2NjYyNzQ3NTRi
NTIuLjViMTEwYThiZGU4MjM4ZWM5ZTE4OTlhZGEzMmQ5NDIyNWI3ZDc3ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKQEAgLTEwOCwx
NiArMTA4LDE0IEBAIGxvbmcgbG9uZyBTUUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVT
aXplKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmdldEZp
bGVTaXplKGZpbGVOYW1lLCBzaXplKSA/IHNpemUgOiAwOwogfQogCi1kb3VibGUgU1FMaXRlRmls
ZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKK3N0
ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlQ3JlYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7Ci0gICAgdGltZV90IHRpbWU7Ci0gICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVDcmVhdGlvblRpbWUoZmlsZU5hbWUsIHRpbWUpID8gdGlt
ZSA6IDA7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVDcmVhdGlvblRpbWUoZmlsZU5h
bWUpOwogfQogCi1kb3VibGUgU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBTUUxp
dGVGaWxlU3lzdGVtOjpkYXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSkKIHsKLSAgICB0aW1lX3QgdGltZTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6Z2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUoZmlsZU5hbWUsIHRpbWUpID8gdGltZSA6IDA7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVOYW1lKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVGaWxlU3lzdGVtLmgKaW5kZXggYzhhNGY5NDBlODE2OGU3MTQ3MDIzNDAxMWFiYjI4ZmUzNmYx
ZTA4Ny4uMTdiZmEwNjI4NzkwYmI5ODEyOTQwOTNlZWE1YTBjMGIzODZiODk0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCkBAIC05Nyw4ICs5
Nyw4IEBAIGNsYXNzIFNRTGl0ZUZpbGVTeXN0ZW0gewogI2VuZGlmCiAgICAgCiAgICAgc3RhdGlj
IGxvbmcgbG9uZyBnZXREYXRhYmFzZUZpbGVTaXplKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBkb3VibGUgZGF0YWJhc2VDcmVhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGRvdWJsZSBk
YXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRhdGFiYXNlQ3JlYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkYXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSk7CiAKIHByaXZhdGU6CiAgICAgLy8gZG8gbm90IGluc3RhbnRpYXRl
IHRoaXMgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxl
U3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcAppbmRleCA0OWZhMTQ0MTJhOTY1MjBmODM0ODZlZTcwY2RmNDUwMTk5NTNlMzRmLi5iMzA2
MjFmOTQzMGIyODFiMzQ1MjAyNjUzMmQ1YzMxMGZhYThkNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0xMjQsMjQgKzEyNCwyNiBAQCBi
b29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcm
IHNpemUpCiAgICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9u
U3RydWN0dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6ZSk7CiB9CiAKLWJvb2wgZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCitzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgp
CiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRh
KHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCisgICAgdGltZV90IHRpbWUgPSAwOwogICAgIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOwogfQogCi1ib29sIGdl
dEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCitzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwogICAgIGlmICghZ2V0RmluZERh
dGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKKyAgICB0aW1lX3QgdGltZSA9IDA7CiAgICAgZ2V0RmlsZUNyZWF0
aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7Ci0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKIH0KIAogc3RhdGljIFN0
cmluZyBnZXRGaW5hbFBhdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKQEAgLTE4NSw3ICsxODcs
NyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0
YWRhdGEoV0lOMzJfRklORF9EQVRBVyBmaW5kRAogICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1l
RnJvbUZpbmREYXRhKGZpbmREYXRhLCBtb2RpZmljYXRpb25UaW1lKTsKIAogICAgIHJldHVybiBG
aWxlTWV0YWRhdGEgewotICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1vZGlmaWNhdGlvblRp
bWUpLAorICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSks
CiAgICAgICAgIGxlbmd0aCwKICAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4oZmluZERhdGEuZHdG
aWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0hJRERFTiksCiAgICAgICAgIHRvRmlsZU1l
dGFkYXRhVHlwZShmaW5kRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
c3Npb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKaW5kZXgg
ZmU4MWE1ZDgwOTU1ZWNlNWQyYzYyNWY4OTY5NjJlYTllNmMzMzZiZC4uOTJhZmRjNTk4YTJiMzdm
OTExOTdhZGY4OTdjNjFjZjU5NDE2NWMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRl
LmgKQEAgLTY5LDcgKzY5LDcgQEAgc3RydWN0IEhUVFBCb2R5IHsKICAgICAgICAgU3RyaW5nIGZp
bGVQYXRoOwogICAgICAgICBpbnQ2NF90IGZpbGVTdGFydDsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxpbnQ2NF90PiBmaWxlTGVuZ3RoOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGlt
ZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKIAogICAgICAgICAvLyBCbG9iLgogICAg
ICAgICBTdHJpbmcgYmxvYlVSTFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY2ZmZlOTE5NGIwNDdlMWNmNWU2MDhhMjk3ZmFl
NTJmMjg4OTIzNDAuLjJjNjNjNmYwNmE0NWRkYjFmNjJmNjExYzMzNTNjNzI0YjI1MmU3NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MTYyMiwxMSArMTYyMiwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8RGF0YWJhc2VEZXRhaWxzPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERhdGFiYXNlRGV0YWlscyYgZAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoY3VycmVudFVzYWdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ZG91YmxlIGNyZWF0aW9uVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBjcmVhdGlv
blRpbWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjcmVhdGlvblRpbWUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRpb25UaW1lOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggMzkxZjg1ZTM3NWVmMjY1M2EwZTI0MTg5OWViMGZkMzU0MDc1NDE4ZC4u
ZWZhZWJmN2U2NmMzYjIyZDM0NTBhYzFiOWIyMTE5NDlhZDBmZDM0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXIuY3BwCkBAIC0xMDIsOSArMTAyLDkgQEAgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclIKIAogICAg
ICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7CiAgICAgICAgICAgICBpZiAob3JpZ2lu
RGV0YWlscy5jcmVhdGlvblRpbWUpCi0gICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9J
bXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3RyaW5n
KCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUuc2Vjb25k
c1NpbmNlRXBvY2goKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQo
dG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3Ry
aW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUtPnNl
Y29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOwogICAgICAgICAgICAgaWYgKG9yaWdpbkRldGFp
bHMubW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0lt
cGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpKS0+c3Ry
aW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5tb2RpZmljYXRpb25UaW1l
LnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIGRldGFpbHNN
YXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1l
S2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLm1vZGlm
aWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOwogCiAgICAgICAgICAg
ICByZXN1bHQudW5jaGVja2VkQXBwZW5kKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUo
ZGV0YWlsc01hcCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNwcAppbmRl
eCBjNzliNTY3ODczMmQyMDE0YzJlZTg1YTZiMmU3YmNkMjc1ZDAxNjQ0Li43ZWUwNDVkY2M1ODc2
Y2Y3YjhkMWM5YjYyN2Q5NDJmODVjNjAxN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNw
cApAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkZWNvZGVIVFRQQm9keShH
VmFyaWFudCogaHR0cEJvZHlWYXJpYW50LCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgIGlm
IChoYXNGaWxlTGVuZ3RoKQogICAgICAgICAgICAgZWxlbWVudC5maWxlTGVuZ3RoID0gZmlsZUxl
bmd0aDsKICAgICAgICAgaWYgKGhhc0ZpbGVNb2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAg
ZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lID0gZmlsZU1vZGlmaWNhdGlvblRp
bWU7CisgICAgICAgICAgICBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgPSBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZU1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICBl
bGVtZW50LmJsb2JVUkxTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGJsb2JVUkxTdHJpbmcpOwog
CiAgICAgICAgIGh0dHBCb2R5LmVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1l
bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1Bs
dWdpbkluZm9DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9Q
bHVnaW5JbmZvQ2FjaGUuY3BwCmluZGV4IGI5YjBjMmVhZTM2MGI0ZTAxZmY0NDQ0OGNiMjZiNDM5
NDhlOWM2Y2EuLjgwNjQ3ZWIxMmVlNTI1MTFhMTE5ZTg1ZmRlMmY1OWM0ZTIzNzc4ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5m
b0NhY2hlLmNwcApAQCAtMTEyLDExICsxMTIsMTEgQEAgYm9vbCBQbHVnaW5JbmZvQ2FjaGU6Omdl
dFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgog
ICAgIGlmICghZ19rZXlfZmlsZV9oYXNfZ3JvdXAobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdy
b3VwLmRhdGEoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRpbWVfdCBsYXN0TW9k
aWZpZWQ7Ci0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShwbHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpKQorICAgIGF1dG8gbGFzdE1vZGlmaWVkVGlt
ZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBh
dGgpOworICAgIGlmICghbGFzdE1vZGlmaWVkVGltZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHRpbWVfdCBjYWNoZWRMYXN0TW9kaWZpZWQgPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGdfa2V5
X2ZpbGVfZ2V0X3VpbnQ2NChtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAi
bXRpbWUiLCBudWxscHRyKSk7Ci0gICAgaWYgKGxhc3RNb2RpZmllZCAhPSBjYWNoZWRMYXN0TW9k
aWZpZWQpCisgICAgaWYgKGxhc3RNb2RpZmllZFRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vj
b25kc0FzPHRpbWVfdD4oKSAhPSBjYWNoZWRMYXN0TW9kaWZpZWQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKQEAgLTE0MCwxMiArMTQwLDEy
IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKIAogdm9pZCBQbHVnaW5JbmZvQ2FjaGU6OnVwZGF0
ZVBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBQbHVnaW5Nb2R1bGVJ
bmZvJiBwbHVnaW4pCiB7Ci0gICAgdGltZV90IGxhc3RNb2RpZmllZDsKLSAgICBpZiAoIVdlYkNv
cmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgsIGxhc3RN
b2RpZmllZCkpCisgICAgYXV0byBsYXN0TW9kaWZpZWRUaW1lID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCk7CisgICAgaWYgKCFsYXN0TW9k
aWZpZWRUaW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBDU3RyaW5nIHBsdWdpbkdyb3VwID0g
cGx1Z2luUGF0aC51dGY4KCk7Ci0gICAgZ19rZXlfZmlsZV9zZXRfdWludDY0KG1fY2FjaGVGaWxl
LmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCksICJtdGltZSIsIHN0YXRpY19jYXN0PGd1aW50NjQ+
KGxhc3RNb2RpZmllZCkpOworICAgIGdfa2V5X2ZpbGVfc2V0X3VpbnQ2NChtX2NhY2hlRmlsZS5n
ZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAibXRpbWUiLCBsYXN0TW9kaWZpZWRUaW1lLT5zZWNv
bmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczxndWludDY0PigpKTsKICAgICBnX2tleV9maWxlX3Nl
dF9zdHJpbmcobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSwgIm5hbWUiLCBw
bHVnaW4uaW5mby5uYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgIGdfa2V5X2ZpbGVfc2V0X3N0cmlu
ZyhtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAiZGVzY3JpcHRpb24iLCBw
bHVnaW4uaW5mby5kZXNjLnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlLmNwcAppbmRleCA2Zjg1ZDM2Zjk0N2FjMjE2NDUwZjc1YzA1MzU4NTY1Njg2Nzg0
YWZjLi43NzBlODM3ODU3MDYzMzcwYTQ3ZWRlMWMwZmQyNzQ3ZmVmYmNhZDE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTQ1LDExICs0NSwxMSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBib29sIGhhc0ZpbGVDaGFuZ2VkU2luY2UoY29uc3Qg
U3RyaW5nJiBwYXRoLCBXYWxsVGltZSBzaW5jZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIUZpbGVTeXN0
ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQorICAg
IGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25U
aW1lKHBhdGgpOworICAgIGlmICghbW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vZGlmaWNhdGlvblRp
bWUpID4gc2luY2U7CisgICAgcmV0dXJuIG1vZGlmaWNhdGlvblRpbWUudmFsdWUoKSA+IHNpbmNl
OwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gY3JlYXRlRGVjb2Rl
ckZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuY3BwCmluZGV4IDBhMGExNTYwYzU0ZTU3Y2UwMzYzYTgwNGQzMDdiZjBkNDFlZTIxYzguLmQx
OTQwNGQ1MDYxN2Y2MTQ1MTMyOTRhNmNkYjZiZGY1ODg4ZGQ2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTEwMiw4ICsxMDIsMTEgQEAgVmVjdG9yPFNlY3VyaXR5
T3JpZ2luRGF0YT4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZXNNb2RpZmll
ZFNpbmNlKFcKICAgICBmb3IgKGF1dG8gb3JpZ2luIDogZGF0YWJhc2VPcmlnaW5zKSB7CiAgICAg
ICAgIGF1dG8gcGF0aCA9IGRhdGFiYXNlUGF0aChvcmlnaW4pOwogICAgICAgICAKLSAgICAgICAg
YXV0byBtb2RpZmljYXRpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKFNRTGl0ZUZp
bGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShwYXRoKSk7Ci0gICAgICAgIGlmICht
b2RpZmljYXRpb25UaW1lID49IHRpbWUpCisgICAgICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9
IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsKKyAgICAg
ICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgaWYgKG1vZGlmaWNhdGlvblRpbWUudmFsdWUoKSA+PSB0aW1lKQogICAgICAgICAgICAgZGF0
YWJhc2VPcmlnaW5zTW9kaWZpZWQuYXBwZW5kKG9yaWdpbik7CiAgICAgfQogCkBAIC0xMzksOCAr
MTQyLDggQEAgVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWls
cz4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjoKIAogICAgICAgICBPcmlnaW5EZXRhaWxz
IGRldGFpbHM7CiAgICAgICAgIGRldGFpbHMub3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbi5kYXRh
YmFzZUlkZW50aWZpZXIoKTsKLSAgICAgICAgZGV0YWlscy5jcmVhdGlvblRpbWUgPSBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUo
cGF0aCkpOwotICAgICAgICBkZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUgPSBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKHBh
dGgpKTsKKyAgICAgICAgZGV0YWlscy5jcmVhdGlvblRpbWUgPSBTUUxpdGVGaWxlU3lzdGVtOjpk
YXRhYmFzZUNyZWF0aW9uVGltZShwYXRoKTsKKyAgICAgICAgZGV0YWlscy5tb2RpZmljYXRpb25U
aW1lID0gU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKHBhdGgpOwog
ICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGRldGFpbHMpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKaW5kZXggYTA0ZGY1YTU2YmFiY2IyYzY4M2U3MDAwYTlm
MmFkMTA4YzA2YTUwYS4uNDA4Mzg2OWM2YzBmNWMyMjczZTI0ODI4ZTdhMWE4MTVkYWVkMTEyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgpAQCAtNTcsOCArNTgsOCBAQCBjbGFzcyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9jYWxTdG9yYWdlRGF0YQogCiAg
ICAgc3RydWN0IE9yaWdpbkRldGFpbHMgewogICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmll
cjsKLSAgICAgICAgV2FsbFRpbWUgY3JlYXRpb25UaW1lOwotICAgICAgICBXYWxsVGltZSBtb2Rp
ZmljYXRpb25UaW1lOworICAgICAgICBNYXJrYWJsZTxXYWxsVGltZSwgV2FsbFRpbWU6Ok1hcmth
YmxlVHJhaXRzPiBjcmVhdGlvblRpbWU7CisgICAgICAgIE1hcmthYmxlPFdhbGxUaW1lLCBXYWxs
VGltZTo6TWFya2FibGVUcmFpdHM+IG1vZGlmaWNhdGlvblRpbWU7CiAgICAgfTsKICAgICBWZWN0
b3I8T3JpZ2luRGV0YWlscz4gb3JpZ2luRGV0YWlscygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4
IDVlZThkYmFlNDNmMDBkYTgxMDhkYzc2MWVjODZkYzk4MWRkYzE2ZDkuLmY0NGM0ZDY0YzM0YmM3
ZmE2YTBkNmVlNGQ3N2I0M2VjNWM4YzQ1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0yODMsNyAr
MjgzLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlRm9ybURhdGFFbGVtZW50KEhpc3RvcnlFbnRyeURh
dGFFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBIVFRQQm8KIAogICAgICAgICBlbmNvZGVyIDw8IGVs
ZW1lbnQuZmlsZVN0YXJ0OwogICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52
YWx1ZV9vcigtMSk7Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lLnZhbHVlX29yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRf
TmFOKCkpOworICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0
aW9uVGltZS52YWx1ZV9vcihXYWxsVGltZTo6bmFuKCkpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBl
OjpCbG9iOgpAQCAtODI1LDExICs4MjUsMTAgQEAgc3RhdGljIHZvaWQgZGVjb2RlRm9ybURhdGFF
bGVtZW50KEhpc3RvcnlFbnRyeURhdGFEZWNvZGVyJiBkZWNvZGVyLCBIVFRQQm9keTo6RWwKICAg
ICAgICAgICAgIGZvcm1EYXRhRWxlbWVudC5maWxlTGVuZ3RoID0gZmlsZUxlbmd0aDsKICAgICAg
ICAgfQogCi0KICAgICAgICAgZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAg
ICAgICAgIGRlY29kZXIgPj4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKLSAgICAgICAg
aWYgKGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgIT0gc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjpxdWlldF9OYU4oKSkKLSAgICAgICAgICAgIGZvcm1EYXRhRWxlbWVudC5leHBlY3Rl
ZEZpbGVNb2RpZmljYXRpb25UaW1lID0gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKKyAg
ICAgICAgaWYgKCFzdGQ6OmlzbmFuKGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKQorICAg
ICAgICAgICAgZm9ybURhdGFFbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgPSBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSk7CiAK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcApp
bmRleCA5MDNjNmQwMTJjMWRiMjg4ZmJhMjM4YjU3OGJkMDY1NjM0NDhkODE0Li40YmY0OGQwZTk0
ZWVmNzYwNjZjYTMwZWE5Y2YzNTcwNGFiM2RlYWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyLmNwcApAQCAtNzksNyArNzksNyBAQCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBX
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMoKQogICAgIHJldHVy
biByZXN1bHRzOwogfQogCi1zdGF0aWMgdm9pZCByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JP
cmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgZG91YmxlIHN0YXJ0RGF0ZSwgZG91
YmxlIGVuZERhdGUpCitzdGF0aWMgdm9pZCByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmln
aW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgV2FsbFRpbWUgc3RhcnREYXRlLCBXYWxs
VGltZSBlbmREYXRlKQogewogICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhS2V5UGF0aHMgPSBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7CiAKQEAgLTg5LDEwICs4OSwx
MCBAQCBzdGF0aWMgdm9pZCByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRoKGNv
bnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgZG91YgogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IHRpbWVfdCBtb2RUaW1lOwotICAgICAgICBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShtZWRpYUtleUZpbGUsIG1vZFRpbWUpOwotCi0gICAgICAgIGlmIChtb2RUaW1lIDwgc3Rh
cnREYXRlIHx8IG1vZFRpbWUgPiBlbmREYXRlKQorICAgICAgICBhdXRvIG1vZGlmaWNhdGlvblRp
bWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUpOwor
ICAgICAgICBpZiAoIW1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgaWYgKG1vZGlmaWNhdGlvblRpbWUudmFsdWUoKSA8IHN0YXJ0RGF0ZSB8fCBtb2RpZmlj
YXRpb25UaW1lLnZhbHVlKCkgPiBlbmREYXRlKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOwpAQCAtMTA4LDEwICsx
MDgsMTAgQEAgdm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVNZWRpYUtleUVu
dHJpZXNGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
U3RyaW5nIG9yaWdpblBhdGggPSBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlGb3JPcmlnaW4ob3Jp
Z2luRGF0YSk7Ci0gICAgcmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9yT3JpZ2luUGF0aChvcmln
aW5QYXRoLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKKyAgICByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VG
b3JPcmlnaW5QYXRoKG9yaWdpblBhdGgsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgV2FsbFRpbWU6
OmluZmluaXR5KCkpOwogfQogCi12b2lkIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmRlbGV0
ZU1lZGlhS2V5RW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKGRvdWJsZSBzdGFydERhdGUsIGRv
dWJsZSBlbmREYXRlKQordm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVNZWRp
YUtleUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhXYWxsVGltZSBzdGFydERhdGUsIFdhbGxU
aW1lIGVuZERhdGUpCiB7CiAgICAgaWYgKG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlQWxsTWVkaWFLZXlFbnRyaWVzKCkKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX21lZGlh
S2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKICAgICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBv
cmlnaW5QYXRocykKLSAgICAgICAgcmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9yT3JpZ2luUGF0
aChvcmlnaW5QYXRoLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKKyAgICAgICAgcmVtb3ZlQWxsTWVkaWFL
ZXlTdG9yYWdlRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCAtV2FsbFRpbWU6OmluZmluaXR5KCks
IFdhbGxUaW1lOjppbmZpbml0eSgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5oCmluZGV4IDExOWVjZTgzNGU0NGRjZTg5YTNiMzdjMTU3ZGUyOTNmOWIzZmY5NDIuLmNjMGJk
MTRjOTFkMGQ1MGNhNTM3YWYxYTExNTkxZmZhOThiNThkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyLmgKQEAgLTUwLDcgKzUwLDcgQEAgY2xhc3MgV2ViTWVkaWFLZXlTdG9yYWdlTWFu
YWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCB7CiAKICAgICBWZWN0b3I8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBnZXRNZWRpYUtleU9yaWdpbnMoKTsKICAgICB2b2lkIGRl
bGV0ZU1lZGlhS2V5RW50cmllc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmKTsKLSAgICB2b2lkIGRlbGV0ZU1lZGlhS2V5RW50cmllc01vZGlmaWVkQmV0d2VlbkRh
dGVzKGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlKTsKKyAgICB2b2lkIGRlbGV0ZU1l
ZGlhS2V5RW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKFdhbGxUaW1lIHN0YXJ0RGF0ZSwgV2Fs
bFRpbWUgZW5kRGF0ZSk7CiAgICAgdm9pZCBkZWxldGVBbGxNZWRpYUtleUVudHJpZXMoKTsKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA5Mjg3OTU3
NWI3MGNkMWVkMThkOTNlOGNlMDFiZDFkYTE0OTczZGYzLi5mMjgzYzcyODYzMGVkNGU0MjRkNmQw
YmRkNGUyODA2ZTI4MjM0ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3Bw
CkBAIC01MSw4ICs1MSw3IEBAIHN0YXRpYyBIVFRQQm9keSB0b0hUVFBCb2R5KGNvbnN0IEZvcm1E
YXRhJiBmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbGVTdGFydCA9IGZpbGVE
YXRhLmZpbGVTdGFydDsKICAgICAgICAgICAgICAgICBpZiAoZmlsZURhdGEuZmlsZUxlbmd0aCAh
PSBCbG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKQogICAgICAgICAgICAgICAgICAgICBlbGVtZW50
LmZpbGVMZW5ndGggPSBmaWxlRGF0YS5maWxlTGVuZ3RoOwotICAgICAgICAgICAgICAgIGlmIChm
aWxlRGF0YS5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lICE9IEZpbGVTeXN0ZW06OmludmFs
aWRGaWxlVGltZSgpKQotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmV4cGVjdGVkRmlsZU1v
ZGlmaWNhdGlvblRpbWUgPSBmaWxlRGF0YS5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9IGZp
bGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgICAgICAgICB9LCBbJl0g
KGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhJiBibG9iRGF0YSkgewogICAg
ICAgICAgICAgICAgIGVsZW1lbnQuYmxvYlVSTFN0cmluZyA9IGJsb2JEYXRhLnVybC5zdHJpbmco
KTsKICAgICAgICAgICAgIH0KQEAgLTEyOSw3ICsxMjgsNyBAQCBzdGF0aWMgUmVmPEZvcm1EYXRh
PiB0b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5JiBodHRwQm9keSkKICAgICAgICAgICAgIGJyZWFr
OwogCiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkZpbGU6Ci0gICAgICAg
ICAgICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBhdGgsIGVsZW1lbnQu
ZmlsZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVfb3IoQmxvYkRhdGFJdGVtOjp0b0Vu
ZE9mRmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZV9vcihG
aWxlU3lzdGVtOjppbnZhbGlkRmlsZVRpbWUoKSkpOworICAgICAgICAgICAgZm9ybURhdGEtPmFw
cGVuZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxlbWVu
dC5maWxlTGVuZ3RoLnZhbHVlX29yKEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpLCBlbGVtZW50
LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggOWNkY2Mx
NDViNzE5OTljZGE2OTg0MTRlNTJmZTIyYzM3YTg5N2I4NC4uNWMwNzcxMjExZWFlZDY0OTA3M2Ux
MDNlOTA0YTVlYzkwNDliNDYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
UGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTEyNSw5ICsxMjUsMTAgQEAgYm9vbCBQbHVn
aW5EYXRhYmFzZTo6cmVmcmVzaCgpCiAKICAgICBhdXRvIHBhdGhzRW5kID0gcGF0aHMuZW5kKCk7
CiAgICAgZm9yIChhdXRvIGl0ID0gcGF0aHMuYmVnaW4oKTsgaXQgIT0gcGF0aHNFbmQ7ICsraXQp
IHsKLSAgICAgICAgdGltZV90IGxhc3RNb2RpZmllZDsKLSAgICAgICAgaWYgKCFGaWxlU3lzdGVt
OjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgqaXQsIGxhc3RNb2RpZmllZCkpCisgICAgICAgIGF1
dG8gbGFzdE1vZGlmaWVkVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1l
KCppdCk7CisgICAgICAgIGlmICghbGFzdE1vZGlmaWVkVGltZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkID0gbGFzdE1vZGlmaWVkVGltZS0+c2Vj
b25kc1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpOwogCiAgICAgICAgIHBhdGhzV2l0
aFRpbWVzLmFkZCgqaXQsIGxhc3RNb2RpZmllZCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356376</attachid>
            <date>2018-12-03 04:30:16 -0800</date>
            <delta_ts>2018-12-03 09:38:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192287-20181203213015.patch</filename>
            <type>text/plain</type>
            <size>55605</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFhYzU2ZmY0YWMwMWFj
ZDE1MTk2NDI4YjY1MTYyMDU0ZjBiYjhiOS4uMzllMTE4ZDIyMmYyMzFiYTc1NjU3NTczYmYzZjQ0
NmYxYTk2Mzk2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDE4LTEyLTAzICBZdXN1
a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CisKKyAgICAgICAgVXNlIFdh
bGxUaW1lIGZvciBmaWxlIHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MjI4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBhIHR5cGUgb2YgZmlsZSB0aW1lIGZyb20g
ZG91YmxlIHRvIFdhbGxUaW1lIHRvIHVzZSBzdHJvbmdseSB0eXBlZCBmaWxlIHRpbWUuCisKKyAg
ICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6ZGV0YWlscyBjb25z
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFpbHMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6RGF0YWJhc2VEZXRhaWxzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6Y3JlYXRpb25UaW1lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlsczo6bW9kaWZpY2F0aW9uVGltZSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpQcm9wb3NlZERhdGFiYXNlOjpQcm9wb3NlZERh
dGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1lQW5k
T3JpZ2luKToKKyAgICAgICAgKiBmaWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBc3luY0ZpbGVTdHJlYW06OmdldFNpemUpOgorICAgICAgICAqIGZpbGVhcGkv
QXN5bmNGaWxlU3RyZWFtLmg6CisgICAgICAgICogZmlsZWFwaS9GaWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGU6Omxhc3RNb2RpZmllZCBjb25zdCk6CisgICAgICAgICogcGFnZS9QYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVzZXJTdHlsZVNoZWV0IGNvbnN0KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlTWV0YWRhdGEuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZp
bGVTdHJlYW06OmdldFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL0ZpbGVTdHJlYW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9GaWxlU3lzdGVtLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtOjppbnZhbGlk
RmlsZVRpbWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6aXNWYWxp
ZEZpbGVUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9nbGliL0ZpbGVTeXN0ZW1H
bGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVDcmVhdGlvblRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6ZmlsZU1ldGFkYXRhVXNpbmdGdW5j
dGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpCbG9iRGF0YUZp
bGVSZWZlcmVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpl
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kRmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6YXBwZW5kRmlsZVJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6
OkZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6OkVu
Y29kZWRGaWxlRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Zv
cm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWR2YW5jZUN1cnJlbnRT
dHJlYW0pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3RT
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGVuZEVuY29kZWRCbG9iSXRlbVRvU291cE1l
c3NhZ2VCb2R5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Z2V0RmlsZUNyZWF0aW9uVGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUpOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbi9GaWxlU3lzdGVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTeXN0ZW06
OmdldEZpbGVDcmVhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN5c3RlbTo6Zmlu
ZERhdGFUb0ZpbGVNZXRhZGF0YSk6CisKIDIwMTgtMTItMDIgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBydW50aW1lIGZlYXR1cmUgZmxhZyBmb3IgTGF5
b3V0Rm9ybWF0dGluZ0NvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZhYzNlNjJmNDVlMWIxNmI5N2I0MDU5
YTY1ZTM2ZTUyOWE3YmY2YTAuLjk5ZDU5NjFjZDI3NzM3MjhmYzk1ZWQxMjZhMjkxYzkzMzI3NmY5
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTgtMTItMDMgIFl1c3VrZSBTdXp1a2kg
IDx5dXN1a2VzdXp1a2lAc2xvd3N0YXJ0Lm9yZz4KKworICAgICAgICBVc2UgV2FsbFRpbWUgZm9y
IGZpbGUgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyMjg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBTaGFyZWQvU2Vzc2lvblN0YXRlLmg6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8RGF0YWJhc2VEZXRh
aWxzPjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3Jh
Z2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldFN0b3Jh
Z2VEZXRhaWxzQnlPcmlnaW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3U2Vzc2lvblN0YXRlLmNwcDoKKyAgICAgICAgKGRlY29kZUhUVFBCb2R5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5mb0NhY2hlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luSW5mb0NhY2hlOjp1cGRhdGVQbHVnaW5JbmZvKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6aGFzRmlsZUNoYW5nZWRTaW5jZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZXNNb2RpZmllZFNpbmNlKToKKyAg
ICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5EZXRhaWxz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGlu
Zy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmVuY29kZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAg
IChXZWJLaXQ6OmRlY29kZUZvcm1EYXRhRWxlbWVudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9N
ZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpyZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRoKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlTWVkaWFLZXlFbnRyaWVzRm9yT3Jp
Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRl
TWVkaWFLZXlFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVBbGxNZWRpYUtleUVudHJpZXMpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJz
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6dG9IVFRQQm9keSk6CisgICAgICAgIChXZWJLaXQ6
OnRvRm9ybURhdGEpOgorCiAyMDE4LTEyLTAyICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQWRkIGEgcnVudGltZSBmZWF0dXJlIGZsYWcgZm9yIExheW91dEZvcm1h
dHRpbmdDb250ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDNhNzdlN2YwNjgw
NGI3NjcwMTU5MTRhYmQ4ZmMzNDg1ODhlODYwYjYuLjU1NjQwNjE3ZTQ0MzZlMGUzZGJkZWI5ODAz
YjkwMGQ5NTIyNWRjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxOC0xMi0wMyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQu
b3JnPgorCisgICAgICAgIFVzZSBXYWxsVGltZSBmb3IgZmlsZSB0aW1lCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIyODcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvUGx1Z2luRGF0YWJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luRGF0YWJhc2U6OnJlZnJlc2gpOgorCiAy
MDE4LTExLTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRml4IFdpbmRvd3MgYnVpbGQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IGU5ZjI1MDFlZjg0YmRkODk4ZjM0MWM4YTQx
NWJkNjExOGU1MWI2NmEuLmVjOWIwNWY5ZTZlZWU0NjkzMjU3ZDNiOTkwZjAwYmQ2YjczY2Y1MGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
CkBAIC02MzgsNyArNjM4LDcgQEAgU3RyaW5nIERhdGFiYXNlOjpmaWxlTmFtZSgpIGNvbnN0CiBE
YXRhYmFzZURldGFpbHMgRGF0YWJhc2U6OmRldGFpbHMoKSBjb25zdAogewogICAgIC8vIFRoaXMg
Y29kZSBwYXRoIGlzIG9ubHkgdXNlZCBmb3IgZGF0YWJhc2UgcXVvdGEgZGVsZWdhdGUgY2FsbHMs
IHNvIGZpbGUgZGF0ZXMgYXJlIGlycmVsZXZhbnQgYW5kIGxlZnQgdW5pbml0aWFsaXplZC4KLSAg
ICByZXR1cm4gRGF0YWJhc2VEZXRhaWxzKHN0cmluZ0lkZW50aWZpZXIoKSwgZGlzcGxheU5hbWUo
KSwgZXN0aW1hdGVkU2l6ZSgpLCAwLCAwLCAwKTsKKyAgICByZXR1cm4gRGF0YWJhc2VEZXRhaWxz
KHN0cmluZ0lkZW50aWZpZXIoKSwgZGlzcGxheU5hbWUoKSwgZXN0aW1hdGVkU2l6ZSgpLCAwLCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiB9CiAKIHZvaWQgRGF0YWJhc2U6OmRpc2FibGVB
dXRob3JpemVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VEZXRhaWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlRGV0YWlscy5oCmluZGV4IDZhOTZlMjNmMDc1NWYwNWQzMDZhY2RjZjkxZDZiNWI1
YTI2ZDU4OTYuLjY3MDIxMDI0MGIyYTg2OGM2MjdlYjUxMGRlZmM3MmE4ODA0ZDk1MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VEZXRhaWxz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZURldGFp
bHMuaApAQCAtMjgsNyArMjgsOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPHd0Zi9N
YXJrYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvV2Fs
bFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtNjQsNyArNjYsNyBAQCBjbGFzcyBEYXRhYmFzZURldGFpbHMgewogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQogCi0gICAgRGF0YWJhc2VEZXRhaWxzKGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGxvbmcgZXhwZWN0ZWRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwgZG91
YmxlIGNyZWF0aW9uVGltZSwgZG91YmxlIG1vZGlmaWNhdGlvblRpbWUpCisgICAgRGF0YWJhc2VE
ZXRhaWxzKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgdW5zaWduZWQgbG9uZyBsb25n
IGN1cnJlbnRVc2FnZSwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lLCBzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRpb25UaW1lKQogICAgICAgICA6IG1fbmFtZShk
YXRhYmFzZU5hbWUpCiAgICAgICAgICwgbV9kaXNwbGF5TmFtZShkaXNwbGF5TmFtZSkKICAgICAg
ICAgLCBtX2V4cGVjdGVkVXNhZ2UoZXhwZWN0ZWRVc2FnZSkKQEAgLTc4LDggKzgwLDggQEAgY2xh
c3MgRGF0YWJhc2VEZXRhaWxzIHsKICAgICBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQogICAgIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2Uo
KSBjb25zdCB7IHJldHVybiBtX2V4cGVjdGVkVXNhZ2U7IH0KICAgICB1aW50NjRfdCBjdXJyZW50
VXNhZ2UoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRVc2FnZTsgfQotICAgIGRvdWJsZSBjcmVh
dGlvblRpbWUoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0aW9uVGltZTsgfQotICAgIGRvdWJsZSBt
b2RpZmljYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmljYXRpb25UaW1lOyB9Cisg
ICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gY3JlYXRpb25UaW1lKCkgY29uc3QgeyByZXR1cm4g
bV9jcmVhdGlvblRpbWU7IH0KKyAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRp
b25UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb2RpZmljYXRpb25UaW1lOyB9CiAjaWZuZGVmIE5E
RUJVRwogICAgIFRocmVhZCYgdGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7
IH0KICNlbmRpZgpAQCAtODksOCArOTEsOCBAQCBjbGFzcyBEYXRhYmFzZURldGFpbHMgewogICAg
IFN0cmluZyBtX2Rpc3BsYXlOYW1lOwogICAgIHVpbnQ2NF90IG1fZXhwZWN0ZWRVc2FnZSB7IDAg
fTsKICAgICB1aW50NjRfdCBtX2N1cnJlbnRVc2FnZSB7IDAgfTsKLSAgICBkb3VibGUgbV9jcmVh
dGlvblRpbWUgeyAwLjAgfTsKLSAgICBkb3VibGUgbV9tb2RpZmljYXRpb25UaW1lIHsgMC4wIH07
CisgICAgTWFya2FibGU8V2FsbFRpbWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cz4gbV9jcmVh
dGlvblRpbWU7CisgICAgTWFya2FibGU8V2FsbFRpbWUsIFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0
cz4gbV9tb2RpZmljYXRpb25UaW1lOwogI2lmbmRlZiBOREVCVUcKICAgICBSZWY8VGhyZWFkPiBt
X3RocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCBm
ZmI3ZTg2YTI4OTVmZjJkZDU2YjA4MDk4NWZhN2Q5MTZlZWNmOTYyLi4yM2MzYzMwMzRmZDZhYzgx
YjUxYTQyNzg2OWRiM2ZkZDc2ODJhZmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBA
IGNsYXNzIERhdGFiYXNlTWFuYWdlcjo6UHJvcG9zZWREYXRhYmFzZSB7CiBEYXRhYmFzZU1hbmFn
ZXI6OlByb3Bvc2VkRGF0YWJhc2U6OlByb3Bvc2VkRGF0YWJhc2UoRGF0YWJhc2VNYW5hZ2VyJiBt
YW5hZ2VyLCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkKICAgICA6
IG1fbWFuYWdlcihtYW5hZ2VyKQogICAgICwgbV9vcmlnaW4ob3JpZ2luLmlzb2xhdGVkQ29weSgp
KQotICAgICwgbV9kZXRhaWxzKG5hbWUuaXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xh
dGVkQ29weSgpLCBlc3RpbWF0ZWRTaXplLCAwLCAwLCAwKQorICAgICwgbV9kZXRhaWxzKG5hbWUu
aXNvbGF0ZWRDb3B5KCksIGRpc3BsYXlOYW1lLmlzb2xhdGVkQ29weSgpLCBlc3RpbWF0ZWRTaXpl
LCAwLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCkKIHsKICAgICBtX21hbmFnZXIuYWRkUHJv
cG9zZWREYXRhYmFzZSgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggMGQ5MTI5MTNhMDIzZDIz
N2MzYzgxNDVkZjA5MjRlNjM5Mzc3MWY0My4uOWY1YjVhZTE4YzczOTQ3ZGE5N2UzYjJkNmFkNDAx
ZDk2ZTBkNTRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtNDcyLDcgKzQ3Miw3IEBAIERhdGFiYXNlRGV0
YWlscyBEYXRhYmFzZVRyYWNrZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uCiAKICAgICBTdHJpbmcgcGF0aCA9IGZ1bGxQYXRoRm9yRGF0YWJhc2Uob3Jp
Z2luLCBuYW1lLCBmYWxzZSk7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gRGF0YWJhc2VEZXRhaWxzKG5hbWUsIGRpc3BsYXlOYW1lLCBleHBlY3RlZFVzYWdlLCAwLCAw
LCAwKTsKKyAgICAgICAgcmV0dXJuIERhdGFiYXNlRGV0YWlscyhuYW1lLCBkaXNwbGF5TmFtZSwg
ZXhwZWN0ZWRVc2FnZSwgMCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIHJldHVy
biBEYXRhYmFzZURldGFpbHMobmFtZSwgZGlzcGxheU5hbWUsIGV4cGVjdGVkVXNhZ2UsIFNRTGl0
ZUZpbGVTeXN0ZW06OmdldERhdGFiYXNlRmlsZVNpemUocGF0aCksIFNRTGl0ZUZpbGVTeXN0ZW06
OmRhdGFiYXNlQ3JlYXRpb25UaW1lKHBhdGgpLCBTUUxpdGVGaWxlU3lzdGVtOjpkYXRhYmFzZU1v
ZGlmaWNhdGlvblRpbWUocGF0aCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5j
RmlsZVN0cmVhbS5jcHAKaW5kZXggNzNhMzY1MjI4Nzk5YzE2YjlhOTg4ZDlhMTE4OWUwY2Y5Mzgw
ZmU5ZC4uMzI1ZTM0ZDBjNmI4ZTdjYzkzYWZkYjY0NDVmNTQ4ZjVmY2ViZWUzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBA
IHZvaWQgQXN5bmNGaWxlU3RyZWFtOjpwZXJmb3JtKFdURjo6RnVuY3Rpb248V1RGOjpGdW5jdGlv
bjx2b2lkKEZpbGVTdHJlYW1DbGllbnQmCiAgICAgfSk7CiB9CiAKLXZvaWQgQXN5bmNGaWxlU3Ry
ZWFtOjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSkKK3ZvaWQgQXN5bmNGaWxlU3RyZWFtOjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0
aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKQogewog
ICAgIC8vIEZJWE1FOiBFeHBsaWNpdCByZXR1cm4gdHlwZSBoZXJlIGFuZCBpbiBhbGwgdGhlIG90
aGVyIGNhc2VzIGxpa2UgdGhpcyBiZWxvdyBpcyBhIHdvcmthcm91bmQgZm9yIGEgZGVmaWNpZW5j
eQogICAgIC8vIGluIHRoZSBXaW5kb3dzIGNvbXBpbGVyIGF0IHRoZSB0aW1lIG9mIHRoaXMgd3Jp
dGluZy4gQ291bGQgcmVtb3ZlIGl0IGlmIHRoYXQgaXMgcmVzb2x2ZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uaAppbmRleCA2MmNhZmZlMmQ5OGFkMWQ1ZDEwZjRlZDY4
ODE3ZGE5MDQ5NGVhMTc4Li43YTkzMzdlMzNiZTJjOTNlNzkzMjY2ZTYxMWIxM2JjNGNlMzZlNDM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmgKQEAgLTMzLDYgKzMz
LDcgQEAKIAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNDQsNyArNDUsNyBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBBc3luY0ZpbGVTdHJlYW0gewog
ICAgIGV4cGxpY2l0IEFzeW5jRmlsZVN0cmVhbShGaWxlU3RyZWFtQ2xpZW50Jik7CiAgICAgfkFz
eW5jRmlsZVN0cmVhbSgpOwogCi0gICAgdm9pZCBnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwg
ZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7CisgICAgdm9pZCBnZXRTaXplKGNvbnN0
IFN0cmluZyYgcGF0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRp
b25UaW1lKTsKICAgICB2b2lkIG9wZW5Gb3JSZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBs
b25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZv
aWQgcmVhZChjaGFyKiBidWZmZXIsIGludCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9GaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAK
aW5kZXggZTdiMGQzZWM5MmY0OGUyYTVjOGU3NjE4ZjYxY2M5ODUwZThmZTkwMS4uMzg3ZDdmMDFm
YjBmYjE2MDM5ZTNkNjVhYTlmMDZkY2E5YzIzNzdjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9GaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGUuY3Bw
CkBAIC0xMTIsMTEgKzExMiwxMSBAQCBpbnQ2NF90IEZpbGU6Omxhc3RNb2RpZmllZCgpIGNvbnN0
CiAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBzeW5jLWkvbyBvbiB0aGUgbWFpbiB0aHJlYWQgYW5k
IGFsc28gcmVjYWxjdWxhdGVzIGV2ZXJ5IHRpbWUgdGhlIG1ldGhvZCBpcyBjYWxsZWQuCiAgICAg
Ly8gVGhlIGkvbyBzaG91bGQgYmUgcGVyZm9ybWVkIG9uIGEgYmFja2dyb3VuZCB0aHJlYWQsCiAg
ICAgLy8gYW5kIHRoZSByZXN1bHQgc2hvdWxkIGJlIGNhY2hlZCBhbG9uZyB3aXRoIGFuIGFzeW5j
aHJvbm91cyBtb25pdG9yIGZvciBjaGFuZ2VzIHRvIHRoZSBmaWxlLgotICAgIHRpbWVfdCBtb2Rp
ZmljYXRpb25UaW1lOwotICAgIGlmIChGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGlt
ZShtX3BhdGgsIG1vZGlmaWNhdGlvblRpbWUpICYmIEZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGlt
ZShtb2RpZmljYXRpb25UaW1lKSkKLSAgICAgICAgcmVzdWx0ID0gbW9kaWZpY2F0aW9uVGltZSAq
IG1zUGVyU2Vjb25kOworICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06Omdl
dEZpbGVNb2RpZmljYXRpb25UaW1lKG1fcGF0aCk7CisgICAgaWYgKG1vZGlmaWNhdGlvblRpbWUg
JiYgIXN0ZDo6aXNuYW4obW9kaWZpY2F0aW9uVGltZS52YWx1ZSgpKSkKKyAgICAgICAgcmVzdWx0
ID0gbW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBvY2goKS5taWxsaXNlY29uZHNBczxp
bnQ2NF90PigpOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gV2FsbFRpbWU6Om5vdygpLnNl
Y29uZHNTaW5jZUVwb2NoKCkubWlsbGlzZWNvbmRzKCk7CisgICAgICAgIHJlc3VsdCA9IFdhbGxU
aW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLm1pbGxpc2Vjb25kc0FzPGludDY0X3Q+KCk7
CiAKICAgICByZXR1cm4gV1RGOjp0aW1lQ2xpcChyZXN1bHQpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggYmQwMzQ3Zjc2ZDcyNWY4MzRkOTA2MzNmODMxNzgxOTY4M2JlZGI3ZS4uZmIwZmMzODlh
MDQ0ZjliMTc1MTMxMDJiMDljNjkxZGEyYmNmNzM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0x
MzQ3LDcgKzEzNDcsNyBAQCB2b2lkIFBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25DaGFuZ2Vk
KCkKIAogICAgIG1fZGlkTG9hZFVzZXJTdHlsZVNoZWV0ID0gZmFsc2U7CiAgICAgbV91c2VyU3R5
bGVTaGVldCA9IFN0cmluZygpOwotICAgIG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1l
ID0gMDsKKyAgICBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSA9IHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIERhdGEgVVJMcyB3aXRoIGJhc2U2NC1lbmNvZGVkIFVURi04IHN0eWxlIHNo
ZWV0cyBhcmUgY29tbW9uLiBXZSBjYW4gcHJvY2VzcyB0aGVtCiAgICAgLy8gc3luY2hyb25vdXNs
eSBhbmQgYXZvaWQgdXNpbmcgYSBsb2FkZXIuIApAQCAtMTM3MCw4ICsxMzcwLDggQEAgY29uc3Qg
U3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgpIGNvbnN0CiAgICAgaWYgKG1fdXNlclN0eWxl
U2hlZXRQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAK
LSAgICB0aW1lX3QgbW9kVGltZTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmlj
YXRpb25UaW1lKG1fdXNlclN0eWxlU2hlZXRQYXRoLCBtb2RUaW1lKSkgeworICAgIGF1dG8gbW9k
aWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKG1fdXNl
clN0eWxlU2hlZXRQYXRoKTsKKyAgICBpZiAoIW1vZGlmaWNhdGlvblRpbWUpIHsKICAgICAgICAg
Ly8gVGhlIHN0eWxlc2hlZXQgZWl0aGVyIGRvZXNuJ3QgZXhpc3QsIHdhcyBqdXN0IGRlbGV0ZWQs
IG9yIGlzCiAgICAgICAgIC8vIG90aGVyd2lzZSB1bnJlYWRhYmxlLiBJZiB3ZSd2ZSByZWFkIHRo
ZSBzdHlsZXNoZWV0IGJlZm9yZSwgd2Ugc2hvdWxkCiAgICAgICAgIC8vIHRocm93IGF3YXkgdGhh
dCBkYXRhIG5vdyBhcyBpdCBubyBsb25nZXIgcmVwcmVzZW50cyB3aGF0J3Mgb24gZGlzay4KQEAg
LTEzODEsMTIgKzEzODEsMTIgQEAgY29uc3QgU3RyaW5nJiBQYWdlOjp1c2VyU3R5bGVTaGVldCgp
IGNvbnN0CiAKICAgICAvLyBJZiB0aGUgc3R5bGVzaGVldCBoYXNuJ3QgY2hhbmdlZCBzaW5jZSB0
aGUgbGFzdCB0aW1lIHdlIHJlYWQgaXQsIHdlIGNhbgogICAgIC8vIGp1c3QgcmV0dXJuIHRoZSBv
bGQgZGF0YS4KLSAgICBpZiAobV9kaWRMb2FkVXNlclN0eWxlU2hlZXQgJiYgbW9kVGltZSA8PSBt
X3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSkKKyAgICBpZiAobV9kaWRMb2FkVXNlclN0
eWxlU2hlZXQgJiYgKG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lICYmIG1vZGlmaWNh
dGlvblRpbWUudmFsdWUoKSA8PSBtX3VzZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZS52YWx1
ZSgpKSkKICAgICAgICAgcmV0dXJuIG1fdXNlclN0eWxlU2hlZXQ7CiAKICAgICBtX2RpZExvYWRV
c2VyU3R5bGVTaGVldCA9IHRydWU7CiAgICAgbV91c2VyU3R5bGVTaGVldCA9IFN0cmluZygpOwot
ICAgIG1fdXNlclN0eWxlU2hlZXRNb2RpZmljYXRpb25UaW1lID0gbW9kVGltZTsKKyAgICBtX3Vz
ZXJTdHlsZVNoZWV0TW9kaWZpY2F0aW9uVGltZSA9IG1vZGlmaWNhdGlvblRpbWU7CiAKICAgICAv
LyBGSVhNRTogSXQgd291bGQgYmUgYmV0dGVyIHRvIGxvYWQgdGhpcyBhc3luY2hyb25vdXNseSB0
byBhdm9pZCBibG9ja2luZwogICAgIC8vIHRoZSBwcm9jZXNzLCBidXQgd2Ugd2lsbCBmaXJzdCBu
ZWVkIHRvIGNyZWF0ZSBhbiBhc3luY2hyb25vdXMgbG9hZGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA0
MTE0ODdmODM3NWVmYmU3OWQyOGFlMWQzMjQ0NzgzODkxZjU4MGMyLi5kNjU2ZjFlODNlZmZhMTRj
NThkNTcyYTE4YmJhZmJmNzE5N2QwZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtODExLDcgKzgxMSw3
IEBAIGNsYXNzIFBhZ2UgOiBwdWJsaWMgU3VwcGxlbWVudGFibGU8UGFnZT4gewogICAgIFN0cmlu
ZyBtX3VzZXJTdHlsZVNoZWV0UGF0aDsKICAgICBtdXRhYmxlIFN0cmluZyBtX3VzZXJTdHlsZVNo
ZWV0OwogICAgIG11dGFibGUgYm9vbCBtX2RpZExvYWRVc2VyU3R5bGVTaGVldCB7IGZhbHNlIH07
Ci0gICAgbXV0YWJsZSB0aW1lX3QgbV91c2VyU3R5bGVTaGVldE1vZGlmaWNhdGlvblRpbWUgeyAw
IH07CisgICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBtX3VzZXJTdHlsZVNoZWV0
TW9kaWZpY2F0aW9uVGltZTsKIAogICAgIFN0cmluZyBtX2NhcHRpb25Vc2VyUHJlZmVyZW5jZXNT
dHlsZVNoZWV0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlTWV0
YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRhZGF0YS5oCmluZGV4IDgx
NjRkNmRiOGEwOGRkNzIwMDgxOTVjYzE5Mjc3ZmI4MzA3YWIwMjYuLjdkODg0OTUzZTc2NzVkOTJj
MDYzOGRlY2FkODU3Y2Q0MWE1OWM1NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVNZXRhZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVNZXRh
ZGF0YS5oCkBAIC0zMCwxMSArMzAsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3
dGYvV2FsbFRpbWUuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgRmlsZU1ldGFk
YXRhIHsKICAgICAvLyBUaGUgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgZmlsZSwgaW4g
c2Vjb25kcy4KLSAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBXYWxsVGltZSBtb2Rp
ZmljYXRpb25UaW1lOwogCiAgICAgLy8gVGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBpbiBieXRlcy4K
ICAgICBsb25nIGxvbmcgbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNw
cAppbmRleCBhYjQ4YzA0YWNlY2EzOWQwYjc3NTUzZGNlNzVjYWRiNWQ0YjMzNWE0Li5hMjE5MGFh
ODRiYWY4NzU4NjllMTU3ZGMwMGVkZTBkZDY1NWU1NzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlU3RyZWFtLmNwcApAQCAtNDksMTQgKzQ5LDE0IEBAIEZpbGVTdHJlYW06On5GaWxlU3Ry
ZWFtKCkKICAgICBjbG9zZSgpOwogfQogCi1sb25nIGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShj
b25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCitsb25n
IGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6b3B0aW9u
YWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkKIHsKICAgICAvLyBDaGVjayB0
aGUgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZSBwb3NzaWJsZSBmaWxlIGNoYW5nZS4KLSAgICB0
aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIUZpbGVTeXN0ZW06OmdldEZpbGVNb2Rp
ZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQorICAgIGF1dG8gbW9kaWZpY2F0
aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgpOworICAg
IGlmICghbW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChGaWxl
U3lzdGVtOjppc1ZhbGlkRmlsZVRpbWUoZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKSkgewotICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8dGltZV90PihleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpICE9
IG1vZGlmaWNhdGlvblRpbWUpCisgICAgaWYgKGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkgewor
ICAgICAgICBpZiAoZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgp
LnNlY29uZHNBczx0aW1lX3Q+KCkgIT0gbW9kaWZpY2F0aW9uVGltZS0+c2Vjb25kc1NpbmNlRXBv
Y2goKS5zZWNvbmRzQXM8dGltZV90PigpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5oCmluZGV4IGIyYWEyODQ0NzlmN2IxMjI2
ZWJmN2FhYTliN2ZkY2FjMzBjMzM3NjEuLjdhNjgxYjQ5ZDUwZGUyMzIxNGFjZDIwY2E5ZWQ5Yzkx
N2UzM2YyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmgKQEAgLTQzLDcgKzQz
LDcgQEAgY2xhc3MgRmlsZVN0cmVhbSB7CiAKICAgICAvLyBHZXRzIHRoZSBzaXplIG9mIGEgZmls
ZS4gQWxzbyB2YWxpZGF0ZXMgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvciBub3QgaWYg
dGhlIGV4cGVjdGVkIG1vZGlmaWNhdGlvbiB0aW1lIGlzIHByb3ZpZGVkLCBpLmUuIG5vbi16ZXJv
LgogICAgIC8vIFJldHVybnMgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGlmIHN1Y2Nlc3NmdWwuIC0x
IG90aGVyd2lzZS4KLSAgICBsb25nIGxvbmcgZ2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRv
dWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOworICAgIGxvbmcgbG9uZyBnZXRTaXplKGNv
bnN0IFN0cmluZyYgcGF0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKTsKIAogICAgIC8vIE9wZW5zIGEgZmlsZSBmb3IgcmVhZGluZy4gVGhlIHJlYWRp
bmcgc3RhcnRzIGF0IHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGFuZCBsYXN0cyB0aWxsIHRoZSBzcGVj
aWZpZWQgbGVuZ3RoLgogICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiBGYWxzZSBvdGhl
cndpc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDJmZGIyNjBm
ODI5MzYyYmJjYWM2NTk3NjcwYjAzODgzMTlmZDI0NmEuLmE3Nzk5OGNjZjIwNzBlNGQxMjE5ZDQx
ZjEyY2Y5MjdjYmEwYTlkZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Zp
bGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3Bw
CkBAIC0zNjEsMTMgKzM2MSw1IEBAIGJvb2wgZmlsZUlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyBzaG91bGRGb2xsb3dTCiAgICAgcmV0dXJu
IG1ldGFkYXRhLnZhbHVlKCkudHlwZSA9PSBGaWxlTWV0YWRhdGE6OlR5cGU6OkRpcmVjdG9yeTsK
IH0KIAotc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIHRpbWVfdCBtb2RpZmljYXRpb25UaW1lID0gMDsKLSAg
ICBpZiAoIWdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQot
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJh
d1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEZpbGVTeXN0
ZW0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0u
aAppbmRleCBlMTQwYjI0NTdlMWFlNmFlOGFiZWYxZTJiNDE0NzBhODQ3MWVmODExLi44MDE4OTM1
YzM4NmEwZDk5OTgyMWNiY2FmMmQ5NWE0NzEwMGIzNTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
RmlsZVN5c3RlbS5oCkBAIC0xMDQsOSArMTA0LDggQEAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxl
dGVFbXB0eURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgbW92
ZUZpbGUoY29uc3QgU3RyaW5nJiBvbGRQYXRoLCBjb25zdCBTdHJpbmcmIG5ld1BhdGgpOwogV0VC
Q09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlU2l6ZShjb25zdCBTdHJpbmcmLCBsb25nIGxvbmcmIHJl
c3VsdCk7CiBXRUJDT1JFX0VYUE9SVCBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRs
ZSwgbG9uZyBsb25nJiByZXN1bHQpOwotV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRGaWxlTW9kaWZp
Y2F0aW9uVGltZShjb25zdCBTdHJpbmcmLCB0aW1lX3QmIHJlc3VsdCk7CiBXRUJDT1JFX0VYUE9S
VCBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBT
dHJpbmcmKTsKLVdFQkNPUkVfRVhQT1JUIGJvb2wgZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBT
dHJpbmcmLCB0aW1lX3QmIHJlc3VsdCk7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0b3JlIGZpbGUg
Y3JlYXRpb24gdGltZS4KK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGdl
dEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJik7IC8vIE5vdCBhbGwgcGxhdGZvcm1zIHN0
b3JlIGZpbGUgY3JlYXRpb24gdGltZS4KIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8Rmls
ZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBwYXRoKTsKIFdFQkNPUkVfRVhQ
T1JUIHN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBmaWxlTWV0YWRhdGFGb2xsb3dpbmdTeW1s
aW5rcyhjb25zdCBTdHJpbmcmIHBhdGgpOwogV0VCQ09SRV9FWFBPUlQgYm9vbCBmaWxlSXNEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJiwgU2hvdWxkRm9sbG93U3ltYm9saWNMaW5rcyk7CkBAIC0xMzMs
OSArMTMyLDYgQEAgU3RyaW5nIHN0cmluZ0Zyb21GaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29u
c3QgY2hhciopOwogCiBpbmxpbmUgYm9vbCBpc0hhbmRsZVZhbGlkKGNvbnN0IFBsYXRmb3JtRmls
ZUhhbmRsZSYgaGFuZGxlKSB7IHJldHVybiBoYW5kbGUgIT0gaW52YWxpZFBsYXRmb3JtRmlsZUhh
bmRsZTsgfQogCi1pbmxpbmUgZG91YmxlIGludmFsaWRGaWxlVGltZSgpIHsgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7IH0KLWlubGluZSBib29sIGlzVmFs
aWRGaWxlVGltZShkb3VibGUgdGltZSkgeyByZXR1cm4gc3RkOjppc2Zpbml0ZSh0aW1lKTsgfQot
CiAvLyBQcmVmaXggaXMgd2hhdCB0aGUgZmlsZW5hbWUgc2hvdWxkIGJlIHByZWZpeGVkIHdpdGgs
IG5vdCB0aGUgZnVsbCBwYXRoLgogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9wZW5UZW1wb3JhcnlG
aWxlKGNvbnN0IFN0cmluZyYgcHJlZml4LCBQbGF0Zm9ybUZpbGVIYW5kbGUmKTsKIFdFQkNPUkVf
RVhQT1JUIFBsYXRmb3JtRmlsZUhhbmRsZSBvcGVuRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIEZp
bGVPcGVuTW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0Zp
bGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwCmluZGV4IGY5NDA4MTVmNTEyNDgwMTVmNzNiMDA1MTc4MmRkNWI4MjU2NTg4YWYu
LjhmYzY4NjRjZWM2N2FkZGUyOWIzMTJiYjgxMGViYTUzNzNiMTg4MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwCkBAIC0xNTEsMjAgKzE1
MSwxOSBAQCBib29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSwgbG9uZyBsb25nJikK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBT
dHJpbmcmLCB0aW1lX3QmKQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9u
VGltZShjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIHdheSB0byBy
ZXRyaWV2ZSBmaWxlIGNyZWF0aW9uIHRpbWUgd2l0aCBHdGsgb24gcGxhdGZvcm1zIHRoYXQgc3Vw
cG9ydCBpdD8KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0K
IAotYm9vbCBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVf
dCYgbW9kaWZpZWRUaW1lKQorc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZU1vZGlmaWNh
dGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoKQogewogICAgIEdTdGF0QnVmIHN0YXRSZXN1bHQ7
CiAgICAgaWYgKCFnZXRGaWxlU3RhdChwYXRoLCAmc3RhdFJlc3VsdCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIG1vZGlmaWVkVGlt
ZSA9IHN0YXRSZXN1bHQuc3RfbXRpbWU7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIFdh
bGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhzdGF0UmVzdWx0LnN0X210aW1lKTsKIH0KIAogc3RhdGlj
IEZpbGVNZXRhZGF0YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKEdTdGF0QnVmIHN0YXRSZXN1bHQp
CkBAIC0xODYsNyArMTg1LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8RmlsZU1ldGFkYXRhPiBm
aWxlTWV0YWRhdGFVc2luZ0Z1bmN0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICBib29sIGlz
SGlkZGVuID0gIWZpbGVuYW1lLmlzRW1wdHkoKSAmJiBmaWxlbmFtZVswXSA9PSAnLic7CiAKICAg
ICByZXR1cm4gRmlsZU1ldGFkYXRhIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0
UmVzdWx0LnN0X210aW1lKSwKKyAgICAgICAgV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHN0YXRS
ZXN1bHQuc3RfbXRpbWUpLAogICAgICAgICBzdGF0UmVzdWx0LnN0X3NpemUsCiAgICAgICAgIGlz
SGlkZGVuLAogICAgICAgICB0b0ZpbGVNZXRhdGFUeXBlKHN0YXRSZXN1bHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5j
ZS5jcHAKaW5kZXggNmE1ZjEyZTg0ZDc0N2Q4NWMwOWUwNWZhMTQzMDkzZjQ4MTAwNmQzMS4uYjhk
MTMxMmFmZTVmZjFiNDIzNjViODJiZjIxNTAwOWZkNTRjODdkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNw
cApAQCAtMzQsMTEgKzM0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAg
OiBtX3BhdGgocGF0aCkKLSNpZiBFTkFCTEUoRklMRV9SRVBMQUNFTUVOVCkKLSAgICAsIG1fcmVw
bGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZChmYWxzZSkKLSNlbmRpZgotICAgICwgbV9zaXplKDAp
Ci0gICAgLCBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZShGaWxlU3lzdGVtOjppbnZhbGlkRmls
ZVRpbWUoKSkKIHsKIH0KIApAQCAtNzMsMTUgKzY4LDE0IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBC
bG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUoKQogICAgIHJldHVybiBtX3NpemU7CiB9CiAKLWRv
dWJsZSBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpCitz
dGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBCbG9iRGF0YUZpbGVSZWZlcmVuY2U6OmV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSgpCiB7CiAjaWYgRU5BQkxFKEZJTEVfUkVQTEFDRU1FTlQpCiAgICAgLy8g
V2UgZG8gbm90IGN1cnJlbnRseSB0cmFjayBtb2RpZmljYXRpb25zIGZvciBnZW5lcmF0ZWQgZmls
ZXMsIGJlY2F1c2Ugd2UgaGF2ZSBhIHNuYXBzaG90LgogICAgIC8vIFVuZm9ydHVuYXRlbHksIHRo
aXMgaXMgaW5jb25zaXN0ZW50IHdpdGggcmVndWxhciBmaWxlIGhhbmRsaW5nIC0gRmlsZSBvYmpl
Y3RzIHNob3VsZCBiZSBpbnZhbGlkYXRlZCB3aGVuIHVuZGVybHlpbmcgZmlsZXMgY2hhbmdlLgog
ICAgIGlmIChtX3JlcGxhY2VtZW50U2hvdWxkQmVHZW5lcmF0ZWQgfHwgIW1fcmVwbGFjZW1lbnRQ
YXRoLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gRmlsZVN5c3RlbTo6aW52YWxpZEZpbGVUaW1l
KCk7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAjZW5kaWYKLQogICAgIHJldHVybiBt
X2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmgKaW5kZXggYTUzZjc3
NTUxMjU4YjQ4ZjNlYmI4YWE0NzAxOWI4ZTRlNDdkZmFmYi4uNDBkZWY2OWY2ZjhjN2JhOGNiNjQz
MDdlNWM5OWNkYTk0ZmQyZTgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCkBAIC0yNiw3ICsyNiw5IEBACiAj
aWZuZGVmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZV9oCiAjZGVmaW5lIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZV9oCiAKKyNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCw3ICs0Niw3IEBAIGNsYXNz
IFdFQkNPUkVfRVhQT1JUIEJsb2JEYXRhRmlsZVJlZmVyZW5jZSA6IHB1YmxpYyBSZWZDb3VudGVk
PEJsb2JEYXRhRmlsZVJlZmVyCiAKICAgICBjb25zdCBTdHJpbmcmIHBhdGgoKTsKICAgICB1bnNp
Z25lZCBsb25nIGxvbmcgc2l6ZSgpOwotICAgIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBleHBlY3RlZE1vZGlmaWNhdGlvblRp
bWUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRmlsZUFjY2VzcygpOwogICAgIHZp
cnR1YWwgdm9pZCByZXZva2VGaWxlQWNjZXNzKCk7CkBAIC02MCwxMCArNjIsMTAgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgQmxvYkRhdGFGaWxlUmVmZXJlbmNlIDogcHVibGljIFJlZkNvdW50ZWQ8
QmxvYkRhdGFGaWxlUmVmZXIKICAgICBTdHJpbmcgbV9wYXRoOwogI2lmIEVOQUJMRShGSUxFX1JF
UExBQ0VNRU5UKQogICAgIFN0cmluZyBtX3JlcGxhY2VtZW50UGF0aDsKLSAgICBib29sIG1fcmVw
bGFjZW1lbnRTaG91bGRCZUdlbmVyYXRlZDsKKyAgICBib29sIG1fcmVwbGFjZW1lbnRTaG91bGRC
ZUdlbmVyYXRlZCB7IGZhbHNlIH07CiAjZW5kaWYKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9z
aXplOwotICAgIGRvdWJsZSBtX2V4cGVjdGVkTW9kaWZpY2F0aW9uVGltZTsKKyAgICB1bnNpZ25l
ZCBsb25nIGxvbmcgbV9zaXplIHsgMCB9OworICAgIE1hcmthYmxlPFdhbGxUaW1lLCBXYWxsVGlt
ZTo6TWFya2FibGVUcmFpdHM+IG1fZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lOwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCA4ZGIz
ZGVjNmQ5NTQzMmY2OGYyM2M0MDI2OWNlMzQ1YjgyMjQ1NDE2Li40NWFlYmFlNTIwOWM5YjVkNTBm
MWYyMTQ1ZGE1NTNmOWU0NWVlOWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcApAQCAtMTg2LDExICsxODYsMTEgQEAgdm9pZCBGb3JtRGF0YTo6YXBw
ZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogdm9pZCBGb3JtRGF0YTo6
YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmls
ZSkKIHsKLSAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZmlsZW5hbWUsIDAs
IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIEZpbGVTeXN0ZW06OmludmFsaWRGaWxlVGltZSgp
LCBzaG91bGRHZW5lcmF0ZUZpbGUpKTsKKyAgICBtX2VsZW1lbnRzLmFwcGVuZChGb3JtRGF0YUVs
ZW1lbnQoZmlsZW5hbWUsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUsIHN0ZDo6bnVsbG9w
dCwgc2hvdWxkR2VuZXJhdGVGaWxlKSk7CiAgICAgbV9sZW5ndGhJbkJ5dGVzID0gc3RkOjpudWxs
b3B0OwogfQogCi12b2lkIEZvcm1EYXRhOjphcHBlbmRGaWxlUmFuZ2UoY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0
ZWRNb2RpZmljYXRpb25UaW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSkKK3ZvaWQgRm9ybURh
dGE6OmFwcGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3Rh
cnQsIGxvbmcgbG9uZyBsZW5ndGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUpCiB7CiAgICAgbV9lbGVtZW50
cy5hcHBlbmQoRm9ybURhdGFFbGVtZW50KGZpbGVuYW1lLCBzdGFydCwgbGVuZ3RoLCBleHBlY3Rl
ZE1vZGlmaWNhdGlvblRpbWUsIHNob3VsZEdlbmVyYXRlRmlsZSkpOwogICAgIG1fbGVuZ3RoSW5C
eXRlcyA9IHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaAppbmRleCBiYmFhZGUxODViNzlmNTRmOGMwNzA3NTM5NjMyMTY2MzQ2ZWMyZGVjLi41
OWY1NWY4MzM4YmRiZTVlMjQwZmM0NWUwNTQ4NWY1YzIzZmFiYWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBG
b3JtRGF0YUVsZW1lbnQgewogICAgICAgICA6IGRhdGEoV1RGTW92ZShkYXRhKSkgeyB9CiAgICAg
ZXhwbGljaXQgRm9ybURhdGFFbGVtZW50KFZlY3RvcjxjaGFyPiYmIGFycmF5KQogICAgICAgICA6
IGRhdGEoV1RGTW92ZShhcnJheSkpIHsgfQotICAgIEZvcm1EYXRhRWxlbWVudChjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBpbnQ2NF90IGZpbGVTdGFydCwgaW50NjRfdCBmaWxlTGVuZ3RoLCBkb3Vi
bGUgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgYm9vbCBzaG91bGRHZW5lcmF0ZUZpbGUp
CisgICAgRm9ybURhdGFFbGVtZW50KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGludDY0X3QgZmls
ZVN0YXJ0LCBpbnQ2NF90IGZpbGVMZW5ndGgsIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGV4cGVj
dGVkRmlsZU1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hvdWxkR2VuZXJhdGVGaWxlKQogICAgICAg
ICA6IGRhdGEoRW5jb2RlZEZpbGVEYXRhIHsgZmlsZW5hbWUsIGZpbGVTdGFydCwgZmlsZUxlbmd0
aCwgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgeyB9LCBzaG91bGRHZW5lcmF0ZUZpbGUs
IGZhbHNlIH0pIHsgfQogICAgIGV4cGxpY2l0IEZvcm1EYXRhRWxlbWVudChjb25zdCBVUkwmIGJs
b2JVUkwpCiAgICAgICAgIDogZGF0YShFbmNvZGVkQmxvYkRhdGEgeyBibG9iVVJMIH0pIHsgfQpA
QCAtNzEsNyArNzEsNyBAQCBzdHJ1Y3QgRm9ybURhdGFFbGVtZW50IHsKICAgICAgICAgU3RyaW5n
IGZpbGVuYW1lOwogICAgICAgICBpbnQ2NF90IGZpbGVTdGFydCB7IDAgfTsKICAgICAgICAgaW50
NjRfdCBmaWxlTGVuZ3RoIHsgMCB9OwotICAgICAgICBkb3VibGUgZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSB7IDAgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0
ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgU3RyaW5nIGdlbmVyYXRlZEZpbGVuYW1l
OwogICAgICAgICBib29sIHNob3VsZEdlbmVyYXRlRmlsZSB7IGZhbHNlIH07CiAgICAgICAgIGJv
b2wgb3duc0dlbmVyYXRlZEZpbGUgeyBmYWxzZSB9OwpAQCAtMTE2LDcgKzExNiw3IEBAIHN0cnVj
dCBGb3JtRGF0YUVsZW1lbnQgewogICAgICAgICAgICAgaWYgKCFmaWxlTGVuZ3RoKQogICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBleHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOworICAg
ICAgICAgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPj4gZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgICAgIGRlY29kZXIgPj4gZXhwZWN0ZWRGaWxl
TW9kaWZpY2F0aW9uVGltZTsKICAgICAgICAgICAgIGlmICghZXhwZWN0ZWRGaWxlTW9kaWZpY2F0
aW9uVGltZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMjE4LDcg
KzIxOCw3IEBAIGNsYXNzIEZvcm1EYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Rm9ybURhdGE+IHsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3QpOwogICAgIHZvaWQgYXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29s
IHNob3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFw
cGVuZEZpbGVSYW5nZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBsb25nIGxvbmcgc3RhcnQsIGxv
bmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUsIGJvb2wgc2hv
dWxkR2VuZXJhdGVGaWxlID0gZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYXBwZW5k
RmlsZVJhbmdlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBs
b25nIGxlbmd0aCwgc3RkOjpvcHRpb25hbDxXYWxsVGltZT4gZXhwZWN0ZWRNb2RpZmljYXRpb25U
aW1lLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSA9IGZhbHNlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiBibG9iVVJMKTsKIAogICAgIFZlY3RvcjxjaGFy
PiBmbGF0dGVuKCkgY29uc3Q7IC8vIG9taXRzIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Gb3JtRGF0YVN0cmVhbUNGTmV0LmNwcAppbmRl
eCA0NWUzMWU1NDM3YWY4ZDlhNDEyNDk0ZDQyNmZkMmRjMzgwNTgyOTk0Li45ZTJkODgxZDYzNTQ5
MTUyNWQ3MWFmNDU2YzJkMTk1ZmQxM2I5NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Zvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAKQEAgLTE0
NSw5ICsxNDUsMTEgQEAgc3RhdGljIGJvb2wgYWR2YW5jZUN1cnJlbnRTdHJlYW0oRm9ybVN0cmVh
bUZpZWxkcyogZm9ybSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9LCBbZm9y
bV0gKGNvbnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEZpbGVEYXRhJiBmaWxlRGF0YSkgewog
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBvciBub3Qg
aWYgcmVxdWlyZWQuCi0gICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6aXNWYWxpZEZpbGVUaW1l
KGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKSB7Ci0gICAgICAgICAgICAg
ICAgdGltZV90IGZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAgICAgICAgICAgIGlmICghRmls
ZVN5c3RlbTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoZmlsZURhdGEuZmlsZW5hbWUsIGZpbGVN
b2RpZmljYXRpb25UaW1lKSB8fCBmaWxlTW9kaWZpY2F0aW9uVGltZSAhPSBzdGF0aWNfY2FzdDx0
aW1lX3Q+KGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKQorICAgICAgICAg
ICAgaWYgKGZpbGVEYXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpIHsKKyAgICAgICAg
ICAgICAgICBhdXRvIGZpbGVNb2RpZmljYXRpb25UaW1lID0gRmlsZVN5c3RlbTo6Z2V0RmlsZU1v
ZGlmaWNhdGlvblRpbWUoZmlsZURhdGEuZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIGlmICgh
ZmlsZU1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICBpZiAoZmlsZU1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVw
b2NoKCkuc2Vjb25kc0FzPHRpbWVfdD4oKSAhPSBmaWxlRGF0YS5leHBlY3RlZEZpbGVNb2RpZmlj
YXRpb25UaW1lLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyYgcGF0aCA9IGZpbGVEYXRhLnNob3VsZEdlbmVyYXRlRmlsZSA/IGZpbGVE
YXRhLmdlbmVyYXRlZEZpbGVuYW1lIDogZmlsZURhdGEuZmlsZW5hbWU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0
U291cC5jcHAKaW5kZXggMjI5YzUzY2Y1NzIwMjc2ZTUyNWU5YTZmYjZmNzYyYjhmZjU4ZWUwNy4u
ZWM0OTAzZTQwMjdmNWEzNDkxYmQ4OTI2OTRhYzI0NTFkODE1ODVkNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVl
c3RTb3VwLmNwcApAQCAtNDEsMTIgKzQxLDE0IEBAIHN0YXRpYyB1aW50NjRfdCBhcHBlbmRFbmNv
ZGVkQmxvYkl0ZW1Ub1NvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsCiAg
ICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5X2FwcGVuZChzb3VwTWVzc2FnZS0+cmVxdWVzdF9ib2R5
LCBTT1VQX01FTU9SWV9URU1QT1JBUlksIGJsb2JJdGVtLmRhdGEoKS5kYXRhKCktPmRhdGEoKSAr
IGJsb2JJdGVtLm9mZnNldCgpLCBibG9iSXRlbS5sZW5ndGgoKSk7CiAgICAgICAgIHJldHVybiBi
bG9iSXRlbS5sZW5ndGgoKTsKICAgICBjYXNlIEJsb2JEYXRhSXRlbTo6VHlwZTo6RmlsZTogewot
ICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmlzVmFsaWRGaWxlVGltZShibG9iSXRlbS5maWxlKCkt
PmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpKSkKKyAgICAgICAgaWYgKCFibG9iSXRlbS5maWxl
KCktPmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICAgICAgdGltZV90IGZpbGVNb2RpZmljYXRpb25UaW1lOwotICAgICAgICBpZiAoIUZpbGVT
eXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGJsb2JJdGVtLmZpbGUoKS0+cGF0aCgpLCBm
aWxlTW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgIHx8IGZpbGVNb2RpZmljYXRpb25UaW1l
ICE9IHN0YXRpY19jYXN0PHRpbWVfdD4oYmxvYkl0ZW0uZmlsZSgpLT5leHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUoKSkpCisgICAgICAgIGF1dG8gZmlsZU1vZGlmaWNhdGlvblRpbWUgPSBGaWxlU3lz
dGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShibG9iSXRlbS5maWxlKCktPnBhdGgoKSk7Cisg
ICAgICAgIGlmICghZmlsZU1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgICAgICByZXR1cm4gMDsK
KworICAgICAgICBpZiAoZmlsZU1vZGlmaWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCku
c2Vjb25kc0FzPHRpbWVfdD4oKSAhPSBibG9iSXRlbS5maWxlKCktPmV4cGVjdGVkTW9kaWZpY2F0
aW9uVGltZSgpLT5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczx0aW1lX3Q+KCkpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUoYmxvYkl0ZW0uZmls
ZSgpLT5wYXRoKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3Np
eC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcG9zaXgvRmls
ZVN5c3RlbVBPU0lYLmNwcAppbmRleCAxZTY4MjMxNzFkMmY1MmNjOTI0YjNjOTc4YjQzZjMwMmE4
NjFkMTJhLi44ZDI4NGMyNWZhMDEwNTc3ODZjNzNjMDU2YzI3Nzg0YzgwZjViN2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAg
LTIwMiw0MiArMjAyLDM5IEBAIGJvb2wgZ2V0RmlsZVNpemUoUGxhdGZvcm1GaWxlSGFuZGxlIGhh
bmRsZSwgbG9uZyBsb25nJiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0
RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgsIHRpbWVfdCYgcmVzdWx0KQorc3Rk
OjpvcHRpb25hbDxXYWxsVGltZT4gZ2V0RmlsZUNyZWF0aW9uVGltZShjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CiAjaWYgT1MoREFSV0lOKSB8fCBPUyhPUEVOQlNEKSB8fCBPUyhORVRCU0QpIHx8IE9T
KEZSRUVCU0QpCiAgICAgQ1N0cmluZyBmc1JlcCA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihw
YXRoKTsKIAogICAgIGlmICghZnNSZXAuZGF0YSgpIHx8IGZzUmVwLmRhdGEoKVswXSA9PSAnXDAn
KQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBzdHJ1Y3Qgc3RhdCBmaWxlSW5mbzsKIAogICAgIGlmIChzdGF0KGZzUmVwLmRhdGEoKSwg
JmZpbGVJbmZvKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgcmVzdWx0ID0gZmlsZUluZm8uc3RfYmlydGh0aW1lOwotICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZUluZm8uc3Rf
YmlydGh0aW1lKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHBhdGgpOwotICAgIFVOVVNFRF9Q
QVJBTShyZXN1bHQpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogI2VuZGlmCiB9CiAKLWJvb2wgZ2V0RmlsZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5n
JiBwYXRoLCB0aW1lX3QmIHJlc3VsdCkKK3N0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGdldEZpbGVN
b2RpZmljYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKICAgICBDU3RyaW5nIGZzUmVw
ID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOwogCiAgICAgaWYgKCFmc1JlcC5kYXRh
KCkgfHwgZnNSZXAuZGF0YSgpWzBdID09ICdcMCcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIHN0cnVjdCBzdGF0IGZpbGVJbmZvOwog
CiAgICAgaWYgKHN0YXQoZnNSZXAuZGF0YSgpLCAmZmlsZUluZm8pKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXN1bHQgPSBmaWxl
SW5mby5zdF9tdGltZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gV2FsbFRpbWU6OmZy
b21SYXdTZWNvbmRzKGZpbGVJbmZvLnN0X210aW1lKTsKIH0KIAogc3RhdGljIEZpbGVNZXRhZGF0
YTo6VHlwZSB0b0ZpbGVNZXRhdGFUeXBlKHN0cnVjdCBzdGF0IGZpbGVJbmZvKQpAQCAtMjYzLDcg
KzI2MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YT4gZmlsZU1ldGFkYXRh
VXNpbmdGdW5jdGlvbihjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgU3RyaW5nIGZpbGVuYW1lID0g
cGF0aEdldEZpbGVOYW1lKHBhdGgpOwogICAgIGJvb2wgaXNIaWRkZW4gPSAhZmlsZW5hbWUuaXNF
bXB0eSgpICYmIGZpbGVuYW1lWzBdID09ICcuJzsKICAgICByZXR1cm4gRmlsZU1ldGFkYXRhIHsK
LSAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihmaWxlSW5mby5zdF9tdGltZSksCisgICAgICAg
IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhmaWxlSW5mby5zdF9tdGltZSksCiAgICAgICAgIGZp
bGVJbmZvLnN0X3NpemUsCiAgICAgICAgIGlzSGlkZGVuLAogICAgICAgICB0b0ZpbGVNZXRhdGFU
eXBlKGZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZp
bGVTeXN0ZW0uY3BwCmluZGV4IDllZjE4Njg3MDdlMDMwNzAzZjY5MDE5OWExMmM2NjYyNzQ3NTRi
NTIuLjViMTEwYThiZGU4MjM4ZWM5ZTE4OTlhZGEzMmQ5NDIyNWI3ZDc3ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKQEAgLTEwOCwx
NiArMTA4LDE0IEBAIGxvbmcgbG9uZyBTUUxpdGVGaWxlU3lzdGVtOjpnZXREYXRhYmFzZUZpbGVT
aXplKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmdldEZp
bGVTaXplKGZpbGVOYW1lLCBzaXplKSA/IHNpemUgOiAwOwogfQogCi1kb3VibGUgU1FMaXRlRmls
ZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKK3N0
ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlQ3JlYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiB7Ci0gICAgdGltZV90IHRpbWU7Ci0gICAgcmV0
dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVDcmVhdGlvblRpbWUoZmlsZU5hbWUsIHRpbWUpID8gdGlt
ZSA6IDA7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OmdldEZpbGVDcmVhdGlvblRpbWUoZmlsZU5h
bWUpOwogfQogCi1kb3VibGUgU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25U
aW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCitzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBTUUxp
dGVGaWxlU3lzdGVtOjpkYXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSkKIHsKLSAgICB0aW1lX3QgdGltZTsKLSAgICByZXR1cm4gRmlsZVN5c3RlbTo6Z2V0Rmls
ZU1vZGlmaWNhdGlvblRpbWUoZmlsZU5hbWUsIHRpbWUpID8gdGltZSA6IDA7CisgICAgcmV0dXJu
IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKGZpbGVOYW1lKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVGaWxlU3lzdGVtLmgKaW5kZXggYzhhNGY5NDBlODE2OGU3MTQ3MDIzNDAxMWFiYjI4ZmUzNmYx
ZTA4Ny4uMTdiZmEwNjI4NzkwYmI5ODEyOTQwOTNlZWE1YTBjMGIzODZiODk0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCkBAIC05Nyw4ICs5
Nyw4IEBAIGNsYXNzIFNRTGl0ZUZpbGVTeXN0ZW0gewogI2VuZGlmCiAgICAgCiAgICAgc3RhdGlj
IGxvbmcgbG9uZyBnZXREYXRhYmFzZUZpbGVTaXplKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBkb3VibGUgZGF0YWJhc2VDcmVhdGlvblRpbWUoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGRvdWJsZSBk
YXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2FsbFRpbWU+IGRhdGFiYXNlQ3JlYXRp
b25UaW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBkYXRhYmFzZU1vZGlmaWNhdGlvblRpbWUoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSk7CiAKIHByaXZhdGU6CiAgICAgLy8gZG8gbm90IGluc3RhbnRpYXRl
IHRoaXMgY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxl
U3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcAppbmRleCA0OWZhMTQ0MTJhOTY1MjBmODM0ODZlZTcwY2RmNDUwMTk5NTNlMzRmLi5iMzA2
MjFmOTQzMGIyODFiMzQ1MjAyNjUzMmQ1YzMxMGZhYThkNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0xMjQsMjQgKzEyNCwyNiBAQCBi
b29sIGdldEZpbGVTaXplKFBsYXRmb3JtRmlsZUhhbmRsZSBmaWxlSGFuZGxlLCBsb25nIGxvbmcm
IHNpemUpCiAgICAgcmV0dXJuIGdldEZpbGVTaXplRnJvbUJ5SGFuZGxlRmlsZUluZm9ybWF0aW9u
U3RydWN0dXJlKGZpbGVJbmZvcm1hdGlvbiwgc2l6ZSk7CiB9CiAKLWJvb2wgZ2V0RmlsZU1vZGlm
aWNhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCitzdGQ6Om9wdGlv
bmFsPFdhbGxUaW1lPiBnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgp
CiB7CiAgICAgV0lOMzJfRklORF9EQVRBVyBmaW5kRGF0YTsKICAgICBpZiAoIWdldEZpbmREYXRh
KHBhdGgsIGZpbmREYXRhKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCisgICAgdGltZV90IHRpbWUgPSAwOwogICAgIGdldEZpbGVNb2RpZmlj
YXRpb25UaW1lRnJvbUZpbmREYXRhKGZpbmREYXRhLCB0aW1lKTsKLSAgICByZXR1cm4gdHJ1ZTsK
KyAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHRpbWUpOwogfQogCi1ib29sIGdl
dEZpbGVDcmVhdGlvblRpbWUoY29uc3QgU3RyaW5nJiBwYXRoLCB0aW1lX3QmIHRpbWUpCitzdGQ6
Om9wdGlvbmFsPFdhbGxUaW1lPiBnZXRGaWxlQ3JlYXRpb25UaW1lKGNvbnN0IFN0cmluZyYgcGF0
aCkKIHsKICAgICBXSU4zMl9GSU5EX0RBVEFXIGZpbmREYXRhOwogICAgIGlmICghZ2V0RmluZERh
dGEocGF0aCwgZmluZERhdGEpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKKyAgICB0aW1lX3QgdGltZSA9IDA7CiAgICAgZ2V0RmlsZUNyZWF0
aW9uVGltZUZyb21GaW5kRGF0YShmaW5kRGF0YSwgdGltZSk7Ci0gICAgcmV0dXJuIHRydWU7Cisg
ICAgcmV0dXJuIFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyh0aW1lKTsKIH0KIAogc3RhdGljIFN0
cmluZyBnZXRGaW5hbFBhdGhOYW1lKGNvbnN0IFN0cmluZyYgcGF0aCkKQEAgLTE4NSw3ICsxODcs
NyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+IGZpbmREYXRhVG9GaWxlTWV0
YWRhdGEoV0lOMzJfRklORF9EQVRBVyBmaW5kRAogICAgIGdldEZpbGVNb2RpZmljYXRpb25UaW1l
RnJvbUZpbmREYXRhKGZpbmREYXRhLCBtb2RpZmljYXRpb25UaW1lKTsKIAogICAgIHJldHVybiBG
aWxlTWV0YWRhdGEgewotICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1vZGlmaWNhdGlvblRp
bWUpLAorICAgICAgICBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMobW9kaWZpY2F0aW9uVGltZSks
CiAgICAgICAgIGxlbmd0aCwKICAgICAgICAgc3RhdGljX2Nhc3Q8Ym9vbD4oZmluZERhdGEuZHdG
aWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0hJRERFTiksCiAgICAgICAgIHRvRmlsZU1l
dGFkYXRhVHlwZShmaW5kRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nl
c3Npb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmgKaW5kZXgg
ZmU4MWE1ZDgwOTU1ZWNlNWQyYzYyNWY4OTY5NjJlYTllNmMzMzZiZC4uOTJhZmRjNTk4YTJiMzdm
OTExOTdhZGY4OTdjNjFjZjU5NDE2NWMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRl
LmgKQEAgLTY5LDcgKzY5LDcgQEAgc3RydWN0IEhUVFBCb2R5IHsKICAgICAgICAgU3RyaW5nIGZp
bGVQYXRoOwogICAgICAgICBpbnQ2NF90IGZpbGVTdGFydDsKICAgICAgICAgc3RkOjpvcHRpb25h
bDxpbnQ2NF90PiBmaWxlTGVuZ3RoOwotICAgICAgICBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZXhw
ZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxXYWxsVGlt
ZT4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKIAogICAgICAgICAvLyBCbG9iLgogICAg
ICAgICBTdHJpbmcgYmxvYlVSTFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDY2ZmZlOTE5NGIwNDdlMWNmNWU2MDhhMjk3ZmFl
NTJmMjg4OTIzNDAuLjJjNjNjNmYwNmE0NWRkYjFmNjJmNjExYzMzNTNjNzI0YjI1MmU3NzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAt
MTYyMiwxMSArMTYyMiwxMSBAQCBib29sIEFyZ3VtZW50Q29kZXI8RGF0YWJhc2VEZXRhaWxzPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIERhdGFiYXNlRGV0YWlscyYgZAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoY3VycmVudFVzYWdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
ZG91YmxlIGNyZWF0aW9uVGltZTsKKyAgICBzdGQ6Om9wdGlvbmFsPFdhbGxUaW1lPiBjcmVhdGlv
blRpbWU7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjcmVhdGlvblRpbWUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBkb3VibGUgbW9kaWZpY2F0aW9uVGltZTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFdhbGxUaW1lPiBtb2RpZmljYXRpb25UaW1lOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9yYWdlTWFu
YWdlci5jcHAKaW5kZXggMzkxZjg1ZTM3NWVmMjY1M2EwZTI0MTg5OWViMGZkMzU0MDc1NDE4ZC4u
ZWZhZWJmN2U2NmMzYjIyZDM0NTBhYzFiOWIyMTE5NDlhZDBmZDM0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0tleVZhbHVlU3RvcmFnZU1hbmFn
ZXIuY3BwCkBAIC0xMDIsOSArMTAyLDkgQEAgdm9pZCBXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJH
ZXRTdG9yYWdlRGV0YWlsc0J5T3JpZ2luKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlclIKIAogICAg
ICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdl
dE9yaWdpbktleSgpKS0+c3RyaW5nKCksIG9yaWdpbik7CiAgICAgICAgICAgICBpZiAob3JpZ2lu
RGV0YWlscy5jcmVhdGlvblRpbWUpCi0gICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQodG9J
bXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3RyaW5n
KCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUuc2Vjb25k
c1NpbmNlRXBvY2goKS52YWx1ZSgpKSk7CisgICAgICAgICAgICAgICAgZGV0YWlsc01hcC5zZXQo
dG9JbXBsKFdLS2V5VmFsdWVTdG9yYWdlTWFuYWdlckdldENyZWF0aW9uVGltZUtleSgpKS0+c3Ry
aW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5jcmVhdGlvblRpbWUtPnNl
Y29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOwogICAgICAgICAgICAgaWYgKG9yaWdpbkRldGFp
bHMubW9kaWZpY2F0aW9uVGltZSkKLSAgICAgICAgICAgICAgICBkZXRhaWxzTWFwLnNldCh0b0lt
cGwoV0tLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyR2V0TW9kaWZpY2F0aW9uVGltZUtleSgpKS0+c3Ry
aW5nKCksIEFQSTo6RG91YmxlOjpjcmVhdGUob3JpZ2luRGV0YWlscy5tb2RpZmljYXRpb25UaW1l
LnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOworICAgICAgICAgICAgICAgIGRldGFpbHNN
YXAuc2V0KHRvSW1wbChXS0tleVZhbHVlU3RvcmFnZU1hbmFnZXJHZXRNb2RpZmljYXRpb25UaW1l
S2V5KCkpLT5zdHJpbmcoKSwgQVBJOjpEb3VibGU6OmNyZWF0ZShvcmlnaW5EZXRhaWxzLm1vZGlm
aWNhdGlvblRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkpOwogCiAgICAgICAgICAg
ICByZXN1bHQudW5jaGVja2VkQXBwZW5kKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUo
ZGV0YWlsc01hcCkpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNwcAppbmRl
eCBjNzliNTY3ODczMmQyMDE0YzJlZTg1YTZiMmU3YmNkMjc1ZDAxNjQ0Li43ZWUwNDVkY2M1ODc2
Y2Y3YjhkMWM5YjYyN2Q5NDJmODVjNjAxN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlLmNw
cApAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkZWNvZGVIVFRQQm9keShH
VmFyaWFudCogaHR0cEJvZHlWYXJpYW50LCBIVFRQQm9keSYgaHR0cEJvZHkpCiAgICAgICAgIGlm
IChoYXNGaWxlTGVuZ3RoKQogICAgICAgICAgICAgZWxlbWVudC5maWxlTGVuZ3RoID0gZmlsZUxl
bmd0aDsKICAgICAgICAgaWYgKGhhc0ZpbGVNb2RpZmljYXRpb25UaW1lKQotICAgICAgICAgICAg
ZWxlbWVudC5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lID0gZmlsZU1vZGlmaWNhdGlvblRp
bWU7CisgICAgICAgICAgICBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgPSBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZmlsZU1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICBl
bGVtZW50LmJsb2JVUkxTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGJsb2JVUkxTdHJpbmcpOwog
CiAgICAgICAgIGh0dHBCb2R5LmVsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChXVEZNb3ZlKGVsZW1l
bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1Bs
dWdpbkluZm9DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL2d0ay9Q
bHVnaW5JbmZvQ2FjaGUuY3BwCmluZGV4IGI5YjBjMmVhZTM2MGI0ZTAxZmY0NDQ0OGNiMjZiNDM5
NDhlOWM2Y2EuLjgwNjQ3ZWIxMmVlNTI1MTFhMTE5ZTg1ZmRlMmY1OWM0ZTIzNzc4ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvZ3RrL1BsdWdpbkluZm9DYWNo
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9ndGsvUGx1Z2luSW5m
b0NhY2hlLmNwcApAQCAtMTEyLDExICsxMTIsMTEgQEAgYm9vbCBQbHVnaW5JbmZvQ2FjaGU6Omdl
dFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJgog
ICAgIGlmICghZ19rZXlfZmlsZV9oYXNfZ3JvdXAobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdy
b3VwLmRhdGEoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRpbWVfdCBsYXN0TW9k
aWZpZWQ7Ci0gICAgaWYgKCFXZWJDb3JlOjpGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShwbHVnaW5QYXRoLCBsYXN0TW9kaWZpZWQpKQorICAgIGF1dG8gbGFzdE1vZGlmaWVkVGlt
ZSA9IFdlYkNvcmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBh
dGgpOworICAgIGlmICghbGFzdE1vZGlmaWVkVGltZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHRpbWVfdCBjYWNoZWRMYXN0TW9kaWZpZWQgPSBzdGF0aWNfY2FzdDx0aW1lX3Q+KGdfa2V5
X2ZpbGVfZ2V0X3VpbnQ2NChtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAi
bXRpbWUiLCBudWxscHRyKSk7Ci0gICAgaWYgKGxhc3RNb2RpZmllZCAhPSBjYWNoZWRMYXN0TW9k
aWZpZWQpCisgICAgaWYgKGxhc3RNb2RpZmllZFRpbWUtPnNlY29uZHNTaW5jZUVwb2NoKCkuc2Vj
b25kc0FzPHRpbWVfdD4oKSAhPSBjYWNoZWRMYXN0TW9kaWZpZWQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKQEAgLTE0MCwxMiArMTQwLDEy
IEBAIGJvb2wgUGx1Z2luSW5mb0NhY2hlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1
Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYKIAogdm9pZCBQbHVnaW5JbmZvQ2FjaGU6OnVwZGF0
ZVBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBQbHVnaW5Nb2R1bGVJ
bmZvJiBwbHVnaW4pCiB7Ci0gICAgdGltZV90IGxhc3RNb2RpZmllZDsKLSAgICBpZiAoIVdlYkNv
cmU6OkZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBsdWdpblBhdGgsIGxhc3RN
b2RpZmllZCkpCisgICAgYXV0byBsYXN0TW9kaWZpZWRUaW1lID0gV2ViQ29yZTo6RmlsZVN5c3Rl
bTo6Z2V0RmlsZU1vZGlmaWNhdGlvblRpbWUocGx1Z2luUGF0aCk7CisgICAgaWYgKCFsYXN0TW9k
aWZpZWRUaW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBDU3RyaW5nIHBsdWdpbkdyb3VwID0g
cGx1Z2luUGF0aC51dGY4KCk7Ci0gICAgZ19rZXlfZmlsZV9zZXRfdWludDY0KG1fY2FjaGVGaWxl
LmdldCgpLCBwbHVnaW5Hcm91cC5kYXRhKCksICJtdGltZSIsIHN0YXRpY19jYXN0PGd1aW50NjQ+
KGxhc3RNb2RpZmllZCkpOworICAgIGdfa2V5X2ZpbGVfc2V0X3VpbnQ2NChtX2NhY2hlRmlsZS5n
ZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAibXRpbWUiLCBsYXN0TW9kaWZpZWRUaW1lLT5zZWNv
bmRzU2luY2VFcG9jaCgpLnNlY29uZHNBczxndWludDY0PigpKTsKICAgICBnX2tleV9maWxlX3Nl
dF9zdHJpbmcobV9jYWNoZUZpbGUuZ2V0KCksIHBsdWdpbkdyb3VwLmRhdGEoKSwgIm5hbWUiLCBw
bHVnaW4uaW5mby5uYW1lLnV0ZjgoKS5kYXRhKCkpOwogICAgIGdfa2V5X2ZpbGVfc2V0X3N0cmlu
ZyhtX2NhY2hlRmlsZS5nZXQoKSwgcGx1Z2luR3JvdXAuZGF0YSgpLCAiZGVzY3JpcHRpb24iLCBw
bHVnaW4uaW5mby5kZXNjLnV0ZjgoKS5kYXRhKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlLmNwcAppbmRleCA2Zjg1ZDM2Zjk0N2FjMjE2NDUwZjc1YzA1MzU4NTY1Njg2Nzg0
YWZjLi43NzBlODM3ODU3MDYzMzcwYTQ3ZWRlMWMwZmQyNzQ3ZmVmYmNhZDE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKQEAgLTQ1LDExICs0NSwxMSBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIHN0YXRpYyBib29sIGhhc0ZpbGVDaGFuZ2VkU2luY2UoY29uc3Qg
U3RyaW5nJiBwYXRoLCBXYWxsVGltZSBzaW5jZSkKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAoIUZpbGVTeXN0
ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQorICAg
IGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25U
aW1lKHBhdGgpOworICAgIGlmICghbW9kaWZpY2F0aW9uVGltZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICByZXR1cm4gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKG1vZGlmaWNhdGlvblRp
bWUpID4gc2luY2U7CisgICAgcmV0dXJuIG1vZGlmaWNhdGlvblRpbWUudmFsdWUoKSA+IHNpbmNl
OwogfQogCiBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gY3JlYXRlRGVjb2Rl
ckZvckZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXIuY3BwCmluZGV4IDBhMGExNTYwYzU0ZTU3Y2UwMzYzYTgwNGQzMDdiZjBkNDFlZTIxYzguLmQx
OTQwNGQ1MDYxN2Y2MTQ1MTMyOTRhNmNkYjZiZGY1ODg4ZGQ2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTEwMiw4ICsxMDIsMTEgQEAgVmVjdG9yPFNlY3VyaXR5
T3JpZ2luRGF0YT4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkYXRhYmFzZXNNb2RpZmll
ZFNpbmNlKFcKICAgICBmb3IgKGF1dG8gb3JpZ2luIDogZGF0YWJhc2VPcmlnaW5zKSB7CiAgICAg
ICAgIGF1dG8gcGF0aCA9IGRhdGFiYXNlUGF0aChvcmlnaW4pOwogICAgICAgICAKLSAgICAgICAg
YXV0byBtb2RpZmljYXRpb25UaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKFNRTGl0ZUZp
bGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShwYXRoKSk7Ci0gICAgICAgIGlmICht
b2RpZmljYXRpb25UaW1lID49IHRpbWUpCisgICAgICAgIGF1dG8gbW9kaWZpY2F0aW9uVGltZSA9
IFNRTGl0ZUZpbGVTeXN0ZW06OmRhdGFiYXNlTW9kaWZpY2F0aW9uVGltZShwYXRoKTsKKyAgICAg
ICAgaWYgKCFtb2RpZmljYXRpb25UaW1lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgaWYgKG1vZGlmaWNhdGlvblRpbWUudmFsdWUoKSA+PSB0aW1lKQogICAgICAgICAgICAgZGF0
YWJhc2VPcmlnaW5zTW9kaWZpZWQuYXBwZW5kKG9yaWdpbik7CiAgICAgfQogCkBAIC0xMzksOCAr
MTQyLDggQEAgVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWls
cz4gTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjoKIAogICAgICAgICBPcmlnaW5EZXRhaWxz
IGRldGFpbHM7CiAgICAgICAgIGRldGFpbHMub3JpZ2luSWRlbnRpZmllciA9IG9yaWdpbi5kYXRh
YmFzZUlkZW50aWZpZXIoKTsKLSAgICAgICAgZGV0YWlscy5jcmVhdGlvblRpbWUgPSBXYWxsVGlt
ZTo6ZnJvbVJhd1NlY29uZHMoU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VDcmVhdGlvblRpbWUo
cGF0aCkpOwotICAgICAgICBkZXRhaWxzLm1vZGlmaWNhdGlvblRpbWUgPSBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMoU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKHBh
dGgpKTsKKyAgICAgICAgZGV0YWlscy5jcmVhdGlvblRpbWUgPSBTUUxpdGVGaWxlU3lzdGVtOjpk
YXRhYmFzZUNyZWF0aW9uVGltZShwYXRoKTsKKyAgICAgICAgZGV0YWlscy5tb2RpZmljYXRpb25U
aW1lID0gU1FMaXRlRmlsZVN5c3RlbTo6ZGF0YWJhc2VNb2RpZmljYXRpb25UaW1lKHBhdGgpOwog
ICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGRldGFpbHMpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRh
YmFzZVRyYWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLmgKaW5kZXggYTA0ZGY1YTU2YmFiY2IyYzY4M2U3MDAwYTlm
MmFkMTA4YzA2YTUwYS4uNDA4Mzg2OWM2YzBmNWMyMjczZTI0ODI4ZTdhMWE4MTVkYWVkMTEyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJTdG9y
YWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFs
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVm
Q291bnRlZC5oPgpAQCAtNTcsOCArNTgsOCBAQCBjbGFzcyBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8TG9jYWxTdG9yYWdlRGF0YQogCiAg
ICAgc3RydWN0IE9yaWdpbkRldGFpbHMgewogICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmll
cjsKLSAgICAgICAgV2FsbFRpbWUgY3JlYXRpb25UaW1lOwotICAgICAgICBXYWxsVGltZSBtb2Rp
ZmljYXRpb25UaW1lOworICAgICAgICBNYXJrYWJsZTxXYWxsVGltZSwgV2FsbFRpbWU6Ok1hcmth
YmxlVHJhaXRzPiBjcmVhdGlvblRpbWU7CisgICAgICAgIE1hcmthYmxlPFdhbGxUaW1lLCBXYWxs
VGltZTo6TWFya2FibGVUcmFpdHM+IG1vZGlmaWNhdGlvblRpbWU7CiAgICAgfTsKICAgICBWZWN0
b3I8T3JpZ2luRGV0YWlscz4gb3JpZ2luRGV0YWlscygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCmluZGV4
IDVlZThkYmFlNDNmMDBkYTgxMDhkYzc2MWVjODZkYzk4MWRkYzE2ZDkuLmY0NGM0ZDY0YzM0YmM3
ZmE2YTBkNmVlNGQ3N2I0M2VjNWM4YzQ1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuY3BwCkBAIC0yODMsNyAr
MjgzLDcgQEAgc3RhdGljIHZvaWQgZW5jb2RlRm9ybURhdGFFbGVtZW50KEhpc3RvcnlFbnRyeURh
dGFFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBIVFRQQm8KIAogICAgICAgICBlbmNvZGVyIDw8IGVs
ZW1lbnQuZmlsZVN0YXJ0OwogICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZmlsZUxlbmd0aC52
YWx1ZV9vcigtMSk7Ci0gICAgICAgIGVuY29kZXIgPDwgZWxlbWVudC5leHBlY3RlZEZpbGVNb2Rp
ZmljYXRpb25UaW1lLnZhbHVlX29yKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRf
TmFOKCkpOworICAgICAgICBlbmNvZGVyIDw8IGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0
aW9uVGltZS52YWx1ZV9vcihXYWxsVGltZTo6bmFuKCkpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFs
dWUoKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEhUVFBCb2R5OjpFbGVtZW50OjpUeXBl
OjpCbG9iOgpAQCAtODI1LDExICs4MjUsMTAgQEAgc3RhdGljIHZvaWQgZGVjb2RlRm9ybURhdGFF
bGVtZW50KEhpc3RvcnlFbnRyeURhdGFEZWNvZGVyJiBkZWNvZGVyLCBIVFRQQm9keTo6RWwKICAg
ICAgICAgICAgIGZvcm1EYXRhRWxlbWVudC5maWxlTGVuZ3RoID0gZmlsZUxlbmd0aDsKICAgICAg
ICAgfQogCi0KICAgICAgICAgZG91YmxlIGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAg
ICAgICAgIGRlY29kZXIgPj4gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKLSAgICAgICAg
aWYgKGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgIT0gc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjpxdWlldF9OYU4oKSkKLSAgICAgICAgICAgIGZvcm1EYXRhRWxlbWVudC5leHBlY3Rl
ZEZpbGVNb2RpZmljYXRpb25UaW1lID0gZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZTsKKyAg
ICAgICAgaWYgKCFzdGQ6OmlzbmFuKGV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpKQorICAg
ICAgICAgICAgZm9ybURhdGFFbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUgPSBX
YWxsVGltZTo6ZnJvbVJhd1NlY29uZHMoZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSk7CiAK
ICAgICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcApp
bmRleCA5MDNjNmQwMTJjMWRiMjg4ZmJhMjM4YjU3OGJkMDY1NjM0NDhkODE0Li40YmY0OGQwZTk0
ZWVmNzYwNjZjYTMwZWE5Y2YzNTcwNGFiM2RlYWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3JhZ2VN
YW5hZ2VyLmNwcApAQCAtNzksNyArNzksNyBAQCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBX
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpnZXRNZWRpYUtleU9yaWdpbnMoKQogICAgIHJldHVy
biByZXN1bHRzOwogfQogCi1zdGF0aWMgdm9pZCByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JP
cmlnaW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgZG91YmxlIHN0YXJ0RGF0ZSwgZG91
YmxlIGVuZERhdGUpCitzdGF0aWMgdm9pZCByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmln
aW5QYXRoKGNvbnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgV2FsbFRpbWUgc3RhcnREYXRlLCBXYWxs
VGltZSBlbmREYXRlKQogewogICAgIFZlY3RvcjxTdHJpbmc+IG1lZGlhS2V5UGF0aHMgPSBGaWxl
U3lzdGVtOjpsaXN0RGlyZWN0b3J5KG9yaWdpblBhdGgsICIqIik7CiAKQEAgLTg5LDEwICs4OSwx
MCBAQCBzdGF0aWMgdm9pZCByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VGb3JPcmlnaW5QYXRoKGNv
bnN0IFN0cmluZyYgb3JpZ2luUGF0aCwgZG91YgogICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMobWVkaWFLZXlGaWxlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IHRpbWVfdCBtb2RUaW1lOwotICAgICAgICBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9u
VGltZShtZWRpYUtleUZpbGUsIG1vZFRpbWUpOwotCi0gICAgICAgIGlmIChtb2RUaW1lIDwgc3Rh
cnREYXRlIHx8IG1vZFRpbWUgPiBlbmREYXRlKQorICAgICAgICBhdXRvIG1vZGlmaWNhdGlvblRp
bWUgPSBGaWxlU3lzdGVtOjpnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShtZWRpYUtleUZpbGUpOwor
ICAgICAgICBpZiAoIW1vZGlmaWNhdGlvblRpbWUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgaWYgKG1vZGlmaWNhdGlvblRpbWUudmFsdWUoKSA8IHN0YXJ0RGF0ZSB8fCBtb2RpZmlj
YXRpb25UaW1lLnZhbHVlKCkgPiBlbmREYXRlKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtZWRpYUtleUZpbGUpOwpAQCAtMTA4LDEwICsx
MDgsMTAgQEAgdm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVNZWRpYUtleUVu
dHJpZXNGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
U3RyaW5nIG9yaWdpblBhdGggPSBtZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlGb3JPcmlnaW4ob3Jp
Z2luRGF0YSk7Ci0gICAgcmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9yT3JpZ2luUGF0aChvcmln
aW5QYXRoLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKKyAgICByZW1vdmVBbGxNZWRpYUtleVN0b3JhZ2VG
b3JPcmlnaW5QYXRoKG9yaWdpblBhdGgsIC1XYWxsVGltZTo6aW5maW5pdHkoKSwgV2FsbFRpbWU6
OmluZmluaXR5KCkpOwogfQogCi12b2lkIFdlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXI6OmRlbGV0
ZU1lZGlhS2V5RW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKGRvdWJsZSBzdGFydERhdGUsIGRv
dWJsZSBlbmREYXRlKQordm9pZCBXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyOjpkZWxldGVNZWRp
YUtleUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhXYWxsVGltZSBzdGFydERhdGUsIFdhbGxU
aW1lIGVuZERhdGUpCiB7CiAgICAgaWYgKG1fbWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlcjo6ZGVsZXRlQWxsTWVkaWFLZXlFbnRyaWVzKCkKIAogICAgIFZlY3Rv
cjxTdHJpbmc+IG9yaWdpblBhdGhzID0gRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShtX21lZGlh
S2V5U3RvcmFnZURpcmVjdG9yeSwgIioiKTsKICAgICBmb3IgKGF1dG8mIG9yaWdpblBhdGggOiBv
cmlnaW5QYXRocykKLSAgICAgICAgcmVtb3ZlQWxsTWVkaWFLZXlTdG9yYWdlRm9yT3JpZ2luUGF0
aChvcmlnaW5QYXRoLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Omxvd2VzdCgpLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpKTsKKyAgICAgICAgcmVtb3ZlQWxsTWVkaWFL
ZXlTdG9yYWdlRm9yT3JpZ2luUGF0aChvcmlnaW5QYXRoLCAtV2FsbFRpbWU6OmluZmluaXR5KCks
IFdhbGxUaW1lOjppbmZpbml0eSgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ci5oCmluZGV4IDExOWVjZTgzNGU0NGRjZTg5YTNiMzdjMTU3ZGUyOTNmOWIzZmY5NDIuLjBiYWE1
YWQwY2E4Njc5MDRhZGRlZGIyZDdjZGIyNjI4NzBkN2QwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0b3Jh
Z2VNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBw
bGVtZW50LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1dh
bGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTUwLDcgKzUxLDcgQEAgY2xhc3MgV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdl
ciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCB7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiBnZXRNZWRpYUtleU9yaWdpbnMoKTsKICAgICB2b2lkIGRlbGV0
ZU1lZGlhS2V5RW50cmllc0Zvck9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmKTsKLSAgICB2b2lkIGRlbGV0ZU1lZGlhS2V5RW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVz
KGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlKTsKKyAgICB2b2lkIGRlbGV0ZU1lZGlh
S2V5RW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKFdhbGxUaW1lIHN0YXJ0RGF0ZSwgV2FsbFRp
bWUgZW5kRGF0ZSk7CiAgICAgdm9pZCBkZWxldGVBbGxNZWRpYUtleUVudHJpZXMoKTsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAppbmRleCA5Mjg3OTU3NWI3
MGNkMWVkMThkOTNlOGNlMDFiZDFkYTE0OTczZGYzLi5mMjgzYzcyODYzMGVkNGU0MjRkNmQwYmRk
NGUyODA2ZTI4MjM0ODAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBA
IC01MSw4ICs1MSw3IEBAIHN0YXRpYyBIVFRQQm9keSB0b0hUVFBCb2R5KGNvbnN0IEZvcm1EYXRh
JiBmb3JtRGF0YSkKICAgICAgICAgICAgICAgICBlbGVtZW50LmZpbGVTdGFydCA9IGZpbGVEYXRh
LmZpbGVTdGFydDsKICAgICAgICAgICAgICAgICBpZiAoZmlsZURhdGEuZmlsZUxlbmd0aCAhPSBC
bG9iRGF0YUl0ZW06OnRvRW5kT2ZGaWxlKQogICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmZp
bGVMZW5ndGggPSBmaWxlRGF0YS5maWxlTGVuZ3RoOwotICAgICAgICAgICAgICAgIGlmIChmaWxl
RGF0YS5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lICE9IEZpbGVTeXN0ZW06OmludmFsaWRG
aWxlVGltZSgpKQotICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmV4cGVjdGVkRmlsZU1vZGlm
aWNhdGlvblRpbWUgPSBmaWxlRGF0YS5leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lOworICAg
ICAgICAgICAgICAgIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSA9IGZpbGVE
YXRhLmV4cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWU7CiAgICAgICAgICAgICB9LCBbJl0gKGNv
bnN0IEZvcm1EYXRhRWxlbWVudDo6RW5jb2RlZEJsb2JEYXRhJiBibG9iRGF0YSkgewogICAgICAg
ICAgICAgICAgIGVsZW1lbnQuYmxvYlVSTFN0cmluZyA9IGJsb2JEYXRhLnVybC5zdHJpbmcoKTsK
ICAgICAgICAgICAgIH0KQEAgLTEyOSw3ICsxMjgsNyBAQCBzdGF0aWMgUmVmPEZvcm1EYXRhPiB0
b0Zvcm1EYXRhKGNvbnN0IEhUVFBCb2R5JiBodHRwQm9keSkKICAgICAgICAgICAgIGJyZWFrOwog
CiAgICAgICAgIGNhc2UgSFRUUEJvZHk6OkVsZW1lbnQ6OlR5cGU6OkZpbGU6Ci0gICAgICAgICAg
ICBmb3JtRGF0YS0+YXBwZW5kRmlsZVJhbmdlKGVsZW1lbnQuZmlsZVBhdGgsIGVsZW1lbnQuZmls
ZVN0YXJ0LCBlbGVtZW50LmZpbGVMZW5ndGgudmFsdWVfb3IoQmxvYkRhdGFJdGVtOjp0b0VuZE9m
RmlsZSksIGVsZW1lbnQuZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZS52YWx1ZV9vcihGaWxl
U3lzdGVtOjppbnZhbGlkRmlsZVRpbWUoKSkpOworICAgICAgICAgICAgZm9ybURhdGEtPmFwcGVu
ZEZpbGVSYW5nZShlbGVtZW50LmZpbGVQYXRoLCBlbGVtZW50LmZpbGVTdGFydCwgZWxlbWVudC5m
aWxlTGVuZ3RoLnZhbHVlX29yKEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpLCBlbGVtZW50LmV4
cGVjdGVkRmlsZU1vZGlmaWNhdGlvblRpbWUpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAg
ICAgY2FzZSBIVFRQQm9keTo6RWxlbWVudDo6VHlwZTo6QmxvYjoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKaW5kZXggOWNkY2MxNDVi
NzE5OTljZGE2OTg0MTRlNTJmZTIyYzM3YTg5N2I4NC4uNWMwNzcxMjExZWFlZDY0OTA3M2UxMDNl
OTA0YTVlYzkwNDliNDYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1
Z2lucy9QbHVnaW5EYXRhYmFzZS5jcHAKQEAgLTEyNSw5ICsxMjUsMTAgQEAgYm9vbCBQbHVnaW5E
YXRhYmFzZTo6cmVmcmVzaCgpCiAKICAgICBhdXRvIHBhdGhzRW5kID0gcGF0aHMuZW5kKCk7CiAg
ICAgZm9yIChhdXRvIGl0ID0gcGF0aHMuYmVnaW4oKTsgaXQgIT0gcGF0aHNFbmQ7ICsraXQpIHsK
LSAgICAgICAgdGltZV90IGxhc3RNb2RpZmllZDsKLSAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjpn
ZXRGaWxlTW9kaWZpY2F0aW9uVGltZSgqaXQsIGxhc3RNb2RpZmllZCkpCisgICAgICAgIGF1dG8g
bGFzdE1vZGlmaWVkVGltZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVNb2RpZmljYXRpb25UaW1lKCpp
dCk7CisgICAgICAgIGlmICghbGFzdE1vZGlmaWVkVGltZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICB0aW1lX3QgbGFzdE1vZGlmaWVkID0gbGFzdE1vZGlmaWVkVGltZS0+c2Vjb25k
c1NpbmNlRXBvY2goKS5zZWNvbmRzQXM8dGltZV90PigpOwogCiAgICAgICAgIHBhdGhzV2l0aFRp
bWVzLmFkZCgqaXQsIGxhc3RNb2RpZmllZCk7CiAK
</data>
<flag name="review"
          id="373366"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>