<?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>29099</bug_id>
          
          <creation_ts>2009-09-09 11:06:30 -0700</creation_ts>
          <short_desc>Geolocation does not correctly handle Infinity for PositionOptions properties.</short_desc>
          <delta_ts>2009-09-18 02:35:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Steve Block">steveblock</assigned_to>
          <cc>andreip</cc>
    
    <cc>benm</cc>
    
    <cc>bolsinga</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>steveblock</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>145848</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-09-09 11:06:30 -0700</bug_when>
    <thetext>Infinity is a valid value for the Geolocation PositionOptions.timeout and PositionOptions.maximumAge properties. Currently, Infinity is converted to int32 for these properties when the PositionOptions object is read. Instead, Infinity should be handled as a special value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145859</commentid>
    <comment_count>1</comment_count>
      <attachid>39283</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-09-09 11:19:38 -0700</bug_when>
    <thetext>Created attachment 39283
Patch 1 for bug 29099

Fixes bug and updates LayoutTest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145965</commentid>
    <comment_count>2</comment_count>
      <attachid>39283</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 15:03:06 -0700</bug_when>
    <thetext>Comment on attachment 39283
Patch 1 for bug 29099

It&apos;s a little strange that this is the first use of Inf.  Makes me wonder if it should be exported.  Obviously it must already be in a header somewhere.

In general this change looks fine.  I just find the Inf thing a bit strange.  Isn&apos;t there a posix function for detecting infitiy in a double?  Only positive infinity?  What about isinfinite(foo) instead?

I think r- for the strange Inf export and no discussion of handling negative infinity or not.

We should probably say &quot;positive infinity&quot; instead of &quot;infinity&quot; in the comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145992</commentid>
    <comment_count>3</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-09-09 16:10:09 -0700</bug_when>
    <thetext>&gt; Isn&apos;t there a posix function for detecting infitiy in a double?
Yes, but I thought it better to use the JSC abstraction for Infinity, rather than resorting to platform-specifics. Inf is assigned in JavaScriptCore/runtime/JSCell.cpp, using different values dependent upon the platform. To safely test for infinity using platform-specifics, I&apos;d have to repeat this logic.

&gt;  Only positive infinity?
Yes, we&apos;re only interested in positive infinity. All negative values are converted to 0 for these parameters anyway.
 
&gt; What about isinfinite(foo) instead?
isinf() tests for (x == +Inf || x == -Inf), but I&apos;m not sure it&apos;s as safe for use across multiple platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145999</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 16:28:49 -0700</bug_when>
    <thetext>wtf/MathExtras.h provides isinf(), so it seems we provide it for all platforms which don&apos;t support it natively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146000</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 16:29:31 -0700</bug_when>
    <thetext>Using Inf could be totally fine, I don&apos;t know.  You&apos;d have to ask a current JSC hacker.  Try olliej, mjs, ggaren or gbarra in #webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146028</commentid>
    <comment_count>6</comment_count>
      <attachid>39315</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-09-09 17:15:33 -0700</bug_when>
    <thetext>Created attachment 39315
Patch 2 for bug 29099

I checked with olliej and it&apos;s safe to use (isinf(x) &amp;&amp; x &gt; 0).

Have updated the patch to use this method, and fixed comments to use &apos;positive infinity&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146029</commentid>
    <comment_count>7</comment_count>
      <attachid>39315</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-09 17:18:28 -0700</bug_when>
    <thetext>Comment on attachment 39315
Patch 2 for bug 29099

