<?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>78758</bug_id>
          
          <creation_ts>2012-02-15 15:56:32 -0800</creation_ts>
          <short_desc>DelayNode has a fixed one second max delay time</short_desc>
          <delta_ts>2012-03-03 14:49:20 -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 Audio</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Rogers">crogers</reporter>
          <assigned_to name="Raymond Toy">rtoy</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>crogers</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>557675</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-15 15:56:32 -0800</bug_when>
    <thetext>See DelayNode specification:
https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#DelayNode-section

One possible solution (but needs more thought) is to make the AudioContext method createDelayNode() take an optional max delay time parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558343</commentid>
    <comment_count>1</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-02-16 11:08:56 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; See DelayNode specification:
&gt; https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#DelayNode-section
&gt; 
&gt; One possible solution (but needs more thought) is to make the AudioContext method createDelayNode() take an optional max delay time parameter.

Seems like a reasonable thing to do.  I&apos;ll look into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558663</commentid>
    <comment_count>2</comment_count>
      <attachid>127465</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-02-16 16:38:32 -0800</bug_when>
    <thetext>Created attachment 127465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564546</commentid>
    <comment_count>3</comment_count>
      <attachid>127465</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-24 12:27:00 -0800</bug_when>
    <thetext>Comment on attachment 127465
Patch

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

Looks pretty good overall, but I have a few comments:

&gt; Source/WebCore/webaudio/AudioContext.h:116
&gt; +    PassRefPtr&lt;DelayNode&gt; createDelayNode(double maxDelayTime = 1);

It&apos;s unfortunate to have a magic constant 1 here, where we used to have a constant (now removed in this patch) DefaultMaxDelayTime

Just out of curiousness, what happens if you remove the default value here, and then don&apos;t pass a value in the JS code?
    var delay = context.createDelayNode();

&gt; LayoutTests/webaudio/delaynode-scheduling.html:33
&gt; +    var delay = context.createDelayNode(2);

Can we please leave this unchanged, since the normal case for testing is to pass no arguments

&gt; LayoutTests/webaudio/delaynode.html:33
&gt; +    var delay = context.createDelayNode(2);

I think it&apos;s best to leave this test unchanged, since the default use is to *not* pass a maxDelayTime as an argument, and we have to test that case.

Instead, I recommend cloning this test, and call it &quot;delay-testing-maxdelay.html&quot; with this change, and also explicitly setting delayTimeSeconds = 1.5

Does that make sense?

&gt; LayoutTests/webaudio/resources/delay-testing.js:4
&gt; +var delayTimeSeconds = 1.5;

Can we leave this value at 0.5 here, then reset the value to 1.5 *only* in a new test called &quot;delay-testing-maxdelay.html&quot;
which will essentially be the same as the old &quot;delay-testing.html&quot; except it will pass a max value in createDelayNode() and reset delayTimeSeconds to the higher value?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566826</commentid>
    <comment_count>4</comment_count>
      <attachid>129284</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-02-28 10:09:17 -0800</bug_when>
    <thetext>Created attachment 129284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566828</commentid>
    <comment_count>5</comment_count>
      <attachid>127465</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-02-28 10:10:50 -0800</bug_when>
    <thetext>Comment on attachment 127465
Patch

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

&gt;&gt; Source/WebCore/webaudio/AudioContext.h:116
&gt;&gt; +    PassRefPtr&lt;DelayNode&gt; createDelayNode(double maxDelayTime = 1);
&gt; 
&gt; It&apos;s unfortunate to have a magic constant 1 here, where we used to have a constant (now removed in this patch) DefaultMaxDelayTime
&gt; 
&gt; Just out of curiousness, what happens if you remove the default value here, and then don&apos;t pass a value in the JS code?
&gt;     var delay = context.createDelayNode();

Doesn&apos;t compile because the generated javascript creates a different function signature.

How about if I move the old DefaultMaxDelayTime from DelayDSPProcessor to AudioContext?

&gt;&gt; LayoutTests/webaudio/delaynode-scheduling.html:33
&gt;&gt; +    var delay = context.createDelayNode(2);
&gt; 
&gt; Can we please leave this unchanged, since the normal case for testing is to pass no arguments

Reverted.

&gt;&gt; LayoutTests/webaudio/delaynode.html:33
&gt;&gt; +    var delay = context.createDelayNode(2);
&gt; 
&gt; I think it&apos;s best to leave this test unchanged, since the default use is to *not* pass a maxDelayTime as an argument, and we have to test that case.
&gt; 
&gt; Instead, I recommend cloning this test, and call it &quot;delay-testing-maxdelay.html&quot; with this change, and also explicitly setting delayTimeSeconds = 1.5
&gt; 
&gt; Does that make sense?

Change reverted and added new test file to test the longer delay.

&gt;&gt; LayoutTests/webaudio/resources/delay-testing.js:4
&gt;&gt; +var delayTimeSeconds = 1.5;
&gt; 
&gt; Can we leave this value at 0.5 here, then reset the value to 1.5 *only* in a new test called &quot;delay-testing-maxdelay.html&quot;
&gt; which will essentially be the same as the old &quot;delay-testing.html&quot; except it will pass a max value in createDelayNode() and reset delayTimeSeconds to the higher value?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567211</commentid>
    <comment_count>6</comment_count>
      <attachid>129284</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-28 16:32:07 -0800</bug_when>
    <thetext>Comment on attachment 129284
Patch

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

&gt; Source/WebCore/webaudio/AudioContext.h:46
&gt; +const double defaultMaxDelayTime = 1;

We can&apos;t define constants in the header file like this.  They must be defined in a .cpp file for proper namespace/linkage

&gt; Source/WebCore/webaudio/AudioContext.h:118
&gt; +    PassRefPtr&lt;DelayNode&gt; createDelayNode(double maxDelayTime = defaultMaxDelayTime);

How about this idea:

Create two versions of createDelayNode(), one which takes no argument and one which takes the maxDelayTime argument.
Then, in the .cpp file you can have one call the other with a method-local constant &quot;defaultMaxDelayTime&quot;

&gt; LayoutTests/webaudio/delaynode-maxdelay-expected.txt:1
&gt; +Tests basic functionality of DelayNode.

This message needs to change, saying something about max-delay.

&gt; LayoutTests/webaudio/delaynode-maxdelay.html:15
&gt; +description(&quot;Tests basic functionality of DelayNode.&quot;);

This message needs to change, saying something about max-delay.

&gt; LayoutTests/webaudio/delaynode-maxdelay.html:32
&gt; +

Please add comment here saying that we &quot;explicitly&quot; create the node with the given max-delay time.

&gt; LayoutTests/webaudio/delaynode-maxdelay.html:33
&gt; +    var delay = context.createDelayNode(2);

Please add comment here saying that we &quot;explicitly&quot; choose a delay time greater than the default delay time of 1 second to test that our max-delay time is respected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567688</commentid>
    <comment_count>7</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-02-29 09:43:16 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 129284 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129284&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/webaudio/AudioContext.h:46
&gt; &gt; +const double defaultMaxDelayTime = 1;
&gt; 
&gt; We can&apos;t define constants in the header file like this.  They must be defined in a .cpp file for proper namespace/linkage

It compiled fine, but maybe it&apos;s not in the namespace you want.  Is that what you mean?
&gt; 
&gt; &gt; Source/WebCore/webaudio/AudioContext.h:118
&gt; &gt; +    PassRefPtr&lt;DelayNode&gt; createDelayNode(double maxDelayTime = defaultMaxDelayTime);
&gt; 
&gt; How about this idea:
&gt; 
&gt; Create two versions of createDelayNode(), one which takes no argument and one which takes the maxDelayTime argument.
&gt; Then, in the .cpp file you can have one call the other with a method-local constant &quot;defaultMaxDelayTime&quot;

This works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567696</commentid>
    <comment_count>8</comment_count>
      <attachid>129468</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-02-29 10:09:04 -0800</bug_when>
    <thetext>Created attachment 129468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568024</commentid>
    <comment_count>9</comment_count>
      <attachid>129284</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-02-29 15:41:39 -0800</bug_when>
    <thetext>Comment on attachment 129284
Patch

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

&gt;&gt;&gt; Source/WebCore/webaudio/AudioContext.h:118
&gt;&gt;&gt; +    PassRefPtr&lt;DelayNode&gt; createDelayNode(double maxDelayTime = defaultMaxDelayTime);
&gt;&gt; 
&gt;&gt; How about this idea:
&gt;&gt; 
&gt;&gt; Create two versions of createDelayNode(), one which takes no argument and one which takes the maxDelayTime argument.
&gt;&gt; Then, in the .cpp file you can have one call the other with a method-local constant &quot;defaultMaxDelayTime&quot;
&gt; 
&gt; This works.

Done.

&gt;&gt; LayoutTests/webaudio/delaynode-maxdelay-expected.txt:1
&gt;&gt; +Tests basic functionality of DelayNode.
&gt; 
&gt; This message needs to change, saying something about max-delay.

Done.

&gt;&gt; LayoutTests/webaudio/delaynode-maxdelay.html:15
&gt;&gt; +description(&quot;Tests basic functionality of DelayNode.&quot;);
&gt; 
&gt; This message needs to change, saying something about max-delay.

Done.

&gt;&gt; LayoutTests/webaudio/delaynode-maxdelay.html:32
&gt;&gt; +
&gt; 
&gt; Please add comment here saying that we &quot;explicitly&quot; create the node with the given max-delay time.

Done.

&gt;&gt; LayoutTests/webaudio/delaynode-maxdelay.html:33
&gt;&gt; +    var delay = context.createDelayNode(2);
&gt; 
&gt; Please add comment here saying that we &quot;explicitly&quot; choose a delay time greater than the default delay time of 1 second to test that our max-delay time is respected.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568033</commentid>
    <comment_count>10</comment_count>
      <attachid>129468</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-29 15:51:15 -0800</bug_when>
    <thetext>Comment on attachment 129468
Patch

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

Looks good overall with one comment:

&gt; Source/WebCore/webaudio/AudioContext.cpp:449
&gt; +    

I&apos;m not sure why you don&apos;t simply call:

return createDelayNode(defaultMaxDelayTime) instead of lines 450:452</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568073</commentid>
    <comment_count>11</comment_count>
      <attachid>129548</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-02-29 16:19:46 -0800</bug_when>
    <thetext>Created attachment 129548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568077</commentid>
    <comment_count>12</comment_count>
      <attachid>129468</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-02-29 16:20:50 -0800</bug_when>
    <thetext>Comment on attachment 129468
Patch

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

&gt;&gt; Source/WebCore/webaudio/AudioContext.cpp:449
&gt;&gt; +    
&gt; 
&gt; I&apos;m not sure why you don&apos;t simply call:
&gt; 
&gt; return createDelayNode(defaultMaxDelayTime) instead of lines 450:452

Yeah, that&apos;s much better.  Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568081</commentid>
    <comment_count>13</comment_count>
      <attachid>129548</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-02-29 16:24:05 -0800</bug_when>
    <thetext>Comment on attachment 129548
Patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568213</commentid>
    <comment_count>14</comment_count>
      <attachid>129548</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-29 18:43:53 -0800</bug_when>
    <thetext>Comment on attachment 129548
Patch

Rejecting attachment 129548 from review queue.

crogers@google.com does not have reviewer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have reviewer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have reviewer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your reviewer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568813</commentid>
    <comment_count>15</comment_count>
      <attachid>129548</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-03-01 12:17:36 -0800</bug_when>
    <thetext>Comment on attachment 129548
Patch

Re-trying commit queue - committers.py seems fine...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568877</commentid>
    <comment_count>16</comment_count>
      <attachid>129548</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-01 13:49:35 -0800</bug_when>
    <thetext>Comment on attachment 129548
Patch

Rejecting attachment 129548 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
t line 164.

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;, &apos;--force-update&apos;]&quot; exit_code: 9
Updating OpenSource
From git://git.webkit.org/WebKit
   60dd0f4..2366bf5  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 109402 = b1cd2e5d03d1f0c3fa07b74ca5f82e76fc87a604
last_rev is higher!: 109402 &gt;= 109304 at /usr/lib/git-core/git-svn line 1528

Died at Tools/Scripts/update-webkit line 164.

Full output: http://queues.webkit.org/results/11779601</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569774</commentid>
    <comment_count>17</comment_count>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-03-02 11:06:12 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 129548 [details])
&gt; Re-trying commit queue - committers.py seems fine...

Still didn&apos;t work.  Can you try this again when you get a chance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569800</commentid>
    <comment_count>18</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2012-03-02 11:42:42 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #15)
&gt; &gt; (From update of attachment 129548 [details] [details])
&gt; &gt; Re-trying commit queue - committers.py seems fine...
&gt; 
&gt; Still didn&apos;t work.  Can you try this again when you get a chance?

It looks like the patch might not have applied cleanly (purple bot).  Could you re-upload the patch and I can try again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569863</commentid>
    <comment_count>19</comment_count>
      <attachid>129943</attachid>
    <who name="Raymond Toy">rtoy</who>
    <bug_when>2012-03-02 12:52:57 -0800</bug_when>
    <thetext>Created attachment 129943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570082</commentid>
    <comment_count>20</comment_count>
      <attachid>129943</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-02 18:54:38 -0800</bug_when>
    <thetext>Comment on attachment 129943
Patch

Rejecting attachment 129943 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

Last 500 characters of output:
_by_email
    return self._reviewer_only(self.account_by_email(email))
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/common/config/committers.py&quot;, line 632, in account_by_email
    return self._email_to_account_map().get(email.lower()) if email else None
  File &quot;/mnt/git/webkit-commit-queue/Tools/Scripts/webkitpy/common/config/committers.py&quot;, line 525, in _email_to_account_map
    assert(email not in self._accounts_by_email)  # We should never have duplicate emails.
AssertionError

Full output: http://queues.webkit.org/results/11807027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570100</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-02 19:43:14 -0800</bug_when>
    <thetext>Someone borked the committers.py file methinks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570176</commentid>
    <comment_count>22</comment_count>
      <attachid>129943</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-03 14:49:09 -0800</bug_when>
    <thetext>Comment on attachment 129943
Patch

Clearing flags on attachment: 129943

Committed r109666: &lt;http://trac.webkit.org/changeset/109666&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570177</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-03 14:49:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127465</attachid>
            <date>2012-02-16 16:38:32 -0800</date>
            <delta_ts>2012-02-28 10:10:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78758-20120216163831.patch</filename>
            <type>text/plain</type>
            <size>14462</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkxYTNkYmJkMTY5MDcx
MTAwZGJmMTc3N2YxNGUyMmFmNjUyODMyYi4uMDJiNGFjYWQ1ZjBlNDQzMmE3MmU4NWU5NjQyMzEy
MjNjOTQyMTRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTAyLTE2ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBEZWxheU5vZGUgaGFzIGEgZml4
ZWQgb25lIHNlY29uZCBtYXggZGVsYXkgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3NTgKKworICAgICAgICBDaGFuZ2UgRGVsYXlOb2RlIHRv
IGFjY2VwdCBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUKKyAgICAgICAgbWF4
aW11bSBkZWxheSBhbGxvd2VkLiBJZiBub3Qgc3BlY2lmaWVkIHRoZSBkZWZhdWx0IGlzIDEgc2Vj
LgorICAgICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHMgdXBkYXRlZCB0byB1c2UgYSBkZWxheSBvZiAxLjUgc2VjLgorCisgICAgICAgICog
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4
dDo6Y3JlYXRlRGVsYXlOb2RlKTogQWxsb3cgbWF4RGVsYXlUaW1lCisgICAgICAgIHBhcmFtZXRl
ciB0byBzcGVjaWZ5IG1heCBkZWxheS4KKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQu
aDogQWxsb3cgbWF4RGVsYXlUaW1lCisgICAgICAgIHBhcmFtZXRlciB0byBzcGVjaWZ5IG1heCBk
ZWxheSBidXQgZGVmYXVsdCB0byAxLgorICAgICAgICAoQXVkaW9Db250ZXh0KToKKyAgICAgICAg
KiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOiBjcmVhdGVEZWxheU5vZGUgdGFrZXMgb3B0aW9u
YWwgbWF4CisgICAgICAgIGRlbGF5IHRpbWUgcGFyYW1ldGVyLgorICAgICAgICAqIHdlYmF1ZGlv
L0RlbGF5RFNQS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5RFNQS2VybmVsOjpE
ZWxheURTUEtlcm5lbCk6IFJlbW92ZSB1bnVzZWQKKyAgICAgICAgRGVmYXVsdE1heERlbGF5VGlt
ZS4gU2V0IG1fbWF4RGVsYXlUaW1lIGZyb20gcHJvY2Vzc29yCisgICAgICAgIG1heERlbGF5VGlt
ZS4gCisgICAgICAgICogd2ViYXVkaW8vRGVsYXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRlbGF5Tm9kZTo6RGVsYXlOb2RlKTogQWRkIG1heERlbGF5VGltZSBwYXJhbWV0ZXIuIAorICAg
ICAgICAqIHdlYmF1ZGlvL0RlbGF5Tm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlOb2Rl
OjpjcmVhdGUpOiBBZGQgbWF4RGVsYXlUaW1lIHBhcmFtZXRlci4gCisgICAgICAgIChEZWxheU5v
ZGUpOiBBZGQgbWF4RGVsYXlUaW1lIHBhcmFtZXRlci4gCisgICAgICAgICogd2ViYXVkaW8vRGVs
YXlQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OkRlbGF5
UHJvY2Vzc29yKTogQWRkIG1heERlbGF5VGltZQorICAgICAgICBwYXJhbWV0ZXIuICAKKyAgICAg
ICAgKiB3ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oOgorICAgICAgICAoRGVsYXlQcm9jZXNzb3Ip
OiBBZGQgbWF4RGVsYXlUaW1lIHBhcmFtZXRlci4gCisgICAgICAgIChXZWJDb3JlOjpEZWxheVBy
b2Nlc3Nvcjo6bWF4RGVsYXlUaW1lKTogTmV3IHNsb3QgdG8gaG9sZAorICAgICAgICBtYXhEZWxh
eVRpbWUuIAorCiAyMDEyLTAyLTE1ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTiAocjEwNzgzNik6IGZhc3QvYm94LXNoYWRvdy9zcHJlYWQuaHRt
bCBhbmQgZmFzdC93cml0aW5nLW1vZGUvYm94LXNoYWRvdy0qLmh0bWwgdGVzdHMgZmFpbGluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggYWZjODExMzBiMTQ5
MTcwMDYyNDdhZDkyNTJlMWUxNjNlN2I2MWY0Yy4uOWNmZWM4NGFlZjA1ZDMyYmUxNzYzY2YwYmE4
ZjJjYWYyNzcwYmRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3Bw
CkBAIC00NDMsMTEgKzQ0MywxMSBAQCBQYXNzUmVmUHRyPEF1ZGlvR2Fpbk5vZGU+IEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlR2Fpbk5vZGUoKQogICAgIHJldHVybiBBdWRpb0dhaW5Ob2RlOjpjcmVhdGUo
dGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8
RGVsYXlOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5Tm9kZSgpCitQYXNzUmVmUHRyPERl
bGF5Tm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheU5vZGUoZG91YmxlIG1heERlbGF5VGlt
ZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7
Ci0gICAgcmV0dXJuIERlbGF5Tm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5z
YW1wbGVSYXRlKCkpOworICAgIHJldHVybiBEZWxheU5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUpOwogfQogCiBQYXNzUmVmUHRy
PEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRl
cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDc5MTE1MTliMzgw
M2RkOWE3MmJkOTI1Zjg4MWFlYzIxZjY0OTIyYjMuLjYxZjYzYWU2NGIyZjM4ZGVlYTQ0OWZkZjU2
MjRmNmRlNmM1MjhiZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBA
IC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8QXVkaW9HYWluTm9kZT4g
Y3JlYXRlR2Fpbk5vZGUoKTsKICAgICBQYXNzUmVmUHRyPEJpcXVhZEZpbHRlck5vZGU+IGNyZWF0
ZUJpcXVhZEZpbHRlcigpOwogICAgIFBhc3NSZWZQdHI8V2F2ZVNoYXBlck5vZGU+IGNyZWF0ZVdh
dmVTaGFwZXIoKTsKLSAgICBQYXNzUmVmUHRyPERlbGF5Tm9kZT4gY3JlYXRlRGVsYXlOb2RlKCk7
CisgICAgUGFzc1JlZlB0cjxEZWxheU5vZGU+IGNyZWF0ZURlbGF5Tm9kZShkb3VibGUgbWF4RGVs
YXlUaW1lID0gMSk7CiAgICAgUGFzc1JlZlB0cjxMb3dQYXNzMkZpbHRlck5vZGU+IGNyZWF0ZUxv
d1Bhc3MyRmlsdGVyKCk7CiAgICAgUGFzc1JlZlB0cjxIaWdoUGFzczJGaWx0ZXJOb2RlPiBjcmVh
dGVIaWdoUGFzczJGaWx0ZXIoKTsKICAgICBQYXNzUmVmUHRyPEF1ZGlvUGFubmVyTm9kZT4gY3Jl
YXRlUGFubmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAppbmRl
eCBlZjY5MzU1MjZmYjI2ZDQzMTkzMmE3ZmFjYzAyMTgyODBlYzJkMWQyLi5iNWU5MTcxOTE3YjQy
ZWJhNjVlM2I5YjQ3ZDE0NmExOWJmZWI2YjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5pZGwKQEAgLTYyLDcgKzYyLDcgQEAgbW9kdWxlIHdlYmF1ZGlvIHsKICNlbmRp
ZgogICAgICAgICAvLyBQcm9jZXNzaW5nIG5vZGVzCiAgICAgICAgIEF1ZGlvR2Fpbk5vZGUgY3Jl
YXRlR2Fpbk5vZGUoKTsKLSAgICAgICAgRGVsYXlOb2RlIGNyZWF0ZURlbGF5Tm9kZSgpOworICAg
ICAgICBEZWxheU5vZGUgY3JlYXRlRGVsYXlOb2RlKGluIFtPcHRpb25hbF0gZG91YmxlIG1heERl
bGF5VGltZSk7CiAgICAgICAgIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFkRmlsdGVyKCk7
CiAgICAgICAgIFdhdmVTaGFwZXJOb2RlIGNyZWF0ZVdhdmVTaGFwZXIoKTsKICAgICAgICAgTG93
UGFzczJGaWx0ZXJOb2RlIGNyZWF0ZUxvd1Bhc3MyRmlsdGVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAKaW5kZXggYWVkYTE4OWM1YTk1NTcxMDIzMTdiNDgw
ZjIwYWI5ODZjZTJmNGY4My4uZmIzMWUyZGRkOGUzNTg5NzUwZGI3MGMwOWZhZTdhZTFjZTU2OWNi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcApAQCAtMzIs
MTUgKzMyLDEzIEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwotICAKLWNvbnN0IGZsb2F0IERlZmF1bHRNYXhEZWxheVRpbWUgPSAxOworCiBjb25zdCBmbG9h
dCBTbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAwLjAyMGY7IC8vIDIwbXMKICAgCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIERlbGF5RFNQS2VybmVsOjpEZWxheURTUEtlcm5lbChEZWxheVByb2Nlc3Nv
ciogcHJvY2Vzc29yKQogICAgIDogQXVkaW9EU1BLZXJuZWwocHJvY2Vzc29yKQotICAgICwgbV9t
YXhEZWxheVRpbWUoRGVmYXVsdE1heERlbGF5VGltZSkKICAgICAsIG1fd3JpdGVJbmRleCgwKQog
ICAgICwgbV9maXJzdFRpbWUodHJ1ZSkKIHsKQEAgLTQ4LDcgKzQ2LDggQEAgRGVsYXlEU1BLZXJu
ZWw6OkRlbGF5RFNQS2VybmVsKERlbGF5UHJvY2Vzc29yKiBwcm9jZXNzb3IpCiAgICAgaWYgKCFw
cm9jZXNzb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fYnVmZmVyLmFsbG9jYXRlKHN0YXRp
Y19jYXN0PHNpemVfdD4ocHJvY2Vzc29yLT5zYW1wbGVSYXRlKCkgKiBEZWZhdWx0TWF4RGVsYXlU
aW1lKSk7CisgICAgbV9tYXhEZWxheVRpbWUgPSBwcm9jZXNzb3ItPm1heERlbGF5VGltZSgpOwor
ICAgIG1fYnVmZmVyLmFsbG9jYXRlKHN0YXRpY19jYXN0PHNpemVfdD4ocHJvY2Vzc29yLT5zYW1w
bGVSYXRlKCkgKiBtX21heERlbGF5VGltZSkpOwogICAgIG1fYnVmZmVyLnplcm8oKTsKIAogICAg
IG1fc21vb3RoaW5nUmF0ZSA9IEF1ZGlvVXRpbGl0aWVzOjpkaXNjcmV0ZVRpbWVDb25zdGFudEZv
clNhbXBsZVJhdGUoU21vb3RoaW5nVGltZUNvbnN0YW50LCBwcm9jZXNzb3ItPnNhbXBsZVJhdGUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAppbmRleCAyYTUyNWRkMWE2YzE4
YjlkZDVjNDRhN2UzNDRiNzBlOWIxNDlmOTAxLi41OTM0MWFiZjVjZWYyYjUzMTcyMmYzMzNiMmM5
Y2RiNDkxYjVmMzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheU5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTMw
LDEwICszMCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURlbGF5Tm9kZTo6RGVsYXlO
b2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0RlbGF5Tm9kZTo6
RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91Ymxl
IG1heERlbGF5VGltZSkKICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUpCiB7Ci0gICAgbV9wcm9jZXNzb3IgPSBhZG9wdFB0cihuZXcgRGVsYXlQcm9jZXNz
b3Ioc2FtcGxlUmF0ZSwgMSkpOyAgICAKKyAgICBtX3Byb2Nlc3NvciA9IGFkb3B0UHRyKG5ldyBE
ZWxheVByb2Nlc3NvcihzYW1wbGVSYXRlLCAxLCBtYXhEZWxheVRpbWUpKTsKICAgICBkZWxheVRp
bWUoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlbGF5
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmgKaW5kZXggM2Q1OGE4OTEzN2EzNmEz
Y2Q1ZGY4Y2U5YWU4NTUyYjM3MjhlMjZmNi4uOTJiMWUwNTYyNDQ3OTU5YzY3ZGRjYWRlYjBjMGVh
NGI3MTM4MGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmgKQEAgLTM1LDE1ICsz
NSwxNSBAQCBjbGFzcyBBdWRpb1BhcmFtOwogCiBjbGFzcyBEZWxheU5vZGUgOiBwdWJsaWMgQXVk
aW9CYXNpY1Byb2Nlc3Nvck5vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERl
bGF5Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxheU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGF5Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7
ICAgICAgCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVsYXlOb2RlKGNvbnRleHQsIHNh
bXBsZVJhdGUsIG1heERlbGF5VGltZSkpOyAgICAgIAogICAgIH0KIAogICAgIEF1ZGlvUGFyYW0q
IGRlbGF5VGltZSgpOwogCiBwcml2YXRlOgotICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHQqLCBm
bG9hdCBzYW1wbGVSYXRlKTsKKyAgICBEZWxheU5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2Ft
cGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7CiAKICAgICBEZWxheVByb2Nlc3NvciogZGVs
YXlQcm9jZXNzb3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxEZWxheVByb2Nlc3Nvcio+KHByb2Nl
c3NvcigpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5
UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNw
cAppbmRleCA4ZWQzZTQzMzdlMDlmMTMwMTdmYzZmM2Y3ZWYyZmJkYzhmMjMyNmNhLi5iMjNlOGFj
MWQyZDBhYzY4ZTdiODRmYTljZTRiOTY3NWM3NTc4ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCkBAIC0zMiwxMCArMzIsMTEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1EZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoZmxvYXQgc2FtcGxl
UmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscykKK0RlbGF5UHJvY2Vzc29yOjpEZWxheVBy
b2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3Vi
bGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Ioc2FtcGxlUmF0
ZSwgbnVtYmVyT2ZDaGFubmVscykKKyAgICAsIG1fbWF4RGVsYXlUaW1lKG1heERlbGF5VGltZSkK
IHsKLSAgICBtX2RlbGF5VGltZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZSgiZGVsYXlUaW1lIiwgMC4w
LCAwLjAsIDEuMCk7CisgICAgbV9kZWxheVRpbWUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoImRlbGF5
VGltZSIsIDAuMCwgMC4wLCBtYXhEZWxheVRpbWUpOwogfQogCiBEZWxheVByb2Nlc3Nvcjo6fkRl
bGF5UHJvY2Vzc29yKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5
UHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCmlu
ZGV4IDE1NDI4Y2U3NTk2ODVmYmYyOGI4NWEwNjBkMGNlYTBiM2IzMzM0ZTAuLjQzYzVlMGNiZWIx
OWY4NWYyZmMxNGY0M2I1ZDY0NmE1NWEzZDk2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
RGVsYXlQcm9jZXNzb3IuaApAQCAtMzcsMTUgKzM3LDE3IEBAIGNsYXNzIEF1ZGlvRFNQS2VybmVs
OwogICAgIAogY2xhc3MgRGVsYXlQcm9jZXNzb3IgOiBwdWJsaWMgQXVkaW9EU1BLZXJuZWxQcm9j
ZXNzb3IgewogcHVibGljOgotICAgIERlbGF5UHJvY2Vzc29yKGZsb2F0IHNhbXBsZVJhdGUsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOworICAgIERlbGF5UHJvY2Vzc29yKGZsb2F0IHNhbXBs
ZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpOwog
ICAgIHZpcnR1YWwgfkRlbGF5UHJvY2Vzc29yKCk7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzT3du
UHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKTsKICAgICAgICAgCiAgICAgQXVkaW9Q
YXJhbSogZGVsYXlUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9kZWxheVRpbWUuZ2V0KCk7IH0KIAor
ICAgIGRvdWJsZSBtYXhEZWxheVRpbWUoKSB7IHJldHVybiBtX21heERlbGF5VGltZTsgfQogcHJp
dmF0ZToKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV9kZWxheVRpbWU7CisgICAgZG91YmxlIG1f
bWF4RGVsYXlUaW1lOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFhZDVm
MDNlZmM0OWIwZDg0YTE3ZWEyZmUxODc1ZmQ3Mzg1NjlmYTYuLmM0ODU5NDYxOTBmNjllMzMyNDFj
ZmE5N2I2ZGMwY2ZhZTQwNDE3MmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wMi0xNiAg
UmF5bW9uZCBUb3kgIDxydG95QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVsYXlOb2RlIGhhcyBh
IGZpeGVkIG9uZSBzZWNvbmQgbWF4IGRlbGF5IHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJhdWRpby9kZWxheW5vZGUtZXhwZWN0ZWQudHh0
OiBVcGRhdGVkLgorICAgICAgICAqIHdlYmF1ZGlvL2RlbGF5bm9kZS1zY2hlZHVsaW5nLWV4cGVj
dGVkLnR4dDogVXBkYXRlZC4KKyAgICAgICAgKiB3ZWJhdWRpby9kZWxheW5vZGUtc2NoZWR1bGlu
Zy5odG1sOiBTcGVjaWZ5IDIgc2VjIGZvciBtYXggZGVsYXkKKyAgICAgICAgdGltZS4gCisgICAg
ICAgICogd2ViYXVkaW8vZGVsYXlub2RlLmh0bWw6IFNwZWNpZnkgMiBzZWMgZm9yIG1heCBkZWxh
eSB0aW1lLgorICAgICAgICAqIHdlYmF1ZGlvL3Jlc291cmNlcy9kZWxheS10ZXN0aW5nLmpzOiBT
ZXQgZGVsYXkgdGltZSB0byAxLjUgc2VjCisgICAgICAgIGluc3RlYWQgb2YgMC41LgorICAgICAg
ICAoY2hlY2tEZWxheWVkUmVzdWx0LnJldHVybi52YXIpOgorICAgICAgICAoY2hlY2tEZWxheWVk
UmVzdWx0KTogQWRkIG1lc3NhZ2VzIGZvciBmYWlsdXJlcy4KKwogMjAxMi0wMi0xNSAgTm9lbCBH
b3Jkb24gIDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZWJh
c2VsaW5lIEpQRUcgaW1hZ2UgcmVzdWx0cyBhZnRlciByMTA3Mzg5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vZGVsYXlub2RlLWV4cGVjdGVkLnR4dAppbmRleCA2M2E1MmQ4YzQwZTc1ZmM2MTY5YzY2
MTJhZmZjZGI3ZDc1MjRkNzgxLi5kNDU1OThjNDYyYTIxOWM0NzE2YTRmMjkxMjk1NmIyMjczMzI3
ZmU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1leHBlY3RlZC50eHQKQEAg
LTIsNyArMiw3IEBAIFRlc3RzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2YgRGVsYXlOb2RlLgogCiBP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKLVBBU1MgVGVzdCBzaWduYWwgd2FzIGNvcnJlY3Rs
eSBkZWxheWVkLgorUEFTUyBUZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5IGRlbGF5ZWQgYnkgMS41
IHNlYy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLXNjaGVkdWxpbmctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLXNjaGVkdWxpbmctZXhw
ZWN0ZWQudHh0CmluZGV4IGExOTY1OGRjMTRlZDliMzk5MzMxNzdjYTk1NDQxYjcxOGY5OWNkNmYu
LjIyNjAyYTIwOTQ3OTJlMGFlMmI2ZDQ3MjYzNzU0ZGEwNWE2NTBjYmEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1zY2hlZHVsaW5nLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtc2NoZWR1bGluZy1leHBlY3RlZC50eHQK
QEAgLTIsNyArMiw3IEBAIFRlc3RzIHRoYXQgRGVsYXlOb2RlIGRlbGF5VGltZSBwYXJhbWV0ZXIg
Y2FuIGJlIHNjaGVkdWxlZCBhdCBhIGdpdmVuIHRpbWUuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KIAotUEFTUyBUZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5IGRlbGF5ZWQuCitQQVNTIFRl
c3Qgc2lnbmFsIHdhcyBjb3JyZWN0bHkgZGVsYXllZCBieSAxLjUgc2VjLgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtc2NoZWR1bGluZy5odG1sIGIvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vZGVsYXlub2RlLXNjaGVkdWxpbmcuaHRtbAppbmRleCAwYTExZDJjZWJmNzgzNzdlODE3
YjFkN2Y3MGVjOTM1MGRlNWFkNWQzLi5mNjhjNGQzYzNhOGUxZTE4NDkzNGM5MDNkMzRiZTljM2Ux
NDA5YzdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtc2NoZWR1
bGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1zY2hlZHVsaW5n
Lmh0bWwKQEAgLTMwLDcgKzMwLDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKICAgICB2YXIgYnVm
ZmVyU291cmNlID0gY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKICAgICBidWZmZXJTb3Vy
Y2UuYnVmZmVyID0gdG9uZUJ1ZmZlcjsKIAotICAgIHZhciBkZWxheSA9IGNvbnRleHQuY3JlYXRl
RGVsYXlOb2RlKCk7CisgICAgdmFyIGRlbGF5ID0gY29udGV4dC5jcmVhdGVEZWxheU5vZGUoMik7
CiAgICAgCiAgICAgLy8gU2NoZWR1bGUgZGVsYXkgdGltZSBhdCB0aW1lIHplcm8uCiAgICAgZGVs
YXkuZGVsYXlUaW1lLnNldFZhbHVlQXRUaW1lKGRlbGF5VGltZVNlY29uZHMsIDApOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLmh0bWwgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby9kZWxheW5vZGUuaHRtbAppbmRleCA3MTc3N2ZjYzcxNGU0NmRmMTdmMWQ1OGEyOGJi
OTI3OWQ1NjIwODkwLi5jYWFkODliY2RkZGYzMWI3MTBjYjBkNTJlOTdmNWY1OTFkYjNiOGMxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUuaHRtbApAQCAtMzAsNyArMzAsNyBAQCBmdW5jdGlv
biBydW5UZXN0KCkgewogICAgIHZhciBidWZmZXJTb3VyY2UgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZl
clNvdXJjZSgpOwogICAgIGJ1ZmZlclNvdXJjZS5idWZmZXIgPSB0b25lQnVmZmVyOwogCi0gICAg
dmFyIGRlbGF5ID0gY29udGV4dC5jcmVhdGVEZWxheU5vZGUoKTsKKyAgICB2YXIgZGVsYXkgPSBj
b250ZXh0LmNyZWF0ZURlbGF5Tm9kZSgyKTsKICAgICBkZWxheS5kZWxheVRpbWUudmFsdWUgPSBk
ZWxheVRpbWVTZWNvbmRzOwogCiAgICAgYnVmZmVyU291cmNlLmNvbm5lY3QoZGVsYXkpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2RlbGF5LXRlc3RpbmcuanMg
Yi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvZGVsYXktdGVzdGluZy5qcwppbmRleCBi
Y2U0MTUwYzFhYTJiNTBiNTg4NzJlMjkzNDZhYThlYmNhOGM2ODcyLi41MGZkZTk2Y2RkMjQ0NDMy
YWRlY2RmN2IwNGVhNzZjMzNiNTJkMDkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRp
by9yZXNvdXJjZXMvZGVsYXktdGVzdGluZy5qcworKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9y
ZXNvdXJjZXMvZGVsYXktdGVzdGluZy5qcwpAQCAtMSw3ICsxLDcgQEAKIHZhciBzYW1wbGVSYXRl
ID0gNDQxMDAuMDsKIAogdmFyIHJlbmRlckxlbmd0aFNlY29uZHMgPSA0OwotdmFyIGRlbGF5VGlt
ZVNlY29uZHMgPSAwLjU7Cit2YXIgZGVsYXlUaW1lU2Vjb25kcyA9IDEuNTsKIHZhciB0b25lTGVu
Z3RoU2Vjb25kcyA9IDI7CiAKIGZ1bmN0aW9uIGNyZWF0ZVRvbmVCdWZmZXIoY29udGV4dCwgZnJl
cXVlbmN5LCBudW1iZXJPZkN5Y2xlcywgc2FtcGxlUmF0ZSkgewpAQCAtMzcsNiArMzcsNyBAQCBm
dW5jdGlvbiBjaGVja0RlbGF5ZWRSZXN1bHQodG9uZUJ1ZmZlcikgewogICAgICAgICAgICAgaWYg
KGkgPCBkZWxheVRpbWVGcmFtZXMpIHsKICAgICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IGlu
aXRpYWwgcG9ydGlvbiBpcyAwIChzaW5jZSBzaWduYWwgaXMgZGVsYXllZCkuCiAgICAgICAgICAg
ICAgICAgaWYgKHJlbmRlcmVkRGF0YVtpXSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkluaXRpYWwgcG9ydGlvbiBpcyBub3QgMCBhdCBmcmFtZSAiICsgaSk7CiAgICAg
ICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDQsMTIgKzQ1LDE0IEBAIGZ1bmN0aW9uIGNoZWNr
RGVsYXllZFJlc3VsdCh0b25lQnVmZmVyKSB7CiAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJl
IHRoYXQgdGhlIHRvbmUgZGF0YSBpcyBkZWxheWVkIGJ5IGV4YWN0bHkgdGhlIGV4cGVjdGVkIG51
bWJlciBvZiBmcmFtZXMuCiAgICAgICAgICAgICAgICAgdmFyIGogPSBpIC0gZGVsYXlUaW1lRnJh
bWVzOwogICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlZERhdGFbaV0gIT0gc291cmNlRGF0YVtq
XSkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJBY3R1YWwgZGF0YSBkb2VzIG5v
dCBtYXRjaCBleHBlY3RlZCBkYXRhIGF0IGZyYW1lICIgKyBpKTsKICAgICAgICAgICAgICAgICAg
ICAgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIE1ha2Ug
c3VyZSB3ZSBoYXZlIHNpbGVuY2UgYWZ0ZXIgdGhlIGRlbGF5ZWQgdG9uZS4KICAgICAgICAgICAg
ICAgICBpZiAocmVuZGVyZWREYXRhW2ldICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiRmluYWwgcG9ydGlvbiBpcyBub3QgMCBhdCBmcmFtZSAiICsgaSk7CiAgICAgICAg
ICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQpAQCAtNTcsOSArNjAsOSBAQCBmdW5jdGlvbiBjaGVja0RlbGF5
ZWRSZXN1bHQodG9uZUJ1ZmZlcikgewogICAgICAgICB9CiAKICAgICAgICAgaWYgKHN1Y2Nlc3Mp
IHsKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIlRlc3Qgc2lnbmFsIHdhcyBjb3JyZWN0bHkgZGVs
YXllZC4iKTsKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlRlc3Qgc2lnbmFsIHdhcyBjb3JyZWN0
bHkgZGVsYXllZCBieSAiICsgZGVsYXlUaW1lU2Vjb25kcyArICIgc2VjLiIpOwogICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiVGVzdCBzaWduYWwgd2FzIG5vdCBjb3Jy
ZWN0bHkgZGVsYXllZC4iKTsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlRlc3Qgc2lnbmFsIHdh
cyBub3QgY29ycmVjdGx5IGRlbGF5ZWQgYnkgIiArIGRlbGF5VGltZVNlY29uZHMgKyAiIHNlYy4i
KTsKICAgICAgICAgfQogCiAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129284</attachid>
            <date>2012-02-28 10:09:17 -0800</date>
            <delta_ts>2012-02-29 15:41:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78758-20120228100916.patch</filename>
            <type>text/plain</type>
            <size>15432</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxNGE2ZDIxMjMxZmNl
