<?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>57584</bug_id>
          
          <creation_ts>2011-03-31 14:54:06 -0700</creation_ts>
          <short_desc>[Chromium] Text anti-aliasing fails when rendering text with shadow</short_desc>
          <delta_ts>2011-04-11 17:31:55 -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>PC</rep_platform>
          <op_sys>Windows 7</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="Justin Novosad">junov</reporter>
          <assigned_to name="Justin Novosad">junov</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kbr</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>377471</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Novosad">junov</who>
    <bug_when>2011-03-31 14:54:06 -0700</bug_when>
    <thetext>This is in reference to chromium bug: http://code.google.com/p/chromium/issues/detail?id=23440

The skia rendering path for chromium on windows yields poor quality font rendering.  The skia path is used rather than GDI when rendering text with shadows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377814</commentid>
    <comment_count>1</comment_count>
      <attachid>87861</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2011-04-01 08:40:44 -0700</bug_when>
    <thetext>Created attachment 87861
When drawing text with a blurred shadow, split the rendering in two passes: pass 1 = shadows in skia, pass2 = foreground with GDI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377815</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-01 08:42:26 -0700</bug_when>
    <thetext>Attachment 87861 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/platform/chromium/test_expecta...&quot; exit_code: 1

Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp:233:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:400:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:477:  One line control clauses should not use braces.  [whitespace/braces] [4]
LayoutTests/platform/chromium/test_expectations.txt:3186:  Missing a &apos;:&apos; BUGWK57578 WIN LINUX svg/css/composite-shadow-text.svg = IMAGE  [test/expectations] [5]
Total errors found: 4 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377827</commentid>
    <comment_count>3</comment_count>
      <attachid>87864</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2011-04-01 08:58:32 -0700</bug_when>
    <thetext>Created attachment 87864
Fixed style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377864</commentid>
    <comment_count>4</comment_count>
      <attachid>87864</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-01 09:45:45 -0700</bug_when>
    <thetext>Comment on attachment 87864
Fixed style

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

The logic changes and test expectations updates look good. One minor style issue, just FYI, not necessary to fix. cq+&apos;ing as is.

&gt; Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:389
&gt; +    if (!alpha &amp;&amp; graphicsContext-&gt;platformContext()-&gt;getStrokeStyle() == NoStroke
&gt; +        &amp;&amp; !graphicsContext-&gt;hasShadow()) {

WebKit style doesn&apos;t have a line length, so this would be easier to read if it were all one line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377996</commentid>
    <comment_count>5</comment_count>
      <attachid>87864</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-01 12:55:27 -0700</bug_when>
    <thetext>Comment on attachment 87864
Fixed style

Rejecting attachment 87864 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-3&apos;, &apos;land-a...&quot; exit_code: 2

Last 500 characters of output:
d9c211ba3462564fdea90fb1117d204b322fb82f (refs/remotes/trunk)
	M	LayoutTests/platform/gtk/editing/deleting/5408255-expected.checksum
	M	LayoutTests/platform/gtk/editing/deleting/5408255-expected.png
	M	LayoutTests/platform/gtk/editing/deleting/5408255-expected.txt
	M	LayoutTests/platform/gtk/Skipped
	M	LayoutTests/ChangeLog
r82708 = 94c8d9b24cab7463b47f35c937399f0cdb9597a0 (refs/remotes/trunk)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/trunk.

Full output: http://queues.webkit.org/results/8319255</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378028</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-01 13:24:10 -0700</bug_when>
    <thetext>Oops, I should have noticed that you didn&apos;t have ChangeLog entries in your patch.

Please prepare your patches with the webkit-patch command; &quot;webkit-patch upload&quot; in particular.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379761</commentid>
    <comment_count>7</comment_count>
      <attachid>88285</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2011-04-05 11:28:56 -0700</bug_when>
    <thetext>Created attachment 88285
Added ChangeLog Entries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379765</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-05 11:30:56 -0700</bug_when>
    <thetext>Attachment 88285 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1

LayoutTests/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379770</commentid>
    <comment_count>9</comment_count>
      <attachid>88287</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2011-04-05 11:33:56 -0700</bug_when>
    <thetext>Created attachment 88287
removed tab (oops)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379865</commentid>
    <comment_count>10</comment_count>
      <attachid>88287</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-04-05 14:34:15 -0700</bug_when>
    <thetext>Comment on attachment 88287
removed tab (oops)

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

&gt; LayoutTests/ChangeLog:3
&gt; +        Reviewed by Kenneth Russel.

Should be two &apos;l&apos;s in Russell.  :)

&gt; Source/WebCore/ChangeLog:3
&gt; +        Reviewed by Kenneth Russel.

Ibid.

&gt; Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:405
&gt; +        drawGlyphs(graphicsContext, font, glyphBuffer, from, numGlyphs, point);

Using recursion here seems unnecessary, and potentially fragile.  If someone screws up the tests later on it&apos;ll recurse forever.  Could you refactor the single-pass text rendering into a new function, and call that twice instead?  Unfortunately, you&apos;ll probably have to make it a static, or a member of some other class (TransparencyAwareGlyphPainter, maybe?) since Font.h is common code.

&gt; Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp:232
&gt; +    bool hasShadow = context-&gt;platformContext()-&gt;getDrawLooper() &amp;&amp; context-&gt;getShadow(shadowOffset, shadowBlur, shadowColor, shadowColorSpace);

I&apos;m sure I&apos;m just being dumb, but why do you check for the looper here?  Shouldn&apos;t checking the shadow params be enough?

&gt; Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp:233
&gt; +    return hasShadow ? (!shadowBlur &amp;&amp; (shadowColor.alpha() == 255) &amp;&amp; (context-&gt;fillColor().alpha() == 255)) : true;

Nit:  this could probably be !hasShadow || (...), rather than using a ternary.

&gt; Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp:238
&gt; +    // Check for patterns.

Nit:  this comment is probably wrong, since the call below seems to check for much more than patterns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379866</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-05 14:39:15 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 88287 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88287&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:3
&gt; &gt; +        Reviewed by Kenneth Russel.
&gt; 
&gt; Should be two &apos;l&apos;s in Russell.  :)
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:3
&gt; &gt; +        Reviewed by Kenneth Russel.
&gt; 
&gt; Ibid.

FYI, you should just leave the &quot;Reviewed by NOBODY (OOPS!)&quot; lines in the patch. The commit queue will rewrite them upon landing.

Looks like there is feedback to address from Stephen. I&apos;ll leave the r? bit as is; please update the bug indicating whether a revision will be made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380610</commentid>
    <comment_count>12</comment_count>
      <attachid>87864</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-06 10:46:54 -0700</bug_when>
    <thetext>Comment on attachment 87864
Fixed style

Cleared Kenneth Russell&apos;s review+ from obsolete attachment 87864 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380690</commentid>
    <comment_count>13</comment_count>
      <attachid>88477</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2011-04-06 11:53:56 -0700</bug_when>
    <thetext>Created attachment 88477
Response to review comments by Stephen White</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380691</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-06 11:55:41 -0700</bug_when>
    <thetext>Attachment 88477 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1

Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:481:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380706</commentid>
    <comment_count>15</comment_count>
      <attachid>88482</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2011-04-06 12:06:14 -0700</bug_when>
    <thetext>Created attachment 88482
Style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380731</commentid>
    <comment_count>16</comment_count>
      <attachid>88482</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-04-06 12:46:07 -0700</bug_when>
    <thetext>Comment on attachment 88482
Style fix

Thanks for the cleanup; that&apos;s a lot clearer.  Looks good to me (just need an r+ from Ken).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380741</commentid>
    <comment_count>17</comment_count>
      <attachid>88482</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-06 12:56:42 -0700</bug_when>
    <thetext>Comment on attachment 88482
Style fix

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

&gt; Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:457
&gt; +    if (!alpha &amp;&amp; graphicsContext-&gt;platformContext()-&gt;getStrokeStyle() == NoStroke
&gt; +        &amp;&amp; !graphicsContext-&gt;hasShadow()) {

WebKit has no 80c rule.

&gt; Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:459
&gt; +    }

No {} on single line clauses.

&gt; Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:465
&gt; +        FloatSize shadowOffset;
&gt; +        float shadowBlur;
&gt; +        Color shadowColor;

We don&apos;t do c-style early declarations in webkit.  You should define things as they&apos;re used.

&gt; Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:469
&gt; +        Color tmpFillColor(0, 0, 0, 0);

I&apos;m not sure there is any use in this being a local.  Also, isn&apos;t there Color::transparent or some other named color which is the same?  Maybe even just Color().

&gt; Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:475
&gt; +        Color tmpShadowColor(0, 0, 0, 0);

Again here.

&gt; Source/WebCore/platform/graphics/chromium/FontChromiumWin.cpp:480
&gt; +    } else
&gt; +      drawGlyphsWin(graphicsContext, font, glyphBuffer, from, numGlyphs, point);

Seems like this could just be an early return and then you don&apos;t need the logn if block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381046</commentid>
    <comment_count>18</comment_count>
      <attachid>88482</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-06 18:52:59 -0700</bug_when>
    <thetext>Comment on attachment 88482
Style fix

Eric raises some valid WebKit style and maintainability issues. Could you please address them? Apologies for the repeated turnaround.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383372</commentid>
    <comment_count>19</comment_count>
      <attachid>89052</attachid>
    <who name="Justin Novosad">junov</who>
    <bug_when>2011-04-11 12:30:04 -0700</bug_when>
    <thetext>Created attachment 89052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383595</commentid>
    <comment_count>20</comment_count>
      <attachid>89052</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-04-11 15:26:26 -0700</bug_when>
    <thetext>Comment on attachment 89052
Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383710</commentid>
    <comment_count>21</comment_count>
      <attachid>89052</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-11 17:31:48 -0700</bug_when>
    <thetext>Comment on attachment 89052
Patch

Clearing flags on attachment: 89052

Committed r83541: &lt;http://trac.webkit.org/changeset/83541&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383711</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-11 17:31:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87861</attachid>
            <date>2011-04-01 08:40:44 -0700</date>
            <delta_ts>2011-04-01 08:58:32 -0700</delta_ts>
            <desc>When drawing text with a blurred shadow, split the rendering in two passes: pass 1 = shadows in skia, pass2 = foreground with GDI</desc>
            <filename>more_gdi.patch</filename>
            <type>text/plain</type>
            <size>7386</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJv
bWl1bVdpbi5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCShyZXZpc2lvbiA4MjYxNykNCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4u
Y3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzgxLDE0ICszODEsMzggQEANCiAgICAgICAgICAgICAg
ICAgICAgICAgaW50IG51bUdseXBocywKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCkgY29uc3QKIHsKLSAgICBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5wcmVwYXJlRm9yU29mdHdhcmVEcmF3KCk7Ci0KICAgICBTa0NvbG9yIGNvbG9yID0g
Z3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZWZmZWN0aXZlRmlsbENvbG9yKCk7
CiAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IFNrQ29sb3JHZXRBKGNvbG9yKTsKKwogICAgIC8v
IFNraXAgMTAwJSB0cmFuc3BhcmVudCB0ZXh0OyBubyBuZWVkIHRvIGRyYXcgYW55dGhpbmcuCi0g
ICAgaWYgKCFhbHBoYSAmJiBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRT
dHJva2VTdHlsZSgpID09IE5vU3Ryb2tlKQorICAgIGlmICghYWxwaGEgJiYgZ3JhcGhpY3NDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0U3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9rZQorICAg
ICAgICAmJiAhZ3JhcGhpY3NDb250ZXh0LT5oYXNTaGFkb3coKSkgewogICAgICAgICByZXR1cm47
CisgICAgfQogCisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKKyAgICBmbG9hdCBzaGFkb3dC
bHVyOworICAgIENvbG9yIHNoYWRvd0NvbG9yOworICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JT
cGFjZTsKKyAgICBib29sIHR3b1Bhc3NSZW5kZXJpbmcgPSBhbHBoYSAmJiAhd2luZG93c0Nhbkhh
bmRsZURyYXdUZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4dCkKKyAgICAgICAmJiB3aW5kb3dzQ2Fu
SGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KGdyYXBoaWNzQ29udGV4dCk7CisgICAgaWYg
KHR3b1Bhc3NSZW5kZXJpbmcpCisgICAgeworICAgICAgICAvLyBSZWN1cnNpdmVseSBjYWxsIGRy
YXdHbHlwaHMgd2l0aCBhbiBhbHRlcmVkIHN0YXRlIHRoYXQgd2lsbCBkcmF3IAorICAgICAgICAv
LyBvbmx5IHRoZSBzaGFkb3csIHdoaWNoIHdpbGwgaW52b2tlIHRoZSBza2lhIHBhdGgKKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7CisgICAgICAgIENvbG9yIHRtcEZpbGxDb2xvcigw
LCAwLCAwLCAwKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3IodG1wRmls
bENvbG9yLCBncmFwaGljc0NvbnRleHQtPmZpbGxDb2xvclNwYWNlKCkpOworICAgICAgICBkcmF3
R2x5cGhzKGdyYXBoaWNzQ29udGV4dCwgZm9udCwgZ2x5cGhCdWZmZXIsIGZyb20sIG51bUdseXBo
cywgcG9pbnQpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKKyAgICAgICAg
Ly8gQ29udGludWUgdG8gZHJhdywgYnV0IHdpdGhvdXQgdGhlIHNoYWRvdywgd2hpY2ggd2lsbCB3
b3JrIHdpdGggdGhlIEdESSBwYXRoCisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93
KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2Up
OworICAgICAgICBDb2xvciB0bXBTaGFkb3dDb2xvcigwLCAwLCAwLCAwKTsKKyAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCB0bXBTaGFk
b3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgfQorCisgICAgZ3JhcGhpY3NDb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvclNvZnR3YXJlRHJhdygpOworCiAgICAgVHJh
bnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIgcGFpbnRlcihncmFwaGljc0NvbnRleHQsIGZvbnQs
IGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50KTsKIAogICAgIC8vIFdlIGRyYXcg
dGhlIGdseXBocyBpbiBjaHVua3MgdG8gYXZvaWQgaGF2aW5nIHRvIGRvIGEgaGVhcCBhbGxvY2F0
aW9uIGZvcgpAQCAtNDQ3LDYgKzQ3MSwxMCBAQA0KICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAg
ICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZHJhdyB0aGUgZ2x5cGhzIGFmdGVyIHNlY29u
ZCBhdHRlbXB0Iik7CiAgICAgfQorCisgICAgaWYgKHR3b1Bhc3NSZW5kZXJpbmcpIHsKKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBz
aGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgfQogfQogCiBGbG9hdFJlY3QgRm9u
dDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uaAkocmV2aXNpb24gODI2MTcpDQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNzYsNiArNzYsMTAg
QEANCiAvLyBSZXR1cm5zIHRydWUgaWYgYWR2YW5jZWQgZm9udCByZW5kZXJpbmcgaXMgcmVjb21t
ZW5kZWQuCiBib29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljc0NvbnRleHQq
KTsKIAorLy8gUmV0dXJucyB0cnVlIGlmIGFkdmFuY2VkIGZvbnQgcmVuZGVyaW5nIGlzIHJlY29t
bWVuZGVkIGlmIHNoYWRvd3MgYXJlCisvLyBkaXNyZWdhcmRlZC4KK2Jvb2wgd2luZG93c0Nhbkhh
bmRsZVRleHREcmF3aW5nV2l0aG91dFNoYWRvdyhHcmFwaGljc0NvbnRleHQqKTsKKwogLy8gTm90
ZSB0aGF0IHRoZSBvZmZzZXRzIHBhcmFtZXRlciBpcyBvcHRpb25hbC4gIElmIG5vdCBOVUxMIGl0
IHJlcHJlc2VudHMgYQogLy8gcGVyIGdseXBoIG9mZnNldCAoc3VjaCBhcyByZXR1cm5lZCBieSBT
Y3JpcHRQbGFjZSBXaW5kb3dzIEFQSSBmdW5jdGlvbikuCiAvLwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHANCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAko
cmV2aXNpb24gODI2MTcpDQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9Ta2lhRm9udFdpbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yMjksMTIgKzIyOSwyNSBAQA0K
ICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7
CiAKLSAgICBib29sIGhhc1NoYWRvdyA9IGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQs
IHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKLSAgICByZXR1cm4g
KGhhc1NoYWRvdyAmJiAoc2hhZG93Qmx1ciA9PSAwKSAmJiAoc2hhZG93Q29sb3IuYWxwaGEoKSA9
PSAyNTUpICYmIChjb250ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpOworICAgIGJv
b2wgaGFzU2hhZG93ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmdldERyYXdMb29wZXIo
KSAmJiBjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgcmV0dXJuIGhhc1NoYWRvdyA/ICgoc2hhZG93
Qmx1ciA9PSAwKSAmJiAoc2hhZG93Q29sb3IuYWxwaGEoKSA9PSAyNTUpICYmIChjb250ZXh0LT5m
aWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpIDogdHJ1ZTsKIH0KIAogYm9vbCB3aW5kb3dzQ2Fu
SGFuZGxlVGV4dERyYXdpbmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogeworICAgIC8vIENo
ZWNrIGZvciBwYXR0ZXJucy4KKyAgICBpZiAoIXdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZ1dp
dGhvdXRTaGFkb3coY29udGV4dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENo
ZWNrIGZvciBzaGFkb3cgZWZmZWN0cy4KKyAgICBpZiAoIXdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4
dFNoYWRvdyhjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nV2l0aG91dFNoYWRvdyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit7CiAgICAgLy8gQ2hlY2sgZm9yIG5vbi10cmFuc2xh
dGlvbiB0cmFuc2Zvcm1zLiBTb21ldGltZXMgem9vbXMgd2lsbCBsb29rIGJldHRlciBpbgogICAg
IC8vIFNraWEsIGFuZCBzb21ldGltZXMgYmV0dGVyIGluIFdpbmRvd3MuIFRoZSBtYWluIHByb2Js
ZW0gaXMgdGhhdCB6b29taW5nCiAgICAgLy8gaW4gdXNpbmcgU2tpYSB3aWxsIHNob3cgeW91IHRo
ZSBoaW50ZWQgb3V0bGluZXMgZm9yIHRoZSBzbWFsbGVyIHNpemUsCkBAIC0yNTYsMTAgKzI2OSw2
IEBADQogICAgIGlmIChjb250ZXh0LT5maWxsUGF0dGVybigpIHx8IGNvbnRleHQtPnN0cm9rZVBh
dHRlcm4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gQ2hlY2sgZm9yIHNoYWRv
dyBlZmZlY3RzLgotICAgIGlmIChjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0RHJhd0xv
b3BlcigpICYmICghd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KGNvbnRleHQpKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgaWYgKCFjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+aXNOYXRpdmVGb250UmVuZGVyaW5nQWxsb3dlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKQEAgLTM2Miw3ICszNzEsNyBAQA0KICAgICB9CiAgICAgYm9vbCBkaWRGaWxsID0gZmFsc2U7
CiAKLSAgICBpZiAoKHRleHRNb2RlICYgVGV4dE1vZGVGaWxsKSAmJiBTa0NvbG9yR2V0QShwYWlu
dC5nZXRDb2xvcigpKSkgeworICAgIGlmICgodGV4dE1vZGUgJiBUZXh0TW9kZUZpbGwpICYmIChT
a0NvbG9yR2V0QShwYWludC5nZXRDb2xvcigpKSB8fCBwYWludC5nZXRMb29wZXIoKSkpIHsKICAg
ICAgICAgaWYgKCFza2lhRHJhd1RleHQoaGZvbnQsIGRjLCBwbGF0Zm9ybUNvbnRleHQsICpvcmln
aW4sICZwYWludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdseXBoc1swXSwgJmFkdmFu
Y2VzWzBdLCAmb2Zmc2V0c1swXSwgbnVtR2x5cGhzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gODI2MTcpDQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpDQpAQCAtNjgw
LDYgKzY4MCwxNiBAQA0KIEJVR0NSMzI3MyBNQUMgOiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1
dC9maXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sID0gRkFJTCBQQVNTCiBCVUdD
UjMyNzMgTUFDIDogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvcmFuZ2UtZm9yLWVtcHR5LWRv
Y3VtZW50Lmh0bWwgPSBGQUlMIFBBU1MKIAorLy8gTmVlZCByZWJhc2VsaW5lCitCVUdXSzU3NTg0
IFdJTiA6IGZhc3QvbXVsdGljb2wvc2hhZG93LWJyZWFraW5nLmh0bWwgPSBJTUFHRQorQlVHV0s1
NzU4NCBXSU4gOiBmYXN0L3RleHQvc2hhZG93LXRyYW5zbHVjZW50LWZpbGwuaHRtbCA9IElNQUdF
CitCVUdXSzU3NTg0IFdJTiA6IGZhc3QvdHJhbnNmb3Jtcy9zaGFkb3dzLmh0bWwgPSBJTUFHRQor
QlVHV0s1NzU4NCBXSU4gOiBzdmcvY3NzL3NoYWRvdy1jaGFuZ2VzLnN2ZyA9IElNQUdFCitCVUdX
SzU3NTg0IFdJTiA6IHRyYW5zaXRpb25zL3N2Zy10ZXh0LXNoYWRvdy10cmFuc2l0aW9uLmh0bWwg
PSBJTUFHRQorQlVHV0s1NzU4NCBXSU4gOiBzdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctdGV4dC5z
dmcgPSBJTUFHRQorQlVHV0s1NzU4NCBXSU4gOiBzdmcvY3NzL2dyb3VwLXdpdGgtc2hhZG93LnN2
ZyA9IElNQUdFCitCVUdXSzU3NTg0IFdJTiA6IHN2Zy9jc3MvdGV4dC1zaGFkb3ctbXVsdGlwbGUu
eGh0bWwgPSBJTUFHRQorCiAvLyBUaGVzZSB0ZXN0cyBhbHNvIHVzZSBmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZSwgYnV0IHRoZXkgZ2VuZXJhdGUgc2xpZ2h0bHkKIC8vIGRpZmZlcmVudCB2YWx1
ZXMuCiBCVUdDUjMyNzMgOiBlZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbCA9IFRFWFQK
QEAgLTMxNzAsNiArMzE4MCwxNSBAQA0KIAogQlVHQ1I3NjI1MyA6IHBsdWdpbnMvbnBydW50aW1l
L25wLWRlYWxsb2NhdGUtY2FsbGVkLWJlZm9yZS1ucC1zaHV0ZG93bi5odG1sID0gQ1JBU0gKIAor
Ly8gTmVlZCByZWJhc2VsaW5lCitCVUdXSzU3NTg0IFdJTiA6IGZhc3QvbXVsdGljb2wvc2hhZG93
LWJyZWFraW5nLmh0bWwgPSBJTUFHRQorQlVHV0s1NzU4NCBXSU4gOiBmYXN0L3RleHQvc2hhZG93
LXRyYW5zbHVjZW50LWZpbGwuaHRtbCA9IElNQUdFCitCVUdXSzU3NTg0IFdJTiA6IGZhc3QvdHJh
bnNmb3Jtcy9zaGFkb3dzLmh0bWwgPSBJTUFHRQorQlVHV0s1NzU4NCBXSU4gOiBzdmcvY3NzL3No
YWRvdy1jaGFuZ2VzLnN2ZyA9IElNQUdFCitCVUdXSzU3NTg0IFdJTiA6IHRyYW5zaXRpb25zL3N2
Zy10ZXh0LXNoYWRvdy10cmFuc2l0aW9uLmh0bWwgPSBJTUFHRQorCitCVUdXSzU3NTc4IFdJTiBM
SU5VWCBzdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctdGV4dC5zdmcgPSBJTUFHRQorCiAvLyBTbG93
CiBCVUdDUjc2NTUwIFNMT1cgV0lOIExJTlVYIERFQlVHIDogZmFzdC9kb20vV2luZG93L3dpbmRv
dy1mdW5jdGlvbi1mcmFtZS1nZXR0ZXItcHJlY2VkZW5jZS5odG1sID0gUEFTUwogQlVHQ1I3NjU1
MCBNQUMgREVCVUcgOiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LWZ1bmN0aW9uLWZyYW1lLWdldHRl
ci1wcmVjZWRlbmNlLmh0bWwgPSBUSU1FT1VUIFBBU1MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87864</attachid>
            <date>2011-04-01 08:58:32 -0700</date>
            <delta_ts>2011-04-06 10:46:54 -0700</delta_ts>
            <desc>Fixed style</desc>
            <filename>more_gdi2.patch</filename>
            <type>text/plain</type>
            <size>6648</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJv
bWl1bVdpbi5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCShyZXZpc2lvbiA4MjYxNykNCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4u
Y3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzgxLDE0ICszODEsMzcgQEANCiAgICAgICAgICAgICAg
ICAgICAgICAgaW50IG51bUdseXBocywKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9h
dFBvaW50JiBwb2ludCkgY29uc3QKIHsKLSAgICBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5wcmVwYXJlRm9yU29mdHdhcmVEcmF3KCk7Ci0KICAgICBTa0NvbG9yIGNvbG9yID0g
Z3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZWZmZWN0aXZlRmlsbENvbG9yKCk7
CiAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IFNrQ29sb3JHZXRBKGNvbG9yKTsKKwogICAgIC8v
IFNraXAgMTAwJSB0cmFuc3BhcmVudCB0ZXh0OyBubyBuZWVkIHRvIGRyYXcgYW55dGhpbmcuCi0g
ICAgaWYgKCFhbHBoYSAmJiBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRT
dHJva2VTdHlsZSgpID09IE5vU3Ryb2tlKQorICAgIGlmICghYWxwaGEgJiYgZ3JhcGhpY3NDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0U3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9rZQorICAg
ICAgICAmJiAhZ3JhcGhpY3NDb250ZXh0LT5oYXNTaGFkb3coKSkgewogICAgICAgICByZXR1cm47
CisgICAgfQogCisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKKyAgICBmbG9hdCBzaGFkb3dC
bHVyOworICAgIENvbG9yIHNoYWRvd0NvbG9yOworICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JT
cGFjZTsKKyAgICBib29sIHR3b1Bhc3NSZW5kZXJpbmcgPSBhbHBoYSAmJiAhd2luZG93c0Nhbkhh
bmRsZURyYXdUZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4dCkKKyAgICAgICAmJiB3aW5kb3dzQ2Fu
SGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KGdyYXBoaWNzQ29udGV4dCk7CisgICAgaWYg
KHR3b1Bhc3NSZW5kZXJpbmcpIHsKKyAgICAgICAgLy8gUmVjdXJzaXZlbHkgY2FsbCBkcmF3R2x5
cGhzIHdpdGggYW4gYWx0ZXJlZCBzdGF0ZSB0aGF0IHdpbGwgZHJhdyAKKyAgICAgICAgLy8gb25s
eSB0aGUgc2hhZG93LCB3aGljaCB3aWxsIGludm9rZSB0aGUgc2tpYSBwYXRoCisgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+c2F2ZSgpOworICAgICAgICBDb2xvciB0bXBGaWxsQ29sb3IoMCwgMCwg
MCwgMCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKHRtcEZpbGxDb2xv
ciwgZ3JhcGhpY3NDb250ZXh0LT5maWxsQ29sb3JTcGFjZSgpKTsKKyAgICAgICAgZHJhd0dseXBo
cyhncmFwaGljc0NvbnRleHQsIGZvbnQsIGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBv
aW50KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5yZXN0b3JlKCk7CisgICAgICAgIC8vIENv
bnRpbnVlIHRvIGRyYXcsIGJ1dCB3aXRob3V0IHRoZSBzaGFkb3csIHdoaWNoIHdpbGwgd29yayB3
aXRoIHRoZSBHREkgcGF0aAorICAgICAgICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFk
b3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAg
ICAgICAgQ29sb3IgdG1wU2hhZG93Q29sb3IoMCwgMCwgMCwgMCk7CisgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgdG1wU2hhZG93Q29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIH0KKworICAgIGdyYXBoaWNzQ29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JTb2Z0d2FyZURyYXcoKTsKKwogICAgIFRyYW5zcGFy
ZW5jeUF3YXJlR2x5cGhQYWludGVyIHBhaW50ZXIoZ3JhcGhpY3NDb250ZXh0LCBmb250LCBnbHlw
aEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7CiAKICAgICAvLyBXZSBkcmF3IHRoZSBn
bHlwaHMgaW4gY2h1bmtzIHRvIGF2b2lkIGhhdmluZyB0byBkbyBhIGhlYXAgYWxsb2NhdGlvbiBm
b3IKQEAgLTQ0Nyw2ICs0NzAsOSBAQA0KICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAg
ICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZHJhdyB0aGUgZ2x5cGhzIGFmdGVyIHNlY29uZCBhdHRl
bXB0Iik7CiAgICAgfQorCisgICAgaWYgKHR3b1Bhc3NSZW5kZXJpbmcpCisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogfQogCiBGbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVj
dEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4mIHJ1biwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaAkocmV2aXNp
b24gODI2MTcpDQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lh
Rm9udFdpbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAtNzYsNiArNzYsMTAgQEANCiAvLyBSZXR1cm5z
IHRydWUgaWYgYWR2YW5jZWQgZm9udCByZW5kZXJpbmcgaXMgcmVjb21tZW5kZWQuCiBib29sIHdp
bmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljc0NvbnRleHQqKTsKIAorLy8gUmV0dXJu
cyB0cnVlIGlmIGFkdmFuY2VkIGZvbnQgcmVuZGVyaW5nIGlzIHJlY29tbWVuZGVkIGlmIHNoYWRv
d3MgYXJlCisvLyBkaXNyZWdhcmRlZC4KK2Jvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5n
V2l0aG91dFNoYWRvdyhHcmFwaGljc0NvbnRleHQqKTsKKwogLy8gTm90ZSB0aGF0IHRoZSBvZmZz
ZXRzIHBhcmFtZXRlciBpcyBvcHRpb25hbC4gIElmIG5vdCBOVUxMIGl0IHJlcHJlc2VudHMgYQog
Ly8gcGVyIGdseXBoIG9mZnNldCAoc3VjaCBhcyByZXR1cm5lZCBieSBTY3JpcHRQbGFjZSBXaW5k
b3dzIEFQSSBmdW5jdGlvbikuCiAvLwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkocmV2aXNpb24gODI2MTcp
DQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5j
cHAJKHdvcmtpbmcgY29weSkNCkBAIC0yMjksMTIgKzIyOSwyNSBAQA0KICAgICBDb2xvciBzaGFk
b3dDb2xvcjsKICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7CiAKLSAgICBib29sIGhh
c1NoYWRvdyA9IGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKLSAgICByZXR1cm4gKGhhc1NoYWRvdyAmJiAo
c2hhZG93Qmx1ciA9PSAwKSAmJiAoc2hhZG93Q29sb3IuYWxwaGEoKSA9PSAyNTUpICYmIChjb250
ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpOworICAgIGJvb2wgaGFzU2hhZG93ID0g
Y29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmdldERyYXdMb29wZXIoKSAmJiBjb250ZXh0LT5n
ZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29s
b3JTcGFjZSk7CisgICAgcmV0dXJuIGhhc1NoYWRvdyA/ICghc2hhZG93Qmx1ciAmJiAoc2hhZG93
Q29sb3IuYWxwaGEoKSA9PSAyNTUpICYmIChjb250ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpID09
IDI1NSkpIDogdHJ1ZTsKIH0KIAogYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQogeworICAgIC8vIENoZWNrIGZvciBwYXR0ZXJucy4KKyAg
ICBpZiAoIXdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFkb3coY29udGV4dCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIENoZWNrIGZvciBzaGFkb3cgZWZmZWN0
cy4KKyAgICBpZiAoIXdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhjb250ZXh0KSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgd2luZG93
c0NhbkhhbmRsZVRleHREcmF3aW5nV2l0aG91dFNoYWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQpCit7CiAgICAgLy8gQ2hlY2sgZm9yIG5vbi10cmFuc2xhdGlvbiB0cmFuc2Zvcm1zLiBTb21l
dGltZXMgem9vbXMgd2lsbCBsb29rIGJldHRlciBpbgogICAgIC8vIFNraWEsIGFuZCBzb21ldGlt
ZXMgYmV0dGVyIGluIFdpbmRvd3MuIFRoZSBtYWluIHByb2JsZW0gaXMgdGhhdCB6b29taW5nCiAg
ICAgLy8gaW4gdXNpbmcgU2tpYSB3aWxsIHNob3cgeW91IHRoZSBoaW50ZWQgb3V0bGluZXMgZm9y
IHRoZSBzbWFsbGVyIHNpemUsCkBAIC0yNTYsMTAgKzI2OSw2IEBADQogICAgIGlmIChjb250ZXh0
LT5maWxsUGF0dGVybigpIHx8IGNvbnRleHQtPnN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgLy8gQ2hlY2sgZm9yIHNoYWRvdyBlZmZlY3RzLgotICAgIGlmIChj
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0RHJhd0xvb3BlcigpICYmICghd2luZG93c0Nh
bkhhbmRsZURyYXdUZXh0U2hhZG93KGNvbnRleHQpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
CiAgICAgaWYgKCFjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+aXNOYXRpdmVGb250UmVuZGVy
aW5nQWxsb3dlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM2Miw3ICszNzEsNyBA
QA0KICAgICB9CiAgICAgYm9vbCBkaWRGaWxsID0gZmFsc2U7CiAKLSAgICBpZiAoKHRleHRNb2Rl
ICYgVGV4dE1vZGVGaWxsKSAmJiBTa0NvbG9yR2V0QShwYWludC5nZXRDb2xvcigpKSkgeworICAg
IGlmICgodGV4dE1vZGUgJiBUZXh0TW9kZUZpbGwpICYmIChTa0NvbG9yR2V0QShwYWludC5nZXRD
b2xvcigpKSB8fCBwYWludC5nZXRMb29wZXIoKSkpIHsKICAgICAgICAgaWYgKCFza2lhRHJhd1Rl
eHQoaGZvbnQsIGRjLCBwbGF0Zm9ybUNvbnRleHQsICpvcmlnaW4sICZwYWludCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmdseXBoc1swXSwgJmFkdmFuY2VzWzBdLCAmb2Zmc2V0c1swXSwg
bnVtR2x5cGhzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2
aXNpb24gODI2MTcpDQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpDQpAQCAtNjgwLDYgKzY4MCwxNiBAQA0KIEJVR0NS
MzI3MyBNQUMgOiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9maXJzdHJlY3Rmb3JjaGFyYWN0
ZXJyYW5nZS1wbGFpbi5odG1sID0gRkFJTCBQQVNTCiBCVUdDUjMyNzMgTUFDIDogcGxhdGZvcm0v
bWFjL2VkaXRpbmcvaW5wdXQvcmFuZ2UtZm9yLWVtcHR5LWRvY3VtZW50Lmh0bWwgPSBGQUlMIFBB
U1MKIAorLy8gTmVlZCByZWJhc2VsaW5lCitCVUdXSzU3NTg0IFdJTiA6IGZhc3QvbXVsdGljb2wv
c2hhZG93LWJyZWFraW5nLmh0bWwgPSBJTUFHRQorQlVHV0s1NzU4NCBXSU4gOiBmYXN0L3RleHQv
c2hhZG93LXRyYW5zbHVjZW50LWZpbGwuaHRtbCA9IElNQUdFCitCVUdXSzU3NTg0IFdJTiA6IGZh
c3QvdHJhbnNmb3Jtcy9zaGFkb3dzLmh0bWwgPSBJTUFHRQorQlVHV0s1NzU4NCBXSU4gOiBzdmcv
Y3NzL3NoYWRvdy1jaGFuZ2VzLnN2ZyA9IElNQUdFCitCVUdXSzU3NTg0IFdJTiA6IHRyYW5zaXRp
b25zL3N2Zy10ZXh0LXNoYWRvdy10cmFuc2l0aW9uLmh0bWwgPSBJTUFHRQorQlVHV0s1NzU4NCBX
SU4gOiBzdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctdGV4dC5zdmcgPSBJTUFHRQorQlVHV0s1NzU4
NCBXSU4gOiBzdmcvY3NzL2dyb3VwLXdpdGgtc2hhZG93LnN2ZyA9IElNQUdFCitCVUdXSzU3NTg0
IFdJTiA6IHN2Zy9jc3MvdGV4dC1zaGFkb3ctbXVsdGlwbGUueGh0bWwgPSBJTUFHRQorCiAvLyBU
aGVzZSB0ZXN0cyBhbHNvIHVzZSBmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSwgYnV0IHRoZXkg
Z2VuZXJhdGUgc2xpZ2h0bHkKIC8vIGRpZmZlcmVudCB2YWx1ZXMuCiBCVUdDUjMyNzMgOiBlZGl0
aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbCA9IFRFWFQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88285</attachid>
            <date>2011-04-05 11:28:56 -0700</date>
            <delta_ts>2011-04-05 11:33:56 -0700</delta_ts>
            <desc>Added ChangeLog Entries</desc>
            <filename>more_gdi3.patch</filename>
            <type>text/plain</type>
            <size>8844</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAkocmV2aXNpb24gODI5NDIpDQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpDQpAQCAtNjgzLDYg
KzY4MywxNiBAQA0KIEJVR0NSMzI3MyBNQUMgOiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9m
aXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sID0gRkFJTCBQQVNTCiBCVUdDUjMy
NzMgTUFDIDogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvcmFuZ2UtZm9yLWVtcHR5LWRvY3Vt
ZW50Lmh0bWwgPSBGQUlMIFBBU1MKIAorLy8gTmVlZCByZWJhc2VsaW5lCitCVUdXSzU3NTg0IFdJ
TiA6IGZhc3QvbXVsdGljb2wvc2hhZG93LWJyZWFraW5nLmh0bWwgPSBJTUFHRQorQlVHV0s1NzU4
NCBXSU4gOiBmYXN0L3RleHQvc2hhZG93LXRyYW5zbHVjZW50LWZpbGwuaHRtbCA9IElNQUdFCitC
VUdXSzU3NTg0IFdJTiA6IGZhc3QvdHJhbnNmb3Jtcy9zaGFkb3dzLmh0bWwgPSBJTUFHRQorQlVH
V0s1NzU4NCBXSU4gOiBzdmcvY3NzL3NoYWRvdy1jaGFuZ2VzLnN2ZyA9IElNQUdFCitCVUdXSzU3
NTg0IFdJTiA6IHRyYW5zaXRpb25zL3N2Zy10ZXh0LXNoYWRvdy10cmFuc2l0aW9uLmh0bWwgPSBJ
TUFHRQorQlVHV0s1NzU4NCBXSU4gOiBzdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctdGV4dC5zdmcg
PSBJTUFHRQorQlVHV0s1NzU4NCBXSU4gOiBzdmcvY3NzL2dyb3VwLXdpdGgtc2hhZG93LnN2ZyA9
IElNQUdFCitCVUdXSzU3NTg0IFdJTiA6IHN2Zy9jc3MvdGV4dC1zaGFkb3ctbXVsdGlwbGUueGh0
bWwgPSBJTUFHRQorCiAvLyBUaGVzZSB0ZXN0cyBhbHNvIHVzZSBmaXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSwgYnV0IHRoZXkgZ2VuZXJhdGUgc2xpZ2h0bHkKIC8vIGRpZmZlcmVudCB2YWx1ZXMu
CiBCVUdDUjMyNzMgOiBlZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbCA9IFRFWFQKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gODI5NTgpDQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMSwzICsxLDE0IEBADQorMjAxMS0wNC0wNSAgSnVzdGluIE5vdm9zYWQg
IDxqdW5vdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNz
ZWwuCisKKyAgICAgICAgRml4ZWQgZm9udCBhbnRpLWFsaWFzaW5nIG9uIGNocm9taXVtL3dpbmRv
d3MsIHdoaWNoIHdhcworICAgICAgICBnZXR0aW5nIHR1cm5lZCBvZmYgd2hlbiB0ZXh0IGlzIGRy
YXduIHdpdGggYSBibHVycmVkIHNoYWRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTc1ODQKKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAgVGVtcG9yYXJ5IHRlc3QgZmFpbHVyZXMgZm9y
IHJlYmFzZWxpbmluZwkKKwogMjAxMS0wNC0wNSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29n
bGUuY29tPgogCiAgICAgICAgVW5yZXZpZXdlZCwgdGVtcG9yYXJpbHkgc3VwcHJlc3MgQ2hyb21p
dW0gZmFpbHVyZXMgZm9yIHRlc3RzIGluIHI4Mjk0Ny4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gODI5NTgpDQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpA
QCAtMSwzICsxLDI4IEBADQorMjAxMS0wNC0wNSAgSnVzdGluIE5vdm9zYWQgIDxqdW5vdkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWwuCisKKyAgICAg
ICAgRml4ZWQgZm9udCBhbnRpLWFsaWFzaW5nIG9uIGNocm9taXVtL3dpbmRvd3MsIHdoaWNoIHdh
cworICAgICAgICBnZXR0aW5nIHR1cm5lZCBvZmYgd2hlbiB0ZXh0IGlzIGRyYXduIHdpdGggYSBi
bHVycmVkIHNoYWRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTc1ODQKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRD
aHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgQWRkZWQgdHdvLXBhc3MgcmVuZGVyaW5nIHRvIGRyYXcgc2hhZG93cyB3aXRoIHNraWEg
YW5kIGZvcmVncm91bmQKKyAgICAgICAgZ2x5cGhzIHVzaW5nIEdESQorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2lu
ZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KToKKyAgICAgICAgTW9kaWZpZWQgbWV0aG9kIHNv
IHRoYXQgaXQgZG9lcyBub3QgYXNzdW1lIGEgc2hhZG93IGlzIHByZXNlbnQsIGFuZAorICAgICAg
ICByZXR1cm5zIHRydWUgaWYgdGhlcmUgaXMgbm8gc2hhZG93IChHREkgY2FuIGRyYXcgJ25vIHNo
YWRvdycpCisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcpOgor
ICAgICAgICBGYWN0b3JlZCBvdXQgaW50byBzdWIgbWV0aG9kcyBzbyB0aGF0IHRoZSB0aGUgc2hh
ZG93IGFuZCBmb3JlZ291bmQKKyAgICAgICAgZ2x5cGggcHJvcGVydGllcyBjYW4gYmUgdGVzdGVk
IHNlcGFyYXRlbHkgaW5kZXBlbmRlbnRseS4KKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NDYW5I
YW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFkb3cpOgorICAgICAgICBOZXcgbWV0aG9kIHJldHVy
bnMgdHJ1ZSBpZiB0aGUgZm9yZWdyb3VuZCBnbHlwaCBvbmx5IGhhcyBlZmZlY3QKKyAgICAgICAg
dGhhdCBjYW4gYmUgZHJhdyB3aXRoIEdESQorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTa2lhVGV4
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5oOgorCiAy
MDExLTA0LTA1ICBEYXZpZCBEb3J3aW4gIDxkZG9yd2luQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHANCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4u
Y3BwCShyZXZpc2lvbiA4Mjk0MikNCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCSh3b3JraW5nIGNvcHkpDQpAQCAtMzgxLDE0
ICszODEsMzcgQEANCiAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bUdseXBocywKICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKIHsKLSAgICBn
cmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yU29mdHdhcmVEcmF3
KCk7Ci0KICAgICBTa0NvbG9yIGNvbG9yID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKS0+ZWZmZWN0aXZlRmlsbENvbG9yKCk7CiAgICAgdW5zaWduZWQgY2hhciBhbHBoYSA9IFNr
Q29sb3JHZXRBKGNvbG9yKTsKKwogICAgIC8vIFNraXAgMTAwJSB0cmFuc3BhcmVudCB0ZXh0OyBu
byBuZWVkIHRvIGRyYXcgYW55dGhpbmcuCi0gICAgaWYgKCFhbHBoYSAmJiBncmFwaGljc0NvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRTdHJva2VTdHlsZSgpID09IE5vU3Ryb2tlKQorICAg
IGlmICghYWxwaGEgJiYgZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0U3Ry
b2tlU3R5bGUoKSA9PSBOb1N0cm9rZQorICAgICAgICAmJiAhZ3JhcGhpY3NDb250ZXh0LT5oYXNT
aGFkb3coKSkgewogICAgICAgICByZXR1cm47CisgICAgfQogCisgICAgRmxvYXRTaXplIHNoYWRv
d09mZnNldDsKKyAgICBmbG9hdCBzaGFkb3dCbHVyOworICAgIENvbG9yIHNoYWRvd0NvbG9yOwor
ICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKKyAgICBib29sIHR3b1Bhc3NSZW5kZXJp
bmcgPSBhbHBoYSAmJiAhd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KGdyYXBoaWNzQ29u
dGV4dCkKKyAgICAgICAmJiB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93
KGdyYXBoaWNzQ29udGV4dCk7CisgICAgaWYgKHR3b1Bhc3NSZW5kZXJpbmcpIHsKKyAgICAgICAg
Ly8gUmVjdXJzaXZlbHkgY2FsbCBkcmF3R2x5cGhzIHdpdGggYW4gYWx0ZXJlZCBzdGF0ZSB0aGF0
IHdpbGwgZHJhdyAKKyAgICAgICAgLy8gb25seSB0aGUgc2hhZG93LCB3aGljaCB3aWxsIGludm9r
ZSB0aGUgc2tpYSBwYXRoCisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOworICAgICAg
ICBDb2xvciB0bXBGaWxsQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+c2V0RmlsbENvbG9yKHRtcEZpbGxDb2xvciwgZ3JhcGhpY3NDb250ZXh0LT5maWxsQ29sb3JT
cGFjZSgpKTsKKyAgICAgICAgZHJhd0dseXBocyhncmFwaGljc0NvbnRleHQsIGZvbnQsIGdseXBo
QnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50KTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5yZXN0b3JlKCk7CisgICAgICAgIC8vIENvbnRpbnVlIHRvIGRyYXcsIGJ1dCB3aXRob3V0IHRo
ZSBzaGFkb3csIHdoaWNoIHdpbGwgd29yayB3aXRoIHRoZSBHREkgcGF0aAorICAgICAgICBncmFw
aGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0Nv
bG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgQ29sb3IgdG1wU2hhZG93Q29sb3IoMCwg
MCwgMCwgMCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09mZnNl
dCwgc2hhZG93Qmx1ciwgdG1wU2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIH0K
KworICAgIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JTb2Z0
d2FyZURyYXcoKTsKKwogICAgIFRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyIHBhaW50ZXIo
Z3JhcGhpY3NDb250ZXh0LCBmb250LCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2lu
dCk7CiAKICAgICAvLyBXZSBkcmF3IHRoZSBnbHlwaHMgaW4gY2h1bmtzIHRvIGF2b2lkIGhhdmlu
ZyB0byBkbyBhIGhlYXAgYWxsb2NhdGlvbiBmb3IKQEAgLTQ0Nyw2ICs0NzAsOSBAQA0KICAgICAg
ICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gZHJhdyB0
aGUgZ2x5cGhzIGFmdGVyIHNlY29uZCBhdHRlbXB0Iik7CiAgICAgfQorCisgICAgaWYgKHR3b1Bh
c3NSZW5kZXJpbmcpCisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hhZG93KHNoYWRvd09m
ZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwogfQogCiBG
bG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRleHRSdW4m
IHJ1biwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvU2tpYUZvbnRXaW4uaAkocmV2aXNpb24gODI5NDIpDQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5oCSh3b3JraW5nIGNvcHkpDQpAQCAt
NzYsNiArNzYsMTAgQEANCiAvLyBSZXR1cm5zIHRydWUgaWYgYWR2YW5jZWQgZm9udCByZW5kZXJp
bmcgaXMgcmVjb21tZW5kZWQuCiBib29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFw
aGljc0NvbnRleHQqKTsKIAorLy8gUmV0dXJucyB0cnVlIGlmIGFkdmFuY2VkIGZvbnQgcmVuZGVy
aW5nIGlzIHJlY29tbWVuZGVkIGlmIHNoYWRvd3MgYXJlCisvLyBkaXNyZWdhcmRlZC4KK2Jvb2wg
d2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nV2l0aG91dFNoYWRvdyhHcmFwaGljc0NvbnRleHQq
KTsKKwogLy8gTm90ZSB0aGF0IHRoZSBvZmZzZXRzIHBhcmFtZXRlciBpcyBvcHRpb25hbC4gIElm
IG5vdCBOVUxMIGl0IHJlcHJlc2VudHMgYQogLy8gcGVyIGdseXBoIG9mZnNldCAoc3VjaCBhcyBy
ZXR1cm5lZCBieSBTY3JpcHRQbGFjZSBXaW5kb3dzIEFQSSBmdW5jdGlvbikuCiAvLwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHANCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFG
b250V2luLmNwcAkocmV2aXNpb24gODI5NDIpDQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0yMjksMTIg
KzIyOSwyNSBAQA0KICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICBDb2xvclNwYWNlIHNoYWRv
d0NvbG9yU3BhY2U7CiAKLSAgICBib29sIGhhc1NoYWRvdyA9IGNvbnRleHQtPmdldFNoYWRvdyhz
aGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsK
LSAgICByZXR1cm4gKGhhc1NoYWRvdyAmJiAoc2hhZG93Qmx1ciA9PSAwKSAmJiAoc2hhZG93Q29s
b3IuYWxwaGEoKSA9PSAyNTUpICYmIChjb250ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpID09IDI1
NSkpOworICAgIGJvb2wgaGFzU2hhZG93ID0gY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmdl
dERyYXdMb29wZXIoKSAmJiBjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dC
bHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgcmV0dXJuIGhhc1NoYWRv
dyA/ICghc2hhZG93Qmx1ciAmJiAoc2hhZG93Q29sb3IuYWxwaGEoKSA9PSAyNTUpICYmIChjb250
ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpIDogdHJ1ZTsKIH0KIAogYm9vbCB3aW5k
b3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogeworICAg
IC8vIENoZWNrIGZvciBwYXR0ZXJucy4KKyAgICBpZiAoIXdpbmRvd3NDYW5IYW5kbGVUZXh0RHJh
d2luZ1dpdGhvdXRTaGFkb3coY29udGV4dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vIENoZWNrIGZvciBzaGFkb3cgZWZmZWN0cy4KKyAgICBpZiAoIXdpbmRvd3NDYW5IYW5kbGVE
cmF3VGV4dFNoYWRvdyhjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nV2l0aG91dFNo
YWRvdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit7CiAgICAgLy8gQ2hlY2sgZm9yIG5vbi10
cmFuc2xhdGlvbiB0cmFuc2Zvcm1zLiBTb21ldGltZXMgem9vbXMgd2lsbCBsb29rIGJldHRlciBp
bgogICAgIC8vIFNraWEsIGFuZCBzb21ldGltZXMgYmV0dGVyIGluIFdpbmRvd3MuIFRoZSBtYWlu
IHByb2JsZW0gaXMgdGhhdCB6b29taW5nCiAgICAgLy8gaW4gdXNpbmcgU2tpYSB3aWxsIHNob3cg
eW91IHRoZSBoaW50ZWQgb3V0bGluZXMgZm9yIHRoZSBzbWFsbGVyIHNpemUsCkBAIC0yNTYsMTAg
KzI2OSw2IEBADQogICAgIGlmIChjb250ZXh0LT5maWxsUGF0dGVybigpIHx8IGNvbnRleHQtPnN0
cm9rZVBhdHRlcm4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gQ2hlY2sgZm9y
IHNoYWRvdyBlZmZlY3RzLgotICAgIGlmIChjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0
RHJhd0xvb3BlcigpICYmICghd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KGNvbnRleHQp
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgaWYgKCFjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+aXNOYXRpdmVGb250UmVuZGVyaW5nQWxsb3dlZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKQEAgLTM2Miw3ICszNzEsNyBAQA0KICAgICB9CiAgICAgYm9vbCBkaWRGaWxsID0g
ZmFsc2U7CiAKLSAgICBpZiAoKHRleHRNb2RlICYgVGV4dE1vZGVGaWxsKSAmJiBTa0NvbG9yR2V0
QShwYWludC5nZXRDb2xvcigpKSkgeworICAgIGlmICgodGV4dE1vZGUgJiBUZXh0TW9kZUZpbGwp
ICYmIChTa0NvbG9yR2V0QShwYWludC5nZXRDb2xvcigpKSB8fCBwYWludC5nZXRMb29wZXIoKSkp
IHsKICAgICAgICAgaWYgKCFza2lhRHJhd1RleHQoaGZvbnQsIGRjLCBwbGF0Zm9ybUNvbnRleHQs
ICpvcmlnaW4sICZwYWludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdseXBoc1swXSwg
JmFkdmFuY2VzWzBdLCAmb2Zmc2V0c1swXSwgbnVtR2x5cGhzKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88287</attachid>
            <date>2011-04-05 11:33:56 -0700</date>
            <delta_ts>2011-04-06 11:53:56 -0700</delta_ts>
            <desc>removed tab (oops)</desc>
            <filename>more_gdi4.patch</filename>
            <type>text/plain</type>
            <size>8843</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAkocmV2aXNpb24gODI5NDIpDQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpDQpAQCAtNjgzLDYg
KzY4MywxNiBAQA0KIEJVR0NSMzI3MyBNQUMgOiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9m
aXJzdHJlY3Rmb3JjaGFyYWN0ZXJyYW5nZS1wbGFpbi5odG1sID0gRkFJTCBQQVNTCiBCVUdDUjMy
NzMgTUFDIDogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvcmFuZ2UtZm9yLWVtcHR5LWRvY3Vt
ZW50Lmh0bWwgPSBGQUlMIFBBU1MKIAorLy8gTmVlZCByZWJhc2VsaW5lCitCVUdXSzU3NTg0IFdJ
TiA6IGZhc3QvbXVsdGljb2wvc2hhZG93LWJyZWFraW5nLmh0bWwgPSBJTUFHRQorQlVHV0s1NzU4
NCBXSU4gOiBmYXN0L3RleHQvc2hhZG93LXRyYW5zbHVjZW50LWZpbGwuaHRtbCA9IElNQUdFCitC
VUdXSzU3NTg0IFdJTiA6IGZhc3QvdHJhbnNmb3Jtcy9zaGFkb3dzLmh0bWwgPSBJTUFHRQorQlVH
V0s1NzU4NCBXSU4gOiBzdmcvY3NzL3NoYWRvdy1jaGFuZ2VzLnN2ZyA9IElNQUdFCitCVUdXSzU3
NTg0IFdJTiA6IHRyYW5zaXRpb25zL3N2Zy10ZXh0LXNoYWRvdy10cmFuc2l0aW9uLmh0bWwgPSBJ
TUFHRQorQlVHV0s1NzU4NCBXSU4gOiBzdmcvY3NzL2NvbXBvc2l0ZS1zaGFkb3ctdGV4dC5zdmcg
PSBJTUFHRQorQlVHV0s1NzU4NCBXSU4gOiBzdmcvY3NzL2dyb3VwLXdpdGgtc2hhZG93LnN2ZyA9
IElNQUdFCitCVUdXSzU3NTg0IFdJTiA6IHN2Zy9jc3MvdGV4dC1zaGFkb3ctbXVsdGlwbGUueGh0
bWwgPSBJTUFHRQorCiAvLyBUaGVzZSB0ZXN0cyBhbHNvIHVzZSBmaXJzdFJlY3RGb3JDaGFyYWN0
ZXJSYW5nZSwgYnV0IHRoZXkgZ2VuZXJhdGUgc2xpZ2h0bHkKIC8vIGRpZmZlcmVudCB2YWx1ZXMu
CiBCVUdDUjMyNzMgOiBlZGl0aW5nL3NlbGVjdGlvbi81ODI1MzUwLTEuaHRtbCA9IFRFWFQKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gODI5NTgpDQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpDQpAQCAtMSwzICsxLDE0IEBADQorMjAxMS0wNC0wNSAgSnVzdGluIE5vdm9zYWQg
IDxqdW5vdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNz
ZWwuCisKKyAgICAgICAgRml4ZWQgZm9udCBhbnRpLWFsaWFzaW5nIG9uIGNocm9taXVtL3dpbmRv
d3MsIHdoaWNoIHdhcworICAgICAgICBnZXR0aW5nIHR1cm5lZCBvZmYgd2hlbiB0ZXh0IGlzIGRy
YXduIHdpdGggYSBibHVycmVkIHNoYWRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTc1ODQKKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAgVGVtcG9yYXJ5IHRlc3QgZmFpbHVyZXMgZm9y
IHJlYmFzZWxpbmluZworCiAyMDExLTA0LTA1ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2ds
ZS5jb20+CiAKICAgICAgICBVbnJldmlld2VkLCB0ZW1wb3JhcmlseSBzdXBwcmVzcyBDaHJvbWl1
bSBmYWlsdXJlcyBmb3IgdGVzdHMgaW4gcjgyOTQ3LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biA4Mjk1OCkNCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkNCkBA
IC0xLDMgKzEsMjggQEANCisyMDExLTA0LTA1ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbC4KKworICAgICAg
ICBGaXhlZCBmb250IGFudGktYWxpYXNpbmcgb24gY2hyb21pdW0vd2luZG93cywgd2hpY2ggd2Fz
CisgICAgICAgIGdldHRpbmcgdHVybmVkIG9mZiB3aGVuIHRleHQgaXMgZHJhd24gd2l0aCBhIGJs
dXJyZWQgc2hhZG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NzU4NAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENo
cm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOgorICAg
ICAgICBBZGRlZCB0d28tcGFzcyByZW5kZXJpbmcgdG8gZHJhdyBzaGFkb3dzIHdpdGggc2tpYSBh
bmQgZm9yZWdyb3VuZAorICAgICAgICBnbHlwaHMgdXNpbmcgR0RJCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5k
b3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3cpOgorICAgICAgICBNb2RpZmllZCBtZXRob2Qgc28g
dGhhdCBpdCBkb2VzIG5vdCBhc3N1bWUgYSBzaGFkb3cgaXMgcHJlc2VudCwgYW5kCisgICAgICAg
IHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBubyBzaGFkb3cgKEdESSBjYW4gZHJhdyAnbm8gc2hh
ZG93JykKKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyk6Cisg
ICAgICAgIEZhY3RvcmVkIG91dCBpbnRvIHN1YiBtZXRob2RzIHNvIHRoYXQgdGhlIHRoZSBzaGFk
b3cgYW5kIGZvcmVnb3VuZAorICAgICAgICBnbHlwaCBwcm9wZXJ0aWVzIGNhbiBiZSB0ZXN0ZWQg
c2VwYXJhdGVseSBpbmRlcGVuZGVudGx5LgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c0Nhbkhh
bmRsZVRleHREcmF3aW5nV2l0aG91dFNoYWRvdyk6CisgICAgICAgIE5ldyBtZXRob2QgcmV0dXJu
cyB0cnVlIGlmIHRoZSBmb3JlZ3JvdW5kIGdseXBoIG9ubHkgaGFzIGVmZmVjdAorICAgICAgICB0
aGF0IGNhbiBiZSBkcmF3IHdpdGggR0RJCisgICAgICAgIChXZWJDb3JlOjpwYWludFNraWFUZXh0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmg6CisKIDIw
MTEtMDQtMDUgIERhdmlkIERvcndpbiAgPGRkb3J3aW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhdmlkIExldmluLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcA0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5j
cHAJKHJldmlzaW9uIDgyOTQyKQ0KKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJKHdvcmtpbmcgY29weSkNCkBAIC0zODEsMTQg
KzM4MSwzNyBAQA0KICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtR2x5cGhzLAogICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIGdy
YXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBhcmVGb3JTb2Z0d2FyZURyYXco
KTsKLQogICAgIFNrQ29sb3IgY29sb3IgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLT5lZmZlY3RpdmVGaWxsQ29sb3IoKTsKICAgICB1bnNpZ25lZCBjaGFyIGFscGhhID0gU2tD
b2xvckdldEEoY29sb3IpOworCiAgICAgLy8gU2tpcCAxMDAlIHRyYW5zcGFyZW50IHRleHQ7IG5v
IG5lZWQgdG8gZHJhdyBhbnl0aGluZy4KLSAgICBpZiAoIWFscGhhICYmIGdyYXBoaWNzQ29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPmdldFN0cm9rZVN0eWxlKCkgPT0gTm9TdHJva2UpCisgICAg
aWYgKCFhbHBoYSAmJiBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRTdHJv
a2VTdHlsZSgpID09IE5vU3Ryb2tlCisgICAgICAgICYmICFncmFwaGljc0NvbnRleHQtPmhhc1No
YWRvdygpKSB7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKKyAgICBGbG9hdFNpemUgc2hhZG93
T2Zmc2V0OworICAgIGZsb2F0IHNoYWRvd0JsdXI7CisgICAgQ29sb3Igc2hhZG93Q29sb3I7Cisg
ICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOworICAgIGJvb2wgdHdvUGFzc1JlbmRlcmlu
ZyA9IGFscGhhICYmICF3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coZ3JhcGhpY3NDb250
ZXh0KQorICAgICAgICYmIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFkb3co
Z3JhcGhpY3NDb250ZXh0KTsKKyAgICBpZiAodHdvUGFzc1JlbmRlcmluZykgeworICAgICAgICAv
LyBSZWN1cnNpdmVseSBjYWxsIGRyYXdHbHlwaHMgd2l0aCBhbiBhbHRlcmVkIHN0YXRlIHRoYXQg
d2lsbCBkcmF3IAorICAgICAgICAvLyBvbmx5IHRoZSBzaGFkb3csIHdoaWNoIHdpbGwgaW52b2tl
IHRoZSBza2lhIHBhdGgKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7CisgICAgICAg
IENvbG9yIHRtcEZpbGxDb2xvcigwLCAwLCAwLCAwKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LT5zZXRGaWxsQ29sb3IodG1wRmlsbENvbG9yLCBncmFwaGljc0NvbnRleHQtPmZpbGxDb2xvclNw
YWNlKCkpOworICAgICAgICBkcmF3R2x5cGhzKGdyYXBoaWNzQ29udGV4dCwgZm9udCwgZ2x5cGhC
dWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQpOworICAgICAgICBncmFwaGljc0NvbnRleHQt
PnJlc3RvcmUoKTsKKyAgICAgICAgLy8gQ29udGludWUgdG8gZHJhdywgYnV0IHdpdGhvdXQgdGhl
IHNoYWRvdywgd2hpY2ggd2lsbCB3b3JrIHdpdGggdGhlIEdESSBwYXRoCisgICAgICAgIGdyYXBo
aWNzQ29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgICAgICBDb2xvciB0bXBTaGFkb3dDb2xvcigwLCAw
LCAwLCAwKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0
LCBzaGFkb3dCbHVyLCB0bXBTaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CisgICAgfQor
CisgICAgZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+cHJlcGFyZUZvclNvZnR3
YXJlRHJhdygpOworCiAgICAgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIgcGFpbnRlcihn
cmFwaGljc0NvbnRleHQsIGZvbnQsIGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlwaHMsIHBvaW50
KTsKIAogICAgIC8vIFdlIGRyYXcgdGhlIGdseXBocyBpbiBjaHVua3MgdG8gYXZvaWQgaGF2aW5n
IHRvIGRvIGEgaGVhcCBhbGxvY2F0aW9uIGZvcgpAQCAtNDQ3LDYgKzQ3MCw5IEBADQogICAgICAg
ICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkcmF3IHRo
ZSBnbHlwaHMgYWZ0ZXIgc2Vjb25kIGF0dGVtcHQiKTsKICAgICB9CisKKyAgICBpZiAodHdvUGFz
c1JlbmRlcmluZykKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zm
c2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7CiB9CiAKIEZs
b2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYg
cnVuLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9u
dFdpbi5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9Ta2lhRm9udFdpbi5oCShyZXZpc2lvbiA4Mjk0MikNCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmgJKHdvcmtpbmcgY29weSkNCkBAIC03
Niw2ICs3NiwxMCBAQA0KIC8vIFJldHVybnMgdHJ1ZSBpZiBhZHZhbmNlZCBmb250IHJlbmRlcmlu
ZyBpcyByZWNvbW1lbmRlZC4KIGJvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKEdyYXBo
aWNzQ29udGV4dCopOwogCisvLyBSZXR1cm5zIHRydWUgaWYgYWR2YW5jZWQgZm9udCByZW5kZXJp
bmcgaXMgcmVjb21tZW5kZWQgaWYgc2hhZG93cyBhcmUKKy8vIGRpc3JlZ2FyZGVkLgorYm9vbCB3
aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCop
OworCiAvLyBOb3RlIHRoYXQgdGhlIG9mZnNldHMgcGFyYW1ldGVyIGlzIG9wdGlvbmFsLiAgSWYg
bm90IE5VTEwgaXQgcmVwcmVzZW50cyBhCiAvLyBwZXIgZ2x5cGggb2Zmc2V0IChzdWNoIGFzIHJl
dHVybmVkIGJ5IFNjcmlwdFBsYWNlIFdpbmRvd3MgQVBJIGZ1bmN0aW9uKS4KIC8vCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uY3BwCShyZXZpc2lvbiA4Mjk0MikNCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkod29ya2luZyBjb3B5KQ0KQEAgLTIyOSwxMiAr
MjI5LDI1IEBADQogICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgIENvbG9yU3BhY2Ugc2hhZG93
Q29sb3JTcGFjZTsKIAotICAgIGJvb2wgaGFzU2hhZG93ID0gY29udGV4dC0+Z2V0U2hhZG93KHNo
YWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwot
ICAgIHJldHVybiAoaGFzU2hhZG93ICYmIChzaGFkb3dCbHVyID09IDApICYmIChzaGFkb3dDb2xv
ci5hbHBoYSgpID09IDI1NSkgJiYgKGNvbnRleHQtPmZpbGxDb2xvcigpLmFscGhhKCkgPT0gMjU1
KSk7CisgICAgYm9vbCBoYXNTaGFkb3cgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0
RHJhd0xvb3BlcigpICYmIGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICByZXR1cm4gaGFzU2hhZG93
ID8gKCFzaGFkb3dCbHVyICYmIChzaGFkb3dDb2xvci5hbHBoYSgpID09IDI1NSkgJiYgKGNvbnRl
eHQtPmZpbGxDb2xvcigpLmFscGhhKCkgPT0gMjU1KSkgOiB0cnVlOwogfQogCiBib29sIHdpbmRv
d3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CisgICAg
Ly8gQ2hlY2sgZm9yIHBhdHRlcm5zLgorICAgIGlmICghd2luZG93c0NhbkhhbmRsZVRleHREcmF3
aW5nV2l0aG91dFNoYWRvdyhjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gQ2hlY2sgZm9yIHNoYWRvdyBlZmZlY3RzLgorICAgIGlmICghd2luZG93c0NhbkhhbmRsZURy
YXdUZXh0U2hhZG93KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hh
ZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKK3sKICAgICAvLyBDaGVjayBmb3Igbm9uLXRy
YW5zbGF0aW9uIHRyYW5zZm9ybXMuIFNvbWV0aW1lcyB6b29tcyB3aWxsIGxvb2sgYmV0dGVyIGlu
CiAgICAgLy8gU2tpYSwgYW5kIHNvbWV0aW1lcyBiZXR0ZXIgaW4gV2luZG93cy4gVGhlIG1haW4g
cHJvYmxlbSBpcyB0aGF0IHpvb21pbmcKICAgICAvLyBpbiB1c2luZyBTa2lhIHdpbGwgc2hvdyB5
b3UgdGhlIGhpbnRlZCBvdXRsaW5lcyBmb3IgdGhlIHNtYWxsZXIgc2l6ZSwKQEAgLTI1NiwxMCAr
MjY5LDYgQEANCiAgICAgaWYgKGNvbnRleHQtPmZpbGxQYXR0ZXJuKCkgfHwgY29udGV4dC0+c3Ry
b2tlUGF0dGVybigpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBDaGVjayBmb3Ig
c2hhZG93IGVmZmVjdHMuCi0gICAgaWYgKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRE
cmF3TG9vcGVyKCkgJiYgKCF3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coY29udGV4dCkp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBpZiAoIWNvbnRleHQtPnBsYXRmb3JtQ29u
dGV4dCgpLT5pc05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxvd2VkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIApAQCAtMzYyLDcgKzM3MSw3IEBADQogICAgIH0KICAgICBib29sIGRpZEZpbGwgPSBm
YWxzZTsKIAotICAgIGlmICgodGV4dE1vZGUgJiBUZXh0TW9kZUZpbGwpICYmIFNrQ29sb3JHZXRB
KHBhaW50LmdldENvbG9yKCkpKSB7CisgICAgaWYgKCh0ZXh0TW9kZSAmIFRleHRNb2RlRmlsbCkg
JiYgKFNrQ29sb3JHZXRBKHBhaW50LmdldENvbG9yKCkpIHx8IHBhaW50LmdldExvb3BlcigpKSkg
ewogICAgICAgICBpZiAoIXNraWFEcmF3VGV4dChoZm9udCwgZGMsIHBsYXRmb3JtQ29udGV4dCwg
Km9yaWdpbiwgJnBhaW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2x5cGhzWzBdLCAm
YWR2YW5jZXNbMF0sICZvZmZzZXRzWzBdLCBudW1HbHlwaHMpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88477</attachid>
            <date>2011-04-06 11:53:56 -0700</date>
            <delta_ts>2011-04-06 12:06:14 -0700</delta_ts>
            <desc>Response to review comments by Stephen White</desc>
            <filename>more_gdi5.patch</filename>
            <type>text/plain</type>
            <size>9783</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQJKHJldmlzaW9uIDgyOTQyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02ODMsNiArNjgz
