<?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>22469</bug_id>
          
          <creation_ts>2008-11-24 14:56:52 -0800</creation_ts>
          <short_desc>Rename DOMWindowTimer into DOMTimer and move it into separate file</short_desc>
          <delta_ts>2008-11-26 01:10:37 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Dmitry Titov">dimich</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>100073</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2008-11-24 14:56:52 -0800</bug_when>
    <thetext>This is a preparation step for adding timers to Workers. The plan is to eventually move the setTimeout and friends from JSDOMWindowBase to ScriptExecutionContext, make timers thread-aware and at the end to have timers in Workers same way as they are on window object.

The root bug is https://bugs.webkit.org/show_bug.cgi?id=22328
Per suggestion from ap@, I&apos;m doing it in small steps. Here is the first step - to move DOMWindowTimer into its own file and rename it DOMTimer.

Subsequently, I&apos;ll make DOMTimer to be thread-safe and be able to work on a Worker thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100079</commentid>
    <comment_count>1</comment_count>
      <attachid>25454</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2008-11-24 15:16:55 -0800</bug_when>
    <thetext>Created attachment 25454
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100086</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-11-24 15:29:42 -0800</bug_when>
    <thetext>Moving the code seems fine, but I think it should stay in bindings/js as the code is still very JS specific.  If we want to abstract DOMTimers and the setTimeout/setInterval methods enough that they can be used with other bindings (ObjC/COM), then we should move the class then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100087</commentid>
    <comment_count>3</comment_count>
      <attachid>25454</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-24 15:29:43 -0800</bug_when>
    <thetext>Comment on attachment 25454
proposed patch

&gt; +				&lt;FileConfiguration
&gt; +					Name=&quot;Release_PGO|Win32&quot;
&gt; +					&gt;
&gt; +					&lt;Tool
&gt; +						Name=&quot;VCCLCompilerTool&quot;
&gt; +						WholeProgramOptimization=&quot;true&quot;
&gt; +					/&gt;
&gt; +				&lt;/FileConfiguration&gt;

I don&apos;t think we need this in the vcproj, do we?

&gt; +static int lastUsedTimeoutId = 0;

This can go inside the DOMTimer constructor instead of outside the function. It would be nice to scope it a little more tightly.

&gt; +#include &quot;ActiveDOMObject.h&quot;

Why are you including this header in DOMTimer.h?