ZTgzZDU0OWQ4MTg3ODMwODIxMjE5MTdkZC4uMWE4MDJlZGYxOTM1NWU4N2IyYjA3ZjM2YzljMWJj
ODVhNTk1MTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAyLTE2ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBEZWxheU5vZGUgaGFzIGEgZml4
ZWQgb25lIHNlY29uZCBtYXggZGVsYXkgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3NTgKKworICAgICAgICBDaGFuZ2UgRGVsYXlOb2RlIHRv
IGFjY2VwdCBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUKKyAgICAgICAgbWF4
aW11bSBkZWxheSBhbGxvd2VkLiBJZiBub3Qgc3BlY2lmaWVkIHRoZSBkZWZhdWx0IGlzIDEgc2Vj
LgorICAgICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogd2ViYXVkaW8vZGVsYXlub2RlLW1heGRlbGF5Lmh0bWwKKyAgICAgICAgICAgICAg
d2ViYXVkaW8vZGVsYXlub2RlLW1heGRlbGF5LWV4cGVjdGVkLnR4dAorCisgICAgICAgICogd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
Y3JlYXRlRGVsYXlOb2RlKTogQWxsb3cgbWF4RGVsYXlUaW1lCisgICAgICAgIHBhcmFtZXRlciB0
byBzcGVjaWZ5IG1heCBkZWxheS4KKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuaDog
QWxsb3cgbWF4RGVsYXlUaW1lCisgICAgICAgIHBhcmFtZXRlciB0byBzcGVjaWZ5IG1heCBkZWxh
eSBidXQgZGVmYXVsdCB0byAxLgorICAgICAgICAoQXVkaW9Db250ZXh0KToKKyAgICAgICAgKiB3
ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOiBjcmVhdGVEZWxheU5vZGUgdGFrZXMgb3B0aW9uYWwg
bWF4CisgICAgICAgIGRlbGF5IHRpbWUgcGFyYW1ldGVyLgorICAgICAgICAqIHdlYmF1ZGlvL0Rl
bGF5RFNQS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5RFNQS2VybmVsOjpEZWxh
eURTUEtlcm5lbCk6IFJlbW92ZSB1bnVzZWQKKyAgICAgICAgRGVmYXVsdE1heERlbGF5VGltZS4g
U2V0IG1fbWF4RGVsYXlUaW1lIGZyb20gcHJvY2Vzc29yCisgICAgICAgIG1heERlbGF5VGltZS4g
CisgICAgICAgICogd2ViYXVkaW8vRGVsYXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGF5Tm9kZTo6RGVsYXlOb2RlKTogQWRkIG1heERlbGF5VGltZSBwYXJhbWV0ZXIuIAorICAgICAg
ICAqIHdlYmF1ZGlvL0RlbGF5Tm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpj
cmVhdGUpOiBBZGQgbWF4RGVsYXlUaW1lIHBhcmFtZXRlci4gCisgICAgICAgIChEZWxheU5vZGUp
OiBBZGQgbWF4RGVsYXlUaW1lIHBhcmFtZXRlci4gCisgICAgICAgICogd2ViYXVkaW8vRGVsYXlQ
cm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJv
Y2Vzc29yKTogQWRkIG1heERlbGF5VGltZQorICAgICAgICBwYXJhbWV0ZXIuICAKKyAgICAgICAg
KiB3ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oOgorICAgICAgICAoRGVsYXlQcm9jZXNzb3IpOiBB
ZGQgbWF4RGVsYXlUaW1lIHBhcmFtZXRlci4gCisgICAgICAgIChXZWJDb3JlOjpEZWxheVByb2Nl
c3Nvcjo6bWF4RGVsYXlUaW1lKTogTmV3IHNsb3QgdG8gaG9sZAorICAgICAgICBtYXhEZWxheVRp
bWUuIAorCiAyMDEyLTAyLTI3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbY2hyb21pdW1dIFByb2ZpbGVzIC0gVG9vbHRp
cCB3aXRoIG9iamVjdC9wcm9wZXJ0eSB0eXBlcyBzdGF5cyBvbiBzY3JlZW4gd2hlbiBhbm90aGVy
IHRhYiBzZWxlY3RlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5k
ZXggYWZjODExMzBiMTQ5MTcwMDYyNDdhZDkyNTJlMWUxNjNlN2I2MWY0Yy4uOWNmZWM4NGFlZjA1
ZDMyYmUxNzYzY2YwYmE4ZjJjYWYyNzcwYmRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCkBAIC00NDMsMTEgKzQ0MywxMSBAQCBQYXNzUmVmUHRyPEF1ZGlvR2Fp
bk5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fpbk5vZGUoKQogICAgIHJldHVybiBBdWRpb0dh
aW5Ob2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CiB9
CiAKLVBhc3NSZWZQdHI8RGVsYXlOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5Tm9kZSgp
CitQYXNzUmVmUHRyPERlbGF5Tm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheU5vZGUoZG91
YmxlIG1heERlbGF5VGltZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxh
enlJbml0aWFsaXplKCk7Ci0gICAgcmV0dXJuIERlbGF5Tm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVz
dGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOworICAgIHJldHVybiBEZWxheU5vZGU6OmNyZWF0
ZSh0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUpOwog
fQogCiBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0dGVyPiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZUNoYW5uZWxTcGxpdHRlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmlu
ZGV4IDc5MTE1MTliMzgwM2RkOWE3MmJkOTI1Zjg4MWFlYzIxZjY0OTIyYjMuLmEwOWM4YjRmYTM5
YjE1ZmUwNzQ3MDdjZGI2ZjllZjQ2ZTczOGJjZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCkBAIC00Myw2ICs0Myw4IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaD4KIAorY29uc3QgZG91YmxlIGRl
ZmF1bHRNYXhEZWxheVRpbWUgPSAxOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEF1
ZGlvQnVmZmVyOwpAQCAtMTEzLDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPEF1
ZGlvR2Fpbk5vZGU+IGNyZWF0ZUdhaW5Ob2RlKCk7CiAgICAgUGFzc1JlZlB0cjxCaXF1YWRGaWx0
ZXJOb2RlPiBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsKICAgICBQYXNzUmVmUHRyPFdhdmVTaGFwZXJO
b2RlPiBjcmVhdGVXYXZlU2hhcGVyKCk7Ci0gICAgUGFzc1JlZlB0cjxEZWxheU5vZGU+IGNyZWF0
ZURlbGF5Tm9kZSgpOworICAgIFBhc3NSZWZQdHI8RGVsYXlOb2RlPiBjcmVhdGVEZWxheU5vZGUo
ZG91YmxlIG1heERlbGF5VGltZSA9IGRlZmF1bHRNYXhEZWxheVRpbWUpOwogICAgIFBhc3NSZWZQ
dHI8TG93UGFzczJGaWx0ZXJOb2RlPiBjcmVhdGVMb3dQYXNzMkZpbHRlcigpOwogICAgIFBhc3NS
ZWZQdHI8SGlnaFBhc3MyRmlsdGVyTm9kZT4gY3JlYXRlSGlnaFBhc3MyRmlsdGVyKCk7CiAgICAg
UGFzc1JlZlB0cjxBdWRpb1Bhbm5lck5vZGU+IGNyZWF0ZVBhbm5lcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggZWY2OTM1NTI2ZmIyNmQ0MzE5MzJhN2Zh
Y2MwMjE4MjgwZWMyZDFkMi4uYjVlOTE3MTkxN2I0MmViYTY1ZTNiOWI0N2QxNDZhMTliZmViNmIx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCkBAIC02Miw3ICs2
Miw3IEBAIG1vZHVsZSB3ZWJhdWRpbyB7CiAjZW5kaWYKICAgICAgICAgLy8gUHJvY2Vzc2luZyBu
b2RlcwogICAgICAgICBBdWRpb0dhaW5Ob2RlIGNyZWF0ZUdhaW5Ob2RlKCk7Ci0gICAgICAgIERl
bGF5Tm9kZSBjcmVhdGVEZWxheU5vZGUoKTsKKyAgICAgICAgRGVsYXlOb2RlIGNyZWF0ZURlbGF5
Tm9kZShpbiBbT3B0aW9uYWxdIGRvdWJsZSBtYXhEZWxheVRpbWUpOwogICAgICAgICBCaXF1YWRG
aWx0ZXJOb2RlIGNyZWF0ZUJpcXVhZEZpbHRlcigpOwogICAgICAgICBXYXZlU2hhcGVyTm9kZSBj
cmVhdGVXYXZlU2hhcGVyKCk7CiAgICAgICAgIExvd1Bhc3MyRmlsdGVyTm9kZSBjcmVhdGVMb3dQ
YXNzMkZpbHRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlE
U1BLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3Bw
CmluZGV4IGFlZGExODljNWE5NTU3MTAyMzE3YjQ4MGYyMGFiOTg2Y2UyZjRmODMuLmZiMzFlMmRk
ZDhlMzU4OTc1MGRiNzBjMDlmYWU3YWUxY2U1NjljYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9EZWxheURTUEtlcm5lbC5jcHAKQEAgLTMyLDE1ICszMiwxMyBAQAogI2luY2x1ZGUgPGFs
Z29yaXRobT4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgCi1jb25zdCBmbG9hdCBEZWZhdWx0
TWF4RGVsYXlUaW1lID0gMTsKKwogY29uc3QgZmxvYXQgU21vb3RoaW5nVGltZUNvbnN0YW50ID0g
MC4wMjBmOyAvLyAyMG1zCiAgIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBEZWxheURTUEtlcm5l
bDo6RGVsYXlEU1BLZXJuZWwoRGVsYXlQcm9jZXNzb3IqIHByb2Nlc3NvcikKICAgICA6IEF1ZGlv
RFNQS2VybmVsKHByb2Nlc3NvcikKLSAgICAsIG1fbWF4RGVsYXlUaW1lKERlZmF1bHRNYXhEZWxh
eVRpbWUpCiAgICAgLCBtX3dyaXRlSW5kZXgoMCkKICAgICAsIG1fZmlyc3RUaW1lKHRydWUpCiB7
CkBAIC00OCw3ICs0Niw4IEBAIERlbGF5RFNQS2VybmVsOjpEZWxheURTUEtlcm5lbChEZWxheVBy
b2Nlc3NvciogcHJvY2Vzc29yKQogICAgIGlmICghcHJvY2Vzc29yKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2J1ZmZlci5hbGxvY2F0ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHByb2Nlc3Nvci0+
c2FtcGxlUmF0ZSgpICogRGVmYXVsdE1heERlbGF5VGltZSkpOworICAgIG1fbWF4RGVsYXlUaW1l
ID0gcHJvY2Vzc29yLT5tYXhEZWxheVRpbWUoKTsKKyAgICBtX2J1ZmZlci5hbGxvY2F0ZShzdGF0
aWNfY2FzdDxzaXplX3Q+KHByb2Nlc3Nvci0+c2FtcGxlUmF0ZSgpICogbV9tYXhEZWxheVRpbWUp
KTsKICAgICBtX2J1ZmZlci56ZXJvKCk7CiAKICAgICBtX3Ntb290aGluZ1JhdGUgPSBBdWRpb1V0
aWxpdGllczo6ZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JTYW1wbGVSYXRlKFNtb290aGluZ1RpbWVD
b25zdGFudCwgcHJvY2Vzc29yLT5zYW1wbGVSYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0Rl
bGF5Tm9kZS5jcHAKaW5kZXggMmE1MjVkZDFhNmMxOGI5ZGQ1YzQ0YTdlMzQ0YjcwZTliMTQ5Zjkw
MS4uNTkzNDFhYmY1Y2VmMmI1MzE3MjJmMzMzYjJjOWNkYjQ5MWI1ZjM2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9EZWxheU5vZGUuY3BwCkBAIC0zMCwxMCArMzAsMTAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1EZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCitEZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRleHQqIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgOiBBdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewotICAgIG1fcHJvY2Vz
c29yID0gYWRvcHRQdHIobmV3IERlbGF5UHJvY2Vzc29yKHNhbXBsZVJhdGUsIDEpKTsgICAgCisg
ICAgbV9wcm9jZXNzb3IgPSBhZG9wdFB0cihuZXcgRGVsYXlQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwg
MSwgbWF4RGVsYXlUaW1lKSk7CiAgICAgZGVsYXlUaW1lKCktPnNldENvbnRleHQoY29udGV4dCk7
CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9EZWxheU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0Rl
bGF5Tm9kZS5oCmluZGV4IDNkNThhODkxMzdhMzZhM2NkNWRmOGNlOWFlODU1MmIzNzI4ZTI2ZjYu
LjkyYjFlMDU2MjQ0Nzk1OWM2N2RkY2FkZWIwYzBlYTRiNzEzODBhNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5oCkBAIC0zNSwxNSArMzUsMTUgQEAgY2xhc3MgQXVkaW9QYXJhbTsK
IAogY2xhc3MgRGVsYXlOb2RlIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxheU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRl
eHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGVs
YXlOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBk
b3VibGUgbWF4RGVsYXlUaW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBE
ZWxheU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAgIAorICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IERlbGF5Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCBtYXhEZWxheVRpbWUpKTsg
ICAgICAKICAgICB9CiAKICAgICBBdWRpb1BhcmFtKiBkZWxheVRpbWUoKTsKIAogcHJpdmF0ZToK
LSAgICBEZWxheU5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgRGVs
YXlOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRp
bWUpOwogCiAgICAgRGVsYXlQcm9jZXNzb3IqIGRlbGF5UHJvY2Vzc29yKCkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RGVsYXlQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXggOGVkM2U0MzM3ZTA5ZjEzMDE3
ZmM2ZjNmN2VmMmZiZGM4ZjIzMjZjYS4uYjIzZThhYzFkMmQwYWM2OGU3Yjg0ZmE5Y2U0Yjk2NzVj
NzU3OGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcApA
QCAtMzIsMTAgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRGVsYXlQcm9jZXNz
b3I6OkRlbGF5UHJvY2Vzc29yKGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMpCitEZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwg
dW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91YmxlIG1heERlbGF5VGltZSkKICAgICA6IEF1
ZGlvRFNQS2VybmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMpCisgICAg
LCBtX21heERlbGF5VGltZShtYXhEZWxheVRpbWUpCiB7Ci0gICAgbV9kZWxheVRpbWUgPSBBdWRp
b1BhcmFtOjpjcmVhdGUoImRlbGF5VGltZSIsIDAuMCwgMC4wLCAxLjApOworICAgIG1fZGVsYXlU
aW1lID0gQXVkaW9QYXJhbTo6Y3JlYXRlKCJkZWxheVRpbWUiLCAwLjAsIDAuMCwgbWF4RGVsYXlU
aW1lKTsKIH0KIAogRGVsYXlQcm9jZXNzb3I6On5EZWxheVByb2Nlc3NvcigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIGIvU291cmNlL1dlYkNv
cmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaAppbmRleCAxNTQyOGNlNzU5Njg1ZmJmMjhiODVh
MDYwZDBjZWEwYjNiMzMzNGUwLi40M2M1ZTBjYmViMTlmODVmMmZjMTRmNDNiNWQ2NDZhNTVhM2Q5
NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgKQEAgLTM3LDE1
ICszNywxNyBAQCBjbGFzcyBBdWRpb0RTUEtlcm5lbDsKICAgICAKIGNsYXNzIERlbGF5UHJvY2Vz
c29yIDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKIHB1YmxpYzoKLSAgICBEZWxh
eVByb2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzKTsK
KyAgICBEZWxheVByb2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNo
YW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKICAgICB2aXJ0dWFsIH5EZWxheVByb2Nlc3Nv
cigpOwogICAgIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxBdWRpb0RTUEtlcm5lbD4gY3JlYXRl
S2VybmVsKCk7CiAgICAgICAgIAogICAgIEF1ZGlvUGFyYW0qIGRlbGF5VGltZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVsYXlUaW1lLmdldCgpOyB9CiAKKyAgICBkb3VibGUgbWF4RGVsYXlUaW1lKCkg
eyByZXR1cm4gbV9tYXhEZWxheVRpbWU7IH0KIHByaXZhdGU6CiAgICAgUmVmUHRyPEF1ZGlvUGFy
YW0+IG1fZGVsYXlUaW1lOworICAgIGRvdWJsZSBtX21heERlbGF5VGltZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2MjNlNWEyYmFkMjJlYzZhZTEzZWI2NjhmMGM3MTE4
MTljZDBhNWY5Li5hZGViNWVhYWNhOTU2MDZjYmFjMzBhMTgwMTIzNGFhNWU0ZjU4NWY0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDItMTYgIFJheW1vbmQgVG95ICA8cnRveUBnb29nbGUu
Y29tPgorCisgICAgICAgIERlbGF5Tm9kZSBoYXMgYSBmaXhlZCBvbmUgc2Vjb25kIG1heCBkZWxh
eSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
ODc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d2ViYXVkaW8vcmVzb3VyY2VzL2RlbGF5LXRlc3RpbmcuanM6IEFkZGVkIG1vcmUgaW5mb3JtYXRp
dmUKKyAgICAgICAgbWVzc2FnZXMuICAKKyAgICAgICAgKiB3ZWJhdWRpby9kZWxheW5vZGUtZXhw
ZWN0ZWQudHh0OiBVcGRhdGVkIHJlc3VsdCBmb3IgbW9yZQorICAgICAgICBpbmZvcm1hdGl2ZSBt
ZXNzYWdlcworICAgICAgICAqIHdlYmF1ZGlvL2RlbGF5bm9kZS1zY2hlZHVsaW5nLWV4cGVjdGVk
LnR4dDogVXBkYXRlZCByZXN1bHQgZm9yCisgICAgICAgIG1vcmUgaW5mb3JtYXRpdmUgbWVzc2Fn
ZXMuCisgICAgICAgICogd2ViYXVkaW8vZGVsYXlub2RlLW1heGRlbGF5LWV4cGVjdGVkLnR4dDog
QWRkZWQKKyAgICAgICAgKiB3ZWJhdWRpby9kZWxheW5vZGUtbWF4ZGVsYXkuaHRtbDogQWRkZWQK
KwogMjAxMi0wMi0yNyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAg
ICAgICBSZW1vdmluZyA8dWw+LCA8bGk+IGluc2lkZSBzaGFkb3cgRE9NIHRyaWdnZXJzIGFzc2Vy
dGlvbiBpbiB1cGRhdGVMaXN0TWFya2VyTnVtYmVycwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
d2ViYXVkaW8vZGVsYXlub2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2Rl
bGF5bm9kZS1leHBlY3RlZC50eHQKaW5kZXggNjNhNTJkOGM0MGU3NWZjNjE2OWM2NjEyYWZmY2Ri
N2Q3NTI0ZDc4MS4uM2ZjMWI2MDQ0MmZkNjZmZjVhZDA0OGRiODc4MjQzMDQxOTViMjIyMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtZXhwZWN0ZWQudHh0CkBAIC0yLDcgKzIs
NyBAQCBUZXN0cyBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIERlbGF5Tm9kZS4KIAogT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgogCi1QQVNTIFRlc3Qgc2lnbmFsIHdhcyBjb3JyZWN0bHkgZGVsYXll
ZC4KK1BBU1MgVGVzdCBzaWduYWwgd2FzIGNvcnJlY3RseSBkZWxheWVkIGJ5IDAuNSBzZWMuCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4ZGVsYXktZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ0NTU5OGM0NjJhMjE5YzQ3MTZhNGYyOTEyOTU2YjIyNzMzMjdmZTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4ZGVsYXktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBE
ZWxheU5vZGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBUZXN0IHNpZ25h
bCB3YXMgY29ycmVjdGx5IGRlbGF5ZWQgYnkgMS41IHNlYy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJhdWRpby9kZWxheW5vZGUtbWF4ZGVsYXkuaHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2Rl
bGF5bm9kZS1tYXhkZWxheS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiOTI1ZmQ2ZTI4ZTg5ZjkyMzRmMmY4
ZTkxN2Y1ZDk5YzAyNzA0NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRp
by9kZWxheW5vZGUtbWF4ZGVsYXkuaHRtbApAQCAtMCwwICsxLDUxIEBACis8IURPQ1RZUEUgaHRt
bD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGF5LXRl
c3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keT4KKworPGRpdiBpZD0iZGVzY3Jp
cHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdHMgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBEZWxheU5vZGUuIik7CisKK2Z1
bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktp
dFdlYkF1ZGlvRW5hYmxlZCIsICIxIik7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgIH0KKyAgICAKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAg
IAorICAgIC8vIENyZWF0ZSBvZmZsaW5lIGF1ZGlvIGNvbnRleHQuCisgICAgdmFyIGNvbnRleHQg
PSBuZXcgd2Via2l0QXVkaW9Db250ZXh0KDEsIHNhbXBsZVJhdGUgKiByZW5kZXJMZW5ndGhTZWNv
bmRzLCBzYW1wbGVSYXRlKTsKKyAgICB2YXIgdG9uZUJ1ZmZlciA9IGNyZWF0ZVRvbmVCdWZmZXIo
Y29udGV4dCwgMjAsIDIwICogdG9uZUxlbmd0aFNlY29uZHMsIHNhbXBsZVJhdGUpOyAvLyAyMEh6
IHRvbmUKKyAgICAKKyAgICB2YXIgYnVmZmVyU291cmNlID0gY29udGV4dC5jcmVhdGVCdWZmZXJT
b3VyY2UoKTsKKyAgICBidWZmZXJTb3VyY2UuYnVmZmVyID0gdG9uZUJ1ZmZlcjsKKworICAgIHZh
ciBkZWxheSA9IGNvbnRleHQuY3JlYXRlRGVsYXlOb2RlKDIpOworICAgIGRlbGF5VGltZVNlY29u
ZHMgPSAxLjU7CisgICAgZGVsYXkuZGVsYXlUaW1lLnZhbHVlID0gZGVsYXlUaW1lU2Vjb25kczsK
KworICAgIGJ1ZmZlclNvdXJjZS5jb25uZWN0KGRlbGF5KTsKKyAgICBkZWxheS5jb25uZWN0KGNv
bnRleHQuZGVzdGluYXRpb24pOworICAgIGJ1ZmZlclNvdXJjZS5ub3RlT24oMCk7CisgICAgCisg
ICAgY29udGV4dC5vbmNvbXBsZXRlID0gY2hlY2tEZWxheWVkUmVzdWx0KHRvbmVCdWZmZXIpOwor
ICAgIGNvbnRleHQuc3RhcnRSZW5kZXJpbmcoKTsKK30KKworcnVuVGVzdCgpOworCis8L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJh
dWRpby9kZWxheW5vZGUtc2NoZWR1bGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJh
dWRpby9kZWxheW5vZGUtc2NoZWR1bGluZy1leHBlY3RlZC50eHQKaW5kZXggYTE5NjU4ZGMxNGVk
OWIzOTkzMzE3N2NhOTU0NDFiNzE4Zjk5Y2Q2Zi4uNzkxZWE0M2YzNzBhMWQ1NzNhOTJjZjk5M2Fl
MDAxMzcyNTRkYjVlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2Rl
LXNjaGVkdWxpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5
bm9kZS1zY2hlZHVsaW5nLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVGVzdHMgdGhhdCBE
ZWxheU5vZGUgZGVsYXlUaW1lIHBhcmFtZXRlciBjYW4gYmUgc2NoZWR1bGVkIGF0IGEgZ2l2ZW4g
dGltZS4KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCi1QQVNTIFRlc3Qgc2lnbmFsIHdh
cyBjb3JyZWN0bHkgZGVsYXllZC4KK1BBU1MgVGVzdCBzaWduYWwgd2FzIGNvcnJlY3RseSBkZWxh
eWVkIGJ5IDAuNSBzZWMuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9kZWxh
eS10ZXN0aW5nLmpzIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2RlbGF5LXRlc3Rp
bmcuanMKaW5kZXggYmNlNDE1MGMxYWEyYjUwYjU4ODcyZTI5MzQ2YWE4ZWJjYThjNjg3Mi4uMTVm
N2M4NWVjNWM3NjUyZDFiODQ0MjhkYzY0MGMzMzhhNzg4NTg5MyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2RlbGF5LXRlc3RpbmcuanMKKysrIGIvTGF5b3V0VGVz
dHMvd2ViYXVkaW8vcmVzb3VyY2VzL2RlbGF5LXRlc3RpbmcuanMKQEAgLTM3LDYgKzM3LDcgQEAg
ZnVuY3Rpb24gY2hlY2tEZWxheWVkUmVzdWx0KHRvbmVCdWZmZXIpIHsKICAgICAgICAgICAgIGlm
IChpIDwgZGVsYXlUaW1lRnJhbWVzKSB7CiAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCBp
bml0aWFsIHBvcnRpb24gaXMgMCAoc2luY2Ugc2lnbmFsIGlzIGRlbGF5ZWQpLgogICAgICAgICAg
ICAgICAgIGlmIChyZW5kZXJlZERhdGFbaV0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJJbml0aWFsIHBvcnRpb24gaXMgbm90IDAgYXQgZnJhbWUgIiArIGkpOwogICAg
ICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ0LDEyICs0NSwxNCBAQCBmdW5jdGlvbiBjaGVj
a0RlbGF5ZWRSZXN1bHQodG9uZUJ1ZmZlcikgewogICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHRoZSB0b25lIGRhdGEgaXMgZGVsYXllZCBieSBleGFjdGx5IHRoZSBleHBlY3RlZCBu
dW1iZXIgb2YgZnJhbWVzLgogICAgICAgICAgICAgICAgIHZhciBqID0gaSAtIGRlbGF5VGltZUZy
YW1lczsKICAgICAgICAgICAgICAgICBpZiAocmVuZGVyZWREYXRhW2ldICE9IHNvdXJjZURhdGFb
al0pIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQWN0dWFsIGRhdGEgZG9lcyBu
b3QgbWF0Y2ggZXhwZWN0ZWQgZGF0YSBhdCBmcmFtZSAiICsgaSk7CiAgICAgICAgICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBNYWtl
IHN1cmUgd2UgaGF2ZSBzaWxlbmNlIGFmdGVyIHRoZSBkZWxheWVkIHRvbmUuCiAgICAgICAgICAg
ICAgICAgaWYgKHJlbmRlcmVkRGF0YVtpXSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkZpbmFsIHBvcnRpb24gaXMgbm90IDAgYXQgZnJhbWUgIiArIGkpOwogICAgICAg
ICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KQEAgLTU3LDkgKzYwLDkgQEAgZnVuY3Rpb24gY2hlY2tEZWxh
eWVkUmVzdWx0KHRvbmVCdWZmZXIpIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdWNjZXNz
KSB7Ci0gICAgICAgICAgICB0ZXN0UGFzc2VkKCJUZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5IGRl
bGF5ZWQuIik7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJUZXN0IHNpZ25hbCB3YXMgY29ycmVj
dGx5IGRlbGF5ZWQgYnkgIiArIGRlbGF5VGltZVNlY29uZHMgKyAiIHNlYy4iKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIlRlc3Qgc2lnbmFsIHdhcyBub3QgY29y
cmVjdGx5IGRlbGF5ZWQuIik7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJUZXN0IHNpZ25hbCB3
YXMgbm90IGNvcnJlY3RseSBkZWxheWVkIGJ5ICIgKyBkZWxheVRpbWVTZWNvbmRzICsgIiBzZWMu
Iik7CiAgICAgICAgIH0KIAogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129468</attachid>
            <date>2012-02-29 10:09:04 -0800</date>
            <delta_ts>2012-02-29 16:20:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78758-20120229100902.patch</filename>
            <type>text/plain</type>
            <size>15616</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxNGE2ZDIxMjMxZmNl
