<?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>95322</bug_id>
          
          <creation_ts>2012-08-29 04:16:30 -0700</creation_ts>
          <short_desc>[chromium] Fix double call to scrollBegin() when handling scroll gesture</short_desc>
          <delta_ts>2012-09-11 09:58:49 -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>New Bugs</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>0</everconfirmed>
          <reporter name="Iain Merrick">husky</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>husky</cc>
    
    <cc>jamesr</cc>
    
    <cc>peter</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>707294</commentid>
    <comment_count>0</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-08-29 04:16:30 -0700</bug_when>
    <thetext>[chromium] Fix double call to scrollBegin() when handling scroll gesture</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707296</commentid>
    <comment_count>1</comment_count>
      <attachid>161178</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-08-29 04:17:27 -0700</bug_when>
    <thetext>Created attachment 161178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707386</commentid>
    <comment_count>2</comment_count>
      <attachid>161178</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-29 06:06:19 -0700</bug_when>
    <thetext>Comment on attachment 161178
Patch

Attachment 161178 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13682187

New failing tests:
WebCompositorInputHandlerImplTest.gestureFlingAnimates
CCLayerTreeHostTestScrollChildLayer.runMultiThread
WebCompositorInputHandlerImplTest.gestureFlingTransferResets</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707389</commentid>
    <comment_count>3</comment_count>
      <attachid>161178</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-08-29 06:08:38 -0700</bug_when>
    <thetext>Comment on attachment 161178
Patch

Some failing unit tests, will fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707542</commentid>
    <comment_count>4</comment_count>
      <attachid>161251</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-08-29 09:48:31 -0700</bug_when>
    <thetext>Created attachment 161251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707544</commentid>
    <comment_count>5</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-08-29 09:49:29 -0700</bug_when>
    <thetext>My previous patch removed the double scrollBegin() call, but on second thoughts, exactly that behavior is expected by the unit tests. For now, just remove the offending ASSERT so the tests pass in debug mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710624</commentid>
    <comment_count>6</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-03 07:04:56 -0700</bug_when>
    <thetext>Anyone got time to take a look at this?

Android content shell is still hitting ASSERTs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711159</commentid>
    <comment_count>7</comment_count>
      <attachid>161251</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-04 08:57:30 -0700</bug_when>
    <thetext>Comment on attachment 161251
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        client, then if the result is ScrollStarted, it creates a PlatformGestureCurve

I think this is wrong - you should instead fix the PlatformGestureCurve stuff to not do a scrollBegin()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711165</commentid>
    <comment_count>8</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-04 09:09:46 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 161251 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161251&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        client, then if the result is ScrollStarted, it creates a PlatformGestureCurve
&gt; 
&gt; I think this is wrong - you should instead fix the PlatformGestureCurve stuff to not do a scrollBegin()

OK, will do -- it&apos;ll be along the lines of the first patchset, but I need to fix up those tests as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712060</commentid>
    <comment_count>9</comment_count>
      <attachid>162253</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-05 08:08:10 -0700</bug_when>
    <thetext>Created attachment 162253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712062</commentid>
    <comment_count>10</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-05 08:10:56 -0700</bug_when>
    <thetext>I modified the gestureFlingAnimates test, and removed gestureFlingTransferResets completely. That was a pretty complicated test but I can&apos;t see that it represents usage that would occur in practice.

This patch performs well when testing manually in the Android content shell. If there are additional unit tests you think I should add, please let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712252</commentid>
    <comment_count>11</comment_count>
      <attachid>162253</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-05 10:49:41 -0700</bug_when>
    <thetext>Comment on attachment 162253
Patch

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

&gt; Source/WebKit/chromium/ChangeLog:23
&gt; +        doesn&apos;t seem to represent normal usage -- composited flings don&apos;t turn into
&gt; +        main thread flings halfway through.

Sorry, yes they do for wheel flings.  This test and the behavior it tests are important.

&gt; Source/WebKit/chromium/src/WebCompositorInputHandlerImpl.cpp:333
&gt; +    m_inputHandlerClient-&gt;scrollBy(IntPoint(m_wheelFlingParameters.point.x, m_wheelFlingParameters.point.y),

This doesn&apos;t look right.  Keep in mind we have 2 kinds of flings - &quot;gesture&quot; flings and &quot;wheel pad&quot; flings.  The former is what Chrome on android has.  The latter - which is what this code implements - works like OS X fling by generating a sequence of synthetic wheel events.

It looks like you&apos;ve just deleted the code for the second kind of fling completely.  That&apos;s definitely not the right fix!

I think what you really want to do is for wheel fling type scrolls send a matching scrollEnd() to the scrollBegin() when the fling starts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712270</commentid>
    <comment_count>12</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-05 10:53:45 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; This doesn&apos;t look right.  Keep in mind we have 2 kinds of flings - &quot;gesture&quot; flings and &quot;wheel pad&quot; flings.  The former is what Chrome on android has.  The latter - which is what this code implements - works like OS X fling by generating a sequence of synthetic wheel events.
&gt; 
&gt; It looks like you&apos;ve just deleted the code for the second kind of fling completely.  That&apos;s definitely not the right fix!

It did seem a bit strange, yes. :) Chrome for Android is hitting that code path, though, and it sounds like maybe it shouldn&apos;t -- I&apos;ll take a closer look.

&gt; I think what you really want to do is for wheel fling type scrolls send a matching scrollEnd() to the scrollBegin() when the fling starts.

np, will do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712278</commentid>
    <comment_count>13</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-05 10:54:54 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Chrome for Android is hitting that code path, though

Oops, I don&apos;t mean Chrome, I mean the content shell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712301</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-05 10:58:52 -0700</bug_when>
    <thetext>I&apos;m somewhat dubious of how android is sharing this code right now.  I suspect https://bugs.webkit.org/show_bug.cgi?id=95756 will help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713381</commentid>
    <comment_count>15</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-06 09:49:44 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I&apos;m somewhat dubious of how android is sharing this code right now.  I suspect https://bugs.webkit.org/show_bug.cgi?id=95756 will help.

Oho, yes it will!

Downstream we have &quot;FlingAnimator&quot; which basically implements PlatformGestureCurve (but with reversed sign) with different plumbing. Once 95756 gets it, we should be able to hook it up to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717074</commentid>
    <comment_count>16</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-11 05:27:49 -0700</bug_when>
    <thetext>Still happening. We&apos;ve now resolved all the Android diffs, but that just means the same bug crops up in our Android branch too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717184</commentid>
    <comment_count>17</comment_count>
      <attachid>163365</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-11 08:15:17 -0700</bug_when>
    <thetext>Created attachment 163365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717185</commentid>
    <comment_count>18</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2012-09-11 08:16:38 -0700</bug_when>
    <thetext>Another try. This patch just adds an extra scrollEnd() where it&apos;s needed, and makes the unit test more strict to hopefully catch future incorrect usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717296</commentid>
    <comment_count>19</comment_count>
      <attachid>163365</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-11 09:53:02 -0700</bug_when>
    <thetext>Comment on attachment 163365
Patch

Thanks, this is exactly what I had in mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717308</commentid>
    <comment_count>20</comment_count>
      <attachid>163365</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-11 09:58:45 -0700</bug_when>
    <thetext>Comment on attachment 163365
Patch

Clearing flags on attachment: 163365