So would:
 109         if (!(isinf(timeoutNumber) &amp;&amp; (timeoutNumber &gt; 0))) {
if (isfinite(timeoutNumber))

get you the same effect?  negativeInfinity will be ignored, which is maybe the wrong behavior?

Also, shouldn&apos;t we be testing negative infinity in the test cases?  Do the tests test any negative numbers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146157</commentid>
    <comment_count>8</comment_count>
      <attachid>39339</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-09-10 04:10:07 -0700</bug_when>
    <thetext>Created attachment 39339
Patch 3 for bug 29099

&gt; &gt; &gt;  Only positive infinity?
&gt; &gt; Yes, we&apos;re only interested in positive infinity.
&gt; (From update of attachment 39315 [details])
&gt; So would:
&gt;  109         if (!(isinf(timeoutNumber) &amp;&amp; (timeoutNumber &gt; 0))) {
&gt; if (isfinite(timeoutNumber))
&gt; get you the same effect?
No. The special case I want to handle (for both timeout and maximumAge) is +Inf. I&apos;m not interested in -Inf. These values represent time limits, where a value of +Inf means &apos;no time limit applied&apos;. All other values are converted to int32 and then negative values are set to 0. (This behaviour was chosen to follow the behaviour of window.setTimeout. See Bug 27254.)

The logic we need is ...

// Special case for +Inf - do nothing
if (timeout != +Inf)
  // Convert to Int32 and set negative values to 0

if (maximumAge == +Inf)
  // Special case for +Inf - clear maximum age
else
  // Convert to Int32 and set negative values to 0


Using ...

if (isfinite(timeout))

will cause a value of -Inf to skip the if, which is the wrong behaviour. It&apos;s true that I could use ...

if (isinfinite(timeout) || timeout &lt; 0)

but I thought it better to match the structure of the logic to that used in the if statement for maximumAge.

&gt; Also, shouldn&apos;t we be testing negative infinity in the test cases?
Given that the change adds a new code path only for +Inf, I thought testing +Inf was sufficient. I&apos;ve added tests for -Inf too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146158</commentid>
    <comment_count>9</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-09-10 04:12:51 -0700</bug_when>
    <thetext>&gt; if (isinfinite(timeout) || timeout &lt; 0)
oops, i meant ...
if (isfinite(timeout) || timeout &lt; 0)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146508</commentid>
    <comment_count>10</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2009-09-11 02:56:30 -0700</bug_when>
    <thetext>&gt; So are -Inf and +Inf always supposed to have the same behavior?
No, -Inf and +Inf are not supposed to have the same behaviour.

&gt; I thought negative numbers were disallowed for someof these, no?
No, the correct behaviour is to accept (ie not throw an exception for) any JS type passed for these PositionOptions properties. We then convert to a number using the standard JS conversions.

The logic we follow is that I described previously. If the value is +Inf, we take the special-case action. Otherwise, we convert to int32 and then set negative values to zero, following the pattern of window.setTimeout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>146512</commentid>
    <comment_count>11</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-09-11 03:20:58 -0700</bug_when>
    <thetext>
Hi Eric,

(In reply to comment #10)
&gt; &gt; So are -Inf and +Inf always supposed to have the same behavior?

This is all covered by the spec. Here is the relevant section:

http://dev.w3.org/geo/api/spec-source.html#get-current-position

So, in brief, any negative number, including -Inf, will be converted to 0.



&gt; &gt; I thought negative numbers were disallowed for someof these, no?

Again, this in the spec: any numbers are allowed. The spec says what the implementation must do with the numbers given to it. -Inf will be converted to 0.

So this patch makes the implementation compliant with the spec.

Thanks,
Andrei</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147487</commentid>
    <comment_count>12</comment_count>
      <attachid>39339</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-15 23:25:23 -0700</bug_when>
    <thetext>Comment on attachment 39339
Patch 3 for bug 29099

Won&apos;t this break Chromium&apos;s builder?  This needs v8 changes too, no?  I mean, I&apos;m OK approving as-is, but darin or dglazkov would probably yell at me. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147498</commentid>
    <comment_count>13</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2009-09-16 03:37:08 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 39339 [details])
&gt; Won&apos;t this break Chromium&apos;s builder?  This needs v8 changes too, no?  I mean,
&gt; I&apos;m OK approving as-is, but darin or dglazkov would probably yell at me. ;)

(Steve&apos;s on vacation so I will try to cover for him while he&apos;s gone)

This change will not break chromium because, AFAIK, Chromium doesn&apos;t yet build Geolocation at all. The V8 bindings are missing. We have them written and they are in our queue of things to upstream.

Dimitri is CCed to this bug so can probably confirm. And, anyway, if this change somehow manages to break Chromium, then he should yell at us, not at you :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147525</commentid>
    <comment_count>14</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-09-16 07:20:28 -0700</bug_when>
    <thetext>Shouldn&apos;t break Chromium build. If it does, you&apos;ll hear from me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147526</commentid>
    <comment_count>15</comment_count>
      <attachid>39339</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-09-16 07:21:20 -0700</bug_when>
    <thetext>Comment on attachment 39339
Patch 3 for bug 29099

rs=me, based on Eric&apos;s feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148034</commentid>
    <comment_count>16</comment_count>
      <attachid>39339</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-18 02:35:32 -0700</bug_when>
    <thetext>Comment on attachment 39339
Patch 3 for bug 29099

Clearing flags on attachment: 39339

Committed r48503: &lt;http://trac.webkit.org/changeset/48503&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148035</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-09-18 02:35:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39283</attachid>
            <date>2009-09-09 11:19:38 -0700</date>
            <delta_ts>2009-09-09 17:15:33 -0700</delta_ts>
            <desc>Patch 1 for bug 29099</desc>
            <filename>handleInfinity.txt</filename>
            <type>text/plain</type>
            <size>17261</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ4MjE2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDktMDktMDkgIFN0ZXZlIEJs
b2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEdlb2xvY2F0aW9uIGRvZXMgbm90IGNvcnJlY3RseSBoYW5k
bGUgSW5maW5pdHkgZm9yIFBvc2l0aW9uT3B0aW9ucyBwcm9wZXJ0aWVzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkwOTkKKworICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLmV4cDogTW9kaWZpZWQuIEV4cG9ydHMgSW5mIGZvciB1c2UgaW4gSlNHZW9s
b2NhdGlvbkN1c3RvbS5jcHAuCisKIDIwMDktMDktMDkgIExhc3psbyBHb21ib3MgIDxsYXN6bG8u
MS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJ
bmRleDogSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAkocmV2aXNpb24gNDgyMDkpCisrKyBKYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw2ICsx
NjgsNyBAQCBfX1pOM0pTQzIzQWJzdHJhY3RTYW1wbGluZ0NvdW50ZXI0ZHVtcEV2CiBfX1pOM0pT
QzIzb2JqZWN0UHJvdG9GdW5jVG9TdHJpbmdFUE5TXzlFeGVjU3RhdGVFUE5TXzhKU09iamVjdEVO
U183SlNWYWx1ZUVSS05TXzdBcmdMaXN0RQogX19aTjNKU0MyM3NldFVwU3RhdGljRnVuY3Rpb25T
bG90RVBOU185RXhlY1N0YXRlRVBLTlNfOUhhc2hFbnRyeUVQTlNfOEpTT2JqZWN0RVJLTlNfMTBJ
ZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKIF9fWk4zSlNDMjVldmFsdWF0ZUluR2xvYmFs
Q2FsbEZyYW1lRVJLTlNfN1VTdHJpbmdFUk5TXzdKU1ZhbHVlRVBOU18xNEpTR2xvYmFsT2JqZWN0
RQorX19aTjNKU0MzSW5mRQogX19aTjNKU0M0SGVhcDExb2JqZWN0Q291bnRFdgogX19aTjNKU0M0
SGVhcDE0cHJpbWFyeUhlYXBFbmRFdgogX19aTjNKU0M0SGVhcDE1cmVjb3JkRXh0cmFDb3N0RW0K
SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODIxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMDktMDkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEdlb2xvY2F0aW9uIGRvZXMgbm90IGNvcnJlY3RseSBoYW5kbGUgSW5maW5pdHkgZm9yIFBvc2l0
aW9uT3B0aW9ucyBwcm9wZXJ0aWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjkwOTkKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwOiBNb2RpZmllZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9u
T3B0aW9ucyk6IE1vZGlmaWVkLiBJcyB0aW1lb3V0IG9mIG1heGltdW1BZ2UgaXMgSW5maW5pdHks
IGFwcGxpZXMgdGhlc2UgdmFsdWVzIGFzIGEgc3BlY2lhbCBjYXNlLgorICAgICAgICAqIHBhZ2Uv
UG9zaXRpb25PcHRpb25zLmg6IE1vZGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25P
cHRpb25zOjpoYXNNYXhpbXVtQWdlKTogQWRkZWQuIERldGVybWluZXMgd2hldGhlciB0aGUgb2Jq
ZWN0IGhhcyBhIG1heGltdW0gYWdlLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25z
OjptYXhpbXVtQWdlKTogTW9kaWZpZWQuIEFzc2VydHMgdGhhdCB0aGUgb2JqZWN0IGhhcyBhIG1h
eGltdW0gYWdlLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpjbGVhck1heGlt
dW1BZ2UpOiBBZGRlZC4gQ2xlYXJzIHRoZSBtYXhpbXVtIGFnZS4KKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uT3B0aW9uczo6c2V0TWF4aW11bUFnZSk6IE1vZGlmaWVkLiBSZWdpc3RlcnMgdGhh
dCB0aGUgbWF4aW11bSBhZ2UgaGFzIGJlZW4gc2V0LgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b25PcHRpb25zOjpQb3NpdGlvbk9wdGlvbnMpOiBNb2RpZmllZC4gUmVnaXN0ZXJzIHRoYXQgdGhl
IG1heGltdW0gYWdlIGhhcyBiZWVuIHNldC4KKwogMjAwOS0wOS0wOCAgS2V2aW4gV2F0dGVycyAg
PGtldmlud2F0dGVyc0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2V2aW4gT2xs
aXZpZXIuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHAJKHJldmlzaW9uIDQ4MjA5KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9u
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDIwICsxMDIsMzQgQEAgc3RhdGljIFBh
c3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBjcmVhdAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKCF0aW1lb3V0VmFsdWUuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICAvLyBXcmFwIHRvIGludDMyIGFuZCBmb3JjZSBub24tbmVnYXRpdmUg
dG8gbWF0Y2ggYmVoYXZpb3Igb2Ygd2luZG93LnNldFRpbWVvdXQuCi0gICAgICAgIG9wdGlvbnMt
PnNldFRpbWVvdXQobWF4KDAsIHRpbWVvdXRWYWx1ZS50b0ludDMyKGV4ZWMpKSk7CisgICAgICAg
IGRvdWJsZSB0aW1lb3V0TnVtYmVyID0gdGltZW91dFZhbHVlLnRvTnVtYmVyKGV4ZWMpOwogICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgLy8gSWYgdGhlIHZhbHVlIGlzIGluZmluaXR5LCB0aGVyZSdzIG5vdGhpbmcgdG8gZG8u
CisgICAgICAgIGlmICh0aW1lb3V0TnVtYmVyICE9IEluZikgeworICAgICAgICAgICAgLy8gV3Jh
cCB0byBpbnQzMiBhbmQgZm9yY2Ugbm9uLW5lZ2F0aXZlIHRvIG1hdGNoIGJlaGF2aW9yIG9mIHdp
bmRvdy5zZXRUaW1lb3V0LgorICAgICAgICAgICAgb3B0aW9ucy0+c2V0VGltZW91dChtYXgoMCwg
dGltZW91dFZhbHVlLnRvSW50MzIoZXhlYykpKTsKKyAgICAgICAgICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIEpTVmFsdWUgbWF4aW11bUFnZVZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgSWRlbnRp
ZmllcihleGVjLCAibWF4aW11bUFnZSIpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghbWF4aW11bUFnZVZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKLSAgICAgICAgLy8gV3JhcCB0byBpbnQzMiBhbmQgZm9yY2Ugbm9uLW5lZ2F0aXZlIHRv
IG1hdGNoIGJlaGF2aW9yIG9mIHdpbmRvdy5zZXRUaW1lb3V0LgotICAgICAgICBvcHRpb25zLT5z
ZXRNYXhpbXVtQWdlKG1heCgwLCBtYXhpbXVtQWdlVmFsdWUudG9JbnQzMihleGVjKSkpOworICAg
ICAgICBkb3VibGUgbWF4aW11bUFnZU51bWJlciA9IG1heGltdW1BZ2VWYWx1ZS50b051bWJlcihl
eGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIGlmIChtYXhpbXVtQWdlTnVtYmVyID09IEluZikgeworICAgICAgICAg
ICAgLy8gSWYgdGhlIHZhbHVlIGlzIGluZmluaXR5LCBjbGVhciBtYXhpbXVtQWdlLgorICAgICAg
ICAgICAgb3B0aW9ucy0+Y2xlYXJNYXhpbXVtQWdlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAvLyBXcmFwIHRvIGludDMyIGFuZCBmb3JjZSBub24tbmVnYXRpdmUgdG8gbWF0Y2gg
YmVoYXZpb3Igb2Ygd2luZG93LnNldFRpbWVvdXQuCisgICAgICAgICAgICBvcHRpb25zLT5zZXRN
YXhpbXVtQWdlKG1heCgwLCBtYXhpbXVtQWdlVmFsdWUudG9JbnQzMihleGVjKSkpOworICAgICAg
ICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIG9wdGlvbnMucmVsZWFzZSgpOwpJbmRl
eDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9Qb3NpdGlvbk9wdGlvbnMuaAkocmV2aXNpb24gNDgyMDkpCisrKyBXZWJDb3JlL3BhZ2Uv
UG9zaXRpb25PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1faGFzVGltZW91dCA9IHRydWU7CiAgICAgICAgIG1fdGltZW91dCA9IHRp
bWVvdXQ7CiAgICAgfQotICAgIGludCBtYXhpbXVtQWdlKCkgY29uc3QgeyByZXR1cm4gbV9tYXhp
bXVtQWdlOyB9CisgICAgYm9vbCBoYXNNYXhpbXVtQWdlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNN
YXhpbXVtQWdlOyB9CisgICAgaW50IG1heGltdW1BZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAg
QVNTRVJUKGhhc01heGltdW1BZ2UoKSk7CisgICAgICAgIHJldHVybiBtX21heGltdW1BZ2U7Cisg
ICAgfQorICAgIHZvaWQgY2xlYXJNYXhpbXVtQWdlKCkgeyBtX2hhc01heGltdW1BZ2UgPSBmYWxz
ZTsgfQogICAgIHZvaWQgc2V0TWF4aW11bUFnZShpbnQgYWdlKQogICAgIHsKICAgICAgICAgQVNT
RVJUKGFnZSA+PSAwKTsKKyAgICAgICAgbV9oYXNNYXhpbXVtQWdlID0gdHJ1ZTsKICAgICAgICAg
bV9tYXhpbXVtQWdlID0gYWdlOwogICAgIH0KICAgICAKQEAgLTYwLDEzICs2NywxNCBAQCBwcml2
YXRlOgogICAgIFBvc2l0aW9uT3B0aW9ucygpCiAgICAgICAgIDogbV9oaWdoQWNjdXJhY3koZmFs
c2UpCiAgICAgICAgICwgbV9oYXNUaW1lb3V0KGZhbHNlKQotICAgICAgICAsIG1fbWF4aW11bUFn
ZSgwKQogICAgIHsKKyAgICAgICAgc2V0TWF4aW11bUFnZSgwKTsKICAgICB9CiAgICAgCiAgICAg
Ym9vbCBtX2hpZ2hBY2N1cmFjeTsKICAgICBib29sIG1faGFzVGltZW91dDsKICAgICBpbnQgbV90
aW1lb3V0OworICAgIGJvb2wgbV9oYXNNYXhpbXVtQWdlOwogICAgIGludCBtX21heGltdW1BZ2U7
CiB9OwogICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDgyMTYpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wOS0wOSAgU3RldmUg
QmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgR2VvbG9jYXRpb24gZG9lcyBub3QgY29ycmVjdGx5IGhh
bmRsZSBJbmZpbml0eSBmb3IgUG9zaXRpb25PcHRpb25zIHByb3BlcnRpZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTA5OQorCisgICAgICAgICog
ZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2FyZ3VtZW50LXR5cGVzLmpzOiBNb2RpZmll
ZC4gVGVzdCBwYXNzaW5nIEluZmluaXR5IHRvIEdlb2xvY2F0aW9uIG1ldGhvZHMuCisgICAgICAg
ICogZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0OiBNb2Rp
ZmllZC4gRXhwZWN0ZWQgcmVzdWx0IGZvciBhYm92ZSB0ZXN0LgorCiAyMDA5LTA5LTA5ICBFcmlr
IEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2
aWQgTGV2aW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9hcmd1bWVu
dC10eXBlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
R2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0ODIwOSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2FyZ3VtZW50LXR5cGVzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsNyBAQCBQQVNTIG5hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG9zaXRpb24oTWF0aC5hYnMpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKHRydWUpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5h
dmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oNDIpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIG5hdmln
YXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oSW5maW5pdHkpIHRocmV3IGV4Y2Vw
dGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5h
dmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oInN0cmluZyIpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNT
IG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwg
dW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xv
Y2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCBudWxsKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KQEAgLTIxLDYgKzIyLDcgQEAgUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvcwogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBv
c2l0aW9uKGVtcHR5RnVuY3Rpb24sIE1hdGguYWJzKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
IFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0
aW9uLCB0cnVlKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00g
RXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uKGVtcHR5RnVuY3Rpb24sIDQyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFU
Q0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0
Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIEluZmluaXR5KSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0
b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sICJzdHJpbmci
KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9u
IDE3LgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5
RnVuY3Rpb24sIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
IFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0
aW9uLCB1bmRlZmluZWQsIG51bGwpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgpAQCAtMjksNiAr
MzEsNyBAQCBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zCiBQQVNTIG5h
dmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5k
ZWZpbmVkLCBlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2
aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRl
ZmluZWQsIHRydWUpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2Vv
bG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwgNDIp
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0
Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwgSW5maW5pdHkpIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwgInN0cmluZyIpIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge2R1bW15UHJvcGVydHk6dW5kZWZpbmVkfSkg
ZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZHVtbXlQcm9wZXJ0eTpu
dWxsfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCkBAIC0zNyw2ICs0MCw3IEBAIFBBU1MgbmF2
aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3MKIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0
aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtkdW1teVBy
b3BlcnR5OmVtcHR5RnVuY3Rpb259KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2
aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRl
ZmluZWQsIHtkdW1teVByb3BlcnR5OnRydWV9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBB
U1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9u
LCB1bmRlZmluZWQsIHtkdW1teVByb3BlcnR5OjQyfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5j
dGlvbiwgdW5kZWZpbmVkLCB7ZHVtbXlQcm9wZXJ0eTpJbmZpbml0eX0pIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge2R1bW15UHJvcGVydHk6InN0cmluZyJ9KSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtlbmFibGVIaWdoQWNjdXJhY3k6
dW5kZWZpbmVkfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9s
b2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZW5h
YmxlSGlnaEFjY3VyYWN5Om51bGx9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KQEAgLTQ1LDYg
KzQ5LDcgQEAgUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvcwogUEFTUyBu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVu
ZGVmaW5lZCwge2VuYWJsZUhpZ2hBY2N1cmFjeTplbXB0eUZ1bmN0aW9ufSkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRp
b24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZW5hYmxlSGlnaEFjY3VyYWN5OnRydWV9KSBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1
cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtlbmFibGVIaWdoQWNjdXJh
Y3k6NDJ9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLmdlb2xvY2F0
aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtlbmFibGVI
aWdoQWNjdXJhY3k6SW5maW5pdHl9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2
aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRl
ZmluZWQsIHtlbmFibGVIaWdoQWNjdXJhY3k6InN0cmluZyJ9KSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0
eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHttYXhpbXVtQWdlOnVuZGVmaW5lZH0pIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge21heGltdW1BZ2U6bnVsbH0pIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgpAQCAtNTMsNiArNTgsNyBAQCBQQVNTIG5hdmlnYXRvci5nZW9sb2Nh
dGlvbi5nZXRDdXJyZW50UG9zCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50
UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7bWF4aW11bUFnZTplbXB0eUZ1bmN0
aW9ufSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7bWF4aW11bUFn
ZTp0cnVlfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2Nh
dGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7bWF4aW11
bUFnZTo0Mn0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3IuZ2VvbG9j
YXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge21heGlt
dW1BZ2U6SW5maW5pdHl9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9y
Lmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQs
IHttYXhpbXVtQWdlOiJzdHJpbmcifSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5h
dmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5k
ZWZpbmVkLCB7dGltZW91dDp1bmRlZmluZWR9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBB
U1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9u
LCB1bmRlZmluZWQsIHt0aW1lb3V0Om51bGx9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KQEAg
LTYxLDYgKzY3LDcgQEAgUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvcwog
UEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rp
b24sIHVuZGVmaW5lZCwge3RpbWVvdXQ6ZW1wdHlGdW5jdGlvbn0pIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVt
cHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge3RpbWVvdXQ6dHJ1ZX0pIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVt
cHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge3RpbWVvdXQ6NDJ9KSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KK1BBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0
eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHt0aW1lb3V0OkluZmluaXR5fSkgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24o
ZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7dGltZW91dDoic3RyaW5nIn0pIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvYXJndW1lbnQtdHlwZXMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3Vy
Y2VzL2FyZ3VtZW50LXR5cGVzLmpzCShyZXZpc2lvbiA0ODIwOSkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy9hcmd1bWVudC10eXBlcy5qcwkod29ya2luZyBj
b3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKE1h
dGguYWJzKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50
UG9zaXRpb24odHJ1ZSknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG9zaXRpb24oNDIpJywgdHJ1ZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvc2l0aW9uKEluZmluaXR5KScsIHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLmdl
b2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigic3RyaW5nIiknLCB0cnVlKTsKIAogdGVzdCgn
bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1
bmRlZmluZWQpJywgZmFsc2UpOwpAQCAtNTMsNiArNTQsNyBAQCB0ZXN0KCduYXZpZ2F0b3IuZ2Vv
bG9jYXRpb24uZ2V0Q3VycmVudFBvCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIE1hdGguYWJzKScsIGZhbHNlKTsKIHRlc3QoJ25h
dmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdHJ1
ZSknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRp
b24oZW1wdHlGdW5jdGlvbiwgNDIpJywgdHJ1ZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIEluZmluaXR5KScsIHRydWUpOwog
dGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0
aW9uLCAic3RyaW5nIiknLCB0cnVlKTsKIAogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdl
dEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHVuZGVmaW5lZCknLCBm
YWxzZSk7CkBAIC02Miw2ICs2NCw3IEBAIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG8KIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24o
ZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCBlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsKIHRlc3Qo
J25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwg
dW5kZWZpbmVkLCB0cnVlKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5n
ZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCA0MiknLCBmYWxzZSk7
Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVu
Y3Rpb24sIHVuZGVmaW5lZCwgSW5maW5pdHkpJywgZmFsc2UpOwogdGVzdCgnbmF2aWdhdG9yLmdl
b2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsICJz
dHJpbmciKScsIGZhbHNlKTsKIAogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtkdW1teVByb3BlcnR5OnVuZGVm
aW5lZH0pJywgZmFsc2UpOwpAQCAtNzEsNiArNzQsNyBAQCB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9j
YXRpb24uZ2V0Q3VycmVudFBvCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge2R1bW15UHJvcGVydHk6ZW1wdHlG
dW5jdGlvbn0pJywgZmFsc2UpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtkdW1teVByb3BlcnR5OnRydWV9
KScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRp
b24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZHVtbXlQcm9wZXJ0eTo0Mn0pJywgZmFsc2Up
OwordGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1
bmN0aW9uLCB1bmRlZmluZWQsIHtkdW1teVByb3BlcnR5OkluZmluaXR5fSknLCBmYWxzZSk7CiB0
ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rp
b24sIHVuZGVmaW5lZCwge2R1bW15UHJvcGVydHk6InN0cmluZyJ9KScsIGZhbHNlKTsKIAogdGVz
dCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9u
LCB1bmRlZmluZWQsIHtlbmFibGVIaWdoQWNjdXJhY3k6dW5kZWZpbmVkfSknLCBmYWxzZSk7CkBA
IC04MCw2ICs4NCw3IEBAIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG8K
IHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5j
dGlvbiwgdW5kZWZpbmVkLCB7ZW5hYmxlSGlnaEFjY3VyYWN5OmVtcHR5RnVuY3Rpb259KScsIGZh
bHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1w
dHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZW5hYmxlSGlnaEFjY3VyYWN5OnRydWV9KScsIGZhbHNl
KTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlG
dW5jdGlvbiwgdW5kZWZpbmVkLCB7ZW5hYmxlSGlnaEFjY3VyYWN5OjQyfSknLCBmYWxzZSk7Cit0
ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rp
b24sIHVuZGVmaW5lZCwge2VuYWJsZUhpZ2hBY2N1cmFjeTpJbmZpbml0eX0pJywgZmFsc2UpOwog
dGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0
aW9uLCB1bmRlZmluZWQsIHtlbmFibGVIaWdoQWNjdXJhY3k6InN0cmluZyJ9KScsIGZhbHNlKTsK
IAogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1
bmN0aW9uLCB1bmRlZmluZWQsIHttYXhpbXVtQWdlOnVuZGVmaW5lZH0pJywgZmFsc2UpOwpAQCAt
ODksNiArOTQsNyBAQCB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvCiB0
ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rp
b24sIHVuZGVmaW5lZCwge21heGltdW1BZ2U6ZW1wdHlGdW5jdGlvbn0pJywgZmFsc2UpOwogdGVz
dCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9u
LCB1bmRlZmluZWQsIHttYXhpbXVtQWdlOnRydWV9KScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVk
LCB7bWF4aW11bUFnZTo0Mn0pJywgZmFsc2UpOwordGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHttYXhpbXVtQWdl
OkluZmluaXR5fSknLCBmYWxzZSk7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge21heGltdW1BZ2U6InN0cmlu
ZyJ9KScsIGZhbHNlKTsKIAogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQ
b3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHt0aW1lb3V0OnVuZGVmaW5lZH0pJywg
ZmFsc2UpOwpAQCAtOTgsNiArMTA0LDcgQEAgdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdl
dEN1cnJlbnRQbwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHt0aW1lb3V0OmVtcHR5RnVuY3Rpb259KScsIGZh
bHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1w
dHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7dGltZW91dDp0cnVlfSknLCBmYWxzZSk7CiB0ZXN0KCdu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVu
ZGVmaW5lZCwge3RpbWVvdXQ6NDJ9KScsIGZhbHNlKTsKK3Rlc3QoJ25hdmlnYXRvci5nZW9sb2Nh
dGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7dGltZW91
dDpJbmZpbml0eX0pJywgZmFsc2UpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1
cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHt0aW1lb3V0OiJzdHJpbmci
fSknLCBmYWxzZSk7CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="20352"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39315</attachid>
            <date>2009-09-09 17:15:33 -0700</date>
            <delta_ts>2009-09-10 04:10:07 -0700</delta_ts>
            <desc>Patch 2 for bug 29099</desc>
            <filename>handleInfinity2.txt</filename>
            <type>text/plain</type>
            <size>16013</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODIzNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMDktMDkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEdlb2xvY2F0aW9uIGRvZXMgbm90IGNvcnJlY3RseSBoYW5kbGUgSW5maW5pdHkgZm9yIFBvc2l0
aW9uT3B0aW9ucyBwcm9wZXJ0aWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjkwOTkKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwOiBNb2RpZmllZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9u
T3B0aW9ucyk6IE1vZGlmaWVkLiBJZiB0aW1lb3V0IG9yIG1heGltdW1BZ2UgaXMgcG9zaXRpdmUg
aW5maW5pdHksIGFwcGxpZXMgdGhlc2UgdmFsdWVzIGFzIGEgc3BlY2lhbCBjYXNlLgorICAgICAg
ICAqIHBhZ2UvUG9zaXRpb25PcHRpb25zLmg6IE1vZGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb25PcHRpb25zOjpoYXNNYXhpbXVtQWdlKTogQWRkZWQuIERldGVybWluZXMgd2hldGhl
ciB0aGUgb2JqZWN0IGhhcyBhIG1heGltdW0gYWdlLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b25PcHRpb25zOjptYXhpbXVtQWdlKTogTW9kaWZpZWQuIEFzc2VydHMgdGhhdCB0aGUgb2JqZWN0
IGhhcyBhIG1heGltdW0gYWdlLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpj
bGVhck1heGltdW1BZ2UpOiBBZGRlZC4gQ2xlYXJzIHRoZSBtYXhpbXVtIGFnZS4KKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6c2V0TWF4aW11bUFnZSk6IE1vZGlmaWVkLiBSZWdp
c3RlcnMgdGhhdCB0aGUgbWF4aW11bSBhZ2UgaGFzIGJlZW4gc2V0LgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb25PcHRpb25zOjpQb3NpdGlvbk9wdGlvbnMpOiBNb2RpZmllZC4gUmVnaXN0ZXJz
IHRoYXQgdGhlIG1heGltdW0gYWdlIGhhcyBiZWVuIHNldC4KKwogMjAwOS0wNy0zMCAgRXJpYyBT
ZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gNDgyMTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMjAgKzEwMiwzNCBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxQb3NpdGlvbk9wdGlvbnM+IGNyZWF0CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIXRpbWVvdXRWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7Ci0gICAgICAgIC8vIFdyYXAgdG8gaW50MzIgYW5kIGZvcmNlIG5vbi1uZWdhdGl2ZSB0byBt
YXRjaCBiZWhhdmlvciBvZiB3aW5kb3cuc2V0VGltZW91dC4KLSAgICAgICAgb3B0aW9ucy0+c2V0
VGltZW91dChtYXgoMCwgdGltZW91dFZhbHVlLnRvSW50MzIoZXhlYykpKTsKKyAgICAgICAgZG91
YmxlIHRpbWVvdXROdW1iZXIgPSB0aW1lb3V0VmFsdWUudG9OdW1iZXIoZXhlYyk7CiAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAvLyBJZiB0aGUgdmFsdWUgaXMgcG9zaXRpdmUgaW5maW5pdHksIHRoZXJlJ3Mgbm90aGluZyB0
byBkby4KKyAgICAgICAgaWYgKCEoaXNpbmYodGltZW91dE51bWJlcikgJiYgKHRpbWVvdXROdW1i
ZXIgPiAwKSkpIHsKKyAgICAgICAgICAgIC8vIFdyYXAgdG8gaW50MzIgYW5kIGZvcmNlIG5vbi1u
ZWdhdGl2ZSB0byBtYXRjaCBiZWhhdmlvciBvZiB3aW5kb3cuc2V0VGltZW91dC4KKyAgICAgICAg
ICAgIG9wdGlvbnMtPnNldFRpbWVvdXQobWF4KDAsIHRpbWVvdXRWYWx1ZS50b0ludDMyKGV4ZWMp
KSk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICB9CiAKICAgICBKU1ZhbHVlIG1heGltdW1BZ2VW
YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgIm1heGltdW1BZ2UiKSk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBp
ZiAoIW1heGltdW1BZ2VWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIC8vIFdyYXAgdG8g
aW50MzIgYW5kIGZvcmNlIG5vbi1uZWdhdGl2ZSB0byBtYXRjaCBiZWhhdmlvciBvZiB3aW5kb3cu
c2V0VGltZW91dC4KLSAgICAgICAgb3B0aW9ucy0+c2V0TWF4aW11bUFnZShtYXgoMCwgbWF4aW11
bUFnZVZhbHVlLnRvSW50MzIoZXhlYykpKTsKKyAgICAgICAgZG91YmxlIG1heGltdW1BZ2VOdW1i
ZXIgPSBtYXhpbXVtQWdlVmFsdWUudG9OdW1iZXIoZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoaXNpbmYo
bWF4aW11bUFnZU51bWJlcikgJiYgKG1heGltdW1BZ2VOdW1iZXIgPiAwKSkgeworICAgICAgICAg
ICAgLy8gSWYgdGhlIHZhbHVlIGlzIHBvc2l0aXZlIGluZmluaXR5LCBjbGVhciBtYXhpbXVtQWdl
LgorICAgICAgICAgICAgb3B0aW9ucy0+Y2xlYXJNYXhpbXVtQWdlKCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAvLyBXcmFwIHRvIGludDMyIGFuZCBmb3JjZSBub24tbmVnYXRpdmUg
dG8gbWF0Y2ggYmVoYXZpb3Igb2Ygd2luZG93LnNldFRpbWVvdXQuCisgICAgICAgICAgICBvcHRp
b25zLT5zZXRNYXhpbXVtQWdlKG1heCgwLCBtYXhpbXVtQWdlVmFsdWUudG9JbnQzMihleGVjKSkp
OworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIG9wdGlvbnMucmVsZWFz
ZSgpOwpJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaAkocmV2aXNpb24gNDgyMTgpCisrKyBXZWJD
b3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwx
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1faGFzVGltZW91dCA9IHRydWU7CiAgICAgICAgIG1fdGlt
ZW91dCA9IHRpbWVvdXQ7CiAgICAgfQotICAgIGludCBtYXhpbXVtQWdlKCkgY29uc3QgeyByZXR1
cm4gbV9tYXhpbXVtQWdlOyB9CisgICAgYm9vbCBoYXNNYXhpbXVtQWdlKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNNYXhpbXVtQWdlOyB9CisgICAgaW50IG1heGltdW1BZ2UoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKGhhc01heGltdW1BZ2UoKSk7CisgICAgICAgIHJldHVybiBtX21heGlt
dW1BZ2U7CisgICAgfQorICAgIHZvaWQgY2xlYXJNYXhpbXVtQWdlKCkgeyBtX2hhc01heGltdW1B
Z2UgPSBmYWxzZTsgfQogICAgIHZvaWQgc2V0TWF4aW11bUFnZShpbnQgYWdlKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGFnZSA+PSAwKTsKKyAgICAgICAgbV9oYXNNYXhpbXVtQWdlID0gdHJ1ZTsK
ICAgICAgICAgbV9tYXhpbXVtQWdlID0gYWdlOwogICAgIH0KICAgICAKQEAgLTYwLDEzICs2Nywx
NCBAQCBwcml2YXRlOgogICAgIFBvc2l0aW9uT3B0aW9ucygpCiAgICAgICAgIDogbV9oaWdoQWNj
dXJhY3koZmFsc2UpCiAgICAgICAgICwgbV9oYXNUaW1lb3V0KGZhbHNlKQotICAgICAgICAsIG1f
bWF4aW11bUFnZSgwKQogICAgIHsKKyAgICAgICAgc2V0TWF4aW11bUFnZSgwKTsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBtX2hpZ2hBY2N1cmFjeTsKICAgICBib29sIG1faGFzVGltZW91dDsKICAg
ICBpbnQgbV90aW1lb3V0OworICAgIGJvb2wgbV9oYXNNYXhpbXVtQWdlOwogICAgIGludCBtX21h
eGltdW1BZ2U7CiB9OwogICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDgyMzYpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wOS0w
OSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VvbG9jYXRpb24gZG9lcyBub3QgY29y
cmVjdGx5IGhhbmRsZSBJbmZpbml0eSBmb3IgUG9zaXRpb25PcHRpb25zIHByb3BlcnRpZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTA5OQorCisg
ICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2FyZ3VtZW50LXR5cGVzLmpz
OiBNb2RpZmllZC4gVGVzdCBwYXNzaW5nIEluZmluaXR5IHRvIEdlb2xvY2F0aW9uIG1ldGhvZHMu
CisgICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMtZXhwZWN0ZWQu
dHh0OiBNb2RpZmllZC4gRXhwZWN0ZWQgcmVzdWx0IGZvciBhYm92ZSB0ZXN0LgorCiAyMDA5LTA5
LTA5ICBKZW5zIEFsZmtlICA8c25lakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9h
cmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0
ODIxOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2FyZ3VtZW50LXR5cGVz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsNyBAQCBQQVNTIG5hdmln
YXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24oTWF0aC5hYnMpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgog
UEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKHRydWUpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQ
QVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oNDIpIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCitQQVNT
IG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oSW5maW5pdHkpIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQ
QVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oInN0cmluZyIpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
CiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5j
dGlvbiwgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9y
Lmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCBudWxsKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KQEAgLTIxLDYgKzIyLDcgQEAgUEFTUyBuYXZpZ2F0b3IuZ2Vv
bG9jYXRpb24uZ2V0Q3VycmVudFBvcwogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIE1hdGguYWJzKSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0
eUZ1bmN0aW9uLCB0cnVlKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIDQyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVf
TUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIEluZmluaXR5KSB0aHJldyBleGNl
cHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sICJz
dHJpbmciKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhj
ZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0
eUZ1bmN0aW9uLCB1bmRlZmluZWQsIG51bGwpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgpAQCAt
MjksNiArMzEsNyBAQCBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zCiBQ
QVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlv
biwgdW5kZWZpbmVkLCBlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBB
U1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9u
LCB1bmRlZmluZWQsIHRydWUpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0
b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5l
ZCwgNDIpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwgSW5maW5pdHkp
IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0
Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwgInN0cmluZyIpIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge2R1bW15UHJvcGVydHk6dW5kZWZp
bmVkfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZHVtbXlQcm9w
ZXJ0eTpudWxsfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCkBAIC0zNyw2ICs0MCw3IEBAIFBB
U1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3MKIFBBU1MgbmF2aWdhdG9yLmdl
b2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtk
dW1teVByb3BlcnR5OmVtcHR5RnVuY3Rpb259KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBB
U1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9u
LCB1bmRlZmluZWQsIHtkdW1teVByb3BlcnR5OnRydWV9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1
bmN0aW9uLCB1bmRlZmluZWQsIHtkdW1teVByb3BlcnR5OjQyfSkgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCitQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1w
dHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZHVtbXlQcm9wZXJ0eTpJbmZpbml0eX0pIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBv
c2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge2R1bW15UHJvcGVydHk6InN0cmluZyJ9
KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdl
dEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtlbmFibGVIaWdoQWNj
dXJhY3k6dW5kZWZpbmVkfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVk
LCB7ZW5hYmxlSGlnaEFjY3VyYWN5Om51bGx9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KQEAg
LTQ1LDYgKzQ5LDcgQEAgUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvcwog
UEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rp
b24sIHVuZGVmaW5lZCwge2VuYWJsZUhpZ2hBY2N1cmFjeTplbXB0eUZ1bmN0aW9ufSkgZGlkIG5v
dCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50
UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZW5hYmxlSGlnaEFjY3VyYWN5OnRy
dWV9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtlbmFibGVIaWdo
QWNjdXJhY3k6NDJ9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLmdl
b2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtl
bmFibGVIaWdoQWNjdXJhY3k6SW5maW5pdHl9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBB
U1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9u
LCB1bmRlZmluZWQsIHtlbmFibGVIaWdoQWNjdXJhY3k6InN0cmluZyJ9KSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHttYXhpbXVtQWdlOnVuZGVmaW5lZH0pIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge21heGltdW1BZ2U6bnVsbH0pIGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgpAQCAtNTMsNiArNTgsNyBAQCBQQVNTIG5hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7bWF4aW11bUFnZTplbXB0
eUZ1bmN0aW9ufSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9s
b2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7bWF4
aW11bUFnZTp0cnVlfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7
bWF4aW11bUFnZTo0Mn0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwg
e21heGltdW1BZ2U6SW5maW5pdHl9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2
aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRl
ZmluZWQsIHttYXhpbXVtQWdlOiJzdHJpbmcifSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQ
QVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlv
biwgdW5kZWZpbmVkLCB7dGltZW91dDp1bmRlZmluZWR9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1
bmN0aW9uLCB1bmRlZmluZWQsIHt0aW1lb3V0Om51bGx9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KQEAgLTYxLDYgKzY3LDcgQEAgUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvcwogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5
RnVuY3Rpb24sIHVuZGVmaW5lZCwge3RpbWVvdXQ6ZW1wdHlGdW5jdGlvbn0pIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge3RpbWVvdXQ6dHJ1ZX0pIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge3RpbWVvdXQ6NDJ9KSBkaWQgbm90IHRocm93
IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHt0aW1lb3V0OkluZmluaXR5fSkgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9z
aXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7dGltZW91dDoic3RyaW5nIn0pIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvYXJndW1lbnQt
dHlwZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24v
cmVzb3VyY2VzL2FyZ3VtZW50LXR5cGVzLmpzCShyZXZpc2lvbiA0ODIxOCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL3Jlc291cmNlcy9hcmd1bWVudC10eXBlcy5qcwkod29y
a2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uKE1hdGguYWJzKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG9zaXRpb24odHJ1ZSknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG9zaXRpb24oNDIpJywgdHJ1ZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9j
YXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKEluZmluaXR5KScsIHRydWUpOwogdGVzdCgnbmF2aWdh
dG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigic3RyaW5nIiknLCB0cnVlKTsKIAog
dGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0
aW9uLCB1bmRlZmluZWQpJywgZmFsc2UpOwpAQCAtNTMsNiArNTQsNyBAQCB0ZXN0KCduYXZpZ2F0
b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIE1hdGguYWJzKScsIGZhbHNlKTsKIHRl
c3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlv
biwgdHJ1ZSknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50
UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgNDIpJywgdHJ1ZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2Vv
bG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIEluZmluaXR5KScsIHRy
dWUpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0
eUZ1bmN0aW9uLCAic3RyaW5nIiknLCB0cnVlKTsKIAogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0
aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHVuZGVmaW5l
ZCknLCBmYWxzZSk7CkBAIC02Miw2ICs2NCw3IEBAIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlv
bi5nZXRDdXJyZW50UG8KIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9z
aXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCBlbXB0eUZ1bmN0aW9uKScsIGZhbHNlKTsK
IHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5j
dGlvbiwgdW5kZWZpbmVkLCB0cnVlKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2Nh
dGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCA0MiknLCBm
YWxzZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVt
cHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwgSW5maW5pdHkpJywgZmFsc2UpOwogdGVzdCgnbmF2aWdh
dG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmlu
ZWQsICJzdHJpbmciKScsIGZhbHNlKTsKIAogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdl
dEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtkdW1teVByb3BlcnR5
OnVuZGVmaW5lZH0pJywgZmFsc2UpOwpAQCAtNzEsNiArNzQsNyBAQCB0ZXN0KCduYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0
Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge2R1bW15UHJvcGVydHk6
ZW1wdHlGdW5jdGlvbn0pJywgZmFsc2UpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdl
dEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtkdW1teVByb3BlcnR5
OnRydWV9KScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50
UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZHVtbXlQcm9wZXJ0eTo0Mn0pJywg
ZmFsc2UpOwordGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihl
bXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtkdW1teVByb3BlcnR5OkluZmluaXR5fSknLCBmYWxz
ZSk7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5
RnVuY3Rpb24sIHVuZGVmaW5lZCwge2R1bW15UHJvcGVydHk6InN0cmluZyJ9KScsIGZhbHNlKTsK
IAogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1
bmN0aW9uLCB1bmRlZmluZWQsIHtlbmFibGVIaWdoQWNjdXJhY3k6dW5kZWZpbmVkfSknLCBmYWxz
ZSk7CkBAIC04MCw2ICs4NCw3IEBAIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJy
ZW50UG8KIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1w
dHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZW5hYmxlSGlnaEFjY3VyYWN5OmVtcHR5RnVuY3Rpb259
KScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRp
b24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZW5hYmxlSGlnaEFjY3VyYWN5OnRydWV9KScs
IGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24o
ZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZW5hYmxlSGlnaEFjY3VyYWN5OjQyfSknLCBmYWxz
ZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5
RnVuY3Rpb24sIHVuZGVmaW5lZCwge2VuYWJsZUhpZ2hBY2N1cmFjeTpJbmZpbml0eX0pJywgZmFs
c2UpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0
eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtlbmFibGVIaWdoQWNjdXJhY3k6InN0cmluZyJ9KScsIGZh
bHNlKTsKIAogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihl
bXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHttYXhpbXVtQWdlOnVuZGVmaW5lZH0pJywgZmFsc2Up
OwpAQCAtODksNiArOTQsNyBAQCB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5
RnVuY3Rpb24sIHVuZGVmaW5lZCwge21heGltdW1BZ2U6ZW1wdHlGdW5jdGlvbn0pJywgZmFsc2Up
OwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1
bmN0aW9uLCB1bmRlZmluZWQsIHttYXhpbXVtQWdlOnRydWV9KScsIGZhbHNlKTsKIHRlc3QoJ25h
dmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5k
ZWZpbmVkLCB7bWF4aW11bUFnZTo0Mn0pJywgZmFsc2UpOwordGVzdCgnbmF2aWdhdG9yLmdlb2xv
Y2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHttYXhp
bXVtQWdlOkluZmluaXR5fSknLCBmYWxzZSk7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge21heGltdW1BZ2U6
InN0cmluZyJ9KScsIGZhbHNlKTsKIAogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1
cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHt0aW1lb3V0OnVuZGVmaW5l
ZH0pJywgZmFsc2UpOwpAQCAtOTgsNiArMTA0LDcgQEAgdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0
aW9uLmdldEN1cnJlbnRQbwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQ
b3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHt0aW1lb3V0OmVtcHR5RnVuY3Rpb259
KScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRp
b24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7dGltZW91dDp0cnVlfSknLCBmYWxzZSk7CiB0
ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rp
b24sIHVuZGVmaW5lZCwge3RpbWVvdXQ6NDJ9KScsIGZhbHNlKTsKK3Rlc3QoJ25hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7
dGltZW91dDpJbmZpbml0eX0pJywgZmFsc2UpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHt0aW1lb3V0OiJz
dHJpbmcifSknLCBmYWxzZSk7CiAKIHZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="20399"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39339</attachid>
            <date>2009-09-10 04:10:07 -0700</date>
            <delta_ts>2009-09-18 02:35:29 -0700</delta_ts>
            <desc>Patch 3 for bug 29099</desc>
            <filename>handleInfinity3.txt</filename>
            <type>text/plain</type>
            <size>17577</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODIzNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMDktMDkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEdlb2xvY2F0aW9uIGRvZXMgbm90IGNvcnJlY3RseSBoYW5kbGUgSW5maW5pdHkgZm9yIFBvc2l0
aW9uT3B0aW9ucyBwcm9wZXJ0aWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjkwOTkKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwOiBNb2RpZmllZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVBvc2l0aW9u
T3B0aW9ucyk6IE1vZGlmaWVkLiBJZiB0aW1lb3V0IG9yIG1heGltdW1BZ2UgaXMgcG9zaXRpdmUg
aW5maW5pdHksIGFwcGxpZXMgdGhlc2UgdmFsdWVzIGFzIGEgc3BlY2lhbCBjYXNlLgorICAgICAg
ICAqIHBhZ2UvUG9zaXRpb25PcHRpb25zLmg6IE1vZGlmaWVkLgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb25PcHRpb25zOjpoYXNNYXhpbXVtQWdlKTogQWRkZWQuIERldGVybWluZXMgd2hldGhl
ciB0aGUgb2JqZWN0IGhhcyBhIG1heGltdW0gYWdlLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b25PcHRpb25zOjptYXhpbXVtQWdlKTogTW9kaWZpZWQuIEFzc2VydHMgdGhhdCB0aGUgb2JqZWN0
IGhhcyBhIG1heGltdW0gYWdlLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpj
bGVhck1heGltdW1BZ2UpOiBBZGRlZC4gQ2xlYXJzIHRoZSBtYXhpbXVtIGFnZS4KKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6c2V0TWF4aW11bUFnZSk6IE1vZGlmaWVkLiBSZWdp
c3RlcnMgdGhhdCB0aGUgbWF4aW11bSBhZ2UgaGFzIGJlZW4gc2V0LgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb25PcHRpb25zOjpQb3NpdGlvbk9wdGlvbnMpOiBNb2RpZmllZC4gUmVnaXN0ZXJz
IHRoYXQgdGhlIG1heGltdW0gYWdlIGhhcyBiZWVuIHNldC4KKwogMjAwOS0wNy0zMCAgRXJpYyBT
ZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0
aC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gNDgyMTgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMjAgKzEwMiwzNCBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxQb3NpdGlvbk9wdGlvbnM+IGNyZWF0CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIXRpbWVvdXRWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7Ci0gICAgICAgIC8vIFdyYXAgdG8gaW50MzIgYW5kIGZvcmNlIG5vbi1uZWdhdGl2ZSB0byBt
YXRjaCBiZWhhdmlvciBvZiB3aW5kb3cuc2V0VGltZW91dC4KLSAgICAgICAgb3B0aW9ucy0+c2V0
VGltZW91dChtYXgoMCwgdGltZW91dFZhbHVlLnRvSW50MzIoZXhlYykpKTsKKyAgICAgICAgZG91
YmxlIHRpbWVvdXROdW1iZXIgPSB0aW1lb3V0VmFsdWUudG9OdW1iZXIoZXhlYyk7CiAgICAgICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiAwOworICAgICAg
ICAvLyBJZiB0aGUgdmFsdWUgaXMgcG9zaXRpdmUgaW5maW5pdHksIHRoZXJlJ3Mgbm90aGluZyB0
byBkby4KKyAgICAgICAgaWYgKCEoaXNpbmYodGltZW91dE51bWJlcikgJiYgKHRpbWVvdXROdW1i
ZXIgPiAwKSkpIHsKKyAgICAgICAgICAgIC8vIFdyYXAgdG8gaW50MzIgYW5kIGZvcmNlIG5vbi1u
ZWdhdGl2ZSB0byBtYXRjaCBiZWhhdmlvciBvZiB3aW5kb3cuc2V0VGltZW91dC4KKyAgICAgICAg
ICAgIG9wdGlvbnMtPnNldFRpbWVvdXQobWF4KDAsIHRpbWVvdXRWYWx1ZS50b0ludDMyKGV4ZWMp
KSk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICB9CiAKICAgICBKU1ZhbHVlIG1heGltdW1BZ2VW
YWx1ZSA9IG9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgIm1heGltdW1BZ2UiKSk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gMDsKICAgICBp
ZiAoIW1heGltdW1BZ2VWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIC8vIFdyYXAgdG8g
aW50MzIgYW5kIGZvcmNlIG5vbi1uZWdhdGl2ZSB0byBtYXRjaCBiZWhhdmlvciBvZiB3aW5kb3cu
c2V0VGltZW91dC4KLSAgICAgICAgb3B0aW9ucy0+c2V0TWF4aW11bUFnZShtYXgoMCwgbWF4aW11
bUFnZVZhbHVlLnRvSW50MzIoZXhlYykpKTsKKyAgICAgICAgZG91YmxlIG1heGltdW1BZ2VOdW1i
ZXIgPSBtYXhpbXVtQWdlVmFsdWUudG9OdW1iZXIoZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoaXNpbmYo
bWF4aW11bUFnZU51bWJlcikgJiYgKG1heGltdW1BZ2VOdW1iZXIgPiAwKSkgeworICAgICAgICAg
ICAgLy8gSWYgdGhlIHZhbHVlIGlzIHBvc2l0aXZlIGluZmluaXR5LCBjbGVhciBtYXhpbXVtQWdl
LgorICAgICAgICAgICAgb3B0aW9ucy0+Y2xlYXJNYXhpbXVtQWdlKCk7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAvLyBXcmFwIHRvIGludDMyIGFuZCBmb3JjZSBub24tbmVnYXRpdmUg
dG8gbWF0Y2ggYmVoYXZpb3Igb2Ygd2luZG93LnNldFRpbWVvdXQuCisgICAgICAgICAgICBvcHRp
b25zLT5zZXRNYXhpbXVtQWdlKG1heCgwLCBtYXhpbXVtQWdlVmFsdWUudG9JbnQzMihleGVjKSkp
OworICAgICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIG9wdGlvbnMucmVsZWFz
ZSgpOwpJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaAkocmV2aXNpb24gNDgyMTgpCisrKyBXZWJD
b3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwx
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1faGFzVGltZW91dCA9IHRydWU7CiAgICAgICAgIG1fdGlt
ZW91dCA9IHRpbWVvdXQ7CiAgICAgfQotICAgIGludCBtYXhpbXVtQWdlKCkgY29uc3QgeyByZXR1
cm4gbV9tYXhpbXVtQWdlOyB9CisgICAgYm9vbCBoYXNNYXhpbXVtQWdlKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNNYXhpbXVtQWdlOyB9CisgICAgaW50IG1heGltdW1BZ2UoKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUKGhhc01heGltdW1BZ2UoKSk7CisgICAgICAgIHJldHVybiBtX21heGlt
dW1BZ2U7CisgICAgfQorICAgIHZvaWQgY2xlYXJNYXhpbXVtQWdlKCkgeyBtX2hhc01heGltdW1B
Z2UgPSBmYWxzZTsgfQogICAgIHZvaWQgc2V0TWF4aW11bUFnZShpbnQgYWdlKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKGFnZSA+PSAwKTsKKyAgICAgICAgbV9oYXNNYXhpbXVtQWdlID0gdHJ1ZTsK
ICAgICAgICAgbV9tYXhpbXVtQWdlID0gYWdlOwogICAgIH0KICAgICAKQEAgLTYwLDEzICs2Nywx
NCBAQCBwcml2YXRlOgogICAgIFBvc2l0aW9uT3B0aW9ucygpCiAgICAgICAgIDogbV9oaWdoQWNj
dXJhY3koZmFsc2UpCiAgICAgICAgICwgbV9oYXNUaW1lb3V0KGZhbHNlKQotICAgICAgICAsIG1f
bWF4aW11bUFnZSgwKQogICAgIHsKKyAgICAgICAgc2V0TWF4aW11bUFnZSgwKTsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBtX2hpZ2hBY2N1cmFjeTsKICAgICBib29sIG1faGFzVGltZW91dDsKICAg
ICBpbnQgbV90aW1lb3V0OworICAgIGJvb2wgbV9oYXNNYXhpbXVtQWdlOwogICAgIGludCBtX21h
eGltdW1BZ2U7CiB9OwogICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDgyMzYpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wOS0w
OSAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VvbG9jYXRpb24gZG9lcyBub3QgY29y
cmVjdGx5IGhhbmRsZSBJbmZpbml0eSBmb3IgUG9zaXRpb25PcHRpb25zIHByb3BlcnRpZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTA5OQorCisg
ICAgICAgICogZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2VzL2FyZ3VtZW50LXR5cGVzLmpz
OiBNb2RpZmllZC4gVGVzdCBwYXNzaW5nIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBJbmZpbml0eSB0
byBHZW9sb2NhdGlvbiBtZXRob2RzLgorICAgICAgICAqIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2Fy
Z3VtZW50LXR5cGVzLWV4cGVjdGVkLnR4dDogTW9kaWZpZWQuIEV4cGVjdGVkIHJlc3VsdCBmb3Ig
YWJvdmUgdGVzdC4KKwogMjAwOS0wOS0wOSAgSmVucyBBbGZrZSAgPHNuZWpAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0aW9uL2FyZ3VtZW50LXR5cGVzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNDgyMTgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9HZW9s
b2NhdGlvbi9hcmd1bWVudC10eXBlcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEy
LDYgKzEyLDggQEAgUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvcwogUEFT
UyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKE1hdGguYWJzKSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbih0cnVlKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvc2l0aW9uKDQyKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBE
T00gRXhjZXB0aW9uIDE3LgorUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBv
c2l0aW9uKEluZmluaXR5KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJS
OiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvc2l0aW9uKC1JbmZpbml0eSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01BVENI
X0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1
cnJlbnRQb3NpdGlvbigic3RyaW5nIikgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdl
dEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGVtcHR5RnVuY3Rpb24sIG51bGwpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgpAQCAtMjEsNiAr
MjMsOCBAQCBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zCiBQQVNTIG5h
dmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgTWF0
aC5hYnMpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHRydWUpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIG5hdmln
YXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgNDIpIHRo
cmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcu
CitQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5j
dGlvbiwgSW5maW5pdHkpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6
IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50
UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgLUluZmluaXR5KSB0aHJldyBleGNlcHRpb24gRXJyb3I6
IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBuYXZpZ2F0b3IuZ2Vv
bG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sICJzdHJpbmciKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFRZUEVfTUlTTUFUQ0hfRVJSOiBET00gRXhjZXB0aW9uIDE3Lgog
UEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rp
b24sIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1Mg
bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1
bmRlZmluZWQsIG51bGwpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgpAQCAtMjksNiArMzMsOCBA
QCBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zCiBQQVNTIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVk
LCBlbXB0eUZ1bmN0aW9uKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9y
Lmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQs
IHRydWUpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwgNDIpIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwgSW5maW5pdHkpIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgorUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwgLUluZmluaXR5KSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihl
bXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsICJzdHJpbmciKSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1
bmN0aW9uLCB1bmRlZmluZWQsIHtkdW1teVByb3BlcnR5OnVuZGVmaW5lZH0pIGRpZCBub3QgdGhy
b3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0
aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge2R1bW15UHJvcGVydHk6bnVsbH0pIGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgpAQCAtMzcsNiArNDMsOCBAQCBQQVNTIG5hdmlnYXRvci5nZW9s
b2NhdGlvbi5nZXRDdXJyZW50UG9zCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJy
ZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZHVtbXlQcm9wZXJ0eTplbXB0
eUZ1bmN0aW9ufSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9s
b2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZHVt
bXlQcm9wZXJ0eTp0cnVlfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVk
LCB7ZHVtbXlQcm9wZXJ0eTo0Mn0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBuYXZp
Z2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVm
aW5lZCwge2R1bW15UHJvcGVydHk6SW5maW5pdHl9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
K1BBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0
aW9uLCB1bmRlZmluZWQsIHtkdW1teVByb3BlcnR5Oi1JbmZpbml0eX0pIGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge2R1bW15UHJvcGVydHk6InN0cmluZyJ9KSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtlbmFibGVIaWdoQWNjdXJhY3k6
dW5kZWZpbmVkfSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9s
b2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZW5h
YmxlSGlnaEFjY3VyYWN5Om51bGx9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KQEAgLTQ1LDYg
KzUzLDggQEAgUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvcwogUEFTUyBu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVu
ZGVmaW5lZCwge2VuYWJsZUhpZ2hBY2N1cmFjeTplbXB0eUZ1bmN0aW9ufSkgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRp
b24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZW5hYmxlSGlnaEFjY3VyYWN5OnRydWV9KSBk
aWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1
cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtlbmFibGVIaWdoQWNjdXJh
Y3k6NDJ9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLmdlb2xvY2F0
aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHtlbmFibGVI
aWdoQWNjdXJhY3k6SW5maW5pdHl9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2
aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRl
ZmluZWQsIHtlbmFibGVIaWdoQWNjdXJhY3k6LUluZmluaXR5fSkgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1w
dHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZW5hYmxlSGlnaEFjY3VyYWN5OiJzdHJpbmcifSkgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJy
ZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7bWF4aW11bUFnZTp1bmRlZmlu
ZWR9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHttYXhpbXVtQWdl
Om51bGx9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KQEAgLTUzLDYgKzYzLDggQEAgUEFTUyBu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvcwogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9j
YXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge21heGlt
dW1BZ2U6ZW1wdHlGdW5jdGlvbn0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZp
Z2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVm
aW5lZCwge21heGltdW1BZ2U6dHJ1ZX0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVu
ZGVmaW5lZCwge21heGltdW1BZ2U6NDJ9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1Mg
bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1
bmRlZmluZWQsIHttYXhpbXVtQWdlOkluZmluaXR5fSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5j
dGlvbiwgdW5kZWZpbmVkLCB7bWF4aW11bUFnZTotSW5maW5pdHl9KSBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihl
bXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHttYXhpbXVtQWdlOiJzdHJpbmcifSkgZGlkIG5vdCB0
aHJvdyBleGNlcHRpb24uCiBQQVNTIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9z
aXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7dGltZW91dDp1bmRlZmluZWR9KSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHt0aW1lb3V0Om51bGx9KSBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KQEAgLTYxLDYgKzczLDggQEAgUEFTUyBuYXZpZ2F0b3IuZ2Vv
bG9jYXRpb24uZ2V0Q3VycmVudFBvcwogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3Vy
cmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge3RpbWVvdXQ6ZW1wdHlGdW5j
dGlvbn0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge3RpbWVvdXQ6
dHJ1ZX0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge3RpbWVvdXQ6
NDJ9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgbmF2aWdhdG9yLmdlb2xvY2F0aW9u
LmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHt0aW1lb3V0Oklu
ZmluaXR5fSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIG5hdmlnYXRvci5nZW9sb2Nh
dGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7dGltZW91
dDotSW5maW5pdHl9KSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgbmF2aWdhdG9yLmdl
b2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHt0
aW1lb3V0OiJzdHJpbmcifSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL0dlb2xvY2F0
aW9uL3Jlc291cmNlcy9hcmd1bWVudC10eXBlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9HZW9sb2NhdGlvbi9yZXNvdXJjZXMvYXJndW1lbnQtdHlwZXMuanMJKHJldmlz
aW9uIDQ4MjE4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vcmVzb3VyY2Vz
L2FyZ3VtZW50LXR5cGVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw4IEBAIHRlc3Qo
J25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG8KIHRlc3QoJ25hdmlnYXRvci5nZW9s
b2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oTWF0aC5hYnMpJywgZmFsc2UpOwogdGVzdCgnbmF2
aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbih0cnVlKScsIHRydWUpOwogdGVz
dCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbig0MiknLCB0cnVlKTsK
K3Rlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oSW5maW5pdHkp
JywgdHJ1ZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KC1JbmZpbml0eSknLCB0cnVlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJy
ZW50UG9zaXRpb24oInN0cmluZyIpJywgdHJ1ZSk7CiAKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2Nh
dGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkKScsIGZhbHNl
KTsKQEAgLTUzLDYgKzU1LDggQEAgdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJl
bnRQbwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0
eUZ1bmN0aW9uLCBNYXRoLmFicyknLCBmYWxzZSk7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHRydWUpJywgdHJ1ZSk7CiB0ZXN0
KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24s
IDQyKScsIHRydWUpOwordGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3Np
dGlvbihlbXB0eUZ1bmN0aW9uLCBJbmZpbml0eSknLCB0cnVlKTsKK3Rlc3QoJ25hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgLUluZmluaXR5KScs
IHRydWUpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihl
bXB0eUZ1bmN0aW9uLCAic3RyaW5nIiknLCB0cnVlKTsKIAogdGVzdCgnbmF2aWdhdG9yLmdlb2xv
Y2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHVuZGVm
aW5lZCknLCBmYWxzZSk7CkBAIC02Miw2ICs2Niw4IEBAIHRlc3QoJ25hdmlnYXRvci5nZW9sb2Nh
dGlvbi5nZXRDdXJyZW50UG8KIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50
UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCBlbXB0eUZ1bmN0aW9uKScsIGZhbHNl
KTsKIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlG
dW5jdGlvbiwgdW5kZWZpbmVkLCB0cnVlKScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRvci5nZW9s
b2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCA0Mikn
LCBmYWxzZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwgSW5maW5pdHkpJywgZmFsc2UpOwordGVzdCgnbmF2
aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRl
ZmluZWQsIC1JbmZpbml0eSknLCBmYWxzZSk7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
Z2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwgInN0cmluZyIpJywg
ZmFsc2UpOwogCiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge2R1bW15UHJvcGVydHk6dW5kZWZpbmVkfSknLCBm
YWxzZSk7CkBAIC03MSw2ICs3Nyw4IEBAIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRD
dXJyZW50UG8KIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24o
ZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7ZHVtbXlQcm9wZXJ0eTplbXB0eUZ1bmN0aW9ufSkn
LCBmYWxzZSk7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9u
KGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge2R1bW15UHJvcGVydHk6dHJ1ZX0pJywgZmFsc2Up
OwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1
bmN0aW9uLCB1bmRlZmluZWQsIHtkdW1teVByb3BlcnR5OjQyfSknLCBmYWxzZSk7Cit0ZXN0KCdu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVu
ZGVmaW5lZCwge2R1bW15UHJvcGVydHk6SW5maW5pdHl9KScsIGZhbHNlKTsKK3Rlc3QoJ25hdmln
YXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZp
bmVkLCB7ZHVtbXlQcm9wZXJ0eTotSW5maW5pdHl9KScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVk
LCB7ZHVtbXlQcm9wZXJ0eToic3RyaW5nIn0pJywgZmFsc2UpOwogCiB0ZXN0KCduYXZpZ2F0b3Iu
Z2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwg
e2VuYWJsZUhpZ2hBY2N1cmFjeTp1bmRlZmluZWR9KScsIGZhbHNlKTsKQEAgLTgwLDYgKzg4LDgg
QEAgdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQbwogdGVzdCgnbmF2aWdh
dG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmlu
ZWQsIHtlbmFibGVIaWdoQWNjdXJhY3k6ZW1wdHlGdW5jdGlvbn0pJywgZmFsc2UpOwogdGVzdCgn
bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1
bmRlZmluZWQsIHtlbmFibGVIaWdoQWNjdXJhY3k6dHJ1ZX0pJywgZmFsc2UpOwogdGVzdCgnbmF2
aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRl
ZmluZWQsIHtlbmFibGVIaWdoQWNjdXJhY3k6NDJ9KScsIGZhbHNlKTsKK3Rlc3QoJ25hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVk
LCB7ZW5hYmxlSGlnaEFjY3VyYWN5OkluZmluaXR5fSknLCBmYWxzZSk7Cit0ZXN0KCduYXZpZ2F0
b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5l
ZCwge2VuYWJsZUhpZ2hBY2N1cmFjeTotSW5maW5pdHl9KScsIGZhbHNlKTsKIHRlc3QoJ25hdmln
YXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZp
bmVkLCB7ZW5hYmxlSGlnaEFjY3VyYWN5OiJzdHJpbmcifSknLCBmYWxzZSk7CiAKIHRlc3QoJ25h
dmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5k
ZWZpbmVkLCB7bWF4aW11bUFnZTp1bmRlZmluZWR9KScsIGZhbHNlKTsKQEAgLTg5LDYgKzk5LDgg
QEAgdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQbwogdGVzdCgnbmF2aWdh
dG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmlu
ZWQsIHttYXhpbXVtQWdlOmVtcHR5RnVuY3Rpb259KScsIGZhbHNlKTsKIHRlc3QoJ25hdmlnYXRv
ci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVk
LCB7bWF4aW11bUFnZTp0cnVlfSknLCBmYWxzZSk7CiB0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge21heGltdW1B
Z2U6NDJ9KScsIGZhbHNlKTsKK3Rlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50
UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7bWF4aW11bUFnZTpJbmZpbml0eX0p
JywgZmFsc2UpOwordGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHttYXhpbXVtQWdlOi1JbmZpbml0eX0pJywgZmFs
c2UpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0
eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHttYXhpbXVtQWdlOiJzdHJpbmcifSknLCBmYWxzZSk7CiAK
IHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5j
dGlvbiwgdW5kZWZpbmVkLCB7dGltZW91dDp1bmRlZmluZWR9KScsIGZhbHNlKTsKQEAgLTk4LDYg
KzExMCw4IEBAIHRlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG8KIHRlc3Qo
J25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlvbiwg
dW5kZWZpbmVkLCB7dGltZW91dDplbXB0eUZ1bmN0aW9ufSknLCBmYWxzZSk7CiB0ZXN0KCduYXZp
Z2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVm
aW5lZCwge3RpbWVvdXQ6dHJ1ZX0pJywgZmFsc2UpOwogdGVzdCgnbmF2aWdhdG9yLmdlb2xvY2F0
aW9uLmdldEN1cnJlbnRQb3NpdGlvbihlbXB0eUZ1bmN0aW9uLCB1bmRlZmluZWQsIHt0aW1lb3V0
OjQyfSknLCBmYWxzZSk7Cit0ZXN0KCduYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBv
c2l0aW9uKGVtcHR5RnVuY3Rpb24sIHVuZGVmaW5lZCwge3RpbWVvdXQ6SW5maW5pdHl9KScsIGZh
bHNlKTsKK3Rlc3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1w
dHlGdW5jdGlvbiwgdW5kZWZpbmVkLCB7dGltZW91dDotSW5maW5pdHl9KScsIGZhbHNlKTsKIHRl
c3QoJ25hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZW1wdHlGdW5jdGlv
biwgdW5kZWZpbmVkLCB7dGltZW91dDoic3RyaW5nIn0pJywgZmFsc2UpOwogCiB2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>