ZTgzZDU0OWQ4MTg3ODMwODIxMjE5MTdkZC4uMWE4MDJlZGYxOTM1NWU4N2IyYjA3ZjM2YzljMWJj
ODVhNTk1MTg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAyLTE2ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBEZWxheU5vZGUgaGFzIGEgZml4
ZWQgb25lIHNlY29uZCBtYXggZGVsYXkgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3NTgKKworICAgICAgICBDaGFuZ2UgRGVsYXlOb2RlIHRv
IGFjY2VwdCBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUKKyAgICAgICAgbWF4
aW11bSBkZWxheSBhbGxvd2VkLiBJZiBub3Qgc3BlY2lmaWVkIHRoZSBkZWZhdWx0IGlzIDEgc2Vj
LgorICAgICAgICAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogd2ViYXVkaW8vZGVsYXlub2RlLW1heGRlbGF5Lmh0bWwKKyAgICAgICAgICAgICAg
d2ViYXVkaW8vZGVsYXlub2RlLW1heGRlbGF5LWV4cGVjdGVkLnR4dAorCisgICAgICAgICogd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6
Y3JlYXRlRGVsYXlOb2RlKTogQWxsb3cgbWF4RGVsYXlUaW1lCisgICAgICAgIHBhcmFtZXRlciB0
byBzcGVjaWZ5IG1heCBkZWxheS4KKyAgICAgICAgKiB3ZWJhdWRpby9BdWRpb0NvbnRleHQuaDog
QWxsb3cgbWF4RGVsYXlUaW1lCisgICAgICAgIHBhcmFtZXRlciB0byBzcGVjaWZ5IG1heCBkZWxh
eSBidXQgZGVmYXVsdCB0byAxLgorICAgICAgICAoQXVkaW9Db250ZXh0KToKKyAgICAgICAgKiB3
ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsOiBjcmVhdGVEZWxheU5vZGUgdGFrZXMgb3B0aW9uYWwg
bWF4CisgICAgICAgIGRlbGF5IHRpbWUgcGFyYW1ldGVyLgorICAgICAgICAqIHdlYmF1ZGlvL0Rl
bGF5RFNQS2VybmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5RFNQS2VybmVsOjpEZWxh
eURTUEtlcm5lbCk6IFJlbW92ZSB1bnVzZWQKKyAgICAgICAgRGVmYXVsdE1heERlbGF5VGltZS4g
U2V0IG1fbWF4RGVsYXlUaW1lIGZyb20gcHJvY2Vzc29yCisgICAgICAgIG1heERlbGF5VGltZS4g
CisgICAgICAgICogd2ViYXVkaW8vRGVsYXlOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGF5Tm9kZTo6RGVsYXlOb2RlKTogQWRkIG1heERlbGF5VGltZSBwYXJhbWV0ZXIuIAorICAgICAg
ICAqIHdlYmF1ZGlvL0RlbGF5Tm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlOb2RlOjpj
cmVhdGUpOiBBZGQgbWF4RGVsYXlUaW1lIHBhcmFtZXRlci4gCisgICAgICAgIChEZWxheU5vZGUp
OiBBZGQgbWF4RGVsYXlUaW1lIHBhcmFtZXRlci4gCisgICAgICAgICogd2ViYXVkaW8vRGVsYXlQ
cm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJv
Y2Vzc29yKTogQWRkIG1heERlbGF5VGltZQorICAgICAgICBwYXJhbWV0ZXIuICAKKyAgICAgICAg
KiB3ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oOgorICAgICAgICAoRGVsYXlQcm9jZXNzb3IpOiBB
ZGQgbWF4RGVsYXlUaW1lIHBhcmFtZXRlci4gCisgICAgICAgIChXZWJDb3JlOjpEZWxheVByb2Nl
c3Nvcjo6bWF4RGVsYXlUaW1lKTogTmV3IHNsb3QgdG8gaG9sZAorICAgICAgICBtYXhEZWxheVRp
bWUuIAorCiAyMDEyLTAyLTI3ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbY2hyb21pdW1dIFByb2ZpbGVzIC0gVG9vbHRp
cCB3aXRoIG9iamVjdC9wcm9wZXJ0eSB0eXBlcyBzdGF5cyBvbiBzY3JlZW4gd2hlbiBhbm90aGVy
IHRhYiBzZWxlY3RlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5k
ZXggYWZjODExMzBiMTQ5MTcwMDYyNDdhZDkyNTJlMWUxNjNlN2I2MWY0Yy4uZmFkZGViNjJkMTk1
Mjc2YzBhZWE2ZTcwYTZmZGYwMGU0ZThhZWU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCkBAIC00NDUsOSArNDQ1LDE4IEBAIFBhc3NSZWZQdHI8QXVkaW9HYWlu
Tm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVHYWluTm9kZSgpCiAKIFBhc3NSZWZQdHI8RGVsYXlO
b2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5Tm9kZSgpCiB7CisgICAgY29uc3QgZG91Ymxl
IGRlZmF1bHRNYXhEZWxheVRpbWUgPSAxOworICAgIAorICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgbGF6eUluaXRpYWxpemUoKTsKKyAgICByZXR1cm4gRGVsYXlOb2RlOjpjcmVhdGUo
dGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgZGVmYXVsdE1heERlbGF5VGlt
ZSk7Cit9CisKK1Bhc3NSZWZQdHI8RGVsYXlOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5
Tm9kZShkb3VibGUgbWF4RGVsYXlUaW1lKQorewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgbGF6eUluaXRpYWxpemUoKTsKLSAgICByZXR1cm4gRGVsYXlOb2RlOjpjcmVhdGUodGhp
cywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CisgICAgcmV0dXJuIERlbGF5Tm9k
ZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCksIG1heERlbGF5
VGltZSk7CiB9CiAKIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0ZXI+IEF1ZGlvQ29udGV4
dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmgKaW5kZXggNzkxMTUxOWIzODAzZGQ5YTcyYmQ5MjVmODgxYWVjMjFmNjQ5MjJiMy4uNTZl
MWZiYzhmOWI4YTBjOGM1Yzk3OWQwOGRkMmU2MWYyNTgyNDZkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTExNCw2ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgUGFz
c1JlZlB0cjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsKICAgICBQYXNz
UmVmUHRyPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGVXYXZlU2hhcGVyKCk7CiAgICAgUGFzc1JlZlB0
cjxEZWxheU5vZGU+IGNyZWF0ZURlbGF5Tm9kZSgpOworICAgIFBhc3NSZWZQdHI8RGVsYXlOb2Rl
PiBjcmVhdGVEZWxheU5vZGUoZG91YmxlIG1heERlbGF5VGltZSk7CiAgICAgUGFzc1JlZlB0cjxM
b3dQYXNzMkZpbHRlck5vZGU+IGNyZWF0ZUxvd1Bhc3MyRmlsdGVyKCk7CiAgICAgUGFzc1JlZlB0
cjxIaWdoUGFzczJGaWx0ZXJOb2RlPiBjcmVhdGVIaWdoUGFzczJGaWx0ZXIoKTsKICAgICBQYXNz
UmVmUHRyPEF1ZGlvUGFubmVyTm9kZT4gY3JlYXRlUGFubmVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmlkbAppbmRleCBlZjY5MzU1MjZmYjI2ZDQzMTkzMmE3ZmFjYzAy
MTgyODBlYzJkMWQyLi5iNWU5MTcxOTE3YjQyZWJhNjVlM2I5YjQ3ZDE0NmExOWJmZWI2YjFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKQEAgLTYyLDcgKzYyLDcg
QEAgbW9kdWxlIHdlYmF1ZGlvIHsKICNlbmRpZgogICAgICAgICAvLyBQcm9jZXNzaW5nIG5vZGVz
CiAgICAgICAgIEF1ZGlvR2Fpbk5vZGUgY3JlYXRlR2Fpbk5vZGUoKTsKLSAgICAgICAgRGVsYXlO
b2RlIGNyZWF0ZURlbGF5Tm9kZSgpOworICAgICAgICBEZWxheU5vZGUgY3JlYXRlRGVsYXlOb2Rl
KGluIFtPcHRpb25hbF0gZG91YmxlIG1heERlbGF5VGltZSk7CiAgICAgICAgIEJpcXVhZEZpbHRl
ck5vZGUgY3JlYXRlQmlxdWFkRmlsdGVyKCk7CiAgICAgICAgIFdhdmVTaGFwZXJOb2RlIGNyZWF0
ZVdhdmVTaGFwZXIoKTsKICAgICAgICAgTG93UGFzczJGaWx0ZXJOb2RlIGNyZWF0ZUxvd1Bhc3My
RmlsdGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtl
cm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAKaW5k
ZXggYWVkYTE4OWM1YTk1NTcxMDIzMTdiNDgwZjIwYWI5ODZjZTJmNGY4My4uZmIzMWUyZGRkOGUz
NTg5NzUwZGI3MGMwOWZhZTdhZTFjZTU2OWNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlv
L0RlbGF5RFNQS2VybmVsLmNwcApAQCAtMzIsMTUgKzMyLDEzIEBACiAjaW5jbHVkZSA8YWxnb3Jp
dGhtPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAKLWNvbnN0IGZsb2F0IERlZmF1bHRNYXhE
ZWxheVRpbWUgPSAxOworCiBjb25zdCBmbG9hdCBTbW9vdGhpbmdUaW1lQ29uc3RhbnQgPSAwLjAy
MGY7IC8vIDIwbXMKICAgCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERlbGF5RFNQS2VybmVsOjpE
ZWxheURTUEtlcm5lbChEZWxheVByb2Nlc3NvciogcHJvY2Vzc29yKQogICAgIDogQXVkaW9EU1BL
ZXJuZWwocHJvY2Vzc29yKQotICAgICwgbV9tYXhEZWxheVRpbWUoRGVmYXVsdE1heERlbGF5VGlt
ZSkKICAgICAsIG1fd3JpdGVJbmRleCgwKQogICAgICwgbV9maXJzdFRpbWUodHJ1ZSkKIHsKQEAg
LTQ4LDcgKzQ2LDggQEAgRGVsYXlEU1BLZXJuZWw6OkRlbGF5RFNQS2VybmVsKERlbGF5UHJvY2Vz
c29yKiBwcm9jZXNzb3IpCiAgICAgaWYgKCFwcm9jZXNzb3IpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fYnVmZmVyLmFsbG9jYXRlKHN0YXRpY19jYXN0PHNpemVfdD4ocHJvY2Vzc29yLT5zYW1w
bGVSYXRlKCkgKiBEZWZhdWx0TWF4RGVsYXlUaW1lKSk7CisgICAgbV9tYXhEZWxheVRpbWUgPSBw
cm9jZXNzb3ItPm1heERlbGF5VGltZSgpOworICAgIG1fYnVmZmVyLmFsbG9jYXRlKHN0YXRpY19j
YXN0PHNpemVfdD4ocHJvY2Vzc29yLT5zYW1wbGVSYXRlKCkgKiBtX21heERlbGF5VGltZSkpOwog
ICAgIG1fYnVmZmVyLnplcm8oKTsKIAogICAgIG1fc21vb3RoaW5nUmF0ZSA9IEF1ZGlvVXRpbGl0
aWVzOjpkaXNjcmV0ZVRpbWVDb25zdGFudEZvclNhbXBsZVJhdGUoU21vb3RoaW5nVGltZUNvbnN0
YW50LCBwcm9jZXNzb3ItPnNhbXBsZVJhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlO
b2RlLmNwcAppbmRleCAyYTUyNWRkMWE2YzE4YjlkZDVjNDRhN2UzNDRiNzBlOWIxNDlmOTAxLi41
OTM0MWFiZjVjZWYyYjUzMTcyMmYzMzNiMmM5Y2RiNDkxYjVmMzYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTMwLDEwICszMCwxMCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLURlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKK0RlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkKICAgICA6IEF1ZGlvQmFz
aWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7Ci0gICAgbV9wcm9jZXNzb3Ig
PSBhZG9wdFB0cihuZXcgRGVsYXlQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgMSkpOyAgICAKKyAgICBt
X3Byb2Nlc3NvciA9IGFkb3B0UHRyKG5ldyBEZWxheVByb2Nlc3NvcihzYW1wbGVSYXRlLCAxLCBt
YXhEZWxheVRpbWUpKTsKICAgICBkZWxheVRpbWUoKS0+c2V0Q29udGV4dChjb250ZXh0KTsKICAg
ICBzZXROb2RlVHlwZShOb2RlVHlwZURlbGF5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlO
b2RlLmgKaW5kZXggM2Q1OGE4OTEzN2EzNmEzY2Q1ZGY4Y2U5YWU4NTUyYjM3MjhlMjZmNi4uOTJi
MWUwNTYyNDQ3OTU5YzY3ZGRjYWRlYjBjMGVhNGI3MTM4MGE1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVk
aW8vRGVsYXlOb2RlLmgKQEAgLTM1LDE1ICszNSwxNSBAQCBjbGFzcyBBdWRpb1BhcmFtOwogCiBj
bGFzcyBEZWxheU5vZGUgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlbGF5Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCog
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxheU5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJs
ZSBtYXhEZWxheVRpbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGF5
Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRGVsYXlOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIG1heERlbGF5VGltZSkpOyAgICAg
IAogICAgIH0KIAogICAgIEF1ZGlvUGFyYW0qIGRlbGF5VGltZSgpOwogCiBwcml2YXRlOgotICAg
IERlbGF5Tm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBEZWxheU5v
ZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSk7
CiAKICAgICBEZWxheVByb2Nlc3NvciogZGVsYXlQcm9jZXNzb3IoKSB7IHJldHVybiBzdGF0aWNf
Y2FzdDxEZWxheVByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAppbmRleCA4ZWQzZTQzMzdlMDlmMTMwMTdmYzZm
M2Y3ZWYyZmJkYzhmMjMyNmNhLi5iMjNlOGFjMWQyZDBhYzY4ZTdiODRmYTljZTRiOTY3NWM3NTc4
ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuY3BwCkBAIC0z
MiwxMCArMzIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EZWxheVByb2Nlc3Nvcjo6
RGVsYXlQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVs
cykKK0RlbGF5UHJvY2Vzc29yOjpEZWxheVByb2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlLCB1bnNp
Z25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9E
U1BLZXJuZWxQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKKyAgICAsIG1f
bWF4RGVsYXlUaW1lKG1heERlbGF5VGltZSkKIHsKLSAgICBtX2RlbGF5VGltZSA9IEF1ZGlvUGFy
YW06OmNyZWF0ZSgiZGVsYXlUaW1lIiwgMC4wLCAwLjAsIDEuMCk7CisgICAgbV9kZWxheVRpbWUg
PSBBdWRpb1BhcmFtOjpjcmVhdGUoImRlbGF5VGltZSIsIDAuMCwgMC4wLCBtYXhEZWxheVRpbWUp
OwogfQogCiBEZWxheVByb2Nlc3Nvcjo6fkRlbGF5UHJvY2Vzc29yKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmggYi9Tb3VyY2UvV2ViQ29yZS93
ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCmluZGV4IDE1NDI4Y2U3NTk2ODVmYmYyOGI4NWEwNjBk
MGNlYTBiM2IzMzM0ZTAuLjQzYzVlMGNiZWIxOWY4NWYyZmMxNGY0M2I1ZDY0NmE1NWEzZDk2ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaApAQCAtMzcsMTUgKzM3
LDE3IEBAIGNsYXNzIEF1ZGlvRFNQS2VybmVsOwogICAgIAogY2xhc3MgRGVsYXlQcm9jZXNzb3Ig
OiBwdWJsaWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogcHVibGljOgotICAgIERlbGF5UHJv
Y2Vzc29yKGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpOworICAg
IERlbGF5UHJvY2Vzc29yKGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5l
bHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpOwogICAgIHZpcnR1YWwgfkRlbGF5UHJvY2Vzc29yKCk7
CiAgICAgCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJu
ZWwoKTsKICAgICAgICAgCiAgICAgQXVkaW9QYXJhbSogZGVsYXlUaW1lKCkgY29uc3QgeyByZXR1
cm4gbV9kZWxheVRpbWUuZ2V0KCk7IH0KIAorICAgIGRvdWJsZSBtYXhEZWxheVRpbWUoKSB7IHJl
dHVybiBtX21heERlbGF5VGltZTsgfQogcHJpdmF0ZToKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4g
bV9kZWxheVRpbWU7CisgICAgZG91YmxlIG1fbWF4RGVsYXlUaW1lOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDYyM2U1YTJiYWQyMmVjNmFlMTNlYjY2OGYwYzcxMTgxOWNk
MGE1ZjkuLmFkZWI1ZWFhY2E5NTYwNmNiYWMzMGExODAxMjM0YWE1ZTRmNTg1ZjQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxMi0wMi0xNiAgUmF5bW9uZCBUb3kgIDxydG95QGdvb2dsZS5jb20+
CisKKyAgICAgICAgRGVsYXlOb2RlIGhhcyBhIGZpeGVkIG9uZSBzZWNvbmQgbWF4IGRlbGF5IHRp
bWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzU4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJh
dWRpby9yZXNvdXJjZXMvZGVsYXktdGVzdGluZy5qczogQWRkZWQgbW9yZSBpbmZvcm1hdGl2ZQor
ICAgICAgICBtZXNzYWdlcy4gIAorICAgICAgICAqIHdlYmF1ZGlvL2RlbGF5bm9kZS1leHBlY3Rl
ZC50eHQ6IFVwZGF0ZWQgcmVzdWx0IGZvciBtb3JlCisgICAgICAgIGluZm9ybWF0aXZlIG1lc3Nh
Z2VzCisgICAgICAgICogd2ViYXVkaW8vZGVsYXlub2RlLXNjaGVkdWxpbmctZXhwZWN0ZWQudHh0
OiBVcGRhdGVkIHJlc3VsdCBmb3IKKyAgICAgICAgbW9yZSBpbmZvcm1hdGl2ZSBtZXNzYWdlcy4K
KyAgICAgICAgKiB3ZWJhdWRpby9kZWxheW5vZGUtbWF4ZGVsYXktZXhwZWN0ZWQudHh0OiBBZGRl
ZAorICAgICAgICAqIHdlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS5odG1sOiBBZGRlZAorCiAy
MDEyLTAyLTI3ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAg
IFJlbW92aW5nIDx1bD4sIDxsaT4gaW5zaWRlIHNoYWRvdyBET00gdHJpZ2dlcnMgYXNzZXJ0aW9u
IGluIHVwZGF0ZUxpc3RNYXJrZXJOdW1iZXJzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJh
dWRpby9kZWxheW5vZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlu
b2RlLWV4cGVjdGVkLnR4dAppbmRleCA2M2E1MmQ4YzQwZTc1ZmM2MTY5YzY2MTJhZmZjZGI3ZDc1
MjRkNzgxLi4zZmMxYjYwNDQyZmQ2NmZmNWFkMDQ4ZGI4NzgyNDMwNDE5NWIyMjIzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1leHBlY3RlZC50eHQKQEAgLTIsNyArMiw3IEBA
IFRlc3RzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2YgRGVsYXlOb2RlLgogCiBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCiAKLVBBU1MgVGVzdCBzaWduYWwgd2FzIGNvcnJlY3RseSBkZWxheWVkLgor
UEFTUyBUZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5IGRlbGF5ZWQgYnkgMC41IHNlYy4KIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLW1heGRlbGF5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzdiMTcwOTgyOTVhOTRkNmUzMjE2MmE3NDhjNjM3MjcxMGFkYTNjYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw5IEBACitUZXN0cyBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIERlbGF5
Tm9kZSB3aXRoIGEgbm9uLWRlZmF1bHQgbWF4IGRlbGF5IHRpbWUuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworUEFTUyBUZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5IGRlbGF5ZWQgYnkg
MS41IHNlYy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4ZGVsYXku
aHRtbCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjg0MjM2MWM5MDgxZmZkYmU1NDA3ZDNjZDI4MTZhOGE5NzY4NGMwMWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4ZGVsYXkuaHRtbApA
QCAtMCwwICsxLDU0IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RlbGF5LXRlc3RpbmcuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorCis8Ym9keT4KKworPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMgYmFzaWMgZnVuY3Rp
b25hbGl0eSBvZiBEZWxheU5vZGUgd2l0aCBhIG5vbi1kZWZhdWx0IG1heCBkZWxheSB0aW1lLiIp
OworCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRXZWJBdWRpb0VuYWJsZWQiLCAiMSIpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKKyAgICB9CisgICAgCisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
ICAgICAgICAKKyAgICAvLyBDcmVhdGUgb2ZmbGluZSBhdWRpbyBjb250ZXh0LgorICAgIHZhciBj
b250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgxLCBzYW1wbGVSYXRlICogcmVuZGVyTGVu
Z3RoU2Vjb25kcywgc2FtcGxlUmF0ZSk7CisgICAgdmFyIHRvbmVCdWZmZXIgPSBjcmVhdGVUb25l
QnVmZmVyKGNvbnRleHQsIDIwLCAyMCAqIHRvbmVMZW5ndGhTZWNvbmRzLCBzYW1wbGVSYXRlKTsg
Ly8gMjBIeiB0b25lCisgICAgCisgICAgdmFyIGJ1ZmZlclNvdXJjZSA9IGNvbnRleHQuY3JlYXRl
QnVmZmVyU291cmNlKCk7CisgICAgYnVmZmVyU291cmNlLmJ1ZmZlciA9IHRvbmVCdWZmZXI7CisK
KyAgICAvLyBDcmVhdGUgYSBkZWxheSBub2RlIHdpdGggYW4gZXhwbGljaXQgbWF4IGRlbGF5IHRp
bWUgKGdyZWF0ZXIgdGhhbiB0aGUgZGVmYXVsdCBvZiAxIHNlY29uZCkuCisgICAgdmFyIGRlbGF5
ID0gY29udGV4dC5jcmVhdGVEZWxheU5vZGUoMik7CisgICAgLy8gU2V0IHRoZSBkZWxheSB0aW1l
IHRvIGEgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZSBkZWZhdWx0IG1heCBkZWxheSBzbyB3ZSBjYW4g
dmVyaWZ5IHRoZSBkZWxheQorICAgIC8vIGlzIHdvcmtpbmcgZm9yIHRoaXMgY2FzZS4KKyAgICBk
ZWxheVRpbWVTZWNvbmRzID0gMS41OworICAgIGRlbGF5LmRlbGF5VGltZS52YWx1ZSA9IGRlbGF5
VGltZVNlY29uZHM7CisKKyAgICBidWZmZXJTb3VyY2UuY29ubmVjdChkZWxheSk7CisgICAgZGVs
YXkuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsKKyAgICBidWZmZXJTb3VyY2Uubm90ZU9u
KDApOworICAgIAorICAgIGNvbnRleHQub25jb21wbGV0ZSA9IGNoZWNrRGVsYXllZFJlc3VsdCh0
b25lQnVmZmVyKTsKKyAgICBjb250ZXh0LnN0YXJ0UmVuZGVyaW5nKCk7Cit9CisKK3J1blRlc3Qo
KTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLXNjaGVkdWxpbmctZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLXNjaGVkdWxpbmctZXhwZWN0ZWQudHh0CmluZGV4
IGExOTY1OGRjMTRlZDliMzk5MzMxNzdjYTk1NDQxYjcxOGY5OWNkNmYuLjc5MWVhNDNmMzcwYTFk
NTczYTkyY2Y5OTNhZTAwMTM3MjU0ZGI1ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1
ZGlvL2RlbGF5bm9kZS1zY2hlZHVsaW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby9kZWxheW5vZGUtc2NoZWR1bGluZy1leHBlY3RlZC50eHQKQEAgLTIsNyArMiw3IEBA
IFRlc3RzIHRoYXQgRGVsYXlOb2RlIGRlbGF5VGltZSBwYXJhbWV0ZXIgY2FuIGJlIHNjaGVkdWxl
ZCBhdCBhIGdpdmVuIHRpbWUuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUEFTUyBU
ZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5IGRlbGF5ZWQuCitQQVNTIFRlc3Qgc2lnbmFsIHdhcyBj
b3JyZWN0bHkgZGVsYXllZCBieSAwLjUgc2VjLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9y
ZXNvdXJjZXMvZGVsYXktdGVzdGluZy5qcyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNl
cy9kZWxheS10ZXN0aW5nLmpzCmluZGV4IGJjZTQxNTBjMWFhMmI1MGI1ODg3MmUyOTM0NmFhOGVi
Y2E4YzY4NzIuLjE1ZjdjODVlYzVjNzY1MmQxYjg0NDI4ZGM2NDBjMzM4YTc4ODU4OTMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9kZWxheS10ZXN0aW5nLmpzCisr
KyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9kZWxheS10ZXN0aW5nLmpzCkBAIC0z
Nyw2ICszNyw3IEBAIGZ1bmN0aW9uIGNoZWNrRGVsYXllZFJlc3VsdCh0b25lQnVmZmVyKSB7CiAg
ICAgICAgICAgICBpZiAoaSA8IGRlbGF5VGltZUZyYW1lcykgewogICAgICAgICAgICAgICAgIC8v
IENoZWNrIHRoYXQgaW5pdGlhbCBwb3J0aW9uIGlzIDAgKHNpbmNlIHNpZ25hbCBpcyBkZWxheWVk
KS4KICAgICAgICAgICAgICAgICBpZiAocmVuZGVyZWREYXRhW2ldICE9IDApIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiSW5pdGlhbCBwb3J0aW9uIGlzIG5vdCAwIGF0IGZyYW1l
ICIgKyBpKTsKICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC00NCwxMiArNDUsMTQgQEAg
ZnVuY3Rpb24gY2hlY2tEZWxheWVkUmVzdWx0KHRvbmVCdWZmZXIpIHsKICAgICAgICAgICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgdG9uZSBkYXRhIGlzIGRlbGF5ZWQgYnkgZXhhY3RseSB0
aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIGZyYW1lcy4KICAgICAgICAgICAgICAgICB2YXIgaiA9IGkg
LSBkZWxheVRpbWVGcmFtZXM7CiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVkRGF0YVtpXSAh
PSBzb3VyY2VEYXRhW2pdKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkFjdHVh
bCBkYXRhIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkIGRhdGEgYXQgZnJhbWUgIiArIGkpOwogICAg
ICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgc2lsZW5jZSBhZnRlciB0aGUgZGVsYXllZCB0b25l
LgogICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlZERhdGFbaV0gIT0gMCkgeworICAgICAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJGaW5hbCBwb3J0aW9uIGlzIG5vdCAwIGF0IGZyYW1lICIg
KyBpKTsKICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC01Nyw5ICs2MCw5IEBAIGZ1bmN0
aW9uIGNoZWNrRGVsYXllZFJlc3VsdCh0b25lQnVmZmVyKSB7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoc3VjY2VzcykgewotICAgICAgICAgICAgdGVzdFBhc3NlZCgiVGVzdCBzaWduYWwgd2Fz
IGNvcnJlY3RseSBkZWxheWVkLiIpOworICAgICAgICAgICAgdGVzdFBhc3NlZCgiVGVzdCBzaWdu
YWwgd2FzIGNvcnJlY3RseSBkZWxheWVkIGJ5ICIgKyBkZWxheVRpbWVTZWNvbmRzICsgIiBzZWMu
Iik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJUZXN0IHNpZ25h
bCB3YXMgbm90IGNvcnJlY3RseSBkZWxheWVkLiIpOworICAgICAgICAgICAgdGVzdEZhaWxlZCgi
VGVzdCBzaWduYWwgd2FzIG5vdCBjb3JyZWN0bHkgZGVsYXllZCBieSAiICsgZGVsYXlUaW1lU2Vj
b25kcyArICIgc2VjLiIpOwogICAgICAgICB9CiAKICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129548</attachid>
            <date>2012-02-29 16:19:46 -0800</date>
            <delta_ts>2012-03-02 12:52:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78758-20120229161945.patch</filename>
            <type>text/plain</type>
            <size>15518</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQxNGE2ZDIxMjMxZmNl