Committed r128199: &lt;http://trac.webkit.org/changeset/128199&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717309</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-11 09:58:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161178</attachid>
            <date>2012-08-29 04:17:27 -0700</date>
            <delta_ts>2012-08-29 09:48:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95322-20120829121717.patch</filename>
            <type>text/plain</type>
            <size>4307</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDMxNDEwYjlhZDE4MzU1Yjc5NzdhOTkxODhiNzRlMTZmMjAzYWY5YjUuLjJmZGQ0NWZjOTlkN2Zj
MmI0OGE0YWRiODQ2NTFhZDM1NjE1NDdhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTItMDgtMjkgIElhaW4gTWVycmljayAgPGh1c2t5QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBkb3VibGUgY2FsbCB0byBzY3JvbGxCZWdp
bigpIHdoZW4gaGFuZGxpbmcgc2Nyb2xsIGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6Omhh
bmRsZUdlc3R1cmVGbGluZygpIGNhbGxzIHNjcm9sbEJlZ2luKCkgb24gaXRzCisgICAgICAgIGNs
aWVudCwgdGhlbiBpZiB0aGUgcmVzdWx0IGlzIFNjcm9sbFN0YXJ0ZWQsIGl0IGNyZWF0ZXMgYSBQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZQorICAgICAgICBvYmplY3QgdG8gaGFuZGxlIHRoZSBmbGluZyBh
bmltYXRpb24uIFRoZSBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSBpbiB0dXJuIGNhbGxzCisgICAgICAg
IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSgpLgorCisgICAgICAgIFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSgpIHdhcyBjb25zdHJ1Y3Rpbmcg
YSBzeW50aGV0aWMgbW91c2UKKyAgICAgICAgd2hlZWwgZXZlbnQuIEhhbmRsaW5nIHRoaXMgY2F1
c2VkIHVzIHRvIGNhbGwgc2Nyb2xsQmVnaW4oKSBvbiB0aGUgY2xpZW50IHlldAorICAgICAgICBh
Z2FpbiwgaW1tZWRpYXRlbHkgaGl0dGluZyBhbiBBU1NFUlQuIFdpdGggdGhpcyBwYXRjaCB3ZSBz
aW1wbHkgY2FsbCBzY3JvbGxCeSgpCisgICAgICAgIGRpcmVjdGx5IG9uIHRoZSBjbGllbnQuCisK
KyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y2FuY2VsQ3VycmVudEZs
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OnNj
cm9sbEJ5KToKKwogMjAxMi0wOC0yOSAgRG9taW5pYyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBBWDogQ2FudmFzIHNob3VsZCBoYXZlIGEgZGlzdGluY3Qgcm9sZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGwuY3BwCmluZGV4IDgwODRkNzE1YzdiMDJhNTc4ZTQxZWNiYTNlOTkz
ODRmNjQyYWQyZTkuLmE4MGZhZDUzZGMzOWQxOWM2NWM3YzUwNGM0ZmU4ZWZlN2VkZmQzNjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKQEAgLTMxOCw0NSArMzE4LDIwIEBAIGJvb2wgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OmNhbmNlbEN1cnJlbnRGbGluZygpCiAgICAgVFJBQ0Vf
RVZFTlRfSU5TVEFOVDEoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjYW5j
ZWxDdXJyZW50RmxpbmciLCAiaGFkRmxpbmdBbmltYXRpb24iLCBoYWRGbGluZ0FuaW1hdGlvbik7
CiAgICAgbV93aGVlbEZsaW5nQW5pbWF0aW9uLmNsZWFyKCk7CiAgICAgbV93aGVlbEZsaW5nUGFy
YW1ldGVycyA9IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKCk7CisgICAgaWYgKGhhZEZs
aW5nQW5pbWF0aW9uKQorICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsRW5kKCk7
CiAgICAgcmV0dXJuIGhhZEZsaW5nQW5pbWF0aW9uOwogfQogCiB2b2lkIFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeShjb25zdCBJbnRQb2ludCYgaW5jcmVtZW50KQogewor
ICAgIEFTU0VSVChtX3doZWVsRmxpbmdBbmltYXRpb24uZ2V0KCkpOworCiAgICAgaWYgKGluY3Jl
bWVudCA9PSBJbnRQb2ludDo6emVybygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBUUkFDRV9F
VkVOVDIoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSIsICJ4
IiwgaW5jcmVtZW50LngoKSwgInkiLCBpbmNyZW1lbnQueSgpKTsKLSAgICBXZWJNb3VzZVdoZWVs
RXZlbnQgc3ludGhldGljV2hlZWw7Ci0gICAgc3ludGhldGljV2hlZWwudHlwZSA9IFdlYklucHV0
RXZlbnQ6Ok1vdXNlV2hlZWw7Ci0gICAgc3ludGhldGljV2hlZWwuZGVsdGFYID0gaW5jcmVtZW50
LngoKTsKLSAgICBzeW50aGV0aWNXaGVlbC5kZWx0YVkgPSBpbmNyZW1lbnQueSgpOwotICAgIHN5
bnRoZXRpY1doZWVsLmhhc1ByZWNpc2VTY3JvbGxpbmdEZWx0YXMgPSB0cnVlOwotICAgIHN5bnRo
ZXRpY1doZWVsLnggPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50Lng7Ci0gICAgc3ludGhl
dGljV2hlZWwueSA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMucG9pbnQueTsKLSAgICBzeW50aGV0
aWNXaGVlbC5nbG9iYWxYID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludC54Owot
ICAgIHN5bnRoZXRpY1doZWVsLmdsb2JhbFkgPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmdsb2Jh
bFBvaW50Lnk7Ci0gICAgc3ludGhldGljV2hlZWwubW9kaWZpZXJzID0gbV93aGVlbEZsaW5nUGFy
YW1ldGVycy5tb2RpZmllcnM7Ci0KLSAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6
RXZlbnREaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiA9IGhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChz
eW50aGV0aWNXaGVlbCk7Ci0gICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewotICAgIGNhc2UgRGlk
SGFuZGxlOgotICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwu
d2lkdGggKz0gaW5jcmVtZW50LngoKTsKLSAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5j
dW11bGF0aXZlU2Nyb2xsLmhlaWdodCArPSBpbmNyZW1lbnQueSgpOwotICAgIGNhc2UgRHJvcEV2
ZW50OgotICAgICAgICBicmVhazsKLSAgICBjYXNlIERpZE5vdEhhbmRsZToKLSAgICAgICAgVFJB
Q0VfRVZFTlRfSU5TVEFOVDAoImNjIiwgIldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpz
Y3JvbGxCeTo6QWJvcnRGbGluZyIpOwotICAgICAgICAvLyBJZiB3ZSBnb3QgYSBEaWROb3RIYW5k
bGUsIHRoYXQgbWVhbnMgd2UgbmVlZCB0byBkZWxpdmVyIHdoZWVscyBvbiB0aGUgbWFpbiB0aHJl
YWQuCi0gICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvIHNjaGVkdWxlIGEgY29tbWl0
IGFuZCB0cmFuc2ZlciB0aGUgZmxpbmcgY3VydmUgb3ZlciB0byB0aGUgbWFpbgotICAgICAgICAv
LyB0aHJlYWQgYW5kIHJ1biB0aGUgcmVzdCBvZiB0aGUgd2hlZWxzIGZyb20gdGhlcmUuCi0gICAg
ICAgIC8vIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGZsaW5naW5nIGEgcGFnZSB0aGF0IGNvbnRhaW5z
IGEgc2Nyb2xsYWJsZSBzdWJhcmVhIHRoYXQgd2UgY2FuJ3QKLSAgICAgICAgLy8gc2Nyb2xsIG9u
IHRoZSB0aHJlYWQgaWYgdGhlIGZsaW5nIHN0YXJ0cyBvdXRzaWRlIHRoZSBzdWJhcmVhIGJ1dCB0
aGVuIGlzIGZsdW5nICJ1bmRlciIgdGhlCi0gICAgICAgIC8vIHBvaW50ZXIuCi0gICAgICAgIG1f
Y2xpZW50LT50cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24obV93aGVlbEZsaW5nUGFy
YW1ldGVycyk7Ci0gICAgICAgIGNhbmNlbEN1cnJlbnRGbGluZygpOwotICAgICAgICBicmVhazsK
LSAgICB9CisgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJ5KEludFBvaW50KG1fd2hl
ZWxGbGluZ1BhcmFtZXRlcnMucG9pbnQueCwgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5wb2ludC55
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50U2l6ZSgtaW5jcmVtZW50
LngoKSwgLWluY3JlbWVudC55KCkpKTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161251</attachid>
            <date>2012-08-29 09:48:31 -0700</date>
            <delta_ts>2012-09-05 08:08:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95322-20120829174820.patch</filename>
            <type>text/plain</type>
            <size>1808</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmMwMTQ0NjNiYTNjMjFm
