<?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>74982</bug_id>
          
          <creation_ts>2011-12-20 17:31:11 -0800</creation_ts>
          <short_desc>[chromium] Estimate pixel count for frame rate control</short_desc>
          <delta_ts>2012-03-31 14:18:51 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="W. James MacLean">wjmaclean</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>525004</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-12-20 17:31:11 -0800</bug_when>
    <thetext>The first version is purely experimental, just for the sake of prototyping some adaptive frame rate control.  We should definitely discuss the design of the &quot;real&quot; version after getting an idea of how the pieces will fit together.  And of course tests should be added to make sure these estimates are computed correctly.

Just for kicks I also estimated average overdraw per pixel, too.  It may be worth experimenting with them for frame rate control.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525012</commentid>
    <comment_count>1</comment_count>
      <attachid>120125</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-12-20 17:42:48 -0800</bug_when>
    <thetext>Created attachment 120125
not for review, just for prototyping

This should work well enough to use, but lets discuss how we should implement it cleanly when you have time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532390</commentid>
    <comment_count>2</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-01-09 11:48:51 -0800</bug_when>
    <thetext>Shawn, any update on getting this reviewed, landed, with a histogram added as well?

Dana, James, FYI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532569</commentid>
    <comment_count>3</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-01-09 15:32:18 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Shawn, any update on getting this reviewed, landed, with a histogram added as well?
&gt; 
&gt; Dana, James, FYI.

I believe James had already written a revision patch with histogram.  I think its appropriate if he can submit it here, and James and I can discuss it before asking others to review it.

Sound OK to you, James?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532570</commentid>
    <comment_count>4</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-09 15:33:21 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Shawn, any update on getting this reviewed, landed, with a histogram added as well?
&gt; &gt; 
&gt; &gt; Dana, James, FYI.
&gt; 
&gt; I believe James had already written a revision patch with histogram.  I think its appropriate if he can submit it here, and James and I can discuss it before asking others to review it.
&gt; 
&gt; Sound OK to you, James?

Sure ... I&apos;ll garden it, tidy it up and post it ... stay tuned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533448</commentid>
    <comment_count>5</comment_count>
      <attachid>121929</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-10 15:59:02 -0800</bug_when>
    <thetext>Created attachment 121929
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533449</commentid>
    <comment_count>6</comment_count>
      <attachid>121929</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-01-10 16:05:14 -0800</bug_when>
    <thetext>Comment on attachment 121929
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:724
&gt; +static float quadArea(const FloatQuad&amp; quad)

Should the function name say something about the scaling to viewport?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533452</commentid>
    <comment_count>7</comment_count>
      <attachid>121929</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-10 16:07:26 -0800</bug_when>
    <thetext>Comment on attachment 121929
Patch

Again, just ideas for discussion.

This patch places the &quot;pixels drawn&quot; measure into LRC&apos;s drawTexturedQuad (which pretty much all drawing seems to go through), and compensates for the draw transform. It can be extended to include scissoring by intersecting the transformed quad with the scissor rect, and taking the area of that (the quadArea function can be trivially extended to compute the area of any planar polygon - computing the intersection polygon is harder but not unreasonable).

Output is in fraction of viewport drawn (1.0 = every pixel drawn once). To see results * 1000, enter &quot;about:histograms&quot; in the location bar, and search for &quot;pixelOverDraw&quot;.

Does not estimate how much overdraw is &quot;unavoidable overdraw&quot;, e.g. a fully transparent layer over a fully opaque one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533456</commentid>
    <comment_count>8</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-01-10 16:12:02 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 121929 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121929&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:724
&gt; &gt; +static float quadArea(const FloatQuad&amp; quad)
&gt; 
&gt; Should the function name say something about the scaling to viewport?

Sure, although the fact it&apos;s outputting quad area as a fraction of the viewport size is mostly dependent on the scaling of the input quad, except for the factor 0.25 I added (0.125 = 0.5 * 0.25, where the 0.5 should always be included) ... it might be better to move that factor somewhere else out of the function ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533527</commentid>
    <comment_count>9</comment_count>
      <attachid>121929</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-01-10 17:38:51 -0800</bug_when>
    <thetext>Comment on attachment 121929
Patch

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