ZTgzZDU0OWQ4MTg3ODMwODIxMjE5MTdkZC4uNzVhODY3ZTBkZjQ0MGUxMDg5MTIyNWU5NGYyM2E5
MDIzNGU5ZGIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAyLTE2ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBEZWxheU5vZGUgaGFzIGEgZml4
ZWQgb25lIHNlY29uZCBtYXggZGVsYXkgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3NTgKKworICAgICAgICBDaGFuZ2UgRGVsYXlOb2RlIHRv
IGFjY2VwdCBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUKKyAgICAgICAgbWF4
aW11bSBkZWxheSBhbGxvd2VkLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBpcyAxIHNl
Yy4KKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IHdlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS5odG1sCisgICAgICAgICAgICAg
IHdlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS1leHBlY3RlZC50eHQKKworICAgICAgICAqIHdl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6
OmNyZWF0ZURlbGF5Tm9kZSk6IEFsbG93IG1heERlbGF5VGltZQorICAgICAgICBwYXJhbWV0ZXIg
dG8gc3BlY2lmeSBtYXggZGVsYXkuCisgICAgICAgICogd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6
IEFsbG93IG1heERlbGF5VGltZQorICAgICAgICBwYXJhbWV0ZXIgdG8gc3BlY2lmeSBtYXggZGVs
YXkgYnV0IGRlZmF1bHQgdG8gMS4KKyAgICAgICAgKEF1ZGlvQ29udGV4dCk6CisgICAgICAgICog
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbDogY3JlYXRlRGVsYXlOb2RlIHRha2VzIG9wdGlvbmFs
IG1heAorICAgICAgICBkZWxheSB0aW1lIHBhcmFtZXRlci4KKyAgICAgICAgKiB3ZWJhdWRpby9E
ZWxheURTUEtlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxheURTUEtlcm5lbDo6RGVs
YXlEU1BLZXJuZWwpOiBSZW1vdmUgdW51c2VkCisgICAgICAgIERlZmF1bHRNYXhEZWxheVRpbWUu
IFNldCBtX21heERlbGF5VGltZSBmcm9tIHByb2Nlc3NvcgorICAgICAgICBtYXhEZWxheVRpbWUu
IAorICAgICAgICAqIHdlYmF1ZGlvL0RlbGF5Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWxheU5vZGU6OkRlbGF5Tm9kZSk6IEFkZCBtYXhEZWxheVRpbWUgcGFyYW1ldGVyLiAKKyAgICAg
ICAgKiB3ZWJhdWRpby9EZWxheU5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6
Y3JlYXRlKTogQWRkIG1heERlbGF5VGltZSBwYXJhbWV0ZXIuIAorICAgICAgICAoRGVsYXlOb2Rl
KTogQWRkIG1heERlbGF5VGltZSBwYXJhbWV0ZXIuIAorICAgICAgICAqIHdlYmF1ZGlvL0RlbGF5
UHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5UHJvY2Vzc29yOjpEZWxheVBy
b2Nlc3Nvcik6IEFkZCBtYXhEZWxheVRpbWUKKyAgICAgICAgcGFyYW1ldGVyLiAgCisgICAgICAg
ICogd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaDoKKyAgICAgICAgKERlbGF5UHJvY2Vzc29yKTog
QWRkIG1heERlbGF5VGltZSBwYXJhbWV0ZXIuIAorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9j
ZXNzb3I6Om1heERlbGF5VGltZSk6IE5ldyBzbG90IHRvIGhvbGQKKyAgICAgICAgbWF4RGVsYXlU
aW1lLiAKKwogMjAxMi0wMi0yNyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW2Nocm9taXVtXSBQcm9maWxlcyAtIFRvb2x0
aXAgd2l0aCBvYmplY3QvcHJvcGVydHkgdHlwZXMgc3RheXMgb24gc2NyZWVuIHdoZW4gYW5vdGhl
ciB0YWIgc2VsZWN0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmlu
ZGV4IGFmYzgxMTMwYjE0OTE3MDA2MjQ3YWQ5MjUyZTFlMTYzZTdiNjFmNGMuLjVmNDkwNWEzYmQz
YjQxMjNjMDBlYWQ1ODkzZGNlOTBkMDBjNmZkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcApAQCAtNDQ1LDkgKzQ0NSwxNSBAQCBQYXNzUmVmUHRyPEF1ZGlvR2Fp
bk5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlR2Fpbk5vZGUoKQogCiBQYXNzUmVmUHRyPERlbGF5
Tm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheU5vZGUoKQogeworICAgIGNvbnN0IGRvdWJs
ZSBkZWZhdWx0TWF4RGVsYXlUaW1lID0gMTsKKyAgICByZXR1cm4gY3JlYXRlRGVsYXlOb2RlKGRl
ZmF1bHRNYXhEZWxheVRpbWUpOworfQorCitQYXNzUmVmUHRyPERlbGF5Tm9kZT4gQXVkaW9Db250
ZXh0OjpjcmVhdGVEZWxheU5vZGUoZG91YmxlIG1heERlbGF5VGltZSkKK3sKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7Ci0gICAgcmV0dXJuIERlbGF5
Tm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOworICAg
IHJldHVybiBEZWxheU5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxl
UmF0ZSgpLCBtYXhEZWxheVRpbWUpOwogfQogCiBQYXNzUmVmUHRyPEF1ZGlvQ2hhbm5lbFNwbGl0
dGVyPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRlcigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3dl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IDc5MTE1MTliMzgwM2RkOWE3MmJkOTI1Zjg4MWFl
YzIxZjY0OTIyYjMuLjU2ZTFmYmM4ZjliOGEwYzhjNWM5NzlkMDhkZDJlNjFmMjU4MjQ2ZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oCkBAIC0xMTQsNiArMTE0LDcgQEAg
cHVibGljOgogICAgIFBhc3NSZWZQdHI8QmlxdWFkRmlsdGVyTm9kZT4gY3JlYXRlQmlxdWFkRmls
dGVyKCk7CiAgICAgUGFzc1JlZlB0cjxXYXZlU2hhcGVyTm9kZT4gY3JlYXRlV2F2ZVNoYXBlcigp
OwogICAgIFBhc3NSZWZQdHI8RGVsYXlOb2RlPiBjcmVhdGVEZWxheU5vZGUoKTsKKyAgICBQYXNz
UmVmUHRyPERlbGF5Tm9kZT4gY3JlYXRlRGVsYXlOb2RlKGRvdWJsZSBtYXhEZWxheVRpbWUpOwog
ICAgIFBhc3NSZWZQdHI8TG93UGFzczJGaWx0ZXJOb2RlPiBjcmVhdGVMb3dQYXNzMkZpbHRlcigp
OwogICAgIFBhc3NSZWZQdHI8SGlnaFBhc3MyRmlsdGVyTm9kZT4gY3JlYXRlSGlnaFBhc3MyRmls
dGVyKCk7CiAgICAgUGFzc1JlZlB0cjxBdWRpb1Bhbm5lck5vZGU+IGNyZWF0ZVBhbm5lcigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwKaW5kZXggZWY2OTM1NTI2ZmIy
NmQ0MzE5MzJhN2ZhY2MwMjE4MjgwZWMyZDFkMi4uYjVlOTE3MTkxN2I0MmViYTY1ZTNiOWI0N2Qx
NDZhMTliZmViNmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRs
CkBAIC02Miw3ICs2Miw3IEBAIG1vZHVsZSB3ZWJhdWRpbyB7CiAjZW5kaWYKICAgICAgICAgLy8g
UHJvY2Vzc2luZyBub2RlcwogICAgICAgICBBdWRpb0dhaW5Ob2RlIGNyZWF0ZUdhaW5Ob2RlKCk7
Ci0gICAgICAgIERlbGF5Tm9kZSBjcmVhdGVEZWxheU5vZGUoKTsKKyAgICAgICAgRGVsYXlOb2Rl
IGNyZWF0ZURlbGF5Tm9kZShpbiBbT3B0aW9uYWxdIGRvdWJsZSBtYXhEZWxheVRpbWUpOwogICAg
ICAgICBCaXF1YWRGaWx0ZXJOb2RlIGNyZWF0ZUJpcXVhZEZpbHRlcigpOwogICAgICAgICBXYXZl
U2hhcGVyTm9kZSBjcmVhdGVXYXZlU2hhcGVyKCk7CiAgICAgICAgIExvd1Bhc3MyRmlsdGVyTm9k
ZSBjcmVhdGVMb3dQYXNzMkZpbHRlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vRGVsYXlEU1BLZXJuZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlE
U1BLZXJuZWwuY3BwCmluZGV4IGFlZGExODljNWE5NTU3MTAyMzE3YjQ4MGYyMGFiOTg2Y2UyZjRm
ODMuLmZiMzFlMmRkZDhlMzU4OTc1MGRiNzBjMDlmYWU3YWUxY2U1NjljYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5jcHAKQEAgLTMyLDE1ICszMiwxMyBAQAog
I2luY2x1ZGUgPGFsZ29yaXRobT4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgCi1jb25zdCBm
bG9hdCBEZWZhdWx0TWF4RGVsYXlUaW1lID0gMTsKKwogY29uc3QgZmxvYXQgU21vb3RoaW5nVGlt
ZUNvbnN0YW50ID0gMC4wMjBmOyAvLyAyMG1zCiAgIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBE
ZWxheURTUEtlcm5lbDo6RGVsYXlEU1BLZXJuZWwoRGVsYXlQcm9jZXNzb3IqIHByb2Nlc3NvcikK
ICAgICA6IEF1ZGlvRFNQS2VybmVsKHByb2Nlc3NvcikKLSAgICAsIG1fbWF4RGVsYXlUaW1lKERl
ZmF1bHRNYXhEZWxheVRpbWUpCiAgICAgLCBtX3dyaXRlSW5kZXgoMCkKICAgICAsIG1fZmlyc3RU
aW1lKHRydWUpCiB7CkBAIC00OCw3ICs0Niw4IEBAIERlbGF5RFNQS2VybmVsOjpEZWxheURTUEtl
cm5lbChEZWxheVByb2Nlc3NvciogcHJvY2Vzc29yKQogICAgIGlmICghcHJvY2Vzc29yKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2J1ZmZlci5hbGxvY2F0ZShzdGF0aWNfY2FzdDxzaXplX3Q+
KHByb2Nlc3Nvci0+c2FtcGxlUmF0ZSgpICogRGVmYXVsdE1heERlbGF5VGltZSkpOworICAgIG1f
bWF4RGVsYXlUaW1lID0gcHJvY2Vzc29yLT5tYXhEZWxheVRpbWUoKTsKKyAgICBtX2J1ZmZlci5h
bGxvY2F0ZShzdGF0aWNfY2FzdDxzaXplX3Q+KHByb2Nlc3Nvci0+c2FtcGxlUmF0ZSgpICogbV9t
YXhEZWxheVRpbWUpKTsKICAgICBtX2J1ZmZlci56ZXJvKCk7CiAKICAgICBtX3Ntb290aGluZ1Jh
dGUgPSBBdWRpb1V0aWxpdGllczo6ZGlzY3JldGVUaW1lQ29uc3RhbnRGb3JTYW1wbGVSYXRlKFNt
b290aGluZ1RpbWVDb25zdGFudCwgcHJvY2Vzc29yLT5zYW1wbGVSYXRlKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKaW5kZXggMmE1MjVkZDFhNmMxOGI5ZGQ1YzQ0YTdlMzQ0
YjcwZTliMTQ5ZjkwMS4uNTkzNDFhYmY1Y2VmMmI1MzE3MjJmMzMzYjJjOWNkYjQ5MWI1ZjM2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheU5vZGUuY3BwCkBAIC0zMCwxMCArMzAsMTAgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRpb0NvbnRl
eHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitEZWxheU5vZGU6OkRlbGF5Tm9kZShBdWRp
b0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUp
CiAgICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewot
ICAgIG1fcHJvY2Vzc29yID0gYWRvcHRQdHIobmV3IERlbGF5UHJvY2Vzc29yKHNhbXBsZVJhdGUs
IDEpKTsgICAgCisgICAgbV9wcm9jZXNzb3IgPSBhZG9wdFB0cihuZXcgRGVsYXlQcm9jZXNzb3Io
c2FtcGxlUmF0ZSwgMSwgbWF4RGVsYXlUaW1lKSk7CiAgICAgZGVsYXlUaW1lKCktPnNldENvbnRl
eHQoY29udGV4dCk7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVEZWxheSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheU5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCmluZGV4IDNkNThhODkxMzdhMzZhM2NkNWRmOGNlOWFlODU1
MmIzNzI4ZTI2ZjYuLjkyYjFlMDU2MjQ0Nzk1OWM2N2RkY2FkZWIwYzBlYTRiNzEzODBhNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCkBAIC0zNSwxNSArMzUsMTUgQEAgY2xhc3Mg
QXVkaW9QYXJhbTsKIAogY2xhc3MgRGVsYXlOb2RlIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNz
b3JOb2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEZWxheU5vZGU+IGNyZWF0
ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8RGVsYXlOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBz
YW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBEZWxheU5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOyAgICAgIAorICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IERlbGF5Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlLCBtYXhE
ZWxheVRpbWUpKTsgICAgICAKICAgICB9CiAKICAgICBBdWRpb1BhcmFtKiBkZWxheVRpbWUoKTsK
IAogcHJpdmF0ZToKLSAgICBEZWxheU5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0
ZSk7CisgICAgRGVsYXlOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIGRvdWJs
ZSBtYXhEZWxheVRpbWUpOwogCiAgICAgRGVsYXlQcm9jZXNzb3IqIGRlbGF5UHJvY2Vzc29yKCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVsYXlQcm9jZXNzb3IqPihwcm9jZXNzb3IoKSk7IH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAKaW5kZXggOGVkM2U0
MzM3ZTA5ZjEzMDE3ZmM2ZjNmN2VmMmZiZGM4ZjIzMjZjYS4uYjIzZThhYzFkMmQwYWM2OGU3Yjg0
ZmE5Y2U0Yjk2NzVjNzU3OGQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8v
RGVsYXlQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJv
Y2Vzc29yLmNwcApAQCAtMzIsMTAgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RGVsYXlQcm9jZXNzb3I6OkRlbGF5UHJvY2Vzc29yKGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMpCitEZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoZmxvYXQg
c2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgZG91YmxlIG1heERlbGF5VGlt
ZSkKICAgICA6IEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yKHNhbXBsZVJhdGUsIG51bWJlck9mQ2hh
bm5lbHMpCisgICAgLCBtX21heERlbGF5VGltZShtYXhEZWxheVRpbWUpCiB7Ci0gICAgbV9kZWxh
eVRpbWUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoImRlbGF5VGltZSIsIDAuMCwgMC4wLCAxLjApOwor
ICAgIG1fZGVsYXlUaW1lID0gQXVkaW9QYXJhbTo6Y3JlYXRlKCJkZWxheVRpbWUiLCAwLjAsIDAu
MCwgbWF4RGVsYXlUaW1lKTsKIH0KIAogRGVsYXlQcm9jZXNzb3I6On5EZWxheVByb2Nlc3Nvcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oIGIv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaAppbmRleCAxNTQyOGNlNzU5
Njg1ZmJmMjhiODVhMDYwZDBjZWEwYjNiMzMzNGUwLi40M2M1ZTBjYmViMTlmODVmMmZjMTRmNDNi
NWQ2NDZhNTVhM2Q5NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxh
eVByb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29y
LmgKQEAgLTM3LDE1ICszNywxNyBAQCBjbGFzcyBBdWRpb0RTUEtlcm5lbDsKICAgICAKIGNsYXNz
IERlbGF5UHJvY2Vzc29yIDogcHVibGljIEF1ZGlvRFNQS2VybmVsUHJvY2Vzc29yIHsKIHB1Ymxp
YzoKLSAgICBEZWxheVByb2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
ZkNoYW5uZWxzKTsKKyAgICBEZWxheVByb2Nlc3NvcihmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1lKTsKICAgICB2aXJ0dWFsIH5E
ZWxheVByb2Nlc3NvcigpOwogICAgIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxBdWRpb0RTUEtl
cm5lbD4gY3JlYXRlS2VybmVsKCk7CiAgICAgICAgIAogICAgIEF1ZGlvUGFyYW0qIGRlbGF5VGlt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsYXlUaW1lLmdldCgpOyB9CiAKKyAgICBkb3VibGUgbWF4
RGVsYXlUaW1lKCkgeyByZXR1cm4gbV9tYXhEZWxheVRpbWU7IH0KIHByaXZhdGU6CiAgICAgUmVm
UHRyPEF1ZGlvUGFyYW0+IG1fZGVsYXlUaW1lOworICAgIGRvdWJsZSBtX21heERlbGF5VGltZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2MjNlNWEyYmFkMjJlYzZhZTEz
ZWI2NjhmMGM3MTE4MTljZDBhNWY5Li5hZGViNWVhYWNhOTU2MDZjYmFjMzBhMTgwMTIzNGFhNWU0
ZjU4NWY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDItMTYgIFJheW1vbmQgVG95ICA8
cnRveUBnb29nbGUuY29tPgorCisgICAgICAgIERlbGF5Tm9kZSBoYXMgYSBmaXhlZCBvbmUgc2Vj
b25kIG1heCBkZWxheSB0aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03ODc1OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd2ViYXVkaW8vcmVzb3VyY2VzL2RlbGF5LXRlc3RpbmcuanM6IEFkZGVkIG1v
cmUgaW5mb3JtYXRpdmUKKyAgICAgICAgbWVzc2FnZXMuICAKKyAgICAgICAgKiB3ZWJhdWRpby9k
ZWxheW5vZGUtZXhwZWN0ZWQudHh0OiBVcGRhdGVkIHJlc3VsdCBmb3IgbW9yZQorICAgICAgICBp
bmZvcm1hdGl2ZSBtZXNzYWdlcworICAgICAgICAqIHdlYmF1ZGlvL2RlbGF5bm9kZS1zY2hlZHVs
aW5nLWV4cGVjdGVkLnR4dDogVXBkYXRlZCByZXN1bHQgZm9yCisgICAgICAgIG1vcmUgaW5mb3Jt
YXRpdmUgbWVzc2FnZXMuCisgICAgICAgICogd2ViYXVkaW8vZGVsYXlub2RlLW1heGRlbGF5LWV4
cGVjdGVkLnR4dDogQWRkZWQKKyAgICAgICAgKiB3ZWJhdWRpby9kZWxheW5vZGUtbWF4ZGVsYXku
aHRtbDogQWRkZWQKKwogMjAxMi0wMi0yNyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZW1vdmluZyA8dWw+LCA8bGk+IGluc2lkZSBzaGFkb3cgRE9NIHRy
aWdnZXJzIGFzc2VydGlvbiBpbiB1cGRhdGVMaXN0TWFya2VyTnVtYmVycwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3dlYmF1ZGlvL2RlbGF5bm9kZS1leHBlY3RlZC50eHQKaW5kZXggNjNhNTJkOGM0MGU3NWZjNjE2
OWM2NjEyYWZmY2RiN2Q3NTI0ZDc4MS4uM2ZjMWI2MDQ0MmZkNjZmZjVhZDA0OGRiODc4MjQzMDQx
OTViMjIyMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtZXhwZWN0ZWQudHh0
CkBAIC0yLDcgKzIsNyBAQCBUZXN0cyBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIERlbGF5Tm9kZS4K
IAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCi1QQVNTIFRlc3Qgc2lnbmFsIHdhcyBjb3Jy
ZWN0bHkgZGVsYXllZC4KK1BBU1MgVGVzdCBzaWduYWwgd2FzIGNvcnJlY3RseSBkZWxheWVkIGJ5
IDAuNSBzZWMuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4ZGVsYXktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3YjE3MDk4Mjk1YTk0ZDZlMzIxNjJhNzQ4YzYzNzI3MTBh
ZGEzY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUt
bWF4ZGVsYXktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGVzdHMgYmFzaWMgZnVuY3Rp
b25hbGl0eSBvZiBEZWxheU5vZGUgd2l0aCBhIG5vbi1kZWZhdWx0IG1heCBkZWxheSB0aW1lLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgVGVzdCBzaWduYWwgd2FzIGNvcnJl
Y3RseSBkZWxheWVkIGJ5IDEuNSBzZWMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVs
YXlub2RlLW1heGRlbGF5Lmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtbWF4
ZGVsYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NDIzNjFjOTA4MWZmZGJlNTQwN2QzY2QyODE2YThhOTc2
ODRjMDFhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2Rl
LW1heGRlbGF5Lmh0bWwKQEAgLTAsMCArMSw1NCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9kZWxheS10ZXN0aW5nLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisKKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rp
dj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRl
c3RzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2YgRGVsYXlOb2RlIHdpdGggYSBub24tZGVmYXVsdCBt
YXggZGVsYXkgdGltZS4iKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92
ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0V2ViQXVkaW9FbmFibGVkIiwgIjEiKTsKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorICAgIAorICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgCisgICAgLy8gQ3JlYXRlIG9mZmxpbmUgYXVkaW8gY29u
dGV4dC4KKyAgICB2YXIgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0NvbnRleHQoMSwgc2FtcGxl
UmF0ZSAqIHJlbmRlckxlbmd0aFNlY29uZHMsIHNhbXBsZVJhdGUpOworICAgIHZhciB0b25lQnVm
ZmVyID0gY3JlYXRlVG9uZUJ1ZmZlcihjb250ZXh0LCAyMCwgMjAgKiB0b25lTGVuZ3RoU2Vjb25k
cywgc2FtcGxlUmF0ZSk7IC8vIDIwSHogdG9uZQorICAgIAorICAgIHZhciBidWZmZXJTb3VyY2Ug
PSBjb250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOworICAgIGJ1ZmZlclNvdXJjZS5idWZmZXIg
PSB0b25lQnVmZmVyOworCisgICAgLy8gQ3JlYXRlIGEgZGVsYXkgbm9kZSB3aXRoIGFuIGV4cGxp
Y2l0IG1heCBkZWxheSB0aW1lIChncmVhdGVyIHRoYW4gdGhlIGRlZmF1bHQgb2YgMSBzZWNvbmQp
LgorICAgIHZhciBkZWxheSA9IGNvbnRleHQuY3JlYXRlRGVsYXlOb2RlKDIpOworICAgIC8vIFNl
dCB0aGUgZGVsYXkgdGltZSB0byBhIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgZGVmYXVsdCBtYXgg
ZGVsYXkgc28gd2UgY2FuIHZlcmlmeSB0aGUgZGVsYXkKKyAgICAvLyBpcyB3b3JraW5nIGZvciB0
aGlzIGNhc2UuCisgICAgZGVsYXlUaW1lU2Vjb25kcyA9IDEuNTsKKyAgICBkZWxheS5kZWxheVRp
bWUudmFsdWUgPSBkZWxheVRpbWVTZWNvbmRzOworCisgICAgYnVmZmVyU291cmNlLmNvbm5lY3Qo
ZGVsYXkpOworICAgIGRlbGF5LmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7CisgICAgYnVm
ZmVyU291cmNlLm5vdGVPbigwKTsKKyAgICAKKyAgICBjb250ZXh0Lm9uY29tcGxldGUgPSBjaGVj
a0RlbGF5ZWRSZXN1bHQodG9uZUJ1ZmZlcik7CisgICAgY29udGV4dC5zdGFydFJlbmRlcmluZygp
OworfQorCitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1zY2hlZHVsaW5nLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1zY2hlZHVsaW5nLWV4
cGVjdGVkLnR4dAppbmRleCBhMTk2NThkYzE0ZWQ5YjM5OTMzMTc3Y2E5NTQ0MWI3MThmOTljZDZm
Li43OTFlYTQzZjM3MGExZDU3M2E5MmNmOTkzYWUwMDEzNzI1NGRiNWUzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtc2NoZWR1bGluZy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLXNjaGVkdWxpbmctZXhwZWN0ZWQudHh0
CkBAIC0yLDcgKzIsNyBAQCBUZXN0cyB0aGF0IERlbGF5Tm9kZSBkZWxheVRpbWUgcGFyYW1ldGVy
IGNhbiBiZSBzY2hlZHVsZWQgYXQgYSBnaXZlbiB0aW1lLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKLVBBU1MgVGVzdCBzaWduYWwgd2FzIGNvcnJlY3RseSBkZWxheWVkLgorUEFTUyBU
ZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5IGRlbGF5ZWQgYnkgMC41IHNlYy4KIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2RlbGF5LXRlc3RpbmcuanMgYi9MYXlvdXRUZXN0cy93
ZWJhdWRpby9yZXNvdXJjZXMvZGVsYXktdGVzdGluZy5qcwppbmRleCBiY2U0MTUwYzFhYTJiNTBi
NTg4NzJlMjkzNDZhYThlYmNhOGM2ODcyLi4xNWY3Yzg1ZWM1Yzc2NTJkMWI4NDQyOGRjNjQwYzMz
OGE3ODg1ODkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvZGVs
YXktdGVzdGluZy5qcworKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9yZXNvdXJjZXMvZGVsYXkt
dGVzdGluZy5qcwpAQCAtMzcsNiArMzcsNyBAQCBmdW5jdGlvbiBjaGVja0RlbGF5ZWRSZXN1bHQo
dG9uZUJ1ZmZlcikgewogICAgICAgICAgICAgaWYgKGkgPCBkZWxheVRpbWVGcmFtZXMpIHsKICAg
ICAgICAgICAgICAgICAvLyBDaGVjayB0aGF0IGluaXRpYWwgcG9ydGlvbiBpcyAwIChzaW5jZSBz
aWduYWwgaXMgZGVsYXllZCkuCiAgICAgICAgICAgICAgICAgaWYgKHJlbmRlcmVkRGF0YVtpXSAh
PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkluaXRpYWwgcG9ydGlvbiBp
cyBub3QgMCBhdCBmcmFtZSAiICsgaSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBm
YWxzZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAt
NDQsMTIgKzQ1LDE0IEBAIGZ1bmN0aW9uIGNoZWNrRGVsYXllZFJlc3VsdCh0b25lQnVmZmVyKSB7
CiAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHRvbmUgZGF0YSBpcyBkZWxh
eWVkIGJ5IGV4YWN0bHkgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBmcmFtZXMuCiAgICAgICAgICAg
ICAgICAgdmFyIGogPSBpIC0gZGVsYXlUaW1lRnJhbWVzOwogICAgICAgICAgICAgICAgIGlmIChy
ZW5kZXJlZERhdGFbaV0gIT0gc291cmNlRGF0YVtqXSkgeworICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJBY3R1YWwgZGF0YSBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZCBkYXRhIGF0IGZy
YW1lICIgKyBpKTsKICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIHNpbGVuY2UgYWZ0ZXIg
dGhlIGRlbGF5ZWQgdG9uZS4KICAgICAgICAgICAgICAgICBpZiAocmVuZGVyZWREYXRhW2ldICE9
IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRmluYWwgcG9ydGlvbiBpcyBu
b3QgMCBhdCBmcmFtZSAiICsgaSk7CiAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxz
ZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtNTcs
OSArNjAsOSBAQCBmdW5jdGlvbiBjaGVja0RlbGF5ZWRSZXN1bHQodG9uZUJ1ZmZlcikgewogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKLSAgICAgICAgICAgIHRlc3RQYXNzZWQo
IlRlc3Qgc2lnbmFsIHdhcyBjb3JyZWN0bHkgZGVsYXllZC4iKTsKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIlRlc3Qgc2lnbmFsIHdhcyBjb3JyZWN0bHkgZGVsYXllZCBieSAiICsgZGVsYXlUaW1l
U2Vjb25kcyArICIgc2VjLiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGVzdEZh
aWxlZCgiVGVzdCBzaWduYWwgd2FzIG5vdCBjb3JyZWN0bHkgZGVsYXllZC4iKTsKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIlRlc3Qgc2lnbmFsIHdhcyBub3QgY29ycmVjdGx5IGRlbGF5ZWQgYnkg
IiArIGRlbGF5VGltZVNlY29uZHMgKyAiIHNlYy4iKTsKICAgICAgICAgfQogCiAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129943</attachid>
            <date>2012-03-02 12:52:57 -0800</date>
            <delta_ts>2012-03-03 14:49:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78758-20120302125256.patch</filename>
            <type>text/plain</type>
            <size>15426</size>
            <attacher name="Raymond Toy">rtoy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDljYjM5NmU2ZmVlZmZm