NGFjYjY4NDVlNWQzYzUwYjg1OTI0ZTM5NS4uZDE0ZDM4MTVhMTM1NTM2MTFhY2EyNzE0MzdlNTY3
MzNhOTE0MmY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA4LTI5ICBJYWlu
IE1lcnJpY2sgIDxodXNreUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBEb24n
dCBBU1NFUlQgb24gZG91YmxlIGNhbGwgdG8gc2Nyb2xsQmVnaW4oKS4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MzIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZygpIGNhbGxzIHNjcm9sbEJlZ2luKCkgb24gaXRzCisg
ICAgICAgIGNsaWVudCwgdGhlbiBpZiB0aGUgcmVzdWx0IGlzIFNjcm9sbFN0YXJ0ZWQsIGl0IGNy
ZWF0ZXMgYSBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZQorICAgICAgICBvYmplY3QgdG8gaGFuZGxlIHRo
ZSBmbGluZyBhbmltYXRpb24sIHdoaWNoIHJlc3VsdHMgaW4gYW5vdGhlciBzY3JvbGxCZWdpbigp
LgorICAgICAgICBUaGlzIGJlaGF2aW91ciBpcyBleHBlY3RlZCBieSBXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbFRlc3QuCisKKyAgICAgICAgVGVzdGVkIGJ5IFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsVGVzdC5nZXN0dXJlRmxpbmdBbmltYXRlcworCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpzY3JvbGxCZWdpbik6CisKIDIwMTItMDgt
MjkgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQ6IFNpbmdsZSBsaW5lIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKaW5kZXggOTE4MzNhZjFmNDMzOTMyZGYyNTAwYmQ0NWRiZDFlOGFiN2Fh
MzlkZi4uMzczMDQxMDU1YjU0NjY2ZjgzMGFmODM0N2MwMWE3ZGI3NzI3MTk4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTg3MCw3ICs4NzAsNiBAQCBDQ0lu
cHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNjcm9s
bEJlZ2luKGNvbnN0IEludFBvaQogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NMYXllclRy
ZWVIb3N0SW1wbDo6c2Nyb2xsQmVnaW4iKTsKIAotICAgIEFTU0VSVCghbV9jdXJyZW50bHlTY3Jv
bGxpbmdMYXllckltcGwpOwogICAgIGNsZWFyQ3VycmVudGx5U2Nyb2xsaW5nTGF5ZXIoKTsKIAog
ICAgIGlmICghZW5zdXJlUmVuZGVyU3VyZmFjZUxheWVyTGlzdCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162253</attachid>
            <date>2012-09-05 08:08:10 -0700</date>
            <delta_ts>2012-09-11 08:15:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95322-20120905160751.patch</filename>
            <type>text/plain</type>
            <size>17558</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGU4NzEyN2ViNWFiM2U4OGU0OWRjMzg2OThkZWE2OTg3YWU3ZTI1NTguLjAwMWE1ZjYyMDQ3NGQ3