&gt; +class DOMTimer : public TimerBase {
&gt; +public:
&gt; +    // Creates a new timer with the next id and nesting level.
&gt; +    DOMTimer(JSDOMWindowBase* object, ScheduledAction* action);

Normally we&apos;d omit the names &quot;object&quot; and &quot;action&quot; here, because the types make it clear what the arguments are without names.

&gt; +    // Creates a timer from PausedTimeout, takes timeoutId and nestingLevel as they were persisted.
&gt; +    DOMTimer(int timeoutId, int nestingLevel, JSDOMWindowBase* object, ScheduledAction* action);

Same here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100104</commentid>
    <comment_count>4</comment_count>
      <attachid>25460</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2008-11-24 16:49:52 -0800</bug_when>
    <thetext>Created attachment 25460
patch with changes after review

Made changes recommended by Darin and moved new files to bindings/js per Sam&apos;s suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100235</commentid>
    <comment_count>5</comment_count>
      <attachid>25487</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2008-11-25 10:51:29 -0800</bug_when>
    <thetext>Created attachment 25487
More changes.

removed tabs from ChangeLog, seems good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100313</commentid>
    <comment_count>6</comment_count>
      <attachid>25487</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-11-25 15:34:07 -0800</bug_when>
    <thetext>Comment on attachment 25487
More changes.

Still looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100387</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-26 01:10:37 -0800</bug_when>
    <thetext>Committed revision 38780.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25454</attachid>
            <date>2008-11-24 15:16:55 -0800</date>
            <delta_ts>2008-11-25 10:51:29 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>19132</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODcyOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDgtMTEtMjQgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDY5CisKKwkJTW92ZSB0
aGUgY2xhc3MgRE9NV2luZG93VGltZXIgZnJvbSBKU0RPTVdpbmRvd0Jhc2UgaW50byBpdHMgb3du
IGZpbGUgaW4KKwkJcHJlcGFyYXRpb24gdG8gbWFraW5nIGl0IHdvcmsgZm9yIFdvcmtlcnMuIEZv
ciBub3csIGp1c3QgbW92ZSB0aGUgY29kZSBhbmQgY291cGxlCisJCW9mIGdsb2JhbCB2YXJpYWJs
ZXMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBXZWJDb3JlLnNjb25zOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6aW5z
dGFsbFRpbWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjpwYXVzZVRp
bWVvdXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cmVzdW1lVGltZW91
dHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3dCYXNlOjp0aW1lckZpcmVkKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaDoKKyAgICAgICAgKiBkb20vRE9N
VGltZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpET01UaW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6fkRPTVRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgICogZG9tL0RPTVRpbWVyLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OnRpbWVvdXRJZCk6CisgICAgICAgIChXZWJDb3Jl
OjpET01UaW1lcjo6bmVzdGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpz
ZXROZXN0aW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmFjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6dGFrZUFjdGlvbik6CisKIDIwMDgtMTEtMjQgIERh
cmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
YW0gV2VpbmlnLgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAzODcxNikKKysrIFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU0MSw2ICs1NDEsOCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVdlYkNvcmUvZG9tL0RPTUNvcmVFeGNlcHRpb24uaCBcCiAJV2ViQ29yZS9kb20v
RE9NSW1wbGVtZW50YXRpb24uY3BwIFwKIAlXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5o
IFwKKwlXZWJDb3JlL2RvbS9ET01UaW1lci5jcHAgXAorCVdlYkNvcmUvZG9tL0RPTVRpbWVyLmgg
XAogCVdlYkNvcmUvZG9tL0RvY1B0ci5oIFwKIAlXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgXAog
CVdlYkNvcmUvZG9tL0RvY3VtZW50LmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiAzODcxNikKKysrIFdlYkNv
cmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTU0OSw2ICs1NDksNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHAgXAogICAgIGRvbS9Eb2N1bWVudFR5
cGUuY3BwIFwKICAgICBkb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIFwKKyAgICBkb20vRE9NVGlt
ZXIuY3BwIFwKICAgICBkb20vRHluYW1pY05vZGVMaXN0LmNwcCBcCiAgICAgZG9tL0VkaXRpbmdU
ZXh0LmNwcCBcCiAgICAgZG9tL0VsZW1lbnQuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5z
Y29ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuc2NvbnMJKHJldmlzaW9uIDM4NzE2
KQorKysgV2ViQ29yZS9XZWJDb3JlLnNjb25zCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3
IEBAIHNvdXJjZXNbJ2RvbSddID0gWwogICAgICdkb20vRG9jdW1lbnQuY3BwJywKICAgICAnZG9t
L0RvY3VtZW50RnJhZ21lbnQuY3BwJywKICAgICAnZG9tL0RvY3VtZW50VHlwZS5jcHAnLAorICAg
ICdkb20vRE9NVGltZXIuY3BwJywKICAgICAnZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcCcsCiAg
ICAgJ2RvbS9EeW5hbWljTm9kZUxpc3QuY3BwJywKICAgICAnZG9tL0VkaXRpbmdUZXh0LmNwcCcs
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmVTb3VyY2VzLmJrbAkocmV2aXNpb24gMzg3MTYpCisrKyBXZWJDb3JlL1dlYkNvcmVT
b3VyY2VzLmJrbAkod29ya2luZyBjb3B5KQpAQCAtMzkwLDYgKzM5MCw3IEBAIFRoaXMgZmlsZSBj
b250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgZG9tL0NvbW1lbnQuY3BwCiAg
ICAgICAgIGRvbS9Db250YWluZXJOb2RlLmNwcAogICAgICAgICBkb20vRE9NSW1wbGVtZW50YXRp
b24uY3BwCisgICAgICAgIGRvbS9ET01UaW1lci5jcHAKICAgICAgICAgZG9tL0RvY3VtZW50LmNw
cAogICAgICAgICBkb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKICAgICAgICAgZG9tL0RvY3VtZW50
VHlwZS5jcHAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNp
b24gMzg3MTYpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDU3OCw2ICsxMDU3OCwyMiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cRE9NVGltZXIuY3BwIg0KKwkJCQk+
DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZV9QR098V2luMzIi
DQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQor
CQkJCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0KKwkJCQkJLz4NCisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxkb21cRE9NVGltZXIuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxEeW5hbWljTm9kZUxpc3QuY3BwIg0KIAkJCQk+DQog
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzODcxNikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDggQEAK
IAkJMTRFQzI2ODAwOUNBMDdFMDAwRTFFRUVDIC8qIEV2ZW50VGFyZ2V0Tm9kZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEVDMjY3RTA5Q0EwN0Uw
MDBFMUVFRUMgLyogRXZlbnRUYXJnZXROb2RlLmNwcCAqLzsgfTsKIAkJMTRGRkUzMUQwQUUxOTYz
MzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEZGRTMxQjBBRTE5NjMzMDAxMzZCRjUgLyogSFRN
TEZyYW1lRWxlbWVudEJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxNEZGRTMxRTBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVu
dEJhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCAqLzsg
fTsKKwkJMThFNjg3NzgwRURCNTJFMTAwQThFOEI3IC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4RTY4Nzc2MEVEQjUyRTEwMEE4
RThCNyAvKiBET01UaW1lci5jcHAgKi87IH07CisJCTE4RTY4Nzc5MEVEQjUyRTEwMEE4RThCNyAv
KiBET01UaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMThFNjg3NzcwRURCNTJFMTAwQThFOEI3IC8qIERPTVRpbWVyLmggKi87IH07CiAJCTFBMEQ1
NzM2MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEQ1NzM0MEE1Qzc3RkUwMDdFREQ0QyAv
KiBPdmVyZmxvd0V2ZW50LmNwcCAqLzsgfTsKIAkJMUEwRDU3MzcwQTVDNzdGRTAwN0VERDRDIC8q
IE92ZXJmbG93RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMEQ1NzM1MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmggKi87IH07
CiAJCTFBMEQ1NzQwMEE1Qzc4NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEwRDU3M0UwQTVDNzg2
NzAwN0VERDRDIC8qIEpTT3ZlcmZsb3dFdmVudC5jcHAgKi87IH07CkBAIC00ODc3LDYgKzQ4Nzks
OCBAQAogCQkxNEVDMjY3RTA5Q0EwN0UwMDBFMUVFRUMgLyogRXZlbnRUYXJnZXROb2RlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50VGFyZ2V0Tm9kZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RkZFMzFCMEFFMTk2MzMwMDEzNkJGNSAv
KiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIVE1MRnJhbWVFbGVtZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
NEZGRTMxQzBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEZyYW1lRWxlbWVudEJhc2UuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxOEU2ODc3NjBFREI1MkUxMDBBOEU4Qjcg
LyogRE9NVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9N
VGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxOEU2ODc3NzBFREI1MkUx
MDBBOEU4QjcgLyogRE9NVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwRDU3MzQwQTVDNzdG
RTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE92ZXJmbG93RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTBENTczNTBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3ZlcmZsb3dFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQTBENTczODBBNUM3ODEyMDA3RURENEMgLyogT3ZlcmZsb3dFdmVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE92ZXJmbG93RXZlbnQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQwMDQsNiArMTQwMDgsOCBAQAogCQlGNTIzRDMyNDAy
REU0NDc4MDE4NjM1Q0EgLyogZG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkxOEU2ODc3NjBFREI1MkUxMDBBOEU4QjcgLyogRE9NVGltZXIuY3BwICov
LAorCQkJCTE4RTY4Nzc3MEVEQjUyRTEwMEE4RThCNyAvKiBET01UaW1lci5oICovLAogCQkJCUUx
QzRERTZEMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwICovLAogCQkJCUUx
QzRERTY4MEVBNzVDMUUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuaCAqLywKIAkJCQlBOEM0
QTdGQzA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5jcHAgKi8sCkBAIC0xNjM4OCw2ICsxNjM5NCw3
IEBACiAJCQkJNDE2RjQ1RjAwRUQ3QjMxMTAwODIxNUI2IC8qIFNjcmlwdFN0cmluZy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDgwQUVDODIwRUQ4NzA4QjAwREY0Q0NFIC8qIFdNTEludHJpbnNpY0V2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODBBRUM4NDBFRDg3MDhCMDBERjRDQ0UgLyogV01M
SW50cmluc2ljRXZlbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkxOEU2ODc3OTBFREI1
MkUxMDBBOEU4QjcgLyogRE9NVGltZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTgzMjAsNiArMTgz
MjcsNyBAQAogCQkJCUE3QUQyRjg3MEVDODlEMDcwMDhBQjAwMiAvKiBMaW5rSGFzaC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwODBBRUM4MTBFRDg3MDhCMDBERjRDQ0UgLyogV01MSW50cmluc2lj
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDgwQUVDODMwRUQ4NzA4QjAwREY0Q0NFIC8q
IFdNTEludHJpbnNpY0V2ZW50SGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkxOEU2ODc3
ODBFREI1MkUxMDBBOEU4QjcgLyogRE9NVGltZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAzODcxNikKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkNvbnNv
bGUuaCIKKyNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCkBAIC05Nyw0NSAr
OTgsOSBAQCBzdGF0aWMgdm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VYU0xUUHJvY2VzCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGludCBsYXN0VXNlZFRpbWVvdXRJZDsKLQotc3RhdGlj
IGludCB0aW1lck5lc3RpbmdMZXZlbCA9IDA7CiBjb25zdCBpbnQgY01heFRpbWVyTmVzdGluZ0xl
dmVsID0gNTsKIGNvbnN0IGRvdWJsZSBjTWluaW11bVRpbWVySW50ZXJ2YWwgPSAwLjAxMDsKIAot
Y2xhc3MgRE9NV2luZG93VGltZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsKLXB1YmxpYzoKLSAgICBE
T01XaW5kb3dUaW1lcihpbnQgdGltZW91dElkLCBpbnQgbmVzdGluZ0xldmVsLCBKU0RPTVdpbmRv
d0Jhc2UqIG9iamVjdCwgU2NoZWR1bGVkQWN0aW9uKiBhY3Rpb24pCi0gICAgICAgIDogbV90aW1l
b3V0SWQodGltZW91dElkKQotICAgICAgICAsIG1fbmVzdGluZ0xldmVsKG5lc3RpbmdMZXZlbCkK
LSAgICAgICAgLCBtX29iamVjdChvYmplY3QpCi0gICAgICAgICwgbV9hY3Rpb24oYWN0aW9uKQot
ICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5ET01XaW5kb3dUaW1lcigpCi0gICAgewotICAg
ICAgICBKU0xvY2sgbG9jayhmYWxzZSk7Ci0gICAgICAgIGRlbGV0ZSBtX2FjdGlvbjsKLSAgICB9
Ci0KLSAgICBpbnQgdGltZW91dElkKCkgY29uc3QgeyByZXR1cm4gbV90aW1lb3V0SWQ7IH0KLQot
ICAgIGludCBuZXN0aW5nTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX25lc3RpbmdMZXZlbDsgfQot
ICAgIHZvaWQgc2V0TmVzdGluZ0xldmVsKGludCBuKSB7IG1fbmVzdGluZ0xldmVsID0gbjsgfQot
Ci0gICAgU2NoZWR1bGVkQWN0aW9uKiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsg
fQotICAgIFNjaGVkdWxlZEFjdGlvbiogdGFrZUFjdGlvbigpIHsgU2NoZWR1bGVkQWN0aW9uKiBh
ID0gbV9hY3Rpb247IG1fYWN0aW9uID0gMDsgcmV0dXJuIGE7IH0KLQotcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIHZvaWQgZmlyZWQoKTsKLQotICAgIGludCBtX3RpbWVvdXRJZDsKLSAgICBpbnQgbV9u
ZXN0aW5nTGV2ZWw7Ci0gICAgSlNET01XaW5kb3dCYXNlKiBtX29iamVjdDsKLSAgICBTY2hlZHVs
ZWRBY3Rpb24qIG1fYWN0aW9uOwotfTsKLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBKU0RPTVdp
bmRvd0Jhc2UgT2JqZWN0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBjb25zdCBDbGFzc0lu
Zm8gSlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ciLCAwLCAmSlNET01XaW5kb3dC
YXNlVGFibGUsIDAgfTsKQEAgLTg2OSwyMSArODM0LDE1IEBAIHZvaWQgSlNET01XaW5kb3dCYXNl
OjpjbGVhckFsbFRpbWVvdXRzKCkKIAogaW50IEpTRE9NV2luZG93QmFzZTo6aW5zdGFsbFRpbWVv
dXQoU2NoZWR1bGVkQWN0aW9uKiBhLCBpbnQgdCwgYm9vbCBzaW5nbGVTaG90KQogewotICAgIGlu
dCB0aW1lb3V0SWQgPSArK2xhc3RVc2VkVGltZW91dElkOwotCi0gICAgLy8gYXZvaWQgd3JhcGFy
b3VuZCBnb2luZyBuZWdhdGl2ZSBvbiB1cwotICAgIGlmICh0aW1lb3V0SWQgPD0gMCkKLSAgICAg
ICAgdGltZW91dElkID0gMTsKLQotICAgIGludCBuZXN0TGV2ZWwgPSB0aW1lck5lc3RpbmdMZXZl
bCArIDE7Ci0gICAgRE9NV2luZG93VGltZXIqIHRpbWVyID0gbmV3IERPTVdpbmRvd1RpbWVyKHRp
bWVvdXRJZCwgbmVzdExldmVsLCB0aGlzLCBhKTsKKyAgICBET01UaW1lciogdGltZXIgPSBuZXcg
RE9NVGltZXIodGhpcywgYSk7CisgICAgaW50IHRpbWVvdXRJZCA9IHRpbWVyLT50aW1lb3V0SWQo
KTsKICAgICBBU1NFUlQoIWQoKS0+dGltZW91dHMuZ2V0KHRpbWVvdXRJZCkpOwogICAgIGQoKS0+
dGltZW91dHMuc2V0KHRpbWVvdXRJZCwgdGltZXIpOwogICAgIC8vIFVzZSBhIG1pbmltdW0gaW50
ZXJ2YWwgb2YgMTAgbXMgdG8gbWF0Y2ggb3RoZXIgYnJvd3NlcnMsIGJ1dCBvbmx5IG9uY2Ugd2Un
dmUKICAgICAvLyBuZXN0ZWQgZW5vdWdoIHRvIG5vdGljZSB0aGF0IHdlJ3JlIHJlcGVhdGluZy4K
ICAgICAvLyBGYXN0ZXIgdGltZXJzIG1pZ2h0IGJlICJiZXR0ZXIiLCBidXQgdGhleSdyZSBpbmNv
bXBhdGlibGUuCiAgICAgZG91YmxlIGludGVydmFsID0gbWF4KDAuMDAxLCB0ICogMC4wMDEpOwot
ICAgIGlmIChpbnRlcnZhbCA8IGNNaW5pbXVtVGltZXJJbnRlcnZhbCAmJiBuZXN0TGV2ZWwgPj0g
Y01heFRpbWVyTmVzdGluZ0xldmVsKQorICAgIGlmIChpbnRlcnZhbCA8IGNNaW5pbXVtVGltZXJJ
bnRlcnZhbCAmJiB0aW1lci0+bmVzdGluZ0xldmVsKCkgPj0gY01heFRpbWVyTmVzdGluZ0xldmVs
KQogICAgICAgICBpbnRlcnZhbCA9IGNNaW5pbXVtVGltZXJJbnRlcnZhbDsKICAgICBpZiAoc2lu
Z2xlU2hvdCkKICAgICAgICAgdGltZXItPnN0YXJ0T25lU2hvdChpbnRlcnZhbCk7CkBAIC05MTYs
NyArODc1LDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnBhdXNlVGltZW91dHMoT3duUAogICAg
IEpTRE9NV2luZG93QmFzZURhdGE6OlRpbWVvdXRzTWFwOjppdGVyYXRvciBpdCA9IGQoKS0+dGlt
ZW91dHMuYmVnaW4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSB0aW1lb3V0c0NvdW50
OyArK2ksICsraXQpIHsKICAgICAgICAgaW50IHRpbWVvdXRJZCA9IGl0LT5maXJzdDsKLSAgICAg
ICAgRE9NV2luZG93VGltZXIqIHRpbWVyID0gaXQtPnNlY29uZDsKKyAgICAgICAgRE9NVGltZXIq
IHRpbWVyID0gaXQtPnNlY29uZDsKICAgICAgICAgdFtpXS50aW1lb3V0SWQgPSB0aW1lb3V0SWQ7
CiAgICAgICAgIHRbaV0ubmVzdGluZ0xldmVsID0gdGltZXItPm5lc3RpbmdMZXZlbCgpOwogICAg
ICAgICB0W2ldLm5leHRGaXJlSW50ZXJ2YWwgPSB0aW1lci0+bmV4dEZpcmVJbnRlcnZhbCgpOwpA
QCAtOTM3LDcgKzg5Niw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpyZXN1bWVUaW1lb3V0cyhP
d24KICAgICBQYXVzZWRUaW1lb3V0KiBhcnJheSA9IHRpbWVvdXRzLT50YWtlVGltZW91dHMoKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjb3VudDsgKytpKSB7CiAgICAgICAgIGludCB0
aW1lb3V0SWQgPSBhcnJheVtpXS50aW1lb3V0SWQ7Ci0gICAgICAgIERPTVdpbmRvd1RpbWVyKiB0
aW1lciA9IG5ldyBET01XaW5kb3dUaW1lcih0aW1lb3V0SWQsIGFycmF5W2ldLm5lc3RpbmdMZXZl
bCwgdGhpcywgYXJyYXlbaV0uYWN0aW9uKTsKKyAgICAgICAgRE9NVGltZXIqIHRpbWVyID0gbmV3
IERPTVRpbWVyKHRpbWVvdXRJZCwgYXJyYXlbaV0ubmVzdGluZ0xldmVsLCB0aGlzLCBhcnJheVtp
XS5hY3Rpb24pOwogICAgICAgICBkKCktPnRpbWVvdXRzLnNldCh0aW1lb3V0SWQsIHRpbWVyKTsK
ICAgICAgICAgdGltZXItPnN0YXJ0KGFycmF5W2ldLm5leHRGaXJlSW50ZXJ2YWwsIGFycmF5W2ld
LnJlcGVhdEludGVydmFsKTsKICAgICB9CkBAIC05NTYsMTQgKzkxNSwxNCBAQCB2b2lkIEpTRE9N
V2luZG93QmFzZTo6cmVtb3ZlVGltZW91dChpbnQgCiAgICAgZGVsZXRlIGQoKS0+dGltZW91dHMu
dGFrZSh0aW1lb3V0SWQpOwogfQogCi12b2lkIEpTRE9NV2luZG93QmFzZTo6dGltZXJGaXJlZChE
T01XaW5kb3dUaW1lciogdGltZXIpCit2b2lkIEpTRE9NV2luZG93QmFzZTo6dGltZXJGaXJlZChE
T01UaW1lciogdGltZXIpCiB7CiAgICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5vbi1vbmUtc2hvdCB0
aW1lcnMuCiAgICAgaWYgKHRpbWVyLT5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIGludCB0aW1lb3V0
SWQgPSB0aW1lci0+dGltZW91dElkKCk7CiAKICAgICAgICAgdGltZXItPmFjdGlvbigpLT5leGVj
dXRlKHNoZWxsKCkpOwotICAgICAgICAvLyBUaGUgRE9NV2luZG93VGltZXIgb2JqZWN0IG1heSBo
YXZlIGJlZW4gZGVsZXRlZCBvciByZXBsYWNlZCBkdXJpbmcgZXhlY3V0aW9uLAorICAgICAgICAv
LyBUaGUgRE9NVGltZXIgb2JqZWN0IG1heSBoYXZlIGJlZW4gZGVsZXRlZCBvciByZXBsYWNlZCBk
dXJpbmcgZXhlY3V0aW9uLAogICAgICAgICAvLyBzbyB3ZSByZS1mZXRjaCBpdC4KICAgICAgICAg
dGltZXIgPSBkKCktPnRpbWVvdXRzLmdldCh0aW1lb3V0SWQpOwogICAgICAgICBpZiAoIXRpbWVy
KQpAQCAtOTkyLDEzICs5NTEsNiBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZGlzY29ubmVjdEZy
YW1lKCkKICAgICBjbGVhckFsbFRpbWVvdXRzKCk7CiB9CiAKLXZvaWQgRE9NV2luZG93VGltZXI6
OmZpcmVkKCkKLXsKLSAgICB0aW1lck5lc3RpbmdMZXZlbCA9IG1fbmVzdGluZ0xldmVsOwotICAg
IG1fb2JqZWN0LT50aW1lckZpcmVkKHRoaXMpOwotICAgIHRpbWVyTmVzdGluZ0xldmVsID0gMDsK
LX0KLQogSlNWYWx1ZSogdG9KUyhFeGVjU3RhdGUqLCBET01XaW5kb3cqIGRvbVdpbmRvdykKIHsK
ICAgICBpZiAoIWRvbVdpbmRvdykKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuaAkocmV2aXNpb24gMzg3MTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBBdG9taWNTdHJpbmc7CisgICAgY2xhc3MgRE9NVGltZXI7CiAgICAg
Y2xhc3MgRE9NV2luZG93OwotICAgIGNsYXNzIERPTVdpbmRvd1RpbWVyOwogICAgIGNsYXNzIEV2
ZW50OwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEpTRE9NV2luZG93OwpAQCAtNzIsNyAr
NzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcGF1c2VUaW1lb3V0cyhP
d25QdHI8UGF1c2VkVGltZW91dHM+Jik7CiAgICAgICAgIHZvaWQgcmVzdW1lVGltZW91dHMoT3du
UHRyPFBhdXNlZFRpbWVvdXRzPiYpOwogCi0gICAgICAgIHZvaWQgdGltZXJGaXJlZChET01XaW5k
b3dUaW1lciopOworICAgICAgICB2b2lkIHRpbWVyRmlyZWQoRE9NVGltZXIqKTsKIAogICAgICAg
ICB2b2lkIGNsZWFyKCk7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICBKU0M6OkpTVmFsdWUqKiByZXR1cm5WYWx1ZVNsb3Q7CiAgICAgICAgICAg
ICBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbDsKIAotICAgICAgICAgICAgdHlwZWRlZiBIYXNoTWFw
PGludCwgRE9NV2luZG93VGltZXIqPiBUaW1lb3V0c01hcDsKKyAgICAgICAgICAgIHR5cGVkZWYg
SGFzaE1hcDxpbnQsIERPTVRpbWVyKj4gVGltZW91dHNNYXA7CiAgICAgICAgICAgICBUaW1lb3V0
c01hcCB0aW1lb3V0czsKICAgICAgICAgfTsKIApJbmRleDogV2ViQ29yZS9kb20vRE9NVGltZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RPTVRpbWVyLmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvZG9tL0RPTVRpbWVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01UaW1lci5o
IgorCisjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCisjaW5jbHVkZSAiU2NoZWR1bGVkQWN0
aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitzdGF0aWMgaW50IGxhc3RVc2VkVGltZW91dElkID0gMDsKK3N0YXRpYyBpbnQgdGltZXJO
ZXN0aW5nTGV2ZWwgPSAwOworCitET01UaW1lcjo6RE9NVGltZXIoSlNET01XaW5kb3dCYXNlKiBv
YmplY3QsIFNjaGVkdWxlZEFjdGlvbiogYWN0aW9uKQorICAgIDogbV9vYmplY3Qob2JqZWN0KQor
ICAgICwgbV9hY3Rpb24oYWN0aW9uKQoreworICAgICsrbGFzdFVzZWRUaW1lb3V0SWQ7CisgICAg
Ly8gQXZvaWQgd3JhcGFyb3VuZCBnb2luZyBuZWdhdGl2ZSBvbiB1cy4KKyAgICBpZiAobGFzdFVz
ZWRUaW1lb3V0SWQgPD0gMCkKKyAgICAgICAgbGFzdFVzZWRUaW1lb3V0SWQgPSAxOworICAgIG1f
dGltZW91dElkID0gbGFzdFVzZWRUaW1lb3V0SWQ7CisgICAgCisgICAgbV9uZXN0aW5nTGV2ZWwg
PSB0aW1lck5lc3RpbmdMZXZlbCArIDE7Cit9CisKK0RPTVRpbWVyOjpET01UaW1lcihpbnQgdGlt
ZW91dElkLCBpbnQgbmVzdGluZ0xldmVsLCBKU0RPTVdpbmRvd0Jhc2UqIG9iamVjdCwgU2NoZWR1
bGVkQWN0aW9uKiBhY3Rpb24pCisgICAgOiBtX3RpbWVvdXRJZCh0aW1lb3V0SWQpCisgICAgLCBt
X25lc3RpbmdMZXZlbChuZXN0aW5nTGV2ZWwpCisgICAgLCBtX29iamVjdChvYmplY3QpCisgICAg
LCBtX2FjdGlvbihhY3Rpb24pCit7CisgICAgQVNTRVJUKHRpbWVvdXRJZCA+IDApOworICAgIEFT
U0VSVChuZXN0aW5nTGV2ZWwgPiAwKTsKK30KKworRE9NVGltZXI6On5ET01UaW1lcigpCit7Cisg
ICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgZGVsZXRlIG1fYWN0aW9uOworfQorCit2
b2lkIERPTVRpbWVyOjpmaXJlZCgpCit7CisgICAgdGltZXJOZXN0aW5nTGV2ZWwgPSBtX25lc3Rp
bmdMZXZlbDsKKyAgICBtX29iamVjdC0+dGltZXJGaXJlZCh0aGlzKTsKKyAgICB0aW1lck5lc3Rp
bmdMZXZlbCA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
ZG9tL0RPTVRpbWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRE9NVGltZXIuaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0RPTVRpbWVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIERPTVRpbWVyX2gKKyNkZWZpbmUgRE9NVGlt
ZXJfaAorCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiVGltZXIuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU0RPTVdpbmRvd0Jhc2U7CitjbGFzcyBT
Y2hlZHVsZWRBY3Rpb247CisKK2NsYXNzIERPTVRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7Citw
dWJsaWM6CisgICAgLy8gQ3JlYXRlcyBhIG5ldyB0aW1lciB3aXRoIHRoZSBuZXh0IGlkIGFuZCBu
ZXN0aW5nIGxldmVsLgorICAgIERPTVRpbWVyKEpTRE9NV2luZG93QmFzZSogb2JqZWN0LCBTY2hl
ZHVsZWRBY3Rpb24qIGFjdGlvbik7CisgICAgLy8gQ3JlYXRlcyBhIHRpbWVyIGZyb20gUGF1c2Vk
VGltZW91dCwgdGFrZXMgdGltZW91dElkIGFuZCBuZXN0aW5nTGV2ZWwgYXMgdGhleSB3ZXJlIHBl
cnNpc3RlZC4KKyAgICBET01UaW1lcihpbnQgdGltZW91dElkLCBpbnQgbmVzdGluZ0xldmVsLCBK
U0RPTVdpbmRvd0Jhc2UqIG9iamVjdCwgU2NoZWR1bGVkQWN0aW9uKiBhY3Rpb24pOworICAgIHZp
cnR1YWwgfkRPTVRpbWVyKCk7CisKKyAgICBpbnQgdGltZW91dElkKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lb3V0SWQ7IH0KKworICAgIGludCBuZXN0aW5nTGV2ZWwoKSBjb25zdCB7IHJldHVybiBt
X25lc3RpbmdMZXZlbDsgfQorICAgIHZvaWQgc2V0TmVzdGluZ0xldmVsKGludCBuKSB7IG1fbmVz
dGluZ0xldmVsID0gbjsgfQorCisgICAgU2NoZWR1bGVkQWN0aW9uKiBhY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX2FjdGlvbjsgfQorICAgIFNjaGVkdWxlZEFjdGlvbiogdGFrZUFjdGlvbigpIHsg
U2NoZWR1bGVkQWN0aW9uKiBhID0gbV9hY3Rpb247IG1fYWN0aW9uID0gMDsgcmV0dXJuIGE7IH0K
KworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKTsKKworICAgIGludCBtX3RpbWVv
dXRJZDsKKyAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7CisgICAgSlNET01XaW5kb3dCYXNlKiBtX29i
amVjdDsKKyAgICBTY2hlZHVsZWRBY3Rpb24qIG1fYWN0aW9uOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRE9NVGltZXJfaAorCg==
</data>
<flag name="review"
          id="11813"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25460</attachid>
            <date>2008-11-24 16:49:52 -0800</date>
            <delta_ts>2008-11-25 10:51:29 -0800</delta_ts>
            <desc>patch with changes after review</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>18647</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODczNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMDgtMTEtMjQgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDY5CisKKwkJTW92ZSB0
aGUgY2xhc3MgRE9NV2luZG93VGltZXIgZnJvbSBKU0RPTVdpbmRvd0Jhc2UgaW50byBpdHMgb3du
IGZpbGUgaW4KKwkJcHJlcGFyYXRpb24gdG8gbWFraW5nIGl0IHdvcmsgZm9yIFdvcmtlcnMuIEZv
ciBub3csIGp1c3QgbW92ZSB0aGUgY29kZSBhbmQgY291cGxlCisJCW9mIGdsb2JhbCB2YXJpYWJs
ZXMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMu
YmtsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6Omluc3RhbGxUaW1lb3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cGF1c2VUaW1lb3V0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTVdpbmRvd0Jhc2U6OnJlc3VtZVRpbWVvdXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93QmFzZTo6dGltZXJGaXJlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NVGltZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpET01UaW1lcik6CisgICAgICAgIChXZWJDb3Jl
OjpET01UaW1lcjo6fkRPTVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJl
ZCk6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NVGltZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpET01UaW1lcjo6dGltZW91dElkKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVy
OjpuZXN0aW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OnNldE5lc3RpbmdM
ZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6YWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVRpbWVyOjp0YWtlQWN0aW9uKToKKwogMjAwOC0xMS0yNCAgTmlrb2xhcyBaaW1t
ZXJtYW5uICA8bmlrb2xhcy56aW1tZXJtYW5uQHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcyAmIEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbiAzODcxNikKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTIzNCw2ICsyMzQsOCBAQCBJRExfQklORElOR1MgKz0gXAogd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL1dlYkNvcmVQcmVmaXguaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWNoZWRT
Y3JpcHRTb3VyY2VQcm92aWRlci5oIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRpbWVyLmNw
cCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UaW1lci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdz
L2pzL0dDQ29udHJvbGxlci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVy
LmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcCBcCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlz
aW9uIDM4NzE2KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMzg3
LDYgKzM4Nyw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAKIAogU09VUkNFUyArPSBcCisgICAgYmlu
ZGluZ3MvanMvRE9NVGltZXIuY3BwIFwKICAgICBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3Bw
IFwKICAgICBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9K
U0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJD
b3JlU291cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJ
KHJldmlzaW9uIDM4NzE2KQorKysgV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZp
bGVzIG5lZQogCiA8bWFrZWZpbGU+CiAgICAgPHNldCBhcHBlbmQ9IjEiIHZhcj0iV0VCQ09SRV9T
T1VSQ0VTX0pTIj4KKyAgICAgICAgYmluZGluZ3MvanMvRE9NVGltZXIuY3BwCiAgICAgICAgIGJp
bmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNBdHRyQ3Vz
dG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuY3BwCkluZGV4
OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDM4NzE2KQorKysg
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTMzNDEsNiArMTMzNDEsMTQgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQor
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXERPTVRpbWVyLmNwcCINCisJCQkJCT4N
CisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5n
c1xqc1xET01UaW1lci5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEdDQ29udHJvbGxlci5jcHAiDQogCQkJCQk+
DQogCQkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMzg3MTYpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw4IEBACiAJCTE0RUMy
NjgwMDlDQTA3RTAwMEUxRUVFQyAvKiBFdmVudFRhcmdldE5vZGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFQzI2N0UwOUNBMDdFMDAwRTFFRUVD
IC8qIEV2ZW50VGFyZ2V0Tm9kZS5jcHAgKi87IH07CiAJCTE0RkZFMzFEMEFFMTk2MzMwMDEzNkJG
NSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTRGRkUzMUIwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVs
ZW1lbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMTRGRkUzMUUwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RkZFMzFD
MEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAgKi87IH07CisJCTE4
RTY4Nzg3MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEU2ODc4NTBFREI3OTM0MDBBOEU4QjcgLyog
RE9NVGltZXIuY3BwICovOyB9OworCQkxOEU2ODc4ODBFREI3OTM1MDBBOEU4QjcgLyogRE9NVGlt
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE4RTY4
Nzg2MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5oICovOyB9OwogCQkxQTBENTczNjBBNUM3
N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTBENTczNDBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZs
b3dFdmVudC5jcHAgKi87IH07CiAJCTFBMEQ1NzM3MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxv
d0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTBENTczNTBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5oICovOyB9OwogCQkxQTBE
NTc0MDBBNUM3ODY3MDA3RURENEMgLyogSlNPdmVyZmxvd0V2ZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEQ1NzNFMEE1Qzc4NjcwMDdFREQ0
QyAvKiBKU092ZXJmbG93RXZlbnQuY3BwICovOyB9OwpAQCAtNDg3Nyw2ICs0ODc5LDggQEAKIAkJ
MTRFQzI2N0UwOUNBMDdFMDAwRTFFRUVDIC8qIEV2ZW50VGFyZ2V0Tm9kZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFRhcmdldE5vZGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNEZGRTMxQjBBRTE5NjMzMDAxMzZCRjUgLyogSFRNTEZy
YW1lRWxlbWVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTEZy
YW1lRWxlbWVudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGRkUzMUMw
QUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMThFNjg3ODUwRURCNzkzNDAwQThFOEI3IC8qIERPTVRp
bWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVRpbWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMThFNjg3ODYwRURCNzkzNTAwQThFOEI3
IC8qIERPTVRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVRpbWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMEQ1NzM0MEE1Qzc3RkUwMDdFREQ0
QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBPdmVyZmxvd0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEw
RDU3MzUwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE92ZXJmbG93RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUEwRDU3MzgwQTVDNzgxMjAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBPdmVyZmxvd0V2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTEzMDA4LDYgKzEzMDEyLDggQEAKIAkJQkMxQTM3OTMwOTdDNkZCMTAw
MTlGM0Q4IC8qIGpzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQkxOEU2ODc4NTBFREI3OTM0MDBBOEU4QjcgLyogRE9NVGltZXIuY3BwICovLAorCQkJCTE4
RTY4Nzg2MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5oICovLAogCQkJCUJDNEVERUY3MEMw
OEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8sCiAJCQkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5
IC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk5M0Y4QjMwNjBBMzAwRkVBMDBGNjFBQjggLyog
Q29kZUdlbmVyYXRvckpTLnBtICovLApAQCAtMTYzODgsNiArMTYzOTQsNyBAQAogCQkJCTQxNkY0
NUYwMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRTdHJpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4MEFFQzgyMEVEODcwOEIwMERGNENDRSAvKiBXTUxJbnRyaW5zaWNFdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDgwQUVDODQwRUQ4NzA4QjAwREY0Q0NFIC8qIFdNTEludHJpbnNpY0V2ZW50
SGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMThFNjg3ODgwRURCNzkzNTAwQThFOEI3IC8q
IERPTVRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE4MzIwLDYgKzE4MzI3LDcgQEAKIAkJCQlB
N0FEMkY4NzBFQzg5RDA3MDA4QUIwMDIgLyogTGlua0hhc2guY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDgwQUVDODEwRUQ4NzA4QjAwREY0Q0NFIC8qIFdNTEludHJpbnNpY0V2ZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTA4MEFFQzgzMEVEODcwOEIwMERGNENDRSAvKiBXTUxJbnRyaW5zaWNF
dmVudEhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMThFNjg3ODcwRURCNzkzNTAwQThF
OEI3IC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01UaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01U
aW1lci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRpbWVyLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJET01UaW1lci5oIgorCisjaW5jbHVkZSAiSlNET01XaW5kb3dC
YXNlLmgiCisjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9K
U0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbnQgRE9NVGltZXI6Om1fdGltZXJO
ZXN0aW5nTGV2ZWwgPSAwOworCitET01UaW1lcjo6RE9NVGltZXIoSlNET01XaW5kb3dCYXNlKiBv
YmplY3QsIFNjaGVkdWxlZEFjdGlvbiogYWN0aW9uKQorICAgIDogbV9vYmplY3Qob2JqZWN0KQor
ICAgICwgbV9hY3Rpb24oYWN0aW9uKQoreworICAgIHN0YXRpYyBpbnQgbGFzdFVzZWRUaW1lb3V0
SWQgPSAwOworICAgICsrbGFzdFVzZWRUaW1lb3V0SWQ7CisgICAgLy8gQXZvaWQgd3JhcGFyb3Vu
ZCBnb2luZyBuZWdhdGl2ZSBvbiB1cy4KKyAgICBpZiAobGFzdFVzZWRUaW1lb3V0SWQgPD0gMCkK
KyAgICAgICAgbGFzdFVzZWRUaW1lb3V0SWQgPSAxOworICAgIG1fdGltZW91dElkID0gbGFzdFVz
ZWRUaW1lb3V0SWQ7CisgICAgCisgICAgbV9uZXN0aW5nTGV2ZWwgPSBtX3RpbWVyTmVzdGluZ0xl
dmVsICsgMTsKK30KKworRE9NVGltZXI6OkRPTVRpbWVyKGludCB0aW1lb3V0SWQsIGludCBuZXN0
aW5nTGV2ZWwsIEpTRE9NV2luZG93QmFzZSogb2JqZWN0LCBTY2hlZHVsZWRBY3Rpb24qIGFjdGlv
bikKKyAgICA6IG1fdGltZW91dElkKHRpbWVvdXRJZCkKKyAgICAsIG1fbmVzdGluZ0xldmVsKG5l
c3RpbmdMZXZlbCkKKyAgICAsIG1fb2JqZWN0KG9iamVjdCkKKyAgICAsIG1fYWN0aW9uKGFjdGlv
bikKK3sKKyAgICBBU1NFUlQodGltZW91dElkID4gMCk7CisgICAgQVNTRVJUKG5lc3RpbmdMZXZl
bCA+IDApOworfQorCitET01UaW1lcjo6fkRPTVRpbWVyKCkKK3sKKyAgICBKU0M6OkpTTG9jayBs
b2NrKGZhbHNlKTsKKyAgICBkZWxldGUgbV9hY3Rpb247Cit9CisKK3ZvaWQgRE9NVGltZXI6OmZp
cmVkKCkKK3sKKyAgICBtX3RpbWVyTmVzdGluZ0xldmVsID0gbV9uZXN0aW5nTGV2ZWw7CisgICAg
bV9vYmplY3QtPnRpbWVyRmlyZWQodGhpcyk7CisgICAgbV90aW1lck5lc3RpbmdMZXZlbCA9IDA7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
RE9NVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRpbWVyLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRpbWVyLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIERPTVRpbWVyX2gKKyNk
ZWZpbmUgRE9NVGltZXJfaAorCisjaW5jbHVkZSAiVGltZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBKU0RPTVdpbmRvd0Jhc2U7CitjbGFzcyBTY2hlZHVsZWRBY3Rpb247CisK
K2NsYXNzIERPTVRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7CitwdWJsaWM6CisgICAgLy8gQ3Jl
YXRlcyBhIG5ldyB0aW1lciB3aXRoIHRoZSBuZXh0IGlkIGFuZCBuZXN0aW5nIGxldmVsLgorICAg
IERPTVRpbWVyKEpTRE9NV2luZG93QmFzZSosIFNjaGVkdWxlZEFjdGlvbiopOworICAgIC8vIENy
ZWF0ZXMgYSB0aW1lciBmcm9tIFBhdXNlZFRpbWVvdXQsIHRha2VzIHRpbWVvdXRJZCBhbmQgbmVz
dGluZ0xldmVsIGFzIHRoZXkgd2VyZSBwZXJzaXN0ZWQuCisgICAgRE9NVGltZXIoaW50IHRpbWVv
dXRJZCwgaW50IG5lc3RpbmdMZXZlbCwgSlNET01XaW5kb3dCYXNlKiwgU2NoZWR1bGVkQWN0aW9u
Kik7CisgICAgdmlydHVhbCB+RE9NVGltZXIoKTsKKworICAgIGludCB0aW1lb3V0SWQoKSBjb25z
dCB7IHJldHVybiBtX3RpbWVvdXRJZDsgfQorCisgICAgaW50IG5lc3RpbmdMZXZlbCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmVzdGluZ0xldmVsOyB9CisgICAgdm9pZCBzZXROZXN0aW5nTGV2ZWwoaW50
IG4pIHsgbV9uZXN0aW5nTGV2ZWwgPSBuOyB9CisKKyAgICBTY2hlZHVsZWRBY3Rpb24qIGFjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aW9uOyB9CisgICAgU2NoZWR1bGVkQWN0aW9uKiB0YWtl
QWN0aW9uKCkgeyBTY2hlZHVsZWRBY3Rpb24qIGEgPSBtX2FjdGlvbjsgbV9hY3Rpb24gPSAwOyBy
ZXR1cm4gYTsgfQorCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpOworCisgICAg
aW50IG1fdGltZW91dElkOworICAgIGludCBtX25lc3RpbmdMZXZlbDsKKyAgICBKU0RPTVdpbmRv
d0Jhc2UqIG1fb2JqZWN0OworICAgIFNjaGVkdWxlZEFjdGlvbiogbV9hY3Rpb247CisgICAgc3Rh
dGljIGludCBtX3RpbWVyTmVzdGluZ0xldmVsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRE9NVGltZXJfaAorCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAzODcxNikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogCiAj
aW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJET01U
aW1lci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNp
bmNsdWRlICJFdmVudExpc3RlbmVyLmgiCkBAIC05Nyw0NSArOTgsOSBAQCBzdGF0aWMgdm9pZCBz
ZXRKU0RPTVdpbmRvd0Jhc2VYU0xUUHJvY2VzCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIGludCBsYXN0VXNlZFRpbWVvdXRJZDsKLQotc3RhdGljIGludCB0aW1lck5lc3RpbmdMZXZl
bCA9IDA7CiBjb25zdCBpbnQgY01heFRpbWVyTmVzdGluZ0xldmVsID0gNTsKIGNvbnN0IGRvdWJs
ZSBjTWluaW11bVRpbWVySW50ZXJ2YWwgPSAwLjAxMDsKIAotY2xhc3MgRE9NV2luZG93VGltZXIg
OiBwdWJsaWMgVGltZXJCYXNlIHsKLXB1YmxpYzoKLSAgICBET01XaW5kb3dUaW1lcihpbnQgdGlt
ZW91dElkLCBpbnQgbmVzdGluZ0xldmVsLCBKU0RPTVdpbmRvd0Jhc2UqIG9iamVjdCwgU2NoZWR1
bGVkQWN0aW9uKiBhY3Rpb24pCi0gICAgICAgIDogbV90aW1lb3V0SWQodGltZW91dElkKQotICAg
ICAgICAsIG1fbmVzdGluZ0xldmVsKG5lc3RpbmdMZXZlbCkKLSAgICAgICAgLCBtX29iamVjdChv
YmplY3QpCi0gICAgICAgICwgbV9hY3Rpb24oYWN0aW9uKQotICAgIHsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIH5ET01XaW5kb3dUaW1lcigpCi0gICAgewotICAgICAgICBKU0xvY2sgbG9jayhmYWxz
ZSk7Ci0gICAgICAgIGRlbGV0ZSBtX2FjdGlvbjsKLSAgICB9Ci0KLSAgICBpbnQgdGltZW91dElk
KCkgY29uc3QgeyByZXR1cm4gbV90aW1lb3V0SWQ7IH0KLQotICAgIGludCBuZXN0aW5nTGV2ZWwo
KSBjb25zdCB7IHJldHVybiBtX25lc3RpbmdMZXZlbDsgfQotICAgIHZvaWQgc2V0TmVzdGluZ0xl
dmVsKGludCBuKSB7IG1fbmVzdGluZ0xldmVsID0gbjsgfQotCi0gICAgU2NoZWR1bGVkQWN0aW9u
KiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQotICAgIFNjaGVkdWxlZEFjdGlv
biogdGFrZUFjdGlvbigpIHsgU2NoZWR1bGVkQWN0aW9uKiBhID0gbV9hY3Rpb247IG1fYWN0aW9u
ID0gMDsgcmV0dXJuIGE7IH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKTsK
LQotICAgIGludCBtX3RpbWVvdXRJZDsKLSAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7Ci0gICAgSlNE
T01XaW5kb3dCYXNlKiBtX29iamVjdDsKLSAgICBTY2hlZHVsZWRBY3Rpb24qIG1fYWN0aW9uOwot
fTsKLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBKU0RPTVdpbmRvd0Jhc2UgT2JqZWN0IC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogCiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dCYXNlOjpz
X2luZm8gPSB7ICJXaW5kb3ciLCAwLCAmSlNET01XaW5kb3dCYXNlVGFibGUsIDAgfTsKQEAgLTg2
OSwyMSArODM0LDE1IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpjbGVhckFsbFRpbWVvdXRzKCkK
IAogaW50IEpTRE9NV2luZG93QmFzZTo6aW5zdGFsbFRpbWVvdXQoU2NoZWR1bGVkQWN0aW9uKiBh
LCBpbnQgdCwgYm9vbCBzaW5nbGVTaG90KQogewotICAgIGludCB0aW1lb3V0SWQgPSArK2xhc3RV
c2VkVGltZW91dElkOwotCi0gICAgLy8gYXZvaWQgd3JhcGFyb3VuZCBnb2luZyBuZWdhdGl2ZSBv
biB1cwotICAgIGlmICh0aW1lb3V0SWQgPD0gMCkKLSAgICAgICAgdGltZW91dElkID0gMTsKLQot
ICAgIGludCBuZXN0TGV2ZWwgPSB0aW1lck5lc3RpbmdMZXZlbCArIDE7Ci0gICAgRE9NV2luZG93
VGltZXIqIHRpbWVyID0gbmV3IERPTVdpbmRvd1RpbWVyKHRpbWVvdXRJZCwgbmVzdExldmVsLCB0
aGlzLCBhKTsKKyAgICBET01UaW1lciogdGltZXIgPSBuZXcgRE9NVGltZXIodGhpcywgYSk7Cisg
ICAgaW50IHRpbWVvdXRJZCA9IHRpbWVyLT50aW1lb3V0SWQoKTsKICAgICBBU1NFUlQoIWQoKS0+
dGltZW91dHMuZ2V0KHRpbWVvdXRJZCkpOwogICAgIGQoKS0+dGltZW91dHMuc2V0KHRpbWVvdXRJ
ZCwgdGltZXIpOwogICAgIC8vIFVzZSBhIG1pbmltdW0gaW50ZXJ2YWwgb2YgMTAgbXMgdG8gbWF0
Y2ggb3RoZXIgYnJvd3NlcnMsIGJ1dCBvbmx5IG9uY2Ugd2UndmUKICAgICAvLyBuZXN0ZWQgZW5v
dWdoIHRvIG5vdGljZSB0aGF0IHdlJ3JlIHJlcGVhdGluZy4KICAgICAvLyBGYXN0ZXIgdGltZXJz
IG1pZ2h0IGJlICJiZXR0ZXIiLCBidXQgdGhleSdyZSBpbmNvbXBhdGlibGUuCiAgICAgZG91Ymxl
IGludGVydmFsID0gbWF4KDAuMDAxLCB0ICogMC4wMDEpOwotICAgIGlmIChpbnRlcnZhbCA8IGNN
aW5pbXVtVGltZXJJbnRlcnZhbCAmJiBuZXN0TGV2ZWwgPj0gY01heFRpbWVyTmVzdGluZ0xldmVs
KQorICAgIGlmIChpbnRlcnZhbCA8IGNNaW5pbXVtVGltZXJJbnRlcnZhbCAmJiB0aW1lci0+bmVz
dGluZ0xldmVsKCkgPj0gY01heFRpbWVyTmVzdGluZ0xldmVsKQogICAgICAgICBpbnRlcnZhbCA9
IGNNaW5pbXVtVGltZXJJbnRlcnZhbDsKICAgICBpZiAoc2luZ2xlU2hvdCkKICAgICAgICAgdGlt
ZXItPnN0YXJ0T25lU2hvdChpbnRlcnZhbCk7CkBAIC05MTYsNyArODc1LDcgQEAgdm9pZCBKU0RP
TVdpbmRvd0Jhc2U6OnBhdXNlVGltZW91dHMoT3duUAogICAgIEpTRE9NV2luZG93QmFzZURhdGE6
OlRpbWVvdXRzTWFwOjppdGVyYXRvciBpdCA9IGQoKS0+dGltZW91dHMuYmVnaW4oKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSAhPSB0aW1lb3V0c0NvdW50OyArK2ksICsraXQpIHsKICAgICAg
ICAgaW50IHRpbWVvdXRJZCA9IGl0LT5maXJzdDsKLSAgICAgICAgRE9NV2luZG93VGltZXIqIHRp
bWVyID0gaXQtPnNlY29uZDsKKyAgICAgICAgRE9NVGltZXIqIHRpbWVyID0gaXQtPnNlY29uZDsK
ICAgICAgICAgdFtpXS50aW1lb3V0SWQgPSB0aW1lb3V0SWQ7CiAgICAgICAgIHRbaV0ubmVzdGlu
Z0xldmVsID0gdGltZXItPm5lc3RpbmdMZXZlbCgpOwogICAgICAgICB0W2ldLm5leHRGaXJlSW50
ZXJ2YWwgPSB0aW1lci0+bmV4dEZpcmVJbnRlcnZhbCgpOwpAQCAtOTM3LDcgKzg5Niw3IEBAIHZv
aWQgSlNET01XaW5kb3dCYXNlOjpyZXN1bWVUaW1lb3V0cyhPd24KICAgICBQYXVzZWRUaW1lb3V0
KiBhcnJheSA9IHRpbWVvdXRzLT50YWtlVGltZW91dHMoKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSAhPSBjb3VudDsgKytpKSB7CiAgICAgICAgIGludCB0aW1lb3V0SWQgPSBhcnJheVtpXS50
aW1lb3V0SWQ7Ci0gICAgICAgIERPTVdpbmRvd1RpbWVyKiB0aW1lciA9IG5ldyBET01XaW5kb3dU
aW1lcih0aW1lb3V0SWQsIGFycmF5W2ldLm5lc3RpbmdMZXZlbCwgdGhpcywgYXJyYXlbaV0uYWN0
aW9uKTsKKyAgICAgICAgRE9NVGltZXIqIHRpbWVyID0gbmV3IERPTVRpbWVyKHRpbWVvdXRJZCwg
YXJyYXlbaV0ubmVzdGluZ0xldmVsLCB0aGlzLCBhcnJheVtpXS5hY3Rpb24pOwogICAgICAgICBk
KCktPnRpbWVvdXRzLnNldCh0aW1lb3V0SWQsIHRpbWVyKTsKICAgICAgICAgdGltZXItPnN0YXJ0
KGFycmF5W2ldLm5leHRGaXJlSW50ZXJ2YWwsIGFycmF5W2ldLnJlcGVhdEludGVydmFsKTsKICAg
ICB9CkBAIC05NTYsMTQgKzkxNSwxNCBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6cmVtb3ZlVGlt
ZW91dChpbnQgCiAgICAgZGVsZXRlIGQoKS0+dGltZW91dHMudGFrZSh0aW1lb3V0SWQpOwogfQog
Ci12b2lkIEpTRE9NV2luZG93QmFzZTo6dGltZXJGaXJlZChET01XaW5kb3dUaW1lciogdGltZXIp
Cit2b2lkIEpTRE9NV2luZG93QmFzZTo6dGltZXJGaXJlZChET01UaW1lciogdGltZXIpCiB7CiAg
ICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5vbi1vbmUtc2hvdCB0aW1lcnMuCiAgICAgaWYgKHRpbWVy
LT5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIGludCB0aW1lb3V0SWQgPSB0aW1lci0+dGltZW91dElk
KCk7CiAKICAgICAgICAgdGltZXItPmFjdGlvbigpLT5leGVjdXRlKHNoZWxsKCkpOwotICAgICAg
ICAvLyBUaGUgRE9NV2luZG93VGltZXIgb2JqZWN0IG1heSBoYXZlIGJlZW4gZGVsZXRlZCBvciBy
ZXBsYWNlZCBkdXJpbmcgZXhlY3V0aW9uLAorICAgICAgICAvLyBUaGUgRE9NVGltZXIgb2JqZWN0
IG1heSBoYXZlIGJlZW4gZGVsZXRlZCBvciByZXBsYWNlZCBkdXJpbmcgZXhlY3V0aW9uLAogICAg
ICAgICAvLyBzbyB3ZSByZS1mZXRjaCBpdC4KICAgICAgICAgdGltZXIgPSBkKCktPnRpbWVvdXRz
LmdldCh0aW1lb3V0SWQpOwogICAgICAgICBpZiAoIXRpbWVyKQpAQCAtOTkyLDEzICs5NTEsNiBA
QCB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZGlzY29ubmVjdEZyYW1lKCkKICAgICBjbGVhckFsbFRp
bWVvdXRzKCk7CiB9CiAKLXZvaWQgRE9NV2luZG93VGltZXI6OmZpcmVkKCkKLXsKLSAgICB0aW1l
ck5lc3RpbmdMZXZlbCA9IG1fbmVzdGluZ0xldmVsOwotICAgIG1fb2JqZWN0LT50aW1lckZpcmVk
KHRoaXMpOwotICAgIHRpbWVyTmVzdGluZ0xldmVsID0gMDsKLX0KLQogSlNWYWx1ZSogdG9KUyhF
eGVjU3RhdGUqLCBET01XaW5kb3cqIGRvbVdpbmRvdykKIHsKICAgICBpZiAoIWRvbVdpbmRvdykK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAkocmV2aXNpb24gMzg3MTYp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw4ICsyOSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBBdG9t
aWNTdHJpbmc7CisgICAgY2xhc3MgRE9NVGltZXI7CiAgICAgY2xhc3MgRE9NV2luZG93OwotICAg
IGNsYXNzIERPTVdpbmRvd1RpbWVyOwogICAgIGNsYXNzIEV2ZW50OwogICAgIGNsYXNzIEZyYW1l
OwogICAgIGNsYXNzIEpTRE9NV2luZG93OwpAQCAtNzIsNyArNzIsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgcGF1c2VUaW1lb3V0cyhPd25QdHI8UGF1c2VkVGltZW91dHM+
Jik7CiAgICAgICAgIHZvaWQgcmVzdW1lVGltZW91dHMoT3duUHRyPFBhdXNlZFRpbWVvdXRzPiYp
OwogCi0gICAgICAgIHZvaWQgdGltZXJGaXJlZChET01XaW5kb3dUaW1lciopOworICAgICAgICB2
b2lkIHRpbWVyRmlyZWQoRE9NVGltZXIqKTsKIAogICAgICAgICB2b2lkIGNsZWFyKCk7CiAKQEAg
LTExMyw3ICsxMTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBKU0M6OkpT
VmFsdWUqKiByZXR1cm5WYWx1ZVNsb3Q7CiAgICAgICAgICAgICBKU0RPTVdpbmRvd1NoZWxsKiBz
aGVsbDsKIAotICAgICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgRE9NV2luZG93VGltZXIq
PiBUaW1lb3V0c01hcDsKKyAgICAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIERPTVRpbWVy
Kj4gVGltZW91dHNNYXA7CiAgICAgICAgICAgICBUaW1lb3V0c01hcCB0aW1lb3V0czsKICAgICAg
ICAgfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25487</attachid>
            <date>2008-11-25 10:51:29 -0800</date>
            <delta_ts>2008-11-25 15:34:07 -0800</delta_ts>
            <desc>More changes.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>18665</size>
            <attacher name="Dmitry Titov">dimich</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODczNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMDgtMTEtMjQgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDY5CisKKyAgICAgICAg
TW92ZSB0aGUgY2xhc3MgRE9NV2luZG93VGltZXIgZnJvbSBKU0RPTVdpbmRvd0Jhc2UgaW50byBp
dHMgb3duIGZpbGUgaW4KKyAgICAgICAgcHJlcGFyYXRpb24gdG8gbWFraW5nIGl0IHdvcmsgZm9y
IFdvcmtlcnMuIEZvciBub3csIGp1c3QgbW92ZSB0aGUgY29kZSBhbmQgY291cGxlCisgICAgICAg
IG9mIGdsb2JhbCB2YXJpYWJsZXMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6Omluc3RhbGxUaW1l
b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6cGF1c2VUaW1lb3V0cyk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd0Jhc2U6OnJlc3VtZVRpbWVvdXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6dGltZXJGaXJlZCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmg6CisgICAgICAgICogYmluZGluZ3MvanMvRE9N
VGltZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpET01UaW1lcik6
CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6fkRPTVRpbWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NVGltZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6dGltZW91dElkKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVRpbWVyOjpuZXN0aW5nTGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
VGltZXI6OnNldE5lc3RpbmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6YWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjp0YWtlQWN0aW9uKToKKwogMjAwOC0x
MS0yNCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bmlrb2xhcy56aW1tZXJtYW5uQHRvcmNobW9iaWxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcyAmIEVyaWMgU2VpZGVs
LgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiAzODcxNikKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTIzNCw2ICsyMzQsOCBAQCBJRExfQklORElOR1MgKz0gXAogd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL1dlYkNvcmVQcmVmaXguaCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIFwKKwlXZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVRpbWVyLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UaW1lci5oIFwK
IAlXZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvR0NDb250cm9sbGVyLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9t
LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS5wcm8JKHJldmlzaW9uIDM4NzE2KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29y
a2luZyBjb3B5KQpAQCAtMzg3LDYgKzM4Nyw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAKIAogU09V
UkNFUyArPSBcCisgICAgYmluZGluZ3MvanMvRE9NVGltZXIuY3BwIFwKICAgICBiaW5kaW5ncy9q
cy9HQ0NvbnRyb2xsZXIuY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIFwK
ICAgICBiaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgXApJ
bmRleDogV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDM4NzE2KQorKysgV2ViQ29yZS9XZWJDb3JlU291
cmNlcy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgVGhpcyBmaWxlIGNvbnRh
aW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogCiA8bWFrZWZpbGU+CiAgICAgPHNldCBhcHBlbmQ9
IjEiIHZhcj0iV0VCQ09SRV9TT1VSQ0VTX0pTIj4KKyAgICAgICAgYmluZGluZ3MvanMvRE9NVGlt
ZXIuY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNBdHRyQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29u
c3RydWN0b3IuY3BwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJl
dmlzaW9uIDM4NzE2KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTMzNDEsNiArMTMzNDEsMTQgQEAKIAkJCQkJPg0KIAkJCQk8L0Zp
bGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXERPTVRp
bWVyLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xET01UaW1lci5oIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+
DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEdDQ29udHJv
bGxlci5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzg3MTYpCisrKyBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYg
KzEyMCw4IEBACiAJCTE0RUMyNjgwMDlDQTA3RTAwMEUxRUVFQyAvKiBFdmVudFRhcmdldE5vZGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFQzI2
N0UwOUNBMDdFMDAwRTFFRUVDIC8qIEV2ZW50VGFyZ2V0Tm9kZS5jcHAgKi87IH07CiAJCTE0RkZF
MzFEMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGRkUzMUIwQUUxOTYzMzAwMTM2
QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRGRkUzMUUwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxG
cmFtZUVsZW1lbnRCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0RkZFMzFDMEFFMTk2MzMwMDEzNkJGNSAvKiBIVE1MRnJhbWVFbGVtZW50QmFz
ZS5jcHAgKi87IH07CisJCTE4RTY4Nzg3MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxOEU2ODc4NTBF
REI3OTM0MDBBOEU4QjcgLyogRE9NVGltZXIuY3BwICovOyB9OworCQkxOEU2ODc4ODBFREI3OTM1
MDBBOEU4QjcgLyogRE9NVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE4RTY4Nzg2MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5oICovOyB9
OwogCQkxQTBENTczNjBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTBENTczNDBBNUM3N0ZF
MDA3RURENEMgLyogT3ZlcmZsb3dFdmVudC5jcHAgKi87IH07CiAJCTFBMEQ1NzM3MEE1Qzc3RkUw
MDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTBENTczNTBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dFdmVu
dC5oICovOyB9OwogCQkxQTBENTc0MDBBNUM3ODY3MDA3RURENEMgLyogSlNPdmVyZmxvd0V2ZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMEQ1
NzNFMEE1Qzc4NjcwMDdFREQ0QyAvKiBKU092ZXJmbG93RXZlbnQuY3BwICovOyB9OwpAQCAtNDg3
Nyw2ICs0ODc5LDggQEAKIAkJMTRFQzI2N0UwOUNBMDdFMDAwRTFFRUVDIC8qIEV2ZW50VGFyZ2V0
Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudFRhcmdl
dE5vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNEZGRTMxQjBBRTE5NjMz
MDAxMzZCRjUgLyogSFRNTEZyYW1lRWxlbWVudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSFRNTEZyYW1lRWxlbWVudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTRGRkUzMUMwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxGcmFtZUVsZW1l
bnRCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMThFNjg3ODUwRURCNzkz
NDAwQThFOEI3IC8qIERPTVRpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERPTVRpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMThFNjg3
ODYwRURCNzkzNTAwQThFOEI3IC8qIERPTVRpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTVRpbWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBMEQ1
NzM0MEE1Qzc3RkUwMDdFREQ0QyAvKiBPdmVyZmxvd0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBPdmVyZmxvd0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUEwRDU3MzUwQTVDNzdGRTAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE92ZXJmbG93RXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEwRDU3MzgwQTVDNzgxMjAwN0VERDRDIC8qIE92
ZXJmbG93RXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBPdmVyZmxvd0V2ZW50Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMDA4LDYgKzEzMDEyLDggQEAKIAkJ
QkMxQTM3OTMwOTdDNkZCMTAwMTlGM0Q4IC8qIGpzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxOEU2ODc4NTBFREI3OTM0MDBBOEU4QjcgLyogRE9NVGlt
ZXIuY3BwICovLAorCQkJCTE4RTY4Nzg2MEVEQjc5MzUwMEE4RThCNyAvKiBET01UaW1lci5oICov
LAogCQkJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8sCiAJCQkJMTRERkIz
M0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk5M0Y4QjMwNjBB
MzAwRkVBMDBGNjFBQjggLyogQ29kZUdlbmVyYXRvckpTLnBtICovLApAQCAtMTYzODgsNiArMTYz
OTQsNyBAQAogCQkJCTQxNkY0NUYwMEVEN0IzMTEwMDgyMTVCNiAvKiBTY3JpcHRTdHJpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJCTA4MEFFQzgyMEVEODcwOEIwMERGNENDRSAvKiBXTUxJbnRyaW5z
aWNFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDgwQUVDODQwRUQ4NzA4QjAwREY0Q0NFIC8q
IFdNTEludHJpbnNpY0V2ZW50SGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMThFNjg3ODgw
RURCNzkzNTAwQThFOEI3IC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE4MzIwLDYg
KzE4MzI3LDcgQEAKIAkJCQlBN0FEMkY4NzBFQzg5RDA3MDA4QUIwMDIgLyogTGlua0hhc2guY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMDgwQUVDODEwRUQ4NzA4QjAwREY0Q0NFIC8qIFdNTEludHJp
bnNpY0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4MEFFQzgzMEVEODcwOEIwMERGNEND
RSAvKiBXTUxJbnRyaW5zaWNFdmVudEhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMThF
Njg3ODcwRURCNzkzNTAwQThFOEI3IC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UaW1lci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9ET01UaW1lci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVRpbWVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01UaW1lci5oIgorCisjaW5j
bHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCisjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCisj
aW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbnQg
RE9NVGltZXI6Om1fdGltZXJOZXN0aW5nTGV2ZWwgPSAwOworCitET01UaW1lcjo6RE9NVGltZXIo
SlNET01XaW5kb3dCYXNlKiBvYmplY3QsIFNjaGVkdWxlZEFjdGlvbiogYWN0aW9uKQorICAgIDog
bV9vYmplY3Qob2JqZWN0KQorICAgICwgbV9hY3Rpb24oYWN0aW9uKQoreworICAgIHN0YXRpYyBp
bnQgbGFzdFVzZWRUaW1lb3V0SWQgPSAwOworICAgICsrbGFzdFVzZWRUaW1lb3V0SWQ7CisgICAg
Ly8gQXZvaWQgd3JhcGFyb3VuZCBnb2luZyBuZWdhdGl2ZSBvbiB1cy4KKyAgICBpZiAobGFzdFVz
ZWRUaW1lb3V0SWQgPD0gMCkKKyAgICAgICAgbGFzdFVzZWRUaW1lb3V0SWQgPSAxOworICAgIG1f
dGltZW91dElkID0gbGFzdFVzZWRUaW1lb3V0SWQ7CisgICAgCisgICAgbV9uZXN0aW5nTGV2ZWwg
PSBtX3RpbWVyTmVzdGluZ0xldmVsICsgMTsKK30KKworRE9NVGltZXI6OkRPTVRpbWVyKGludCB0
aW1lb3V0SWQsIGludCBuZXN0aW5nTGV2ZWwsIEpTRE9NV2luZG93QmFzZSogb2JqZWN0LCBTY2hl
ZHVsZWRBY3Rpb24qIGFjdGlvbikKKyAgICA6IG1fdGltZW91dElkKHRpbWVvdXRJZCkKKyAgICAs
IG1fbmVzdGluZ0xldmVsKG5lc3RpbmdMZXZlbCkKKyAgICAsIG1fb2JqZWN0KG9iamVjdCkKKyAg
ICAsIG1fYWN0aW9uKGFjdGlvbikKK3sKKyAgICBBU1NFUlQodGltZW91dElkID4gMCk7CisgICAg
QVNTRVJUKG5lc3RpbmdMZXZlbCA+IDApOworfQorCitET01UaW1lcjo6fkRPTVRpbWVyKCkKK3sK
KyAgICBKU0M6OkpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICBkZWxldGUgbV9hY3Rpb247Cit9CisK
K3ZvaWQgRE9NVGltZXI6OmZpcmVkKCkKK3sKKyAgICBtX3RpbWVyTmVzdGluZ0xldmVsID0gbV9u
ZXN0aW5nTGV2ZWw7CisgICAgbV9vYmplY3QtPnRpbWVyRmlyZWQodGhpcyk7CisgICAgbV90aW1l
ck5lc3RpbmdMZXZlbCA9IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMvRE9NVGltZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVRpbWVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVRpbWVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZu
ZGVmIERPTVRpbWVyX2gKKyNkZWZpbmUgRE9NVGltZXJfaAorCisjaW5jbHVkZSAiVGltZXIuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU0RPTVdpbmRvd0Jhc2U7CitjbGFzcyBT
Y2hlZHVsZWRBY3Rpb247CisKK2NsYXNzIERPTVRpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7Citw
dWJsaWM6CisgICAgLy8gQ3JlYXRlcyBhIG5ldyB0aW1lciB3aXRoIHRoZSBuZXh0IGlkIGFuZCBu
ZXN0aW5nIGxldmVsLgorICAgIERPTVRpbWVyKEpTRE9NV2luZG93QmFzZSosIFNjaGVkdWxlZEFj
dGlvbiopOworICAgIC8vIENyZWF0ZXMgYSB0aW1lciBmcm9tIFBhdXNlZFRpbWVvdXQsIHRha2Vz
IHRpbWVvdXRJZCBhbmQgbmVzdGluZ0xldmVsIGFzIHRoZXkgd2VyZSBwZXJzaXN0ZWQuCisgICAg
RE9NVGltZXIoaW50IHRpbWVvdXRJZCwgaW50IG5lc3RpbmdMZXZlbCwgSlNET01XaW5kb3dCYXNl
KiwgU2NoZWR1bGVkQWN0aW9uKik7CisgICAgdmlydHVhbCB+RE9NVGltZXIoKTsKKworICAgIGlu
dCB0aW1lb3V0SWQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVvdXRJZDsgfQorCisgICAgaW50IG5l
c3RpbmdMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fbmVzdGluZ0xldmVsOyB9CisgICAgdm9pZCBz
ZXROZXN0aW5nTGV2ZWwoaW50IG4pIHsgbV9uZXN0aW5nTGV2ZWwgPSBuOyB9CisKKyAgICBTY2hl
ZHVsZWRBY3Rpb24qIGFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aW9uOyB9CisgICAgU2No
ZWR1bGVkQWN0aW9uKiB0YWtlQWN0aW9uKCkgeyBTY2hlZHVsZWRBY3Rpb24qIGEgPSBtX2FjdGlv
bjsgbV9hY3Rpb24gPSAwOyByZXR1cm4gYTsgfQorCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9p
ZCBmaXJlZCgpOworCisgICAgaW50IG1fdGltZW91dElkOworICAgIGludCBtX25lc3RpbmdMZXZl
bDsKKyAgICBKU0RPTVdpbmRvd0Jhc2UqIG1fb2JqZWN0OworICAgIFNjaGVkdWxlZEFjdGlvbiog
bV9hY3Rpb247CisgICAgc3RhdGljIGludCBtX3RpbWVyTmVzdGluZ0xldmVsOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRE9NVGltZXJfaAorCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCShyZXZpc2lvbiAzODcxNikKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNiArMjUsNyBAQAogCiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkNvbnNvbGUu
aCIKKyNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1
ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCkBAIC05Nyw0NSArOTgs
OSBAQCBzdGF0aWMgdm9pZCBzZXRKU0RPTVdpbmRvd0Jhc2VYU0xUUHJvY2VzCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIGludCBsYXN0VXNlZFRpbWVvdXRJZDsKLQotc3RhdGljIGlu
dCB0aW1lck5lc3RpbmdMZXZlbCA9IDA7CiBjb25zdCBpbnQgY01heFRpbWVyTmVzdGluZ0xldmVs
ID0gNTsKIGNvbnN0IGRvdWJsZSBjTWluaW11bVRpbWVySW50ZXJ2YWwgPSAwLjAxMDsKIAotY2xh
c3MgRE9NV2luZG93VGltZXIgOiBwdWJsaWMgVGltZXJCYXNlIHsKLXB1YmxpYzoKLSAgICBET01X
aW5kb3dUaW1lcihpbnQgdGltZW91dElkLCBpbnQgbmVzdGluZ0xldmVsLCBKU0RPTVdpbmRvd0Jh
c2UqIG9iamVjdCwgU2NoZWR1bGVkQWN0aW9uKiBhY3Rpb24pCi0gICAgICAgIDogbV90aW1lb3V0
SWQodGltZW91dElkKQotICAgICAgICAsIG1fbmVzdGluZ0xldmVsKG5lc3RpbmdMZXZlbCkKLSAg
ICAgICAgLCBtX29iamVjdChvYmplY3QpCi0gICAgICAgICwgbV9hY3Rpb24oYWN0aW9uKQotICAg
IHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5ET01XaW5kb3dUaW1lcigpCi0gICAgewotICAgICAg
ICBKU0xvY2sgbG9jayhmYWxzZSk7Ci0gICAgICAgIGRlbGV0ZSBtX2FjdGlvbjsKLSAgICB9Ci0K
LSAgICBpbnQgdGltZW91dElkKCkgY29uc3QgeyByZXR1cm4gbV90aW1lb3V0SWQ7IH0KLQotICAg
IGludCBuZXN0aW5nTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX25lc3RpbmdMZXZlbDsgfQotICAg
IHZvaWQgc2V0TmVzdGluZ0xldmVsKGludCBuKSB7IG1fbmVzdGluZ0xldmVsID0gbjsgfQotCi0g
ICAgU2NoZWR1bGVkQWN0aW9uKiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQot
ICAgIFNjaGVkdWxlZEFjdGlvbiogdGFrZUFjdGlvbigpIHsgU2NoZWR1bGVkQWN0aW9uKiBhID0g
bV9hY3Rpb247IG1fYWN0aW9uID0gMDsgcmV0dXJuIGE7IH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIHZvaWQgZmlyZWQoKTsKLQotICAgIGludCBtX3RpbWVvdXRJZDsKLSAgICBpbnQgbV9uZXN0
aW5nTGV2ZWw7Ci0gICAgSlNET01XaW5kb3dCYXNlKiBtX29iamVjdDsKLSAgICBTY2hlZHVsZWRB
Y3Rpb24qIG1fYWN0aW9uOwotfTsKLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBKU0RPTVdpbmRv
d0Jhc2UgT2JqZWN0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBjb25zdCBDbGFzc0luZm8g
SlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7ICJXaW5kb3ciLCAwLCAmSlNET01XaW5kb3dCYXNl
VGFibGUsIDAgfTsKQEAgLTg2OSwyMSArODM0LDE1IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpj
bGVhckFsbFRpbWVvdXRzKCkKIAogaW50IEpTRE9NV2luZG93QmFzZTo6aW5zdGFsbFRpbWVvdXQo
U2NoZWR1bGVkQWN0aW9uKiBhLCBpbnQgdCwgYm9vbCBzaW5nbGVTaG90KQogewotICAgIGludCB0
aW1lb3V0SWQgPSArK2xhc3RVc2VkVGltZW91dElkOwotCi0gICAgLy8gYXZvaWQgd3JhcGFyb3Vu
ZCBnb2luZyBuZWdhdGl2ZSBvbiB1cwotICAgIGlmICh0aW1lb3V0SWQgPD0gMCkKLSAgICAgICAg
dGltZW91dElkID0gMTsKLQotICAgIGludCBuZXN0TGV2ZWwgPSB0aW1lck5lc3RpbmdMZXZlbCAr
IDE7Ci0gICAgRE9NV2luZG93VGltZXIqIHRpbWVyID0gbmV3IERPTVdpbmRvd1RpbWVyKHRpbWVv
dXRJZCwgbmVzdExldmVsLCB0aGlzLCBhKTsKKyAgICBET01UaW1lciogdGltZXIgPSBuZXcgRE9N
VGltZXIodGhpcywgYSk7CisgICAgaW50IHRpbWVvdXRJZCA9IHRpbWVyLT50aW1lb3V0SWQoKTsK
ICAgICBBU1NFUlQoIWQoKS0+dGltZW91dHMuZ2V0KHRpbWVvdXRJZCkpOwogICAgIGQoKS0+dGlt
ZW91dHMuc2V0KHRpbWVvdXRJZCwgdGltZXIpOwogICAgIC8vIFVzZSBhIG1pbmltdW0gaW50ZXJ2
YWwgb2YgMTAgbXMgdG8gbWF0Y2ggb3RoZXIgYnJvd3NlcnMsIGJ1dCBvbmx5IG9uY2Ugd2UndmUK
ICAgICAvLyBuZXN0ZWQgZW5vdWdoIHRvIG5vdGljZSB0aGF0IHdlJ3JlIHJlcGVhdGluZy4KICAg
ICAvLyBGYXN0ZXIgdGltZXJzIG1pZ2h0IGJlICJiZXR0ZXIiLCBidXQgdGhleSdyZSBpbmNvbXBh
dGlibGUuCiAgICAgZG91YmxlIGludGVydmFsID0gbWF4KDAuMDAxLCB0ICogMC4wMDEpOwotICAg
IGlmIChpbnRlcnZhbCA8IGNNaW5pbXVtVGltZXJJbnRlcnZhbCAmJiBuZXN0TGV2ZWwgPj0gY01h
eFRpbWVyTmVzdGluZ0xldmVsKQorICAgIGlmIChpbnRlcnZhbCA8IGNNaW5pbXVtVGltZXJJbnRl
cnZhbCAmJiB0aW1lci0+bmVzdGluZ0xldmVsKCkgPj0gY01heFRpbWVyTmVzdGluZ0xldmVsKQog
ICAgICAgICBpbnRlcnZhbCA9IGNNaW5pbXVtVGltZXJJbnRlcnZhbDsKICAgICBpZiAoc2luZ2xl
U2hvdCkKICAgICAgICAgdGltZXItPnN0YXJ0T25lU2hvdChpbnRlcnZhbCk7CkBAIC05MTYsNyAr
ODc1LDcgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnBhdXNlVGltZW91dHMoT3duUAogICAgIEpT
RE9NV2luZG93QmFzZURhdGE6OlRpbWVvdXRzTWFwOjppdGVyYXRvciBpdCA9IGQoKS0+dGltZW91
dHMuYmVnaW4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSB0aW1lb3V0c0NvdW50OyAr
K2ksICsraXQpIHsKICAgICAgICAgaW50IHRpbWVvdXRJZCA9IGl0LT5maXJzdDsKLSAgICAgICAg
RE9NV2luZG93VGltZXIqIHRpbWVyID0gaXQtPnNlY29uZDsKKyAgICAgICAgRE9NVGltZXIqIHRp
bWVyID0gaXQtPnNlY29uZDsKICAgICAgICAgdFtpXS50aW1lb3V0SWQgPSB0aW1lb3V0SWQ7CiAg
ICAgICAgIHRbaV0ubmVzdGluZ0xldmVsID0gdGltZXItPm5lc3RpbmdMZXZlbCgpOwogICAgICAg
ICB0W2ldLm5leHRGaXJlSW50ZXJ2YWwgPSB0aW1lci0+bmV4dEZpcmVJbnRlcnZhbCgpOwpAQCAt
OTM3LDcgKzg5Niw3IEBAIHZvaWQgSlNET01XaW5kb3dCYXNlOjpyZXN1bWVUaW1lb3V0cyhPd24K
ICAgICBQYXVzZWRUaW1lb3V0KiBhcnJheSA9IHRpbWVvdXRzLT50YWtlVGltZW91dHMoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjb3VudDsgKytpKSB7CiAgICAgICAgIGludCB0aW1l
b3V0SWQgPSBhcnJheVtpXS50aW1lb3V0SWQ7Ci0gICAgICAgIERPTVdpbmRvd1RpbWVyKiB0aW1l
ciA9IG5ldyBET01XaW5kb3dUaW1lcih0aW1lb3V0SWQsIGFycmF5W2ldLm5lc3RpbmdMZXZlbCwg
dGhpcywgYXJyYXlbaV0uYWN0aW9uKTsKKyAgICAgICAgRE9NVGltZXIqIHRpbWVyID0gbmV3IERP
TVRpbWVyKHRpbWVvdXRJZCwgYXJyYXlbaV0ubmVzdGluZ0xldmVsLCB0aGlzLCBhcnJheVtpXS5h
Y3Rpb24pOwogICAgICAgICBkKCktPnRpbWVvdXRzLnNldCh0aW1lb3V0SWQsIHRpbWVyKTsKICAg
ICAgICAgdGltZXItPnN0YXJ0KGFycmF5W2ldLm5leHRGaXJlSW50ZXJ2YWwsIGFycmF5W2ldLnJl
cGVhdEludGVydmFsKTsKICAgICB9CkBAIC05NTYsMTQgKzkxNSwxNCBAQCB2b2lkIEpTRE9NV2lu
ZG93QmFzZTo6cmVtb3ZlVGltZW91dChpbnQgCiAgICAgZGVsZXRlIGQoKS0+dGltZW91dHMudGFr
ZSh0aW1lb3V0SWQpOwogfQogCi12b2lkIEpTRE9NV2luZG93QmFzZTo6dGltZXJGaXJlZChET01X
aW5kb3dUaW1lciogdGltZXIpCit2b2lkIEpTRE9NV2luZG93QmFzZTo6dGltZXJGaXJlZChET01U
aW1lciogdGltZXIpCiB7CiAgICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5vbi1vbmUtc2hvdCB0aW1l
cnMuCiAgICAgaWYgKHRpbWVyLT5pc0FjdGl2ZSgpKSB7CiAgICAgICAgIGludCB0aW1lb3V0SWQg
PSB0aW1lci0+dGltZW91dElkKCk7CiAKICAgICAgICAgdGltZXItPmFjdGlvbigpLT5leGVjdXRl
KHNoZWxsKCkpOwotICAgICAgICAvLyBUaGUgRE9NV2luZG93VGltZXIgb2JqZWN0IG1heSBoYXZl
IGJlZW4gZGVsZXRlZCBvciByZXBsYWNlZCBkdXJpbmcgZXhlY3V0aW9uLAorICAgICAgICAvLyBU
aGUgRE9NVGltZXIgb2JqZWN0IG1heSBoYXZlIGJlZW4gZGVsZXRlZCBvciByZXBsYWNlZCBkdXJp
bmcgZXhlY3V0aW9uLAogICAgICAgICAvLyBzbyB3ZSByZS1mZXRjaCBpdC4KICAgICAgICAgdGlt
ZXIgPSBkKCktPnRpbWVvdXRzLmdldCh0aW1lb3V0SWQpOwogICAgICAgICBpZiAoIXRpbWVyKQpA
QCAtOTkyLDEzICs5NTEsNiBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6ZGlzY29ubmVjdEZyYW1l
KCkKICAgICBjbGVhckFsbFRpbWVvdXRzKCk7CiB9CiAKLXZvaWQgRE9NV2luZG93VGltZXI6OmZp
cmVkKCkKLXsKLSAgICB0aW1lck5lc3RpbmdMZXZlbCA9IG1fbmVzdGluZ0xldmVsOwotICAgIG1f
b2JqZWN0LT50aW1lckZpcmVkKHRoaXMpOwotICAgIHRpbWVyTmVzdGluZ0xldmVsID0gMDsKLX0K
LQogSlNWYWx1ZSogdG9KUyhFeGVjU3RhdGUqLCBET01XaW5kb3cqIGRvbVdpbmRvdykKIHsKICAg
ICBpZiAoIWRvbVdpbmRvdykKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
aAkocmV2aXNpb24gMzg3MTYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBjbGFzcyBBdG9taWNTdHJpbmc7CisgICAgY2xhc3MgRE9NVGltZXI7CiAgICAgY2xh
c3MgRE9NV2luZG93OwotICAgIGNsYXNzIERPTVdpbmRvd1RpbWVyOwogICAgIGNsYXNzIEV2ZW50
OwogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEpTRE9NV2luZG93OwpAQCAtNzIsNyArNzIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcGF1c2VUaW1lb3V0cyhPd25Q
dHI8UGF1c2VkVGltZW91dHM+Jik7CiAgICAgICAgIHZvaWQgcmVzdW1lVGltZW91dHMoT3duUHRy
PFBhdXNlZFRpbWVvdXRzPiYpOwogCi0gICAgICAgIHZvaWQgdGltZXJGaXJlZChET01XaW5kb3dU
aW1lciopOworICAgICAgICB2b2lkIHRpbWVyRmlyZWQoRE9NVGltZXIqKTsKIAogICAgICAgICB2
b2lkIGNsZWFyKCk7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICBKU0M6OkpTVmFsdWUqKiByZXR1cm5WYWx1ZVNsb3Q7CiAgICAgICAgICAgICBK
U0RPTVdpbmRvd1NoZWxsKiBzaGVsbDsKIAotICAgICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPGlu
dCwgRE9NV2luZG93VGltZXIqPiBUaW1lb3V0c01hcDsKKyAgICAgICAgICAgIHR5cGVkZWYgSGFz
aE1hcDxpbnQsIERPTVRpbWVyKj4gVGltZW91dHNNYXA7CiAgICAgICAgICAgICBUaW1lb3V0c01h
cCB0aW1lb3V0czsKICAgICAgICAgfTsKIAo=
</data>
<flag name="review"
          id="11840"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>