<?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>164992</bug_id>
          
          <creation_ts>2016-11-19 12:15:06 -0800</creation_ts>
          <short_desc>Migrate some layout timer-related code from std::chrono to Seconds and MonotonicTime</short_desc>
          <delta_ts>2016-11-26 23:28:35 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>165074</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fpizlo</cc>
    
    <cc>kangil.han</cc>
    
    <cc>ossy</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1253098</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-19 12:15:06 -0800</bug_when>
    <thetext>Migrate some layout timer-related code from std::chrono to Seconds and MonotonicTime</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253099</commentid>
    <comment_count>1</comment_count>
      <attachid>295267</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-19 12:18:05 -0800</bug_when>
    <thetext>Created attachment 295267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253112</commentid>
    <comment_count>2</comment_count>
      <attachid>295269</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-19 14:07:28 -0800</bug_when>
    <thetext>Created attachment 295269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253161</commentid>
    <comment_count>3</comment_count>
      <attachid>295269</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-20 16:13:56 -0800</bug_when>
    <thetext>Comment on attachment 295269
Patch

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

&gt; Source/WebCore/dom/Document.cpp:2779
&gt; +        return Seconds::zero();

Can this just use 0?

&gt; Source/WebCore/dom/Document.cpp:2785
&gt; +    return std::max&lt;Seconds&gt;(Seconds::zero(), settings()-&gt;layoutInterval() - elapsed);

Can this just use 0?

&gt; Source/WebCore/page/ChromeClient.h:236
&gt; +    virtual Seconds eventThrottlingDelay() { return Seconds::zero(); };

Can this just use 0?

&gt; Source/WebCore/page/FrameView.cpp:2904
&gt; +    Seconds delay = frame().document()-&gt;minimumLayoutDelay();

I normally prefer auto for something like this.

&gt; Source/WebCore/page/FrameView.cpp:2911
&gt; +    m_delayedLayout = delay &gt; Seconds::zero();

Seems strange to have to say &quot;&gt; 0&quot; for this. Is there some other way?

&gt; Source/WebCore/page/FrameView.cpp:2948
&gt; +        Seconds delay = renderView.document().minimumLayoutDelay();

We should use auto. If we had used auto before then we wouldn’t have to touch this line of code.

&gt; Source/WebKit/mac/WebView/WebPreferencesPrivate.h:343
&gt;  - (void)_setLayoutInterval:(int)l;
&gt; -- (int)_layoutInterval;
&gt; +- (int)_layoutInterval; // Milliseonds.

Both lines need this, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253624</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-24 22:10:15 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 295269 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=295269&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:2779
&gt; &gt; +        return Seconds::zero();
&gt; 
&gt; Can this just use 0?

I wish; it would reduce the number of changes. Phil, can we make this possible?

&gt; &gt; Source/WebCore/page/FrameView.cpp:2911
&gt; &gt; +    m_delayedLayout = delay &gt; Seconds::zero();
&gt; 
&gt; Seems strange to have to say &quot;&gt; 0&quot; for this. Is there some other way?

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253625</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-24 22:46:11 -0800</bug_when>
    <thetext>I guess we&apos;d need a non-explicit constructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253653</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-11-25 08:23:57 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I guess we&apos;d need a non-explicit constructor?

We could add such a constructor but my thinking was that we want to be explicit about type anytime a raw double becomes Seconds, to minimize the likelihood of someone losing track of units. Do you think this is an OK trade off?

We could also add support for liberals. This could lead to shorter syntax when saying zero.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253672</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-25 19:30:33 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; I guess we&apos;d need a non-explicit constructor?
&gt; 
&gt; We could add such a constructor but my thinking was that we want to be
&gt; explicit about type anytime a raw double becomes Seconds, to minimize the
&gt; likelihood of someone losing track of units. Do you think this is an OK
&gt; trade off?

I do think this is OK. A raw &apos;double&apos; time is almost always seconds, e.g. from currentTime() or currentMonotonicTime().

&gt; We could also add support for liberals. This could lead to shorter syntax
&gt; when saying zero.

Literals? _s and _ms would be nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253673</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-25 19:31:58 -0800</bug_when>
    <thetext>Also, I have a huge patch to convert timers to use Seconds, so would like to decide on something soon :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253674</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-11-25 20:38:11 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; I guess we&apos;d need a non-explicit constructor?
&gt; &gt; 
&gt; &gt; We could add such a constructor but my thinking was that we want to be
&gt; &gt; explicit about type anytime a raw double becomes Seconds, to minimize the
&gt; &gt; likelihood of someone losing track of units. Do you think this is an OK
&gt; &gt; trade off?
&gt; 
&gt; I do think this is OK. A raw &apos;double&apos; time is almost always seconds, e.g.
&gt; from currentTime() or currentMonotonicTime().
&gt; 
&gt; &gt; We could also add support for liberals. This could lead to shorter syntax
&gt; &gt; when saying zero.
&gt; 
&gt; Literals? _s and _ms would be nice.

If you had literals would you still need the implicit cast?  I like to avoid the implicit constructor, but it&apos;s not a big deal to me. 

I&apos;m fine with you making a call on this and adding what you need. Either implicit casts or literals or both would be ok with me. Happy to review such a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253676</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-25 20:39:48 -0800</bug_when>
    <thetext>Coming right up: https://bugs.webkit.org/show_bug.cgi?id=165074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253733</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-26 20:23:24 -0800</bug_when>
    <thetext>https://trac.webkit.org/r208982</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253738</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-11-26 23:21:12 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; https://trac.webkit.org/r208982

It broke the iOS build, see build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253741</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-26 23:28:35 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; https://trac.webkit.org/r208982
&gt; 
&gt; It broke the iOS build, see build.webkit.org for details.

Attempted fix in https://trac.webkit.org/changeset/208986</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295267</attachid>
            <date>2016-11-19 12:18:05 -0800</date>
            <delta_ts>2016-11-19 14:07:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164992-20161119121757.patch</filename>
            <type>text/plain</type>
            <size>19518</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcyY2Q0NzgyMTFiZWJiMjMxM2QzZmI5