MjdjOTQwNGUwNzQ2ZmZiOGUwMjBjMjI1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTItMDktMDUgIElhaW4gTWVycmljayAgPGh1c2t5QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBkb3VibGUgY2FsbCB0byBzY3JvbGxCZWdp
bigpIHdoZW4gaGFuZGxpbmcgc2Nyb2xsIGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6Omhh
bmRsZUdlc3R1cmVGbGluZygpIGNhbGxzIHNjcm9sbEJlZ2luKCkgb24gaXRzCisgICAgICAgIGNs
aWVudCwgdGhlbiBpZiB0aGUgcmVzdWx0IGlzIFNjcm9sbFN0YXJ0ZWQsIGl0IGNyZWF0ZXMgYSBQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZQorICAgICAgICBvYmplY3QgdG8gaGFuZGxlIHRoZSBmbGluZyBh
bmltYXRpb24uIFRoZSBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSBpbiB0dXJuIGNhbGxzCisgICAgICAg
IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSgpLgorCisgICAgICAgIFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpzY3JvbGxCeSgpIHdhcyBjb25zdHJ1Y3Rpbmcg
YSBzeW50aGV0aWMgbW91c2UKKyAgICAgICAgd2hlZWwgZXZlbnQuIEhhbmRsaW5nIHRoaXMgY2F1
c2VkIHVzIHRvIGNhbGwgc2Nyb2xsQmVnaW4oKSBvbiB0aGUgY2xpZW50IHlldAorICAgICAgICBh
Z2FpbiwgaW1tZWRpYXRlbHkgaGl0dGluZyBhbiBBU1NFUlQuIFdpdGggdGhpcyBwYXRjaCB3ZSBz
aW1wbHkgY2FsbCBzY3JvbGxCeSgpCisgICAgICAgIGRpcmVjdGx5IG9uIHRoZSBjbGllbnQuCisK
KyAgICAgICAgVXBkYXRlZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3Q6Omdlc3R1
cmVGbGluZ0FuaW1hdGVzIHRvIHRlc3QgYSBub3JtYWwKKyAgICAgICAgZmxpbmcgYW5pbWF0aW9u
IGZyb20gc3RhcnQgdG8gZmluaXNoLgorCisgICAgICAgIFJlbW92ZWQgV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGxUZXN0OjpnZXN0dXJlRmxpbmdUcmFuc2ZlclJlc2V0cyBhcyBpdAorICAg
ICAgICBkb2Vzbid0IHNlZW0gdG8gcmVwcmVzZW50IG5vcm1hbCB1c2FnZSAtLSBjb21wb3NpdGVk
IGZsaW5ncyBkb24ndCB0dXJuIGludG8KKyAgICAgICAgbWFpbiB0aHJlYWQgZmxpbmdzIGhhbGZ3
YXkgdGhyb3VnaC4KKworICAgICAgICBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3Qg
bm93IHVzZXMgc3RyaWN0IG1vY2tzIHRocm91Z2hvdXQsIHRvIGVuc3VyZQorICAgICAgICB0aGF0
IG5vICJ1bmludGVyZXN0aW5nIiBjYWxscyBhcmUgaWdub3JlZC4KKworICAgICAgICAqIHNyYy9X
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpjYW5jZWxDdXJyZW50RmxpbmcpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkpOgorICAgICAg
ICAqIHRlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHA6CisgICAgICAg
IChXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QpOgorICAgICAgICAoV2ViS2l0OjpU
RVNUX0YpOgorCiAyMDEyLTA5LTA0ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUk6IHJlcGxhY2UgT2JqZWN0VHlwZSBl
bnVtIHdpdGggc3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZyBpZGVudGlmaWVycy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmNwcAppbmRleCA4MDg0ZDcxNWM3YjAyYTU3OGU0MWVjYmEzZTk5Mzg0ZjY0MmFk
MmU5Li5hODBmYWQ1M2RjMzlkMTljNjVjN2M1MDRjNGZlOGVmZTdlZGZkMzYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGwuY3BwCkBAIC0zMTgsNDUgKzMxOCwyMCBAQCBib29sIFdlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsOjpjYW5jZWxDdXJyZW50RmxpbmcoKQogICAgIFRSQUNFX0VWRU5UX0lO
U1RBTlQxKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6Y2FuY2VsQ3VycmVu
dEZsaW5nIiwgImhhZEZsaW5nQW5pbWF0aW9uIiwgaGFkRmxpbmdBbmltYXRpb24pOwogICAgIG1f
d2hlZWxGbGluZ0FuaW1hdGlvbi5jbGVhcigpOwogICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMg
PSBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycygpOworICAgIGlmIChoYWRGbGluZ0FuaW1h
dGlvbikKKyAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEVuZCgpOwogICAgIHJl
dHVybiBoYWRGbGluZ0FuaW1hdGlvbjsKIH0KIAogdm9pZCBXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbDo6c2Nyb2xsQnkoY29uc3QgSW50UG9pbnQmIGluY3JlbWVudCkKIHsKKyAgICBBU1NF
UlQobV93aGVlbEZsaW5nQW5pbWF0aW9uLmdldCgpKTsKKwogICAgIGlmIChpbmNyZW1lbnQgPT0g
SW50UG9pbnQ6Onplcm8oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVFJBQ0VfRVZFTlQyKCJj
YyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnkiLCAieCIsIGluY3Jl
bWVudC54KCksICJ5IiwgaW5jcmVtZW50LnkoKSk7Ci0gICAgV2ViTW91c2VXaGVlbEV2ZW50IHN5
bnRoZXRpY1doZWVsOwotICAgIHN5bnRoZXRpY1doZWVsLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpN
b3VzZVdoZWVsOwotICAgIHN5bnRoZXRpY1doZWVsLmRlbHRhWCA9IGluY3JlbWVudC54KCk7Ci0g
ICAgc3ludGhldGljV2hlZWwuZGVsdGFZID0gaW5jcmVtZW50LnkoKTsKLSAgICBzeW50aGV0aWNX
aGVlbC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzID0gdHJ1ZTsKLSAgICBzeW50aGV0aWNXaGVl
bC54ID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5wb2ludC54OwotICAgIHN5bnRoZXRpY1doZWVs
LnkgPSBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50Lnk7Ci0gICAgc3ludGhldGljV2hlZWwu
Z2xvYmFsWCA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZ2xvYmFsUG9pbnQueDsKLSAgICBzeW50
aGV0aWNXaGVlbC5nbG9iYWxZID0gbV93aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludC55
OwotICAgIHN5bnRoZXRpY1doZWVsLm1vZGlmaWVycyA9IG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMu
bW9kaWZpZXJzOwotCi0gICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlz
cG9zaXRpb24gZGlzcG9zaXRpb24gPSBoYW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwoc3ludGhldGlj
V2hlZWwpOwotICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKLSAgICBjYXNlIERpZEhhbmRsZToK
LSAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsLndpZHRoICs9
IGluY3JlbWVudC54KCk7Ci0gICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuY3VtdWxhdGl2
ZVNjcm9sbC5oZWlnaHQgKz0gaW5jcmVtZW50LnkoKTsKLSAgICBjYXNlIERyb3BFdmVudDoKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEaWROb3RIYW5kbGU6Ci0gICAgICAgIFRSQUNFX0VWRU5U
X0lOU1RBTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6c2Nyb2xsQnk6
OkFib3J0RmxpbmciKTsKLSAgICAgICAgLy8gSWYgd2UgZ290IGEgRGlkTm90SGFuZGxlLCB0aGF0
IG1lYW5zIHdlIG5lZWQgdG8gZGVsaXZlciB3aGVlbHMgb24gdGhlIG1haW4gdGhyZWFkLgotICAg
ICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgbmVlZCB0byBzY2hlZHVsZSBhIGNvbW1pdCBhbmQgdHJh
bnNmZXIgdGhlIGZsaW5nIGN1cnZlIG92ZXIgdG8gdGhlIG1haW4KLSAgICAgICAgLy8gdGhyZWFk
IGFuZCBydW4gdGhlIHJlc3Qgb2YgdGhlIHdoZWVscyBmcm9tIHRoZXJlLgotICAgICAgICAvLyBU
aGlzIGNhbiBoYXBwZW4gd2hlbiBmbGluZ2luZyBhIHBhZ2UgdGhhdCBjb250YWlucyBhIHNjcm9s
bGFibGUgc3ViYXJlYSB0aGF0IHdlIGNhbid0Ci0gICAgICAgIC8vIHNjcm9sbCBvbiB0aGUgdGhy
ZWFkIGlmIHRoZSBmbGluZyBzdGFydHMgb3V0c2lkZSB0aGUgc3ViYXJlYSBidXQgdGhlbiBpcyBm
bHVuZyAidW5kZXIiIHRoZQotICAgICAgICAvLyBwb2ludGVyLgotICAgICAgICBtX2NsaWVudC0+
dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMp
OwotICAgICAgICBjYW5jZWxDdXJyZW50RmxpbmcoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQor
ICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxCeShJbnRQb2ludChtX3doZWVsRmxpbmdQ
YXJhbWV0ZXJzLnBvaW50LngsIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMucG9pbnQueSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludFNpemUoLWluY3JlbWVudC54KCksIC1p
bmNyZW1lbnQueSgpKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNw
cAppbmRleCA4MzEzYjBmNWI4YmZjN2RlZGY4NGVlZDVkMjFmNzAzZTlmNmVkZTZkLi5iMWU1ZmY5
ZGU4ZmNiOWQ4MjBjNjQ5MzkyMjVkMmI2NTg2NGRmZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbFRlc3QuY3BwCkBAIC0xNzMsOSArMTczLDkgQEAgcHVibGljOgogICAgIH0gd2hpbGUg
KDApCiAKIHByb3RlY3RlZDoKLSAgICBNb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQgbV9tb2NrQ0NJ
bnB1dEhhbmRsZXJDbGllbnQ7CisgICAgdGVzdGluZzo6U3RyaWN0TW9jazxNb2NrQ0NJbnB1dEhh
bmRsZXJDbGllbnQ+IG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50OwogICAgIE93blB0cjxXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbD4gbV9pbnB1dEhhbmRsZXI7Ci0gICAgTW9ja1dlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQgbV9tb2NrQ2xpZW50OworICAgIHRlc3Rpbmc6OlN0
cmljdE1vY2s8TW9ja1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQ+IG1fbW9ja0NsaWVu
dDsKICAgICBXZWJHZXN0dXJlRXZlbnQgZ2VzdHVyZTsKICAgICBXZWJDb3JlOjpEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgYWx3YXlzSW1wbFRocmVhZDsKICAgICBXZWJDb21wb3NpdG9ySW5pdGlh
bGl6ZXIgaW5pdGlhbGl6ZXI7CkBAIC0zMDUsNiArMzA1LDcgQEAgVEVTVF9GKFdlYkNvbXBvc2l0
b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nU3RhcnRlZCkKICAgICBWRVJJRllf
QU5EX1JFU0VUX01PQ0tTKCk7CiAKICAgICAvLyBWZXJpZnkgdGhhdCBhIEdlc3R1cmVGbGluZ0Nh
bmNlbCBkdXJpbmcgYW4gYW5pbWF0aW9uIGNhbmNlbHMgaXQuCisgICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKTsKICAgICBnZXN0dXJlLnR5cGUg
PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw7CiAgICAgbV9pbnB1dEhhbmRsZXIt
PmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiB9CkBAIC0zODQsMTkyICszODUsMjMgQEAgVEVT
VF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0
ZXMpCiAKICAgICAvLyBUaGUgc2Vjb25kIGNhbGwgc2hvdWxkIHN0YXJ0IHNjcm9sbGluZyBpbiB0
aGUgLVggZGlyZWN0aW9uLgogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCi0gICAg
ICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGll
bnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxl
ckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6XywgdGVzdGluZzo6UHJvcGVydHkoJldlYkNvcmU6
OkludFNpemU6OndpZHRoLCB0ZXN0aW5nOjpMdCgwKSkpKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsRW5kKCkpOwogICAgIG1faW5wdXRIYW5kbGVy
LT5hbmltYXRlKDEwLjEpOwogCiAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKIAotICAgIC8vIExldCdzIHNh
eSBvbiB0aGUgdGhpcmQgY2FsbCB3ZSBoaXQgYSBub24tc2Nyb2xsYWJsZSByZWdpb24uIFdlIHNo
b3VsZCBhYm9ydCB0aGUgZmxpbmcgYW5kIG5vdCBzY3JvbGwuCi0gICAgLy8gV2UgYWxzbyBzaG91
bGQgcGFzcyB0aGUgY3VycmVudCBmbGluZyBwYXJhbWV0ZXJzIG91dCB0byB0aGUgY2xpZW50IHNv
IHRoZSByZXN0IG9mIHRoZSBmbGluZyBjYW4gYmUKLSAgICAvLyB0cmFuc2ZlcnJlZCB0byB0aGUg
bWFpbiB0aHJlYWQuCisgICAgLy8gSWYgd2UgaW5jcmVtZW50IHRoZSBhbmltYXRpb24gY2xvY2sg
YnkgYSBsYXJnZSBhbW91bnQsIHdlIHNob3VsZCBnZXQgb25lIGZpbmFsIHNjcm9sbC4KICAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24o
KSk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJl
Z2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQotICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6
UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxPbk1haW5UaHJlYWQp
KTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnko
dGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOwotICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSkuVGltZXMoMCk7Ci0KLSAgICAvLyBF
eHBlY3RlZCB3aGVlbCBmbGluZyBhbmltYXRpb24gcGFyYW1ldGVyczoKLSAgICAvLyAqKSBmbGlu
Z0RlbHRhIGFuZCBmbGluZ1BvaW50IHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwgR2VzdHVyZUZs
aW5nU3RhcnQgZXZlbnQKLSAgICAvLyAqKSBzdGFydFRpbWUgc2hvdWxkIGJlIDEwIHRvIG1hdGNo
IHRoZSB0aW1lIHBhcmFtZXRlciBvZiB0aGUgZmlyc3QgYW5pbWF0ZSgpIGNhbGwgYWZ0ZXIgdGhl
IEdlc3R1cmVGbGluZ1N0YXJ0Ci0gICAgLy8gKikgY3VtdWxhdGl2ZVNjcm9sbCBkZXBlbmRzIG9u
IHRoZSBjdXJ2ZSwgYnV0IHNpbmNlIHdlJ3ZlIGFuaW1hdGVkIGluIHRoZSAtWCBkaXJlY3Rpb24g
dGhlIFggdmFsdWUgc2hvdWxkIGJlIDwgMAotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwg
dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKHRlc3Rpbmc6OkFsbE9mKAotICAgICAg
ICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmRlbHRhLCB0
ZXN0aW5nOjpFcShmbGluZ0RlbHRhKSksCi0gICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3Rp
dmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6cG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nUG9pbnQpKSwK
LSAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpn
bG9iYWxQb2ludCwgdGVzdGluZzo6RXEoZmxpbmdHbG9iYWxQb2ludCkpLAotICAgICAgICB0ZXN0
aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Om1vZGlmaWVycywgdGVz
dGluZzo6RXEobW9kaWZpZXJzKSksCi0gICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVX
aGVlbEZsaW5nUGFyYW1ldGVyczo6c3RhcnRUaW1lLCB0ZXN0aW5nOjpFcSgxMCkpLAotICAgICAg
ICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmN1bXVsYXRp
dmVTY3JvbGwsCi0gICAgICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViU2l6ZTo6d2lkdGgsIHRl
c3Rpbmc6Okd0KDApKSkpKSk7Ci0gICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMik7Ci0K
LSAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJ
bnB1dEhhbmRsZXJDbGllbnQpOwotICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhw
ZWN0YXRpb25zKCZtX21vY2tDbGllbnQpOwotCi0gICAgLy8gU2luY2Ugd2UndmUgYWJvcnRlZCB0
aGUgZmxpbmcsIHRoZSBuZXh0IGFuaW1hdGlvbiBzaG91bGQgYmUgYSBuby1vcCBhbmQgc2hvdWxk
IG5vdCByZXN1bHQgaW4gYW5vdGhlcgotICAgIC8vIGZyYW1lIGJlaW5nIHJlcXVlc3RlZC4KLSAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRp
b24oKSkuVGltZXMoMCk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGll
bnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKLSAgICBt
X2lucHV0SGFuZGxlci0+YW5pbWF0ZSgxMC4zKTsKLQotICAgIC8vIFNpbmNlIHdlJ3ZlIHRyYW5z
ZmVycmVkIHRoZSBmbGluZyB0byB0aGUgbWFpbiB0aHJlYWQsIHdlIG5lZWQgdG8gcGFzcyB0aGUg
bmV4dCBHZXN0dXJlRmxpbmdDYW5jZWwgdG8gdGhlIG1haW4KLSAgICAvLyB0aHJlYWQgYXMgd2Vs
bC4KLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIGRpZE5vdEhhbmRsZUlucHV0RXZlbnQo
dHJ1ZSkpOwotICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0Nh
bmNlbDsKLSAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKLX0K
LQotVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5n
VHJhbnNmZXJSZXNldHMpCi17Ci0gICAgLy8gV2Ugc2hvdWxkbid0IHNlbmQgYW55IGV2ZW50cyB0
byB0aGUgd2lkZ2V0IGZvciB0aGlzIGdlc3R1cmUuCi0gICAgbV9leHBlY3RlZERpc3Bvc2l0aW9u
ID0gRGlkSGFuZGxlOwotICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKLQotICAgIC8vIFN0
YXJ0IGEgZ2VzdHVyZSBmbGluZyBpbiB0aGUgLVggZGlyZWN0aW9uIHdpdGggemVybyBZIG1vdmVt
ZW50LgotICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0
OwotICAgIFdlYkZsb2F0UG9pbnQgZmxpbmdEZWx0YSA9IFdlYkZsb2F0UG9pbnQoMTAwMCwgMCk7
Ci0gICAgV2ViUG9pbnQgZmxpbmdQb2ludCA9IFdlYlBvaW50KDcsIDEzKTsKLSAgICBXZWJQb2lu
dCBmbGluZ0dsb2JhbFBvaW50ID0gV2ViUG9pbnQoMTcsIDIzKTsKLSAgICBpbnQgbW9kaWZpZXJz
ID0gMTsKLSAgICBnZXN0dXJlLmRlbHRhWCA9IGZsaW5nRGVsdGEueDsKLSAgICBnZXN0dXJlLmRl
bHRhWSA9IGZsaW5nRGVsdGEueTsKLSAgICBnZXN0dXJlLnggPSBmbGluZ1BvaW50Lng7Ci0gICAg
Z2VzdHVyZS55ID0gZmxpbmdQb2ludC55OwotICAgIGdlc3R1cmUuZ2xvYmFsWCA9IGZsaW5nR2xv
YmFsUG9pbnQueDsKLSAgICBnZXN0dXJlLmdsb2JhbFkgPSBmbGluZ0dsb2JhbFBvaW50Lnk7Ci0g
ICAgZ2VzdHVyZS5tb2RpZmllcnMgPSBtb2RpZmllcnM7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwotICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0
ZXN0aW5nOjpfKSkKLSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpD
Q0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwotICAgIG1faW5wdXRIYW5kbGVy
LT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOwotCi0gICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5
QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKLQotICAg
IC8vIFN0YXJ0IHRoZSBmbGluZyBhbmltYXRpb24gYXQgdGltZSAxMC4gVGhpcyBzaG91bGRuJ3Qg
YWN0dWFsbHkgc2Nyb2xsLCBqdXN0IGVzdGFibGlzaCBhIHN0YXJ0IHRpbWUuCi0gICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwot
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0
ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkuVGltZXMoMCk7Ci0gICAgbV9pbnB1dEhhbmRsZXItPmFu
aW1hdGUoMTApOwotCi0gICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlv
bnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKLQotICAgIC8vIFRoZSBzZWNvbmQgY2Fs
bCBzaG91bGQgc3RhcnQgc2Nyb2xsaW5nIGluIHRoZSAtWCBkaXJlY3Rpb24uCi0gICAgRVhQRUNU
X0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwot
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0
ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKLSAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVy
bihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwogICAgIEVY
UEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpf
LCB0ZXN0aW5nOjpQcm9wZXJ0eSgmV2ViQ29yZTo6SW50U2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okx0
KDApKSkpOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxFbmQoKSk7Ci0gICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMSk7Ci0KLSAgICB0ZXN0
aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQpOwotCi0gICAgLy8gTGV0J3Mgc2F5IG9uIHRoZSB0aGlyZCBjYWxsIHdlIGhpdCBh
IG5vbi1zY3JvbGxhYmxlIHJlZ2lvbi4gV2Ugc2hvdWxkIGFib3J0IHRoZSBmbGluZyBhbmQgbm90
IHNjcm9sbC4KLSAgICAvLyBXZSBhbHNvIHNob3VsZCBwYXNzIHRoZSBjdXJyZW50IGZsaW5nIHBh
cmFtZXRlcnMgb3V0IHRvIHRoZSBjbGllbnQgc28gdGhlIHJlc3Qgb2YgdGhlIGZsaW5nIGNhbiBi
ZQotICAgIC8vIHRyYW5zZmVycmVkIHRvIHRoZSBtYWluIHRocmVhZC4KLSAgICBFWFBFQ1RfQ0FM
TChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7Ci0gICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rp
bmc6Ol8sIHRlc3Rpbmc6Ol8pKQotICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdl
YkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxPbk1haW5UaHJlYWQpKTsKLSAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQnkodGVzdGluZzo6
XywgdGVzdGluZzo6XykpLlRpbWVzKDApOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSkuVGltZXMoMCk7Ci0KLSAgICAvLyBFeHBlY3RlZCB3
aGVlbCBmbGluZyBhbmltYXRpb24gcGFyYW1ldGVyczoKLSAgICAvLyAqKSBmbGluZ0RlbHRhIGFu
ZCBmbGluZ1BvaW50IHNob3VsZCBtYXRjaCB0aGUgb3JpZ2luYWwgR2VzdHVyZUZsaW5nU3RhcnQg
ZXZlbnQKLSAgICAvLyAqKSBzdGFydFRpbWUgc2hvdWxkIGJlIDEwIHRvIG1hdGNoIHRoZSB0aW1l
IHBhcmFtZXRlciBvZiB0aGUgZmlyc3QgYW5pbWF0ZSgpIGNhbGwgYWZ0ZXIgdGhlIEdlc3R1cmVG
bGluZ1N0YXJ0Ci0gICAgLy8gKikgY3VtdWxhdGl2ZVNjcm9sbCBkZXBlbmRzIG9uIHRoZSBjdXJ2
ZSwgYnV0IHNpbmNlIHdlJ3ZlIGFuaW1hdGVkIGluIHRoZSAtWCBkaXJlY3Rpb24gdGhlIFggdmFs
dWUgc2hvdWxkIGJlIDwgMAotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgdHJhbnNmZXJB
Y3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKHRlc3Rpbmc6OkFsbE9mKAotICAgICAgICB0ZXN0aW5n
OjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmRlbHRhLCB0ZXN0aW5nOjpF
cShmbGluZ0RlbHRhKSksCi0gICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVyczo6cG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nUG9pbnQpKSwKLSAgICAgICAg
dGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpnbG9iYWxQb2lu
dCwgdGVzdGluZzo6RXEoZmxpbmdHbG9iYWxQb2ludCkpLAotICAgICAgICB0ZXN0aW5nOjpGaWVs
ZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Om1vZGlmaWVycywgdGVzdGluZzo6RXEo
bW9kaWZpZXJzKSksCi0gICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5n
UGFyYW1ldGVyczo6c3RhcnRUaW1lLCB0ZXN0aW5nOjpFcSgxMCkpLAotICAgICAgICB0ZXN0aW5n
OjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmN1bXVsYXRpdmVTY3JvbGws
Ci0gICAgICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViU2l6ZTo6d2lkdGgsIHRlc3Rpbmc6Okd0
KDApKSkpKSk7Ci0gICAgbV9pbnB1dEhhbmRsZXItPmFuaW1hdGUoMTAuMik7Ci0KLSAgICB0ZXN0
aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQpOwotICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25z
KCZtX21vY2tDbGllbnQpOwotCi0gICAgLy8gU2luY2Ugd2UndmUgYWJvcnRlZCB0aGUgZmxpbmcs
IHRoZSBuZXh0IGFuaW1hdGlvbiBzaG91bGQgYmUgYSBuby1vcCBhbmQgc2hvdWxkIG5vdCByZXN1
bHQgaW4gYW5vdGhlcgotICAgIC8vIGZyYW1lIGJlaW5nIHJlcXVlc3RlZC4KLSAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSkuVGlt
ZXMoMCk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9s
bEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKS5UaW1lcygwKTsKLSAgICBtX2lucHV0SGFu
ZGxlci0+YW5pbWF0ZSgxMC4zKTsKLQotICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFy
RXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7Ci0KLSAgICAvLyBTaW5j
ZSB3ZSd2ZSB0cmFuc2ZlcnJlZCB0aGUgZmxpbmcgdG8gdGhlIG1haW4gdGhyZWFkLCB3ZSBuZWVk
IHRvIHBhc3MgdGhlIG5leHQgR2VzdHVyZUZsaW5nQ2FuY2VsIHRvIHRoZSBtYWluCi0gICAgLy8g
dGhyZWFkIGFzIHdlbGwuCi0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCBkaWROb3RIYW5k
bGVJbnB1dEV2ZW50KHRydWUpKTsKLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlRmxpbmdDYW5jZWw7Ci0gICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQo
Z2VzdHVyZSk7Ci0KLSAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7Ci0KLSAgICAvLyBTdGFy
dCBhIHNlY29uZCBnZXN0dXJlIGZsaW5nLCB0aGlzIHRpbWUgaW4gdGhlICtZIGRpcmVjdGlvbiB3
aXRoIG5vIFguCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5n
U3RhcnQ7Ci0gICAgZmxpbmdEZWx0YSA9IFdlYkZsb2F0UG9pbnQoMCwgLTEwMDApOwotICAgIGZs
aW5nUG9pbnQgPSBXZWJQb2ludCg5NSwgODcpOwotICAgIGZsaW5nR2xvYmFsUG9pbnQgPSBXZWJQ
b2ludCgzMiwgNzEpOwotICAgIG1vZGlmaWVycyA9IDI7Ci0gICAgZ2VzdHVyZS5kZWx0YVggPSBm
bGluZ0RlbHRhLng7Ci0gICAgZ2VzdHVyZS5kZWx0YVkgPSBmbGluZ0RlbHRhLnk7Ci0gICAgZ2Vz
dHVyZS54ID0gZmxpbmdQb2ludC54OwotICAgIGdlc3R1cmUueSA9IGZsaW5nUG9pbnQueTsKLSAg
ICBnZXN0dXJlLmdsb2JhbFggPSBmbGluZ0dsb2JhbFBvaW50Lng7Ci0gICAgZ2VzdHVyZS5nbG9i
YWxZID0gZmxpbmdHbG9iYWxQb2ludC55OwotICAgIGdlc3R1cmUubW9kaWZpZXJzID0gbW9kaWZp
ZXJzOwotICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVs
ZUFuaW1hdGlvbigpKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCi0gICAgICAgIC5XaWxsT25j
ZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0
YXJ0ZWQpKTsKLSAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsK
KyAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSg1MDAwKTsKIAogICAgIHRlc3Rpbmc6Ok1vY2s6
OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7
CiAKLSAgICAvLyBTdGFydCB0aGUgc2Vjb25kIGZsaW5nIGFuaW1hdGlvbiBhdCB0aW1lIDMwLgot
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1h
dGlvbigpKTsKLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Ny
b2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpLlRpbWVzKDApOwotICAgIG1faW5wdXRI
YW5kbGVyLT5hbmltYXRlKDMwKTsKLQotICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFy
RXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7Ci0KLSAgICAvLyBUaWNr
IHRoZSBzZWNvbmQgZmxpbmcgb25jZSBub3JtYWxseS4KLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7Ci0gICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRl
c3Rpbmc6Ol8pKQotICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7Ci0gICAgRVhQRUNUX0NBTEwobV9t
b2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJ5KHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6OlBy
b3BlcnR5KCZXZWJDb3JlOjpJbnRTaXplOjpoZWlnaHQsIHRlc3Rpbmc6Okd0KDApKSkpOworICAg
IC8vIE9uIHRoZSBuZXh0IGFuaW1hdGlvbiBzdGVwIHRoZSBmbGluZyB3aWxsIGJlIGNhbmNlbGxl
ZCBpbW1lZGlhdGVseS4KICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCwgc2Nyb2xsRW5kKCkpOwotICAgIG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDMwLjEpOworICAg
IG1faW5wdXRIYW5kbGVyLT5hbmltYXRlKDUwMDAuMSk7CiAKICAgICB0ZXN0aW5nOjpNb2NrOjpW
ZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwot
Ci0gICAgLy8gVGhlbiBhYm9ydCB0aGUgc2Vjb25kIGZsaW5nLgotICAgIEVYUEVDVF9DQUxMKG1f
bW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKLSAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6
XywgdGVzdGluZzo6XykpCi0gICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29y
ZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbE9uTWFpblRocmVhZCkpOwotICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCeSh0ZXN0aW5nOjpfLCB0
ZXN0aW5nOjpfKSkuVGltZXMoMCk7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjcm9sbEVuZCgpKS5UaW1lcygwKTsKLQotICAgIC8vIFdlIHNob3VsZCBnZXQg
cGFyYW1ldGVycyBmcm9tIHRoZSBzZWNvbmQgZmxpbmcsIG5vdGhpbmcgZnJvbSB0aGUgZmlyc3Qg
Zmxpbmcgc2hvdWxkICJsZWFrIi4KLSAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIHRyYW5z
ZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbih0ZXN0aW5nOjpBbGxPZigKLSAgICAgICAgdGVz
dGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpkZWx0YSwgdGVzdGlu
Zzo6RXEoZmxpbmdEZWx0YSkpLAotICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnM6OnBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ1BvaW50KSksCi0gICAg
ICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6Z2xvYmFs
UG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5nR2xvYmFsUG9pbnQpKSwKLSAgICAgICAgdGVzdGluZzo6
RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjptb2RpZmllcnMsIHRlc3Rpbmc6
OkVxKG1vZGlmaWVycykpLAotICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxG
bGluZ1BhcmFtZXRlcnM6OnN0YXJ0VGltZSwgdGVzdGluZzo6RXEoMzApKSwKLSAgICAgICAgdGVz
dGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpjdW11bGF0aXZlU2Ny
b2xsLAotICAgICAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYlNpemU6OmhlaWdodCwgdGVzdGlu
Zzo6THQoMCkpKSkpKTsKLSAgICBtX2lucHV0SGFuZGxlci0+YW5pbWF0ZSgzMC4yKTsKIH0KIAog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163365</attachid>
            <date>2012-09-11 08:15:17 -0700</date>
            <delta_ts>2012-09-11 09:58:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95322-20120911161452.patch</filename>
            <type>text/plain</type>
            <size>5649</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDA2MDI2OTkzNjQyZDVlNDMxM2NiMTdlMjdjOWM2ZGU5ZmViMDY1NDguLjc3Y2UwODY1YTg2NjYz
