<?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>150689</bug_id>
          
          <creation_ts>2015-10-29 14:10:21 -0700</creation_ts>
          <short_desc>Web Inspector: Handle or Remove ParseHTML Timeline Event Records</short_desc>
          <delta_ts>2015-11-03 12:28:33 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1137641</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-10-29 14:10:21 -0700</bug_when>
    <thetext>* SUMMARY
Handle or Remove ParseHTML Timeline Event Records.

Are these records worth showing? Do they account for non-trivial amounts of time / markers? Should they just be removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137642</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-10-29 14:11:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/23321272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137677</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-10-29 15:13:41 -0700</bug_when>
    <thetext>I vote for removing it. If we showed it, I would want to see JS and CSS parse time too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137721</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-10-29 17:00:09 -0700</bug_when>
    <thetext>Loading cnn.com ParseHTML happened 553 times. Of those 553, only 15 were greater than 0.1ms. They were:

    ParseHTML 0.10ms
    ParseHTML 0.37ms
    ParseHTML 0.41ms
    ParseHTML 0.56ms
    ParseHTML 0.66ms
    ParseHTML 0.77ms
    ParseHTML 1.10ms
    ParseHTML 1.36ms
    ParseHTML 1.43ms
    ParseHTML 1.72ms
    ParseHTML 3.03ms
    ParseHTML 43.2ms
    ParseHTML 70.4ms
    ParseHTML 104ms
    ParseHTML 112ms

A handful were long blocks of time (100ms+) which seem worth including in the timeline. But I haven&apos;t yet checked the nesting of these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137809</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-10-29 22:22:07 -0700</bug_when>
    <thetext>&gt; A handful were long blocks of time (100ms+) which seem worth including in
&gt; the timeline. But I haven&apos;t yet checked the nesting of these.

This is misleading. It turns out ParseHTML can have children, such as EvaluateScript, and that would then be where the majority of time is spent. I should recalculate these and determine just the time associated with parsing HTML itself, which may therefore be much smaller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137887</commentid>
    <comment_count>5</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-30 10:32:39 -0700</bug_when>
    <thetext>I think the only time it would be worth seeing is if it were unusually large. Perhaps you should test this on the all-in-one HTML5 spec page.

http://www.w3.org/TR/html5/single-page.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137888</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-30 10:33:46 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I think the only time it would be worth seeing is if it were unusually
&gt; large. Perhaps you should test this on the all-in-one HTML5 spec page.
&gt; 
&gt; http://www.w3.org/TR/html5/single-page.html

It would be useful to know when large JS or JSON took a long time to parse too, but I think that would be a different parse record.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137899</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-10-30 11:07:01 -0700</bug_when>
    <thetext>I&apos;m pretty sure these ParseHTML records will always be small, given how the parser handles incoming data in small chunks from the network. It also starts and stops as it hits &lt;script&gt; and &lt;style&gt; tags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138730</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-02 15:25:43 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; I think the only time it would be worth seeing is if it were unusually
&gt; &gt; large. Perhaps you should test this on the all-in-one HTML5 spec page.
&gt; &gt; 
&gt; &gt; http://www.w3.org/TR/html5/single-page.html

Reloading this page there were:

  - 805 ParseHTML records
  - Ranging from 0.01ms - 9.23ms accounting for children
  - The longest ParseHTML records were solely parsing scheduling a style recalc / invaliding layout
  - 43.5% were &lt;= 1ms

Reloading cnn.com there was:

  - &gt;11900 ParseHTML records
  - Ranging from 0.00ms - 8.50ms
  - The longest being the 2nd record received!
  - 99.9% were &lt;= 1ms

Reloading apple.com there was:

  - 34 ParseHTML records
  - Ranging from 0.00ms - 2.39ms
  - Again the longest were the first few records received
  - 94% where &lt;= 1ms

As suspected, this is only really apparent in the case of the very very large document. For most pages, and certainly after initial page load, parse time becomes insignificant. The only advantage I can see to keeping these records is that it, when debugging page load we could account for a few ms of &quot;Other&quot; time in some frames for Rendering Frames timelines (as right now this is contributing to Other) but it is still a small chunk.