ZDNmYzczMDFmMjczOTRkNTYuLjRjZDU5YmIyYjNkMzA2YmM1MzE0ZTVkZWZjYjQ4Mjk4OTI1MDA4
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTEtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBzb21lIGxheW91dCB0aW1lci1y
ZWxhdGVkIGNvZGUgZnJvbSBzdGQ6OmNocm9ubyB0byBTZWNvbmRzIGFuZCBNb25vdG9uaWNUaW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU2Vj
b25kczo6emVybygpIGFzIGEgbmljZXIgd2F5IHRvIGV4cHJlc3MgU2Vjb25kcygwKS4gCisKKyAg
ICAgICAgKiB3dGYvU2Vjb25kcy5oOgorICAgICAgICAoV1RGOjpTZWNvbmRzOjp6ZXJvKToKKwog
MjAxNi0xMS0xOCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHJ1bnRpbWUgZmxhZyB0byBlbmFibGUgcG9pbnRlciBsb2NrLiBFbmFibGUgcG9pbnRlciBs
b2NrIGZlYXR1cmUgZm9yIG1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxYmE3Yjg4ZDJiZWFhYTlmN2I4YmNk
ZjBkMDcwM2ZhNmQ5MTEzOGQyLi5iMmFmYjcwZGNlOTE0NTNiZjE4ZGUzNzZiY2I3YzI3N2UwNmJj
MjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTYtMTEtMTkgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBzb21lIGxheW91
dCB0aW1lci1yZWxhdGVkIGNvZGUgZnJvbSBzdGQ6OmNocm9ubyB0byBTZWNvbmRzIGFuZCBNb25v
dG9uaWNUaW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjQ5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIC0+IFNlY29uZHMuCisgICAgICAgIAorICAgICAg
ICBSZW5hbWUgRG9jdW1lbnQ6OmVsYXBzZWRUaW1lKCkgdG8gdGltZVNpbmNlRG9jdW1lbnRDcmVh
dGlvbigpIHdoaWNoIGlzIG1vcmUgZXhwbGljaXQuCisgICAgICAgIAorICAgICAgICBSZXBsYWNl
IElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcgd2l0aCBMT0coTGF5b3V0Li4uKS4KKworICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmlzTGF5b3V0VGltZXJBY3RpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6Om1pbmltdW1MYXlvdXREZWxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6dGltZVNpbmNlRG9jdW1lbnRDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZWxhcHNlZFRpbWUpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojp1bnNjaGVkdWxlUmVsYXlvdXQpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldExheW91dEludGVydmFsKToKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6bGF5b3V0SW50
ZXJ2YWwpOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlNjb3BlOjpyZW1vdmVQZW5kaW5nU2hlZXQpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpydW5J
bk1vZGUpOgorCiAyMDE2LTExLTE4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBhdHRlbXB0IHRvIGZpeCB0aGUgYnVpbGQgYWZ0ZXIgcjIwODkx
Ny4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA3YWUyYjNmZTIwMmJiYTc2YzFiOGZiZGJmNTgyOGU5Y2U1YzVlMzkx
Li42ZDZmZDNiZmRlYWI5MDM1ZTk4MWUxOGJjMGVhMDdkNjQ4YTYyN2EwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTYtMTEtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBh
cHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBzb21lIGxheW91dCB0aW1lci1yZWxhdGVkIGNv
ZGUgZnJvbSBzdGQ6OmNocm9ubyB0byBTZWNvbmRzIGFuZCBNb25vdG9uaWNUaW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5OTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE5vIG1vcmUg
dWdseSBjb252ZXJzaW9uIGZyb20gc2Vjb25kcyB0byBtaWxsaXNlY29uZHMuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmV2ZW50VGhyb3R0bGlu
Z0RlbGF5KToKKwogMjAxNi0xMS0xOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgdXNlIG9mIHN0ZDo6Y2hyb25vIGluIFdlYlBhZ2UgYW5k
IGVudHJhaW5lZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmggYi9T
b3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmgKaW5kZXggYzM5MTRjYmQ2OGZhYjhlMWZmYzRmZDViMzU0
MDdhMzY2OTA5NDU4ZS4uY2NlN2NkMDU0YzZmYTU1ZWViNGIwMjA4NDFlMjRjNmZlYWM2OTMxZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1NlY29uZHMuaApAQCAtNzAsNiArNzAsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0
dXJuIFNlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsKICAg
ICB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgemVybygpCisgICAgeworICAgICAg
ICByZXR1cm4gU2Vjb25kcygwKTsKKyAgICB9CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV92YWx1ZTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggYzYxOGE5ZGQ2ZmNhY2I5N2ZlMzBiYmNmMjE5OGY4YWY5ZTI3NDQ4NC4uZDE0
Y2JmNjMyZWYzM2M5ODg5MTJhOGQyMjk5NGZiZjMwODlmYjc4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAs
IG1fY3NzVGFyZ2V0KG51bGxwdHIpCiAgICAgLCBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQoZmFsc2Up
CiAgICAgLCBtX2xvYWRFdmVudEZpbmlzaGVkKGZhbHNlKQotICAgICwgbV9zdGFydFRpbWUoc3Rk
OjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkpCisgICAgLCBtX2RvY3VtZW50Q3JlYXRpb25U
aW1lKE1vbm90b25pY1RpbWU6Om5vdygpKQogICAgICwgbV9vdmVyTWluaW11bUxheW91dFRocmVz
aG9sZChmYWxzZSkKICAgICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0
UnVubmVyPigqdGhpcykpCiAgICAgLCBtX21vZHVsZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFNj
cmlwdE1vZHVsZUxvYWRlcj4oKnRoaXMpKQpAQCAtMjY5Niw3ICsyNjk2LDcgQEAgdm9pZCBEb2N1
bWVudDo6aW1wbGljaXRDbG9zZSgpCiAgICAgLy8gZmlyZXMuIFRoaXMgd2lsbCBpbXByb3ZlIG9u
bG9hZCBzY29yZXMsIGFuZCBvdGhlciBicm93c2VycyBkbyBpdC4KICAgICAvLyBJZiB0aGV5IHdh
bm5hIGNoZWF0LCB3ZSBjYW4gdG9vLiAtZHdoCiAKLSAgICBpZiAoZnJhbWUoKS0+bmF2aWdhdGlv
blNjaGVkdWxlcigpLmxvY2F0aW9uQ2hhbmdlUGVuZGluZygpICYmIGVsYXBzZWRUaW1lKCkgPCBz
ZXR0aW5ncygpLT5sYXlvdXRJbnRlcnZhbCgpKSB7CisgICAgaWYgKGZyYW1lKCktPm5hdmlnYXRp
b25TY2hlZHVsZXIoKS5sb2NhdGlvbkNoYW5nZVBlbmRpbmcoKSAmJiB0aW1lU2luY2VEb2N1bWVu
dENyZWF0aW9uKCkgPCBzZXR0aW5ncygpLT5sYXlvdXRJbnRlcnZhbCgpKSB7CiAgICAgICAgIC8v
IEp1c3QgYmFpbCBvdXQuIEJlZm9yZSBvciBkdXJpbmcgdGhlIG9ubG9hZCB3ZSB3ZXJlIHNoaWZ0
ZWQgdG8gYW5vdGhlciBwYWdlLgogICAgICAgICAvLyBUaGUgb2xkIGktQmVuY2ggc3VpdGUgZG9l
cyB0aGlzLiBXaGVuIHRoaXMgaGFwcGVucyBkb24ndCBib3RoZXIgcGFpbnRpbmcgb3IgbGF5aW5n
IG91dC4gICAgICAgIAogICAgICAgICBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQgPSBmYWxzZTsKQEAg
LTI3NzAsMjYgKzI3NzAsMjQgQEAgYm9vbCBEb2N1bWVudDo6c2hvdWxkU2NoZWR1bGVMYXlvdXQo
KQogICAgIAogYm9vbCBEb2N1bWVudDo6aXNMYXlvdXRUaW1lckFjdGl2ZSgpCiB7Ci0gICAgcmV0
dXJuIHZpZXcoKSAmJiB2aWV3KCktPmxheW91dFBlbmRpbmcoKSAmJiAhbWluaW11bUxheW91dERl
bGF5KCkuY291bnQoKTsKKyAgICByZXR1cm4gdmlldygpICYmIHZpZXcoKS0+bGF5b3V0UGVuZGlu
ZygpICYmICFtaW5pbXVtTGF5b3V0RGVsYXkoKTsKIH0KIAotc3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kcyBEb2N1bWVudDo6bWluaW11bUxheW91dERlbGF5KCkKK1NlY29uZHMgRG9jdW1lbnQ6Om1p
bmltdW1MYXlvdXREZWxheSgpCiB7CiAgICAgaWYgKG1fb3Zlck1pbmltdW1MYXlvdXRUaHJlc2hv
bGQpCi0gICAgICAgIHJldHVybiAwbXM7CisgICAgICAgIHJldHVybiBTZWNvbmRzOjp6ZXJvKCk7
CiAgICAgCi0gICAgYXV0byBlbGFwc2VkID0gZWxhcHNlZFRpbWUoKTsKKyAgICBhdXRvIGVsYXBz
ZWQgPSB0aW1lU2luY2VEb2N1bWVudENyZWF0aW9uKCk7CiAgICAgbV9vdmVyTWluaW11bUxheW91
dFRocmVzaG9sZCA9IGVsYXBzZWQgPiBzZXR0aW5ncygpLT5sYXlvdXRJbnRlcnZhbCgpOwogCiAg
ICAgLy8gV2UnbGwgd2FudCB0byBzY2hlZHVsZSB0aGUgdGltZXIgdG8gZmlyZSBhdCB0aGUgbWlu
aW11bSBsYXlvdXQgdGhyZXNob2xkLgotICAgIHJldHVybiBzdGQ6Om1heCgwbXMsIHNldHRpbmdz
KCktPmxheW91dEludGVydmFsKCkgLSBlbGFwc2VkKTsKKyAgICByZXR1cm4gc3RkOjptYXg8U2Vj
b25kcz4oU2Vjb25kczo6emVybygpLCBzZXR0aW5ncygpLT5sYXlvdXRJbnRlcnZhbCgpIC0gZWxh
cHNlZCk7CiB9CiAKLXN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgRG9jdW1lbnQ6OmVsYXBzZWRU
aW1lKCkgY29uc3QKK1NlY29uZHMgRG9jdW1lbnQ6OnRpbWVTaW5jZURvY3VtZW50Q3JlYXRpb24o
KSBjb25zdAogewotICAgIGF1dG8gZWxhcHNlZFRpbWUgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Ns
b2NrOjpub3coKSAtIG1fc3RhcnRUaW1lOwotCi0gICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpkdXJh
dGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGVsYXBzZWRUaW1lKTsKKyAgICBy
ZXR1cm4gTW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2RvY3VtZW50Q3JlYXRpb25UaW1lOwogfQog
CiB2b2lkIERvY3VtZW50Ojp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHRleHQsIERvY3Vt
ZW50KiBvd25lckRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4ZjViNDNlMjBmYWY2
YzQxYzE2NzcxZGY2NmI4NGNlNmY1OGZjMTUzLi5hNDI1NTgzN2Q3ZGVhNGFhODNlYWRkYmUxN2Fj
Y2Q1MDkxMzdhM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNjcxLDExICs2NzEsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKICAgICB2b2lkIHNl
dFBhcnNpbmcoYm9vbCk7CiAgICAgYm9vbCBwYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9iUGFy
c2luZzsgfQotICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgbWluaW11bUxheW91dERlbGF5
KCk7CisgICAgU2Vjb25kcyBtaW5pbXVtTGF5b3V0RGVsYXkoKTsKIAogICAgIGJvb2wgc2hvdWxk
U2NoZWR1bGVMYXlvdXQoKTsKICAgICBib29sIGlzTGF5b3V0VGltZXJBY3RpdmUoKTsKLSAgICBz
dGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGVsYXBzZWRUaW1lKCkgY29uc3Q7CisgICAgU2Vjb25k
cyB0aW1lU2luY2VEb2N1bWVudENyZWF0aW9uKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBzZXRU
ZXh0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fdGV4dENvbG9yID0gY29sb3I7IH0KICAg
ICBjb25zdCBDb2xvciYgdGV4dENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q29sb3I7IH0K
QEAgLTE1MjcsNyArMTUyNyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRFdmVudEZpbmlz
aGVkOwogCiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9wZW5kaW5nU3RhdGVP
YmplY3Q7Ci0gICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBtX3N0YXJ0
VGltZTsKKyAgICBNb25vdG9uaWNUaW1lIG1fZG9jdW1lbnRDcmVhdGlvblRpbWU7CiAgICAgYm9v
bCBtX292ZXJNaW5pbXVtTGF5b3V0VGhyZXNob2xkOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTY3JpcHRSdW5uZXI+IG1fc2NyaXB0UnVubmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgKaW5kZXggNTE3YjFhODhmZTI3NGY0ZDkzNWFhMWQ5MGZhNGM1Yjk5YTk2NzBjNS4uZTIxYTg4
YmFlZThkMTk0ODFhNDdkNWUzNGY3ZmZlOGFhNDA2MjExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCkBAIC0yMzMsNyArMjMzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRQcmV2ZW50RGVmYXVsdEZvckV2ZW50KCkgPSAwOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFNl
Y29uZHMgZXZlbnRUaHJvdHRsaW5nRGVsYXkoKSB7IHJldHVybiBTZWNvbmRzKDApOyB9OworICAg
IHZpcnR1YWwgU2Vjb25kcyBldmVudFRocm90dGxpbmdEZWxheSgpIHsgcmV0dXJuIFNlY29uZHM6
Onplcm8oKTsgfTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZU1vYmlsZURvY1R5cGUoYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmlu
ZGV4IDQ4YTYzYmM5NWUwZDc5OWU3MDgxMjM2ZWVmNzBhOWQ1YjM0YjVjZmEuLmQ2ODQyMGJmZDUw
YTE1MTNmYjQyMmJhODhlNDRhMDc3ZWE5YzkwMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTEzOTksOSArMTM5OSw5IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxv
d1N1YnRyZWUpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0jaWZkZWYgSU5T
VFJVTUVOVF9MQVlPVVRfU0NIRURVTElORworI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgICAg
IGlmIChtX2ZpcnN0TGF5b3V0ICYmICFmcmFtZSgpLm93bmVyRWxlbWVudCgpKQotICAgICAgICAg
ICAgICAgIHByaW50ZigiRWxhcHNlZCB0aW1lIGJlZm9yZSBmaXJzdCBsYXlvdXQ6ICVsbGRcbiIs
IGRvY3VtZW50LmVsYXBzZWRUaW1lKCkuY291bnQoKSk7CisgICAgICAgICAgICAgICAgTE9HKExh
eW91dCwgIkZyYW1lVmlldyAlcCBlbGFwc2VkIHRpbWUgYmVmb3JlIGZpcnN0IGxheW91dDogJS4z
ZnNcbiIsIHRoaXMsIGRvY3VtZW50LnRpbWVTaW5jZURvY3VtZW50Q3JlYXRpb24oKS52YWx1ZSgp
KTsKICNlbmRpZgogICAgICAgICB9CiAKQEAgLTI0MzgsOSArMjQzOCw5IEBAIHZvaWQgRnJhbWVW
aWV3OjpzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9s
bE9mZnNldCYgb2xkCiB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKGNvbnN0
IFNjcm9sbFBvc2l0aW9uJiBvbGRQb3NpdGlvbiwgY29uc3QgU2Nyb2xsUG9zaXRpb24mIG5ld1Bv
c2l0aW9uKQogewogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKLSAgICBTZWNvbmRz
IHRocm90dGxpbmdEZWxheSA9IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ldmVudFRo
cm90dGxpbmdEZWxheSgpIDogU2Vjb25kcygwKTsKKyAgICBTZWNvbmRzIHRocm90dGxpbmdEZWxh
eSA9IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ldmVudFRocm90dGxpbmdEZWxheSgp
IDogU2Vjb25kczo6emVybygpOwogCi0gICAgaWYgKHRocm90dGxpbmdEZWxheSA9PSBTZWNvbmRz
KDApKSB7CisgICAgaWYgKHRocm90dGxpbmdEZWxheSA9PSBTZWNvbmRzOjp6ZXJvKCkpIHsKICAg
ICAgICAgbV9kZWxheWVkU2Nyb2xsRXZlbnRUaW1lci5zdG9wKCk7CiAgICAgICAgIHNlbmRTY3Jv
bGxFdmVudCgpOwogICAgIH0gZWxzZSBpZiAoIW1fZGVsYXllZFNjcm9sbEV2ZW50VGltZXIuaXNB
Y3RpdmUoKSkKQEAgLTI4NzUsOSArMjg3NSw5IEBAIHZvaWQgRnJhbWVWaWV3Ojpjb252ZXJ0U3Vi
dHJlZUxheW91dFRvRnVsbExheW91dCgpCiAKIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXRUaW1lckZp
cmVkKCkKIHsKLSNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCisjaWYgIUxPR19E
SVNBQkxFRAogICAgIGlmICghZnJhbWUoKS5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkKLSAg
ICAgICAgcHJpbnRmKCJMYXlvdXQgdGltZXIgZmlyZWQgYXQgJWxsZFxuIiwgZnJhbWUoKS5kb2N1
bWVudCgpLT5lbGFwc2VkVGltZSgpLmNvdW50KCkpOworICAgICAgICBMT0coTGF5b3V0LCAiRnJh
bWVWaWV3ICVwIGxheW91dCB0aW1lciBmaXJlZCBhdCAlLjNmcyIsIHRoaXMsIGZyYW1lKCkuZG9j
dW1lbnQoKS0+dGltZVNpbmNlRG9jdW1lbnRDcmVhdGlvbigpLnZhbHVlKCkpOwogI2VuZGlmCiAg
ICAgbGF5b3V0KCk7CiB9CkBAIC0yOTAyLDE3ICsyOTAyLDE4IEBAIHZvaWQgRnJhbWVWaWV3Ojpz
Y2hlZHVsZVJlbGF5b3V0KCkKICAgICBpZiAoZnJhbWUoKS5vd25lclJlbmRlcmVyKCkgJiYgaXNJ
bkNoaWxkRnJhbWVXaXRoRnJhbWVGbGF0dGVuaW5nKCkpCiAgICAgICAgIGZyYW1lKCkub3duZXJS
ZW5kZXJlcigpLT5zZXROZWVkc0xheW91dChNYXJrQ29udGFpbmluZ0Jsb2NrQ2hhaW4pOwogCi0g
ICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkZWxheSA9IGZyYW1lKCkuZG9jdW1lbnQoKS0+
bWluaW11bUxheW91dERlbGF5KCk7Ci0gICAgaWYgKG1fbGF5b3V0VGltZXIuaXNBY3RpdmUoKSAm
JiBtX2RlbGF5ZWRMYXlvdXQgJiYgIWRlbGF5LmNvdW50KCkpCisgICAgU2Vjb25kcyBkZWxheSA9
IGZyYW1lKCkuZG9jdW1lbnQoKS0+bWluaW11bUxheW91dERlbGF5KCk7CisgICAgaWYgKG1fbGF5
b3V0VGltZXIuaXNBY3RpdmUoKSAmJiBtX2RlbGF5ZWRMYXlvdXQgJiYgIWRlbGF5KQogICAgICAg
ICB1bnNjaGVkdWxlUmVsYXlvdXQoKTsKKwogICAgIGlmIChtX2xheW91dFRpbWVyLmlzQWN0aXZl
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGVsYXllZExheW91dCA9IGRlbGF5LmNvdW50
KCk7CisgICAgbV9kZWxheWVkTGF5b3V0ID0gZGVsYXkgPiBTZWNvbmRzOjp6ZXJvKCk7CiAKLSNp
ZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCisjaWYgIUxPR19ESVNBQkxFRAogICAg
IGlmICghZnJhbWUoKS5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAgcHJpbnRm
KCJTY2hlZHVsaW5nIGxheW91dCBmb3IgJWRcbiIsIGRlbGF5KTsKKyAgICAgICAgTE9HKExheW91
dCwgIkZyYW1lVmlldyAlcCBzY2hlZHVsaW5nIGxheW91dCBmb3IgJS4zZnMiLCB0aGlzLCBkZWxh
eS52YWx1ZSgpKTsKICNlbmRpZgogCiAgICAgbV9sYXlvdXRUaW1lci5zdGFydE9uZVNob3QoZGVs
YXkpOwpAQCAtMjk0NSwxMSArMjk0NiwxMSBAQCB2b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxh
eW91dE9mU3VidHJlZShSZW5kZXJFbGVtZW50JiBuZXdSZWxheW91dFJvb3QpCiAgICAgfQogCiAg
ICAgaWYgKCFsYXlvdXRQZW5kaW5nKCkgJiYgbV9sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCkgewot
ICAgICAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGRlbGF5ID0gcmVuZGVyVmlldy5kb2N1
bWVudCgpLm1pbmltdW1MYXlvdXREZWxheSgpOworICAgICAgICBTZWNvbmRzIGRlbGF5ID0gcmVu
ZGVyVmlldy5kb2N1bWVudCgpLm1pbmltdW1MYXlvdXREZWxheSgpOwogICAgICAgICBBU1NFUlQo
IW5ld1JlbGF5b3V0Um9vdC5jb250YWluZXIoKSB8fCBpczxSZW5kZXJWaWV3PihuZXdSZWxheW91
dFJvb3QuY29udGFpbmVyKCkpIHx8ICFuZXdSZWxheW91dFJvb3QuY29udGFpbmVyKCktPm5lZWRz
TGF5b3V0KCkpOwogICAgICAgICBtX2xheW91dFJvb3QgPSAmbmV3UmVsYXlvdXRSb290OwogICAg
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXQoZnJhbWUo
KSk7Ci0gICAgICAgIG1fZGVsYXllZExheW91dCA9IGRlbGF5LmNvdW50KCk7CisgICAgICAgIG1f
ZGVsYXllZExheW91dCA9IGRlbGF5ID4gU2Vjb25kczo6emVybygpOwogICAgICAgICBtX2xheW91
dFRpbWVyLnN0YXJ0T25lU2hvdChkZWxheSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0z
MDQyLDkgKzMwNDMsOSBAQCB2b2lkIEZyYW1lVmlldzo6dW5zY2hlZHVsZVJlbGF5b3V0KCkKICAg
ICBpZiAoIW1fbGF5b3V0VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWZk
ZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORworI2lmICFMT0dfRElTQUJMRUQKICAgICBp
ZiAoIWZyYW1lKCkuZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgIHByaW50Zigi
TGF5b3V0IHRpbWVyIHVuc2NoZWR1bGVkIGF0ICVkXG4iLCBmcmFtZSgpLmRvY3VtZW50KCktPmVs
YXBzZWRUaW1lKCkpOworICAgICAgICBMT0coTGF5b3V0LCAiRnJhbWVWaWV3ICVwIGxheW91dCB0
aW1lciB1bnNjaGVkdWxlZCBhdCAlLjNmcyIsIHRoaXMsIGZyYW1lKCkuZG9jdW1lbnQoKS0+dGlt
ZVNpbmNlRG9jdW1lbnRDcmVhdGlvbigpLnZhbHVlKCkpOwogI2VuZGlmCiAgICAgCiAgICAgbV9s
YXlvdXRUaW1lci5zdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDZlYzMwNmRh
MTcxZTk3YzUzOGY0NzM1MWQwZGIxMjc5ZWJkNTFiOTkuLjYxNDQzZjcxYzA4ODllMDc4ZmQ1NmIw
Y2E1ZmY4NjIzNzcxODVlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xODQsNyAr
MTg0LDcgQEAgc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFj
ZUVuYWJsZWQgPSBmYWxzZTsKIC8vIFRoaXMgYW1vdW50IG9mIHRpbWUgbXVzdCBoYXZlIGVsYXBz
ZWQgYmVmb3JlIHdlIHdpbGwgZXZlbiBjb25zaWRlciBzY2hlZHVsaW5nIGEgbGF5b3V0IHdpdGhv
dXQgYSBkZWxheS4KIC8vIEZJWE1FOiBGb3IgZmFzdGVyIG1hY2hpbmVzIHRoaXMgdmFsdWUgY2Fu
IHJlYWxseSBiZSBsb3dlcmVkIHRvIDIwMC4gMjUwIGlzIGFkZXF1YXRlLCBidXQgYSBsaXR0bGUg
aGlnaAogLy8gZm9yIGR1YWwgRzVzLiA6KQotc3RhdGljIGNvbnN0IGF1dG8gbGF5b3V0U2NoZWR1
bGVUaHJlc2hvbGQgPSAyNTBtczsKK3N0YXRpYyBjb25zdCBTZWNvbmRzIGxheW91dFNjaGVkdWxl
VGhyZXNob2xkID0gU2Vjb25kcygwLjI1KTsKIAogU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBh
Z2UpCiAgICAgOiBtX3BhZ2UobnVsbHB0cikKQEAgLTQ2MSw3ICs0NjEsNyBAQCB2b2lkIFNldHRp
bmdzOjpzZXRNaW5pbXVtRE9NVGltZXJJbnRlcnZhbChzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
IGludGVydmFsKQogICAgIH0KIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0TGF5b3V0SW50ZXJ2YWwo
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBsYXlvdXRJbnRlcnZhbCkKK3ZvaWQgU2V0dGluZ3M6
OnNldExheW91dEludGVydmFsKFNlY29uZHMgbGF5b3V0SW50ZXJ2YWwpCiB7CiAgICAgLy8gRklY
TUU6IEl0IHNlZW1zIHdlaXJkIHRoYXQgdGhpcyBmdW5jdGlvbiBtYXkgZGlzcmVnYXJkIHRoZSBz
cGVjaWZpZWQgbGF5b3V0IGludGVydmFsLgogICAgIC8vIFdlIHNob3VsZCBlaXRoZXIgZXhwb3Nl
IGxheW91dFNjaGVkdWxlVGhyZXNob2xkIG9yIGJldHRlciBjb21tdW5pY2F0ZSB0aGlzIGludmFy
aWFudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBkMDY5NTdkYWVmNjY3N2Y3MTkzNWY3ZjVi
MTNlNTI5MTNkYmRkZWM1Li4wYTk1N2VmZTBlZWQ5MWEwNDAwOWFlMTU3ZDU0MzY3ODlhZjRkNGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0xNzIsOCArMTcyLDggQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TWluaW11bURPTVRpbWVySW50ZXJ2YWwoc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcyk7IC8vIEluaXRpYWxpemVkIHRvIERPTVRpbWVyOjpkZWZhdWx0TWlu
aW11bUludGVydmFsKCkuCiAgICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBtaW5pbXVtRE9N
VGltZXJJbnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bURPTVRpbWVySW50ZXJ2YWw7
IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGF5b3V0SW50ZXJ2YWwoc3RkOjpjaHJv
bm86Om1pbGxpc2Vjb25kcyk7Ci0gICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBsYXlvdXRJ
bnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0SW50ZXJ2YWw7IH0KKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldExheW91dEludGVydmFsKFNlY29uZHMpOworICAgIFNlY29uZHMgbGF5
b3V0SW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiBtX2xheW91dEludGVydmFsOyB9CiAKICAgICBi
b29sIGhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZDsgfQogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQoYm9vbCk7CkBA
IC0zMjUsNyArMzI1LDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0
aW9uOwogICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxGb250R2VuZXJpY0ZhbWlsaWVzPiBtX2Zv
bnRHZW5lcmljRmFtaWxpZXM7CiAgICAgU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1Bv
bGljeSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsKLSAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzIG1fbGF5b3V0SW50ZXJ2YWw7CisgICAgU2Vjb25kcyBtX2xheW91dEludGVydmFsOwogICAg
IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgbV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbDsKIAog
ICAgIFNFVFRJTkdTX01FTUJFUl9WQVJJQUJMRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5j
cHAKaW5kZXggMmM5MzljNzQxMGRjYTJlYjNkNjcwNDU2YTQyYjkyYWYwMDNmMWU0ZS4uMGQ2MjM2
MjFmMTY2NmZhYzViNzg4ODg5ODM0NGM3ZGI2MTI3YzBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZS5jcHAKQEAgLTE0NywxMiArMTQ3LDYgQEAgdm9pZCBTY29wZTo6cmVtb3ZlUGVuZGlu
Z1NoZWV0KFJlbW92ZVBlbmRpbmdTaGVldE5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uKQog
ICAgIEFTU0VSVChtX3BlbmRpbmdTdHlsZVNoZWV0Q291bnQgPiAwKTsKIAogICAgIG1fcGVuZGlu
Z1N0eWxlU2hlZXRDb3VudC0tOwotICAgIAotI2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVE
VUxJTkcKLSAgICBpZiAoIW93bmVyRWxlbWVudCgpKQotICAgICAgICBwcmludGYoIlN0eWxlc2hl
ZXQgbG9hZGVkIGF0IHRpbWUgJWQuICVkIHN0eWxlc2hlZXRzIHN0aWxsIHJlbWFpbi5cbiIsIGVs
YXBzZWRUaW1lKCksIG1fcGVuZGluZ1N0eWxlc2hlZXRzKTsKLSNlbmRpZgotCiAgICAgaWYgKG1f
cGVuZGluZ1N0eWxlU2hlZXRDb3VudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCA2NTY4NWQ3MjQxZDJjMTk3YjRmMjA3NDFk
NGFkMGM5OGZmYjIwMjg4Li5mMjkzOWZkZTY0OWEzODk2ZDNhZWZkNDUwMjc0YzAzZjgyZGIyZjE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTE2NCw3ICsx
NjQsNyBAQCBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShX
b3JrZXJHbG9iYWxTY29wZSogY29udGV4dCwgY29ucwogICAgIENGQWJzb2x1dGVUaW1lIG5leHRD
RlJ1bkxvb3BUaW1lckZpcmVEYXRlID0gQ0ZSdW5Mb29wR2V0TmV4dFRpbWVyRmlyZURhdGUoQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgIGRvdWJsZSB0
aW1lVW50aWxOZXh0Q0ZSdW5Mb29wVGltZXJJblNlY29uZHMgPSBuZXh0Q0ZSdW5Mb29wVGltZXJG
aXJlRGF0ZSAtIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpOwogICAgIGRlYWRsaW5lID0gV2Fs
bFRpbWU6Om5vdygpICsgc3RkOjptYXgoCi0gICAgICAgIFNlY29uZHMoMCksIFNlY29uZHModGlt
ZVVudGlsTmV4dENGUnVuTG9vcFRpbWVySW5TZWNvbmRzKSk7CisgICAgICAgIFNlY29uZHM6Onpl
cm8oKSwgU2Vjb25kcyh0aW1lVW50aWxOZXh0Q0ZSdW5Mb29wVGltZXJJblNlY29uZHMpKTsKICNl
bmRpZgogCiAgICAgV2FsbFRpbWUgYWJzb2x1dGVUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDllNjBlNmVkZTgzNGE1MzcxZWViYTZi
ZmIxYmZmZDZhMDBiODM2ZGUuLjlhODU0MTg0ODYyNjNhZmY1YTMxNWRjZjliOTczNjA4OTU0MzE2
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
QEAgLTMxMTIsNyArMzExMiw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgc2V0dGluZ3Muc2V0UGFzc3dvcmRF
Y2hvRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBh
c3N3b3JkRWNob0VuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldFBhc3N3b3JkRWNob0R1
cmF0aW9uSW5TZWNvbmRzKHN0b3JlLmdldERvdWJsZVZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2Vz
S2V5OjpwYXNzd29yZEVjaG9EdXJhdGlvbktleSgpKSk7CiAgICAgCi0gICAgc2V0dGluZ3Muc2V0
TGF5b3V0SW50ZXJ2YWwoc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oc3RvcmUuZ2V0RG91Ymxl
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxheW91dEludGVydmFsS2V5KCkpKSkpOwor
ICAgIHNldHRpbmdzLnNldExheW91dEludGVydmFsKFNlY29uZHMoc3RvcmUuZ2V0RG91YmxlVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxheW91dEludGVydmFsS2V5KCkpKSk7CiAgICAg
c2V0dGluZ3Muc2V0TWF4UGFyc2VEdXJhdGlvbihzdG9yZS5nZXREb3VibGVWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6bWF4UGFyc2VEdXJhdGlvbktleSgpKSk7CiAKICAgICBzZXR0aW5n
cy5zZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5OjplbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnRLZXko
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IDQwNmMwY2Q5YTM3MGJjYjc0NTkzYTY5Mjc5MGM2MmE2ODA2YzQ5ZDUu
LmUwMmJiNzgwODE3NDJhMzVhOThmMzllN2Y1M2E0NjNjYjJiODMwYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTIx
MjUsNyArMjEyNSw3IEBAIHZvaWQgV2ViUGFnZTo6ZXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxi
YWNrKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIHVpbnQ2NF90CiBTZWNvbmRzIFdlYlBhZ2U6
OmV2ZW50VGhyb3R0bGluZ0RlbGF5KCkgY29uc3QKIHsKICAgICBpZiAobV9pc0luU3RhYmxlU3Rh
dGUgfHwgbV9lc3RpbWF0ZWRMYXRlbmN5IDw9IFNlY29uZHMoMS4wIC8gNjApKQotICAgICAgICBy
ZXR1cm4gU2Vjb25kcygwKTsKKyAgICAgICAgcmV0dXJuIFNlY29uZHM6Onplcm8oKTsKIAogICAg
IHJldHVybiBTZWNvbmRzKHN0ZDo6bWluPGRvdWJsZT4obV9lc3RpbWF0ZWRMYXRlbmN5LnZhbHVl
KCkgKiAyLCAxKSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggZmY3MTRhZmE1NTRiMTkxMjk5ZTdhYjg1NWRiNDY2NzJkY2FiZTVlOC4uOWY1
NDQ0ZGIzOWZiYmU2MzQyNDExZjllMzdmM2ZiNThkZTM2MGQzOSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTEx
LTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1p
Z3JhdGUgc29tZSBsYXlvdXQgdGltZXItcmVsYXRlZCBjb2RlIGZyb20gc3RkOjpjaHJvbm8gdG8g
U2Vjb25kcyBhbmQgTW9ub3RvbmljVGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBVc2UgU2Vjb25kczo6emVybygpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9uLmNwcDoKKwogMjAxNi0xMS0xOCAg
RGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQVg6ICIoaW52ZXJ0ZWQt
Y29sb3JzKSIgbWVkaWEgcXVlcnkgb25seSBtYXRjaGVzIG9uIHBhZ2UgcmVsb2FkOyBzaG91bGQg
bWF0Y2ggb24gY2hhbmdlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Db25kaXRpb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ29uZGl0aW9u
LmNwcAppbmRleCBlZTMxZDZhYzIxNGEzNGI2MjE1MTIxN2EwZDEzMDc1Y2I1NTE2MzkwLi5kZWNh
OTZkOTQyOTkwY2VhZmVkODFmMWRjZjBiNjM3NTA4MjY3ZDQzIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBydW5U
ZXN0KAogICAgIHVuc2lnbmVkIG51bU1lc3NhZ2VzUGVyUHJvZHVjZXIsCiAgICAgTm90aWZ5U3R5
bGUgbm90aWZ5U3R5bGUsCiAgICAgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5pdHko
KSwKLSAgICBTZWNvbmRzIGRlbGF5ID0gU2Vjb25kcygwKSkKKyAgICBTZWNvbmRzIGRlbGF5ID0g
U2Vjb25kczo6emVybygpKQogewogICAgIERlcXVlPHVuc2lnbmVkPiBxdWV1ZTsKICAgICBib29s
IHNob3VsZENvbnRpbnVlID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295269</attachid>
            <date>2016-11-19 14:07:28 -0800</date>
            <delta_ts>2016-11-26 15:41:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164992-20161119140720.patch</filename>
            <type>text/plain</type>
            <size>21465</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcyY2Q0NzgyMTFiZWJiMjMxM2QzZmI5