We should also support tracking the pre-culling pixels touched.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:695
&gt; +    PlatformSupport::histogramCustomCounts(&quot;Renderer4.pixelOverDraw&quot;,

I would rather this was done outside LayerRendererChromium. Perhaps in CLTHI.

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:770
&gt; +    m_pixelsDrawn += quadArea(drawTransform.mapQuad(quad));

Can we have this on a struct like
DrawingStatistics {
  pixelsDrawn;
}
and pass that around? I dont like ephemeral state on LRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555253</commentid>
    <comment_count>10</comment_count>
      <attachid>126770</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-13 07:38:23 -0800</bug_when>
    <thetext>Created attachment 126770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555260</commentid>
    <comment_count>11</comment_count>
      <attachid>126770</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-13 07:55:21 -0800</bug_when>
    <thetext>Comment on attachment 126770
Patch

Attachment 126770 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11506817</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555268</commentid>
    <comment_count>12</comment_count>
      <attachid>126774</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-13 08:11:48 -0800</bug_when>
    <thetext>Created attachment 126774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558916</commentid>
    <comment_count>13</comment_count>
      <attachid>126774</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-02-16 22:14:19 -0800</bug_when>
    <thetext>Comment on attachment 126774
Patch

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

What should we have for unit tests here? Presumably we can build on the quad tests to do stuff like, &quot;for geometry x, we expect to see overdraw of blahblahblah.&quot;

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

Remove this line.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:246
&gt; +    // FIXME: Only compute overdraw metrics occasionally, not on every frame.

How heavy is computing the metrics, in your estimation?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:251
&gt; +    TRACE_EVENT1(&quot;CCLayerTreeHostImpl::optimizeRenderPasses&quot;, &quot;pixelOverdraw&quot;, &quot;opaque&quot;, static_cast&lt;int&gt;(normalization * overdrawCounts.m_drawnOpaque));

I think you want histograms here, not trace_events. git grep in the cc folder for histogram for the right code.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h:42
&gt; +    float m_drawnOpaque;

Add //s for each of these explaining what they represent.

Adjust the variable name to show unit.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h:55
&gt; +    void optimizeQuads(CCOverdrawCounts*);

can we pass in 0 to avoid the calulation? Might make a note in a // to point out that this is valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559139</commentid>
    <comment_count>14</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-17 05:41:34 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 126774 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126774&amp;action=review
&gt; 
&gt; What should we have for unit tests here? Presumably we can build on the quad tests to do stuff like, &quot;for geometry x, we expect to see overdraw of blahblahblah.&quot;
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests. (OOPS!)
&gt; 
&gt; Remove this line.

OK, although I had thought we might need to add a test.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:246
&gt; &gt; +    // FIXME: Only compute overdraw metrics occasionally, not on every frame.
&gt; 
&gt; How heavy is computing the metrics, in your estimation?

I don&apos;t have a great answer, although I suspect it&apos;s heavier that we want to do per frame. It&apos;s done per-quad, and in the case of a quad that is drawn involves at least one extra transform applied to map a quad, sometimes two (but no inverses), and then multiple invocations of the area function (pretty cheap). If the transforms and intersections aren&apos;t considered heavy, then it&apos;s not too bad.

I&apos;ll do a simple experiment to see how expensive it is ...

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:251
&gt; &gt; +    TRACE_EVENT1(&quot;CCLayerTreeHostImpl::optimizeRenderPasses&quot;, &quot;pixelOverdraw&quot;, &quot;opaque&quot;, static_cast&lt;int&gt;(normalization * overdrawCounts.m_drawnOpaque));
&gt; 
&gt; I think you want histograms here, not trace_events. git grep in the cc folder for histogram for the right code.

Oh. That&apos;s what I originally had (see patch https://bugs.webkit.org/attachment.cgi?id=121929), but I thought you had wanted TRACE events, so I changed. Will change back.

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h:42
&gt; &gt; +    float m_drawnOpaque;
&gt; 
&gt; Add //s for each of these explaining what they represent.

Ok.

&gt; Adjust the variable name to show unit.

All are pixels, although histogram values reported are unitless (and scaled to 1).

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderPass.h:55
&gt; &gt; +    void optimizeQuads(CCOverdrawCounts*);
&gt; 
&gt; can we pass in 0 to avoid the calulation? Might make a note in a // to point out that this is valid.

Yes, we can - I&apos;ll add a note.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559206</commentid>
    <comment_count>15</comment_count>
      <attachid>127592</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-17 08:16:45 -0800</bug_when>
    <thetext>Created attachment 127592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559210</commentid>
    <comment_count>16</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-17 08:23:06 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; 
&gt; I&apos;ll do a simple experiment to see how expensive it is ...

So assuming monotonicallyIncreasingTime() has sufficient resolution, I collected culling times with and without overdraw calculation, for alternating frames, for an Aura build with a single chrome window on the Aura desktop. I used alternating frames to try and keep the culling samples fairly similar between the two populations.

with Overdraw calculation:

average time for culling: 1.14 mS
std dev for culling: 0.74

without Overdraw calculation:

average time for culling: 1.05 mS
std dev for culling: 0.74 mS
  
It&apos;s a fairly small sample size, but then the computations should be fairly deterministic, so the overdraw computation adds (roughly) 8.7% to the culling time (both scale with the number of quads in the render pass)

&gt; All are pixels, although histogram values reported are unitless (and scaled to 1).

Sorry, scaled to 1000, I mispoke.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565937</commentid>
    <comment_count>17</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-02-27 13:44:07 -0800</bug_when>
    <thetext>(In reply to comment #16)

I think you should make 2 or 3 tests that create some quads and verify that the values this creates are correct.

If you some tests created, then it LGTM and bounce it over to jamesr for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565983</commentid>
    <comment_count>18</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-27 14:30:07 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; 
&gt; I think you should make 2 or 3 tests that create some quads and verify that the values this creates are correct.
&gt; 
&gt; If you some tests created, then it LGTM and bounce it over to jamesr for review.

Thanks NAt! I was holding off on implementing tests until I got some feedback on the basic approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566655</commentid>
    <comment_count>19</comment_count>
      <attachid>129250</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-28 07:29:34 -0800</bug_when>
    <thetext>Created attachment 129250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567815</commentid>
    <comment_count>20</comment_count>
      <attachid>129250</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-29 12:14:43 -0800</bug_when>
    <thetext>Comment on attachment 129250
Patch

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

Looks good to me!

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:244
&gt; +    float normalization = 1000.f / (m_layerRenderer-&gt;viewportWidth() * m_layerRenderer-&gt;viewportHeight());

Out of curiosity, what&apos;s the 1000 for? Is there some limitation on the values that the histograms can capture?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567820</commentid>
    <comment_count>21</comment_count>
      <attachid>129250</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-29 12:22:46 -0800</bug_when>
    <thetext>Comment on attachment 129250
Patch

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

R=me, looks good.

Do we have a good sense for the cost of this? I think it should be pretty low, right?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:133
&gt; +        if (overdrawMetrics) {

can you add a TRACE_EVENT for this block so we can tell if the overdraw calculation is getting heavy when looking at traces?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567821</commentid>
    <comment_count>22</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-29 12:23:34 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 129250 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129250&amp;action=review
&gt; 
&gt; Looks good to me!
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:244
&gt; &gt; +    float normalization = 1000.f / (m_layerRenderer-&gt;viewportWidth() * m_layerRenderer-&gt;viewportHeight());
&gt; 
&gt; Out of curiosity, what&apos;s the 1000 for? Is there some limitation on the values that the histograms can capture?

This is a &apos;counts&apos; histogram, so we need to get integers out at the end. I think the idea here is to map to the range [0, 1000]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567822</commentid>
    <comment_count>23</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-29 12:26:14 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 129250 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129250&amp;action=review
&gt; 
&gt; R=me, looks good.
&gt; 
&gt; Do we have a good sense for the cost of this? I think it should be pretty low, right?

Yes, should be less than 10% of the culling cost, and we can ultimately decide to just run it on selected frames.
 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:133
&gt; &gt; +        if (overdrawMetrics) {
&gt; 
&gt; can you add a TRACE_EVENT for this block so we can tell if the overdraw calculation is getting heavy when looking at traces?

Good idea, consider it done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567823</commentid>
    <comment_count>24</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-29 12:26:29 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 129250 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129250&amp;action=review
&gt; &gt; 
&gt; &gt; Looks good to me!
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:244
&gt; &gt; &gt; +    float normalization = 1000.f / (m_layerRenderer-&gt;viewportWidth() * m_layerRenderer-&gt;viewportHeight());
&gt; &gt; 
&gt; &gt; Out of curiosity, what&apos;s the 1000 for? Is there some limitation on the values that the histograms can capture?
&gt; 
&gt; This is a &apos;counts&apos; histogram, so we need to get integers out at the end. I think the idea here is to map to the range [0, 1000]

Yup!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567825</commentid>
    <comment_count>25</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-29 12:27:56 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 129250 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129250&amp;action=review
&gt; &gt; 
&gt; &gt; Looks good to me!
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:244
&gt; &gt; &gt; +    float normalization = 1000.f / (m_layerRenderer-&gt;viewportWidth() * m_layerRenderer-&gt;viewportHeight());
&gt; &gt; 
&gt; &gt; Out of curiosity, what&apos;s the 1000 for? Is there some limitation on the values that the histograms can capture?
&gt; 
&gt; This is a &apos;counts&apos; histogram, so we need to get integers out at the end. I think the idea here is to map to the range [0, 1000]

Actually, 1000 &lt;--&gt; 1.0, where 1.0 =&gt; zero overdraw. In reality we expect the values to be somewhat above 1.0 as we can&apos;t prevent all overdraw, but we don&apos;t want it being 2.0 (2000) either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567844</commentid>
    <comment_count>26</comment_count>
      <attachid>129493</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-02-29 12:51:17 -0800</bug_when>
    <thetext>Created attachment 129493
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568226</commentid>
    <comment_count>27</comment_count>
      <attachid>129493</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-29 19:18:42 -0800</bug_when>
    <thetext>Comment on attachment 129493
Patch for landing

Rejecting attachment 129493 from commit-queue.

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

Last 500 characters of output:
5893f545307eee0e0891d77ce2b1c1
r109289 = 76edf1862c2775c8a612a5c1ae46efdfd7eef552
r109290 = 29f8c8bcf28f90ab977260a3e046d2e3199160be
r109291 = 8342c092acf17bb8b669c009b37c09dc223a07e9
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
RA layer request failed: OPTIONS of &apos;http://svn.webkit.org/repository/webkit&apos;: timed out waiting for server (http://svn.webkit.org) at /usr/lib/git-core/git-svn line 2295

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

Full output: http://queues.webkit.org/results/11776115</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568244</commentid>
    <comment_count>28</comment_count>
      <attachid>129493</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-29 19:40:57 -0800</bug_when>
    <thetext>Comment on attachment 129493
Patch for landing

Sorry, the SVN outage is confusing the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568287</commentid>
    <comment_count>29</comment_count>
      <attachid>129493</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-29 20:33:50 -0800</bug_when>
    <thetext>Comment on attachment 129493
Patch for landing

Clearing flags on attachment: 129493

Committed r109304: &lt;http://trac.webkit.org/changeset/109304&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568288</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-29 20:33:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120125</attachid>
            <date>2011-12-20 17:42:48 -0800</date>
            <delta_ts>2012-01-10 15:58:59 -0800</delta_ts>
            <desc>not for review, just for prototyping</desc>
            <filename>bug-74982-20111220174247.patch</filename>
            <type>text/plain</type>
            <size>9130</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMzA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWFiY2Y5MTNiNDNhMDE2
OWVjNjliYzAwNmE5MmE1MTA3ZjQ0ZDliMS4uMjBiODNkNDU4MzIyZjFhZTljNmEwMzRmODVlYjZh
ZDA1NTJlNzczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTEyLTIwICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDk4MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgbm90IGludGVuZGVkIHRv
IGxhbmQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmVzdGltYXRlTnVtYmVyUGl4
ZWxzVG9CZURyYXduKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dEltcGw6OmVzdGltYXRlRHJhd2luZ092ZXJoZWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmVzdGltYXRlTnVtYmVyUGl4ZWxzVG9C
ZURyYXduKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmg6CisKIDIwMTEtMTItMjAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5i
b3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDMyOTEu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckltcGwuaAppbmRleCAyNmM3YTJmNGQ1ZWM1OTRmODdiY2M3NTMxMmM2OGIw
N2QwODFkZjY5Li5jNjE3M2RiNzMyMWRlMTJmODAxMGI5MjY1MmUxNzM2NDY5YmEzMThiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTE5Nyw2ICsxOTcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBs
YXllclByb3BlcnR5Q2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQ7IH0KICAgICB2b2lkIHJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7CiAKKyAg
ICB2aXJ0dWFsIGludCBlc3RpbWF0ZU51bWJlclBpeGVsc1RvQmVEcmF3bigpIHsgcmV0dXJuIG1f
Ym91bmRzLndpZHRoKCkgKiBtX2JvdW5kcy5oZWlnaHQoKTsgfQorICAgIAogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IENDTGF5ZXJJbXBsKGludCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKaW5kZXggMDk0NjViZjk5ZTc5ZmU3MWYyNDE3NDY3ODQ1MmRhZWY4NzU5
MTA3NC4uYzY4MWFjNmM5ODdmZTlkZmZiZmNmNWQyZjAyOWM0YTcyMmNjNWEyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTE4Nyw2ICsxODcsNTEgQEAgc3Rh
dGljIEZsb2F0UmVjdCBkYW1hZ2VJblN1cmZhY2VTcGFjZShDQ0xheWVySW1wbCogcmVuZGVyU3Vy
ZmFjZUxheWVyLCBjb25zdCBGbG8KICAgICByZXR1cm4gc3VyZmFjZURhbWFnZVJlY3Q7CiB9CiAK
K3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZXN0aW1hdGVEcmF3aW5nT3ZlcmhlYWRzKGNvbnN0
IENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQoreworICAgIC8vIEZpcnN0IHZl
cnNpb24gb2YgYXBwcm94aW1hdGlvbjoKKyAgICAvLyAgLSBEb2VzIG5vdCBjb25zaWRlciBkYW1h
Z2VSZWN0L2NsaXBSZWN0LCBjdWxsaW5nLgorICAgIC8vICAtIFJlcGxpY2FzIChDU1MgcmVmbGVj
dGlvbnMpIGFyZSBhc3N1bWVkIHRvIGRvdWJsZSB0aGUgbnVtYmVyIG9mIHBpeGVscyBkcmF3biBm
b3IgdGhhdCBzdXJmYWNlLgorICAgIC8vICAtIE1hc2tzIGRvIG5vdCBhZmZlY3QgdGhlIG51bWJl
ciBvZiBwaXhlbHMgdGhhdCBhcmUgZHJhd24sIGJ1dCB0aGV5IGRvIHNsaWdodGx5IGluY3JlYXNl
IHRoZSBjb3N0IG9mIHNoYWRpbmcgZWFjaCBwaXhlbCAobm90IGVzdGltYXRlZCBoZXJlKS4KKyAg
ICAvLyAgLSAqKiBDbGlwcGluZyBzaG91bGQgcHJvYmFibHkgYmUgYWNjb3VudGVkIGZvciBiZWZv
cmUgbGFuZGluZyB0aGlzLCBidXQgaW4gdGhpcyBmaXJzdCB2ZXJzaW9uIHRoZXkgYXJlIG5vdCBj
b25zaWRlcmVkLgorCisgICAgLy8gTnVtYmVyIG9mIHBpeGVscyB0aGF0IGFyZSBkcmF3bjsgaS5l
LiB0aGUgbnVtYmVyIG9mIHBpeGVscyBpbiBhbGwgbGF5ZXJzL3N1cmZhY2VzLgorICAgIGludCB0
b3RhbFBpeGVsQ291bnQgPSAwOworCisgICAgLy8gTnVtYmVyIG9mIHBpeGVscyBvbiB0aGUgc2Ny
ZWVuLgorICAgIGludCB2aWV3cG9ydFBpeGVsQ291bnQgPSBtX3ZpZXdwb3J0U2l6ZS53aWR0aCgp
ICogbV92aWV3cG9ydFNpemUuaGVpZ2h0KCk7CisgICAgCisgICAgZm9yIChpbnQgc3VyZmFjZUlu
ZGV4ID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0g
MCA7IC0tc3VyZmFjZUluZGV4KSB7CisgICAgICAgIENDTGF5ZXJJbXBsKiByZW5kZXJTdXJmYWNl
TGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAg
ICAgIENDUmVuZGVyU3VyZmFjZSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+
cmVuZGVyU3VyZmFjZSgpOworICAgICAgICBjb25zdCBDQ0xheWVyTGlzdCYgbGF5ZXJMaXN0ID0g
cmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBsYXll
ckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVyTGlzdC5zaXplKCk7ICsrbGF5ZXJJbmRleCkg
eworICAgICAgICAgICAgQ0NMYXllckltcGwqIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhd
LmdldCgpOworCisgICAgICAgICAgICBpZiAobGF5ZXItPnZpc2libGVMYXllclJlY3QoKS5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChDQ0xh
eWVyVHJlZUhvc3RDb21tb246OnJlbmRlclN1cmZhY2VDb250cmlidXRlc1RvVGFyZ2V0KGxheWVy
LCByZW5kZXJTdXJmYWNlTGF5ZXItPmlkKCkpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIGxh
eWVyIGNvbnRyaWJ1dGVzIHRoZSByZW5kZXJTdXJmYWNlIHRoYXQgaXQgb3ducyB0byB0aGUgdGFy
Z2V0IHN1cmZhY2UuCisgICAgICAgICAgICAgICAgQ0NSZW5kZXJTdXJmYWNlKiBjb250cmlidXRp
bmdTdXJmYWNlID0gbGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAgICAgICAgICBpbnQg
bnVtUGl4ZWxzQ29udHJpYnV0ZWRUb1RhcmdldCA9IGNvbnRyaWJ1dGluZ1N1cmZhY2UtPmNvbnRl
bnRSZWN0KCkud2lkdGgoKSAqIGNvbnRyaWJ1dGluZ1N1cmZhY2UtPmNvbnRlbnRSZWN0KCkuaGVp
Z2h0KCk7CisgICAgICAgICAgICAgICAgaWYgKGxheWVyLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICAg
ICAgICAgICAgICAgICAgbnVtUGl4ZWxzQ29udHJpYnV0ZWRUb1RhcmdldCAqPSAyOworICAgICAg
ICAgICAgICAgIHRvdGFsUGl4ZWxDb3VudCArPSBudW1QaXhlbHNDb250cmlidXRlZFRvVGFyZ2V0
OworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgLy8gVGhlIGxheWVyIGNvbnRy
aWJ1dGVzIGl0c2VsZiB0byB0aGUgdGFyZ2V0IHN1cmZhY2UuCisgICAgICAgICAgICAgICAgdG90
YWxQaXhlbENvdW50ICs9IGxheWVyLT5lc3RpbWF0ZU51bWJlclBpeGVsc1RvQmVEcmF3bigpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gRklYTUU6IGhvcGVmdWxseSB3ZSBjYW4gZW50aXJl
bHkgYXZvaWQgc3RvcmluZyB0aGVzZS4KKyAgICBtX2VzdGltYXRlZFRvdGFsUGl4ZWxzRHJhd24g
PSB0b3RhbFBpeGVsQ291bnQ7CisgICAgbV9lc3RpbWF0ZWRBdmVyYWdlT3ZlcmRyYXcgPSBzdGF0
aWNfY2FzdDxmbG9hdD4odG90YWxQaXhlbENvdW50KSAvIHN0YXRpY19jYXN0PGZsb2F0Pih2aWV3
cG9ydFBpeGVsQ291bnQpOworICAgIGZwcmludGYoc3RkZXJyLCAiZXN0aW1hdGVkIHRvdGFsIHBp
eGVscyBkcmF3bjogJWRcbiIsIG1fZXN0aW1hdGVkVG90YWxQaXhlbHNEcmF3bik7CisgICAgZnBy
aW50ZihzdGRlcnIsICJlc3RpbWF0ZWQgYXZlcmFnZSBvdmVyZHJhdyBwZXIgcGl4ZWwsIGZvciBw
aXhlbHMgb24gdGhlIHNjcmVlbjogJS4zZlxuIiwgbV9lc3RpbWF0ZWRBdmVyYWdlT3ZlcmRyYXcp
OworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhW
ZWN0b3I8T3duUHRyPENDUmVuZGVyUGFzcz4gPiYgcGFzc2VzKQogewogICAgIENDTGF5ZXJMaXN0
IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CkBAIC0yMDksNiArMjU0LDkgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoVmVjdG9yPE93blB0cjxDQ1JlbmRl
clBhc3M+ID4mIHAKICAgICAgICAgdHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyhyb290TGF5ZXIo
KSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgRmxvYXRSZWN0IHJvb3REYW1hZ2VSZWN0
ID0gcm9vdExheWVyKCktPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50
RGFtYWdlUmVjdCgpOwogCisgICAgLy8gRklYTUU6IGZpbmQgYSBiZXR0ZXIgcGxhY2UgdG8gcHV0
IHRoaXMgZnVuY3Rpb25hbGl0eSwgaWRlYWxseSB3aXRob3V0IG5lZWRpbmcgdG8gc3RvcmUgc3Rh
dGUuCisgICAgZXN0aW1hdGVEcmF3aW5nT3ZlcmhlYWRzKHJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OworICAgIAogICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxp
c3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewogICAg
ICAgICBDQ0xheWVySW1wbCogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVy
TGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBDQ1JlbmRlclN1cmZhY2UqIHJlbmRl
clN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBlZDM4Yjg2ZGU0NmZjYjM1NDViODA4OWVm
MTZjNmI0NTIxMzg4ZGQxLi45N2ViYWEzNWIxMzkxYjNmZjdjYjczNzEzZDQ4NjkwNWM3NzRhOTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMzYsNiArMTM2LDE0
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0cmFja0RhbWFnZUZvckFsbFN1cmZhY2VzKENDTGF5ZXJJ
bXBsKiByb290RHJhd0xheWVyLCBjb25zdCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCk7CiAgICAgdm9pZCBjYWxjdWxhdGVSZW5kZXJQYXNzZXMoVmVjdG9yPE93blB0cjxDQ1Jl
bmRlclBhc3M+ID4mKTsKIAorICAgIHZvaWQgZXN0aW1hdGVEcmF3aW5nT3ZlcmhlYWRzKGNvbnN0
IENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKworICAgIC8vIEZJWE1FOiBo
b3BlZnVsbHkgd2UgY2FuIGVudGlyZWx5IGF2b2lkIHN0b3JpbmcgdGhlc2Ugc3RhdHMuCisgICAg
Ly8gVGhlIGVzdGltYXRlZCBudW1iZXIgb2YgcGl4ZWxzIHRoYXQgYWN0dWFsbHkgd2VudCB0aHJv
dWdoIHRoZSBHUFUgZnJhZ21lbnQgc2hhZGVyLgorICAgIGludCBtX2VzdGltYXRlZFRvdGFsUGl4
ZWxzRHJhd247CisgICAgLy8gVGhlIGVzdGltYXRlZCBhdmVyYWdlIGFtb3VudCBvZiBvdmVyZHJh
dyBwZXIgcGl4ZWwsIGZvciBwaXhlbHMgb24gdGhlIHNjcmVlbi4KKyAgICBmbG9hdCBtX2VzdGlt
YXRlZEF2ZXJhZ2VPdmVyZHJhdzsKKwogICAgIE93blB0cjxMYXllclJlbmRlcmVyQ2hyb21pdW0+
IG1fbGF5ZXJSZW5kZXJlcjsKICAgICBSZWZQdHI8Q0NMYXllckltcGw+IG1fcm9vdExheWVySW1w
bDsKICAgICBSZWZQdHI8Q0NMYXllckltcGw+IG1fc2Nyb2xsTGF5ZXJJbXBsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCA0OTA2NjU0YzAwMWQ0YTk2ODU5NDk3YTI5Mzgz
NWI4MzA0NmJjNDRhLi4xNmJkNTlhZjQyZjZhYTkzYzEzMjhkZDZjZjgxY2JiMzc5YjI3ZTI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtMTc4LDYgKzE3OCwyOSBAQCB2
b2lkIENDVGlsZWRMYXllckltcGw6OnN5bmNUZXh0dXJlSWQoaW50IGksIGludCBqLCBQbGF0Zm9y
bTNET2JqZWN0IHRleHR1cmVJZCkKICAgICB0aWxlLT5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsK
IH0KIAoraW50IENDVGlsZWRMYXllckltcGw6OmVzdGltYXRlTnVtYmVyUGl4ZWxzVG9CZURyYXdu
KCkKK3sKKyAgICBpbnQgdG90YWxQaXhlbENvdW50ID0gMDsKKyAgICAKKyAgICAvLyBGSVhNRTog
dGhpcyBjb2RlIGlzIHZlcnkgcmVkdW5kYW50IHdpdGggYXBwZW5kUXVhZHMoKTsgaWYgcG9zc2li
bGUgdGhleSBzaG91bGQgc2hhcmUgY29kZS4KKyAgICBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCA9IHZpc2libGVMYXllclJlY3QoKTsKKyAgICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9t
OworICAgIG1fdGlsZXItPmNvbnRlbnRSZWN0VG9UaWxlSW5kaWNlcyhjb250ZW50UmVjdCwgbGVm
dCwgdG9wLCByaWdodCwgYm90dG9tKTsKKyAgICBJbnRSZWN0IGxheWVyUmVjdCA9IG1fdGlsZXIt
PmNvbnRlbnRSZWN0VG9MYXllclJlY3QoY29udGVudFJlY3QpOworICAgIGZvciAoaW50IGogPSB0
b3A7IGogPD0gYm90dG9tOyArK2opIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0g
cmlnaHQ7ICsraSkgeworICAgICAgICAgICAgSW50UmVjdCB0aWxlUmVjdCA9IG1fdGlsZXItPnRp
bGVCb3VuZHMoaSwgaik7CisgICAgICAgICAgICBJbnRSZWN0IGRpc3BsYXlSZWN0ID0gdGlsZVJl
Y3Q7CisgICAgICAgICAgICB0aWxlUmVjdC5pbnRlcnNlY3QobGF5ZXJSZWN0KTsKKworICAgICAg
ICAgICAgLy8gQXQgdGhpcyBwb2ludCBpdCBpcyB2ZXJ5IGxpa2VseSB3ZSB3aWxsIGRyYXcgYSB0
aWxlL3F1YWQgb2Ygc2l6ZSB0aWxlUmVjdC5zaXplKCkuCisgICAgICAgICAgICB0b3RhbFBpeGVs
Q291bnQgKz0gdGlsZVJlY3Qud2lkdGgoKSAqIHRpbGVSZWN0LmhlaWdodCgpOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIHRvdGFsUGl4ZWxDb3VudDsKK30KKwogfQogCiAjZW5kaWYg
Ly8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5oCmluZGV4IDQ3OGIwMzQwMjM0NTA4MTliYmNlYTBhOGRhNWFkMzIxNTZmNTRiZDIuLmJlZTEz
YjViOGI2MWQ5OWVjZDQ0ZDIyZTAxNGVjODk1MzU3YThhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lk
IGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0OwogCisg
ICAgdmlydHVhbCBpbnQgZXN0aW1hdGVOdW1iZXJQaXhlbHNUb0JlRHJhd24oKTsKKwogICAgIHZv
aWQgc2V0U2tpcHNEcmF3KGJvb2wgc2tpcHNEcmF3KSB7IG1fc2tpcHNEcmF3ID0gc2tpcHNEcmF3
OyB9CiAgICAgdm9pZCBzZXRUaWxpbmdEYXRhKGNvbnN0IENDTGF5ZXJUaWxpbmdEYXRhJiB0aWxl
cik7CiAgICAgdm9pZCBzeW5jVGV4dHVyZUlkKGludCwgaW50LCBQbGF0Zm9ybTNET2JqZWN0IHRl
eHR1cmVJZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121929</attachid>
            <date>2012-01-10 15:59:02 -0800</date>
            <delta_ts>2012-02-13 07:38:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74982-20120110185901.patch</filename>
            <type>text/plain</type>
            <size>5070</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjFlNWRkZDcxNzQ4ODJl
MGZlODYzYzc5MGI4YjRjYjJlOWNkMTE2Ny4uYjMyZWY3NDgzYmQ5M2I3MzI3MTRjNmZkNTRlN2Mz
ZjJjMjlkYmFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTEwICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEVzdGltYXRlIHBpeGVsIGNvdW50IGZvciBmcmFtZSByYXRlIGNvbnRyb2wKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0OTgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09Q
UyEpCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpi
ZWdpbkRyYXdpbmdGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmZpbmlzaERyYXdpbmdGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjp3ZWRnZVByb2R1Y3Qp
OgorICAgICAgICAoV2ViQ29yZTo6cXVhZEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJS
ZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKwogMjAxMi0wMS0xMCAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgRG8g
bm90IGFsbG93IEFycmF5IGxlbmd0aCB0byBiZSBzZXQgaWYgaXQgaXMgbm9uLWNvbmZpZ3VyYWJs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggOTMzZTc4MjUzYjE4
YzUzNjMxZDEzYTMzZjAzOGVlYWZiOTYwMjVlYS4uYmQ2OTk3ZTBjNGE0MWRjNWE1MDM5NTE3ZGQ0
Njk1NmJiMTlhOThjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBA
IC0zMzcsNiArMzM3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmJlZ2luRHJhd2lu
Z0ZyYW1lKCkKICAgICAvLyBUaGlzIHZhbHVlIGlzIGN1cnJlbnRseSBpbmFjY2Vzc2libGUgYmVj
YXVzZSBpdCBpcyB1cCBpbiBDaHJvbWl1bSdzCiAgICAgLy8gUmVuZGVyV2lkZ2V0LgogICAgIG1f
aGVhZHNVcERpc3BsYXktPm9uRnJhbWVCZWdpbihjdXJyZW50VGltZSgpKTsKKyAgICBtX3BpeGVs
c0RyYXduID0gMDsKIAogICAgIHNpemVfdCBjb250ZW50c01lbW9yeVVzZUJ5dGVzID0gbV9jb250
ZW50c1RleHR1cmVBbGxvY2F0b3ItPmN1cnJlbnRNZW1vcnlVc2VCeXRlcygpOwogICAgIHNpemVf
dCBtYXhMaW1pdCA9IFRleHR1cmVNYW5hZ2VyOjpoaWdoTGltaXRCeXRlcyh2aWV3cG9ydFNpemUo
KSk7CkBAIC02ODUsOCArNjg2LDE0IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpmaW5p
c2hEcmF3aW5nRnJhbWUoKQogICAgIG1fcmVuZGVyU3VyZmFjZVRleHR1cmVNYW5hZ2VyLT5yZWR1
Y2VNZW1vcnlUb0xpbWl0KHByZWZlcnJlZExpbWl0KTsKICAgICBtX3JlbmRlclN1cmZhY2VUZXh0
dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKG1fcmVuZGVyU3VyZmFjZVRleHR1cmVB
bGxvY2F0b3IuZ2V0KCkpOwogCi0gICAgaWYgKHNldHRpbmdzKCkuY29tcG9zaXRlT2Zmc2NyZWVu
KQorICAgIGlmIChzZXR0aW5ncygpLmNvbXBvc2l0ZU9mZnNjcmVlbikgewogICAgICAgICBjb3B5
T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOworICAgICAgICBtX3BpeGVsc0RyYXduICs9IDE7
CisgICAgfQorCisgICAgLy8gU2NhbGUgcmVzdWx0cyBieSAxMDAwLCBzaW5jZSBoaXN0b2dyYW0g
bWVjaGFuaXNtIG9ubHlzIGFjY2VwdHMgaW50ZWdlciBpbnB1dC4KKyAgICBQbGF0Zm9ybVN1cHBv
cnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50cygiUmVuZGVyZXI0LnBpeGVsT3ZlckRyYXciLAorICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KDEwMDAuZiAqIG1fcGl4ZWxzRHJhd24pLCAxMDAsIDEwMDAw
MDAsIDUwKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRvR0xNYXRyaXgoZmxv
YXQqIGZsYXR0ZW5lZCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG0pCkBAIC03MDksNiAr
NzE2LDIxIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0b0dMTWF0cml4KGZsb2F0KiBm
bGF0dGVuZWQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0CiAgICAgZmxhdHRlbmVkWzE1XSA9IG0u
bTQ0KCk7CiB9CiAKK3N0YXRpYyBmbG9hdCB3ZWRnZVByb2R1Y3QoY29uc3QgRmxvYXRQb2ludCYg
cDEsIGNvbnN0IEZsb2F0UG9pbnQmIHAyKQoreworICAgIHJldHVybiBwMS54KCkgKiBwMi55KCkg
LSBwMS55KCkgKiBwMi54KCk7Cit9CisKK3N0YXRpYyBmbG9hdCBxdWFkQXJlYShjb25zdCBGbG9h
dFF1YWQmIHF1YWQpCit7CisgICAgLy8gRmFjdG9yIG9mIDAuMTI1IHJlcXVpcmVkIHRvIGNvbnZl
cnQgYXJlYSB0byBmcmFjdGlvbiBvZgorICAgIC8vIHZpZXdwb3J0IHBpeGVscy4KKyAgICByZXR1
cm4gZmFicygwLjEyNSAqICh3ZWRnZVByb2R1Y3QocXVhZC5wMSgpLCBxdWFkLnAyKCkpICsKKyAg
ICAgICAgICAgICAgICAgICB3ZWRnZVByb2R1Y3QocXVhZC5wMigpLCBxdWFkLnAzKCkpICsKKyAg
ICAgICAgICAgICAgICAgICB3ZWRnZVByb2R1Y3QocXVhZC5wMygpLCBxdWFkLnA0KCkpICsKKyAg
ICAgICAgICAgICAgICAgICB3ZWRnZVByb2R1Y3QocXVhZC5wNCgpLCBxdWFkLnAxKCkpKSk7Cit9
CisKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgb3Bh
Y2l0eSwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IG1hdHJpeExvY2F0aW9uLCBpbnQgYWxwaGFMb2NhdGlvbiwg
aW50IHF1YWRMb2NhdGlvbikKQEAgLTcyMSw3ICs3NDMsOCBAQCB2b2lkIExheWVyUmVuZGVyZXJD
aHJvbWl1bTo6ZHJhd1RleHR1cmVkUXVhZChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJh
d01hdAogICAgIHJlbmRlck1hdHJpeC5zY2FsZTNkKHdpZHRoLCBoZWlnaHQsIDEpOwogCiAgICAg
Ly8gQXBwbHkgdGhlIHByb2plY3Rpb24gbWF0cml4IGJlZm9yZSBzZW5kaW5nIHRoZSB0cmFuc2Zv
cm0gb3ZlciB0byB0aGUgc2hhZGVyLgotICAgIHRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBtX3By
b2plY3Rpb25NYXRyaXggKiByZW5kZXJNYXRyaXgpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGRyYXdUcmFuc2Zvcm0gPSBtX3Byb2plY3Rpb25NYXRyaXggKiByZW5kZXJNYXRyaXg7CisgICAg
dG9HTE1hdHJpeCgmZ2xNYXRyaXhbMF0sIGRyYXdUcmFuc2Zvcm0pOwogCiAgICAgR0xDKG1fY29u
dGV4dCwgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1hdHJpeExvY2F0aW9uLCBmYWxzZSwg
JmdsTWF0cml4WzBdLCAxKSk7CiAKQEAgLTc0Miw2ICs3NjUsOSBAQCB2b2lkIExheWVyUmVuZGVy
ZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVkUXVhZChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZHJhd01hdAogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVuaWZvcm0xZihhbHBo
YUxvY2F0aW9uLCBvcGFjaXR5KSk7CiAKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRy
YXdFbGVtZW50cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVTLCA2LCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfU0hPUlQsIDApKTsKKworICAgIC8vIEZJWE1FOiBDbGlwIHF1YWQgd2l0
aCBzY2lzc29yIHJlY3QgZmlyc3QsIGlmIGFwcGxpY2FibGUuCisgICAgbV9waXhlbHNEcmF3biAr
PSBxdWFkQXJlYShkcmF3VHJhbnNmb3JtLm1hcFF1YWQocXVhZCkpOwogfQogCiB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKaW5kZXggMmJiMDE0NmFkNTMxNGNhZDhjNWY3OGRjYTAxZGFkMTVkZWZlYmUwMC4uYjcwNTdk
ZWQwMWViODJjYmM1MGZmODU5ZmRkYTE3NGVmZDViYjg5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKQEAgLTI0Miw2ICsyNDIsOCBAQCBwcml2YXRlOgogICAgIEZsb2F0UXVh
ZCBtX3NoYXJlZEdlb21ldHJ5UXVhZDsKIAogICAgIGJvb2wgbV9pc1ZpZXdwb3J0Q2hhbmdlZDsK
KworICAgIGZsb2F0IG1fcGl4ZWxzRHJhd247CiB9OwogCiAvLyBTZXR0aW5nIERFQlVHX0dMX0NB
TExTIHRvIDEgd2lsbCBjYWxsIGdsR2V0RXJyb3IoKSBhZnRlciBhbG1vc3QgZXZlcnkgR0wK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126770</attachid>
            <date>2012-02-13 07:38:23 -0800</date>
            <delta_ts>2012-02-13 08:11:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74982-20120213103822.patch</filename>
            <type>text/plain</type>
            <size>14088</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJlYzViYTYzMWUzNDc5
NGVkZWJjMDAxMjhkZTljYWZiODQ1OTgxMy4uYWVjOTczNDhjZGFkNzA1ZjJkOWJiNzI1MTAwMjYy
ZDg0MDdjNTU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTEzICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEVzdGltYXRlIHBpeGVsIGNvdW50IGZvciBmcmFtZSByYXRlIGNvbnRyb2wKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0OTgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09Q
UyEpCisKKyAgICAgICAgQWRkcyBwaXhlbCBvdmVyZHJhdyBtZXRyaWNzIHRvIHF1YWQgY3VsbGVy
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpvcHRp
bWl6ZVJlbmRlclBhc3Nlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndlZGdlUHJvZHVjdCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnF1YWRBcmVhKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oOgorICAgICAgICAoQ0NR
dWFkQ3VsbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpvcHRpbWl6ZVF1
YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaDoKKyAgICAgICAgKENDT3ZlcmRyYXdDb3VudHMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDQ1JlbmRlclBhc3MpOgorCiAyMDEyLTAyLTEzICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB3cmFwIHNldHRpbmdz
IHNlbGVjdG9yIHRleHQgYW5kIGFkZGluZyBhIHJ1bGUgd2l0aCB1bmRvYWJsZSBhY3Rpb25zLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyOGUyMWNiZDA0ODA0MmNmOTM1NGJiYWYyZGZh
OTA2MDg2ZTAwOTc4Li4zYTI5NTJjOGRhNmU5NGY4MWM3N2ZjZDY0OGQzZmUwNDEwMmI3ZWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAyLTEzICBX
LiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIEVzdGltYXRlIHBpeGVsIGNvdW50IGZvciBmcmFtZSByYXRlIGNvbnRyb2wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0OTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VEVT
VCk6CisKIDIwMTItMDItMTMgIFlvc2lmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtGb3Jtc10gVXNlIGVudW0gaW5zdGVhZCBvZiBib29sIGZvciBIVE1MSW5wdXRF
bGVtZW50OjpzZXRWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApp
bmRleCBlNDZhZTMyNDlmMzgxNWNkOWIwMTkxYTkyODcxZmExN2YyYTlkYjg2Li4yMmIzMGFkOWM2
MGE3MTE3YTNlNTNiMjNmZGYwN2U1NTg5OWNjN2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcApAQCAtMjQxLDggKzI0MSwxNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMpCiAK
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6b3B0aW1pemVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQ
YXNzTGlzdCYgcGFzc2VzKQogeworICAgIENDT3ZlcmRyYXdDb3VudHMgb3ZlcmRyYXdDb3VudHM7
CisKKyAgICAvLyBGSVhNRTogT25seSBjb21wdXRlIG92ZXJkcmF3IG1ldHJpY3Mgb2NjYXNpb25h
bGx5LCBub3Qgb24gZXZlcnkgZnJhbWUuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBh
c3Nlcy5zaXplKCk7ICsraSkKLSAgICAgICAgcGFzc2VzW2ldLT5vcHRpbWl6ZVF1YWRzKCk7Cisg
ICAgICAgIHBhc3Nlc1tpXS0+b3B0aW1pemVRdWFkcygmb3ZlcmRyYXdDb3VudHMpOworCisgICAg
ZmxvYXQgbm9ybWFsaXphdGlvbiA9IDEwMDAuZiAvIChtX2xheWVyUmVuZGVyZXItPnZpZXdwb3J0
V2lkdGgoKSAqIG1fbGF5ZXJSZW5kZXJlci0+dmlld3BvcnRIZWlnaHQoKSk7CisgICAgVFJBQ0Vf
RVZFTlQxKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpvcHRpbWl6ZVJlbmRlclBhc3NlcyIsICJwaXhl
bE92ZXJkcmF3IiwgIm9wYXF1ZSIsIHN0YXRpY19jYXN0PGludD4obm9ybWFsaXphdGlvbiAqIG92
ZXJkcmF3Q291bnRzLm1fZHJhd25PcGFxdWUpKTsKKyAgICBUUkFDRV9FVkVOVDEoIkNDTGF5ZXJU
cmVlSG9zdEltcGw6Om9wdGltaXplUmVuZGVyUGFzc2VzIiwgInBpeGVsT3ZlcmRyYXciLCAidHJh
bnNwYXJlbnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG5vcm1hbGl6YXRpb24gKiBvdmVyZHJhd0NvdW50
cy5tX2RyYXduVHJhbnNwYXJlbnQpKTsKKyAgICBUUkFDRV9FVkVOVDEoIkNDTGF5ZXJUcmVlSG9z
dEltcGw6Om9wdGltaXplUmVuZGVyUGFzc2VzIiwgInBpeGVsT3ZlcmRyYXciLCAiY3VsbGVkIiwg
c3RhdGljX2Nhc3Q8aW50Pihub3JtYWxpemF0aW9uICogb3ZlcmRyYXdDb3VudHMubV9jdWxsZWQp
KTsKIH0KIAogSW50U2l6ZSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50U2l6ZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCBjOGJkOWIwZjM2MzI0YWY2ZThhNGJjMWZi
NWEyNDA4ZmYwMzE0NTRkLi4zMWFhODhlYTkwY2EyNjI0NGViNzJmMWIxN2VjMzBmOWQ5Y2E3MjUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTc1LDcgKzc1LDIyIEBAIHN0YXRpYyBJ
bnRSZWN0IHJlY3RTdWJ0cmFjdFJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgSW50
UmVjdCYgcmVjdCkKICAgICByZXR1cm4gcmVjdDsKIH0KIAotdm9pZCBDQ1F1YWRDdWxsZXI6OmN1
bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0KQorc3RhdGljIGZsb2F0IHdlZGdl
UHJvZHVjdChjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYgcDIpCit7Cisg
ICAgcmV0dXJuIHAxLngoKSAqIHAyLnkoKSAtIHAxLnkoKSAqIHAyLngoKTsKK30KKworLy8gQ29t
cHV0ZXMgYXJlYSBvZiBxdWFkcyB0aGF0IGFyZSBwb3NzaWJseSBub24tcmVjdGFuZ3VsYXIuIENh
bgorLy8gYmUgZWFzaWx5IGV4dGVuZGVkIHRvIHBvbHlnb25zLgorc3RhdGljIGZsb2F0IHF1YWRB
cmVhKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKK3sKKyAgICByZXR1cm4gZmFicygwLjUgKiAod2Vk
Z2VQcm9kdWN0KHF1YWQucDEoKSwgcXVhZC5wMigpKSArCisgICAgICAgICAgICAgICAgICAgd2Vk
Z2VQcm9kdWN0KHF1YWQucDIoKSwgcXVhZC5wMygpKSArCisgICAgICAgICAgICAgICAgICAgd2Vk
Z2VQcm9kdWN0KHF1YWQucDMoKSwgcXVhZC5wNCgpKSArCisgICAgICAgICAgICAgICAgICAgd2Vk
Z2VQcm9kdWN0KHF1YWQucDQoKSwgcXVhZC5wMSgpKSkpOworfQorCit2b2lkIENDUXVhZEN1bGxl
cjo6Y3VsbE9jY2x1ZGVkUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDT3ZlcmRyYXdDb3Vu
dHMqIG92ZXJkcmF3TWV0cmljcykKIHsKICAgICBpZiAoIXF1YWRMaXN0LnNpemUoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtOTcsOCArMTEyLDExIEBAIHZvaWQgQ0NRdWFkQ3VsbGVyOjpjdWxsT2Nj
bHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKIAogICAgICAgICAvLyBTZWUgaWYgd2Ug
Y2FuIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHBpeGVscyB0byBkcmF3IGJ5IHJlZHVjaW5nIHRoZSBz
aXplIG9mIHRoZSBkcmF3CiAgICAgICAgIC8vIHF1YWQgLSB3ZSBkbyB0aGlzIGJ5IGNoYW5naW5n
IGl0cyB2aXNpYmxlIHJlY3QuCi0gICAgICAgIGlmIChrZWVwUXVhZCAmJiB0cmFuc2Zvcm1lZFZp
c2libGVRdWFkUmVjdCAhPSB0cmFuc2Zvcm1lZFF1YWRSZWN0ICYmIGRyYXdRdWFkLT5pc0xheWVy
QXhpc0FsaWduZWRJbnRSZWN0KCkpCisgICAgICAgIGJvb2wgZGlkUmVkdWNlUXVhZFNpemUgPSBm
YWxzZTsKKyAgICAgICAgaWYgKGtlZXBRdWFkICYmIHRyYW5zZm9ybWVkVmlzaWJsZVF1YWRSZWN0
ICE9IHRyYW5zZm9ybWVkUXVhZFJlY3QgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZElu
dFJlY3QoKSkgewogICAgICAgICAgICAgZHJhd1F1YWQtPnNldFF1YWRWaXNpYmxlUmVjdChkcmF3
UXVhZC0+cXVhZFRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBSZWN0KHRyYW5zZm9ybWVkVmlzaWJs
ZVF1YWRSZWN0KSk7CisgICAgICAgICAgICBkaWRSZWR1Y2VRdWFkU2l6ZSA9IHRydWU7CisgICAg
ICAgIH0KIAogICAgICAgICAvLyBXaGVuIGFkZGluZyByZWN0IHRvIG9wYXF1ZSByZWdpb24sIGRl
ZmxhdGUgaXQgdG8gc3RheSBjb25zZXJ2YXRpdmUuCiAgICAgICAgIGlmIChrZWVwUXVhZCAmJiBk
cmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKSB7CkBAIC0xMDgsNiArMTI2LDI1
IEBAIHZvaWQgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFk
TGlzdCkKIAogICAgICAgICBpZiAoa2VlcFF1YWQpCiAgICAgICAgICAgICBjdWxsZWRMaXN0LmFw
cGVuZChxdWFkTGlzdFtpXS5yZWxlYXNlKCkpOworCisgICAgICAgIGlmIChvdmVyZHJhd01ldHJp
Y3MpIHsKKyAgICAgICAgICAgIC8vIFdlIGNvbXB1dGUgdGhlIGFyZWEgb2YgdGhlIHRyYW5zZm9y
bWVkIHF1YWQsIGFzIHRoaXMgc2hvdWxkIGJlIGluIHBpeGVscy4KKyAgICAgICAgICAgIGZsb2F0
IGFyZWEgPSBxdWFkQXJlYShkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFF1YWQoRmxvYXRR
dWFkKGRyYXdRdWFkLT5xdWFkUmVjdCgpKSkpOworICAgICAgICAgICAgaWYgKGtlZXBRdWFkKSB7
CisgICAgICAgICAgICAgICAgaWYgKGRpZFJlZHVjZVF1YWRTaXplKSB7CisgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHZpc2libGVRdWFkUmVjdEFyZWEgPSBxdWFkQXJlYShkcmF3UXVhZC0+cXVh
ZFRyYW5zZm9ybSgpLm1hcFF1YWQoRmxvYXRRdWFkKGRyYXdRdWFkLT5xdWFkVmlzaWJsZVJlY3Qo
KSkpKTsKKyAgICAgICAgICAgICAgICAgICAgb3ZlcmRyYXdNZXRyaWNzLT5tX2N1bGxlZCArPSBh
cmVhIC0gdmlzaWJsZVF1YWRSZWN0QXJlYTsKKyAgICAgICAgICAgICAgICAgICAgYXJlYSA9IHZp
c2libGVRdWFkUmVjdEFyZWE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIElu
dFJlY3QgdmlzaWJsZU9wYXF1ZVJlY3QoZHJhd1F1YWQtPnF1YWRWaXNpYmxlUmVjdCgpKTsKKyAg
ICAgICAgICAgICAgICB2aXNpYmxlT3BhcXVlUmVjdC5pbnRlcnNlY3QoZHJhd1F1YWQtPm9wYXF1
ZVJlY3QoKSk7CisgICAgICAgICAgICAgICAgRmxvYXRRdWFkIHZpc2libGVPcGFxdWVRdWFkID0g
ZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBRdWFkKEZsb2F0UXVhZCh2aXNpYmxlT3BhcXVl
UmVjdCkpOworICAgICAgICAgICAgICAgIGZsb2F0IG9wYXF1ZUFyZWEgPSBxdWFkQXJlYSh2aXNp
YmxlT3BhcXVlUXVhZCk7CisgICAgICAgICAgICAgICAgb3ZlcmRyYXdNZXRyaWNzLT5tX2RyYXdu
T3BhcXVlICs9IG9wYXF1ZUFyZWE7CisgICAgICAgICAgICAgICAgb3ZlcmRyYXdNZXRyaWNzLT5t
X2RyYXduVHJhbnNwYXJlbnQgKz0gYXJlYSAtIG9wYXF1ZUFyZWE7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICBvdmVyZHJhd01ldHJpY3MtPm1fY3VsbGVkICs9IGFyZWE7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgcXVhZExpc3QuY2xlYXIoKTsgLy8gUmVsZWFzZSBhbnl0aGlu
ZyB0aGF0IHJlbWFpbnMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKaW5kZXggNzE3OTI4NWFjNDg1
ZDBkYTM1OWIxNjYxZGZhOGNjNmJiNjJhYmYxOS4uY2UxMWY1MDU2ZTQyMWY4MzQwYjFjZGRkZWFj
YTVkMTUxYWY2NGYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ1F1YWRDdWxsZXIgewogcHVibGljOgotICAg
IHN0YXRpYyB2b2lkIGN1bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmKTsKKyAgICBzdGF0aWMg
dm9pZCBjdWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiwgQ0NPdmVyZHJhd0NvdW50cyopOwog
CiBwcml2YXRlOgogICAgIC8vIE1ha2Ugbm9uLWluc3RhbnRpYWJsZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3MuY3BwCmluZGV4IDZmNTFmYmNkZTA1YWM5NjEyODc0NDA0NTEwNTRmNGVjM2Y1MTI4ZGYu
LjhmNjAzYTkzMWYwNWIxM2JkYzBmMjc5MGQ2YzMyNDQ4NTcxNjNjNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcApAQCAtNjQsOSArNjQsOSBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5k
UXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyKQogICAgIG1fc2hh
cmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CiAK
LXZvaWQgQ0NSZW5kZXJQYXNzOjpvcHRpbWl6ZVF1YWRzKCkKK3ZvaWQgQ0NSZW5kZXJQYXNzOjpv
cHRpbWl6ZVF1YWRzKENDT3ZlcmRyYXdDb3VudHMqIG92ZXJkcmF3KQogewotICAgIENDUXVhZEN1
bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMobV9xdWFkTGlzdCk7CisgICAgQ0NRdWFkQ3VsbGVyOjpj
dWxsT2NjbHVkZWRRdWFkcyhtX3F1YWRMaXN0LCBvdmVyZHJhdyk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmgKaW5kZXggOWZiNzcxNjZjNGNkMDQ3NjQ3ZThkMWFlMDMyZmU0NmJkOWE4NjFi
Zi4uZGViNzI2Nzk0ZTllYTMxZjczMTNmZTM3Nzc5YzBmOTljNjkzMzBjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmgKQEAgLTM4LDYgKzM4LDEyIEBAIGNsYXNzIENDU2hhcmVkUXVhZFN0YXRlOwog
CiB0eXBlZGVmIFZlY3RvcjxPd25QdHI8Q0NEcmF3UXVhZD4gPiBDQ1F1YWRMaXN0OwogCitzdHJ1
Y3QgQ0NPdmVyZHJhd0NvdW50cyB7CisgICAgZmxvYXQgbV9kcmF3bk9wYXF1ZTsKKyAgICBmbG9h
dCBtX2N1bGxlZDsKKyAgICBmbG9hdCBtX2RyYXduVHJhbnNwYXJlbnQ7Cit9OworCiBjbGFzcyBD
Q1JlbmRlclBhc3MgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyUGFzcyk7CiBw
dWJsaWM6CkBAIC00Niw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9y
TGF5ZXIoQ0NMYXllckltcGwqKTsKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFj
ZUxheWVyKENDTGF5ZXJJbXBsKik7CiAKLSAgICB2b2lkIG9wdGltaXplUXVhZHMoKTsKKyAgICB2
b2lkIG9wdGltaXplUXVhZHMoQ0NPdmVyZHJhd0NvdW50cyopOwogCiAgICAgY29uc3QgQ0NRdWFk
TGlzdCYgcXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CiAgICAgQ0NSZW5k
ZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRTdXJmYWNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxl
clRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0
LmNwcAppbmRleCAyOTllNWM3ZTViYzU2Y2Q0OTBmNzYxN2JmNjY0NjJmZjU0ZDkzYzNmLi4zNzBk
ZTNjODNhOGQxYzdhMDVlOWZkMTVlYzg3ZGU1Yzc4ZWM3YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTY0LDYgKzY0LDcg
QEAgdm9pZCBzZXRRdWFkcyhDQ1NoYXJlZFF1YWRTdGF0ZSogcm9vdFN0YXRlLCBDQ1NoYXJlZFF1
YWRTdGF0ZSogY2hpbGRTdGF0ZSwgQ0NRdWEKIAogI2RlZmluZSBERUNMQVJFX0FORF9JTklUSUFM
SVpFX1RFU1RfUVVBRFMgICAgICAgICAgICAgICBcCiAgICAgQ0NRdWFkTGlzdCBxdWFkTGlzdDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDQ092ZXJkcmF3Q291bnRzIG92
ZXJkcmF3OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGNoaWxkVHJhbnNmb3JtOyAgICAgICAgICAgICAgICBcCiAgICAgSW50U2l6ZSByb290U2l6
ZSA9IEludFNpemUoMzAwLCAzMDApOyAgICAgICAgICAgICAgIFwKICAgICBJbnRSZWN0IHJvb3RS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCByb290U2l6ZSk7ICAgXApAQCAtNzksNyArODAsNyBA
QCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDaGlsZExpbmVzVXBUb3BMZWZ0KQog
CiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlz
dCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxs
ZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxP
Y2NsdWRlZFF1YWRzKHF1YWRMaXN0LCBvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0
LnNpemUoKSwgOXUpOwogfQogCkBAIC05Miw3ICs5Myw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVz
dCwgdmVyaWZ5Q3VsbFdoZW5DaGlsZE9wYWNpdHlOb3RPbmUpCiAKICAgICBzZXRRdWFkcyhyb290
U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1RfRVEo
cXVhZExpc3Quc2l6ZSgpLCAxM3UpOwotICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVh
ZHMocXVhZExpc3QpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExp
c3QsIG92ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwogfQog
CkBAIC0xMDUsNyArMTA2LDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsV2hl
bkNoaWxkT3BhcXVlRmxhZ0ZhbHNlKQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBj
aGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUo
KSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsK
KyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCBvdmVyZHJhdyk7
CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKIH0KIApAQCAtMTIwLDcgKzEy
MSw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVPbmx5KQog
CiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlz
dCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxs
ZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxP
Y2NsdWRlZFF1YWRzKHF1YWRMaXN0LCBvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0
LnNpemUoKSwgMTJ1KTsKIAogICAgIEludFJlY3QgcXVhZFZpc2libGVSZWN0MSA9IHF1YWRMaXN0
WzFdLmdldCgpLT5xdWFkVmlzaWJsZVJlY3QoKTsKQEAgLTE1OCw3ICsxNTksNyBAQCBURVNUKEND
UXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDZW50ZXJUaWxlTm9uSW50ZWdyYWxTaXplMSkKICAg
ICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUuZ2V0KCksIEludFJlY3Qo
SW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CiAKICAgICBFWFBFQ1RfRVEocXVhZExp
c3Quc2l6ZSgpLCAydSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFk
TGlzdCk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgb3Zl
cmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDJ1KTsKIH0KIApAQCAtMTgx
LDcgKzE4Miw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVO
b25JbnRlZ3JhbFNpemUyKQogICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1YWQoY2hpbGRT
dGF0ZS5nZXQoKSwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKIAog
ICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDJ1KTsKLSAgICBDQ1F1YWRDdWxsZXI6OmN1
bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRl
ZFF1YWRzKHF1YWRMaXN0LCBvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUo
KSwgMnUpOwogfQogCkBAIC0xOTYsNyArMTk3LDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2
ZXJpZnlDdWxsQ2hpbGRMaW5lc1VwQm90dG9tUmlnaHQpCiAKICAgICBzZXRRdWFkcyhyb290U3Rh
dGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVh
ZExpc3Quc2l6ZSgpLCAxM3UpOwotICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMo
cXVhZExpc3QpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3Qs
IG92ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCA5dSk7CiB9CiAKQEAg
LTIxMiw3ICsyMTMsNyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdp
b24pCiAKICAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1
YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCks
IDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7Cisg
ICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgb3ZlcmRyYXcpOwog
ICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEydSk7CiB9CiAKQEAgLTIyOCw3ICsyMjks
NyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb24yKQogCiAgICAg
c2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hp
bGRPcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwotICAg
IENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIENDUXVhZEN1
bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QsIG92ZXJkcmF3KTsKICAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOwogfQogCkBAIC0yNDQsNyArMjQ1LDcgQEAgVEVTVChD
Q1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uQ2hlY2tPdmVyY3VsbCkKIAogICAg
IHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QsIGNo
aWxkT3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAg
ICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRD
dWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCBvdmVyZHJhdyk7CiAgICAgRVhQRUNU
X0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKIH0KIApAQCAtMjYwLDcgKzI2MSw3IEBAIFRFU1Qo
Q0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhpc0FsaWduZWRRdWFkc0RvbnRPY2NsdWRlKQog
CiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlz
dCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxs
ZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxP
Y2NsdWRlZFF1YWRzKHF1YWRMaXN0LCBvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0
LnNpemUoKSwgMTN1KTsKIH0KIApAQCAtMjgyLDcgKzI4Myw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVy
VGVzdCwgdmVyaWZ5Tm9uQXhpc0FsaWduZWRRdWFkc1NhZmVseUN1bGxlZCkKIAogICAgIHNldFF1
YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVY
UEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2Nj
bHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFk
cyhxdWFkTGlzdCwgb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEy
dSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126774</attachid>
            <date>2012-02-13 08:11:48 -0800</date>
            <delta_ts>2012-02-17 08:16:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74982-20120213111147.patch</filename>
            <type>text/plain</type>
            <size>14100</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGJlYzViYTYzMWUzNDc5
NGVkZWJjMDAxMjhkZTljYWZiODQ1OTgxMy4uYWVjOTczNDhjZGFkNzA1ZjJkOWJiNzI1MTAwMjYy
ZDg0MDdjNTU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTEzICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEVzdGltYXRlIHBpeGVsIGNvdW50IGZvciBmcmFtZSByYXRlIGNvbnRyb2wKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0OTgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09Q
UyEpCisKKyAgICAgICAgQWRkcyBwaXhlbCBvdmVyZHJhdyBtZXRyaWNzIHRvIHF1YWQgY3VsbGVy
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpvcHRp
bWl6ZVJlbmRlclBhc3Nlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NRdWFkQ3VsbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndlZGdlUHJvZHVjdCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnF1YWRBcmVhKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oOgorICAgICAgICAoQ0NR
dWFkQ3VsbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjpvcHRpbWl6ZVF1
YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaDoKKyAgICAgICAgKENDT3ZlcmRyYXdDb3VudHMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDQ1JlbmRlclBhc3MpOgorCiAyMDEyLTAyLTEzICBQYXZlbCBGZWxkbWFuICA8cGZl
bGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB3cmFwIHNldHRpbmdz
IHNlbGVjdG9yIHRleHQgYW5kIGFkZGluZyBhIHJ1bGUgd2l0aCB1bmRvYWJsZSBhY3Rpb25zLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAyOGUyMWNiZDA0ODA0MmNmOTM1NGJiYWYyZGZh
OTA2MDg2ZTAwOTc4Li4zYTI5NTJjOGRhNmU5NGY4MWM3N2ZjZDY0OGQzZmUwNDEwMmI3ZWFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTAyLTEzICBX
LiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hy
b21pdW1dIEVzdGltYXRlIHBpeGVsIGNvdW50IGZvciBmcmFtZSByYXRlIGNvbnRyb2wKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0OTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRD
dWxsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VEVT
VCk6CisKIDIwMTItMDItMTMgIFlvc2lmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtGb3Jtc10gVXNlIGVudW0gaW5zdGVhZCBvZiBib29sIGZvciBIVE1MSW5wdXRF
bGVtZW50OjpzZXRWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApp
bmRleCBlNDZhZTMyNDlmMzgxNWNkOWIwMTkxYTkyODcxZmExN2YyYTlkYjg2Li4yMmIzMGFkOWM2
MGE3MTE3YTNlNTNiMjNmZGYwN2U1NTg5OWNjN2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcApAQCAtMjQxLDggKzI0MSwxNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMpCiAK
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6b3B0aW1pemVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQ
YXNzTGlzdCYgcGFzc2VzKQogeworICAgIENDT3ZlcmRyYXdDb3VudHMgb3ZlcmRyYXdDb3VudHM7
CisKKyAgICAvLyBGSVhNRTogT25seSBjb21wdXRlIG92ZXJkcmF3IG1ldHJpY3Mgb2NjYXNpb25h
bGx5LCBub3Qgb24gZXZlcnkgZnJhbWUuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBh
c3Nlcy5zaXplKCk7ICsraSkKLSAgICAgICAgcGFzc2VzW2ldLT5vcHRpbWl6ZVF1YWRzKCk7Cisg
ICAgICAgIHBhc3Nlc1tpXS0+b3B0aW1pemVRdWFkcygmb3ZlcmRyYXdDb3VudHMpOworCisgICAg
ZmxvYXQgbm9ybWFsaXphdGlvbiA9IDEwMDAuZiAvIChtX2xheWVyUmVuZGVyZXItPnZpZXdwb3J0
V2lkdGgoKSAqIG1fbGF5ZXJSZW5kZXJlci0+dmlld3BvcnRIZWlnaHQoKSk7CisgICAgVFJBQ0Vf
RVZFTlQxKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpvcHRpbWl6ZVJlbmRlclBhc3NlcyIsICJwaXhl
bE92ZXJkcmF3IiwgIm9wYXF1ZSIsIHN0YXRpY19jYXN0PGludD4obm9ybWFsaXphdGlvbiAqIG92
ZXJkcmF3Q291bnRzLm1fZHJhd25PcGFxdWUpKTsKKyAgICBUUkFDRV9FVkVOVDEoIkNDTGF5ZXJU
cmVlSG9zdEltcGw6Om9wdGltaXplUmVuZGVyUGFzc2VzIiwgInBpeGVsT3ZlcmRyYXciLCAidHJh
bnNwYXJlbnQiLCBzdGF0aWNfY2FzdDxpbnQ+KG5vcm1hbGl6YXRpb24gKiBvdmVyZHJhd0NvdW50
cy5tX2RyYXduVHJhbnNwYXJlbnQpKTsKKyAgICBUUkFDRV9FVkVOVDEoIkNDTGF5ZXJUcmVlSG9z
dEltcGw6Om9wdGltaXplUmVuZGVyUGFzc2VzIiwgInBpeGVsT3ZlcmRyYXciLCAiY3VsbGVkIiwg
c3RhdGljX2Nhc3Q8aW50Pihub3JtYWxpemF0aW9uICogb3ZlcmRyYXdDb3VudHMubV9jdWxsZWQp
KTsKIH0KIAogSW50U2l6ZSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50U2l6ZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCBjOGJkOWIwZjM2MzI0YWY2ZThhNGJjMWZi
NWEyNDA4ZmYwMzE0NTRkLi4zMWFhODhlYTkwY2EyNjI0NGViNzJmMWIxN2VjMzBmOWQ5Y2E3MjUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTc1LDcgKzc1LDIyIEBAIHN0YXRpYyBJ
bnRSZWN0IHJlY3RTdWJ0cmFjdFJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3QgSW50
UmVjdCYgcmVjdCkKICAgICByZXR1cm4gcmVjdDsKIH0KIAotdm9pZCBDQ1F1YWRDdWxsZXI6OmN1
bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0KQorc3RhdGljIGZsb2F0IHdlZGdl
UHJvZHVjdChjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYgcDIpCit7Cisg
ICAgcmV0dXJuIHAxLngoKSAqIHAyLnkoKSAtIHAxLnkoKSAqIHAyLngoKTsKK30KKworLy8gQ29t
cHV0ZXMgYXJlYSBvZiBxdWFkcyB0aGF0IGFyZSBwb3NzaWJseSBub24tcmVjdGFuZ3VsYXIuIENh
bgorLy8gYmUgZWFzaWx5IGV4dGVuZGVkIHRvIHBvbHlnb25zLgorc3RhdGljIGZsb2F0IHF1YWRB
cmVhKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKK3sKKyAgICByZXR1cm4gZmFicygwLjUgKiAod2Vk
Z2VQcm9kdWN0KHF1YWQucDEoKSwgcXVhZC5wMigpKSArCisgICAgICAgICAgICAgICAgICAgd2Vk
Z2VQcm9kdWN0KHF1YWQucDIoKSwgcXVhZC5wMygpKSArCisgICAgICAgICAgICAgICAgICAgd2Vk
Z2VQcm9kdWN0KHF1YWQucDMoKSwgcXVhZC5wNCgpKSArCisgICAgICAgICAgICAgICAgICAgd2Vk
Z2VQcm9kdWN0KHF1YWQucDQoKSwgcXVhZC5wMSgpKSkpOworfQorCit2b2lkIENDUXVhZEN1bGxl
cjo6Y3VsbE9jY2x1ZGVkUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDT3ZlcmRyYXdDb3Vu
dHMqIG92ZXJkcmF3TWV0cmljcykKIHsKICAgICBpZiAoIXF1YWRMaXN0LnNpemUoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtOTcsOCArMTEyLDExIEBAIHZvaWQgQ0NRdWFkQ3VsbGVyOjpjdWxsT2Nj
bHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKIAogICAgICAgICAvLyBTZWUgaWYgd2Ug
Y2FuIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHBpeGVscyB0byBkcmF3IGJ5IHJlZHVjaW5nIHRoZSBz
aXplIG9mIHRoZSBkcmF3CiAgICAgICAgIC8vIHF1YWQgLSB3ZSBkbyB0aGlzIGJ5IGNoYW5naW5n
IGl0cyB2aXNpYmxlIHJlY3QuCi0gICAgICAgIGlmIChrZWVwUXVhZCAmJiB0cmFuc2Zvcm1lZFZp
c2libGVRdWFkUmVjdCAhPSB0cmFuc2Zvcm1lZFF1YWRSZWN0ICYmIGRyYXdRdWFkLT5pc0xheWVy
QXhpc0FsaWduZWRJbnRSZWN0KCkpCisgICAgICAgIGJvb2wgZGlkUmVkdWNlUXVhZFNpemUgPSBm
YWxzZTsKKyAgICAgICAgaWYgKGtlZXBRdWFkICYmIHRyYW5zZm9ybWVkVmlzaWJsZVF1YWRSZWN0
ICE9IHRyYW5zZm9ybWVkUXVhZFJlY3QgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZElu
dFJlY3QoKSkgewogICAgICAgICAgICAgZHJhd1F1YWQtPnNldFF1YWRWaXNpYmxlUmVjdChkcmF3
UXVhZC0+cXVhZFRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBSZWN0KHRyYW5zZm9ybWVkVmlzaWJs
ZVF1YWRSZWN0KSk7CisgICAgICAgICAgICBkaWRSZWR1Y2VRdWFkU2l6ZSA9IHRydWU7CisgICAg
ICAgIH0KIAogICAgICAgICAvLyBXaGVuIGFkZGluZyByZWN0IHRvIG9wYXF1ZSByZWdpb24sIGRl
ZmxhdGUgaXQgdG8gc3RheSBjb25zZXJ2YXRpdmUuCiAgICAgICAgIGlmIChrZWVwUXVhZCAmJiBk
cmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKSB7CkBAIC0xMDgsNiArMTI2LDI1
IEBAIHZvaWQgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFk
TGlzdCkKIAogICAgICAgICBpZiAoa2VlcFF1YWQpCiAgICAgICAgICAgICBjdWxsZWRMaXN0LmFw
cGVuZChxdWFkTGlzdFtpXS5yZWxlYXNlKCkpOworCisgICAgICAgIGlmIChvdmVyZHJhd01ldHJp
Y3MpIHsKKyAgICAgICAgICAgIC8vIFdlIGNvbXB1dGUgdGhlIGFyZWEgb2YgdGhlIHRyYW5zZm9y
bWVkIHF1YWQsIGFzIHRoaXMgc2hvdWxkIGJlIGluIHBpeGVscy4KKyAgICAgICAgICAgIGZsb2F0
IGFyZWEgPSBxdWFkQXJlYShkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFF1YWQoRmxvYXRR
dWFkKGRyYXdRdWFkLT5xdWFkUmVjdCgpKSkpOworICAgICAgICAgICAgaWYgKGtlZXBRdWFkKSB7
CisgICAgICAgICAgICAgICAgaWYgKGRpZFJlZHVjZVF1YWRTaXplKSB7CisgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHZpc2libGVRdWFkUmVjdEFyZWEgPSBxdWFkQXJlYShkcmF3UXVhZC0+cXVh
ZFRyYW5zZm9ybSgpLm1hcFF1YWQoRmxvYXRRdWFkKGRyYXdRdWFkLT5xdWFkVmlzaWJsZVJlY3Qo
KSkpKTsKKyAgICAgICAgICAgICAgICAgICAgb3ZlcmRyYXdNZXRyaWNzLT5tX2N1bGxlZCArPSBh
cmVhIC0gdmlzaWJsZVF1YWRSZWN0QXJlYTsKKyAgICAgICAgICAgICAgICAgICAgYXJlYSA9IHZp
c2libGVRdWFkUmVjdEFyZWE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIElu
dFJlY3QgdmlzaWJsZU9wYXF1ZVJlY3QoZHJhd1F1YWQtPnF1YWRWaXNpYmxlUmVjdCgpKTsKKyAg
ICAgICAgICAgICAgICB2aXNpYmxlT3BhcXVlUmVjdC5pbnRlcnNlY3QoZHJhd1F1YWQtPm9wYXF1
ZVJlY3QoKSk7CisgICAgICAgICAgICAgICAgRmxvYXRRdWFkIHZpc2libGVPcGFxdWVRdWFkID0g
ZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBRdWFkKEZsb2F0UXVhZCh2aXNpYmxlT3BhcXVl
UmVjdCkpOworICAgICAgICAgICAgICAgIGZsb2F0IG9wYXF1ZUFyZWEgPSBxdWFkQXJlYSh2aXNp
YmxlT3BhcXVlUXVhZCk7CisgICAgICAgICAgICAgICAgb3ZlcmRyYXdNZXRyaWNzLT5tX2RyYXdu
T3BhcXVlICs9IG9wYXF1ZUFyZWE7CisgICAgICAgICAgICAgICAgb3ZlcmRyYXdNZXRyaWNzLT5t
X2RyYXduVHJhbnNwYXJlbnQgKz0gYXJlYSAtIG9wYXF1ZUFyZWE7CisgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICBvdmVyZHJhd01ldHJpY3MtPm1fY3VsbGVkICs9IGFyZWE7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgcXVhZExpc3QuY2xlYXIoKTsgLy8gUmVsZWFzZSBhbnl0aGlu
ZyB0aGF0IHJlbWFpbnMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKaW5kZXggNzE3OTI4NWFjNDg1
ZDBkYTM1OWIxNjYxZGZhOGNjNmJiNjJhYmYxOS4uY2UxMWY1MDU2ZTQyMWY4MzQwYjFjZGRkZWFj
YTVkMTUxYWY2NGYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ1F1YWRDdWxsZXIgewogcHVibGljOgotICAg
IHN0YXRpYyB2b2lkIGN1bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmKTsKKyAgICBzdGF0aWMg
dm9pZCBjdWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiwgQ0NPdmVyZHJhd0NvdW50cyopOwog
CiBwcml2YXRlOgogICAgIC8vIE1ha2Ugbm9uLWluc3RhbnRpYWJsZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3MuY3BwCmluZGV4IDZmNTFmYmNkZTA1YWM5NjEyODc0NDA0NTEwNTRmNGVjM2Y1MTI4ZGYu
LjhmNjAzYTkzMWYwNWIxM2JkYzBmMjc5MGQ2YzMyNDQ4NTcxNjNjNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmNwcApAQCAtNjQsOSArNjQsOSBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5k
UXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyKQogICAgIG1fc2hh
cmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CiAK
LXZvaWQgQ0NSZW5kZXJQYXNzOjpvcHRpbWl6ZVF1YWRzKCkKK3ZvaWQgQ0NSZW5kZXJQYXNzOjpv
cHRpbWl6ZVF1YWRzKENDT3ZlcmRyYXdDb3VudHMqIG92ZXJkcmF3KQogewotICAgIENDUXVhZEN1
bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMobV9xdWFkTGlzdCk7CisgICAgQ0NRdWFkQ3VsbGVyOjpj
dWxsT2NjbHVkZWRRdWFkcyhtX3F1YWRMaXN0LCBvdmVyZHJhdyk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmgKaW5kZXggOWZiNzcxNjZjNGNkMDQ3NjQ3ZThkMWFlMDMyZmU0NmJkOWE4NjFi
Zi4uZGViNzI2Nzk0ZTllYTMxZjczMTNmZTM3Nzc5YzBmOTljNjkzMzBjZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJQYXNzLmgKQEAgLTM4LDYgKzM4LDEyIEBAIGNsYXNzIENDU2hhcmVkUXVhZFN0YXRlOwog
CiB0eXBlZGVmIFZlY3RvcjxPd25QdHI8Q0NEcmF3UXVhZD4gPiBDQ1F1YWRMaXN0OwogCitzdHJ1
Y3QgQ0NPdmVyZHJhd0NvdW50cyB7CisgICAgZmxvYXQgbV9kcmF3bk9wYXF1ZTsKKyAgICBmbG9h
dCBtX2N1bGxlZDsKKyAgICBmbG9hdCBtX2RyYXduVHJhbnNwYXJlbnQ7Cit9OworCiBjbGFzcyBD
Q1JlbmRlclBhc3MgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyUGFzcyk7CiBw
dWJsaWM6CkBAIC00Niw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9y
TGF5ZXIoQ0NMYXllckltcGwqKTsKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFj
ZUxheWVyKENDTGF5ZXJJbXBsKik7CiAKLSAgICB2b2lkIG9wdGltaXplUXVhZHMoKTsKKyAgICB2
b2lkIG9wdGltaXplUXVhZHMoQ0NPdmVyZHJhd0NvdW50cyopOwogCiAgICAgY29uc3QgQ0NRdWFk
TGlzdCYgcXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX3F1YWRMaXN0OyB9CiAgICAgQ0NSZW5k
ZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRTdXJmYWNl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxl
clRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0
LmNwcAppbmRleCAyOTllNWM3ZTViYzU2Y2Q0OTBmNzYxN2JmNjY0NjJmZjU0ZDkzYzNmLi4wYWE1
N2ZmYmM2NzYwZTdhOGIwYTUzY2Y0N2MyYjNmMmU5ODMzYmQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTY0LDYgKzY0LDcg
QEAgdm9pZCBzZXRRdWFkcyhDQ1NoYXJlZFF1YWRTdGF0ZSogcm9vdFN0YXRlLCBDQ1NoYXJlZFF1
YWRTdGF0ZSogY2hpbGRTdGF0ZSwgQ0NRdWEKIAogI2RlZmluZSBERUNMQVJFX0FORF9JTklUSUFM
SVpFX1RFU1RfUVVBRFMgICAgICAgICAgICAgICBcCiAgICAgQ0NRdWFkTGlzdCBxdWFkTGlzdDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDQ092ZXJkcmF3Q291bnRzIG92
ZXJkcmF3OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGNoaWxkVHJhbnNmb3JtOyAgICAgICAgICAgICAgICBcCiAgICAgSW50U2l6ZSByb290U2l6
ZSA9IEludFNpemUoMzAwLCAzMDApOyAgICAgICAgICAgICAgIFwKICAgICBJbnRSZWN0IHJvb3RS
ZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCByb290U2l6ZSk7ICAgXApAQCAtNzksNyArODAsNyBA
QCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDaGlsZExpbmVzVXBUb3BMZWZ0KQog
CiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlz
dCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxs
ZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxP
Y2NsdWRlZFF1YWRzKHF1YWRMaXN0LCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlz
dC5zaXplKCksIDl1KTsKIH0KIApAQCAtOTIsNyArOTMsNyBAQCBURVNUKENDUXVhZEN1bGxlclRl
c3QsIHZlcmlmeUN1bGxXaGVuQ2hpbGRPcGFjaXR5Tm90T25lKQogCiAgICAgc2V0UXVhZHMocm9v
dFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VR
KHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1
YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRM
aXN0LCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CiB9
CiAKQEAgLTEwNSw3ICsxMDYsNyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxX
aGVuQ2hpbGRPcGFxdWVGbGFnRmFsc2UpCiAKICAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCks
IGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6
ZSgpLCAxM3UpOwotICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3Qp
OworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QsICZvdmVyZHJh
dyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKIH0KIApAQCAtMTIwLDcg
KzEyMSw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVPbmx5
KQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFk
TGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRD
dWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1
bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFk
TGlzdC5zaXplKCksIDEydSk7CiAKICAgICBJbnRSZWN0IHF1YWRWaXNpYmxlUmVjdDEgPSBxdWFk
TGlzdFsxXS5nZXQoKS0+cXVhZFZpc2libGVSZWN0KCk7CkBAIC0xNTgsNyArMTU5LDcgQEAgVEVT
VChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2VudGVyVGlsZU5vbkludGVncmFsU2l6ZTEp
CiAgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChjaGlsZFN0YXRlLmdldCgpLCBJbnRS
ZWN0KEludFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSkpOwogCiAgICAgRVhQRUNUX0VRKHF1
YWRMaXN0LnNpemUoKSwgMnUpOwotICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMo
cXVhZExpc3QpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3Qs
ICZvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMnUpOwogfQogCkBA
IC0xODEsNyArMTgyLDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2VudGVy
VGlsZU5vbkludGVncmFsU2l6ZTIpCiAgICAgcXVhZExpc3QuYXBwZW5kKE1ha2VUaWxlUXVhZChj
aGlsZFN0YXRlLmdldCgpLCBJbnRSZWN0KEludFBvaW50KCksIEludFNpemUoMTAwLCAxMDApKSkp
OwogCiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMnUpOwotICAgIENDUXVhZEN1bGxl
cjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9j
Y2x1ZGVkUXVhZHMocXVhZExpc3QsICZvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0
LnNpemUoKSwgMnUpOwogfQogCkBAIC0xOTYsNyArMTk3LDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJU
ZXN0LCB2ZXJpZnlDdWxsQ2hpbGRMaW5lc1VwQm90dG9tUmlnaHQpCiAKICAgICBzZXRRdWFkcyhy
b290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwotICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVk
UXVhZHMocXVhZExpc3QpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVh
ZExpc3QsICZvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgOXUpOwog
fQogCkBAIC0yMTIsNyArMjEzLDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxs
U3ViUmVnaW9uKQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdl
dCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Qu
c2l6ZSgpLCAxM3UpOwotICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExp
c3QpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QsICZvdmVy
ZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKIH0KIApAQCAtMjI4
LDcgKzIyOSw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbjIp
CiAKICAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRM
aXN0LCBjaGlsZE9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEz
dSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAg
Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgJm92ZXJkcmF3KTsKICAg
ICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOwogfQogCkBAIC0yNDQsNyArMjQ1LDcg
QEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uQ2hlY2tPdmVyY3Vs
bCkKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVh
ZExpc3QsIGNoaWxkT3BhcXVlUmVjdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwg
MTN1KTsKLSAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAg
ICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCAmb3ZlcmRyYXcpOwog
ICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CiB9CiAKQEAgLTI2MCw3ICsyNjEs
NyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4aXNBbGlnbmVkUXVhZHNEb250
T2NjbHVkZSkKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQo
KSwgcXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7Ci0gICAg
Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgQ0NRdWFkQ3Vs
bGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgJm92ZXJkcmF3KTsKICAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwogfQogCkBAIC0yODIsNyArMjgzLDcgQEAgVEVTVChD
Q1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlOb25BeGlzQWxpZ25lZFF1YWRzU2FmZWx5Q3VsbGVkKQog
CiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlz
dCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxs
ZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxP
Y2NsdWRlZFF1YWRzKHF1YWRMaXN0LCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlz
dC5zaXplKCksIDEydSk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127592</attachid>
            <date>2012-02-17 08:16:45 -0800</date>
            <delta_ts>2012-02-28 07:29:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74982-20120217111644.patch</filename>
            <type>text/plain</type>
            <size>14695</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdiYTFkZWQzNmRkYjRh
OWM1MjY0YjE0NGE4OGUxOWIyYjBhMzI2MC4uZTczMTI2NjBjNmJhMWIwZGE0YWNhOTA1YzNjZjNk
MzFiZDgyZDk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTAyLTE3ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEVzdGltYXRlIHBpeGVsIGNvdW50IGZvciBmcmFtZSByYXRlIGNvbnRyb2wKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0OTgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1lY2hhbmlzbSB0byBj
b21wdXRlIGFuZCBjb2xsZWN0IHN0YXRpc3RpY3Mgb24gcGl4ZWwgb3ZlcmRyYXcgZm9yIHNlbGVj
dGVkIGZyYW1lcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
SW1wbDo6b3B0aW1pemVSZW5kZXJQYXNzZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3ZWRnZVBy
b2R1Y3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpxdWFkQXJlYSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaDoKKyAg
ICAgICAgKENDUXVhZEN1bGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6
b3B0aW1pemVRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzLmg6CisgICAgICAgIChDQ092ZXJkcmF3Q291bnRzKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJQYXNzKToKKwogMjAxMi0wMi0xNyAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYSBi
aXQgb2YgY29sb3IgcGlja2VyIHBvbGlzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAz
YWJlNWIwNzA3ZTkyOTMwNjU4NzdmYWE0MDVjYTE4NDIwZmRhODdjLi42MTA4MzM1N2E1OTk5NWIw
ZWRmMzhkMjY5OTFmMTgxNTgzMmVmN2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDEyLTAyLTE3ICBXLiBKYW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIEVzdGltYXRlIHBpeGVsIGNvdW50IGZv
ciBmcmFtZSByYXRlIGNvbnRyb2wKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc0OTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkcyBtZWNoYW5pc20gdG8gY29tcHV0ZSBhbmQgY29sbGVjdCBzdGF0aXN0
aWNzIG9uIHBpeGVsIG92ZXJkcmF3IGZvciBzZWxlY3RlZCBmcmFtZXMuCisKKyAgICAgICAgKiB0
ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDItMTcgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIENocm9taXVtIERFUFMgcm9sbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCBlNDZhZTMyNDlmMzgx
NWNkOWIwMTkxYTkyODcxZmExN2YyYTlkYjg2Li44YmI1NTQ0YWMxOWQ4ZmM4ZmI2MGMyZjNkNjEx
ZTJjNWI4OTFhYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApA
QCAtMjQxLDggKzI0MSwxNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJl
bmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMpCiAKIHZvaWQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6b3B0aW1pemVSZW5kZXJQYXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYgcGFzc2VzKQog
eworICAgIENDT3ZlcmRyYXdDb3VudHMgb3ZlcmRyYXdDb3VudHM7CisKKyAgICAvLyBGSVhNRTog
T25seSBjb21wdXRlIG92ZXJkcmF3IG1ldHJpY3Mgb2NjYXNpb25hbGx5LCBub3Qgb24gZXZlcnkg
ZnJhbWUuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhc3Nlcy5zaXplKCk7ICsraSkK
LSAgICAgICAgcGFzc2VzW2ldLT5vcHRpbWl6ZVF1YWRzKCk7CisgICAgICAgIHBhc3Nlc1tpXS0+
b3B0aW1pemVRdWFkcygmb3ZlcmRyYXdDb3VudHMpOworCisgICAgZmxvYXQgbm9ybWFsaXphdGlv
biA9IDEwMDAuZiAvIChtX2xheWVyUmVuZGVyZXItPnZpZXdwb3J0V2lkdGgoKSAqIG1fbGF5ZXJS
ZW5kZXJlci0+dmlld3BvcnRIZWlnaHQoKSk7CisgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dy
YW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5waXhlbE92ZXJkcmF3T3BhcXVlIiwgc3RhdGljX2Nh
c3Q8aW50Pihub3JtYWxpemF0aW9uICogb3ZlcmRyYXdDb3VudHMubV9waXhlbHNEcmF3bk9wYXF1
ZSksIDEwMCwgMTAwMDAwMCwgNTApOworICAgIFBsYXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3Vz
dG9tQ291bnRzKCJSZW5kZXJlcjQucGl4ZWxPdmVyZHJhd1RyYW5zcGFyZW50Iiwgc3RhdGljX2Nh
c3Q8aW50Pihub3JtYWxpemF0aW9uICogb3ZlcmRyYXdDb3VudHMubV9waXhlbHNEcmF3blRyYW5z
cGFyZW50KSwgMTAwLCAxMDAwMDAwLCA1MCk7CisgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dy
YW1DdXN0b21Db3VudHMoIlJlbmRlcmVyNC5waXhlbE92ZXJkcmF3Q3VsbGVkIiwgc3RhdGljX2Nh
c3Q8aW50Pihub3JtYWxpemF0aW9uICogb3ZlcmRyYXdDb3VudHMubV9waXhlbHNDdWxsZWQpLCAx
MDAsIDEwMDAwMDAsIDUwKTsKIH0KIAogSW50U2l6ZSBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjb250
ZW50U2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCBjOGJkOWIwZjM2
MzI0YWY2ZThhNGJjMWZiNWEyNDA4ZmYwMzE0NTRkLi43ODEyNjFkZDc1NDUwMjM4MjRiOGYwNGRh
NmFkNTcyMTMwOWM0ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTc1LDcgKzc1
LDIyIEBAIHN0YXRpYyBJbnRSZWN0IHJlY3RTdWJ0cmFjdFJlZ2lvbihjb25zdCBSZWdpb24mIHJl
Z2lvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICByZXR1cm4gcmVjdDsKIH0KIAotdm9pZCBD
Q1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0KQorc3Rh
dGljIGZsb2F0IHdlZGdlUHJvZHVjdChjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQ
b2ludCYgcDIpCit7CisgICAgcmV0dXJuIHAxLngoKSAqIHAyLnkoKSAtIHAxLnkoKSAqIHAyLngo
KTsKK30KKworLy8gQ29tcHV0ZXMgYXJlYSBvZiBxdWFkcyB0aGF0IGFyZSBwb3NzaWJseSBub24t
cmVjdGFuZ3VsYXIuIENhbgorLy8gYmUgZWFzaWx5IGV4dGVuZGVkIHRvIHBvbHlnb25zLgorc3Rh
dGljIGZsb2F0IHF1YWRBcmVhKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKK3sKKyAgICByZXR1cm4g
ZmFicygwLjUgKiAod2VkZ2VQcm9kdWN0KHF1YWQucDEoKSwgcXVhZC5wMigpKSArCisgICAgICAg
ICAgICAgICAgICAgd2VkZ2VQcm9kdWN0KHF1YWQucDIoKSwgcXVhZC5wMygpKSArCisgICAgICAg
ICAgICAgICAgICAgd2VkZ2VQcm9kdWN0KHF1YWQucDMoKSwgcXVhZC5wNCgpKSArCisgICAgICAg
ICAgICAgICAgICAgd2VkZ2VQcm9kdWN0KHF1YWQucDQoKSwgcXVhZC5wMSgpKSkpOworfQorCit2
b2lkIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3Qs
IENDT3ZlcmRyYXdDb3VudHMqIG92ZXJkcmF3TWV0cmljcykKIHsKICAgICBpZiAoIXF1YWRMaXN0
LnNpemUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTcsOCArMTEyLDExIEBAIHZvaWQgQ0NRdWFk
Q3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCkKIAogICAgICAg
ICAvLyBTZWUgaWYgd2UgY2FuIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHBpeGVscyB0byBkcmF3IGJ5
IHJlZHVjaW5nIHRoZSBzaXplIG9mIHRoZSBkcmF3CiAgICAgICAgIC8vIHF1YWQgLSB3ZSBkbyB0
aGlzIGJ5IGNoYW5naW5nIGl0cyB2aXNpYmxlIHJlY3QuCi0gICAgICAgIGlmIChrZWVwUXVhZCAm
JiB0cmFuc2Zvcm1lZFZpc2libGVRdWFkUmVjdCAhPSB0cmFuc2Zvcm1lZFF1YWRSZWN0ICYmIGRy
YXdRdWFkLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkpCisgICAgICAgIGJvb2wgZGlkUmVk
dWNlUXVhZFNpemUgPSBmYWxzZTsKKyAgICAgICAgaWYgKGtlZXBRdWFkICYmIHRyYW5zZm9ybWVk
VmlzaWJsZVF1YWRSZWN0ICE9IHRyYW5zZm9ybWVkUXVhZFJlY3QgJiYgZHJhd1F1YWQtPmlzTGF5
ZXJBeGlzQWxpZ25lZEludFJlY3QoKSkgewogICAgICAgICAgICAgZHJhd1F1YWQtPnNldFF1YWRW
aXNpYmxlUmVjdChkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBSZWN0KHRy
YW5zZm9ybWVkVmlzaWJsZVF1YWRSZWN0KSk7CisgICAgICAgICAgICBkaWRSZWR1Y2VRdWFkU2l6
ZSA9IHRydWU7CisgICAgICAgIH0KIAogICAgICAgICAvLyBXaGVuIGFkZGluZyByZWN0IHRvIG9w
YXF1ZSByZWdpb24sIGRlZmxhdGUgaXQgdG8gc3RheSBjb25zZXJ2YXRpdmUuCiAgICAgICAgIGlm
IChrZWVwUXVhZCAmJiBkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKSB7CkBA
IC0xMDgsNiArMTI2LDI1IEBAIHZvaWQgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhD
Q1F1YWRMaXN0JiBxdWFkTGlzdCkKIAogICAgICAgICBpZiAoa2VlcFF1YWQpCiAgICAgICAgICAg
ICBjdWxsZWRMaXN0LmFwcGVuZChxdWFkTGlzdFtpXS5yZWxlYXNlKCkpOworCisgICAgICAgIGlm
IChvdmVyZHJhd01ldHJpY3MpIHsKKyAgICAgICAgICAgIC8vIFdlIGNvbXB1dGUgdGhlIGFyZWEg
b2YgdGhlIHRyYW5zZm9ybWVkIHF1YWQsIGFzIHRoaXMgc2hvdWxkIGJlIGluIHBpeGVscy4KKyAg
ICAgICAgICAgIGZsb2F0IGFyZWEgPSBxdWFkQXJlYShkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgp
Lm1hcFF1YWQoRmxvYXRRdWFkKGRyYXdRdWFkLT5xdWFkUmVjdCgpKSkpOworICAgICAgICAgICAg
aWYgKGtlZXBRdWFkKSB7CisgICAgICAgICAgICAgICAgaWYgKGRpZFJlZHVjZVF1YWRTaXplKSB7
CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHZpc2libGVRdWFkUmVjdEFyZWEgPSBxdWFkQXJl
YShkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFF1YWQoRmxvYXRRdWFkKGRyYXdRdWFkLT5x
dWFkVmlzaWJsZVJlY3QoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgb3ZlcmRyYXdNZXRyaWNz
LT5tX3BpeGVsc0N1bGxlZCArPSBhcmVhIC0gdmlzaWJsZVF1YWRSZWN0QXJlYTsKKyAgICAgICAg
ICAgICAgICAgICAgYXJlYSA9IHZpc2libGVRdWFkUmVjdEFyZWE7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIEludFJlY3QgdmlzaWJsZU9wYXF1ZVJlY3QoZHJhd1F1YWQtPnF1
YWRWaXNpYmxlUmVjdCgpKTsKKyAgICAgICAgICAgICAgICB2aXNpYmxlT3BhcXVlUmVjdC5pbnRl
cnNlY3QoZHJhd1F1YWQtPm9wYXF1ZVJlY3QoKSk7CisgICAgICAgICAgICAgICAgRmxvYXRRdWFk
IHZpc2libGVPcGFxdWVRdWFkID0gZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBRdWFkKEZs
b2F0UXVhZCh2aXNpYmxlT3BhcXVlUmVjdCkpOworICAgICAgICAgICAgICAgIGZsb2F0IG9wYXF1
ZUFyZWEgPSBxdWFkQXJlYSh2aXNpYmxlT3BhcXVlUXVhZCk7CisgICAgICAgICAgICAgICAgb3Zl
cmRyYXdNZXRyaWNzLT5tX3BpeGVsc0RyYXduT3BhcXVlICs9IG9wYXF1ZUFyZWE7CisgICAgICAg
ICAgICAgICAgb3ZlcmRyYXdNZXRyaWNzLT5tX3BpeGVsc0RyYXduVHJhbnNwYXJlbnQgKz0gYXJl
YSAtIG9wYXF1ZUFyZWE7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBvdmVy
ZHJhd01ldHJpY3MtPm1fcGl4ZWxzQ3VsbGVkICs9IGFyZWE7CisgICAgICAgIH0KICAgICB9CiAg
ICAgcXVhZExpc3QuY2xlYXIoKTsgLy8gUmVsZWFzZSBhbnl0aGluZyB0aGF0IHJlbWFpbnMuCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUXVhZEN1bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkQ3VsbGVyLmgKaW5kZXggNzE3OTI4NWFjNDg1ZDBkYTM1OWIxNjYxZGZhOGNj
NmJiNjJhYmYxOS4uNTNjY2Y2YmZlODI2ZjRkMzdjNjFlNTRmZTM0MTg2YjE4NWZiY2QyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkQ3VsbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkQ3VsbGVyLmgKQEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDQ1F1YWRDdWxsZXIgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGN1bGxP
Y2NsdWRlZFF1YWRzKENDUXVhZExpc3QmKTsKKyAgICAvLyBQYXNzaW5nIDAgZm9yIENDT3ZlcmRy
YXdDb3VudHMqIGlzIHZhbGlkLCBhbmQgZGlzYWJsZSB0aGUgZXh0cmEgY29tcHV0YXRpb24KKyAg
ICAvLyBkb25lIHRvIGVzdGltYXRlIG92ZXIgZHJhdyBzdGF0aXN0aWNzLgorICAgIHN0YXRpYyB2
b2lkIGN1bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmLCBDQ092ZXJkcmF3Q291bnRzKik7CiAK
IHByaXZhdGU6CiAgICAgLy8gTWFrZSBub24taW5zdGFudGlhYmxlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVy
UGFzcy5jcHAKaW5kZXggNmY1MWZiY2RlMDVhYzk2MTI4NzQ0MDQ1MTA1NGY0ZWMzZjUxMjhkZi4u
OGY2MDNhOTMxZjA1YjEzYmRjMGYyNzkwZDZjMzI0NDg1NzE2M2M0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3MuY3BwCkBAIC02NCw5ICs2NCw5IEBAIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRR
dWFkc0ZvclJlbmRlclN1cmZhY2VMYXllcihDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbV9zaGFy
ZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKIH0KIAot
dm9pZCBDQ1JlbmRlclBhc3M6Om9wdGltaXplUXVhZHMoKQordm9pZCBDQ1JlbmRlclBhc3M6Om9w
dGltaXplUXVhZHMoQ0NPdmVyZHJhd0NvdW50cyogb3ZlcmRyYXcpCiB7Ci0gICAgQ0NRdWFkQ3Vs
bGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhtX3F1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1
bGxPY2NsdWRlZFF1YWRzKG1fcXVhZExpc3QsIG92ZXJkcmF3KTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQ
YXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3MuaAppbmRleCA5ZmI3NzE2NmM0Y2QwNDc2NDdlOGQxYWUwMzJmZTQ2YmQ5YTg2MWJm
Li5kMmI3NzZhNjg5NjhlMWI4ZjllYTQxZWJlMzYxNDc1Njk5OThmOGQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclBhc3MuaApAQCAtMzgsNiArMzgsMTYgQEAgY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGU7CiAK
IHR5cGVkZWYgVmVjdG9yPE93blB0cjxDQ0RyYXdRdWFkPiA+IENDUXVhZExpc3Q7CiAKK3N0cnVj
dCBDQ092ZXJkcmF3Q291bnRzIHsKKyAgICAvLyBDb3VudCBvZiBwaXhlbHMgdGhhdCBhcmUgb3Bh
cXVlIChhbmQgdGh1cyBvY2NsdWRlKS4gSWRlYWxseSB0aGlzIGlzIG5vIG1vcmUKKyAgICAvLyB0
aGFuIHdpZXdwb3J0IHdpZHRoIHggaGVpZ2h0LgorICAgIGZsb2F0IG1fcGl4ZWxzRHJhd25PcGFx
dWU7CisgICAgLy8gQ291bnQgb2YgcGl4ZWxzIHRoYXQgYXJlIHBvc3NpYmx5IHRyYW5zcGFyZW50
LCBhbmQgY2Fubm90IG9jY2x1ZGUuCisgICAgZmxvYXQgbV9waXhlbHNEcmF3blRyYW5zcGFyZW50
OworICAgIC8vIENvdW50IG9mIHBpeGVscyBub3QgZHJhd24gYXMgdGhleSBhcmUgb2NjbHVkZWQg
Ynkgc29tdGhpbmcgb3BhcXVlLgorICAgIGZsb2F0IG1fcGl4ZWxzQ3VsbGVkOworfTsKKwogY2xh
c3MgQ0NSZW5kZXJQYXNzIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1JlbmRlclBhc3Mp
OwogcHVibGljOgpAQCAtNDYsNyArNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRRdWFk
c0ZvckxheWVyKENDTGF5ZXJJbXBsKik7CiAgICAgdm9pZCBhcHBlbmRRdWFkc0ZvclJlbmRlclN1
cmZhY2VMYXllcihDQ0xheWVySW1wbCopOwogCi0gICAgdm9pZCBvcHRpbWl6ZVF1YWRzKCk7Cisg
ICAgLy8gUGFzc2luZyBpbiAwIGlzIHZhbGlkLCBhbmQgZGlzYWJsZXMgcGVyZm9ybWluZyBvdmVy
ZHJhdyBjYWxjdWxhdGlvbnMuCisgICAgdm9pZCBvcHRpbWl6ZVF1YWRzKENDT3ZlcmRyYXdDb3Vu
dHMqKTsKIAogICAgIGNvbnN0IENDUXVhZExpc3QmIHF1YWRMaXN0KCkgY29uc3QgeyByZXR1cm4g
bV9xdWFkTGlzdDsgfQogICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFjZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdGFyZ2V0U3VyZmFjZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggMjk5ZTVjN2U1YmM1NmNkNDkwZjc2
MTdiZjY2NDYyZmY1NGQ5M2MzZi4uMGFhNTdmZmJjNjc2MGU3YThiMGE1M2NmNDdjMmIzZjJlOTgz
M2JkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxs
ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxl
clRlc3QuY3BwCkBAIC02NCw2ICs2NCw3IEBAIHZvaWQgc2V0UXVhZHMoQ0NTaGFyZWRRdWFkU3Rh
dGUqIHJvb3RTdGF0ZSwgQ0NTaGFyZWRRdWFkU3RhdGUqIGNoaWxkU3RhdGUsIENDUXVhCiAKICNk
ZWZpbmUgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTICAgICAgICAgICAgICAgXAog
ICAgIENDUXVhZExpc3QgcXVhZExpc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgQ0NPdmVyZHJhd0NvdW50cyBvdmVyZHJhdzsgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsgICAgICAgICAgICAg
ICAgXAogICAgIEludFNpemUgcm9vdFNpemUgPSBJbnRTaXplKDMwMCwgMzAwKTsgICAgICAgICAg
ICAgICBcCiAgICAgSW50UmVjdCByb290UmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgcm9vdFNp
emUpOyAgIFwKQEAgLTc5LDcgKzgwLDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlD
dWxsQ2hpbGRMaW5lc1VwVG9wTGVmdCkKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwg
Y2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXpl
KCksIDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7
CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgJm92ZXJkcmF3
KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCA5dSk7CiB9CiAKQEAgLTkyLDcgKzkz
LDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsV2hlbkNoaWxkT3BhY2l0eU5v
dE9uZSkKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwg
cXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7Ci0gICAgQ0NR
dWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgQ0NRdWFkQ3VsbGVy
OjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgJm92ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEo
cXVhZExpc3Quc2l6ZSgpLCAxM3UpOwogfQogCkBAIC0xMDUsNyArMTA2LDcgQEAgVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsV2hlbkNoaWxkT3BhcXVlRmxhZ0ZhbHNlKQogCiAgICAg
c2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAg
ICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxsZXI6OmN1
bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRl
ZFF1YWRzKHF1YWRMaXN0LCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXpl
KCksIDEzdSk7CiB9CiAKQEAgLTEyMCw3ICsxMjEsNyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3Qs
IHZlcmlmeUN1bGxDZW50ZXJUaWxlT25seSkKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQo
KSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5z
aXplKCksIDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlz
dCk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgJm92ZXJk
cmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOwogCiAgICAgSW50UmVj
dCBxdWFkVmlzaWJsZVJlY3QxID0gcXVhZExpc3RbMV0uZ2V0KCktPnF1YWRWaXNpYmxlUmVjdCgp
OwpAQCAtMTU4LDcgKzE1OSw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENl
bnRlclRpbGVOb25JbnRlZ3JhbFNpemUxKQogICAgIHF1YWRMaXN0LmFwcGVuZChNYWtlVGlsZVF1
YWQoY2hpbGRTdGF0ZS5nZXQoKSwgSW50UmVjdChJbnRQb2ludCgpLCBJbnRTaXplKDEwMCwgMTAw
KSkpKTsKIAogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDJ1KTsKLSAgICBDQ1F1YWRD
dWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1
bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFk
TGlzdC5zaXplKCksIDJ1KTsKIH0KIApAQCAtMTgxLDcgKzE4Miw3IEBAIFRFU1QoQ0NRdWFkQ3Vs
bGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVOb25JbnRlZ3JhbFNpemUyKQogICAgIHF1YWRM
aXN0LmFwcGVuZChNYWtlVGlsZVF1YWQoY2hpbGRTdGF0ZS5nZXQoKSwgSW50UmVjdChJbnRQb2lu
dCgpLCBJbnRTaXplKDEwMCwgMTAwKSkpKTsKIAogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXpl
KCksIDJ1KTsKLSAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsK
KyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCAmb3ZlcmRyYXcp
OwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDJ1KTsKIH0KIApAQCAtMTk2LDcgKzE5
Nyw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcEJvdHRv
bVJpZ2h0KQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgp
LCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBD
Q1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxs
ZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9F
UShxdWFkTGlzdC5zaXplKCksIDl1KTsKIH0KIApAQCAtMjEyLDcgKzIxMyw3IEBAIFRFU1QoQ0NR
dWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbikKIAogICAgIHNldFF1YWRzKHJvb3RT
dGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QsIGNoaWxkT3BhcXVlUmVjdCk7
CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxsZXI6
OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2Ns
dWRlZFF1YWRzKHF1YWRMaXN0LCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5z
aXplKCksIDEydSk7CiB9CiAKQEAgLTIyOCw3ICsyMjksNyBAQCBURVNUKENDUXVhZEN1bGxlclRl
c3QsIHZlcmlmeUN1bGxTdWJSZWdpb24yKQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgp
LCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKICAgICBFWFBF
Q1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwotICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1
ZGVkUXVhZHMocXVhZExpc3QpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMo
cXVhZExpc3QsICZvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1
KTsKIH0KIApAQCAtMjQ0LDcgKzI0NSw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5
Q3VsbFN1YlJlZ2lvbkNoZWNrT3ZlcmN1bGwpCiAKICAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0
KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3QpOwogICAgIEVY
UEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2Nj
bHVkZWRRdWFkcyhxdWFkTGlzdCk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFk
cyhxdWFkTGlzdCwgJm92ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAx
M3UpOwogfQogCkBAIC0yNjAsNyArMjYxLDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJp
ZnlOb25BeGlzQWxpZ25lZFF1YWRzRG9udE9jY2x1ZGUpCiAKICAgICBzZXRRdWFkcyhyb290U3Rh
dGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVh
ZExpc3Quc2l6ZSgpLCAxM3UpOwotICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMo
cXVhZExpc3QpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3Qs
ICZvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKIH0KIApA
QCAtMjgyLDcgKzI4Myw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9uQXhpc0Fs
aWduZWRRdWFkc1NhZmVseUN1bGxlZCkKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwg
Y2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXpl
KCksIDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCk7
CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgJm92ZXJkcmF3
KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129250</attachid>
            <date>2012-02-28 07:29:34 -0800</date>
            <delta_ts>2012-02-29 12:51:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74982-20120228102933.patch</filename>
            <type>text/plain</type>
            <size>22234</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MTAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTIyMGQwOTAzMDc0NjQy
YWM5MWEwMWYxYTE5YWNlNmE2ZWUzOTQwNS4uMTQ5ODFkN2FiOGFkOGMzNGM2MDA3NGRiMzM4M2Mz
ZTEyZjNmN2M5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTI4ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEVzdGltYXRlIHBpeGVsIGNvdW50IGZvciBmcmFtZSByYXRlIGNvbnRyb2wKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0OTgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFsdWUgY2hlY2tzIGFkZGVk
IHRvIHVuaXQgdGVzdHMuCisKKyAgICAgICAgQWRkcyBtZWNoYW5pc20gdG8gY29tcHV0ZSBhbmQg
Y29sbGVjdCBzdGF0aXN0aWNzIG9uIHBpeGVsIG92ZXJkcmF3IGZvciBzZWxlY3RlZCBmcmFtZXMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6Om9wdGlt
aXplUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1F1YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2VkZ2VQcm9kdWN0KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cXVhZEFyZWEpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmg6CisgICAgICAgIChDQ1F1
YWRDdWxsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6Om9wdGltaXplUXVh
ZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
cy5oOgorICAgICAgICAoQ0NPdmVyZHJhd0NvdW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKENDUmVuZGVyUGFzcyk6CisKIDIwMTItMDItMjggIFl1cnkgU2VtaWtoYXRza3kgIDx5
dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc2hvdyByZXNvdXJj
ZSBkaXZpZGVycyBvbiBtZW1vcnkgY291bnRlciBncmFwaHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggMjNmNzhiNDAzMTMwMDcxM2E4MThmOTJiNDc3YmRmMDk2ZjY3MDg1Yi4uN2E1Y2Fl
MzNiNWZkZjk0MjU3OWNlNjhlZjM2NTllNGUzNmQ2ODM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wMi0yOCAgVy4gSmFtZXMgTWFjTGVhbiAgPHdq
bWFjbGVhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFc3RpbWF0ZSBwaXhl
bCBjb3VudCBmb3IgZnJhbWUgcmF0ZSBjb250cm9sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgbWVjaGFuaXNtIHRvIGNvbXB1dGUgYW5kIGNvbGxl
Y3Qgc3RhdGlzdGljcyBvbiBwaXhlbCBvdmVyZHJhdyBmb3Igc2VsZWN0ZWQgZnJhbWVzLgorCisg
ICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorCiAyMDEyLTAyLTI4ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiAgUm9sbGVk
IERFUFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDgwZTQ3
MzhjYzEzYWQ0ZjljMDhkNWZkNzVkYjEzY2ZmNTg2ZGM5NTUuLjFiOTZlNDk1ZGQwOGQ2OTRkYmVm
ODE5NWUzY2FmNjg4MjVlZTdiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCkBAIC0yMzQsMTAgKzIzNCwxNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6Om9w
dGltaXplUmVuZGVyUGFzc2VzKENDUmVuZGVyUGFzc0xpc3QmIHBhc3NlcykKIAogICAgIGJvb2wg
aGF2ZURhbWFnZVJlY3QgPSBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdQYXJ0aWFs
U3dhcDsKIAorICAgIC8vIEZJWE1FOiBjb21wdXRlIG92ZXJkcmF3IG1ldHJpY3Mgb25seSBvY2Nh
c2lvbmFsbHksIG5vdCBldmVyeSBmcmFtZS4KKyAgICBDQ092ZXJkcmF3Q291bnRzIG92ZXJkcmF3
Q291bnRzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwYXNzZXMuc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgRmxvYXRSZWN0IGRhbWFnZVJlY3QgPSBwYXNzZXNbaV0tPnRhcmdldFN1cmZh
Y2UoKS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVjdCgpOwotICAgICAgICBwYXNz
ZXNbaV0tPm9wdGltaXplUXVhZHMoaGF2ZURhbWFnZVJlY3QsIGRhbWFnZVJlY3QpOworICAgICAg
ICBwYXNzZXNbaV0tPm9wdGltaXplUXVhZHMoaGF2ZURhbWFnZVJlY3QsIGRhbWFnZVJlY3QsICZv
dmVyZHJhd0NvdW50cyk7CiAgICAgfQorCisgICAgZmxvYXQgbm9ybWFsaXphdGlvbiA9IDEwMDAu
ZiAvIChtX2xheWVyUmVuZGVyZXItPnZpZXdwb3J0V2lkdGgoKSAqIG1fbGF5ZXJSZW5kZXJlci0+
dmlld3BvcnRIZWlnaHQoKSk7CisgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21D
b3VudHMoIlJlbmRlcmVyNC5waXhlbE92ZXJkcmF3T3BhcXVlIiwgc3RhdGljX2Nhc3Q8aW50Pihu
b3JtYWxpemF0aW9uICogb3ZlcmRyYXdDb3VudHMubV9waXhlbHNEcmF3bk9wYXF1ZSksIDEwMCwg
MTAwMDAwMCwgNTApOworICAgIFBsYXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRz
KCJSZW5kZXJlcjQucGl4ZWxPdmVyZHJhd1RyYW5zcGFyZW50Iiwgc3RhdGljX2Nhc3Q8aW50Pihu
b3JtYWxpemF0aW9uICogb3ZlcmRyYXdDb3VudHMubV9waXhlbHNEcmF3blRyYW5zcGFyZW50KSwg
MTAwLCAxMDAwMDAwLCA1MCk7CisgICAgUGxhdGZvcm1TdXBwb3J0OjpoaXN0b2dyYW1DdXN0b21D
b3VudHMoIlJlbmRlcmVyNC5waXhlbE92ZXJkcmF3Q3VsbGVkIiwgc3RhdGljX2Nhc3Q8aW50Pihu
b3JtYWxpemF0aW9uICogb3ZlcmRyYXdDb3VudHMubV9waXhlbHNDdWxsZWQpLCAxMDAsIDEwMDAw
MDAsIDUwKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlTGF5ZXJzUmVj
dXJzaXZlKENDTGF5ZXJJbXBsKiBjdXJyZW50LCBkb3VibGUgZnJhbWVCZWdpblRpbWVTZWNzLCBD
Q0FuaW1hdGlvbkV2ZW50c1ZlY3RvciYgZXZlbnRzLCBib29sJiBkaWRBbmltYXRlLCBib29sJiBu
ZWVkc0FuaW1hdGVMYXllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCA0ZjY0MzVk
YzBmMjYyNjE4MjQwNmIyODZkY2Q3OWVlNzU4YjZjMGIwLi4xYzRhNDk5Y2NmMWRmMGI2N2M5MTc0
Zjc2OWVjOGI3MDhiMzg1M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTc1LDcg
Kzc1LDIyIEBAIHN0YXRpYyBJbnRSZWN0IHJlY3RTdWJ0cmFjdFJlZ2lvbihjb25zdCBSZWdpb24m
IHJlZ2lvbiwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICByZXR1cm4gcmVjdDsKIH0KIAotdm9p
ZCBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBi
b29sIGhhdmVEYW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRhbWFnZVJlY3QpCitzdGF0aWMg
ZmxvYXQgd2VkZ2VQcm9kdWN0KGNvbnN0IEZsb2F0UG9pbnQmIHAxLCBjb25zdCBGbG9hdFBvaW50
JiBwMikKK3sKKyAgICByZXR1cm4gcDEueCgpICogcDIueSgpIC0gcDEueSgpICogcDIueCgpOwor
fQorCisvLyBDb21wdXRlcyBhcmVhIG9mIHF1YWRzIHRoYXQgYXJlIHBvc3NpYmx5IG5vbi1yZWN0
YW5ndWxhci4gQ2FuCisvLyBiZSBlYXNpbHkgZXh0ZW5kZWQgdG8gcG9seWdvbnMuCitzdGF0aWMg
ZmxvYXQgcXVhZEFyZWEoY29uc3QgRmxvYXRRdWFkJiBxdWFkKQoreworICAgIHJldHVybiBmYWJz
KDAuNSAqICh3ZWRnZVByb2R1Y3QocXVhZC5wMSgpLCBxdWFkLnAyKCkpICsKKyAgICAgICAgICAg
ICAgICAgICB3ZWRnZVByb2R1Y3QocXVhZC5wMigpLCBxdWFkLnAzKCkpICsKKyAgICAgICAgICAg
ICAgICAgICB3ZWRnZVByb2R1Y3QocXVhZC5wMygpLCBxdWFkLnA0KCkpICsKKyAgICAgICAgICAg
ICAgICAgICB3ZWRnZVByb2R1Y3QocXVhZC5wNCgpLCBxdWFkLnAxKCkpKSk7Cit9CisKK3ZvaWQg
Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgYm9v
bCBoYXZlRGFtYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkYW1hZ2VSZWN0LCBDQ092ZXJkcmF3
Q291bnRzKiBvdmVyZHJhd01ldHJpY3MpCiB7CiAgICAgaWYgKCFxdWFkTGlzdC5zaXplKCkpCiAg
ICAgICAgIHJldHVybjsKQEAgLTk2LDIxICsxMTEsNDMgQEAgdm9pZCBDQ1F1YWRDdWxsZXI6OmN1
bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBib29sIGhhdmVEYW1hZ2VSZWN0
LAogCiAgICAgICAgIEludFJlY3QgdHJhbnNmb3JtZWRWaXNpYmxlUXVhZFJlY3QgPSByZWN0U3Vi
dHJhY3RSZWdpb24ob3BhcXVlQ292ZXJhZ2VUaHVzRmFyLCB0cmFuc2Zvcm1lZFF1YWRSZWN0KTsK
ICAgICAgICAgYm9vbCBrZWVwUXVhZCA9ICF0cmFuc2Zvcm1lZFZpc2libGVRdWFkUmVjdC5pc0Vt
cHR5KCk7Ci0gICAgICAgIGlmICgha2VlcFF1YWQpCi0gICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICAvLyBTZWUgaWYgd2UgY2FuIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHBpeGVscyB0byBk
cmF3IGJ5IHJlZHVjaW5nIHRoZSBzaXplIG9mIHRoZSBkcmF3CiAgICAgICAgIC8vIHF1YWQgLSB3
ZSBkbyB0aGlzIGJ5IGNoYW5naW5nIGl0cyB2aXNpYmxlIHJlY3QuCi0gICAgICAgIGlmICh0cmFu
c2Zvcm1lZFZpc2libGVRdWFkUmVjdCAhPSB0cmFuc2Zvcm1lZFF1YWRSZWN0ICYmIGRyYXdRdWFk
LT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkpCi0gICAgICAgICAgICBkcmF3UXVhZC0+c2V0
UXVhZFZpc2libGVSZWN0KGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1hcFJl
Y3QodHJhbnNmb3JtZWRWaXNpYmxlUXVhZFJlY3QpKTsKLQotICAgICAgICAvLyBXaGVuIGFkZGlu
ZyByZWN0IHRvIG9wYXF1ZSByZWdpb24sIGRlZmxhdGUgaXQgdG8gc3RheSBjb25zZXJ2YXRpdmUu
Ci0gICAgICAgIGlmIChkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpICYmICFk
cmF3UXVhZC0+b3BhcXVlUmVjdCgpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgRmxvYXRSZWN0
IGZsb2F0T3BhcXVlUmVjdCA9IGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkubWFwUmVjdChGbG9h
dFJlY3QoZHJhd1F1YWQtPm9wYXF1ZVJlY3QoKSkpOwotICAgICAgICAgICAgb3BhcXVlQ292ZXJh
Z2VUaHVzRmFyLnVuaXRlKFJlZ2lvbihlbmNsb3NlZEludFJlY3QoZmxvYXRPcGFxdWVSZWN0KSkp
OworICAgICAgICBib29sIGRpZFJlZHVjZVF1YWRTaXplID0gZmFsc2U7CisgICAgICAgIGlmIChr
ZWVwUXVhZCkgeworICAgICAgICAgICAgaWYgKHRyYW5zZm9ybWVkVmlzaWJsZVF1YWRSZWN0ICE9
IHRyYW5zZm9ybWVkUXVhZFJlY3QgJiYgZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJl
Y3QoKSkgeworICAgICAgICAgICAgICAgIGRyYXdRdWFkLT5zZXRRdWFkVmlzaWJsZVJlY3QoZHJh
d1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5pbnZlcnNlKCkubWFwUmVjdCh0cmFuc2Zvcm1lZFZpc2li
bGVRdWFkUmVjdCkpOworICAgICAgICAgICAgICAgIGRpZFJlZHVjZVF1YWRTaXplID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2hlbiBhZGRpbmcgcmVjdCB0byBvcGFx
dWUgcmVnaW9uLCBkZWZsYXRlIGl0IHRvIHN0YXkgY29uc2VydmF0aXZlLgorICAgICAgICAgICAg
aWYgKGRyYXdRdWFkLT5pc0xheWVyQXhpc0FsaWduZWRJbnRSZWN0KCkgJiYgIWRyYXdRdWFkLT5v
cGFxdWVSZWN0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgRmxvYXRSZWN0IGZsb2F0
T3BhcXVlUmVjdCA9IGRyYXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkubWFwUmVjdChGbG9hdFJlY3Qo
ZHJhd1F1YWQtPm9wYXF1ZVJlY3QoKSkpOworICAgICAgICAgICAgICAgIG9wYXF1ZUNvdmVyYWdl
VGh1c0Zhci51bml0ZShSZWdpb24oZW5jbG9zZWRJbnRSZWN0KGZsb2F0T3BhcXVlUmVjdCkpKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY3VsbGVkTGlzdC5hcHBlbmQocXVhZExpc3Rb
aV0ucmVsZWFzZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIGN1bGxlZExpc3QuYXBwZW5kKHF1
YWRMaXN0W2ldLnJlbGVhc2UoKSk7CisgICAgICAgIGlmIChvdmVyZHJhd01ldHJpY3MpIHsKKyAg
ICAgICAgICAgIC8vIFdlIGNvbXB1dGUgdGhlIGFyZWEgb2YgdGhlIHRyYW5zZm9ybWVkIHF1YWQs
IGFzIHRoaXMgc2hvdWxkIGJlIGluIHBpeGVscy4KKyAgICAgICAgICAgIGZsb2F0IGFyZWEgPSBx
dWFkQXJlYShkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFF1YWQoRmxvYXRRdWFkKGRyYXdR
dWFkLT5xdWFkUmVjdCgpKSkpOworICAgICAgICAgICAgaWYgKGtlZXBRdWFkKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGRpZFJlZHVjZVF1YWRTaXplKSB7CisgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHZpc2libGVRdWFkUmVjdEFyZWEgPSBxdWFkQXJlYShkcmF3UXVhZC0+cXVhZFRyYW5zZm9y
bSgpLm1hcFF1YWQoRmxvYXRRdWFkKGRyYXdRdWFkLT5xdWFkVmlzaWJsZVJlY3QoKSkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgb3ZlcmRyYXdNZXRyaWNzLT5tX3BpeGVsc0N1bGxlZCArPSBhcmVh
IC0gdmlzaWJsZVF1YWRSZWN0QXJlYTsKKyAgICAgICAgICAgICAgICAgICAgYXJlYSA9IHZpc2li
bGVRdWFkUmVjdEFyZWE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEludFJl
Y3QgdmlzaWJsZU9wYXF1ZVJlY3QoZHJhd1F1YWQtPnF1YWRWaXNpYmxlUmVjdCgpKTsKKyAgICAg
ICAgICAgICAgICB2aXNpYmxlT3BhcXVlUmVjdC5pbnRlcnNlY3QoZHJhd1F1YWQtPm9wYXF1ZVJl
Y3QoKSk7CisgICAgICAgICAgICAgICAgRmxvYXRRdWFkIHZpc2libGVPcGFxdWVRdWFkID0gZHJh
d1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBRdWFkKEZsb2F0UXVhZCh2aXNpYmxlT3BhcXVlUmVj
dCkpOworICAgICAgICAgICAgICAgIGZsb2F0IG9wYXF1ZUFyZWEgPSBxdWFkQXJlYSh2aXNpYmxl
T3BhcXVlUXVhZCk7CisgICAgICAgICAgICAgICAgb3ZlcmRyYXdNZXRyaWNzLT5tX3BpeGVsc0Ry
YXduT3BhcXVlICs9IG9wYXF1ZUFyZWE7CisgICAgICAgICAgICAgICAgb3ZlcmRyYXdNZXRyaWNz
LT5tX3BpeGVsc0RyYXduVHJhbnNwYXJlbnQgKz0gYXJlYSAtIG9wYXF1ZUFyZWE7CisgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBvdmVyZHJhd01ldHJpY3MtPm1fcGl4ZWxzQ3Vs
bGVkICs9IGFyZWE7CisgICAgICAgIH0KICAgICB9CiAgICAgcXVhZExpc3QuY2xlYXIoKTsgLy8g
UmVsZWFzZSBhbnl0aGluZyB0aGF0IHJlbWFpbnMuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKaW5k
ZXggM2NjMzE1ZWM0MWVmMjNjODhjMWEyZGMzODAzMGVkMDBiZDJiNDI3OC4uODk1ODI1NzNiZDFl
YmZmYmNkNzE4YmM2ZTY2MDVhMjY5NDM0OTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKQEAg
LTMyLDcgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ1F1YWRDdWxsZXIg
ewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGN1bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3Qm
LCBib29sIGhhdmVEYW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGRhbWFnZVJlY3QpOworICAg
IC8vIFBhc3NpbmcgMCBmb3IgQ0NPdmVyZHJhd0NvdW50cyogaXMgdmFsaWQsIGFuZCBkaXNhYmxl
IHRoZSBleHRyYSBjb21wdXRhdGlvbgorICAgIC8vIGRvbmUgdG8gZXN0aW1hdGUgb3ZlciBkcmF3
IHN0YXRpc3RpY3MuCisgICAgc3RhdGljIHZvaWQgY3VsbE9jY2x1ZGVkUXVhZHMoQ0NRdWFkTGlz
dCYsIGJvb2wgaGF2ZURhbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZGFtYWdlUmVjdCwgQ0NP
dmVyZHJhd0NvdW50cyopOwogCiBwcml2YXRlOgogICAgIC8vIE1ha2Ugbm9uLWluc3RhbnRpYWJs
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCmluZGV4IGRhNGIyMjIyYzRjNDEwODQyZmFkMTVk
N2M4YTBhNTE1YWI4NzI2MmYuLmJkODc3ZWMzMDk5MDhjNTMyMzg5MWZjOWQ1MWJiOTA0OTc2ODZm
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyUGFzcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcApAQCAtNjUsOSArNjUsOSBAQCB2b2lkIEND
UmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwq
IGxheWVyKQogICAgIG1fc2hhcmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRl
LnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJQYXNzOjpvcHRpbWl6ZVF1YWRzKGJvb2wg
aGF2ZURhbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZGFtYWdlUmVjdCkKK3ZvaWQgQ0NSZW5k
ZXJQYXNzOjpvcHRpbWl6ZVF1YWRzKGJvb2wgaGF2ZURhbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgZGFtYWdlUmVjdCwgQ0NPdmVyZHJhd0NvdW50cyogb3ZlcmRyYXcpCiB7Ci0gICAgQ0NRdWFk
Q3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhtX3F1YWRMaXN0LCBoYXZlRGFtYWdlUmVjdCwgZGFt
YWdlUmVjdCk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhtX3F1YWRMaXN0
LCBoYXZlRGFtYWdlUmVjdCwgZGFtYWdlUmVjdCwgb3ZlcmRyYXcpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clBhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzcy5oCmluZGV4IDExZmJkNDAxNjM4NjVkMGY4YmQ1OTRhMmQwODlhODgzZjI1NDk5
MWIuLjkyMDUzMzg4YjllNmEwZTc4MTlhNWRlNzExNTkxYmMxYmRiYjg4YWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzcy5oCkBAIC0zOCw2ICszOCwxNiBAQCBjbGFzcyBDQ1NoYXJlZFF1YWRTdGF0ZTsK
IAogdHlwZWRlZiBWZWN0b3I8T3duUHRyPENDRHJhd1F1YWQ+ID4gQ0NRdWFkTGlzdDsKIAorc3Ry
dWN0IENDT3ZlcmRyYXdDb3VudHMgeworICAgIC8vIENvdW50IG9mIHBpeGVscyB0aGF0IGFyZSBv
cGFxdWUgKGFuZCB0aHVzIG9jY2x1ZGUpLiBJZGVhbGx5IHRoaXMgaXMgbm8gbW9yZQorICAgIC8v
IHRoYW4gd2lld3BvcnQgd2lkdGggeCBoZWlnaHQuCisgICAgZmxvYXQgbV9waXhlbHNEcmF3bk9w
YXF1ZTsKKyAgICAvLyBDb3VudCBvZiBwaXhlbHMgdGhhdCBhcmUgcG9zc2libHkgdHJhbnNwYXJl
bnQsIGFuZCBjYW5ub3Qgb2NjbHVkZS4KKyAgICBmbG9hdCBtX3BpeGVsc0RyYXduVHJhbnNwYXJl
bnQ7CisgICAgLy8gQ291bnQgb2YgcGl4ZWxzIG5vdCBkcmF3biBhcyB0aGV5IGFyZSBvY2NsdWRl
ZCBieSBzb210aGluZyBvcGFxdWUuCisgICAgZmxvYXQgbV9waXhlbHNDdWxsZWQ7Cit9OworCiBj
bGFzcyBDQ1JlbmRlclBhc3MgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyUGFz
cyk7CiBwdWJsaWM6CkBAIC00Niw3ICs1Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFF1
YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqKTsKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVy
U3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKik7CiAKLSAgICB2b2lkIG9wdGltaXplUXVhZHMoYm9v
bCBoYXZlRGFtYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICAvLyBQ
YXNzaW5nIGluIDAgZm9yIENDT3ZlcmRyYXdDb3VudHMgaXMgdmFsaWQsIGFuZCBkaXNhYmxlcyBw
ZXJmb3JtaW5nIG92ZXJkcmF3IGNhbGN1bGF0aW9ucy4KKyAgICB2b2lkIG9wdGltaXplUXVhZHMo
Ym9vbCBoYXZlRGFtYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkYW1hZ2VSZWN0LCBDQ092ZXJk
cmF3Q291bnRzKik7CiAKICAgICBjb25zdCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcXVhZExpc3Q7IH0KICAgICBDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2Uo
KSBjb25zdCB7IHJldHVybiBtX3RhcmdldFN1cmZhY2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCmluZGV4IGQ0OTcwM2UxNGZjY2I2
ZThmYTE0NzliOWZhNjdiYTIxNzY5NzAwNmQuLjE4NTk2ZTYzYTM2ZTM4NDQ1NTIyMzE1NDczMzM4
ZmM2OGU0MTZkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NR
dWFkQ3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1
YWRDdWxsZXJUZXN0LmNwcApAQCAtNjQsNiArNjQsNyBAQCB2b2lkIHNldFF1YWRzKENDU2hhcmVk
UXVhZFN0YXRlKiByb290U3RhdGUsIENDU2hhcmVkUXVhZFN0YXRlKiBjaGlsZFN0YXRlLCBDQ1F1
YQogCiAjZGVmaW5lIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUyAgICAgICAgICAg
ICAgIFwKICAgICBDQ1F1YWRMaXN0IHF1YWRMaXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIENDT3ZlcmRyYXdDb3VudHMgb3ZlcmRyYXcgPSB7MCwgMCwgMH07ICAgICAg
ICAgICAgICBcCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07ICAgICAg
ICAgICAgICAgIFwKICAgICBJbnRTaXplIHJvb3RTaXplID0gSW50U2l6ZSgzMDAsIDMwMCk7ICAg
ICAgICAgICAgICAgXAogICAgIEludFJlY3Qgcm9vdFJlY3QgPSBJbnRSZWN0KEludFBvaW50KCks
IHJvb3RTaXplKTsgICBcCkBAIC03OSw4ICs4MCwxMSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3Qs
IHZlcmlmeUN1bGxDaGlsZExpbmVzVXBUb3BMZWZ0KQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRl
LmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRM
aXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1
YWRMaXN0LCBmYWxzZSwgSW50UmVjdCgpKTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRl
ZFF1YWRzKHF1YWRMaXN0LCBmYWxzZSwgSW50UmVjdCgpLCAmb3ZlcmRyYXcpOwogICAgIEVYUEVD
VF9FUShxdWFkTGlzdC5zaXplKCksIDl1KTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3Bp
eGVsc0RyYXduT3BhcXVlLCA5MDAwMCwgMSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9w
aXhlbHNEcmF3blRyYW5zcGFyZW50LCAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5t
X3BpeGVsc0N1bGxlZCwgNDAwMDAsIDEpOwogfQogCiBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZl
cmlmeUN1bGxXaGVuQ2hpbGRPcGFjaXR5Tm90T25lKQpAQCAtOTIsOCArOTYsMTEgQEAgVEVTVChD
Q1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsV2hlbkNoaWxkT3BhY2l0eU5vdE9uZSkKIAogICAg
IHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwog
ICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpj
dWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSk7CisgICAgQ0NRdWFk
Q3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSwgJm92
ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIEVYUEVD
VF9ORUFSKG92ZXJkcmF3Lm1fcGl4ZWxzRHJhd25PcGFxdWUsIDkwMDAwLCAxKTsKKyAgICBFWFBF
Q1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0RyYXduVHJhbnNwYXJlbnQsIDQwMDAwLCAxKTsKKyAg
ICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0N1bGxlZCwgMCwgMSk7CiB9CiAKIFRFU1Qo
Q0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFdoZW5DaGlsZE9wYXF1ZUZsYWdGYWxzZSkKQEAg
LTEwNSw4ICsxMTIsMTEgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsV2hlbkNo
aWxkT3BhcXVlRmxhZ0ZhbHNlKQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGls
ZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwg
MTN1KTsKLSAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCBmYWxz
ZSwgSW50UmVjdCgpKTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRM
aXN0LCBmYWxzZSwgSW50UmVjdCgpLCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlz
dC5zaXplKCksIDEzdSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3bk9w
YXF1ZSwgOTAwMDAsIDEpOworICAgIEVYUEVDVF9ORUFSKG92ZXJkcmF3Lm1fcGl4ZWxzRHJhd25U
cmFuc3BhcmVudCwgNDAwMDAsIDEpOworICAgIEVYUEVDVF9ORUFSKG92ZXJkcmF3Lm1fcGl4ZWxz
Q3VsbGVkLCAwLCAxKTsKIH0KIAogVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2Vu
dGVyVGlsZU9ubHkpCkBAIC0xMjAsNyArMTMwLDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2
ZXJpZnlDdWxsQ2VudGVyVGlsZU9ubHkpCiAKICAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCks
IGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6
ZSgpLCAxM3UpOwotICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3Qs
IGZhbHNlLCBJbnRSZWN0KCkpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMo
cXVhZExpc3QsIGZhbHNlLCBJbnRSZWN0KCksICZvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1
YWRMaXN0LnNpemUoKSwgMTJ1KTsKIAogICAgIEludFJlY3QgcXVhZFZpc2libGVSZWN0MSA9IHF1
YWRMaXN0WzFdLmdldCgpLT5xdWFkVmlzaWJsZVJlY3QoKTsKQEAgLTEzNyw2ICsxNDcsMTAgQEAg
VEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2VudGVyVGlsZU9ubHkpCiAgICAgSW50
UmVjdCBxdWFkVmlzaWJsZVJlY3Q2ID0gcXVhZExpc3RbNl0uZ2V0KCktPnF1YWRWaXNpYmxlUmVj
dCgpOwogICAgIEVYUEVDVF9FUShxdWFkVmlzaWJsZVJlY3Q2LmhlaWdodCgpLCA1MCk7CiAgICAg
RVhQRUNUX0VRKHF1YWRWaXNpYmxlUmVjdDYueSgpLCAyNTApOworCisgICAgRVhQRUNUX05FQVIo
b3ZlcmRyYXcubV9waXhlbHNEcmF3bk9wYXF1ZSwgMTAwMDAwLCAxKTsKKyAgICBFWFBFQ1RfTkVB
UihvdmVyZHJhdy5tX3BpeGVsc0RyYXduVHJhbnNwYXJlbnQsIDAsIDEpOworICAgIEVYUEVDVF9O
RUFSKG92ZXJkcmF3Lm1fcGl4ZWxzQ3VsbGVkLCAzMDAwMCwgMSk7CiB9CiAKIFRFU1QoQ0NRdWFk
Q3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVOb25JbnRlZ3JhbFNpemUxKQpAQCAtMTU4
LDggKzE3MiwxMiBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDZW50ZXJUaWxl
Tm9uSW50ZWdyYWxTaXplMSkKICAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxk
U3RhdGUuZ2V0KCksIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CiAK
ICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAydSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpj
dWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSk7CisgICAgQ0NRdWFk
Q3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSwgJm92
ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAydSk7CisKKyAgICBFWFBF
Q1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0RyYXduT3BhcXVlLCAyMDM2MywgMSk7CisgICAgRVhQ
RUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3blRyYW5zcGFyZW50LCAwLCAxKTsKKyAgICBF
WFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0N1bGxlZCwgMCwgMSk7CiB9CiAKIFRFU1QoQ0NR
dWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRpbGVOb25JbnRlZ3JhbFNpemUyKQpAQCAt
MTgxLDggKzE5OSwxMiBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDZW50ZXJU
aWxlTm9uSW50ZWdyYWxTaXplMikKICAgICBxdWFkTGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNo
aWxkU3RhdGUuZ2V0KCksIEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7
CiAKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAydSk7Ci0gICAgQ0NRdWFkQ3VsbGVy
OjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSk7CisgICAgQ0NR
dWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSwg
Jm92ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAydSk7CisKKyAgICBF
WFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0RyYXduT3BhcXVlLCAxOTY0MywgMSk7CisgICAg
RVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3blRyYW5zcGFyZW50LCAwLCAxKTsKKyAg
ICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0N1bGxlZCwgMCwgMSk7CiB9CiAKIFRFU1Qo
Q0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENoaWxkTGluZXNVcEJvdHRvbVJpZ2h0KQpAQCAt
MTk2LDggKzIxOCwxMSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDaGlsZExp
bmVzVXBCb3R0b21SaWdodCkKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRT
dGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEz
dSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2Us
IEludFJlY3QoKSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlz
dCwgZmFsc2UsIEludFJlY3QoKSwgJm92ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Qu
c2l6ZSgpLCA5dSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3bk9wYXF1
ZSwgOTAwMDAsIDEpOworICAgIEVYUEVDVF9ORUFSKG92ZXJkcmF3Lm1fcGl4ZWxzRHJhd25UcmFu
c3BhcmVudCwgMCwgMSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNDdWxsZWQs
IDQwMDAwLCAxKTsKIH0KIAogVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVn
aW9uKQpAQCAtMjEyLDggKzIzNywxMSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1
bGxTdWJSZWdpb24pCiAKICAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUu
Z2V0KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJlY3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlz
dC5zaXplKCksIDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFk
TGlzdCwgZmFsc2UsIEludFJlY3QoKSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRR
dWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSwgJm92ZXJkcmF3KTsKICAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOworICAgIEVYUEVDVF9ORUFSKG92ZXJkcmF3Lm1fcGl4
ZWxzRHJhd25PcGFxdWUsIDkwMDAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3Bp
eGVsc0RyYXduVHJhbnNwYXJlbnQsIDMwMDAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJh
dy5tX3BpeGVsc0N1bGxlZCwgMTAwMDAsIDEpOwogfQogCiBURVNUKENDUXVhZEN1bGxlclRlc3Qs
IHZlcmlmeUN1bGxTdWJSZWdpb24yKQpAQCAtMjI4LDggKzI1NiwxMSBAQCBURVNUKENDUXVhZEN1
bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb24yKQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRl
LmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKICAg
ICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwotICAgIENDUXVhZEN1bGxlcjo6Y3Vs
bE9jY2x1ZGVkUXVhZHMocXVhZExpc3QsIGZhbHNlLCBJbnRSZWN0KCkpOworICAgIENDUXVhZEN1
bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QsIGZhbHNlLCBJbnRSZWN0KCksICZvdmVy
ZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKKyAgICBFWFBFQ1Rf
TkVBUihvdmVyZHJhdy5tX3BpeGVsc0RyYXduT3BhcXVlLCA5MDAwMCwgMSk7CisgICAgRVhQRUNU
X05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3blRyYW5zcGFyZW50LCAyNTAwMCwgMSk7CisgICAg
RVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNDdWxsZWQsIDE1MDAwLCAxKTsKIH0KIAogVEVT
VChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uQ2hlY2tPdmVyY3VsbCkKQEAg
LTI0NCw3ICsyNzUsNyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdp
b25DaGVja092ZXJjdWxsKQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0
YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVEocXVh
ZExpc3Quc2l6ZSgpLCAxM3UpOwotICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMo
cXVhZExpc3QsIGZhbHNlLCBJbnRSZWN0KCkpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1
ZGVkUXVhZHMocXVhZExpc3QsIGZhbHNlLCBJbnRSZWN0KCksICZvdmVyZHJhdyk7CiAgICAgRVhQ
RUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKIH0KIApAQCAtMjYwLDggKzI5MSwxMSBAQCBU
RVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4aXNBbGlnbmVkUXVhZHNEb250T2NjbHVk
ZSkKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVh
ZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7Ci0gICAgQ0NRdWFk
Q3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSk7Cisg
ICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJl
Y3QoKSwgJm92ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwor
ICAgIEVYUEVDVF9ORUFSKG92ZXJkcmF3Lm1fcGl4ZWxzRHJhd25PcGFxdWUsIDEzMDAwMCwgMSk7
CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3blRyYW5zcGFyZW50LCAwLCAx
KTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0N1bGxlZCwgMCwgMSk7CiB9CiAK
IC8vIFRoaXMgdGVzdCByZXF1aXJlcyBzb21lIGV4cGxhbmF0aW9uOiBoZXJlIHdlIGFyZSByb3Rh
dGluZyB0aGUgcXVhZHMgdG8gYmUgY3VsbGVkLgpAQCAtMjgyLDExICszMTYsMTQgQEAgVEVTVChD
Q1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlOb25BeGlzQWxpZ25lZFF1YWRzU2FmZWx5Q3VsbGVkKQog
CiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlz
dCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxs
ZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCBmYWxzZSwgSW50UmVjdCgpKTsKKyAgICBD
Q1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCBmYWxzZSwgSW50UmVjdCgp
LCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEydSk7CisgICAg
RVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3bk9wYXF1ZSwgMTIwMDAwLCAxKTsKKyAg
ICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0RyYXduVHJhbnNwYXJlbnQsIDAsIDEpOwor
ICAgIEVYUEVDVF9ORUFSKG92ZXJkcmF3Lm1fcGl4ZWxzQ3VsbGVkLCAxMDAwMCwgMSk7CiB9CiAK
LVRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ0eUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJUaWxl
KQorVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyVGls
ZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIApAQCAtMjk1LDEx
ICszMzIsMTQgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnR5Q3VsbE91dHNpZGVTY2lz
c29yT3ZlclRpbGUpCiAKICAgICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUu
Z2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwot
ICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QsIHRydWUsIEludFJl
Y3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRR
dWFkcyhxdWFkTGlzdCwgdHJ1ZSwgSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApLCAmb3ZlcmRy
YXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDF1KTsKKyAgICBFWFBFQ1RfTkVB
UihvdmVyZHJhdy5tX3BpeGVsc0RyYXduT3BhcXVlLCAxMDAwMCwgMSk7CisgICAgRVhQRUNUX05F
QVIob3ZlcmRyYXcubV9waXhlbHNEcmF3blRyYW5zcGFyZW50LCAwLCAxKTsKKyAgICBFWFBFQ1Rf
TkVBUihvdmVyZHJhdy5tX3BpeGVsc0N1bGxlZCwgMTIwMDAwLCAxKTsKIH0KIAotVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnR5Q3VsbE91dHNpZGVTY2lzc29yT3ZlckN1bGxlZFRpbGUpCitU
RVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJDdWxsZWRU
aWxlKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCkBAIC0zMDgs
MTEgKzM0OCwxMSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmdHlDdWxsT3V0c2lkZVNj
aXNzb3JPdmVyQ3VsbGVkVGlsZSkKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hp
bGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCks
IDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgdHJ1
ZSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxP
Y2NsdWRlZFF1YWRzKHF1YWRMaXN0LCB0cnVlLCBJbnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCks
ICZvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMXUpOwogfQogCi1U
RVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmdHlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyUGFydGlh
bFRpbGVzKQorVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JP
dmVyUGFydGlhbFRpbGVzKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFE
UwogCkBAIC0zMjEsMTEgKzM2MSwxMSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmdHlD
dWxsT3V0c2lkZVNjaXNzb3JPdmVyUGFydGlhbFRpbGVzKQogCiAgICAgc2V0UXVhZHMocm9vdFN0
YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1
YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRz
KHF1YWRMaXN0LCB0cnVlLCBJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsKKyAgICBDQ1F1YWRD
dWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCB0cnVlLCBJbnRSZWN0KDUwLCA1MCwg
MjAwLCAyMDApLCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDl1
KTsKIH0KIAotVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnR5Q3VsbE91dHNpZGVTY2lzc29y
T3Zlck5vVGlsZXMpCitURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxPdXRzaWRlU2Np
c3Nvck92ZXJOb1RpbGVzKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFE
UwogCkBAIC0zMzQsOCArMzc0LDExIEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ0eUN1
bGxPdXRzaWRlU2Npc3Nvck92ZXJOb1RpbGVzKQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdl
dCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0
LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRM
aXN0LCB0cnVlLCBJbnRSZWN0KDUwMCwgNTAwLCAxMDAsIDEwMCkpOworICAgIENDUXVhZEN1bGxl
cjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QsIHRydWUsIEludFJlY3QoNTAwLCA1MDAsIDEw
MCwgMTAwKSwgJm92ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAwdSk7
CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3bk9wYXF1ZSwgMCwgMSk7Cisg
ICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3blRyYW5zcGFyZW50LCAwLCAxKTsK
KyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0N1bGxlZCwgMTMwMDAwLCAxKTsKIH0K
IAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129493</attachid>
            <date>2012-02-29 12:51:17 -0800</date>
            <delta_ts>2012-02-29 20:33:50 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-74982-20120229155116.patch</filename>
            <type>text/plain</type>
            <size>22318</size>
            <attacher name="W. James MacLean">wjmaclean</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ3NzhmOThmNDJhYjI2
ZGRjMzBiZmE2ZGZiNjc2NzdkY2QyMTU0Zi4uNzM0NzYxYmJjNGNhM2Y0NmRiOGZiMWE1ZTBkYTA4
NGU0YzU5NzRmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTI4ICBXLiBK
YW1lcyBNYWNMZWFuICA8d2ptYWNsZWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIEVzdGltYXRlIHBpeGVsIGNvdW50IGZvciBmcmFtZSByYXRlIGNvbnRyb2wKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0OTgyCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgVmFsdWUgY2hlY2tzIGFkZGVk
IHRvIHVuaXQgdGVzdHMuCisKKyAgICAgICAgQWRkcyBtZWNoYW5pc20gdG8gY29tcHV0ZSBhbmQg
Y29sbGVjdCBzdGF0aXN0aWNzIG9uIHBpeGVsIG92ZXJkcmF3IGZvciBzZWxlY3RlZCBmcmFtZXMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6Om9wdGlt
aXplUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1F1YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2VkZ2VQcm9kdWN0KToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cXVhZEFyZWEpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmg6CisgICAgICAgIChDQ1F1
YWRDdWxsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6Om9wdGltaXplUXVh
ZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
cy5oOgorICAgICAgICAoQ0NPdmVyZHJhd0NvdW50cyk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKENDUmVuZGVyUGFzcyk6CisKIDIwMTItMDItMjggIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgRnVsbCBzY3JlZW4gdmlkZW8gdm9sdW1lIHNsaWRlciBo
YXMgInByb2dyZXNzIGJhciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMjA3ZmU4M2U5
MTBhMzFhMDQyNjI3NmMyM2E2ZDZjMGQ0ODM2OGIwOS4uMDIwMTc3NWRjNGY0MDliNzhjMmVjMWMx
YjRjMTkwMGJkMjM1NDk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMi0wMi0yOCAgVy4gSmFtZXMgTWFjTGVhbiAgPHdqbWFjbGVhbkBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBFc3RpbWF0ZSBwaXhlbCBjb3VudCBmb3IgZnJhbWUg
cmF0ZSBjb250cm9sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NDk4MgorCisgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgorCisgICAg
ICAgIEFkZHMgbWVjaGFuaXNtIHRvIGNvbXB1dGUgYW5kIGNvbGxlY3Qgc3RhdGlzdGljcyBvbiBw
aXhlbCBvdmVyZHJhdyBmb3Igc2VsZWN0ZWQgZnJhbWVzLgorCisgICAgICAgICogdGVzdHMvQ0NR
dWFkQ3VsbGVyVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRFU1QpOgorCiAyMDEyLTAyLTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTA3OTE3IGFuZCBy
MTA5MTg4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA4MGU0
NzM4Y2MxM2FkNGY5YzA4ZDVmZDc1ZGIxM2NmZjU4NmRjOTU1Li4xYjk2ZTQ5NWRkMDhkNjk0ZGJl
ZjgxOTVlM2NhZjY4ODI1ZWU3YmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcApAQCAtMjM0LDEwICsyMzQsMTcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpv
cHRpbWl6ZVJlbmRlclBhc3NlcyhDQ1JlbmRlclBhc3NMaXN0JiBwYXNzZXMpCiAKICAgICBib29s
IGhhdmVEYW1hZ2VSZWN0ID0gbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nUGFydGlh
bFN3YXA7CiAKKyAgICAvLyBGSVhNRTogY29tcHV0ZSBvdmVyZHJhdyBtZXRyaWNzIG9ubHkgb2Nj
YXNpb25hbGx5LCBub3QgZXZlcnkgZnJhbWUuCisgICAgQ0NPdmVyZHJhd0NvdW50cyBvdmVyZHJh
d0NvdW50czsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcGFzc2VzLnNpemUoKTsgKytp
KSB7CiAgICAgICAgIEZsb2F0UmVjdCBkYW1hZ2VSZWN0ID0gcGFzc2VzW2ldLT50YXJnZXRTdXJm
YWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKTsKLSAgICAgICAgcGFz
c2VzW2ldLT5vcHRpbWl6ZVF1YWRzKGhhdmVEYW1hZ2VSZWN0LCBkYW1hZ2VSZWN0KTsKKyAgICAg
ICAgcGFzc2VzW2ldLT5vcHRpbWl6ZVF1YWRzKGhhdmVEYW1hZ2VSZWN0LCBkYW1hZ2VSZWN0LCAm
b3ZlcmRyYXdDb3VudHMpOwogICAgIH0KKworICAgIGZsb2F0IG5vcm1hbGl6YXRpb24gPSAxMDAw
LmYgLyAobV9sYXllclJlbmRlcmVyLT52aWV3cG9ydFdpZHRoKCkgKiBtX2xheWVyUmVuZGVyZXIt
PnZpZXdwb3J0SGVpZ2h0KCkpOworICAgIFBsYXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9t
Q291bnRzKCJSZW5kZXJlcjQucGl4ZWxPdmVyZHJhd09wYXF1ZSIsIHN0YXRpY19jYXN0PGludD4o
bm9ybWFsaXphdGlvbiAqIG92ZXJkcmF3Q291bnRzLm1fcGl4ZWxzRHJhd25PcGFxdWUpLCAxMDAs
IDEwMDAwMDAsIDUwKTsKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6Omhpc3RvZ3JhbUN1c3RvbUNvdW50
cygiUmVuZGVyZXI0LnBpeGVsT3ZlcmRyYXdUcmFuc3BhcmVudCIsIHN0YXRpY19jYXN0PGludD4o
bm9ybWFsaXphdGlvbiAqIG92ZXJkcmF3Q291bnRzLm1fcGl4ZWxzRHJhd25UcmFuc3BhcmVudCks
IDEwMCwgMTAwMDAwMCwgNTApOworICAgIFBsYXRmb3JtU3VwcG9ydDo6aGlzdG9ncmFtQ3VzdG9t
Q291bnRzKCJSZW5kZXJlcjQucGl4ZWxPdmVyZHJhd0N1bGxlZCIsIHN0YXRpY19jYXN0PGludD4o
bm9ybWFsaXphdGlvbiAqIG92ZXJkcmF3Q291bnRzLm1fcGl4ZWxzQ3VsbGVkKSwgMTAwLCAxMDAw
MDAwLCA1MCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZUxheWVyc1Jl
Y3Vyc2l2ZShDQ0xheWVySW1wbCogY3VycmVudCwgZG91YmxlIGZyYW1lQmVnaW5UaW1lU2Vjcywg
Q0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cywgYm9vbCYgZGlkQW5pbWF0ZSwgYm9vbCYg
bmVlZHNBbmltYXRlTGF5ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKaW5kZXggNGY2NDM1
ZGMwZjI2MjYxODI0MDZiMjg2ZGNkNzllZTc1OGI2YzBiMC4uNzUzNmFmMjI4OGRkZjU3Yjg5MjVi
OTFmZjBjZDJhZmU4YjA2NjBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC03NSw3
ICs3NSwyMiBAQCBzdGF0aWMgSW50UmVjdCByZWN0U3VidHJhY3RSZWdpb24oY29uc3QgUmVnaW9u
JiByZWdpb24sIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKLXZv
aWQgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwg
Ym9vbCBoYXZlRGFtYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBkYW1hZ2VSZWN0KQorc3RhdGlj
IGZsb2F0IHdlZGdlUHJvZHVjdChjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2lu
dCYgcDIpCit7CisgICAgcmV0dXJuIHAxLngoKSAqIHAyLnkoKSAtIHAxLnkoKSAqIHAyLngoKTsK
K30KKworLy8gQ29tcHV0ZXMgYXJlYSBvZiBxdWFkcyB0aGF0IGFyZSBwb3NzaWJseSBub24tcmVj
dGFuZ3VsYXIuIENhbgorLy8gYmUgZWFzaWx5IGV4dGVuZGVkIHRvIHBvbHlnb25zLgorc3RhdGlj
IGZsb2F0IHF1YWRBcmVhKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCkKK3sKKyAgICByZXR1cm4gZmFi
cygwLjUgKiAod2VkZ2VQcm9kdWN0KHF1YWQucDEoKSwgcXVhZC5wMigpKSArCisgICAgICAgICAg
ICAgICAgICAgd2VkZ2VQcm9kdWN0KHF1YWQucDIoKSwgcXVhZC5wMygpKSArCisgICAgICAgICAg
ICAgICAgICAgd2VkZ2VQcm9kdWN0KHF1YWQucDMoKSwgcXVhZC5wNCgpKSArCisgICAgICAgICAg
ICAgICAgICAgd2VkZ2VQcm9kdWN0KHF1YWQucDQoKSwgcXVhZC5wMSgpKSkpOworfQorCit2b2lk
IENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIGJv
b2wgaGF2ZURhbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZGFtYWdlUmVjdCwgQ0NPdmVyZHJh
d0NvdW50cyogb3ZlcmRyYXdNZXRyaWNzKQogewogICAgIGlmICghcXVhZExpc3Quc2l6ZSgpKQog
ICAgICAgICByZXR1cm47CkBAIC05NiwyMSArMTExLDQ0IEBAIHZvaWQgQ0NRdWFkQ3VsbGVyOjpj
dWxsT2NjbHVkZWRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgYm9vbCBoYXZlRGFtYWdlUmVj
dCwKIAogICAgICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkVmlzaWJsZVF1YWRSZWN0ID0gcmVjdFN1
YnRyYWN0UmVnaW9uKG9wYXF1ZUNvdmVyYWdlVGh1c0ZhciwgdHJhbnNmb3JtZWRRdWFkUmVjdCk7
CiAgICAgICAgIGJvb2wga2VlcFF1YWQgPSAhdHJhbnNmb3JtZWRWaXNpYmxlUXVhZFJlY3QuaXNF
bXB0eSgpOwotICAgICAgICBpZiAoIWtlZXBRdWFkKQotICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgLy8gU2VlIGlmIHdlIGNhbiByZWR1Y2UgdGhlIG51bWJlciBvZiBwaXhlbHMgdG8g
ZHJhdyBieSByZWR1Y2luZyB0aGUgc2l6ZSBvZiB0aGUgZHJhdwogICAgICAgICAvLyBxdWFkIC0g
d2UgZG8gdGhpcyBieSBjaGFuZ2luZyBpdHMgdmlzaWJsZSByZWN0LgotICAgICAgICBpZiAodHJh
bnNmb3JtZWRWaXNpYmxlUXVhZFJlY3QgIT0gdHJhbnNmb3JtZWRRdWFkUmVjdCAmJiBkcmF3UXVh
ZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpKQotICAgICAgICAgICAgZHJhd1F1YWQtPnNl
dFF1YWRWaXNpYmxlUmVjdChkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBS
ZWN0KHRyYW5zZm9ybWVkVmlzaWJsZVF1YWRSZWN0KSk7Ci0KLSAgICAgICAgLy8gV2hlbiBhZGRp
bmcgcmVjdCB0byBvcGFxdWUgcmVnaW9uLCBkZWZsYXRlIGl0IHRvIHN0YXkgY29uc2VydmF0aXZl
LgotICAgICAgICBpZiAoZHJhd1F1YWQtPmlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSAmJiAh
ZHJhd1F1YWQtPm9wYXF1ZVJlY3QoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEZsb2F0UmVj
dCBmbG9hdE9wYXF1ZVJlY3QgPSBkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFJlY3QoRmxv
YXRSZWN0KGRyYXdRdWFkLT5vcGFxdWVSZWN0KCkpKTsKLSAgICAgICAgICAgIG9wYXF1ZUNvdmVy
YWdlVGh1c0Zhci51bml0ZShSZWdpb24oZW5jbG9zZWRJbnRSZWN0KGZsb2F0T3BhcXVlUmVjdCkp
KTsKKyAgICAgICAgYm9vbCBkaWRSZWR1Y2VRdWFkU2l6ZSA9IGZhbHNlOworICAgICAgICBpZiAo
a2VlcFF1YWQpIHsKKyAgICAgICAgICAgIGlmICh0cmFuc2Zvcm1lZFZpc2libGVRdWFkUmVjdCAh
PSB0cmFuc2Zvcm1lZFF1YWRSZWN0ICYmIGRyYXdRdWFkLT5pc0xheWVyQXhpc0FsaWduZWRJbnRS
ZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBkcmF3UXVhZC0+c2V0UXVhZFZpc2libGVSZWN0KGRy
YXdRdWFkLT5xdWFkVHJhbnNmb3JtKCkuaW52ZXJzZSgpLm1hcFJlY3QodHJhbnNmb3JtZWRWaXNp
YmxlUXVhZFJlY3QpKTsKKyAgICAgICAgICAgICAgICBkaWRSZWR1Y2VRdWFkU2l6ZSA9IHRydWU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdoZW4gYWRkaW5nIHJlY3QgdG8gb3Bh
cXVlIHJlZ2lvbiwgZGVmbGF0ZSBpdCB0byBzdGF5IGNvbnNlcnZhdGl2ZS4KKyAgICAgICAgICAg
IGlmIChkcmF3UXVhZC0+aXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpICYmICFkcmF3UXVhZC0+
b3BhcXVlUmVjdCgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIEZsb2F0UmVjdCBmbG9h
dE9wYXF1ZVJlY3QgPSBkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFJlY3QoRmxvYXRSZWN0
KGRyYXdRdWFkLT5vcGFxdWVSZWN0KCkpKTsKKyAgICAgICAgICAgICAgICBvcGFxdWVDb3ZlcmFn
ZVRodXNGYXIudW5pdGUoUmVnaW9uKGVuY2xvc2VkSW50UmVjdChmbG9hdE9wYXF1ZVJlY3QpKSk7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGN1bGxlZExpc3QuYXBwZW5kKHF1YWRMaXN0
W2ldLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBjdWxsZWRMaXN0LmFwcGVuZChx
dWFkTGlzdFtpXS5yZWxlYXNlKCkpOworICAgICAgICBpZiAob3ZlcmRyYXdNZXRyaWNzKSB7Cisg
ICAgICAgICAgICBUUkFDRV9FVkVOVCgiQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkc19P
dmVyZHJhd01ldHJpY3MiLCAwLCAwKTsKKyAgICAgICAgICAgIC8vIFdlIGNvbXB1dGUgdGhlIGFy
ZWEgb2YgdGhlIHRyYW5zZm9ybWVkIHF1YWQsIGFzIHRoaXMgc2hvdWxkIGJlIGluIHBpeGVscy4K
KyAgICAgICAgICAgIGZsb2F0IGFyZWEgPSBxdWFkQXJlYShkcmF3UXVhZC0+cXVhZFRyYW5zZm9y
bSgpLm1hcFF1YWQoRmxvYXRRdWFkKGRyYXdRdWFkLT5xdWFkUmVjdCgpKSkpOworICAgICAgICAg
ICAgaWYgKGtlZXBRdWFkKSB7CisgICAgICAgICAgICAgICAgaWYgKGRpZFJlZHVjZVF1YWRTaXpl
KSB7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHZpc2libGVRdWFkUmVjdEFyZWEgPSBxdWFk
QXJlYShkcmF3UXVhZC0+cXVhZFRyYW5zZm9ybSgpLm1hcFF1YWQoRmxvYXRRdWFkKGRyYXdRdWFk
LT5xdWFkVmlzaWJsZVJlY3QoKSkpKTsKKyAgICAgICAgICAgICAgICAgICAgb3ZlcmRyYXdNZXRy
aWNzLT5tX3BpeGVsc0N1bGxlZCArPSBhcmVhIC0gdmlzaWJsZVF1YWRSZWN0QXJlYTsKKyAgICAg
ICAgICAgICAgICAgICAgYXJlYSA9IHZpc2libGVRdWFkUmVjdEFyZWE7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIEludFJlY3QgdmlzaWJsZU9wYXF1ZVJlY3QoZHJhd1F1YWQt
PnF1YWRWaXNpYmxlUmVjdCgpKTsKKyAgICAgICAgICAgICAgICB2aXNpYmxlT3BhcXVlUmVjdC5p
bnRlcnNlY3QoZHJhd1F1YWQtPm9wYXF1ZVJlY3QoKSk7CisgICAgICAgICAgICAgICAgRmxvYXRR
dWFkIHZpc2libGVPcGFxdWVRdWFkID0gZHJhd1F1YWQtPnF1YWRUcmFuc2Zvcm0oKS5tYXBRdWFk
KEZsb2F0UXVhZCh2aXNpYmxlT3BhcXVlUmVjdCkpOworICAgICAgICAgICAgICAgIGZsb2F0IG9w
YXF1ZUFyZWEgPSBxdWFkQXJlYSh2aXNpYmxlT3BhcXVlUXVhZCk7CisgICAgICAgICAgICAgICAg
b3ZlcmRyYXdNZXRyaWNzLT5tX3BpeGVsc0RyYXduT3BhcXVlICs9IG9wYXF1ZUFyZWE7CisgICAg
ICAgICAgICAgICAgb3ZlcmRyYXdNZXRyaWNzLT5tX3BpeGVsc0RyYXduVHJhbnNwYXJlbnQgKz0g
YXJlYSAtIG9wYXF1ZUFyZWE7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBv
dmVyZHJhd01ldHJpY3MtPm1fcGl4ZWxzQ3VsbGVkICs9IGFyZWE7CisgICAgICAgIH0KICAgICB9
CiAgICAgcXVhZExpc3QuY2xlYXIoKTsgLy8gUmVsZWFzZSBhbnl0aGluZyB0aGF0IHJlbWFpbnMu
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUXVhZEN1bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKaW5kZXggM2NjMzE1ZWM0MWVmMjNjODhjMWEyZGMzODAz
MGVkMDBiZDJiNDI3OC4uODk1ODI1NzNiZDFlYmZmYmNkNzE4YmM2ZTY2MDVhMjY5NDM0OTg5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NRdWFkQ3VsbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKQEAgLTMyLDcgKzMyLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDQ1F1YWRDdWxsZXIgewogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGN1
bGxPY2NsdWRlZFF1YWRzKENDUXVhZExpc3QmLCBib29sIGhhdmVEYW1hZ2VSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIGRhbWFnZVJlY3QpOworICAgIC8vIFBhc3NpbmcgMCBmb3IgQ0NPdmVyZHJhd0Nv
dW50cyogaXMgdmFsaWQsIGFuZCBkaXNhYmxlIHRoZSBleHRyYSBjb21wdXRhdGlvbgorICAgIC8v
IGRvbmUgdG8gZXN0aW1hdGUgb3ZlciBkcmF3IHN0YXRpc3RpY3MuCisgICAgc3RhdGljIHZvaWQg
Y3VsbE9jY2x1ZGVkUXVhZHMoQ0NRdWFkTGlzdCYsIGJvb2wgaGF2ZURhbWFnZVJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgZGFtYWdlUmVjdCwgQ0NPdmVyZHJhd0NvdW50cyopOwogCiBwcml2YXRlOgog
ICAgIC8vIE1ha2Ugbm9uLWluc3RhbnRpYWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCmlu
ZGV4IGRhNGIyMjIyYzRjNDEwODQyZmFkMTVkN2M4YTBhNTE1YWI4NzI2MmYuLmJkODc3ZWMzMDk5
MDhjNTMyMzg5MWZjOWQ1MWJiOTA0OTc2ODZmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNw
cApAQCAtNjUsOSArNjUsOSBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JSZW5k
ZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyKQogICAgIG1fc2hhcmVkUXVhZFN0YXRl
TGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgQ0NSZW5k
ZXJQYXNzOjpvcHRpbWl6ZVF1YWRzKGJvb2wgaGF2ZURhbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgZGFtYWdlUmVjdCkKK3ZvaWQgQ0NSZW5kZXJQYXNzOjpvcHRpbWl6ZVF1YWRzKGJvb2wgaGF2
ZURhbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZGFtYWdlUmVjdCwgQ0NPdmVyZHJhd0NvdW50
cyogb3ZlcmRyYXcpCiB7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhtX3F1
YWRMaXN0LCBoYXZlRGFtYWdlUmVjdCwgZGFtYWdlUmVjdCk7CisgICAgQ0NRdWFkQ3VsbGVyOjpj
dWxsT2NjbHVkZWRRdWFkcyhtX3F1YWRMaXN0LCBoYXZlRGFtYWdlUmVjdCwgZGFtYWdlUmVjdCwg
b3ZlcmRyYXcpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCmluZGV4IDExZmJkNDAxNjM4
NjVkMGY4YmQ1OTRhMmQwODlhODgzZjI1NDk5MWIuLjkyMDUzMzg4YjllNmEwZTc4MTlhNWRlNzEx
NTkxYmMxYmRiYjg4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oCkBAIC0zOCw2ICszOCwxNiBA
QCBjbGFzcyBDQ1NoYXJlZFF1YWRTdGF0ZTsKIAogdHlwZWRlZiBWZWN0b3I8T3duUHRyPENDRHJh
d1F1YWQ+ID4gQ0NRdWFkTGlzdDsKIAorc3RydWN0IENDT3ZlcmRyYXdDb3VudHMgeworICAgIC8v
IENvdW50IG9mIHBpeGVscyB0aGF0IGFyZSBvcGFxdWUgKGFuZCB0aHVzIG9jY2x1ZGUpLiBJZGVh
bGx5IHRoaXMgaXMgbm8gbW9yZQorICAgIC8vIHRoYW4gd2lld3BvcnQgd2lkdGggeCBoZWlnaHQu
CisgICAgZmxvYXQgbV9waXhlbHNEcmF3bk9wYXF1ZTsKKyAgICAvLyBDb3VudCBvZiBwaXhlbHMg
dGhhdCBhcmUgcG9zc2libHkgdHJhbnNwYXJlbnQsIGFuZCBjYW5ub3Qgb2NjbHVkZS4KKyAgICBm
bG9hdCBtX3BpeGVsc0RyYXduVHJhbnNwYXJlbnQ7CisgICAgLy8gQ291bnQgb2YgcGl4ZWxzIG5v
dCBkcmF3biBhcyB0aGV5IGFyZSBvY2NsdWRlZCBieSBzb210aGluZyBvcGFxdWUuCisgICAgZmxv
YXQgbV9waXhlbHNDdWxsZWQ7Cit9OworCiBjbGFzcyBDQ1JlbmRlclBhc3MgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKENDUmVuZGVyUGFzcyk7CiBwdWJsaWM6CkBAIC00Niw3ICs1Niw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFF1YWRzRm9yTGF5ZXIoQ0NMYXllckltcGwqKTsKICAg
ICB2b2lkIGFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJbXBsKik7CiAK
LSAgICB2b2lkIG9wdGltaXplUXVhZHMoYm9vbCBoYXZlRGFtYWdlUmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICAvLyBQYXNzaW5nIGluIDAgZm9yIENDT3ZlcmRyYXdDb3Vu
dHMgaXMgdmFsaWQsIGFuZCBkaXNhYmxlcyBwZXJmb3JtaW5nIG92ZXJkcmF3IGNhbGN1bGF0aW9u
cy4KKyAgICB2b2lkIG9wdGltaXplUXVhZHMoYm9vbCBoYXZlRGFtYWdlUmVjdCwgY29uc3QgRmxv
YXRSZWN0JiBkYW1hZ2VSZWN0LCBDQ092ZXJkcmF3Q291bnRzKik7CiAKICAgICBjb25zdCBDQ1F1
YWRMaXN0JiBxdWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZExpc3Q7IH0KICAgICBDQ1Jl
bmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFN1cmZh
Y2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3Vs
bGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRl
c3QuY3BwCmluZGV4IGQ0OTcwM2UxNGZjY2I2ZThmYTE0NzliOWZhNjdiYTIxNzY5NzAwNmQuLjE4
NTk2ZTYzYTM2ZTM4NDQ1NTIyMzE1NDczMzM4ZmM2OGU0MTZkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcApAQCAtNjQsNiArNjQs
NyBAQCB2b2lkIHNldFF1YWRzKENDU2hhcmVkUXVhZFN0YXRlKiByb290U3RhdGUsIENDU2hhcmVk
UXVhZFN0YXRlKiBjaGlsZFN0YXRlLCBDQ1F1YQogCiAjZGVmaW5lIERFQ0xBUkVfQU5EX0lOSVRJ
QUxJWkVfVEVTVF9RVUFEUyAgICAgICAgICAgICAgIFwKICAgICBDQ1F1YWRMaXN0IHF1YWRMaXN0
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENDT3ZlcmRyYXdDb3VudHMg
b3ZlcmRyYXcgPSB7MCwgMCwgMH07ICAgICAgICAgICAgICBcCiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggY2hpbGRUcmFuc2Zvcm07ICAgICAgICAgICAgICAgIFwKICAgICBJbnRTaXplIHJvb3RT
aXplID0gSW50U2l6ZSgzMDAsIDMwMCk7ICAgICAgICAgICAgICAgXAogICAgIEludFJlY3Qgcm9v
dFJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIHJvb3RTaXplKTsgICBcCkBAIC03OSw4ICs4MCwx
MSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDaGlsZExpbmVzVXBUb3BMZWZ0
KQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFk
TGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRD
dWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCBmYWxzZSwgSW50UmVjdCgpKTsKKyAg
ICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCBmYWxzZSwgSW50UmVj
dCgpLCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDl1KTsKKyAg
ICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0RyYXduT3BhcXVlLCA5MDAwMCwgMSk7Cisg
ICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3blRyYW5zcGFyZW50LCAwLCAxKTsK
KyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0N1bGxlZCwgNDAwMDAsIDEpOwogfQog
CiBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxXaGVuQ2hpbGRPcGFjaXR5Tm90T25l
KQpAQCAtOTIsOCArOTYsMTEgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsV2hl
bkNoaWxkT3BhY2l0eU5vdE9uZSkKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hp
bGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCks
IDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFs
c2UsIEludFJlY3QoKSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFk
TGlzdCwgZmFsc2UsIEludFJlY3QoKSwgJm92ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExp
c3Quc2l6ZSgpLCAxM3UpOworICAgIEVYUEVDVF9ORUFSKG92ZXJkcmF3Lm1fcGl4ZWxzRHJhd25P
cGFxdWUsIDkwMDAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0RyYXdu
VHJhbnNwYXJlbnQsIDQwMDAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVs
c0N1bGxlZCwgMCwgMSk7CiB9CiAKIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFdo
ZW5DaGlsZE9wYXF1ZUZsYWdGYWxzZSkKQEAgLTEwNSw4ICsxMTIsMTEgQEAgVEVTVChDQ1F1YWRD
dWxsZXJUZXN0LCB2ZXJpZnlDdWxsV2hlbkNoaWxkT3BhcXVlRmxhZ0ZhbHNlKQogCiAgICAgc2V0
UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAgICAg
RVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxsZXI6OmN1bGxP
Y2NsdWRlZFF1YWRzKHF1YWRMaXN0LCBmYWxzZSwgSW50UmVjdCgpKTsKKyAgICBDQ1F1YWRDdWxs
ZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCBmYWxzZSwgSW50UmVjdCgpLCAmb3ZlcmRy
YXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7CisgICAgRVhQRUNUX05F
QVIob3ZlcmRyYXcubV9waXhlbHNEcmF3bk9wYXF1ZSwgOTAwMDAsIDEpOworICAgIEVYUEVDVF9O
RUFSKG92ZXJkcmF3Lm1fcGl4ZWxzRHJhd25UcmFuc3BhcmVudCwgNDAwMDAsIDEpOworICAgIEVY
UEVDVF9ORUFSKG92ZXJkcmF3Lm1fcGl4ZWxzQ3VsbGVkLCAwLCAxKTsKIH0KIAogVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2VudGVyVGlsZU9ubHkpCkBAIC0xMjAsNyArMTMwLDcg
QEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2VudGVyVGlsZU9ubHkpCiAKICAg
ICBzZXRRdWFkcyhyb290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsK
ICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwotICAgIENDUXVhZEN1bGxlcjo6
Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QsIGZhbHNlLCBJbnRSZWN0KCkpOworICAgIENDUXVh
ZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QsIGZhbHNlLCBJbnRSZWN0KCksICZv
dmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTJ1KTsKIAogICAgIElu
dFJlY3QgcXVhZFZpc2libGVSZWN0MSA9IHF1YWRMaXN0WzFdLmdldCgpLT5xdWFkVmlzaWJsZVJl
Y3QoKTsKQEAgLTEzNyw2ICsxNDcsMTAgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlD
dWxsQ2VudGVyVGlsZU9ubHkpCiAgICAgSW50UmVjdCBxdWFkVmlzaWJsZVJlY3Q2ID0gcXVhZExp
c3RbNl0uZ2V0KCktPnF1YWRWaXNpYmxlUmVjdCgpOwogICAgIEVYUEVDVF9FUShxdWFkVmlzaWJs
ZVJlY3Q2LmhlaWdodCgpLCA1MCk7CiAgICAgRVhQRUNUX0VRKHF1YWRWaXNpYmxlUmVjdDYueSgp
LCAyNTApOworCisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3bk9wYXF1ZSwg
MTAwMDAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0RyYXduVHJhbnNw
YXJlbnQsIDAsIDEpOworICAgIEVYUEVDVF9ORUFSKG92ZXJkcmF3Lm1fcGl4ZWxzQ3VsbGVkLCAz
MDAwMCwgMSk7CiB9CiAKIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRlclRp
bGVOb25JbnRlZ3JhbFNpemUxKQpAQCAtMTU4LDggKzE3MiwxMiBAQCBURVNUKENDUXVhZEN1bGxl
clRlc3QsIHZlcmlmeUN1bGxDZW50ZXJUaWxlTm9uSW50ZWdyYWxTaXplMSkKICAgICBxdWFkTGlz
dC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUuZ2V0KCksIEludFJlY3QoSW50UG9pbnQo
KSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CiAKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgp
LCAydSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFs
c2UsIEludFJlY3QoKSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFk
TGlzdCwgZmFsc2UsIEludFJlY3QoKSwgJm92ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExp
c3Quc2l6ZSgpLCAydSk7CisKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0RyYXdu
T3BhcXVlLCAyMDM2MywgMSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3
blRyYW5zcGFyZW50LCAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0N1
bGxlZCwgMCwgMSk7CiB9CiAKIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENlbnRl
clRpbGVOb25JbnRlZ3JhbFNpemUyKQpAQCAtMTgxLDggKzE5OSwxMiBAQCBURVNUKENDUXVhZEN1
bGxlclRlc3QsIHZlcmlmeUN1bGxDZW50ZXJUaWxlTm9uSW50ZWdyYWxTaXplMikKICAgICBxdWFk
TGlzdC5hcHBlbmQoTWFrZVRpbGVRdWFkKGNoaWxkU3RhdGUuZ2V0KCksIEludFJlY3QoSW50UG9p
bnQoKSwgSW50U2l6ZSgxMDAsIDEwMCkpKSk7CiAKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6
ZSgpLCAydSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwg
ZmFsc2UsIEludFJlY3QoKSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhx
dWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSwgJm92ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVh
ZExpc3Quc2l6ZSgpLCAydSk7CisKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0Ry
YXduT3BhcXVlLCAxOTY0MywgMSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNE
cmF3blRyYW5zcGFyZW50LCAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVs
c0N1bGxlZCwgMCwgMSk7CiB9CiAKIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbENo
aWxkTGluZXNVcEJvdHRvbVJpZ2h0KQpAQCAtMTk2LDggKzIxOCwxMSBAQCBURVNUKENDUXVhZEN1
bGxlclRlc3QsIHZlcmlmeUN1bGxDaGlsZExpbmVzVXBCb3R0b21SaWdodCkKIAogICAgIHNldFF1
YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVY
UEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2Nj
bHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSk7CisgICAgQ0NRdWFkQ3VsbGVy
OjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSwgJm92ZXJkcmF3
KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCA5dSk7CisgICAgRVhQRUNUX05FQVIo
b3ZlcmRyYXcubV9waXhlbHNEcmF3bk9wYXF1ZSwgOTAwMDAsIDEpOworICAgIEVYUEVDVF9ORUFS
KG92ZXJkcmF3Lm1fcGl4ZWxzRHJhd25UcmFuc3BhcmVudCwgMCwgMSk7CisgICAgRVhQRUNUX05F
QVIob3ZlcmRyYXcubV9waXhlbHNDdWxsZWQsIDQwMDAwLCAxKTsKIH0KIAogVEVTVChDQ1F1YWRD
dWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uKQpAQCAtMjEyLDggKzIzNywxMSBAQCBURVNU
KENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb24pCiAKICAgICBzZXRRdWFkcyhy
b290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0LCBjaGlsZE9wYXF1ZVJl
Y3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7Ci0gICAgQ0NRdWFkQ3Vs
bGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSk7CisgICAg
Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3Qo
KSwgJm92ZXJkcmF3KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxMnUpOworICAg
IEVYUEVDVF9ORUFSKG92ZXJkcmF3Lm1fcGl4ZWxzRHJhd25PcGFxdWUsIDkwMDAwLCAxKTsKKyAg
ICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0RyYXduVHJhbnNwYXJlbnQsIDMwMDAwLCAx
KTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0N1bGxlZCwgMTAwMDAsIDEpOwog
fQogCiBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb24yKQpAQCAtMjI4
LDggKzI1NiwxMSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb24y
KQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFk
TGlzdCwgY2hpbGRPcGFxdWVSZWN0KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAx
M3UpOwotICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QsIGZhbHNl
LCBJbnRSZWN0KCkpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExp
c3QsIGZhbHNlLCBJbnRSZWN0KCksICZvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0
LnNpemUoKSwgMTJ1KTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0RyYXduT3Bh
cXVlLCA5MDAwMCwgMSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3blRy
YW5zcGFyZW50LCAyNTAwMCwgMSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHND
dWxsZWQsIDE1MDAwLCAxKTsKIH0KIAogVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxs
U3ViUmVnaW9uQ2hlY2tPdmVyY3VsbCkKQEAgLTI0NCw3ICsyNzUsNyBAQCBURVNUKENDUXVhZEN1
bGxlclRlc3QsIHZlcmlmeUN1bGxTdWJSZWdpb25DaGVja092ZXJjdWxsKQogCiAgICAgc2V0UXVh
ZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCwgY2hpbGRPcGFx
dWVSZWN0KTsKICAgICBFWFBFQ1RfRVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwotICAgIENDUXVh
ZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QsIGZhbHNlLCBJbnRSZWN0KCkpOwor
ICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3QsIGZhbHNlLCBJbnRS
ZWN0KCksICZvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsK
IH0KIApAQCAtMjYwLDggKzI5MSwxMSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5v
bkF4aXNBbGlnbmVkUXVhZHNEb250T2NjbHVkZSkKIAogICAgIHNldFF1YWRzKHJvb3RTdGF0ZS5n
ZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAgIEVYUEVDVF9FUShxdWFkTGlz
dC5zaXplKCksIDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFk
TGlzdCwgZmFsc2UsIEludFJlY3QoKSk7CisgICAgQ0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRR
dWFkcyhxdWFkTGlzdCwgZmFsc2UsIEludFJlY3QoKSwgJm92ZXJkcmF3KTsKICAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOworICAgIEVYUEVDVF9ORUFSKG92ZXJkcmF3Lm1fcGl4
ZWxzRHJhd25PcGFxdWUsIDEzMDAwMCwgMSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9w
aXhlbHNEcmF3blRyYW5zcGFyZW50LCAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5t
X3BpeGVsc0N1bGxlZCwgMCwgMSk7CiB9CiAKIC8vIFRoaXMgdGVzdCByZXF1aXJlcyBzb21lIGV4
cGxhbmF0aW9uOiBoZXJlIHdlIGFyZSByb3RhdGluZyB0aGUgcXVhZHMgdG8gYmUgY3VsbGVkLgpA
QCAtMjgyLDExICszMTYsMTQgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlOb25BeGlz
QWxpZ25lZFF1YWRzU2FmZWx5Q3VsbGVkKQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgp
LCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNp
emUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0
LCBmYWxzZSwgSW50UmVjdCgpKTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRz
KHF1YWRMaXN0LCBmYWxzZSwgSW50UmVjdCgpLCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShx
dWFkTGlzdC5zaXplKCksIDEydSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNE
cmF3bk9wYXF1ZSwgMTIwMDAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVs
c0RyYXduVHJhbnNwYXJlbnQsIDAsIDEpOworICAgIEVYUEVDVF9ORUFSKG92ZXJkcmF3Lm1fcGl4
ZWxzQ3VsbGVkLCAxMDAwMCwgMSk7CiB9CiAKLVRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ0
eUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJUaWxlKQorVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJp
ZnlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyVGlsZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFM
SVpFX1RFU1RfUVVBRFMKIApAQCAtMjk1LDExICszMzIsMTQgQEAgVEVTVChDQ1F1YWRDdWxsZXJU
ZXN0LCB2ZXJpZnR5Q3VsbE91dHNpZGVTY2lzc29yT3ZlclRpbGUpCiAKICAgICBzZXRRdWFkcyhy
b290U3RhdGUuZ2V0KCksIGNoaWxkU3RhdGUuZ2V0KCksIHF1YWRMaXN0KTsKICAgICBFWFBFQ1Rf
RVEocXVhZExpc3Quc2l6ZSgpLCAxM3UpOwotICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVk
UXVhZHMocXVhZExpc3QsIHRydWUsIEludFJlY3QoMjAwLCAxMDAsIDEwMCwgMTAwKSk7CisgICAg
Q0NRdWFkQ3VsbGVyOjpjdWxsT2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgdHJ1ZSwgSW50UmVjdCgy
MDAsIDEwMCwgMTAwLCAxMDApLCAmb3ZlcmRyYXcpOwogICAgIEVYUEVDVF9FUShxdWFkTGlzdC5z
aXplKCksIDF1KTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0RyYXduT3BhcXVl
LCAxMDAwMCwgMSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhlbHNEcmF3blRyYW5z
cGFyZW50LCAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3BpeGVsc0N1bGxlZCwg
MTIwMDAwLCAxKTsKIH0KIAotVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnR5Q3VsbE91dHNp
ZGVTY2lzc29yT3ZlckN1bGxlZFRpbGUpCitURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1
bGxPdXRzaWRlU2Npc3Nvck92ZXJDdWxsZWRUaWxlKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJ
QUxJWkVfVEVTVF9RVUFEUwogCkBAIC0zMDgsMTEgKzM0OCwxMSBAQCBURVNUKENDUXVhZEN1bGxl
clRlc3QsIHZlcmlmdHlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyQ3VsbGVkVGlsZSkKIAogICAgIHNl
dFF1YWRzKHJvb3RTdGF0ZS5nZXQoKSwgY2hpbGRTdGF0ZS5nZXQoKSwgcXVhZExpc3QpOwogICAg
IEVYUEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDEzdSk7Ci0gICAgQ0NRdWFkQ3VsbGVyOjpjdWxs
T2NjbHVkZWRRdWFkcyhxdWFkTGlzdCwgdHJ1ZSwgSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDAp
KTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCB0cnVlLCBJ
bnRSZWN0KDEwMCwgMTAwLCAxMDAsIDEwMCksICZvdmVyZHJhdyk7CiAgICAgRVhQRUNUX0VRKHF1
YWRMaXN0LnNpemUoKSwgMXUpOwogfQogCi1URVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmdHlD
dWxsT3V0c2lkZVNjaXNzb3JPdmVyUGFydGlhbFRpbGVzKQorVEVTVChDQ1F1YWRDdWxsZXJUZXN0
LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyUGFydGlhbFRpbGVzKQogewogICAgIERFQ0xB
UkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCkBAIC0zMjEsMTEgKzM2MSwxMSBAQCBURVNU
KENDUXVhZEN1bGxlclRlc3QsIHZlcmlmdHlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyUGFydGlhbFRp
bGVzKQogCiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBx
dWFkTGlzdCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1
YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCB0cnVlLCBJbnRSZWN0KDUwLCA1
MCwgMjAwLCAyMDApKTsKKyAgICBDQ1F1YWRDdWxsZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRM
aXN0LCB0cnVlLCBJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApLCAmb3ZlcmRyYXcpOwogICAgIEVY
UEVDVF9FUShxdWFkTGlzdC5zaXplKCksIDl1KTsKIH0KIAotVEVTVChDQ1F1YWRDdWxsZXJUZXN0
LCB2ZXJpZnR5Q3VsbE91dHNpZGVTY2lzc29yT3Zlck5vVGlsZXMpCitURVNUKENDUXVhZEN1bGxl
clRlc3QsIHZlcmlmeUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJOb1RpbGVzKQogewogICAgIERFQ0xB
UkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCkBAIC0zMzQsOCArMzc0LDExIEBAIFRFU1Qo
Q0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ0eUN1bGxPdXRzaWRlU2Npc3Nvck92ZXJOb1RpbGVzKQog
CiAgICAgc2V0UXVhZHMocm9vdFN0YXRlLmdldCgpLCBjaGlsZFN0YXRlLmdldCgpLCBxdWFkTGlz
dCk7CiAgICAgRVhQRUNUX0VRKHF1YWRMaXN0LnNpemUoKSwgMTN1KTsKLSAgICBDQ1F1YWRDdWxs
ZXI6OmN1bGxPY2NsdWRlZFF1YWRzKHF1YWRMaXN0LCB0cnVlLCBJbnRSZWN0KDUwMCwgNTAwLCAx
MDAsIDEwMCkpOworICAgIENDUXVhZEN1bGxlcjo6Y3VsbE9jY2x1ZGVkUXVhZHMocXVhZExpc3Qs
IHRydWUsIEludFJlY3QoNTAwLCA1MDAsIDEwMCwgMTAwKSwgJm92ZXJkcmF3KTsKICAgICBFWFBF
Q1RfRVEocXVhZExpc3Quc2l6ZSgpLCAwdSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9w
aXhlbHNEcmF3bk9wYXF1ZSwgMCwgMSk7CisgICAgRVhQRUNUX05FQVIob3ZlcmRyYXcubV9waXhl
bHNEcmF3blRyYW5zcGFyZW50LCAwLCAxKTsKKyAgICBFWFBFQ1RfTkVBUihvdmVyZHJhdy5tX3Bp
eGVsc0N1bGxlZCwgMTMwMDAwLCAxKTsKIH0KIAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>