LDE2IEBACiBCVUdDUjMyNzMgTUFDIDogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZmlyc3Ry
ZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRtbCA9IEZBSUwgUEFTUwogQlVHQ1IzMjczIE1B
QyA6IHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L3JhbmdlLWZvci1lbXB0eS1kb2N1bWVudC5o
dG1sID0gRkFJTCBQQVNTCiAKKy8vIE5lZWQgcmViYXNlbGluZQorQlVHV0s1NzU4NCBXSU4gOiBm
YXN0L211bHRpY29sL3NoYWRvdy1icmVha2luZy5odG1sID0gSU1BR0UKK0JVR1dLNTc1ODQgV0lO
IDogZmFzdC90ZXh0L3NoYWRvdy10cmFuc2x1Y2VudC1maWxsLmh0bWwgPSBJTUFHRQorQlVHV0s1
NzU4NCBXSU4gOiBmYXN0L3RyYW5zZm9ybXMvc2hhZG93cy5odG1sID0gSU1BR0UKK0JVR1dLNTc1
ODQgV0lOIDogc3ZnL2Nzcy9zaGFkb3ctY2hhbmdlcy5zdmcgPSBJTUFHRQorQlVHV0s1NzU4NCBX
SU4gOiB0cmFuc2l0aW9ucy9zdmctdGV4dC1zaGFkb3ctdHJhbnNpdGlvbi5odG1sID0gSU1BR0UK
K0JVR1dLNTc1ODQgV0lOIDogc3ZnL2Nzcy9jb21wb3NpdGUtc2hhZG93LXRleHQuc3ZnID0gSU1B
R0UKK0JVR1dLNTc1ODQgV0lOIDogc3ZnL2Nzcy9ncm91cC13aXRoLXNoYWRvdy5zdmcgPSBJTUFH
RQorQlVHV0s1NzU4NCBXSU4gOiBzdmcvY3NzL3RleHQtc2hhZG93LW11bHRpcGxlLnhodG1sID0g
SU1BR0UKKwogLy8gVGhlc2UgdGVzdHMgYWxzbyB1c2UgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UsIGJ1dCB0aGV5IGdlbmVyYXRlIHNsaWdodGx5CiAvLyBkaWZmZXJlbnQgdmFsdWVzLgogQlVH
Q1IzMjczIDogZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLmh0bWwgPSBURVhUCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA4MzA3NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA0LTA2ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXhlZCBmb250IGFudGktYWxpYXNpbmcgb24gY2hyb21pdW0vd2luZG93cywgd2hpY2gg
d2FzCisgICAgICAgIGdldHRpbmcgdHVybmVkIG9mZiB3aGVuIHRleHQgaXMgZHJhd24gd2l0aCBh
IGJsdXJyZWQgc2hhZG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NzU4NAorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0OgorICAgICAgICBUZW1wb3JhcnkgdGVzdCBmYWlsdXJlcyBmb3IgcmViYXNlbGlu
aW5nLgorCiAyMDExLTA0LTA2ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4MzA3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMwIEBACisyMDExLTA0LTA2ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXhlZCBmb250IGFudGktYWxpYXNpbmcgb24gY2hyb21pdW0vd2luZG93cywgd2hpY2ggd2Fz
CisgICAgICAgIGdldHRpbmcgdHVybmVkIG9mZiB3aGVuIHRleHQgaXMgZHJhd24gd2l0aCBhIGJs
dXJyZWQgc2hhZG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NzU4NAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENo
cm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNXaW4pOiBuZXcgc3Rh
dGljIGZ1bmN0aW9uLCBjb2RlIGZhY3RvcmVkLW91dAorICAgICAgICBmcm9tIFdlYkNvcmU6OkZv
bnQ6OmRyYXdHbHlwaHMKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOiBtYXkg
c2VwYXJhdGUgZm9udCByZW5kZXJpbmcgaW50byB0d28KKyAgICAgICAgcGFzc2VzIHRvIGFsbG93
IGZvcmVncm91bmQgZ2x5cGhzIHRvIGJlIHJlbmRlcmVkIHdpdGggR0RJIHdoZW4gU2tpYSAKKyAg
ICAgICAgaXMgcmVxdWlyZWQgZm9yIHJlbmRlcmluZyBzaGFkb3dzCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5k
b3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3cpOgorICAgICAgICBNb2RpZmllZCBtZXRob2Qgc28g
dGhhdCBpdCBkb2VzIG5vdCBhc3N1bWUgYSBzaGFkb3cgaXMgcHJlc2VudCwgYW5kCisgICAgICAg
IHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBubyBzaGFkb3cgKEdESSBjYW4gZHJhdyAnbm8gc2hh
ZG93JykKKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyk6Cisg
ICAgICAgIEZhY3RvcmVkIG91dCBpbnRvIHN1YiBtZXRob2RzIHNvIHRoYXQgdGhlIHRoZSBzaGFk
b3cgYW5kIGZvcmVnb3VuZAorICAgICAgICBnbHlwaCBwcm9wZXJ0aWVzIGNhbiBiZSB0ZXN0ZWQg
c2VwYXJhdGVseSBpbmRlcGVuZGVudGx5LgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c0Nhbkhh
bmRsZVRleHREcmF3aW5nV2l0aG91dFNoYWRvdyk6CisgICAgICAgIE5ldyBtZXRob2QgcmV0dXJu
cyB0cnVlIGlmIHRoZSBmb3JlZ3JvdW5kIGdseXBoIG9ubHkgaGFzIGVmZmVjdAorICAgICAgICB0
aGF0IGNhbiBiZSBkcmF3IHdpdGggR0RJCisgICAgICAgIChXZWJDb3JlOjpwYWludFNraWFUZXh0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmg6CisKIDIw
MTEtMDQtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3Bw
CShyZXZpc2lvbiA4Mjk0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3NCwyMSArMzc0
LDE0IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU2ltcGxlRm9udERhdGEqIGZvbnQsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2x5
cGhCdWZmZXImIGdseXBoQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgIGludCBmcm9tLAot
ICAgICAgICAgICAgICAgICAgICAgIGludCBudW1HbHlwaHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Ci17CitzdGF0aWMgdm9pZCBkcmF3R2x5
cGhzV2luKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bUds
eXBocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQp
IHsKICAgICBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yU29m
dHdhcmVEcmF3KCk7CiAKLSAgICBTa0NvbG9yIGNvbG9yID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+ZWZmZWN0aXZlRmlsbENvbG9yKCk7Ci0gICAgdW5zaWduZWQgY2hhciBh
bHBoYSA9IFNrQ29sb3JHZXRBKGNvbG9yKTsKLSAgICAvLyBTa2lwIDEwMCUgdHJhbnNwYXJlbnQg
dGV4dDsgbm8gbmVlZCB0byBkcmF3IGFueXRoaW5nLgotICAgIGlmICghYWxwaGEgJiYgZ3JhcGhp
Y3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0U3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9r
ZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIg
cGFpbnRlcihncmFwaGljc0NvbnRleHQsIGZvbnQsIGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlw
aHMsIHBvaW50KTsKIAogICAgIC8vIFdlIGRyYXcgdGhlIGdseXBocyBpbiBjaHVua3MgdG8gYXZv
aWQgaGF2aW5nIHRvIGRvIGEgaGVhcCBhbGxvY2F0aW9uIGZvcgpAQCAtNDQ5LDYgKzQ0Miw0NSBA
QAogICAgIH0KIH0KIAordm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBmb250LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1
ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSwKKyAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbnVtR2x5cGhzLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50KSBjb25zdAoreworICAgIFNrQ29sb3IgY29sb3IgPSBncmFwaGljc0NvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5lZmZlY3RpdmVGaWxsQ29sb3IoKTsKKyAgICB1bnNpZ25lZCBj
aGFyIGFscGhhID0gU2tDb2xvckdldEEoY29sb3IpOworCisgICAgLy8gU2tpcCAxMDAlIHRyYW5z
cGFyZW50IHRleHQ7IG5vIG5lZWQgdG8gZHJhdyBhbnl0aGluZy4KKyAgICBpZiAoIWFscGhhICYm
IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmdldFN0cm9rZVN0eWxlKCkgPT0g
Tm9TdHJva2UKKyAgICAgICAgJiYgIWdyYXBoaWNzQ29udGV4dC0+aGFzU2hhZG93KCkpIHsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhbHBoYSAmJiAhd2luZG93c0NhbkhhbmRs
ZURyYXdUZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4dCkgJiYgd2luZG93c0NhbkhhbmRsZVRleHRE
cmF3aW5nV2l0aG91dFNoYWRvdyhncmFwaGljc0NvbnRleHQpKSB7CisgICAgICAgIC8vIERyYXcg
aW4gdHdvIHBhc3Nlczogc2tpYSBmb3IgdGhlIHNoYWRvdywgR0RJIGZvciBmb3JlZ3JvdW5kIHRl
eHQKKyAgICAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKKyAgICAgICAgZmxvYXQgc2hhZG93
Qmx1cjsKKyAgICAgICAgQ29sb3Igc2hhZG93Q29sb3I7CisgICAgICAgIENvbG9yU3BhY2Ugc2hh
ZG93Q29sb3JTcGFjZTsKKyAgICAgICAgLy8gcGFzczE6IHNoYWRvdyAod2lsbCB1c2Ugc2tpYSkK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7CisgICAgICAgIENvbG9yIHRtcEZpbGxD
b2xvcigwLCAwLCAwLCAwKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3Io
dG1wRmlsbENvbG9yLCBncmFwaGljc0NvbnRleHQtPmZpbGxDb2xvclNwYWNlKCkpOworICAgICAg
ICBkcmF3R2x5cGhzV2luKGdyYXBoaWNzQ29udGV4dCwgZm9udCwgZ2x5cGhCdWZmZXIsIGZyb20s
IG51bUdseXBocywgcG9pbnQpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsK
KyAgICAgICAgLy8gcGFzczI6IGZvcmVncm91bmQgdGV4dCAod2lsbCB1c2UgR0RJKQorICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgQ29sb3IgdG1wU2hhZG93Q29s
b3IoMCwgMCwgMCwgMCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93Qmx1ciwgdG1wU2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwor
ICAgICAgICBkcmF3R2x5cGhzV2luKGdyYXBoaWNzQ29udGV4dCwgZm9udCwgZ2x5cGhCdWZmZXIs
IGZyb20sIG51bUdseXBocywgcG9pbnQpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNw
YWNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkcmF3R2x5cGhzV2luKGdyYXBoaWNzQ29udGV4
dCwgZm9udCwgZ2x5cGhCdWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQpOworICAgIH0gIAor
fQorCiBGbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0KGNvbnN0IFRl
eHRSdW4mIHJ1biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBoLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9Ta2lhRm9udFdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaAkocmV2aXNpb24gODI5NDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc2LDYgKzc2LDEwIEBACiAvLyBSZXR1cm5zIHRydWUgaWYgYWR2YW5jZWQgZm9u
dCByZW5kZXJpbmcgaXMgcmVjb21tZW5kZWQuCiBib29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJh
d2luZyhHcmFwaGljc0NvbnRleHQqKTsKIAorLy8gUmV0dXJucyB0cnVlIGlmIGFkdmFuY2VkIGZv
bnQgcmVuZGVyaW5nIGlzIHJlY29tbWVuZGVkIGlmIHNoYWRvd3MgYXJlCisvLyBkaXNyZWdhcmRl
ZC4KK2Jvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nV2l0aG91dFNoYWRvdyhHcmFwaGlj
c0NvbnRleHQqKTsKKwogLy8gTm90ZSB0aGF0IHRoZSBvZmZzZXRzIHBhcmFtZXRlciBpcyBvcHRp
b25hbC4gIElmIG5vdCBOVUxMIGl0IHJlcHJlc2VudHMgYQogLy8gcGVyIGdseXBoIG9mZnNldCAo
c3VjaCBhcyByZXR1cm5lZCBieSBTY3JpcHRQbGFjZSBXaW5kb3dzIEFQSSBmdW5jdGlvbikuCiAv
LwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9Ta2lhRm9udFdpbi5jcHAJKHJldmlzaW9uIDgyOTQyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
MCwxMSArMjMwLDIzIEBACiAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwogCiAgICAg
Ym9vbCBoYXNTaGFkb3cgPSBjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dC
bHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7Ci0gICAgcmV0dXJuIChoYXNTaGFk
b3cgJiYgKHNoYWRvd0JsdXIgPT0gMCkgJiYgKHNoYWRvd0NvbG9yLmFscGhhKCkgPT0gMjU1KSAm
JiAoY29udGV4dC0+ZmlsbENvbG9yKCkuYWxwaGEoKSA9PSAyNTUpKTsKKyAgICByZXR1cm4gIWhh
c1NoYWRvdyB8fCAoIXNoYWRvd0JsdXIgJiYgKHNoYWRvd0NvbG9yLmFscGhhKCkgPT0gMjU1KSAm
JiAoY29udGV4dC0+ZmlsbENvbG9yKCkuYWxwaGEoKSA9PSAyNTUpKTsKIH0KIAogYm9vbCB3aW5k
b3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogeworICAg
IGlmICghd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nV2l0aG91dFNoYWRvdyhjb250ZXh0KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gQ2hlY2sgZm9yIHNoYWRvdyBlZmZlY3Rz
LgorICAgIGlmICghd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KGNvbnRleHQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCB3aW5kb3dz
Q2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKK3sKICAgICAvLyBDaGVjayBmb3Igbm9uLXRyYW5zbGF0aW9uIHRyYW5zZm9ybXMuIFNvbWV0
aW1lcyB6b29tcyB3aWxsIGxvb2sgYmV0dGVyIGluCiAgICAgLy8gU2tpYSwgYW5kIHNvbWV0aW1l
cyBiZXR0ZXIgaW4gV2luZG93cy4gVGhlIG1haW4gcHJvYmxlbSBpcyB0aGF0IHpvb21pbmcKICAg
ICAvLyBpbiB1c2luZyBTa2lhIHdpbGwgc2hvdyB5b3UgdGhlIGhpbnRlZCBvdXRsaW5lcyBmb3Ig
dGhlIHNtYWxsZXIgc2l6ZSwKQEAgLTI1NiwxMCArMjY4LDYgQEAKICAgICBpZiAoY29udGV4dC0+
ZmlsbFBhdHRlcm4oKSB8fCBjb250ZXh0LT5zdHJva2VQYXR0ZXJuKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vIENoZWNrIGZvciBzaGFkb3cgZWZmZWN0cy4KLSAgICBpZiAoY29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmdldERyYXdMb29wZXIoKSAmJiAoIXdpbmRvd3NDYW5I
YW5kbGVEcmF3VGV4dFNoYWRvdyhjb250ZXh0KSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQog
ICAgIGlmICghY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmlzTmF0aXZlRm9udFJlbmRlcmlu
Z0FsbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNjIsNyArMzcwLDcgQEAK
ICAgICB9CiAgICAgYm9vbCBkaWRGaWxsID0gZmFsc2U7CiAKLSAgICBpZiAoKHRleHRNb2RlICYg
VGV4dE1vZGVGaWxsKSAmJiBTa0NvbG9yR2V0QShwYWludC5nZXRDb2xvcigpKSkgeworICAgIGlm
ICgodGV4dE1vZGUgJiBUZXh0TW9kZUZpbGwpICYmIChTa0NvbG9yR2V0QShwYWludC5nZXRDb2xv
cigpKSB8fCBwYWludC5nZXRMb29wZXIoKSkpIHsKICAgICAgICAgaWYgKCFza2lhRHJhd1RleHQo
aGZvbnQsIGRjLCBwbGF0Zm9ybUNvbnRleHQsICpvcmlnaW4sICZwYWludCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmdseXBoc1swXSwgJmFkdmFuY2VzWzBdLCAmb2Zmc2V0c1swXSwgbnVt
R2x5cGhzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88482</attachid>
            <date>2011-04-06 12:06:14 -0700</date>
            <delta_ts>2011-04-11 12:30:00 -0700</delta_ts>
            <desc>Style fix</desc>
            <filename>more_gdi6.patch</filename>
            <type>text/plain</type>
            <size>9770</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVj
dGF0aW9ucy50eHQJKHJldmlzaW9uIDgyOTQyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02ODMsNiArNjgz
LDE2IEBACiBCVUdDUjMyNzMgTUFDIDogcGxhdGZvcm0vbWFjL2VkaXRpbmcvaW5wdXQvZmlyc3Ry
ZWN0Zm9yY2hhcmFjdGVycmFuZ2UtcGxhaW4uaHRtbCA9IEZBSUwgUEFTUwogQlVHQ1IzMjczIE1B
QyA6IHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L3JhbmdlLWZvci1lbXB0eS1kb2N1bWVudC5o
dG1sID0gRkFJTCBQQVNTCiAKKy8vIE5lZWQgcmViYXNlbGluZQorQlVHV0s1NzU4NCBXSU4gOiBm
YXN0L211bHRpY29sL3NoYWRvdy1icmVha2luZy5odG1sID0gSU1BR0UKK0JVR1dLNTc1ODQgV0lO
IDogZmFzdC90ZXh0L3NoYWRvdy10cmFuc2x1Y2VudC1maWxsLmh0bWwgPSBJTUFHRQorQlVHV0s1
NzU4NCBXSU4gOiBmYXN0L3RyYW5zZm9ybXMvc2hhZG93cy5odG1sID0gSU1BR0UKK0JVR1dLNTc1
ODQgV0lOIDogc3ZnL2Nzcy9zaGFkb3ctY2hhbmdlcy5zdmcgPSBJTUFHRQorQlVHV0s1NzU4NCBX
SU4gOiB0cmFuc2l0aW9ucy9zdmctdGV4dC1zaGFkb3ctdHJhbnNpdGlvbi5odG1sID0gSU1BR0UK
K0JVR1dLNTc1ODQgV0lOIDogc3ZnL2Nzcy9jb21wb3NpdGUtc2hhZG93LXRleHQuc3ZnID0gSU1B
R0UKK0JVR1dLNTc1ODQgV0lOIDogc3ZnL2Nzcy9ncm91cC13aXRoLXNoYWRvdy5zdmcgPSBJTUFH
RQorQlVHV0s1NzU4NCBXSU4gOiBzdmcvY3NzL3RleHQtc2hhZG93LW11bHRpcGxlLnhodG1sID0g
SU1BR0UKKwogLy8gVGhlc2UgdGVzdHMgYWxzbyB1c2UgZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFu
Z2UsIGJ1dCB0aGV5IGdlbmVyYXRlIHNsaWdodGx5CiAvLyBkaWZmZXJlbnQgdmFsdWVzLgogQlVH
Q1IzMjczIDogZWRpdGluZy9zZWxlY3Rpb24vNTgyNTM1MC0xLmh0bWwgPSBURVhUCkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA4MzA3NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA0LTA2ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGaXhlZCBmb250IGFudGktYWxpYXNpbmcgb24gY2hyb21pdW0vd2luZG93cywgd2hpY2gg
d2FzCisgICAgICAgIGdldHRpbmcgdHVybmVkIG9mZiB3aGVuIHRleHQgaXMgZHJhd24gd2l0aCBh
IGJsdXJyZWQgc2hhZG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01NzU4NAorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0OgorICAgICAgICBUZW1wb3JhcnkgdGVzdCBmYWlsdXJlcyBmb3IgcmViYXNlbGlu
aW5nLgorCiAyMDExLTA0LTA2ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4MzA3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMwIEBACisyMDExLTA0LTA2ICBKdXN0aW4gTm92b3NhZCAgPGp1bm92QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBGaXhlZCBmb250IGFudGktYWxpYXNpbmcgb24gY2hyb21pdW0vd2luZG93cywgd2hpY2ggd2Fz
CisgICAgICAgIGdldHRpbmcgdHVybmVkIG9mZiB3aGVuIHRleHQgaXMgZHJhd24gd2l0aCBhIGJs
dXJyZWQgc2hhZG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NzU4NAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENo
cm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNXaW4pOiBuZXcgc3Rh
dGljIGZ1bmN0aW9uLCBjb2RlIGZhY3RvcmVkLW91dAorICAgICAgICBmcm9tIFdlYkNvcmU6OkZv
bnQ6OmRyYXdHbHlwaHMKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdHbHlwaHMpOiBtYXkg
c2VwYXJhdGUgZm9udCByZW5kZXJpbmcgaW50byB0d28KKyAgICAgICAgcGFzc2VzIHRvIGFsbG93
IGZvcmVncm91bmQgZ2x5cGhzIHRvIGJlIHJlbmRlcmVkIHdpdGggR0RJIHdoZW4gU2tpYSAKKyAg
ICAgICAgaXMgcmVxdWlyZWQgZm9yIHJlbmRlcmluZyBzaGFkb3dzCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5k
b3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3cpOgorICAgICAgICBNb2RpZmllZCBtZXRob2Qgc28g
dGhhdCBpdCBkb2VzIG5vdCBhc3N1bWUgYSBzaGFkb3cgaXMgcHJlc2VudCwgYW5kCisgICAgICAg
IHJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBubyBzaGFkb3cgKEdESSBjYW4gZHJhdyAnbm8gc2hh
ZG93JykKKyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyk6Cisg
ICAgICAgIEZhY3RvcmVkIG91dCBpbnRvIHN1YiBtZXRob2RzIHNvIHRoYXQgdGhlIHRoZSBzaGFk
b3cgYW5kIGZvcmVnb3VuZAorICAgICAgICBnbHlwaCBwcm9wZXJ0aWVzIGNhbiBiZSB0ZXN0ZWQg
c2VwYXJhdGVseSBpbmRlcGVuZGVudGx5LgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c0Nhbkhh
bmRsZVRleHREcmF3aW5nV2l0aG91dFNoYWRvdyk6CisgICAgICAgIE5ldyBtZXRob2QgcmV0dXJu
cyB0cnVlIGlmIHRoZSBmb3JlZ3JvdW5kIGdseXBoIG9ubHkgaGFzIGVmZmVjdAorICAgICAgICB0
aGF0IGNhbiBiZSBkcmF3IHdpdGggR0RJCisgICAgICAgIChXZWJDb3JlOjpwYWludFNraWFUZXh0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmg6CisKIDIw
MTEtMDQtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3Bw
CShyZXZpc2lvbiA4Mjk0MikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3NCwyMSArMzc0
LDE0IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU2ltcGxlRm9udERhdGEqIGZvbnQsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2x5
cGhCdWZmZXImIGdseXBoQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgIGludCBmcm9tLAot
ICAgICAgICAgICAgICAgICAgICAgIGludCBudW1HbHlwaHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Ci17CitzdGF0aWMgdm9pZCBkcmF3R2x5
cGhzV2luKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bUds
eXBocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQp
IHsKICAgICBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5wcmVwYXJlRm9yU29m
dHdhcmVEcmF3KCk7CiAKLSAgICBTa0NvbG9yIGNvbG9yID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+ZWZmZWN0aXZlRmlsbENvbG9yKCk7Ci0gICAgdW5zaWduZWQgY2hhciBh
bHBoYSA9IFNrQ29sb3JHZXRBKGNvbG9yKTsKLSAgICAvLyBTa2lwIDEwMCUgdHJhbnNwYXJlbnQg
dGV4dDsgbm8gbmVlZCB0byBkcmF3IGFueXRoaW5nLgotICAgIGlmICghYWxwaGEgJiYgZ3JhcGhp
Y3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0U3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9r
ZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIg
cGFpbnRlcihncmFwaGljc0NvbnRleHQsIGZvbnQsIGdseXBoQnVmZmVyLCBmcm9tLCBudW1HbHlw
aHMsIHBvaW50KTsKIAogICAgIC8vIFdlIGRyYXcgdGhlIGdseXBocyBpbiBjaHVua3MgdG8gYXZv
aWQgaGF2aW5nIHRvIGRvIGEgaGVhcCBhbGxvY2F0aW9uIGZvcgpAQCAtNDQ5LDYgKzQ0Miw0NCBA
QAogICAgIH0KIH0KIAordm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpbXBsZUZvbnREYXRh
KiBmb250LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1
ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSwKKyAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbnVtR2x5cGhzLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50KSBjb25zdAoreworICAgIFNrQ29sb3IgY29sb3IgPSBncmFwaGljc0NvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5lZmZlY3RpdmVGaWxsQ29sb3IoKTsKKyAgICB1bnNpZ25lZCBj
aGFyIGFscGhhID0gU2tDb2xvckdldEEoY29sb3IpOworCisgICAgLy8gU2tpcCAxMDAlIHRyYW5z
cGFyZW50IHRleHQ7IG5vIG5lZWQgdG8gZHJhdyBhbnl0aGluZy4KKyAgICBpZiAoIWFscGhhICYm
IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmdldFN0cm9rZVN0eWxlKCkgPT0g
Tm9TdHJva2UKKyAgICAgICAgJiYgIWdyYXBoaWNzQ29udGV4dC0+aGFzU2hhZG93KCkpIHsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChhbHBoYSAmJiAhd2luZG93c0NhbkhhbmRs
ZURyYXdUZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4dCkgJiYgd2luZG93c0NhbkhhbmRsZVRleHRE
cmF3aW5nV2l0aG91dFNoYWRvdyhncmFwaGljc0NvbnRleHQpKSB7CisgICAgICAgIC8vIERyYXcg
aW4gdHdvIHBhc3Nlczogc2tpYSBmb3IgdGhlIHNoYWRvdywgR0RJIGZvciBmb3JlZ3JvdW5kIHRl
eHQKKyAgICAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKKyAgICAgICAgZmxvYXQgc2hhZG93
Qmx1cjsKKyAgICAgICAgQ29sb3Igc2hhZG93Q29sb3I7CisgICAgICAgIENvbG9yU3BhY2Ugc2hh
ZG93Q29sb3JTcGFjZTsKKyAgICAgICAgLy8gcGFzczE6IHNoYWRvdyAod2lsbCB1c2Ugc2tpYSkK
KyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zYXZlKCk7CisgICAgICAgIENvbG9yIHRtcEZpbGxD
b2xvcigwLCAwLCAwLCAwKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5zZXRGaWxsQ29sb3Io
dG1wRmlsbENvbG9yLCBncmFwaGljc0NvbnRleHQtPmZpbGxDb2xvclNwYWNlKCkpOworICAgICAg
ICBkcmF3R2x5cGhzV2luKGdyYXBoaWNzQ29udGV4dCwgZm9udCwgZ2x5cGhCdWZmZXIsIGZyb20s
IG51bUdseXBocywgcG9pbnQpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsK
KyAgICAgICAgLy8gcGFzczI6IGZvcmVncm91bmQgdGV4dCAod2lsbCB1c2UgR0RJKQorICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKKyAgICAgICAgQ29sb3IgdG1wU2hhZG93Q29s
b3IoMCwgMCwgMCwgMCk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93Qmx1ciwgdG1wU2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwor
ICAgICAgICBkcmF3R2x5cGhzV2luKGdyYXBoaWNzQ29udGV4dCwgZm9udCwgZ2x5cGhCdWZmZXIs
IGZyb20sIG51bUdseXBocywgcG9pbnQpOworICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNw
YWNlKTsKKyAgICB9IGVsc2UKKyAgICAgIGRyYXdHbHlwaHNXaW4oZ3JhcGhpY3NDb250ZXh0LCBm
b250LCBnbHlwaEJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCk7Cit9CisKIEZsb2F0UmVj
dCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yQ29tcGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGgsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFG
b250V2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9Ta2lhRm9udFdpbi5oCShyZXZpc2lvbiA4Mjk0MikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNzYs
NiArNzYsMTAgQEAKIC8vIFJldHVybnMgdHJ1ZSBpZiBhZHZhbmNlZCBmb250IHJlbmRlcmluZyBp
cyByZWNvbW1lbmRlZC4KIGJvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKEdyYXBoaWNz
Q29udGV4dCopOwogCisvLyBSZXR1cm5zIHRydWUgaWYgYWR2YW5jZWQgZm9udCByZW5kZXJpbmcg
aXMgcmVjb21tZW5kZWQgaWYgc2hhZG93cyBhcmUKKy8vIGRpc3JlZ2FyZGVkLgorYm9vbCB3aW5k
b3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCopOwor
CiAvLyBOb3RlIHRoYXQgdGhlIG9mZnNldHMgcGFyYW1ldGVyIGlzIG9wdGlvbmFsLiAgSWYgbm90
IE5VTEwgaXQgcmVwcmVzZW50cyBhCiAvLyBwZXIgZ2x5cGggb2Zmc2V0IChzdWNoIGFzIHJldHVy
bmVkIGJ5IFNjcmlwdFBsYWNlIFdpbmRvd3MgQVBJIGZ1bmN0aW9uKS4KIC8vCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2lu
LmNwcAkocmV2aXNpb24gODI5NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1NraWFGb250V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMwLDExICsyMzAsMjMg
QEAKICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7CiAKICAgICBib29sIGhhc1NoYWRv
dyA9IGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0Nv
bG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKLSAgICByZXR1cm4gKGhhc1NoYWRvdyAmJiAoc2hhZG93
Qmx1ciA9PSAwKSAmJiAoc2hhZG93Q29sb3IuYWxwaGEoKSA9PSAyNTUpICYmIChjb250ZXh0LT5m
aWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpOworICAgIHJldHVybiAhaGFzU2hhZG93IHx8ICgh
c2hhZG93Qmx1ciAmJiAoc2hhZG93Q29sb3IuYWxwaGEoKSA9PSAyNTUpICYmIChjb250ZXh0LT5m
aWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpOwogfQogCiBib29sIHdpbmRvd3NDYW5IYW5kbGVU
ZXh0RHJhd2luZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CisgICAgaWYgKCF3aW5kb3dz
Q2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KGNvbnRleHQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayBmb3Igc2hhZG93IGVmZmVjdHMuCisgICAgaWYgKCF3
aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coY29udGV4dCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0
RHJhd2luZ1dpdGhvdXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQorewogICAgIC8v
IENoZWNrIGZvciBub24tdHJhbnNsYXRpb24gdHJhbnNmb3Jtcy4gU29tZXRpbWVzIHpvb21zIHdp
bGwgbG9vayBiZXR0ZXIgaW4KICAgICAvLyBTa2lhLCBhbmQgc29tZXRpbWVzIGJldHRlciBpbiBX
aW5kb3dzLiBUaGUgbWFpbiBwcm9ibGVtIGlzIHRoYXQgem9vbWluZwogICAgIC8vIGluIHVzaW5n
IFNraWEgd2lsbCBzaG93IHlvdSB0aGUgaGludGVkIG91dGxpbmVzIGZvciB0aGUgc21hbGxlciBz
aXplLApAQCAtMjU2LDEwICsyNjgsNiBAQAogICAgIGlmIChjb250ZXh0LT5maWxsUGF0dGVybigp
IHx8IGNvbnRleHQtPnN0cm9rZVBhdHRlcm4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgLy8gQ2hlY2sgZm9yIHNoYWRvdyBlZmZlY3RzLgotICAgIGlmIChjb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+Z2V0RHJhd0xvb3BlcigpICYmICghd2luZG93c0NhbkhhbmRsZURyYXdUZXh0
U2hhZG93KGNvbnRleHQpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAgICAgaWYgKCFjb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+aXNOYXRpdmVGb250UmVuZGVyaW5nQWxsb3dlZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM2Miw3ICszNzAsNyBAQAogICAgIH0KICAgICBi
b29sIGRpZEZpbGwgPSBmYWxzZTsKIAotICAgIGlmICgodGV4dE1vZGUgJiBUZXh0TW9kZUZpbGwp
ICYmIFNrQ29sb3JHZXRBKHBhaW50LmdldENvbG9yKCkpKSB7CisgICAgaWYgKCh0ZXh0TW9kZSAm
IFRleHRNb2RlRmlsbCkgJiYgKFNrQ29sb3JHZXRBKHBhaW50LmdldENvbG9yKCkpIHx8IHBhaW50
LmdldExvb3BlcigpKSkgewogICAgICAgICBpZiAoIXNraWFEcmF3VGV4dChoZm9udCwgZGMsIHBs
YXRmb3JtQ29udGV4dCwgKm9yaWdpbiwgJnBhaW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAmZ2x5cGhzWzBdLCAmYWR2YW5jZXNbMF0sICZvZmZzZXRzWzBdLCBudW1HbHlwaHMpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89052</attachid>
            <date>2011-04-11 12:30:04 -0700</date>
            <delta_ts>2011-04-11 17:31:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57584-20110411153003.patch</filename>
            <type>text/plain</type>
            <size>9824</size>
            <attacher name="Justin Novosad">junov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNDc1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDQtMTEgIEp1c3RpbiBO