OGQ5YWI4MjZjMWZkYTE3MWZjODZkZjFjYi4uOTk5YzgyYTNkMmYxYzA4MWNmNTExZDI3NTgwNDQ3
OWMwYzA2YWZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAyLTE2ICBSYXlt
b25kIFRveSAgPHJ0b3lAZ29vZ2xlLmNvbT4KKworICAgICAgICBEZWxheU5vZGUgaGFzIGEgZml4
ZWQgb25lIHNlY29uZCBtYXggZGVsYXkgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3NTgKKworICAgICAgICBDaGFuZ2UgRGVsYXlOb2RlIHRv
IGFjY2VwdCBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUKKyAgICAgICAgbWF4
aW11bSBkZWxheSBhbGxvd2VkLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBpcyAxIHNl
Yy4KKyAgICAgICAgCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IHdlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS5odG1sCisgICAgICAgICAgICAg
IHdlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS1leHBlY3RlZC50eHQKKworICAgICAgICAqIHdl
YmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6
OmNyZWF0ZURlbGF5Tm9kZSk6IEFsbG93IG1heERlbGF5VGltZQorICAgICAgICBwYXJhbWV0ZXIg
dG8gc3BlY2lmeSBtYXggZGVsYXkuCisgICAgICAgICogd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6
IEFsbG93IG1heERlbGF5VGltZQorICAgICAgICBwYXJhbWV0ZXIgdG8gc3BlY2lmeSBtYXggZGVs
YXkgYnV0IGRlZmF1bHQgdG8gMS4KKyAgICAgICAgKEF1ZGlvQ29udGV4dCk6CisgICAgICAgICog
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbDogY3JlYXRlRGVsYXlOb2RlIHRha2VzIG9wdGlvbmFs
IG1heAorICAgICAgICBkZWxheSB0aW1lIHBhcmFtZXRlci4KKyAgICAgICAgKiB3ZWJhdWRpby9E
ZWxheURTUEtlcm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWxheURTUEtlcm5lbDo6RGVs
YXlEU1BLZXJuZWwpOiBSZW1vdmUgdW51c2VkCisgICAgICAgIERlZmF1bHRNYXhEZWxheVRpbWUu
IFNldCBtX21heERlbGF5VGltZSBmcm9tIHByb2Nlc3NvcgorICAgICAgICBtYXhEZWxheVRpbWUu
IAorICAgICAgICAqIHdlYmF1ZGlvL0RlbGF5Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWxheU5vZGU6OkRlbGF5Tm9kZSk6IEFkZCBtYXhEZWxheVRpbWUgcGFyYW1ldGVyLiAKKyAgICAg
ICAgKiB3ZWJhdWRpby9EZWxheU5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5Tm9kZTo6
Y3JlYXRlKTogQWRkIG1heERlbGF5VGltZSBwYXJhbWV0ZXIuIAorICAgICAgICAoRGVsYXlOb2Rl
KTogQWRkIG1heERlbGF5VGltZSBwYXJhbWV0ZXIuIAorICAgICAgICAqIHdlYmF1ZGlvL0RlbGF5
UHJvY2Vzc29yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGF5UHJvY2Vzc29yOjpEZWxheVBy
b2Nlc3Nvcik6IEFkZCBtYXhEZWxheVRpbWUKKyAgICAgICAgcGFyYW1ldGVyLiAgCisgICAgICAg
ICogd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaDoKKyAgICAgICAgKERlbGF5UHJvY2Vzc29yKTog
QWRkIG1heERlbGF5VGltZSBwYXJhbWV0ZXIuIAorICAgICAgICAoV2ViQ29yZTo6RGVsYXlQcm9j
ZXNzb3I6Om1heERlbGF5VGltZSk6IE5ldyBzbG90IHRvIGhvbGQKKyAgICAgICAgbWF4RGVsYXlU
aW1lLiAKKwogMjAxMi0wMy0wMSAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJlbW92ZSBsYXN0IEVOQUJMRUQoSU5ERVhFRF9EQVRBQkFTRSkgaWZkZWYgZnJvbSBX
ZWJDb3JlIHByb3BlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5k
ZXggYWZjODExMzBiMTQ5MTcwMDYyNDdhZDkyNTJlMWUxNjNlN2I2MWY0Yy4uNWY0OTA1YTNiZDNi
NDEyM2MwMGVhZDU4OTNkY2U5MGQwMGM2ZmRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCkBAIC00NDUsOSArNDQ1LDE1IEBAIFBhc3NSZWZQdHI8QXVkaW9HYWlu
Tm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVHYWluTm9kZSgpCiAKIFBhc3NSZWZQdHI8RGVsYXlO
b2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5Tm9kZSgpCiB7CisgICAgY29uc3QgZG91Ymxl
IGRlZmF1bHRNYXhEZWxheVRpbWUgPSAxOworICAgIHJldHVybiBjcmVhdGVEZWxheU5vZGUoZGVm
YXVsdE1heERlbGF5VGltZSk7Cit9CisKK1Bhc3NSZWZQdHI8RGVsYXlOb2RlPiBBdWRpb0NvbnRl
eHQ6OmNyZWF0ZURlbGF5Tm9kZShkb3VibGUgbWF4RGVsYXlUaW1lKQorewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsKLSAgICByZXR1cm4gRGVsYXlO
b2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CisgICAg
cmV0dXJuIERlbGF5Tm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVS
YXRlKCksIG1heERlbGF5VGltZSk7CiB9CiAKIFBhc3NSZWZQdHI8QXVkaW9DaGFubmVsU3BsaXR0
ZXI+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKaW5kZXggNzkxMTUxOWIzODAzZGQ5YTcyYmQ5MjVmODgxYWVj
MjFmNjQ5MjJiMy4uNTZlMWZiYzhmOWI4YTBjOGM1Yzk3OWQwOGRkMmU2MWYyNTgyNDZkMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKQEAgLTExNCw2ICsxMTQsNyBAQCBw
dWJsaWM6CiAgICAgUGFzc1JlZlB0cjxCaXF1YWRGaWx0ZXJOb2RlPiBjcmVhdGVCaXF1YWRGaWx0
ZXIoKTsKICAgICBQYXNzUmVmUHRyPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGVXYXZlU2hhcGVyKCk7
CiAgICAgUGFzc1JlZlB0cjxEZWxheU5vZGU+IGNyZWF0ZURlbGF5Tm9kZSgpOworICAgIFBhc3NS
ZWZQdHI8RGVsYXlOb2RlPiBjcmVhdGVEZWxheU5vZGUoZG91YmxlIG1heERlbGF5VGltZSk7CiAg
ICAgUGFzc1JlZlB0cjxMb3dQYXNzMkZpbHRlck5vZGU+IGNyZWF0ZUxvd1Bhc3MyRmlsdGVyKCk7
CiAgICAgUGFzc1JlZlB0cjxIaWdoUGFzczJGaWx0ZXJOb2RlPiBjcmVhdGVIaWdoUGFzczJGaWx0
ZXIoKTsKICAgICBQYXNzUmVmUHRyPEF1ZGlvUGFubmVyTm9kZT4gY3JlYXRlUGFubmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsIGIvU291
cmNlL1dlYkNvcmUvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbAppbmRleCBmYWJhYzEzY2FhYWE0
ZGZjNTFlZDc4ODgzNWU2YzI2NGJjZWI4OGEyLi42ZjAyMzI5NTA4NmRkYzI5OWViMjkzZDVhNDAw
NzE0ZTJiZTI2N2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9BdWRpb0Nv
bnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwK
QEAgLTYzLDcgKzYzLDcgQEAgbW9kdWxlIHdlYmF1ZGlvIHsKICNlbmRpZgogICAgICAgICAvLyBQ
cm9jZXNzaW5nIG5vZGVzCiAgICAgICAgIEF1ZGlvR2Fpbk5vZGUgY3JlYXRlR2Fpbk5vZGUoKTsK
LSAgICAgICAgRGVsYXlOb2RlIGNyZWF0ZURlbGF5Tm9kZSgpOworICAgICAgICBEZWxheU5vZGUg
Y3JlYXRlRGVsYXlOb2RlKGluIFtPcHRpb25hbF0gZG91YmxlIG1heERlbGF5VGltZSk7CiAgICAg
ICAgIEJpcXVhZEZpbHRlck5vZGUgY3JlYXRlQmlxdWFkRmlsdGVyKCk7CiAgICAgICAgIFdhdmVT
aGFwZXJOb2RlIGNyZWF0ZVdhdmVTaGFwZXIoKTsKICAgICAgICAgTG93UGFzczJGaWx0ZXJOb2Rl
IGNyZWF0ZUxvd1Bhc3MyRmlsdGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJh
dWRpby9EZWxheURTUEtlcm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheURT
UEtlcm5lbC5jcHAKaW5kZXggYWVkYTE4OWM1YTk1NTcxMDIzMTdiNDgwZjIwYWI5ODZjZTJmNGY4
My4uZmIzMWUyZGRkOGUzNTg5NzUwZGI3MGMwOWZhZTdhZTFjZTU2OWNiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmNwcApAQCAtMzIsMTUgKzMyLDEzIEBACiAj
aW5jbHVkZSA8YWxnb3JpdGhtPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwotICAKLWNvbnN0IGZs
b2F0IERlZmF1bHRNYXhEZWxheVRpbWUgPSAxOworCiBjb25zdCBmbG9hdCBTbW9vdGhpbmdUaW1l
Q29uc3RhbnQgPSAwLjAyMGY7IC8vIDIwbXMKICAgCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIERl
bGF5RFNQS2VybmVsOjpEZWxheURTUEtlcm5lbChEZWxheVByb2Nlc3NvciogcHJvY2Vzc29yKQog
ICAgIDogQXVkaW9EU1BLZXJuZWwocHJvY2Vzc29yKQotICAgICwgbV9tYXhEZWxheVRpbWUoRGVm
YXVsdE1heERlbGF5VGltZSkKICAgICAsIG1fd3JpdGVJbmRleCgwKQogICAgICwgbV9maXJzdFRp
bWUodHJ1ZSkKIHsKQEAgLTQ4LDcgKzQ2LDggQEAgRGVsYXlEU1BLZXJuZWw6OkRlbGF5RFNQS2Vy
bmVsKERlbGF5UHJvY2Vzc29yKiBwcm9jZXNzb3IpCiAgICAgaWYgKCFwcm9jZXNzb3IpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fYnVmZmVyLmFsbG9jYXRlKHN0YXRpY19jYXN0PHNpemVfdD4o
cHJvY2Vzc29yLT5zYW1wbGVSYXRlKCkgKiBEZWZhdWx0TWF4RGVsYXlUaW1lKSk7CisgICAgbV9t
YXhEZWxheVRpbWUgPSBwcm9jZXNzb3ItPm1heERlbGF5VGltZSgpOworICAgIG1fYnVmZmVyLmFs
bG9jYXRlKHN0YXRpY19jYXN0PHNpemVfdD4ocHJvY2Vzc29yLT5zYW1wbGVSYXRlKCkgKiBtX21h
eERlbGF5VGltZSkpOwogICAgIG1fYnVmZmVyLnplcm8oKTsKIAogICAgIG1fc21vb3RoaW5nUmF0
ZSA9IEF1ZGlvVXRpbGl0aWVzOjpkaXNjcmV0ZVRpbWVDb25zdGFudEZvclNhbXBsZVJhdGUoU21v
b3RoaW5nVGltZUNvbnN0YW50LCBwcm9jZXNzb3ItPnNhbXBsZVJhdGUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vRGVsYXlOb2RlLmNwcAppbmRleCAyYTUyNWRkMWE2YzE4YjlkZDVjNDRhN2UzNDRi
NzBlOWIxNDlmOTAxLi41OTM0MWFiZjVjZWYyYjUzMTcyMmYzMzNiMmM5Y2RiNDkxYjVmMzYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheU5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5jcHAKQEAgLTMwLDEwICszMCwxMCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4
dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0RlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlv
Q29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSkK
ICAgICA6IEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7Ci0g
ICAgbV9wcm9jZXNzb3IgPSBhZG9wdFB0cihuZXcgRGVsYXlQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwg
MSkpOyAgICAKKyAgICBtX3Byb2Nlc3NvciA9IGFkb3B0UHRyKG5ldyBEZWxheVByb2Nlc3Nvcihz
YW1wbGVSYXRlLCAxLCBtYXhEZWxheVRpbWUpKTsKICAgICBkZWxheVRpbWUoKS0+c2V0Q29udGV4
dChjb250ZXh0KTsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZURlbGF5KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vRGVsYXlOb2RlLmgKaW5kZXggM2Q1OGE4OTEzN2EzNmEzY2Q1ZGY4Y2U5YWU4NTUy
YjM3MjhlMjZmNi4uOTJiMWUwNTYyNDQ3OTU5YzY3ZGRjYWRlYjBjMGVhNGI3MTM4MGE1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlOb2RlLmgKQEAgLTM1LDE1ICszNSwxNSBAQCBjbGFzcyBB
dWRpb1BhcmFtOwogCiBjbGFzcyBEZWxheU5vZGUgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERlbGF5Tm9kZT4gY3JlYXRl
KEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxEZWxheU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IERlbGF5Tm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7ICAgICAgCisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgRGVsYXlOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUsIG1heERl
bGF5VGltZSkpOyAgICAgIAogICAgIH0KIAogICAgIEF1ZGlvUGFyYW0qIGRlbGF5VGltZSgpOwog
CiBwcml2YXRlOgotICAgIERlbGF5Tm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRl
KTsKKyAgICBEZWxheU5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91Ymxl
IG1heERlbGF5VGltZSk7CiAKICAgICBEZWxheVByb2Nlc3NvciogZGVsYXlQcm9jZXNzb3IoKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxEZWxheVByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAppbmRleCA4ZWQzZTQz
MzdlMDlmMTMwMTdmYzZmM2Y3ZWYyZmJkYzhmMjMyNmNhLi5iMjNlOGFjMWQyZDBhYzY4ZTdiODRm
YTljZTRiOTY3NWM3NTc4ZDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9E
ZWxheVByb2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuY3BwCkBAIC0zMiwxMCArMzIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1E
ZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZDaGFubmVscykKK0RlbGF5UHJvY2Vzc29yOjpEZWxheVByb2Nlc3NvcihmbG9hdCBz
YW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4RGVsYXlUaW1l
KQogICAgIDogQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Ioc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFu
bmVscykKKyAgICAsIG1fbWF4RGVsYXlUaW1lKG1heERlbGF5VGltZSkKIHsKLSAgICBtX2RlbGF5
VGltZSA9IEF1ZGlvUGFyYW06OmNyZWF0ZSgiZGVsYXlUaW1lIiwgMC4wLCAwLjAsIDEuMCk7Cisg
ICAgbV9kZWxheVRpbWUgPSBBdWRpb1BhcmFtOjpjcmVhdGUoImRlbGF5VGltZSIsIDAuMCwgMC4w
LCBtYXhEZWxheVRpbWUpOwogfQogCiBEZWxheVByb2Nlc3Nvcjo6fkRlbGF5UHJvY2Vzc29yKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmggYi9T
b3VyY2UvV2ViQ29yZS93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCmluZGV4IDE1NDI4Y2U3NTk2
ODVmYmYyOGI4NWEwNjBkMGNlYTBiM2IzMzM0ZTAuLjQzYzVlMGNiZWIxOWY4NWYyZmMxNGY0M2I1
ZDY0NmE1NWEzZDk2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0RlbGF5
UHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vRGVsYXlQcm9jZXNzb3Iu
aApAQCAtMzcsMTUgKzM3LDE3IEBAIGNsYXNzIEF1ZGlvRFNQS2VybmVsOwogICAgIAogY2xhc3Mg
RGVsYXlQcm9jZXNzb3IgOiBwdWJsaWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogcHVibGlj
OgotICAgIERlbGF5UHJvY2Vzc29yKGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9m
Q2hhbm5lbHMpOworICAgIERlbGF5UHJvY2Vzc29yKGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVk
IG51bWJlck9mQ2hhbm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpOwogICAgIHZpcnR1YWwgfkRl
bGF5UHJvY2Vzc29yKCk7CiAgICAgCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPEF1ZGlvRFNQS2Vy
bmVsPiBjcmVhdGVLZXJuZWwoKTsKICAgICAgICAgCiAgICAgQXVkaW9QYXJhbSogZGVsYXlUaW1l
KCkgY29uc3QgeyByZXR1cm4gbV9kZWxheVRpbWUuZ2V0KCk7IH0KIAorICAgIGRvdWJsZSBtYXhE
ZWxheVRpbWUoKSB7IHJldHVybiBtX21heERlbGF5VGltZTsgfQogcHJpdmF0ZToKICAgICBSZWZQ
dHI8QXVkaW9QYXJhbT4gbV9kZWxheVRpbWU7CisgICAgZG91YmxlIG1fbWF4RGVsYXlUaW1lOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllYzAxYWE1OTdkZTgzZjM3OTkx
MTQ5YTM0Nzk5NGY1MzQ0NzFiM2MuLjQ3ZTEwMTIyZDhjYjkxYjAzZTk1OWE4ZTM2YWRlOTgyMjc1
YmU2OWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wMi0xNiAgUmF5bW9uZCBUb3kgIDxy
dG95QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVsYXlOb2RlIGhhcyBhIGZpeGVkIG9uZSBzZWNv
bmQgbWF4IGRlbGF5IHRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc4NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3ZWJhdWRpby9yZXNvdXJjZXMvZGVsYXktdGVzdGluZy5qczogQWRkZWQgbW9y
ZSBpbmZvcm1hdGl2ZQorICAgICAgICBtZXNzYWdlcy4gIAorICAgICAgICAqIHdlYmF1ZGlvL2Rl
bGF5bm9kZS1leHBlY3RlZC50eHQ6IFVwZGF0ZWQgcmVzdWx0IGZvciBtb3JlCisgICAgICAgIGlu
Zm9ybWF0aXZlIG1lc3NhZ2VzCisgICAgICAgICogd2ViYXVkaW8vZGVsYXlub2RlLXNjaGVkdWxp
bmctZXhwZWN0ZWQudHh0OiBVcGRhdGVkIHJlc3VsdCBmb3IKKyAgICAgICAgbW9yZSBpbmZvcm1h
dGl2ZSBtZXNzYWdlcy4KKyAgICAgICAgKiB3ZWJhdWRpby9kZWxheW5vZGUtbWF4ZGVsYXktZXhw
ZWN0ZWQudHh0OiBBZGRlZAorICAgICAgICAqIHdlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS5o
dG1sOiBBZGRlZAorCiAyMDEyLTAzLTAxICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBNYXJrIHR3byBtZWRpYSB0ZXN0cyBh
cyBmbGFreS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9kZWxheW5vZGUtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDYzYTUyZDhjNDBlNzVmYzYxNjljNjYxMmFmZmNkYjdkNzUyNGQ3ODEuLjNmYzFiNjA0NDJm
ZDY2ZmY1YWQwNDhkYjg3ODI0MzA0MTk1YjIyMjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dl
YmF1ZGlvL2RlbGF5bm9kZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
ZGVsYXlub2RlLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVGVzdHMgYmFzaWMgZnVuY3Rp
b25hbGl0eSBvZiBEZWxheU5vZGUuCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotUEFT
UyBUZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5IGRlbGF5ZWQuCitQQVNTIFRlc3Qgc2lnbmFsIHdh
cyBjb3JyZWN0bHkgZGVsYXllZCBieSAwLjUgc2VjLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRp
by9kZWxheW5vZGUtbWF4ZGVsYXktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
ZGVsYXlub2RlLW1heGRlbGF5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jN2IxNzA5ODI5NWE5
NGQ2ZTMyMTYyYTc0OGM2MzcyNzEwYWRhM2NiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvd2ViYXVkaW8vZGVsYXlub2RlLW1heGRlbGF5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkg
QEAKK1Rlc3RzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2YgRGVsYXlOb2RlIHdpdGggYSBub24tZGVm
YXVsdCBtYXggZGVsYXkgdGltZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNT
IFRlc3Qgc2lnbmFsIHdhcyBjb3JyZWN0bHkgZGVsYXllZCBieSAxLjUgc2VjLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViYXVkaW8vZGVsYXlub2RlLW1heGRlbGF5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODQyMzYxYzkwODFm
ZmRiZTU0MDdkM2NkMjgxNmE4YTk3Njg0YzAxYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1tYXhkZWxheS5odG1sCkBAIC0wLDAgKzEsNTQgQEAKKzwh
RE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvZGVsYXktdGVzdGluZy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5PgorCis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIERlbGF5Tm9k
ZSB3aXRoIGEgbm9uLWRlZmF1bHQgbWF4IGRlbGF5IHRpbWUuIik7CisKK2Z1bmN0aW9uIHJ1blRl
c3QoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFdlYkF1ZGlvRW5h
YmxlZCIsICIxIik7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIH0KKyAg
ICAKKyAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAgIAorICAgIC8vIENy
ZWF0ZSBvZmZsaW5lIGF1ZGlvIGNvbnRleHQuCisgICAgdmFyIGNvbnRleHQgPSBuZXcgd2Via2l0
QXVkaW9Db250ZXh0KDEsIHNhbXBsZVJhdGUgKiByZW5kZXJMZW5ndGhTZWNvbmRzLCBzYW1wbGVS
YXRlKTsKKyAgICB2YXIgdG9uZUJ1ZmZlciA9IGNyZWF0ZVRvbmVCdWZmZXIoY29udGV4dCwgMjAs
IDIwICogdG9uZUxlbmd0aFNlY29uZHMsIHNhbXBsZVJhdGUpOyAvLyAyMEh6IHRvbmUKKyAgICAK
KyAgICB2YXIgYnVmZmVyU291cmNlID0gY29udGV4dC5jcmVhdGVCdWZmZXJTb3VyY2UoKTsKKyAg
ICBidWZmZXJTb3VyY2UuYnVmZmVyID0gdG9uZUJ1ZmZlcjsKKworICAgIC8vIENyZWF0ZSBhIGRl
bGF5IG5vZGUgd2l0aCBhbiBleHBsaWNpdCBtYXggZGVsYXkgdGltZSAoZ3JlYXRlciB0aGFuIHRo
ZSBkZWZhdWx0IG9mIDEgc2Vjb25kKS4KKyAgICB2YXIgZGVsYXkgPSBjb250ZXh0LmNyZWF0ZURl
bGF5Tm9kZSgyKTsKKyAgICAvLyBTZXQgdGhlIGRlbGF5IHRpbWUgdG8gYSB2YWx1ZSBncmVhdGVy
IHRoYW4gdGhlIGRlZmF1bHQgbWF4IGRlbGF5IHNvIHdlIGNhbiB2ZXJpZnkgdGhlIGRlbGF5Cisg
ICAgLy8gaXMgd29ya2luZyBmb3IgdGhpcyBjYXNlLgorICAgIGRlbGF5VGltZVNlY29uZHMgPSAx
LjU7CisgICAgZGVsYXkuZGVsYXlUaW1lLnZhbHVlID0gZGVsYXlUaW1lU2Vjb25kczsKKworICAg
IGJ1ZmZlclNvdXJjZS5jb25uZWN0KGRlbGF5KTsKKyAgICBkZWxheS5jb25uZWN0KGNvbnRleHQu
ZGVzdGluYXRpb24pOworICAgIGJ1ZmZlclNvdXJjZS5ub3RlT24oMCk7CisgICAgCisgICAgY29u
dGV4dC5vbmNvbXBsZXRlID0gY2hlY2tEZWxheWVkUmVzdWx0KHRvbmVCdWZmZXIpOworICAgIGNv
bnRleHQuc3RhcnRSZW5kZXJpbmcoKTsKK30KKworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKwor
PHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9k
ZWxheW5vZGUtc2NoZWR1bGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9k
ZWxheW5vZGUtc2NoZWR1bGluZy1leHBlY3RlZC50eHQKaW5kZXggYTE5NjU4ZGMxNGVkOWIzOTkz
MzE3N2NhOTU0NDFiNzE4Zjk5Y2Q2Zi4uNzkxZWE0M2YzNzBhMWQ1NzNhOTJjZjk5M2FlMDAxMzcy
NTRkYjVlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2ViYXVkaW8vZGVsYXlub2RlLXNjaGVk
dWxpbmctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL2RlbGF5bm9kZS1z
Y2hlZHVsaW5nLWV4cGVjdGVkLnR4dApAQCAtMiw3ICsyLDcgQEAgVGVzdHMgdGhhdCBEZWxheU5v
ZGUgZGVsYXlUaW1lIHBhcmFtZXRlciBjYW4gYmUgc2NoZWR1bGVkIGF0IGEgZ2l2ZW4gdGltZS4K
IAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCi1QQVNTIFRlc3Qgc2lnbmFsIHdhcyBjb3Jy
ZWN0bHkgZGVsYXllZC4KK1BBU1MgVGVzdCBzaWduYWwgd2FzIGNvcnJlY3RseSBkZWxheWVkIGJ5
IDAuNSBzZWMuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL3Jlc291cmNlcy9kZWxheS10ZXN0
aW5nLmpzIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vcmVzb3VyY2VzL2RlbGF5LXRlc3RpbmcuanMK
aW5kZXggYmNlNDE1MGMxYWEyYjUwYjU4ODcyZTI5MzQ2YWE4ZWJjYThjNjg3Mi4uMTVmN2M4NWVj
NWM3NjUyZDFiODQ0MjhkYzY0MGMzMzhhNzg4NTg5MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViYXVkaW8vcmVzb3VyY2VzL2RlbGF5LXRlc3RpbmcuanMKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vcmVzb3VyY2VzL2RlbGF5LXRlc3RpbmcuanMKQEAgLTM3LDYgKzM3LDcgQEAgZnVuY3Rp
b24gY2hlY2tEZWxheWVkUmVzdWx0KHRvbmVCdWZmZXIpIHsKICAgICAgICAgICAgIGlmIChpIDwg
ZGVsYXlUaW1lRnJhbWVzKSB7CiAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCBpbml0aWFs
IHBvcnRpb24gaXMgMCAoc2luY2Ugc2lnbmFsIGlzIGRlbGF5ZWQpLgogICAgICAgICAgICAgICAg
IGlmIChyZW5kZXJlZERhdGFbaV0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJJbml0aWFsIHBvcnRpb24gaXMgbm90IDAgYXQgZnJhbWUgIiArIGkpOwogICAgICAgICAg
ICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTQ0LDEyICs0NSwxNCBAQCBmdW5jdGlvbiBjaGVja0RlbGF5
ZWRSZXN1bHQodG9uZUJ1ZmZlcikgewogICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IHRoZSB0b25lIGRhdGEgaXMgZGVsYXllZCBieSBleGFjdGx5IHRoZSBleHBlY3RlZCBudW1iZXIg
b2YgZnJhbWVzLgogICAgICAgICAgICAgICAgIHZhciBqID0gaSAtIGRlbGF5VGltZUZyYW1lczsK
ICAgICAgICAgICAgICAgICBpZiAocmVuZGVyZWREYXRhW2ldICE9IHNvdXJjZURhdGFbal0pIHsK
KyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiQWN0dWFsIGRhdGEgZG9lcyBub3QgbWF0
Y2ggZXhwZWN0ZWQgZGF0YSBhdCBmcmFtZSAiICsgaSk7CiAgICAgICAgICAgICAgICAgICAgIHN1
Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUg
d2UgaGF2ZSBzaWxlbmNlIGFmdGVyIHRoZSBkZWxheWVkIHRvbmUuCiAgICAgICAgICAgICAgICAg
aWYgKHJlbmRlcmVkRGF0YVtpXSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkZpbmFsIHBvcnRpb24gaXMgbm90IDAgYXQgZnJhbWUgIiArIGkpOwogICAgICAgICAgICAg
ICAgICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgIH0KQEAgLTU3LDkgKzYwLDkgQEAgZnVuY3Rpb24gY2hlY2tEZWxheWVkUmVz
dWx0KHRvbmVCdWZmZXIpIHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdWNjZXNzKSB7Ci0g
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJUZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5IGRlbGF5ZWQu
Iik7CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJUZXN0IHNpZ25hbCB3YXMgY29ycmVjdGx5IGRl
bGF5ZWQgYnkgIiArIGRlbGF5VGltZVNlY29uZHMgKyAiIHNlYy4iKTsKICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIlRlc3Qgc2lnbmFsIHdhcyBub3QgY29ycmVjdGx5
IGRlbGF5ZWQuIik7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJUZXN0IHNpZ25hbCB3YXMgbm90
IGNvcnJlY3RseSBkZWxheWVkIGJ5ICIgKyBkZWxheVRpbWVTZWNvbmRzICsgIiBzZWMuIik7CiAg
ICAgICAgIH0KIAogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>