(In reply to comment #7)
&gt; I&apos;m pretty sure these ParseHTML records will always be small, given how the
&gt; parser handles incoming data in small chunks from the network. It also
&gt; starts and stops as it hits &lt;script&gt; and &lt;style&gt; tags.

Yep, that appears to be the case.

--

I vote dropping it, I&apos;ll put up a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138991</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-03 11:30:41 -0800</bug_when>
    <thetext>&gt; I vote dropping it, I&apos;ll put up a patch.

Looking at other browsers:

  - Firefox doesn&apos;t appear to have this kind of information
  - Chrome includes it in their Timeline
    - Waterfall you can see which events were triggered by parsing (send requests, evaluate script)
    - Same in the Flame Chart view.

I think that information could be pretty useful even if it may be obvious in most cases. We may want to add this back later as we improve visualization of timeline data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138995</commentid>
    <comment_count>10</comment_count>
      <attachid>264704</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-03 11:34:50 -0800</bug_when>
    <thetext>Created attachment 264704
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138997</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 11:37:15 -0800</bug_when>
    <thetext>Attachment 264704 did not pass style-queue:


ERROR: Source/WebCore/html/parser/HTMLDocumentParser.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138998</commentid>
    <comment_count>12</comment_count>
      <attachid>264705</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-03 11:38:59 -0800</bug_when>
    <thetext>Created attachment 264705
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139019</commentid>
    <comment_count>13</comment_count>
      <attachid>264705</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 12:28:28 -0800</bug_when>
    <thetext>Comment on attachment 264705
[PATCH] Proposed Fix

Clearing flags on attachment: 264705

Committed r191967: &lt;http://trac.webkit.org/changeset/191967&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139020</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 12:28:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264704</attachid>
            <date>2015-11-03 11:34:50 -0800</date>
            <delta_ts>2015-11-03 11:38:59 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>remove-parsehtml.patch</filename>
            <type>text/plain</type>
            <size>13840</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDY3ZTVkMDAuLjRlNjMwMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTExLTAzICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSGFuZGxl
IG9yIFJlbW92ZSBQYXJzZUhUTUwgVGltZWxpbmUgRXZlbnQgUmVjb3JkcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjg5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wv
VGltZWxpbmUuanNvbjoKKwogMjAxNS0xMS0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIEIzIHNob3VsZCBiZSBhYmxlIHRvIGNvbXBpbGUgYSBQYXRjaHBvaW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1Rp
bWVsaW5lLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1Rp
bWVsaW5lLmpzb24KaW5kZXggZjFhMWE3Yi4uM2E1NTBjYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UaW1lbGluZS5qc29uCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGltZWxpbmUuanNvbgpAQCAtMTUs
NyArMTUsNiBAQAogICAgICAgICAgICAgICAgICJQYWludCIsCiAgICAgICAgICAgICAgICAgIkNv
bXBvc2l0ZSIsCiAgICAgICAgICAgICAgICAgIlJlbmRlcmluZ0ZyYW1lIiwKLSAgICAgICAgICAg
ICAgICAiUGFyc2VIVE1MIiwKICAgICAgICAgICAgICAgICAiVGltZXJJbnN0YWxsIiwKICAgICAg
ICAgICAgICAgICAiVGltZXJSZW1vdmUiLAogICAgICAgICAgICAgICAgICJUaW1lckZpcmUiLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDQ2YThhY2UuLjVmNmFiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBA
QAorMjAxNS0xMS0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEhhbmRsZSBvciBSZW1vdmUgUGFyc2VIVE1MIFRpbWVsaW5l
IEV2ZW50IFJlY29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MDY4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlbW92ZSBQYXJzZUhUTUwgbmVzdGluZyByZWNvcmRpbmdzLiBXZSB3ZXJlIG5vdCB1
c2luZyB0aGVtCisgICAgICAgIGFuZCBmb3IgbW9zdCBwYWdlcyB0aGVpciBzZWxmLXRpbWUgaXMg
dmVyeSBzbWFsbCBpbiBjb21wYXJpc29uCisgICAgICAgIHRvIG90aGVyIGV2ZW50cy4gV2UgbWF5
IGNvbnNpZGVyIGFkZGluZyBpdCBiYWNrIGxhdGVyIGZvcgorICAgICAgICBVSSBwdXJwb3NlcyBi
dXQgZm9yIG5vdyB0aGUgZnJvbnRlbmQgZG9lc24ndCB1c2UgdGhlIHJlY29yZHMKKyAgICAgICAg
c28gbGV0cyByZW1vdmUgaXQuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9r
ZW5pemVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFdyaXRlSFRNTEltcGwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUxJbXBsKTogRGVsZXRlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUwpOiBEZWxl
dGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxXcml0ZUhUTUwpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkV3Jp
dGVIVE1MKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvUHJvdG9jb2wpOiBEZWxldGVk
LgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVBhcnNlSFRNTERhdGEpOiBEZWxldGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaDoKKwogMjAxNS0xMS0w
MiAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIGhhc092ZXJmbG93
Q2xpcCgpIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdmFsaWQgbGF5ZXIoKS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDYz
YjNiNDAuLjk2YzBiNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkhUTUxTY3Jp
cHRSdW5uZXIuaCIKICNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXIuaCIKICNpbmNsdWRlICJIVE1M
RG9jdW1lbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNs
dWRlICJGcmFtZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI0NywxMyArMjQ3LDYg
QEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2Rl
IG1vZGUpCiAKICAgICBQdW1wU2Vzc2lvbiBzZXNzaW9uKG1fcHVtcFNlc3Npb25OZXN0aW5nTGV2
ZWwsIGNvbnRleHRGb3JQYXJzaW5nU2Vzc2lvbigpKTsKIAotICAgIC8vIFdlIHRlbGwgdGhlIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbiBhYm91dCBldmVyeSBwdW1wLCBldmVuIGlmIHdlCi0gICAg
Ly8gZW5kIHVwIHB1bXBpbmcgbm90aGluZy4gIEl0IGNhbiBmaWx0ZXIgb3V0IGVtcHR5IHB1bXBz
IGl0c2VsZi4KLSAgICAvLyBGSVhNRTogbV9pbnB1dC5jdXJyZW50KCkubGVuZ3RoKCkgaXMgb25s
eSBhY2N1cmF0ZSBpZiB3ZQotICAgIC8vIGVuZCB1cCBwYXJzaW5nIHRoZSB3aG9sZSBidWZmZXIg
aW4gdGhpcyBwdW1wLiAgV2Ugc2hvdWxkIHBhc3MgaG93Ci0gICAgLy8gbXVjaCB3ZSBwYXJzZWQg
YXMgcGFydCBvZiBkaWRXcml0ZUhUTUwgaW5zdGVhZCBvZiB3aWxsV3JpdGVIVE1MLgotICAgIGF1
dG8gY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsV3JpdGVIVE1MKGRvY3Vt
ZW50KCksIG1faW5wdXQuY3VycmVudCgpLmN1cnJlbnRMaW5lKCkuemVyb0Jhc2VkSW50KCkpOwot
CiAgICAgbV94c3NBdWRpdG9yLmluaXQoZG9jdW1lbnQoKSwgJm1feHNzQXVkaXRvckRlbGVnYXRl
KTsKIAogICAgIHdoaWxlIChjYW5UYWtlTmV4dFRva2VuKG1vZGUsIHNlc3Npb24pICYmICFzZXNz
aW9uLm5lZWRzWWllbGQpIHsKQEAgLTI5NCw4ICsyODcsNiBAQCB2b2lkIEhUTUxEb2N1bWVudFBh
cnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKICAgICAgICAgfQogICAg
ICAgICBtX3ByZWxvYWRTY2FubmVyLT5zY2FuKCptX3ByZWxvYWRlciwgKmRvY3VtZW50KCkpOwog
ICAgIH0KLQotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MKGNvb2tp
ZSwgbV9pbnB1dC5jdXJyZW50KCkuY3VycmVudExpbmUoKS56ZXJvQmFzZWRJbnQoKSk7CiB9CiAK
IHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbUhUTUxUb2tlbihIVE1M
VG9rZW5pemVyOjpUb2tlblB0ciYgcmF3VG9rZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDQ0OGZjNmQuLmU1
MjdkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCkBAIC04MzIsMjIgKzgzMiw2IEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJj
ZSYgY2FjCiAgICAgfQogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsV3JpdGVIVE1MSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBzdGFydExpbmUsIEZyYW1lKiBmcmFtZSkK
LXsKLSAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpKSB7Ci0gICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxXcml0ZUhUTUwoc3Rh
cnRMaW5lLCBmcmFtZSk7Ci0gICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQt
PmlkKCk7Ci0gICAgfQotICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUo
aW5zdHJ1bWVudGluZ0FnZW50cywgdGltZWxpbmVBZ2VudElkKTsKLX0KLQotdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRlSFRNTEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJiBjb29raWUsIHVuc2lnbmVkIGVuZExpbmUpCi17Ci0gICAgaWYgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdl
bnQoY29va2llKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkV3JpdGVIVE1MKGVuZExpbmUp
OwotfQotCiAvLyBKYXZhU2NyaXB0Q29yZSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IHNob3VsZCBr
bm93IENvbnNvbGUgTWVzc2FnZVR5cGVzLgogc3RhdGljIGJvb2wgaXNDb25zb2xlQXNzZXJ0TWVz
c2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRl
eCBmNDhhNGIxLi42OTZkODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0yMDMsOSArMjAzLDYgQEAgcHVibGljOgog
ICAgIHN0YXRpYyB2b2lkIGRpZFJ1bkphdmFTY3JpcHREaWFsb2coY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbERlc3Ryb3lDYWNoZWRS
ZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYpOwogCi0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MKERvY3VtZW50KiwgdW5zaWduZWQgc3RhcnRMaW5l
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJiwgdW5zaWduZWQgZW5kTGluZSk7Ci0KICAgICBzdGF0aWMgdm9pZCBhZGRN
ZXNzYWdlVG9Db25zb2xlKFBhZ2UmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xl
TWVzc2FnZT4pOwogCiAgICAgLy8gRklYTUU6IENvbnZlcnQgdG8gU2NyaXB0QXJndW1lbnRzIHRv
IG1hdGNoIG5vbi13b3JrZXIgY29udGV4dC4KQEAgLTM4Myw5ICszODAsNiBAQCBwcml2YXRlOgog
ICAgIHN0YXRpYyB2b2lkIGRpZFJ1bkphdmFTY3JpcHREaWFsb2dJbXBsKGNvbnN0IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxEZXN0cm95Q2Fj
aGVkUmVzb3VyY2VJbXBsKENhY2hlZFJlc291cmNlJik7CiAKLSAgICBzdGF0aWMgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxXcml0ZUhUTUxJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCB1bnNpZ25lZCBzdGFydExpbmUsIEZyYW1lKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkV3Jp
dGVIVE1MSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCB1bnNpZ25l
ZCBlbmRMaW5lKTsKLQogICAgIHN0YXRpYyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpDb25zb2xlTWVz
c2FnZT4pOwogCiAgICAgc3RhdGljIHZvaWQgY29uc29sZUNvdW50SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgSlNDOjpFeGVjU3RhdGUqLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVu
dHM+JiYpOwpAQCAtMTA1NywyMSArMTA1MSw2IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSYKICAg
ICB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChjYWNoZWRSZXNvdXJjZSk7CiB9CiAKLWlu
bGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsV3JpdGVIVE1MKERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgc3RhcnRMaW5l
KQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAg
ICAgICByZXR1cm4gd2lsbFdyaXRlSFRNTEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHN0YXJ0
TGluZSwgZG9jdW1lbnQtPmZyYW1lKCkpOwotICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRXcml0ZUhUTUwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29r
aWUsIHVuc2lnbmVkIGVuZExpbmUpCi17Ci0gICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KHZvaWQoKSk7Ci0gICAgaWYgKGNvb2tpZS5pc1ZhbGlkKCkpCi0gICAgICAgIGRpZFdyaXRlSFRN
TEltcGwoY29va2llLCBlbmRMaW5lKTsKLX0KLQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRPcGVuRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgUmVmUHRyPERhdGFiYXNlPiYmIGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24pCiB7CiAgICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggMTIzOWUyOC4uZTJmNDczZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcApAQCAtMzk1LDIwICszOTUsNiBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmRpZFBhaW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IExheW91dFJlY3QmCiAgICAg
ZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZTo6UGFpbnQpOwogfQog
Ci12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxXcml0ZUhUTUwodW5zaWduZWQgc3Rh
cnRMaW5lLCBGcmFtZSogZnJhbWUpCi17Ci0gICAgcHVzaEN1cnJlbnRSZWNvcmQoVGltZWxpbmVS
ZWNvcmRGYWN0b3J5OjpjcmVhdGVQYXJzZUhUTUxEYXRhKHN0YXJ0TGluZSksIFRpbWVsaW5lUmVj
b3JkVHlwZTo6UGFyc2VIVE1MLCB0cnVlLCBmcmFtZSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6ZGlkV3JpdGVIVE1MKHVuc2lnbmVkIGVuZExpbmUpCi17Ci0gICAgaWYgKCFt
X3JlY29yZFN0YWNrLmlzRW1wdHkoKSkgewotICAgICAgICBjb25zdCBUaW1lbGluZVJlY29yZEVu
dHJ5JiBlbnRyeSA9IG1fcmVjb3JkU3RhY2subGFzdCgpOwotICAgICAgICBlbnRyeS5kYXRhLT5z
ZXRJbnRlZ2VyKCJlbmRMaW5lIiwgZW5kTGluZSk7Ci0gICAgICAgIGRpZENvbXBsZXRlQ3VycmVu
dFJlY29yZChUaW1lbGluZVJlY29yZFR5cGU6OlBhcnNlSFRNTCk7Ci0gICAgfQotfQotCiB2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEluc3RhbGxUaW1lcihpbnQgdGltZXJJZCwgaW50
IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCwgRnJhbWUqIGZyYW1lKQogewogICAgIGFwcGVuZFJl
Y29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVySW5zdGFsbERhdGEodGltZXJJ
ZCwgdGltZW91dCwgc2luZ2xlU2hvdCksIFRpbWVsaW5lUmVjb3JkVHlwZTo6VGltZXJJbnN0YWxs
LCB0cnVlLCBmcmFtZSk7CkBAIC01MzEsOSArNTE3LDYgQEAgc3RhdGljIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5cGUgdG9Qcm90b2NvbChUaW1lbGluZVJlY29yZFR5cGUg
dHkKICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6UmVuZGVyaW5nRnJhbWU6CiAgICAgICAg
IHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpSZW5kZXJp
bmdGcmFtZTsKIAotICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpQYXJzZUhUTUw6Ci0gICAg
ICAgIHJldHVybiBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlOjpQYXJz
ZUhUTUw7Ci0KICAgICBjYXNlIFRpbWVsaW5lUmVjb3JkVHlwZTo6VGltZXJJbnN0YWxsOgogICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZTo6VGlt
ZXJJbnN0YWxsOwogICAgIGNhc2UgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lclJlbW92ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmlu
ZGV4IGQzZTQ3MjQuLjAxZGNjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNjcsOCArNjcsNiBAQCBlbnVtIGNsYXNzIFRp
bWVsaW5lUmVjb3JkVHlwZSB7CiAgICAgQ29tcG9zaXRlLAogICAgIFJlbmRlcmluZ0ZyYW1lLAog
Ci0gICAgUGFyc2VIVE1MLAotCiAgICAgVGltZXJJbnN0YWxsLAogICAgIFRpbWVyUmVtb3ZlLAog
ICAgIFRpbWVyRmlyZSwKQEAgLTEzNyw4ICsxMzUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxs
UmVjYWxjdWxhdGVTdHlsZShGcmFtZSopOwogICAgIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZSgp
OwogICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRnJhbWUqKTsKLSAgICB2
b2lkIHdpbGxXcml0ZUhUTUwodW5zaWduZWQgc3RhcnRMaW5lLCBGcmFtZSopOwotICAgIHZvaWQg
ZGlkV3JpdGVIVE1MKHVuc2lnbmVkIGVuZExpbmUpOwogICAgIHZvaWQgZGlkVGltZVN0YW1wKEZy
YW1lJiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
aW50IGNhbGxiYWNrSWQsIEZyYW1lKik7CiAgICAgdm9pZCBkaWRDYW5jZWxBbmltYXRpb25GcmFt
ZShpbnQgY2FsbGJhY2tJZCwgRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKaW5kZXggZTg4M2IyOC4uMDlkZWVlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5j
cHAKQEAgLTExOSwxMyArMTE5LDYgQEAgUmVmPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNv
cmRGYWN0b3J5OjpjcmVhdGVUaW1lU3RhbXBEYXRhKGNvbnN0IFN0cmluZyYgbWUKICAgICByZXR1
cm4gV1RGOjptb3ZlKGRhdGEpOwogfQogCi1SZWY8SW5zcGVjdG9yT2JqZWN0PiBUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZVBhcnNlSFRNTERhdGEodW5zaWduZWQgc3RhcnRMaW5lKQotewot
ICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwotICAgIGRhdGEtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJzdGFydExpbmUiKSwgc3RhcnRM
aW5lKTsKLSAgICByZXR1cm4gV1RGOjptb3ZlKGRhdGEpOwotfQotCiBSZWY8SW5zcGVjdG9yT2Jq
ZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUFuaW1hdGlvbkZyYW1lRGF0YShpbnQg
Y2FsbGJhY2tJZCkKIHsKICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0gSW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9U
aW1lbGluZVJlY29yZEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGlu
ZVJlY29yZEZhY3RvcnkuaAppbmRleCA5YWNhZTdlLi45N2U5NTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCkBAIC02MSw3ICs2MSw2
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBj
cmVhdGVUaW1lckluc3RhbGxEYXRhKGludCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5n
bGVTaG90KTsKICAgICBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBjcmVh
dGVFdmFsdWF0ZVNjcmlwdERhdGEoY29uc3QgU3RyaW5nJiwgZG91YmxlIGxpbmVOdW1iZXIpOwog
ICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVRpbWVTdGFt
cERhdGEoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gY3JlYXRlUGFyc2VIVE1MRGF0YSh1bnNpZ25lZCBzdGFydExpbmUpOwogICAgIHN0
YXRpYyBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZUFuaW1hdGlvbkZyYW1l
RGF0YShpbnQgY2FsbGJhY2tJZCk7CiAgICAgc3RhdGljIFJlZjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4gY3JlYXRlUGFpbnREYXRhKGNvbnN0IEZsb2F0UXVhZCYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwppbmRleCAwYzUzYWU1Li5lY2MyMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0xMS0wMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEhhbmRsZSBvciBSZW1vdmUg
UGFyc2VIVE1MIFRpbWVsaW5lIEV2ZW50IFJlY29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDY4OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1l
bGluZU1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLnBy
b3RvdHlwZS5fcHJvY2Vzc1JlY29yZCk6CisKIDIwMTUtMTAtMzAgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFVuZXhwZWN0ZWQg
YmFja2dyb3VuZCBjb2xvciBiZWhpbmQgdGhlIENvbnRpbnVlIGJ1dHRvbiBpbiB0aGUgRGVidWdn
ZXJEYXNoYm9hcmRWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXgg
NTgyYWM2OC4uOTM4ZTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwpA
QCAtMzEzLDEwICszMTMsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3Mg
VGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZW5kZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3JkKHN0
YXJ0VGltZSwgZW5kVGltZSk7CiAKLSAgICAgICAgY2FzZSBUaW1lbGluZUFnZW50LkV2ZW50VHlw
ZS5QYXJzZUhUTUw6Ci0gICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzE1MDY4OT4gV2ViIEluc3BlY3RvcjogSGFuZGxlIG9yIFJlbW92ZSBQYXJzZUhUTUwgVGltZWxp
bmUgRXZlbnQgUmVjb3JkcwotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0KICAgICAgICAgY2Fz
ZSBUaW1lbGluZUFnZW50LkV2ZW50VHlwZS5FdmFsdWF0ZVNjcmlwdDoKICAgICAgICAgICAgIGlm
ICghc291cmNlQ29kZUxvY2F0aW9uKSB7CiAgICAgICAgICAgICAgICAgdmFyIG1haW5GcmFtZSA9
IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264705</attachid>
            <date>2015-11-03 11:38:59 -0800</date>
            <delta_ts>2015-11-03 12:28:28 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>better2.patch</filename>
            <type>text/plain</type>
            <size>14040</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGZlYmY2MDMuLmFjYzJjN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE1LTExLTAzICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSGFuZGxl
IG9yIFJlbW92ZSBQYXJzZUhUTUwgVGltZWxpbmUgRXZlbnQgUmVjb3JkcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNjg5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wv
VGltZWxpbmUuanNvbjoKKwogMjAxNS0xMS0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIEIzL0FpciBzaG91bGQgdXNlIGJ1YmJsZSBzb3J0IGZvciB0aGVpciBp
bnNlcnRpb24gc2V0cywgYmVjYXVzZSBpdCdzIGZhc3RlciB0aGFuIHN0ZDo6c3RhYmxlX3NvcnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGlt
ZWxpbmUuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvVGlt
ZWxpbmUuanNvbgppbmRleCBmMWExYTdiLi4zYTU1MGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1RpbWVsaW5lLmpzb24KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9UaW1lbGluZS5qc29uCkBAIC0xNSw3
ICsxNSw2IEBACiAgICAgICAgICAgICAgICAgIlBhaW50IiwKICAgICAgICAgICAgICAgICAiQ29t
cG9zaXRlIiwKICAgICAgICAgICAgICAgICAiUmVuZGVyaW5nRnJhbWUiLAotICAgICAgICAgICAg
ICAgICJQYXJzZUhUTUwiLAogICAgICAgICAgICAgICAgICJUaW1lckluc3RhbGwiLAogICAgICAg
ICAgICAgICAgICJUaW1lclJlbW92ZSIsCiAgICAgICAgICAgICAgICAgIlRpbWVyRmlyZSIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMWQ1Nzg0Ni4uMWM1MzY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBA
CisyMDE1LTExLTAzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogSGFuZGxlIG9yIFJlbW92ZSBQYXJzZUhUTUwgVGltZWxpbmUg
RXZlbnQgUmVjb3JkcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUwNjg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVtb3ZlIFBhcnNlSFRNTCBuZXN0aW5nIHJlY29yZGluZ3MuIFdlIHdlcmUgbm90IHVz
aW5nIHRoZW0KKyAgICAgICAgYW5kIGZvciBtb3N0IHBhZ2VzIHRoZWlyIHNlbGYtdGltZSBpcyB2
ZXJ5IHNtYWxsIGluIGNvbXBhcmlzb24KKyAgICAgICAgdG8gb3RoZXIgZXZlbnRzLiBXZSBtYXkg
Y29uc2lkZXIgYWRkaW5nIGl0IGJhY2sgbGF0ZXIgZm9yCisgICAgICAgIFVJIHB1cnBvc2VzIGJ1
dCBmb3Igbm93IHRoZSBmcm9udGVuZCBkb2Vzbid0IHVzZSB0aGUgcmVjb3JkcworICAgICAgICBz
byBsZXRzIHJlbW92ZSBpdC4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tl
bml6ZXIpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsV3JpdGVIVE1MSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFdyaXRlSFRNTEltcGwpOiBEZWxldGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRlSFRNTCk6IERlbGV0
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2lsbFdyaXRlSFRNTCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRXcml0
ZUhUTUwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dG9Qcm90b2NvbCk6IERlbGV0ZWQu
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUGFyc2VIVE1MRGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oOgorCiAyMDE1LTExLTAz
ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAg
W1N0cmVhbXMgQVBJXSBWZW5kZWQgcHJvbWlzZSBjYXBhYmlsaXRpZXMgc2hvdWxkIG5vdCBuZWVk
IEByZXNvbHZlL0ByZWplY3QgZmllbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA2M2IzYjQwLi5mNmZhZWJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAg
LTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgIkhUTUxEb2N1bWVudFBhcnNlci5oIgogCiAjaW5j
bHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
SFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlclNjaGVkdWxlci5oIgogI2luY2x1
ZGUgIkhUTUxQcmVsb2FkU2Nhbm5lci5oIgogI2luY2x1ZGUgIkhUTUxTY3JpcHRSdW5uZXIuaCIK
ICNpbmNsdWRlICJIVE1MVHJlZUJ1aWxkZXIuaCIKLSNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0yNDcsMTMgKzI0Nyw2IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1w
VG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2RlKQogCiAgICAgUHVtcFNlc3Npb24gc2Vzc2lv
bihtX3B1bXBTZXNzaW9uTmVzdGluZ0xldmVsLCBjb250ZXh0Rm9yUGFyc2luZ1Nlc3Npb24oKSk7
CiAKLSAgICAvLyBXZSB0ZWxsIHRoZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gYWJvdXQgZXZl
cnkgcHVtcCwgZXZlbiBpZiB3ZQotICAgIC8vIGVuZCB1cCBwdW1waW5nIG5vdGhpbmcuICBJdCBj
YW4gZmlsdGVyIG91dCBlbXB0eSBwdW1wcyBpdHNlbGYuCi0gICAgLy8gRklYTUU6IG1faW5wdXQu
Y3VycmVudCgpLmxlbmd0aCgpIGlzIG9ubHkgYWNjdXJhdGUgaWYgd2UKLSAgICAvLyBlbmQgdXAg
cGFyc2luZyB0aGUgd2hvbGUgYnVmZmVyIGluIHRoaXMgcHVtcC4gIFdlIHNob3VsZCBwYXNzIGhv
dwotICAgIC8vIG11Y2ggd2UgcGFyc2VkIGFzIHBhcnQgb2YgZGlkV3JpdGVIVE1MIGluc3RlYWQg
b2Ygd2lsbFdyaXRlSFRNTC4KLSAgICBhdXRvIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFdyaXRlSFRNTChkb2N1bWVudCgpLCBtX2lucHV0LmN1cnJlbnQoKS5jdXJyZW50
TGluZSgpLnplcm9CYXNlZEludCgpKTsKLQogICAgIG1feHNzQXVkaXRvci5pbml0KGRvY3VtZW50
KCksICZtX3hzc0F1ZGl0b3JEZWxlZ2F0ZSk7CiAKICAgICB3aGlsZSAoY2FuVGFrZU5leHRUb2tl
bihtb2RlLCBzZXNzaW9uKSAmJiAhc2Vzc2lvbi5uZWVkc1lpZWxkKSB7CkBAIC0yOTQsOCArMjg3
LDYgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNN
b2RlIG1vZGUpCiAgICAgICAgIH0KICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+c2NhbigqbV9w
cmVsb2FkZXIsICpkb2N1bWVudCgpKTsKICAgICB9Ci0KLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFdyaXRlSFRNTChjb29raWUsIG1faW5wdXQuY3VycmVudCgpLmN1cnJlbnRMaW5l
KCkuemVyb0Jhc2VkSW50KCkpOwogfQogCiB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6Y29uc3Ry
dWN0VHJlZUZyb21IVE1MVG9rZW4oSFRNTFRva2VuaXplcjo6VG9rZW5QdHImIHJhd1Rva2VuKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAppbmRleCA0NDhmYzZkLi5lNTI3ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtODMyLDIyICs4
MzIsNiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERlc3Ryb3lDYWNoZWRS
ZXNvdXJjZUltcGwoQ2FjaGVkUmVzb3VyY2UmIGNhYwogICAgIH0KIH0KIAotSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRN
TEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgdW5zaWduZWQg
c3RhcnRMaW5lLCBGcmFtZSogZnJhbWUpCi17Ci0gICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7
Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgewotICAgICAgICB0aW1lbGlu
ZUFnZW50LT53aWxsV3JpdGVIVE1MKHN0YXJ0TGluZSwgZnJhbWUpOwotICAgICAgICB0aW1lbGlu
ZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwotICAgIH0KLSAgICByZXR1cm4gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVsaW5lQWdl
bnRJZCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUxJ
bXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCB1bnNpZ25l
ZCBlbmRMaW5lKQotewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCi0gICAgICAgIHRpbWVsaW5lQWdl
bnQtPmRpZFdyaXRlSFRNTChlbmRMaW5lKTsKLX0KLQogLy8gSmF2YVNjcmlwdENvcmUgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudCBzaG91bGQga25vdyBDb25zb2xlIE1lc3NhZ2VUeXBlcy4KIHN0YXRp
YyBib29sIGlzQ29uc29sZUFzc2VydE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
Z2VUeXBlIHR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZjQ4YTRiMS4uNjk2ZDgyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAt
MjAzLDkgKzIwMyw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRSdW5KYXZhU2NyaXB0
RGlhbG9nKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRp
YyB2b2lkIHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKIAotICAg
IHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFdyaXRlSFRNTChEb2N1
bWVudCosIHVuc2lnbmVkIHN0YXJ0TGluZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkV3JpdGVIVE1M
KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGVuZExpbmUp
OwotCiAgICAgc3RhdGljIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShQYWdlJiwgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKIAogICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRvIFNjcmlwdEFyZ3VtZW50cyB0byBtYXRjaCBub24td29ya2VyIGNvbnRleHQuCkBAIC0z
ODMsOSArMzgwLDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRSdW5KYXZhU2NyaXB0
RGlhbG9nSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBz
dGF0aWMgdm9pZCB3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlSW1wbChDYWNoZWRSZXNvdXJjZSYp
OwogCi0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVI
VE1MSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgdW5zaWduZWQgc3RhcnRMaW5lLCBGcmFtZSop
OwotICAgIHN0YXRpYyB2b2lkIGRpZFdyaXRlSFRNTEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJiwgdW5zaWduZWQgZW5kTGluZSk7Ci0KICAgICBzdGF0aWMgdm9pZCBh
ZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6Q29uc29sZU1lc3NhZ2U+KTsKIAogICAgIHN0YXRpYyB2b2lkIGNvbnNv
bGVDb3VudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEpTQzo6RXhlY1N0YXRlKiwgUmVmUHRy
PEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKTsKQEAgLTEwNTcsMjEgKzEwNTEsNiBAQCBp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVz
b3VyY2UoQ2FjaGVkUmVzb3VyY2UmCiAgICAgd2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZUltcGwo
Y2FjaGVkUmVzb3VyY2UpOwogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTChEb2N1bWVudCogZG9j
dW1lbnQsIHVuc2lnbmVkIHN0YXJ0TGluZSkKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkpOwotICAgIGlmIChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIHdpbGxXcml0ZUhUTUxJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBzdGFydExpbmUsIGRvY3VtZW50LT5mcmFtZSgpKTsKLSAgICBy
ZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7Ci19Ci0KLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MKGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCB1bnNpZ25lZCBlbmRMaW5lKQotewotICAgIEZB
U1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChjb29raWUuaXNWYWxp
ZCgpKQotICAgICAgICBkaWRXcml0ZUhUTUxJbXBsKGNvb2tpZSwgZW5kTGluZSk7Ci19Ci0KIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkT3BlbkRhdGFiYXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZlB0cjxEYXRhYmFzZT4mJiBkYXRhYmFzZSwg
Y29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
CmluZGV4IDEyMzllMjguLmUyZjQ3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAgLTM5NSwyMCArMzk1LDYgQEAgdm9p
ZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRQYWludChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBjb25zdCBMYXlvdXRSZWN0JgogICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGlu
ZVJlY29yZFR5cGU6OlBhaW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3
aWxsV3JpdGVIVE1MKHVuc2lnbmVkIHN0YXJ0TGluZSwgRnJhbWUqIGZyYW1lKQotewotICAgIHB1
c2hDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUGFyc2VIVE1MRGF0
YShzdGFydExpbmUpLCBUaW1lbGluZVJlY29yZFR5cGU6OlBhcnNlSFRNTCwgdHJ1ZSwgZnJhbWUp
OwotfQotCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZFdyaXRlSFRNTCh1bnNpZ25l
ZCBlbmRMaW5lKQotewotICAgIGlmICghbV9yZWNvcmRTdGFjay5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgY29uc3QgVGltZWxpbmVSZWNvcmRFbnRyeSYgZW50cnkgPSBtX3JlY29yZFN0YWNrLmxhc3Qo
KTsKLSAgICAgICAgZW50cnkuZGF0YS0+c2V0SW50ZWdlcigiZW5kTGluZSIsIGVuZExpbmUpOwot
ICAgICAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlOjpQYXJz
ZUhUTUwpOwotICAgIH0KLX0KLQogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRJbnN0
YWxsVGltZXIoaW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QsIEZyYW1l
KiBmcmFtZSkKIHsKICAgICBhcHBlbmRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVh
dGVUaW1lckluc3RhbGxEYXRhKHRpbWVySWQsIHRpbWVvdXQsIHNpbmdsZVNob3QpLCBUaW1lbGlu
ZVJlY29yZFR5cGU6OlRpbWVySW5zdGFsbCwgdHJ1ZSwgZnJhbWUpOwpAQCAtNTMxLDkgKzUxNyw2
IEBAIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlIHRvUHJv
dG9jb2woVGltZWxpbmVSZWNvcmRUeXBlIHR5CiAgICAgY2FzZSBUaW1lbGluZVJlY29yZFR5cGU6
OlJlbmRlcmluZ0ZyYW1lOgogICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6VGlt
ZWxpbmU6OkV2ZW50VHlwZTo6UmVuZGVyaW5nRnJhbWU7CiAKLSAgICBjYXNlIFRpbWVsaW5lUmVj
b3JkVHlwZTo6UGFyc2VIVE1MOgotICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpQcm90b2NvbDo6
VGltZWxpbmU6OkV2ZW50VHlwZTo6UGFyc2VIVE1MOwotCiAgICAgY2FzZSBUaW1lbGluZVJlY29y
ZFR5cGU6OlRpbWVySW5zdGFsbDoKICAgICAgICAgcmV0dXJuIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlRpbWVsaW5lOjpFdmVudFR5cGU6OlRpbWVySW5zdGFsbDsKICAgICBjYXNlIFRpbWVsaW5lUmVj
b3JkVHlwZTo6VGltZXJSZW1vdmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBkM2U0NzI0Li4wMWRjYzFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTY3
LDggKzY3LDYgQEAgZW51bSBjbGFzcyBUaW1lbGluZVJlY29yZFR5cGUgewogICAgIENvbXBvc2l0
ZSwKICAgICBSZW5kZXJpbmdGcmFtZSwKIAotICAgIFBhcnNlSFRNTCwKLQogICAgIFRpbWVySW5z
dGFsbCwKICAgICBUaW1lclJlbW92ZSwKICAgICBUaW1lckZpcmUsCkBAIC0xMzcsOCArMTM1LDYg
QEAgcHVibGljOgogICAgIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoRnJhbWUqKTsKICAgICB2
b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoKTsKICAgICB2b2lkIGRpZFNjaGVkdWxlU3R5bGVSZWNh
bGN1bGF0aW9uKEZyYW1lKik7Ci0gICAgdm9pZCB3aWxsV3JpdGVIVE1MKHVuc2lnbmVkIHN0YXJ0
TGluZSwgRnJhbWUqKTsKLSAgICB2b2lkIGRpZFdyaXRlSFRNTCh1bnNpZ25lZCBlbmRMaW5lKTsK
ICAgICB2b2lkIGRpZFRpbWVTdGFtcChGcmFtZSYsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
ZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKGludCBjYWxsYmFja0lkLCBGcmFtZSopOwogICAgIHZv
aWQgZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoaW50IGNhbGxiYWNrSWQsIEZyYW1lKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCmlu
ZGV4IGU4ODNiMjguLjA5ZGVlZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCkBAIC0xMTksMTMgKzExOSw2IEBAIFJlZjxJbnNw
ZWN0b3JPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlVGltZVN0YW1wRGF0YShj
b25zdCBTdHJpbmcmIG1lCiAgICAgcmV0dXJuIFdURjo6bW92ZShkYXRhKTsKIH0KIAotUmVmPElu
c3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQYXJzZUhUTUxEYXRh
KHVuc2lnbmVkIHN0YXJ0TGluZSkKLXsKLSAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiBkYXRhID0g
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBkYXRhLT5zZXRJbnRlZ2VyKEFTQ0lJTGl0
ZXJhbCgic3RhcnRMaW5lIiksIHN0YXJ0TGluZSk7Ci0gICAgcmV0dXJuIFdURjo6bW92ZShkYXRh
KTsKLX0KLQogUmVmPEluc3BlY3Rvck9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVh
dGVBbmltYXRpb25GcmFtZURhdGEoaW50IGNhbGxiYWNrSWQpCiB7CiAgICAgUmVmPEluc3BlY3Rv
ck9iamVjdD4gZGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKaW5kZXggOWFjYWU3ZS4u
OTdlOTUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29y
ZEZhY3RvcnkuaApAQCAtNjEsNyArNjEsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlVGltZXJJbnN0YWxsRGF0YShpbnQgdGltZXJJ
ZCwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CiAgICAgc3RhdGljIFJlZjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4gY3JlYXRlRXZhbHVhdGVTY3JpcHREYXRhKGNvbnN0IFN0cmlu
ZyYsIGRvdWJsZSBsaW5lTnVtYmVyKTsKICAgICBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiBjcmVhdGVUaW1lU3RhbXBEYXRhKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRp
YyBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVBhcnNlSFRNTERhdGEodW5z
aWduZWQgc3RhcnRMaW5lKTsKICAgICBzdGF0aWMgUmVmPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiBjcmVhdGVBbmltYXRpb25GcmFtZURhdGEoaW50IGNhbGxiYWNrSWQpOwogICAgIHN0YXRp
YyBSZWY8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+IGNyZWF0ZVBhaW50RGF0YShjb25zdCBG
bG9hdFF1YWQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggN2UxMDE1Ny4uOTM4YzI1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMTEtMDMg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBIYW5kbGUgb3IgUmVtb3ZlIFBhcnNlSFRNTCBUaW1lbGluZSBFdmVudCBSZWNvcmRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTA2ODkK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX3Byb2Nlc3NSZWNvcmQpOgorCiAyMDE1
LTExLTAyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2Fd
IEFkZCB0dk9TIGFuZCB3YXRjaE9TIHRvIFNVUFBPUlRFRF9QTEFURk9STVMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5l
TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL1RpbWVsaW5lTWFuYWdlci5qcwppbmRleCA1ODJhYzY4Li45MzhlMmViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGlu
ZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCkBAIC0zMTMsMTAgKzMxMyw2IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGluZU1hbmFnZXIgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJl
bmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQoc3RhcnRUaW1lLCBlbmRUaW1lKTsKIAotICAgICAg
ICBjYXNlIFRpbWVsaW5lQWdlbnQuRXZlbnRUeXBlLlBhcnNlSFRNTDoKLSAgICAgICAgICAgIC8v
IEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUwNjg5PiBXZWIgSW5zcGVjdG9yOiBIYW5k
bGUgb3IgUmVtb3ZlIFBhcnNlSFRNTCBUaW1lbGluZSBFdmVudCBSZWNvcmRzCi0gICAgICAgICAg
ICByZXR1cm4gbnVsbDsKLQogICAgICAgICBjYXNlIFRpbWVsaW5lQWdlbnQuRXZlbnRUeXBlLkV2
YWx1YXRlU2NyaXB0OgogICAgICAgICAgICAgaWYgKCFzb3VyY2VDb2RlTG9jYXRpb24pIHsKICAg
ICAgICAgICAgICAgICB2YXIgbWFpbkZyYW1lID0gV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VN
YW5hZ2VyLm1haW5GcmFtZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>