b3Zvc2FkICA8anVub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gVGV4dCBhbnRpLWFsaWFzaW5nIGZhaWxz
IHdoZW4gcmVuZGVyaW5nIHRleHQgd2l0aCBzaGFkb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NTg0CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJh
d0dseXBoc1dpbik6IG5ldyBzdGF0aWMgZnVuY3Rpb24sIGNvZGUgZmFjdG9yZWQtb3V0CisgICAg
ICAgIGZyb20gV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocworICAgICAgICAoV2ViQ29yZTo6Rm9u
dDo6ZHJhd0dseXBocyk6IG1heSBzZXBhcmF0ZSBmb250IHJlbmRlcmluZyBpbnRvIHR3bworICAg
ICAgICBwYXNzZXMgdG8gYWxsb3cgZm9yZWdyb3VuZCBnbHlwaHMgdG8gYmUgcmVuZGVyZWQgd2l0
aCBHREkgd2hlbiBTa2lhIAorICAgICAgICBpcyByZXF1aXJlZCBmb3IgcmVuZGVyaW5nIHNoYWRv
d3MKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OndpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyk6CisgICAgICAg
IE1vZGlmaWVkIG1ldGhvZCBzbyB0aGF0IGl0IGRvZXMgbm90IGFzc3VtZSBhIHNoYWRvdyBpcyBw
cmVzZW50LCBhbmQKKyAgICAgICAgcmV0dXJucyB0cnVlIGlmIHRoZXJlIGlzIG5vIHNoYWRvdyAo
R0RJIGNhbiBkcmF3ICdubyBzaGFkb3cnKQorICAgICAgICAoV2ViQ29yZTo6d2luZG93c0Nhbkhh
bmRsZVRleHREcmF3aW5nKToKKyAgICAgICAgRmFjdG9yZWQgb3V0IGludG8gc3ViIG1ldGhvZHMg
c28gdGhhdCB0aGUgdGhlIHNoYWRvdyBhbmQgZm9yZWdvdW5kCisgICAgICAgIGdseXBoIHByb3Bl
cnRpZXMgY2FuIGJlIHRlc3RlZCBzZXBhcmF0ZWx5IGluZGVwZW5kZW50bHkuCisgICAgICAgIChX
ZWJDb3JlOjp3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KToKKyAgICAg
ICAgTmV3IG1ldGhvZCByZXR1cm5zIHRydWUgaWYgdGhlIGZvcmVncm91bmQgZ2x5cGggb25seSBo
YXMgZWZmZWN0CisgICAgICAgIHRoYXQgY2FuIGJlIGRyYXcgd2l0aCBHREkKKyAgICAgICAgKFdl
YkNvcmU6OnBhaW50U2tpYVRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEv
U2tpYUZvbnRXaW4uaDoKKwogMjAxMS0wNC0xMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCShyZXZpc2lvbiA4MzE4NSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3NCwyMSArMzc0LDE0IEBAIGJvb2wgRm9udDo6Y2FuRXhwYW5kQXJvdW5k
SWRlb2dyYXBoc0luQ28KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgRm9udDo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKLSAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwKLSAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgaW50
IGZyb20sCi0gICAgICAgICAgICAgICAgICAgICAgaW50IG51bUdseXBocywKLSAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKLXsKK3N0YXRpYyB2b2lk
IGRyYXdHbHlwaHNXaW4oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBmcm9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbnVtR2x5cGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50
JiBwb2ludCkgewogICAgIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnByZXBh
cmVGb3JTb2Z0d2FyZURyYXcoKTsKIAotICAgIFNrQ29sb3IgY29sb3IgPSBncmFwaGljc0NvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5lZmZlY3RpdmVGaWxsQ29sb3IoKTsKLSAgICB1bnNpZ25l
ZCBjaGFyIGFscGhhID0gU2tDb2xvckdldEEoY29sb3IpOwotICAgIC8vIFNraXAgMTAwJSB0cmFu
c3BhcmVudCB0ZXh0OyBubyBuZWVkIHRvIGRyYXcgYW55dGhpbmcuCi0gICAgaWYgKCFhbHBoYSAm
JiBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRTdHJva2VTdHlsZSgpID09
IE5vU3Ryb2tlKQotICAgICAgICByZXR1cm47Ci0KICAgICBUcmFuc3BhcmVuY3lBd2FyZUdseXBo
UGFpbnRlciBwYWludGVyKGdyYXBoaWNzQ29udGV4dCwgZm9udCwgZ2x5cGhCdWZmZXIsIGZyb20s
IG51bUdseXBocywgcG9pbnQpOwogCiAgICAgLy8gV2UgZHJhdyB0aGUgZ2x5cGhzIGluIGNodW5r
cyB0byBhdm9pZCBoYXZpbmcgdG8gZG8gYSBoZWFwIGFsbG9jYXRpb24gZm9yCkBAIC00NDksNiAr
NDQyLDM5IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGcKICAgICB9
CiB9CiAKK3ZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwK
KyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgaW50IGZyb20sCisgICAgICAgICAgICAgICAgICAgICAgaW50
IG51bUdseXBocywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCkgY29uc3QKK3sKKyAgICBTa0NvbG9yIGNvbG9yID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+ZWZmZWN0aXZlRmlsbENvbG9yKCk7CisgICAgdW5zaWduZWQgY2hhciBhbHBo
YSA9IFNrQ29sb3JHZXRBKGNvbG9yKTsKKyAgICAvLyBTa2lwIDEwMCUgdHJhbnNwYXJlbnQgdGV4
dDsgbm8gbmVlZCB0byBkcmF3IGFueXRoaW5nLgorICAgIGlmICghYWxwaGEgJiYgZ3JhcGhpY3ND
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0U3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9rZSAm
JiAhZ3JhcGhpY3NDb250ZXh0LT5oYXNTaGFkb3coKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
ICghYWxwaGEgfHwgd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4
dCkgfHwgIXdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFkb3coZ3JhcGhpY3ND
b250ZXh0KSkgeworICAgICAgICBkcmF3R2x5cGhzV2luKGdyYXBoaWNzQ29udGV4dCwgZm9udCwg
Z2x5cGhCdWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIC8vIERyYXcgaW4gdHdvIHBhc3Nlczogc2tpYSBmb3IgdGhlIHNoYWRvdywgR0RJ
IGZvciBmb3JlZ3JvdW5kIHRleHQKKyAgICAvLyBwYXNzMTogc2hhZG93ICh3aWxsIHVzZSBza2lh
KQorICAgIGdyYXBoaWNzQ29udGV4dC0+c2F2ZSgpOworICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0
RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCwgZ3JhcGhpY3NDb250ZXh0LT5maWxsQ29sb3JT
cGFjZSgpKTsKKyAgICBkcmF3R2x5cGhzV2luKGdyYXBoaWNzQ29udGV4dCwgZm9udCwgZ2x5cGhC
dWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQpOworICAgIGdyYXBoaWNzQ29udGV4dC0+cmVz
dG9yZSgpOworICAgIC8vIHBhc3MyOiBmb3JlZ3JvdW5kIHRleHQgKHdpbGwgdXNlIEdESSkKKyAg
ICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OworICAgIGZsb2F0IHNoYWRvd0JsdXI7CisgICAgQ29s
b3Igc2hhZG93Q29sb3I7CisgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOworICAgIGdy
YXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93
Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOworICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hhZG93
KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgQ29sb3I6OnRyYW5zcGFyZW50LCBzaGFkb3dDb2xv
clNwYWNlKTsKKyAgICBkcmF3R2x5cGhzV2luKGdyYXBoaWNzQ29udGV4dCwgZm9udCwgZ2x5cGhC
dWZmZXIsIGZyb20sIG51bUdseXBocywgcG9pbnQpOworICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0
U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9y
U3BhY2UpOworfQorCiBGbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvckNvbXBsZXhUZXh0
KGNvbnN0IFRleHRSdW4mIHJ1biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBoLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAJKHJldmlzaW9uIDgz
MTg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMCwxMSArMjMwLDIzIEBAIGJvb2wgd2luZG93c0Nh
bkhhbmRsZURyYXdUZXh0U2hhZG93KEdyYXAKICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3Bh
Y2U7CiAKICAgICBib29sIGhhc1NoYWRvdyA9IGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZz
ZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKTsKLSAgICByZXR1
cm4gKGhhc1NoYWRvdyAmJiAoc2hhZG93Qmx1ciA9PSAwKSAmJiAoc2hhZG93Q29sb3IuYWxwaGEo
KSA9PSAyNTUpICYmIChjb250ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpOworICAg
IHJldHVybiAhaGFzU2hhZG93IHx8ICghc2hhZG93Qmx1ciAmJiAoc2hhZG93Q29sb3IuYWxwaGEo
KSA9PSAyNTUpICYmIChjb250ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpOwogfQog
CiBib29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQpCiB7CisgICAgaWYgKCF3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93
KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBDaGVjayBmb3Igc2hh
ZG93IGVmZmVjdHMuCisgICAgaWYgKCF3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coY29u
dGV4dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFkb3coR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KQorewogICAgIC8vIENoZWNrIGZvciBub24tdHJhbnNsYXRpb24gdHJhbnNm
b3Jtcy4gU29tZXRpbWVzIHpvb21zIHdpbGwgbG9vayBiZXR0ZXIgaW4KICAgICAvLyBTa2lhLCBh
bmQgc29tZXRpbWVzIGJldHRlciBpbiBXaW5kb3dzLiBUaGUgbWFpbiBwcm9ibGVtIGlzIHRoYXQg
em9vbWluZwogICAgIC8vIGluIHVzaW5nIFNraWEgd2lsbCBzaG93IHlvdSB0aGUgaGludGVkIG91
dGxpbmVzIGZvciB0aGUgc21hbGxlciBzaXplLApAQCAtMjU2LDEwICsyNjgsNiBAQCBib29sIHdp
bmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljCiAgICAgaWYgKGNvbnRleHQtPmZpbGxQ
YXR0ZXJuKCkgfHwgY29udGV4dC0+c3Ryb2tlUGF0dGVybigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAvLyBDaGVjayBmb3Igc2hhZG93IGVmZmVjdHMuCi0gICAgaWYgKGNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5nZXREcmF3TG9vcGVyKCkgJiYgKCF3aW5kb3dzQ2FuSGFuZGxl
RHJhd1RleHRTaGFkb3coY29udGV4dCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KICAgICBp
ZiAoIWNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5pc05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxv
d2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzYyLDcgKzM3MCw3IEBAIGJvb2wg
cGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnQKICAgICB9CiAgICAgYm9vbCBkaWRG
aWxsID0gZmFsc2U7CiAKLSAgICBpZiAoKHRleHRNb2RlICYgVGV4dE1vZGVGaWxsKSAmJiBTa0Nv
bG9yR2V0QShwYWludC5nZXRDb2xvcigpKSkgeworICAgIGlmICgodGV4dE1vZGUgJiBUZXh0TW9k
ZUZpbGwpICYmIChTa0NvbG9yR2V0QShwYWludC5nZXRDb2xvcigpKSB8fCBwYWludC5nZXRMb29w
ZXIoKSkpIHsKICAgICAgICAgaWYgKCFza2lhRHJhd1RleHQoaGZvbnQsIGRjLCBwbGF0Zm9ybUNv
bnRleHQsICpvcmlnaW4sICZwYWludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdseXBo
c1swXSwgJmFkdmFuY2VzWzBdLCAmb2Zmc2V0c1swXSwgbnVtR2x5cGhzKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvU2tpYUZvbnRXaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL1NraWFGb250V2luLmgJKHJldmlzaW9uIDgzMTg1KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Niw2ICs3NiwxMCBAQCBib29sIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhH
cmFwCiAvLyBSZXR1cm5zIHRydWUgaWYgYWR2YW5jZWQgZm9udCByZW5kZXJpbmcgaXMgcmVjb21t
ZW5kZWQuCiBib29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljc0NvbnRleHQq
KTsKIAorLy8gUmV0dXJucyB0cnVlIGlmIGFkdmFuY2VkIGZvbnQgcmVuZGVyaW5nIGlzIHJlY29t
bWVuZGVkIGlmIHNoYWRvd3MgYXJlCisvLyBkaXNyZWdhcmRlZC4KK2Jvb2wgd2luZG93c0Nhbkhh
bmRsZVRleHREcmF3aW5nV2l0aG91dFNoYWRvdyhHcmFwaGljc0NvbnRleHQqKTsKKwogLy8gTm90
ZSB0aGF0IHRoZSBvZmZzZXRzIHBhcmFtZXRlciBpcyBvcHRpb25hbC4gIElmIG5vdCBOVUxMIGl0
IHJlcHJlc2VudHMgYQogLy8gcGVyIGdseXBoIG9mZnNldCAoc3VjaCBhcyByZXR1cm5lZCBieSBT
Y3JpcHRQbGFjZSBXaW5kb3dzIEFQSSBmdW5jdGlvbikuCiAvLwpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
ODM0NzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMS0wNC0xMSAgSnVzdGluIE5vdm9zYWQgIDxqdW5vdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9t
aXVtXSBUZXh0IGFudGktYWxpYXNpbmcgZmFpbHMgd2hlbiByZW5kZXJpbmcgdGV4dCB3aXRoIHNo
YWRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc1
ODQKKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoK
KyAgICAgICAgVGVtcG9hcmF5IHRlc3QgZmFpbHVyZXMgdGhhdCB3aWxsIG5lZWQgdG8gYmUgcmVi
YXNlbGluZWQKKwogMjAxMS0wNC0xMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAko
cmV2aXNpb24gODMxODUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY4OSw2ICs2ODksMTYgQEAgQlVHQ1Iz
MjczIE1BQyA6IHBsYXRmb3JtL21hYy9lZGl0aW5nL2lucAogQlVHQ1IzMjczIE1BQyA6IHBsYXRm
b3JtL21hYy9lZGl0aW5nL2lucHV0L2ZpcnN0cmVjdGZvcmNoYXJhY3RlcnJhbmdlLXBsYWluLmh0
bWwgPSBGQUlMIFBBU1MKIEJVR0NSMzI3MyBNQUMgOiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1
dC9yYW5nZS1mb3ItZW1wdHktZG9jdW1lbnQuaHRtbCA9IEZBSUwgUEFTUwogCisvLyBOZWVkIHJl
YmFzZWxpbmUKK0JVR1dLNTc1ODQgV0lOIDogZmFzdC9tdWx0aWNvbC9zaGFkb3ctYnJlYWtpbmcu
aHRtbCA9IElNQUdFCitCVUdXSzU3NTg0IFdJTiA6IGZhc3QvdGV4dC9zaGFkb3ctdHJhbnNsdWNl
bnQtZmlsbC5odG1sID0gSU1BR0UKK0JVR1dLNTc1ODQgV0lOIDogZmFzdC90cmFuc2Zvcm1zL3No
YWRvd3MuaHRtbCA9IElNQUdFCitCVUdXSzU3NTg0IFdJTiA6IHN2Zy9jc3Mvc2hhZG93LWNoYW5n
ZXMuc3ZnID0gSU1BR0UKK0JVR1dLNTc1ODQgV0lOIDogdHJhbnNpdGlvbnMvc3ZnLXRleHQtc2hh
ZG93LXRyYW5zaXRpb24uaHRtbCA9IElNQUdFCitCVUdXSzU3NTg0IFdJTiA6IHN2Zy9jc3MvY29t
cG9zaXRlLXNoYWRvdy10ZXh0LnN2ZyA9IElNQUdFCitCVUdXSzU3NTg0IFdJTiA6IHN2Zy9jc3Mv
Z3JvdXAtd2l0aC1zaGFkb3cuc3ZnID0gSU1BR0UKK0JVR1dLNTc1ODQgV0lOIDogc3ZnL2Nzcy90
ZXh0LXNoYWRvdy1tdWx0aXBsZS54aHRtbCA9IElNQUdFCisKIC8vIFRoZXNlIHRlc3RzIGFsc28g
dXNlIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlLCBidXQgdGhleSBnZW5lcmF0ZSBzbGlnaHRs
eQogLy8gZGlmZmVyZW50IHZhbHVlcy4KIEJVR0NSMzI3MyA6IGVkaXRpbmcvc2VsZWN0aW9uLzU4
MjUzNTAtMS5odG1sID0gVEVYVAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>