ZDNmYzczMDFmMjczOTRkNTYuLjRjZDU5YmIyYjNkMzA2YmM1MzE0ZTVkZWZjYjQ4Mjk4OTI1MDA4
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMTEtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWlncmF0ZSBzb21lIGxheW91dCB0aW1lci1y
ZWxhdGVkIGNvZGUgZnJvbSBzdGQ6OmNocm9ubyB0byBTZWNvbmRzIGFuZCBNb25vdG9uaWNUaW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU2Vj
b25kczo6emVybygpIGFzIGEgbmljZXIgd2F5IHRvIGV4cHJlc3MgU2Vjb25kcygwKS4gCisKKyAg
ICAgICAgKiB3dGYvU2Vjb25kcy5oOgorICAgICAgICAoV1RGOjpTZWNvbmRzOjp6ZXJvKToKKwog
MjAxNi0xMS0xOCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHJ1bnRpbWUgZmxhZyB0byBlbmFibGUgcG9pbnRlciBsb2NrLiBFbmFibGUgcG9pbnRlciBs
b2NrIGZlYXR1cmUgZm9yIG1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZTNmMDhkYjAyZGRiZmYzNjM4Zjc3
Yjc2ODBhN2FjODU1ODg0ODQ4Li4yMTdjODQ4ZjYzY2IyOWZjYWVhOWNmMTM3MzFiZTdlMTUxOGIw
YmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDMgQEAKIDIwMTYtMTEtMTkgIFNpbW9uIEZyYXNl
ciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKKyAgICAgICAgTWlncmF0ZSBzb21lIGxheW91
dCB0aW1lci1yZWxhdGVkIGNvZGUgZnJvbSBzdGQ6OmNocm9ubyB0byBTZWNvbmRzIGFuZCBNb25v
dG9uaWNUaW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjQ5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIC0+IFNlY29uZHMuCisgICAgICAgIAorICAgICAg
ICBSZW5hbWUgRG9jdW1lbnQ6OmVsYXBzZWRUaW1lKCkgdG8gdGltZVNpbmNlRG9jdW1lbnRDcmVh
dGlvbigpIHdoaWNoIGlzIG1vcmUgZXhwbGljaXQuCisgICAgICAgIAorICAgICAgICBSZXBsYWNl
IElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcgd2l0aCBMT0coTGF5b3V0Li4uKS4KKworICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0Q2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmlzTGF5b3V0VGltZXJBY3RpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6Om1pbmltdW1MYXlvdXREZWxheSk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6dGltZVNpbmNlRG9jdW1lbnRDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZWxhcHNlZFRpbWUpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnNjaGVkdWxlUmVsYXlvdXRPZlN1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3Ojp1bnNjaGVkdWxlUmVsYXlvdXQpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldExheW91dEludGVydmFsKToKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6bGF5b3V0SW50
ZXJ2YWwpOgorICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlNjb3BlOjpyZW1vdmVQZW5kaW5nU2hlZXQpOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpydW5J
bk1vZGUpOgorCisyMDE2LTExLTE5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgorCiAgICAgICAgIFtpT1MgV0syXSBXaGVuIHpvb21lZCBpbiBhbmQgcGFubmluZyBvbiBw
YWdlcyB3aXRoIGZpeGVkIGJhcnMsIHBhcnRzIG9mIHRoZSBiYXJzIGFyZSBzb21ldGltZXMgbWlz
c2luZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
ODU1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCAzMGVhODQ1MTA4YjgyMWEyNWU5Y2NlYzc5Yzg5NDY4YzhmZGU3
MzlmLi42N2M1ODI3MjZlYjQyY2FhZGU3YmFlYTFiYWZhNDAwZThiOTFiMDI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMTkgQEAKIDIwMTYtMTEtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKKyAgICAgICAgTWlncmF0ZSBzb21lIGxheW91dCB0aW1lci1yZWxhdGVk
IGNvZGUgZnJvbSBzdGQ6OmNocm9ubyB0byBTZWNvbmRzIGFuZCBNb25vdG9uaWNUaW1lCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5OTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE5vIG1v
cmUgdWdseSBjb252ZXJzaW9uIGZyb20gc2Vjb25kcyB0byBtaWxsaXNlY29uZHMuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmV2ZW50VGhyb3R0
bGluZ0RlbGF5KToKKworMjAxNi0xMS0xOSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KKwogICAgICAgICBbaU9TIFdLMl0gV2hlbiB6b29tZWQgaW4gYW5kIHBhbm5pbmcg
b24gcGFnZXMgd2l0aCBmaXhlZCBiYXJzLCBwYXJ0cyBvZiB0aGUgYmFycyBhcmUgc29tZXRpbWVz
IG1pc3NpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDg1NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9TZWNvbmRzLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9TZWNvbmRzLmgKaW5kZXggYzM5MTRjYmQ2OGZhYjhlMWZmYzRmZDViMzU0MDdhMzY2
OTA5NDU4ZS4uY2NlN2NkMDU0YzZmYTU1ZWViNGIwMjA4NDFlMjRjNmZlYWM2OTMxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvU2Vjb25kcy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NlY29u
ZHMuaApAQCAtNzAsNiArNzAsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIFNl
Y29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsKICAgICB9CisK
KyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgemVybygpCisgICAgeworICAgICAgICByZXR1
cm4gU2Vjb25kcygwKTsKKyAgICB9CiAgICAgCiAgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICEhbV92YWx1ZTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggYzYxOGE5ZGQ2ZmNhY2I5N2ZlMzBiYmNmMjE5OGY4YWY5ZTI3NDQ4NC4uZDE0Y2JmNjMy
ZWYzM2M5ODg5MTJhOGQyMjk5NGZiZjMwODlmYjc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC00NjgsNyArNDY4LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiB1cmwsIHVuc2lnbmVkIGRvY3VtZW50Q2xhc3NlcywgdW5zaWcKICAgICAsIG1fY3Nz
VGFyZ2V0KG51bGxwdHIpCiAgICAgLCBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQoZmFsc2UpCiAgICAg
LCBtX2xvYWRFdmVudEZpbmlzaGVkKGZhbHNlKQotICAgICwgbV9zdGFydFRpbWUoc3RkOjpjaHJv
bm86OnN0ZWFkeV9jbG9jazo6bm93KCkpCisgICAgLCBtX2RvY3VtZW50Q3JlYXRpb25UaW1lKE1v
bm90b25pY1RpbWU6Om5vdygpKQogICAgICwgbV9vdmVyTWluaW11bUxheW91dFRocmVzaG9sZChm
YWxzZSkKICAgICAsIG1fc2NyaXB0UnVubmVyKHN0ZDo6bWFrZV91bmlxdWU8U2NyaXB0UnVubmVy
PigqdGhpcykpCiAgICAgLCBtX21vZHVsZUxvYWRlcihzdGQ6Om1ha2VfdW5pcXVlPFNjcmlwdE1v
ZHVsZUxvYWRlcj4oKnRoaXMpKQpAQCAtMjY5Niw3ICsyNjk2LDcgQEAgdm9pZCBEb2N1bWVudDo6
aW1wbGljaXRDbG9zZSgpCiAgICAgLy8gZmlyZXMuIFRoaXMgd2lsbCBpbXByb3ZlIG9ubG9hZCBz
Y29yZXMsIGFuZCBvdGhlciBicm93c2VycyBkbyBpdC4KICAgICAvLyBJZiB0aGV5IHdhbm5hIGNo
ZWF0LCB3ZSBjYW4gdG9vLiAtZHdoCiAKLSAgICBpZiAoZnJhbWUoKS0+bmF2aWdhdGlvblNjaGVk
dWxlcigpLmxvY2F0aW9uQ2hhbmdlUGVuZGluZygpICYmIGVsYXBzZWRUaW1lKCkgPCBzZXR0aW5n
cygpLT5sYXlvdXRJbnRlcnZhbCgpKSB7CisgICAgaWYgKGZyYW1lKCktPm5hdmlnYXRpb25TY2hl
ZHVsZXIoKS5sb2NhdGlvbkNoYW5nZVBlbmRpbmcoKSAmJiB0aW1lU2luY2VEb2N1bWVudENyZWF0
aW9uKCkgPCBzZXR0aW5ncygpLT5sYXlvdXRJbnRlcnZhbCgpKSB7CiAgICAgICAgIC8vIEp1c3Qg
YmFpbCBvdXQuIEJlZm9yZSBvciBkdXJpbmcgdGhlIG9ubG9hZCB3ZSB3ZXJlIHNoaWZ0ZWQgdG8g
YW5vdGhlciBwYWdlLgogICAgICAgICAvLyBUaGUgb2xkIGktQmVuY2ggc3VpdGUgZG9lcyB0aGlz
LiBXaGVuIHRoaXMgaGFwcGVucyBkb24ndCBib3RoZXIgcGFpbnRpbmcgb3IgbGF5aW5nIG91dC4g
ICAgICAgIAogICAgICAgICBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQgPSBmYWxzZTsKQEAgLTI3NzAs
MjYgKzI3NzAsMjQgQEAgYm9vbCBEb2N1bWVudDo6c2hvdWxkU2NoZWR1bGVMYXlvdXQoKQogICAg
IAogYm9vbCBEb2N1bWVudDo6aXNMYXlvdXRUaW1lckFjdGl2ZSgpCiB7Ci0gICAgcmV0dXJuIHZp
ZXcoKSAmJiB2aWV3KCktPmxheW91dFBlbmRpbmcoKSAmJiAhbWluaW11bUxheW91dERlbGF5KCku
Y291bnQoKTsKKyAgICByZXR1cm4gdmlldygpICYmIHZpZXcoKS0+bGF5b3V0UGVuZGluZygpICYm
ICFtaW5pbXVtTGF5b3V0RGVsYXkoKTsKIH0KIAotc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBE
b2N1bWVudDo6bWluaW11bUxheW91dERlbGF5KCkKK1NlY29uZHMgRG9jdW1lbnQ6Om1pbmltdW1M
YXlvdXREZWxheSgpCiB7CiAgICAgaWYgKG1fb3Zlck1pbmltdW1MYXlvdXRUaHJlc2hvbGQpCi0g
ICAgICAgIHJldHVybiAwbXM7CisgICAgICAgIHJldHVybiBTZWNvbmRzOjp6ZXJvKCk7CiAgICAg
Ci0gICAgYXV0byBlbGFwc2VkID0gZWxhcHNlZFRpbWUoKTsKKyAgICBhdXRvIGVsYXBzZWQgPSB0
aW1lU2luY2VEb2N1bWVudENyZWF0aW9uKCk7CiAgICAgbV9vdmVyTWluaW11bUxheW91dFRocmVz
aG9sZCA9IGVsYXBzZWQgPiBzZXR0aW5ncygpLT5sYXlvdXRJbnRlcnZhbCgpOwogCiAgICAgLy8g
V2UnbGwgd2FudCB0byBzY2hlZHVsZSB0aGUgdGltZXIgdG8gZmlyZSBhdCB0aGUgbWluaW11bSBs
YXlvdXQgdGhyZXNob2xkLgotICAgIHJldHVybiBzdGQ6Om1heCgwbXMsIHNldHRpbmdzKCktPmxh
eW91dEludGVydmFsKCkgLSBlbGFwc2VkKTsKKyAgICByZXR1cm4gc3RkOjptYXg8U2Vjb25kcz4o
U2Vjb25kczo6emVybygpLCBzZXR0aW5ncygpLT5sYXlvdXRJbnRlcnZhbCgpIC0gZWxhcHNlZCk7
CiB9CiAKLXN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgRG9jdW1lbnQ6OmVsYXBzZWRUaW1lKCkg
Y29uc3QKK1NlY29uZHMgRG9jdW1lbnQ6OnRpbWVTaW5jZURvY3VtZW50Q3JlYXRpb24oKSBjb25z
dAogewotICAgIGF1dG8gZWxhcHNlZFRpbWUgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpu
b3coKSAtIG1fc3RhcnRUaW1lOwotCi0gICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9j
YXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KGVsYXBzZWRUaW1lKTsKKyAgICByZXR1cm4g
TW9ub3RvbmljVGltZTo6bm93KCkgLSBtX2RvY3VtZW50Q3JlYXRpb25UaW1lOwogfQogCiB2b2lk
IERvY3VtZW50Ojp3cml0ZShjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHRleHQsIERvY3VtZW50KiBv
d25lckRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA4ZjViNDNlMjBmYWY2YzQxYzE2
NzcxZGY2NmI4NGNlNmY1OGZjMTUzLi5hNDI1NTgzN2Q3ZGVhNGFhODNlYWRkYmUxN2FjY2Q1MDkx
MzdhM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtNjcxLDExICs2NzEsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKICAgICB2b2lkIHNldFBhcnNp
bmcoYm9vbCk7CiAgICAgYm9vbCBwYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9iUGFyc2luZzsg
fQotICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgbWluaW11bUxheW91dERlbGF5KCk7Cisg
ICAgU2Vjb25kcyBtaW5pbXVtTGF5b3V0RGVsYXkoKTsKIAogICAgIGJvb2wgc2hvdWxkU2NoZWR1
bGVMYXlvdXQoKTsKICAgICBib29sIGlzTGF5b3V0VGltZXJBY3RpdmUoKTsKLSAgICBzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzIGVsYXBzZWRUaW1lKCkgY29uc3Q7CisgICAgU2Vjb25kcyB0aW1l
U2luY2VEb2N1bWVudENyZWF0aW9uKCkgY29uc3Q7CiAgICAgCiAgICAgdm9pZCBzZXRUZXh0Q29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yKSB7IG1fdGV4dENvbG9yID0gY29sb3I7IH0KICAgICBjb25z
dCBDb2xvciYgdGV4dENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0Q29sb3I7IH0KQEAgLTE1
MjcsNyArMTUyNyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRFdmVudEZpbmlzaGVkOwog
CiAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV9wZW5kaW5nU3RhdGVPYmplY3Q7
Ci0gICAgc3RkOjpjaHJvbm86OnN0ZWFkeV9jbG9jazo6dGltZV9wb2ludCBtX3N0YXJ0VGltZTsK
KyAgICBNb25vdG9uaWNUaW1lIG1fZG9jdW1lbnRDcmVhdGlvblRpbWU7CiAgICAgYm9vbCBtX292
ZXJNaW5pbXVtTGF5b3V0VGhyZXNob2xkOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3Jp
cHRSdW5uZXI+IG1fc2NyaXB0UnVubmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5k
ZXggNTE3YjFhODhmZTI3NGY0ZDkzNWFhMWQ5MGZhNGM1Yjk5YTk2NzBjNS4uZTIxYTg4YmFlZThk
MTk0ODFhNDdkNWUzNGY3ZmZlOGFhNDA2MjExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCkBAIC0yMzMsNyArMjMzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRQcmV2
ZW50RGVmYXVsdEZvckV2ZW50KCkgPSAwOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFNlY29uZHMg
ZXZlbnRUaHJvdHRsaW5nRGVsYXkoKSB7IHJldHVybiBTZWNvbmRzKDApOyB9OworICAgIHZpcnR1
YWwgU2Vjb25kcyBldmVudFRocm90dGxpbmdEZWxheSgpIHsgcmV0dXJuIFNlY29uZHM6Onplcm8o
KTsgfTsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1v
YmlsZURvY1R5cGUoYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGE2
MTlhMGIyNjVhNzY3NTQwMGZkMmUyODlkNjMwZmJlZDk1NGY2MjEuLjg2YmQ2NjRjZjBiNjVmMzI3
MTIxMjkxYzUxMDFmMTRjN2RhZjVkNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTEzOTgsOSArMTM5OCw5IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRy
ZWUpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0jaWZkZWYgSU5TVFJVTUVO
VF9MQVlPVVRfU0NIRURVTElORworI2lmICFMT0dfRElTQUJMRUQKICAgICAgICAgICAgIGlmICht
X2ZpcnN0TGF5b3V0ICYmICFmcmFtZSgpLm93bmVyRWxlbWVudCgpKQotICAgICAgICAgICAgICAg
IHByaW50ZigiRWxhcHNlZCB0aW1lIGJlZm9yZSBmaXJzdCBsYXlvdXQ6ICVsbGRcbiIsIGRvY3Vt
ZW50LmVsYXBzZWRUaW1lKCkuY291bnQoKSk7CisgICAgICAgICAgICAgICAgTE9HKExheW91dCwg
IkZyYW1lVmlldyAlcCBlbGFwc2VkIHRpbWUgYmVmb3JlIGZpcnN0IGxheW91dDogJS4zZnNcbiIs
IHRoaXMsIGRvY3VtZW50LnRpbWVTaW5jZURvY3VtZW50Q3JlYXRpb24oKS52YWx1ZSgpKTsKICNl
bmRpZgogICAgICAgICB9CiAKQEAgLTI0MzcsOSArMjQzNyw5IEBAIHZvaWQgRnJhbWVWaWV3Ojpz
Y3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNl
dCYgb2xkCiB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKGNvbnN0IFNjcm9s
bFBvc2l0aW9uJiBvbGRQb3NpdGlvbiwgY29uc3QgU2Nyb2xsUG9zaXRpb24mIG5ld1Bvc2l0aW9u
KQogewogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKLSAgICBTZWNvbmRzIHRocm90
dGxpbmdEZWxheSA9IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ldmVudFRocm90dGxp
bmdEZWxheSgpIDogU2Vjb25kcygwKTsKKyAgICBTZWNvbmRzIHRocm90dGxpbmdEZWxheSA9IHBh
Z2UgPyBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5ldmVudFRocm90dGxpbmdEZWxheSgpIDogU2Vj
b25kczo6emVybygpOwogCi0gICAgaWYgKHRocm90dGxpbmdEZWxheSA9PSBTZWNvbmRzKDApKSB7
CisgICAgaWYgKHRocm90dGxpbmdEZWxheSA9PSBTZWNvbmRzOjp6ZXJvKCkpIHsKICAgICAgICAg
bV9kZWxheWVkU2Nyb2xsRXZlbnRUaW1lci5zdG9wKCk7CiAgICAgICAgIHNlbmRTY3JvbGxFdmVu
dCgpOwogICAgIH0gZWxzZSBpZiAoIW1fZGVsYXllZFNjcm9sbEV2ZW50VGltZXIuaXNBY3RpdmUo
KSkKQEAgLTI4NzQsOSArMjg3NCw5IEBAIHZvaWQgRnJhbWVWaWV3Ojpjb252ZXJ0U3VidHJlZUxh
eW91dFRvRnVsbExheW91dCgpCiAKIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXRUaW1lckZpcmVkKCkK
IHsKLSNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCisjaWYgIUxPR19ESVNBQkxF
RAogICAgIGlmICghZnJhbWUoKS5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAg
cHJpbnRmKCJMYXlvdXQgdGltZXIgZmlyZWQgYXQgJWxsZFxuIiwgZnJhbWUoKS5kb2N1bWVudCgp
LT5lbGFwc2VkVGltZSgpLmNvdW50KCkpOworICAgICAgICBMT0coTGF5b3V0LCAiRnJhbWVWaWV3
ICVwIGxheW91dCB0aW1lciBmaXJlZCBhdCAlLjNmcyIsIHRoaXMsIGZyYW1lKCkuZG9jdW1lbnQo
KS0+dGltZVNpbmNlRG9jdW1lbnRDcmVhdGlvbigpLnZhbHVlKCkpOwogI2VuZGlmCiAgICAgbGF5
b3V0KCk7CiB9CkBAIC0yOTAxLDE3ICsyOTAxLDE4IEBAIHZvaWQgRnJhbWVWaWV3OjpzY2hlZHVs
ZVJlbGF5b3V0KCkKICAgICBpZiAoZnJhbWUoKS5vd25lclJlbmRlcmVyKCkgJiYgaXNJbkNoaWxk
RnJhbWVXaXRoRnJhbWVGbGF0dGVuaW5nKCkpCiAgICAgICAgIGZyYW1lKCkub3duZXJSZW5kZXJl
cigpLT5zZXROZWVkc0xheW91dChNYXJrQ29udGFpbmluZ0Jsb2NrQ2hhaW4pOwogCi0gICAgc3Rk
OjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkZWxheSA9IGZyYW1lKCkuZG9jdW1lbnQoKS0+bWluaW11
bUxheW91dERlbGF5KCk7Ci0gICAgaWYgKG1fbGF5b3V0VGltZXIuaXNBY3RpdmUoKSAmJiBtX2Rl
bGF5ZWRMYXlvdXQgJiYgIWRlbGF5LmNvdW50KCkpCisgICAgU2Vjb25kcyBkZWxheSA9IGZyYW1l
KCkuZG9jdW1lbnQoKS0+bWluaW11bUxheW91dERlbGF5KCk7CisgICAgaWYgKG1fbGF5b3V0VGlt
ZXIuaXNBY3RpdmUoKSAmJiBtX2RlbGF5ZWRMYXlvdXQgJiYgIWRlbGF5KQogICAgICAgICB1bnNj
aGVkdWxlUmVsYXlvdXQoKTsKKwogICAgIGlmIChtX2xheW91dFRpbWVyLmlzQWN0aXZlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fZGVsYXllZExheW91dCA9IGRlbGF5LmNvdW50KCk7Cisg
ICAgbV9kZWxheWVkTGF5b3V0ID0gZGVsYXkgPiBTZWNvbmRzOjp6ZXJvKCk7CiAKLSNpZmRlZiBJ
TlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCisjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmICgh
ZnJhbWUoKS5kb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAgcHJpbnRmKCJTY2hl
ZHVsaW5nIGxheW91dCBmb3IgJWRcbiIsIGRlbGF5KTsKKyAgICAgICAgTE9HKExheW91dCwgIkZy
YW1lVmlldyAlcCBzY2hlZHVsaW5nIGxheW91dCBmb3IgJS4zZnMiLCB0aGlzLCBkZWxheS52YWx1
ZSgpKTsKICNlbmRpZgogCiAgICAgbV9sYXlvdXRUaW1lci5zdGFydE9uZVNob3QoZGVsYXkpOwpA
QCAtMjk0NCwxMSArMjk0NSwxMSBAQCB2b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91dE9m
U3VidHJlZShSZW5kZXJFbGVtZW50JiBuZXdSZWxheW91dFJvb3QpCiAgICAgfQogCiAgICAgaWYg
KCFsYXlvdXRQZW5kaW5nKCkgJiYgbV9sYXlvdXRTY2hlZHVsaW5nRW5hYmxlZCkgewotICAgICAg
ICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGRlbGF5ID0gcmVuZGVyVmlldy5kb2N1bWVudCgp
Lm1pbmltdW1MYXlvdXREZWxheSgpOworICAgICAgICBTZWNvbmRzIGRlbGF5ID0gcmVuZGVyVmll
dy5kb2N1bWVudCgpLm1pbmltdW1MYXlvdXREZWxheSgpOwogICAgICAgICBBU1NFUlQoIW5ld1Jl
bGF5b3V0Um9vdC5jb250YWluZXIoKSB8fCBpczxSZW5kZXJWaWV3PihuZXdSZWxheW91dFJvb3Qu
Y29udGFpbmVyKCkpIHx8ICFuZXdSZWxheW91dFJvb3QuY29udGFpbmVyKCktPm5lZWRzTGF5b3V0
KCkpOwogICAgICAgICBtX2xheW91dFJvb3QgPSAmbmV3UmVsYXlvdXRSb290OwogICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXQoZnJhbWUoKSk7Ci0g
ICAgICAgIG1fZGVsYXllZExheW91dCA9IGRlbGF5LmNvdW50KCk7CisgICAgICAgIG1fZGVsYXll
ZExheW91dCA9IGRlbGF5ID4gU2Vjb25kczo6emVybygpOwogICAgICAgICBtX2xheW91dFRpbWVy
LnN0YXJ0T25lU2hvdChkZWxheSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zMDQxLDkg
KzMwNDIsOSBAQCB2b2lkIEZyYW1lVmlldzo6dW5zY2hlZHVsZVJlbGF5b3V0KCkKICAgICBpZiAo
IW1fbGF5b3V0VGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWZkZWYgSU5T
VFJVTUVOVF9MQVlPVVRfU0NIRURVTElORworI2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAoIWZy
YW1lKCkuZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgIHByaW50ZigiTGF5b3V0
IHRpbWVyIHVuc2NoZWR1bGVkIGF0ICVkXG4iLCBmcmFtZSgpLmRvY3VtZW50KCktPmVsYXBzZWRU
aW1lKCkpOworICAgICAgICBMT0coTGF5b3V0LCAiRnJhbWVWaWV3ICVwIGxheW91dCB0aW1lciB1
bnNjaGVkdWxlZCBhdCAlLjNmcyIsIHRoaXMsIGZyYW1lKCkuZG9jdW1lbnQoKS0+dGltZVNpbmNl
RG9jdW1lbnRDcmVhdGlvbigpLnZhbHVlKCkpOwogI2VuZGlmCiAgICAgCiAgICAgbV9sYXlvdXRU
aW1lci5zdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDZlYzMwNmRhMTcxZTk3
YzUzOGY0NzM1MWQwZGIxMjc5ZWJkNTFiOTkuLjYxNDQzZjcxYzA4ODllMDc4ZmQ1NmIwY2E1ZmY4
NjIzNzcxODVlYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xODQsNyArMTg0LDcg
QEAgc3RhdGljIGNvbnN0IGJvb2wgZGVmYXVsdFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJs
ZWQgPSBmYWxzZTsKIC8vIFRoaXMgYW1vdW50IG9mIHRpbWUgbXVzdCBoYXZlIGVsYXBzZWQgYmVm
b3JlIHdlIHdpbGwgZXZlbiBjb25zaWRlciBzY2hlZHVsaW5nIGEgbGF5b3V0IHdpdGhvdXQgYSBk
ZWxheS4KIC8vIEZJWE1FOiBGb3IgZmFzdGVyIG1hY2hpbmVzIHRoaXMgdmFsdWUgY2FuIHJlYWxs
eSBiZSBsb3dlcmVkIHRvIDIwMC4gMjUwIGlzIGFkZXF1YXRlLCBidXQgYSBsaXR0bGUgaGlnaAog
Ly8gZm9yIGR1YWwgRzVzLiA6KQotc3RhdGljIGNvbnN0IGF1dG8gbGF5b3V0U2NoZWR1bGVUaHJl
c2hvbGQgPSAyNTBtczsKK3N0YXRpYyBjb25zdCBTZWNvbmRzIGxheW91dFNjaGVkdWxlVGhyZXNo
b2xkID0gU2Vjb25kcygwLjI1KTsKIAogU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAg
ICAgOiBtX3BhZ2UobnVsbHB0cikKQEAgLTQ2MSw3ICs0NjEsNyBAQCB2b2lkIFNldHRpbmdzOjpz
ZXRNaW5pbXVtRE9NVGltZXJJbnRlcnZhbChzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGludGVy
dmFsKQogICAgIH0KIH0KIAotdm9pZCBTZXR0aW5nczo6c2V0TGF5b3V0SW50ZXJ2YWwoc3RkOjpj
aHJvbm86Om1pbGxpc2Vjb25kcyBsYXlvdXRJbnRlcnZhbCkKK3ZvaWQgU2V0dGluZ3M6OnNldExh
eW91dEludGVydmFsKFNlY29uZHMgbGF5b3V0SW50ZXJ2YWwpCiB7CiAgICAgLy8gRklYTUU6IEl0
IHNlZW1zIHdlaXJkIHRoYXQgdGhpcyBmdW5jdGlvbiBtYXkgZGlzcmVnYXJkIHRoZSBzcGVjaWZp
ZWQgbGF5b3V0IGludGVydmFsLgogICAgIC8vIFdlIHNob3VsZCBlaXRoZXIgZXhwb3NlIGxheW91
dFNjaGVkdWxlVGhyZXNob2xkIG9yIGJldHRlciBjb21tdW5pY2F0ZSB0aGlzIGludmFyaWFudC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBkMDY5NTdkYWVmNjY3N2Y3MTkzNWY3ZjViMTNlNTI5
MTNkYmRkZWM1Li4wYTk1N2VmZTBlZWQ5MWEwNDAwOWFlMTU3ZDU0MzY3ODlhZjRkNGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0xNzIsOCArMTcyLDggQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0TWluaW11bURPTVRpbWVySW50ZXJ2YWwoc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcyk7IC8vIEluaXRpYWxpemVkIHRvIERPTVRpbWVyOjpkZWZhdWx0TWluaW11bUlu
dGVydmFsKCkuCiAgICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBtaW5pbXVtRE9NVGltZXJJ
bnRlcnZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bURPTVRpbWVySW50ZXJ2YWw7IH0KIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TGF5b3V0SW50ZXJ2YWwoc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcyk7Ci0gICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBsYXlvdXRJbnRlcnZh
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0SW50ZXJ2YWw7IH0KKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldExheW91dEludGVydmFsKFNlY29uZHMpOworICAgIFNlY29uZHMgbGF5b3V0SW50
ZXJ2YWwoKSBjb25zdCB7IHJldHVybiBtX2xheW91dEludGVydmFsOyB9CiAKICAgICBib29sIGhp
ZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oaWRk
ZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQoYm9vbCk7CkBAIC0zMjUs
NyArMzI1LDcgQEAgcHJpdmF0ZToKICAgICBVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwog
ICAgIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxGb250R2VuZXJpY0ZhbWlsaWVzPiBtX2ZvbnRHZW5l
cmljRmFtaWxpZXM7CiAgICAgU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBt
X3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsKLSAgICBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIG1f
bGF5b3V0SW50ZXJ2YWw7CisgICAgU2Vjb25kcyBtX2xheW91dEludGVydmFsOwogICAgIHN0ZDo6
Y2hyb25vOjptaWxsaXNlY29uZHMgbV9taW5pbXVtRE9NVGltZXJJbnRlcnZhbDsKIAogICAgIFNF
VFRJTkdTX01FTUJFUl9WQVJJQUJMRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5k
ZXggMmM5MzljNzQxMGRjYTJlYjNkNjcwNDU2YTQyYjkyYWYwMDNmMWU0ZS4uMGQ2MjM2MjFmMTY2
NmZhYzViNzg4ODg5ODM0NGM3ZGI2MTI3YzBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29w
ZS5jcHAKQEAgLTE0NywxMiArMTQ3LDYgQEAgdm9pZCBTY29wZTo6cmVtb3ZlUGVuZGluZ1NoZWV0
KFJlbW92ZVBlbmRpbmdTaGVldE5vdGlmaWNhdGlvblR5cGUgbm90aWZpY2F0aW9uKQogICAgIEFT
U0VSVChtX3BlbmRpbmdTdHlsZVNoZWV0Q291bnQgPiAwKTsKIAogICAgIG1fcGVuZGluZ1N0eWxl
U2hlZXRDb3VudC0tOwotICAgIAotI2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcK
LSAgICBpZiAoIW93bmVyRWxlbWVudCgpKQotICAgICAgICBwcmludGYoIlN0eWxlc2hlZXQgbG9h
ZGVkIGF0IHRpbWUgJWQuICVkIHN0eWxlc2hlZXRzIHN0aWxsIHJlbWFpbi5cbiIsIGVsYXBzZWRU
aW1lKCksIG1fcGVuZGluZ1N0eWxlc2hlZXRzKTsKLSNlbmRpZgotCiAgICAgaWYgKG1fcGVuZGlu
Z1N0eWxlU2hlZXRDb3VudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCA2NTY4NWQ3MjQxZDJjMTk3YjRmMjA3NDFkNGFkMGM5
OGZmYjIwMjg4Li5mMjkzOWZkZTY0OWEzODk2ZDNhZWZkNDUwMjc0YzAzZjgyZGIyZjE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBA
QCBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJH
bG9iYWxTY29wZSogY29udGV4dCwgY29ucwogICAgIENGQWJzb2x1dGVUaW1lIG5leHRDRlJ1bkxv
b3BUaW1lckZpcmVEYXRlID0gQ0ZSdW5Mb29wR2V0TmV4dFRpbWVyRmlyZURhdGUoQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwogICAgIGRvdWJsZSB0aW1lVW50
aWxOZXh0Q0ZSdW5Mb29wVGltZXJJblNlY29uZHMgPSBuZXh0Q0ZSdW5Mb29wVGltZXJGaXJlRGF0
ZSAtIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpOwogICAgIGRlYWRsaW5lID0gV2FsbFRpbWU6
Om5vdygpICsgc3RkOjptYXgoCi0gICAgICAgIFNlY29uZHMoMCksIFNlY29uZHModGltZVVudGls
TmV4dENGUnVuTG9vcFRpbWVySW5TZWNvbmRzKSk7CisgICAgICAgIFNlY29uZHM6Onplcm8oKSwg
U2Vjb25kcyh0aW1lVW50aWxOZXh0Q0ZSdW5Mb29wVGltZXJJblNlY29uZHMpKTsKICNlbmRpZgog
CiAgICAgV2FsbFRpbWUgYWJzb2x1dGVUaW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggZjkxNWY3MDJjZDdmYzUyZWI4YzIx
OGM0MWFiNjZjMDE4NmUwMzE2Yy4uZWJjN2U3OTVhM2EyY2Y5MDA5MmNlODA1NjBmNDQzNTA3ZjMy
ZDE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
UHJpdmF0ZS5oCkBAIC0zNDAsNyArMzQwLDcgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJl
bmNlc0NhY2hlTW9kZWxDaGFuZ2VkSW50ZXJuYWxOb3RpZmljYXRpb247CiAtICh2b2lkKV9zZXRB
bHdheXNVc2VBY2NlbGVyYXRlZE92ZXJmbG93U2Nyb2xsOihCT09MKWZsYWc7CiAtIChCT09MKV9h
bHdheXNVc2VBY2NlbGVyYXRlZE92ZXJmbG93U2Nyb2xsOwogLSAodm9pZClfc2V0TGF5b3V0SW50
ZXJ2YWw6KGludClsOwotLSAoaW50KV9sYXlvdXRJbnRlcnZhbDsKKy0gKGludClfbGF5b3V0SW50
ZXJ2YWw7IC8vIE1pbGxpc2VvbmRzLgogLSAodm9pZClfc2V0TWF4UGFyc2VEdXJhdGlvbjooZmxv
YXQpZDsKIC0gKGZsb2F0KV9tYXhQYXJzZUR1cmF0aW9uOwogLSAodm9pZClfc2V0SW50ZXJwb2xh
dGlvblF1YWxpdHk6KGludClxdWFsaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IGYwOTA1ODlhNmY5ZjAwZDZmNTA4YjQ1MzM4YzM5Y2VhYjE5NGM0YWIuLmY3NzRkZjgw
ZWMyMDdlYWY4ZWE3YmZmNjNmOWY3NzY4ZTdhZjcyZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTI3MzYsNyArMjczNiw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hh
bmdlZDooV2ViUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcwogICAgIHNldHRpbmdzLnNldFN0YW5k
YWxvbmUoW3ByZWZlcmVuY2VzIF9zdGFuZGFsb25lXSk7CiAgICAgc2V0dGluZ3Muc2V0VGVsZXBo
b25lTnVtYmVyUGFyc2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIF90ZWxlcGhvbmVOdW1iZXJQYXJz
aW5nRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLnNldEFsbG93TXVsdGlFbGVtZW50SW1wbGljaXRT
dWJtaXNzaW9uKFtwcmVmZXJlbmNlcyBfYWxsb3dNdWx0aUVsZW1lbnRJbXBsaWNpdEZvcm1TdWJt
aXNzaW9uXSk7Ci0gICAgc2V0dGluZ3Muc2V0TGF5b3V0SW50ZXJ2YWwoc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcyhbcHJlZmVyZW5jZXMgX2xheW91dEludGVydmFsXSkpOworICAgIHNldHRpbmdz
LnNldExheW91dEludGVydmFsKFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoW3ByZWZlcmVuY2Vz
IF9sYXlvdXRJbnRlcnZhbF0pKTsKICAgICBzZXR0aW5ncy5zZXRNYXhQYXJzZUR1cmF0aW9uKFtw
cmVmZXJlbmNlcyBfbWF4UGFyc2VEdXJhdGlvbl0pOwogICAgIHNldHRpbmdzLnNldEFsd2F5c1Vz
ZUFjY2VsZXJhdGVkT3ZlcmZsb3dTY3JvbGwoW3ByZWZlcmVuY2VzIF9hbHdheXNVc2VBY2NlbGVy
YXRlZE92ZXJmbG93U2Nyb2xsXSk7CiAgICAgc2V0dGluZ3Muc2V0QXVkaW9TZXNzaW9uQ2F0ZWdv
cnlPdmVycmlkZShbcHJlZmVyZW5jZXMgYXVkaW9TZXNzaW9uQ2F0ZWdvcnlPdmVycmlkZV0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDll
NjBlNmVkZTgzNGE1MzcxZWViYTZiZmIxYmZmZDZhMDBiODM2ZGUuLjlhODU0MTg0ODYyNjNhZmY1
YTMxNWRjZjliOTczNjA4OTU0MzE2NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTMxMTIsNyArMzExMiw3IEBAIHZvaWQgV2ViUGFnZTo6
dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAg
c2V0dGluZ3Muc2V0UGFzc3dvcmRFY2hvRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OnBhc3N3b3JkRWNob0VuYWJsZWRLZXkoKSkpOwogICAgIHNldHRp
bmdzLnNldFBhc3N3b3JkRWNob0R1cmF0aW9uSW5TZWNvbmRzKHN0b3JlLmdldERvdWJsZVZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpwYXNzd29yZEVjaG9EdXJhdGlvbktleSgpKSk7CiAg
ICAgCi0gICAgc2V0dGluZ3Muc2V0TGF5b3V0SW50ZXJ2YWwoc3RkOjpjaHJvbm86OmR1cmF0aW9u
X2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcz4oc3RkOjpjaHJvbm86OmR1cmF0aW9uPGRv
dWJsZT4oc3RvcmUuZ2V0RG91YmxlVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxheW91
dEludGVydmFsS2V5KCkpKSkpOworICAgIHNldHRpbmdzLnNldExheW91dEludGVydmFsKFNlY29u
ZHMoc3RvcmUuZ2V0RG91YmxlVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxheW91dElu
dGVydmFsS2V5KCkpKSk7CiAgICAgc2V0dGluZ3Muc2V0TWF4UGFyc2VEdXJhdGlvbihzdG9yZS5n
ZXREb3VibGVWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6bWF4UGFyc2VEdXJhdGlvbktl
eSgpKSk7CiAKICAgICBzZXR0aW5ncy5zZXRFbmFibGVJbmhlcml0VVJJUXVlcnlDb21wb25lbnQo
c3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjplbmFibGVJbmhlcml0
VVJJUXVlcnlDb21wb25lbnRLZXkoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IGViYWJjZGFkNDVlNGViNjdlNTJj
MmVhZDU4M2FjNmUzODI1ZDVjMWEuLmJkMzFkMjBlNjU0NTZlNTE1YzMzOWU5MzNmNDhjMWMwNzhk
OGU4ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KQEAgLTIxMzUsNyArMjEzNSw3IEBAIFNlY29uZHMgV2ViUGFnZTo6ZXZl
bnRUaHJvdHRsaW5nRGVsYXkoKSBjb25zdAogICAgIH0KIAogICAgIGlmIChtX2lzSW5TdGFibGVT
dGF0ZSB8fCBtX2VzdGltYXRlZExhdGVuY3kgPD0gU2Vjb25kcygxLjAgLyA2MCkpCi0gICAgICAg
IHJldHVybiBTZWNvbmRzKDApOworICAgICAgICByZXR1cm4gU2Vjb25kczo6emVybygpOwogCiAg
ICAgcmV0dXJuIFNlY29uZHMoc3RkOjptaW48ZG91YmxlPihtX2VzdGltYXRlZExhdGVuY3kudmFs
dWUoKSAqIDIsIDEpKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBkMjExNjhhMmExZjA0NmE3ODFmY2QyNTQ1NzMwMjhkYjNkMTk3ZjZhLi4w
MDA0YzE4NmE2YTY3MzhkNmFlZWM0ODM1ZmE1ODk3ZWNlOTEyYzY1IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTYgQEAKIDIwMTYt
MTEtMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKKyAgICAgICAg
TWlncmF0ZSBzb21lIGxheW91dCB0aW1lci1yZWxhdGVkIGNvZGUgZnJvbSBzdGQ6OmNocm9ubyB0
byBTZWNvbmRzIGFuZCBNb25vdG9uaWNUaW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFVzZSBTZWNvbmRzOjp6ZXJvKCkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25kaXRpb24uY3BwOgorCisyMDE2LTExLTE5
ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCiAgICAgICAgIEZpeCB0
aGUgTWFjIGFuZCBpT1MgYnVsZHMuCiAKICAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RSdW5uZXJXS1dlYlZpZXcubW06CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Db25kaXRpb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Q29uZGl0aW9uLmNwcAppbmRleCBlZTMxZDZhYzIxNGEzNGI2MjE1MTIxN2EwZDEzMDc1Y2I1NTE2
MzkwLi5kZWNhOTZkOTQyOTkwY2VhZmVkODFmMWRjZjBiNjM3NTA4MjY3ZDQzIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Db25kaXRpb24uY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0NvbmRpdGlvbi5jcHAKQEAgLTgxLDcgKzgxLDcgQEAg
dm9pZCBydW5UZXN0KAogICAgIHVuc2lnbmVkIG51bU1lc3NhZ2VzUGVyUHJvZHVjZXIsCiAgICAg
Tm90aWZ5U3R5bGUgbm90aWZ5U3R5bGUsCiAgICAgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6
aW5maW5pdHkoKSwKLSAgICBTZWNvbmRzIGRlbGF5ID0gU2Vjb25kcygwKSkKKyAgICBTZWNvbmRz
IGRlbGF5ID0gU2Vjb25kczo6emVybygpKQogewogICAgIERlcXVlPHVuc2lnbmVkPiBxdWV1ZTsK
ICAgICBib29sIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsK
</data>
<flag name="review"
          id="317889"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>