ZGM0ZmM1YmMwNDA2Y2IzZWZiM2IzNGUxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMDktMTEgIElhaW4gTWVycmljayAgPGh1c2t5QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBkb3VibGUgY2FsbCB0byBzY3JvbGxCZWdp
bigpIHdoZW4gaGFuZGxpbmcgc2Nyb2xsIGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6Omhh
bmRsZUdlc3R1cmVGbGluZygpIGNhbGxzIHNjcm9sbEJlZ2luKCkgb24gaXRzCisgICAgICAgIGNs
aWVudCwgdGhlbiBpZiB0aGUgcmVzdWx0IGlzIFNjcm9sbFN0YXJ0ZWQsIGl0IGNyZWF0ZXMgYSBQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZQorICAgICAgICBvYmplY3QgdG8gaGFuZGxlIHRoZSBmbGluZyBh
bmltYXRpb24uIFRoaXMgcGF0Y2ggYWRkcyBhIG1hdGNoaW5nIHNjcm9sbEVuZCgpCisgICAgICAg
IGJlZm9yZSB0aGUgYW5pbWF0aW9uIHN0YXJ0cy4KKworICAgICAgICBOb3cgdXNpbmcgc3RyaWN0
IG1vY2tzIGluIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgd2hpY2ggdHVybnMg
YWxsCisgICAgICAgIHVuZXhwZWN0ZWQgY2FsbHMgaW50byB0ZXN0IGZhaWx1cmVzLiBUaGlzIGVu
c3VyZXMgdGhhdCBzY3JvbGxCZWdpbiAvIHNjcm9sbEVuZAorICAgICAgICBoYXBwZW4gZXhhY3Rs
eSB3aGVuIHdlIHdhbnQgYW5kIGF0IG5vIG90aGVyIHRpbWVzLgorCisgICAgICAgICogc3JjL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZyk6CisgICAgICAgICog
dGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OlRFU1Rf
Rik6CisKIDIwMTItMDktMTEgIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xsZWQgREVQUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNw
cAppbmRleCAxNjIyMmFjNGY2ZDdiYTU1ZjhjZTcwMzcyYTM3MWZkMmQ0MjQ3NDIzLi44N2Q3YjI1
MjJlOWM2OTZiMmE1YjFkYjNjYmExYjQ4Njg0ZGIyZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwu
Y3BwCkBAIC0yMDUsNiArMjA1LDcgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2
ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICBXZWJJ
bnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBzY3JvbGxTdGF0dXMgPSBtX2lucHV0SGFu
ZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oV2ViUG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVF
dmVudC55KSwgV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJbnB1dFR5cGVHZXN0dXJlKTsK
ICAgICBzd2l0Y2ggKHNjcm9sbFN0YXR1cykgewogICAgIGNhc2UgV2ViSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxTdGF0dXNTdGFydGVkOiB7CisgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50
LT5zY3JvbGxFbmQoKTsKICAgICAgICAgbV93aGVlbEZsaW5nQ3VydmUgPSBQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZUZhY3Rvcnk6OmdldCgpLT5jcmVhdGVDdXJ2ZShnZXN0dXJlRXZlbnQuZGF0YS5mbGlu
Z1N0YXJ0LnNvdXJjZURldmljZSwgRmxvYXRQb2ludChnZXN0dXJlRXZlbnQuZGF0YS5mbGluZ1N0
YXJ0LnZlbG9jaXR5WCwgZ2VzdHVyZUV2ZW50LmRhdGEuZmxpbmdTdGFydC52ZWxvY2l0eVkpKTsK
ICAgICAgICAgVFJBQ0VfRVZFTlRfQVNZTkNfQkVHSU4xKCJjYyIsICJXZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbDo6aGFuZGxlR2VzdHVyZUZsaW5nOjpzdGFydGVkIiwgdGhpcywgImN1cnZl
IiwgbV93aGVlbEZsaW5nQ3VydmUtPmRlYnVnTmFtZSgpKTsKICAgICAgICAgbV93aGVlbEZsaW5n
UGFyYW1ldGVycy5kZWx0YSA9IFdlYkZsb2F0UG9pbnQoZ2VzdHVyZUV2ZW50LmRhdGEuZmxpbmdT
dGFydC52ZWxvY2l0eVgsIGdlc3R1cmVFdmVudC5kYXRhLmZsaW5nU3RhcnQudmVsb2NpdHlZKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcAppbmRleCA4ODkyN2E5ODgwZjMyOTc0
Njc1MzBiOWQ2NGQ3ODc5OThlMzAyYjg0Li40OWZkYmZmN2RlZTQ3ZTcyNjk2MjQxODgxOWVhZjli
NDA4M2IwYTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCkBAIC0xMzMs
OSArMTMzLDkgQEAgcHVibGljOgogICAgIH0gd2hpbGUgKDApCiAKIHByb3RlY3RlZDoKLSAgICBN
b2NrV2ViSW5wdXRIYW5kbGVyQ2xpZW50IG1fbW9ja0lucHV0SGFuZGxlckNsaWVudDsKKyAgICB0
ZXN0aW5nOjpTdHJpY3RNb2NrPE1vY2tXZWJJbnB1dEhhbmRsZXJDbGllbnQ+IG1fbW9ja0lucHV0
SGFuZGxlckNsaWVudDsKICAgICBPd25QdHI8V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw+
IG1faW5wdXRIYW5kbGVyOwotICAgIE1vY2tXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50
IG1fbW9ja0NsaWVudDsKKyAgICB0ZXN0aW5nOjpTdHJpY3RNb2NrPE1vY2tXZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVyQ2xpZW50PiBtX21vY2tDbGllbnQ7CiAgICAgV2ViR2VzdHVyZUV2ZW50IGdl
c3R1cmU7CiAgICAgV2ViS2l0VGVzdHM6OldlYkNvbXBvc2l0b3JJbml0aWFsaXplciBtX2luaXRp
YWxpemVyOwogCkBAIC0yNTUsMTAgKzI1NSwxMSBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdTdGFydGVkKQogCiAgICAgRVhQRUNUX0NBTEwo
bV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5n
OjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJJbnB1dEhhbmRsZXJD
bGllbnQ6OlNjcm9sbFN0YXR1c1N0YXJ0ZWQpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1
dEhhbmRsZXJDbGllbnQsIHNjcm9sbEVuZCgpKTsKKyAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1
dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwogCiAgICAgZ2VzdHVyZS50eXBl
ID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CiAgICAgZ2VzdHVyZS5kYXRhLmZs
aW5nU3RhcnQudmVsb2NpdHlYID0gMTA7Ci0gICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5k
bGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKICAgICBtX2lucHV0SGFuZGxlci0+aGFu
ZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKIAogICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsK
QEAgLTMyOCw2ICszMjksNyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxU
ZXN0LCBnZXN0dXJlRmxpbmdBbmltYXRlcykKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhh
bmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9j
a0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6Xykp
CiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViSW5wdXRIYW5kbGVyQ2xpZW50
OjpTY3JvbGxTdGF0dXNTdGFydGVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5k
bGVyQ2xpZW50LCBzY3JvbGxFbmQoKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0
RXZlbnQoZ2VzdHVyZSk7CiAKICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVj
dGF0aW9ucygmbV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50KTsKQEAgLTQxMiw2ICs0MTQsNyBAQCBU
RVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdUcmFu
c2ZlclJlc2V0cykKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNj
aGVkdWxlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNs
aWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxs
T25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNT
dGFydGVkKSk7CisgICAgRVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxFbmQoKSk7CiAgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7
CiAKICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2Nr
SW5wdXRIYW5kbGVyQ2xpZW50KTsKQEAgLTQ5MSw2ICs0OTQsNyBAQCBURVNUX0YoV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdUcmFuc2ZlclJlc2V0cykKICAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9u
KCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVn
aW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpS
ZXR1cm4oV2ViSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXNTdGFydGVkKSk7CisgICAg
RVhQRUNUX0NBTEwobV9tb2NrSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxFbmQoKSk7CiAgICAg
bV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CiAKICAgICB0ZXN0aW5n
OjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrSW5wdXRIYW5kbGVyQ2xp
ZW50KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>