<?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>51874</bug_id>
          
          <creation_ts>2011-01-04 08:11:38 -0800</creation_ts>
          <short_desc>[GTK] Port slider painting to GtkStyleContext</short_desc>
          <delta_ts>2011-01-07 06:01:00 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          <dependson>51764</dependson>
          <blocked>50820</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>328995</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-04 08:11:38 -0800</bug_when>
    <thetext>This depends on bug #51764 since the patch for stock icons contains the initial GtkStyleContext port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328999</commentid>
    <comment_count>1</comment_count>
      <attachid>77889</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-04 08:16:13 -0800</bug_when>
    <thetext>Created attachment 77889
Use GtkStyleContext to paint sliders</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329036</commentid>
    <comment_count>2</comment_count>
      <attachid>77889</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-04 10:16:41 -0800</bug_when>
    <thetext>Comment on attachment 77889
Use GtkStyleContext to paint sliders

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

Looks great, but I think it makes sense to create a RenderThemeGtk::adjustMediaSliderThumbSize. See below.

&gt; WebCore/platform/gtk/RenderThemeGtk3.cpp:621
&gt; +    gint sliderWidth, sliderLength, troughBorder;
&gt; +    gint focusWidth, focusPad;

Please put these all on one line.

&gt; WebCore/platform/gtk/RenderThemeGtk3.cpp:628
&gt; +                                0);

Doesn&apos;t this produce a warning?

&gt; WebCore/platform/gtk/RenderThemeGtk3.cpp:660
&gt;  #if ENABLE(VIDEO)
&gt; -    if (part == MediaSliderThumbPart) {
&gt; -        o-&gt;style()-&gt;setWidth(Length(m_mediaSliderThumbWidth, Fixed));
&gt; -        o-&gt;style()-&gt;setHeight(Length(m_mediaSliderThumbHeight, Fixed));
&gt; -        return;
&gt; -    }
&gt; -    if (part == MediaVolumeSliderThumbPart)
&gt; -        return;
&gt; +        if (part == MediaSliderThumbPart) {
&gt; +            renderObject-&gt;style()-&gt;setWidth(Length(m_mediaSliderThumbWidth, Fixed));
&gt; +            renderObject-&gt;style()-&gt;setHeight(Length(m_mediaSliderThumbHeight, Fixed));
&gt; +        }
&gt;  #endif

Instead of using a switch statement here and duplicating this logic between RenderThemeGtk2 and RenderThemeGtk3, let&apos;s take the approach that RenderThemeMac.mm takes, but put RenderThemeGtk::adjustMediaSliderThumbSize in the platform-independent file. That way we can avoid duplicating this section.

&gt; WebCore/platform/gtk/RenderThemeGtk3.cpp:680
&gt; +            renderObject-&gt;style()-&gt;setWidth(Length((focusWidth + focusPad+ troughBorder) * 2 + sliderWidth, Fixed));

There is a space missing after focusPad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329037</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-04 10:20:37 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 77889 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77889&amp;action=review
&gt; 
&gt; Looks great, but I think it makes sense to create a RenderThemeGtk::adjustMediaSliderThumbSize. See below.
&gt; 
&gt; &gt; WebCore/platform/gtk/RenderThemeGtk3.cpp:621
&gt; &gt; +    gint sliderWidth, sliderLength, troughBorder;
&gt; &gt; +    gint focusWidth, focusPad;
&gt; 
&gt; Please put these all on one line.

Ok

&gt; &gt; WebCore/platform/gtk/RenderThemeGtk3.cpp:628
&gt; &gt; +                                0);
&gt; 
&gt; Doesn&apos;t this produce a warning?

No.

&gt; &gt; WebCore/platform/gtk/RenderThemeGtk3.cpp:660
&gt; &gt;  #if ENABLE(VIDEO)
&gt; &gt; -    if (part == MediaSliderThumbPart) {
&gt; &gt; -        o-&gt;style()-&gt;setWidth(Length(m_mediaSliderThumbWidth, Fixed));
&gt; &gt; -        o-&gt;style()-&gt;setHeight(Length(m_mediaSliderThumbHeight, Fixed));
&gt; &gt; -        return;
&gt; &gt; -    }
&gt; &gt; -    if (part == MediaVolumeSliderThumbPart)
&gt; &gt; -        return;
&gt; &gt; +        if (part == MediaSliderThumbPart) {
&gt; &gt; +            renderObject-&gt;style()-&gt;setWidth(Length(m_mediaSliderThumbWidth, Fixed));
&gt; &gt; +            renderObject-&gt;style()-&gt;setHeight(Length(m_mediaSliderThumbHeight, Fixed));
&gt; &gt; +        }
&gt; &gt;  #endif
&gt; 
&gt; Instead of using a switch statement here and duplicating this logic between RenderThemeGtk2 and RenderThemeGtk3, let&apos;s take the approach that RenderThemeMac.mm takes, but put RenderThemeGtk::adjustMediaSliderThumbSize in the platform-independent file. That way we can avoid duplicating this section.

Ok, I&apos;ll look at the mac code then. 

&gt; &gt; WebCore/platform/gtk/RenderThemeGtk3.cpp:680
&gt; &gt; +            renderObject-&gt;style()-&gt;setWidth(Length((focusWidth + focusPad+ troughBorder) * 2 + sliderWidth, Fixed));
&gt; 
&gt; There is a space missing after focusPad.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329499</commentid>
    <comment_count>4</comment_count>
      <attachid>77986</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-05 03:40:21 -0800</bug_when>
    <thetext>Created attachment 77986
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329718</commentid>
    <comment_count>5</comment_count>
      <attachid>78026</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-05 12:18:00 -0800</bug_when>
    <thetext>Created attachment 78026
Patch moving focus width and focus pad outside of the slider rect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329722</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-05 12:19:14 -0800</bug_when>
    <thetext>Attachment 78026 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/platform/gtk/RenderThemeGtk.cpp&apos;, u&apos;WebCore/platform/gtk/RenderThemeGtk.h&apos;, u&apos;WebCore/platform/gtk/RenderThemeGtk2.cpp&apos;, u&apos;WebCore/platform/gtk/RenderThemeGtk3.cpp&apos;]&quot; exit_code: 1
WebCore/platform/gtk/RenderThemeGtk3.cpp:114:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/gtk/RenderThemeGtk3.cpp:318:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/gtk/RenderThemeGtk3.cpp:372:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 3 in 5 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>329724</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-01-05 12:24:14 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=78026) [details]
&gt; Patch moving focus width and focus pad outside of the slider rect

This updated version of the patch has a few changes:
1. Focus width and focus padding are now drawn outside the slider rect, which makes calculating the size of slides pieces much more straight-forward. This is perfectly valid as long as you let WebCore know via adjustRepaintRect, I think.
2. Use NULL as the sentinel for calls to gtk_style_context_get_style. Zero doesn&apos;t produce a warnings, but can lead to crashes on 64-bit machines. Thus we should always use NULL.
3. Remove the static_casts wrapping gktTextDirection calls. They are no longer needed.

Let me know if I&apos;ve futzed anything up too badly! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330682</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-07 01:22:17 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; Created an attachment (id=78026) [details] [details]
&gt; &gt; Patch moving focus width and focus pad outside of the slider rect
&gt; 
&gt; This updated version of the patch has a few changes:
&gt; 1. Focus width and focus padding are now drawn outside the slider rect, which makes calculating the size of slides pieces much more straight-forward. This is perfectly valid as long as you let WebCore know via adjustRepaintRect, I think.

Yes, it works. 

&gt; 2. Use NULL as the sentinel for calls to gtk_style_context_get_style. Zero doesn&apos;t produce a warnings, but can lead to crashes on 64-bit machines. Thus we should always use NULL.

Great, never liked using 0 instead of NULL, at least there&apos;s an exception here :-)

&gt; 3. Remove the static_casts wrapping gktTextDirection calls. They are no longer needed.

Right.

&gt; Let me know if I&apos;ve futzed anything up too badly! :)

The only problem is that the slider thumb is painted outside the slider track, you still need to take into account the trough border to make the thumb fit into the slider track.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330683</commentid>
    <comment_count>9</comment_count>
      <attachid>78216</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-07 01:25:47 -0800</bug_when>
    <thetext>Created attachment 78216
Updated patch taking into account the trough border</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330684</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-07 01:27:58 -0800</bug_when>
    <thetext>Attachment 78216 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/platform/gtk/RenderThemeGtk.cpp&apos;, u&apos;WebCore/platform/gtk/RenderThemeGtk.h&apos;, u&apos;WebCore/platform/gtk/RenderThemeGtk2.cpp&apos;, u&apos;WebCore/platform/gtk/RenderThemeGtk3.cpp&apos;]&quot; exit_code: 1
WebCore/platform/gtk/RenderThemeGtk3.cpp:114:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/gtk/RenderThemeGtk3.cpp:318:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/gtk/RenderThemeGtk3.cpp:342:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/platform/gtk/RenderThemeGtk3.cpp:378:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 4 in 5 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>330743</commentid>
    <comment_count>11</comment_count>
      <attachid>78216</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2011-01-07 05:48:21 -0800</bug_when>
    <thetext>Comment on attachment 78216
Updated patch taking into account the trough border

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330745</commentid>
    <comment_count>12</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-01-07 05:59:19 -0800</bug_when>
    <thetext>Committed r75241: &lt;http://trac.webkit.org/changeset/75241&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77889</attachid>
            <date>2011-01-04 08:16:13 -0800</date>
            <delta_ts>2011-01-05 03:40:21 -0800</delta_ts>
            <desc>Use GtkStyleContext to paint sliders</desc>
            <filename>style-context-sliders.diff</filename>
            <type>text/plain</type>
            <size>9914</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWUxZWQ1OC4uMDdkOWZlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wMS0wNCAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gUG9ydCBzbGlkZXIgcGFpbnRpbmcgdG8gR3Rr
U3R5bGVDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MTg3NAorCisgICAgICAgIFVzZSBHdGtTdHlsZUNvbnRleHQgQVBJIHRvIHBhaW50IHNs
aWRlcnMgd2hlbiBidWlsZGluZyB3aXRoIEdUSysKKyAgICAgICAgMy54LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cy4gVGhpcyBzaG91bGQgbm90IGNoYW5nZSBmdW5jdGlvbmFsaXR5LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUd0azo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKToKKwogMjAxMS0wMS0wMiAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFNp
bW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1l
R3RrMy5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCmluZGV4
IDRiNDMwMjkuLmJjZjhkMmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRl
clRoZW1lR3RrMy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsz
LmNwcApAQCAtNTcyLDk0ICs1NzIsMTE5IEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50VGV4
dEZpZWxkKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sCiAgICAg
cmV0dXJuIHBhaW50UmVuZGVyT2JqZWN0KE1PWl9HVEtfRU5UUlksIG9iamVjdCwgaW5mby5jb250
ZXh0LCByZWN0KTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUcmFjayhS
ZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmpl
Y3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiB7Ci0gICAgaWYgKGluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDb250cm9sUGFydCBwYXJ0ID0gb2JqZWN0LT5z
dHlsZSgpLT5hcHBlYXJhbmNlKCk7CisgICAgQ29udHJvbFBhcnQgcGFydCA9IHJlbmRlck9iamVj
dC0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOwogICAgIEFTU0VSVChwYXJ0ID09IFNsaWRlckhvcml6
b250YWxQYXJ0IHx8IHBhcnQgPT0gU2xpZGVyVmVydGljYWxQYXJ0KTsKIAotICAgIC8vIFdlIHNo
cmluayB0aGUgdHJvdWdoIHJlY3Qgc2xpZ2h0bHkgdG8gbWFrZSByb29tIGZvciB0aGUgZm9jdXMg
aW5kaWNhdG9yLgotICAgIEludFJlY3QgdHJvdWdoUmVjdChJbnRQb2ludCgpLCByZWN0LnNpemUo
KSk7IC8vIFRoaXMgaXMgcmVsYXRpdmUgdG8gcmVjdC4KLSAgICBHdGtXaWRnZXQqIHdpZGdldCA9
IDA7Ci0gICAgaWYgKHBhcnQgPT0gU2xpZGVyVmVydGljYWxQYXJ0KSB7Ci0gICAgICAgIHdpZGdl
dCA9IGd0a1ZTY2FsZSgpOwotICAgICAgICB0cm91Z2hSZWN0LmluZmxhdGVZKC1ndGtfd2lkZ2V0
X2dldF9zdHlsZSh3aWRnZXQpLT55dGhpY2tuZXNzKTsKLSAgICB9IGVsc2UgewotICAgICAgICB3
aWRnZXQgPSBndGtIU2NhbGUoKTsKLSAgICAgICAgdHJvdWdoUmVjdC5pbmZsYXRlWCgtZ3RrX3dp
ZGdldF9nZXRfc3R5bGUod2lkZ2V0KS0+eHRoaWNrbmVzcyk7Ci0gICAgfQotICAgIGd0a193aWRn
ZXRfc2V0X2RpcmVjdGlvbih3aWRnZXQsIGd0a1RleHREaXJlY3Rpb24ob2JqZWN0LT5zdHlsZSgp
LT5kaXJlY3Rpb24oKSkpOworICAgIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCA9IGdldFN0eWxl
Q29udGV4dChwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBHVEtfVFlQRV9IU0NB
TEUgOiBHVEtfVFlQRV9WU0NBTEUpOworICAgIGd0a19zdHlsZV9jb250ZXh0X3NhdmUoY29udGV4
dCk7CisKKyAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfZGlyZWN0aW9uKGNvbnRleHQsIHN0YXRp
Y19jYXN0PEd0a1RleHREaXJlY3Rpb24+KGd0a1RleHREaXJlY3Rpb24ocmVuZGVyT2JqZWN0LT5z
dHlsZSgpLT5kaXJlY3Rpb24oKSkpKTsKKyAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3Mo
Y29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX1NDQUxFKTsKKyAgICBndGtfc3R5bGVfY29udGV4dF9h
ZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX1RST1VHSCk7CisKKyAgICBnaW50IGZv
Y3VzV2lkdGgsIGZvY3VzUGFkOworICAgIGd0a19zdHlsZV9jb250ZXh0X2dldF9zdHlsZShjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9jdXMtbGluZS13aWR0aCIs
ICZmb2N1c1dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9jdXMtcGFk
ZGluZyIsICZmb2N1c1BhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Cisg
ICAgSW50UmVjdCBzbGlkZXJSZWN0ID0gcmVjdDsKKyAgICBzbGlkZXJSZWN0LmluZmxhdGUoLShm
b2N1c1dpZHRoICsgZm9jdXNQYWQpKTsKKyAgICBpZiAoIWlzRW5hYmxlZChyZW5kZXJPYmplY3Qp
IHx8IGlzUmVhZE9ubHlDb250cm9sKHJlbmRlck9iamVjdCkpCisgICAgICAgIGd0a19zdHlsZV9j
b250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBHVEtfU1RBVEVfRkxBR19JTlNFTlNJVElWRSk7CiAK
LSAgICBXaWRnZXRSZW5kZXJpbmdDb250ZXh0IHdpZGdldENvbnRleHQoaW5mby5jb250ZXh0LCBy
ZWN0KTsKLSAgICB3aWRnZXRDb250ZXh0Lmd0a1BhaW50Qm94KHRyb3VnaFJlY3QsIHdpZGdldCwg
R1RLX1NUQVRFX0FDVElWRSwgR1RLX1NIQURPV19PVVQsICJ0cm91Z2giKTsKLSAgICBpZiAoaXNG
b2N1c2VkKG9iamVjdCkpCi0gICAgICAgIHdpZGdldENvbnRleHQuZ3RrUGFpbnRGb2N1cyhJbnRS
ZWN0KEludFBvaW50KCksIHJlY3Quc2l6ZSgpKSwgd2lkZ2V0LCBnZXRHdGtTdGF0ZVR5cGUob2Jq
ZWN0KSwgInRyb3VnaCIpOworICAgIGd0a19yZW5kZXJfYmFja2dyb3VuZChjb250ZXh0LCBwYWlu
dEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHNsaWRlclJlY3QueCgpLCBzbGlkZXJS
ZWN0LnkoKSwgc2xpZGVyUmVjdC53aWR0aCgpLCBzbGlkZXJSZWN0LmhlaWdodCgpKTsKKyAgICBn
dGtfcmVuZGVyX2ZyYW1lKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSwgc2xpZGVyUmVjdC54KCksIHNsaWRlclJlY3QueSgpLCBzbGlkZXJSZWN0LndpZHRoKCks
IHNsaWRlclJlY3QuaGVpZ2h0KCkpOworCisgICAgaWYgKGlzRm9jdXNlZChyZW5kZXJPYmplY3Qp
KQorICAgICAgICBndGtfcmVuZGVyX2ZvY3VzKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKSwgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCkpOworCisgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKIAog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJU
aHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUaHVtYihSZW5k
ZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxl
ZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDb250cm9sUGFydCBwYXJ0ID0gb2Jq
ZWN0LT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7CisgICAgQ29udHJvbFBhcnQgcGFydCA9IHJlbmRl
ck9iamVjdC0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOwogICAgIEFTU0VSVChwYXJ0ID09IFNsaWRl
clRodW1iSG9yaXpvbnRhbFBhcnQgfHwgcGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCk7
CiAKLSAgICBHdGtXaWRnZXQqIHdpZGdldCA9IDA7Ci0gICAgY29uc3QgY2hhciogZGV0YWlsID0g
MDsKLSAgICBHdGtPcmllbnRhdGlvbiBvcmllbnRhdGlvbjsKLSAgICBpZiAocGFydCA9PSBTbGlk
ZXJUaHVtYlZlcnRpY2FsUGFydCkgewotICAgICAgICB3aWRnZXQgPSBndGtWU2NhbGUoKTsKLSAg
ICAgICAgZGV0YWlsID0gInZzY2FsZSI7Ci0gICAgICAgIG9yaWVudGF0aW9uID0gR1RLX09SSUVO
VEFUSU9OX1ZFUlRJQ0FMOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHdpZGdldCA9IGd0a0hTY2Fs
ZSgpOwotICAgICAgICBkZXRhaWwgPSAiaHNjYWxlIjsKLSAgICAgICAgb3JpZW50YXRpb24gPSBH
VEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTDsKLSAgICB9Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGly
ZWN0aW9uKHdpZGdldCwgZ3RrVGV4dERpcmVjdGlvbihvYmplY3QtPnN0eWxlKCktPmRpcmVjdGlv
bigpKSk7Ci0KLSAgICAvLyBPbmx5IHNvbWUgdGhlbWVzIGhhdmUgc2xpZGVyIHRodW1icyByZXNw
b25kIHRvIGNsaWNrcyBhbmQgc29tZSBkb24ndC4gVGhpcyBpbmZvcm1hdGlvbiBpcwotICAgIC8v
IGdhdGhlcmVkIHZpYSB0aGUgJ2FjdGl2YXRlLXNsaWRlcicgcHJvcGVydHksIGJ1dCBpdCdzIGRl
cHJlY2F0ZWQgaW4gR1RLKyAyLjIyIGFuZCByZW1vdmVkIGluCi0gICAgLy8gR1RLKyAzLnguIFRo
ZSBkcmF3YmFjayBvZiBub3QgaG9ub3JpbmcgaXQgaXMgdGhhdCBzbGlkZXIgdGh1bWJzIGNoYW5n
ZSBjb2xvciB3aGVuIHlvdSBjbGljawotICAgIC8vIG9uIHRoZW0uIAotICAgIEludFJlY3QgdGh1
bWJSZWN0KEludFBvaW50KCksIHJlY3Quc2l6ZSgpKTsKLSAgICBXaWRnZXRSZW5kZXJpbmdDb250
ZXh0IHdpZGdldENvbnRleHQoaW5mby5jb250ZXh0LCByZWN0KTsKLSAgICB3aWRnZXRDb250ZXh0
Lmd0a1BhaW50U2xpZGVyKHRodW1iUmVjdCwgd2lkZ2V0LCBnZXRHdGtTdGF0ZVR5cGUob2JqZWN0
KSwgR1RLX1NIQURPV19PVVQsIGRldGFpbCwgb3JpZW50YXRpb24pOworICAgIEd0a1N0eWxlQ29u
dGV4dCogY29udGV4dCA9IGdldFN0eWxlQ29udGV4dChwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpv
bnRhbFBhcnQgPyBHVEtfVFlQRV9IU0NBTEUgOiBHVEtfVFlQRV9WU0NBTEUpOworICAgIGd0a19z
dHlsZV9jb250ZXh0X3NhdmUoY29udGV4dCk7CisKKyAgICBndGtfc3R5bGVfY29udGV4dF9zZXRf
ZGlyZWN0aW9uKGNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1RleHREaXJlY3Rpb24+KGd0a1RleHRE
aXJlY3Rpb24ocmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5kaXJlY3Rpb24oKSkpKTsKKyAgICBndGtf
c3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX1NDQUxFKTsK
KyAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NMQVNT
X1NMSURFUik7CisKKyAgICBnaW50IHNsaWRlcldpZHRoLCBzbGlkZXJMZW5ndGgsIHRyb3VnaEJv
cmRlcjsKKyAgICBnaW50IGZvY3VzV2lkdGgsIGZvY3VzUGFkOworICAgIGd0a19zdHlsZV9jb250
ZXh0X2dldF9zdHlsZShjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c2xpZGVyLXdpZHRoIiwgJnNsaWRlcldpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAic2xpZGVyLWxlbmd0aCIsICZzbGlkZXJMZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0cm91Z2gtYm9yZGVyIiwgJnRyb3VnaEJvcmRlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImZvY3VzLWxpbmUtd2lkdGgiLCAmZm9jdXNXaWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvY3VzLXBhZGRpbmciLCAmZm9jdXNQYWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworCisgICAgSW50UmVjdCBzbGlk
ZXJSZWN0ID0gcmVjdDsKKyAgICBzbGlkZXJSZWN0LmluZmxhdGUoLShmb2N1c1dpZHRoICsgZm9j
dXNQYWQgKyB0cm91Z2hCb3JkZXIpKTsKKworICAgIGd1aW50IGZsYWdzID0gMDsKKyAgICBpZiAo
IWlzRW5hYmxlZChyZW5kZXJPYmplY3QpIHx8IGlzUmVhZE9ubHlDb250cm9sKHJlbmRlck9iamVj
dCkpCisgICAgICAgIGZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0lOU0VOU0lUSVZFOworICAgIGVs
c2UgaWYgKGlzSG92ZXJlZChyZW5kZXJPYmplY3QpKQorICAgICAgICBmbGFncyB8PSBHVEtfU1RB
VEVfRkxBR19QUkVMSUdIVDsKKyAgICBpZiAoaXNQcmVzc2VkKHJlbmRlck9iamVjdCkpCisgICAg
ICAgIGZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0FDVElWRTsKKyAgICBndGtfc3R5bGVfY29udGV4
dF9zZXRfc3RhdGUoY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrU3RhdGVGbGFncz4oZmxhZ3MpKTsK
KworICAgIGd0a19yZW5kZXJfc2xpZGVyKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgc2xpZGVyUmVjdC54KCksIHNsaWRlclJlY3QueSgpLCBzbGlkZXJSZWN0
LndpZHRoKCksIHNsaWRlclJlY3QuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgcGFy
dCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0ID8gR1RLX09SSUVOVEFUSU9OX0hPUklaT05U
QUwgOiBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOworCisgICAgZ3RrX3N0eWxlX2NvbnRleHRf
cmVzdG9yZShjb250ZXh0KTsKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJU
aGVtZUd0azo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlck9iamVjdCogbykgY29uc3QKK3Zv
aWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqIHJl
bmRlck9iamVjdCkgY29uc3QKIHsKLSAgICBDb250cm9sUGFydCBwYXJ0ID0gby0+c3R5bGUoKS0+
YXBwZWFyYW5jZSgpOworICAgIENvbnRyb2xQYXJ0IHBhcnQgPSByZW5kZXJPYmplY3QtPnN0eWxl
KCktPmFwcGVhcmFuY2UoKTsKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAgICBjYXNlIE1lZGlhU2xp
ZGVyVGh1bWJQYXJ0OgogI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAocGFydCA9PSBNZWRpYVNs
aWRlclRodW1iUGFydCkgewotICAgICAgICBvLT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgobV9t
ZWRpYVNsaWRlclRodW1iV2lkdGgsIEZpeGVkKSk7Ci0gICAgICAgIG8tPnN0eWxlKCktPnNldEhl
aWdodChMZW5ndGgobV9tZWRpYVNsaWRlclRodW1iSGVpZ2h0LCBGaXhlZCkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIGlmIChwYXJ0ID09IE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQYXJ0
KQotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChwYXJ0ID09IE1lZGlhU2xpZGVyVGh1bWJQ
YXJ0KSB7CisgICAgICAgICAgICByZW5kZXJPYmplY3QtPnN0eWxlKCktPnNldFdpZHRoKExlbmd0
aChtX21lZGlhU2xpZGVyVGh1bWJXaWR0aCwgRml4ZWQpKTsKKyAgICAgICAgICAgIHJlbmRlck9i
amVjdC0+c3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aChtX21lZGlhU2xpZGVyVGh1bWJIZWlnaHQs
IEZpeGVkKSk7CisgICAgICAgIH0KICNlbmRpZgotCi0gICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBw
YXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBndGtIU2NhbGUoKSA6IGd0a1ZTY2Fs
ZSgpOwotICAgIGludCBsZW5ndGggPSAwLCB3aWR0aCA9IDA7Ci0gICAgZ3RrX3dpZGdldF9zdHls
ZV9nZXQod2lkZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICJzbGlkZXJfbGVuZ3RoIiwg
Jmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAic2xpZGVyX3dpZHRoIiwgJndpZHRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotCi0gICAgaWYgKHBhcnQgPT0gU2xp
ZGVyVGh1bWJIb3Jpem9udGFsUGFydCkgewotICAgICAgICBvLT5zdHlsZSgpLT5zZXRXaWR0aChM
ZW5ndGgobGVuZ3RoLCBGaXhlZCkpOwotICAgICAgICBvLT5zdHlsZSgpLT5zZXRIZWlnaHQoTGVu
Z3RoKHdpZHRoLCBGaXhlZCkpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydDoKKyAgICBjYXNlIFNsaWRlclRodW1iVmVy
dGljYWxQYXJ0OiB7CisgICAgICAgIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCA9IGdldFN0eWxl
Q29udGV4dChwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBHVEtfVFlQRV9IU0NB
TEUgOiBHVEtfVFlQRV9WU0NBTEUpOworCisgICAgICAgIGdpbnQgc2xpZGVyV2lkdGgsIHNsaWRl
ckxlbmd0aCwgdHJvdWdoQm9yZGVyOworICAgICAgICBnaW50IGZvY3VzV2lkdGgsIGZvY3VzUGFk
OworICAgICAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfc3R5bGUoY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbGlkZXItd2lkdGgiLCAmc2xpZGVyV2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xpZGVyLWxlbmd0aCIsICZz
bGlkZXJMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJvdWdo
LWJvcmRlciIsICZ0cm91Z2hCb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZm9jdXMtbGluZS13aWR0aCIsICZmb2N1c1dpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZvY3VzLXBhZGRpbmciLCAmZm9jdXNQYWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKworICAgICAgICBpZiAocGFydCA9PSBTbGlk
ZXJUaHVtYkhvcml6b250YWxQYXJ0KSB7CisgICAgICAgICAgICByZW5kZXJPYmplY3QtPnN0eWxl
KCktPnNldFdpZHRoKExlbmd0aChzbGlkZXJMZW5ndGgsIEZpeGVkKSk7CisgICAgICAgICAgICBy
ZW5kZXJPYmplY3QtPnN0eWxlKCktPnNldEhlaWdodChMZW5ndGgoKGZvY3VzV2lkdGggKyBmb2N1
c1BhZCArIHRyb3VnaEJvcmRlcikgKiAyICsgc2xpZGVyV2lkdGgsIEZpeGVkKSk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICByZW5kZXJPYmplY3QtPnN0eWxlKCktPnNldFdpZHRoKExl
bmd0aCgoZm9jdXNXaWR0aCArIGZvY3VzUGFkKyB0cm91Z2hCb3JkZXIpICogMiArIHNsaWRlcldp
ZHRoLCBGaXhlZCkpOworICAgICAgICAgICAgcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5zZXRIZWln
aHQoTGVuZ3RoKHNsaWRlckxlbmd0aCwgRml4ZWQpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIEFTU0VS
VChwYXJ0ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0KTsKLSAgICBvLT5zdHlsZSgpLT5zZXRX
aWR0aChMZW5ndGgod2lkdGgsIEZpeGVkKSk7Ci0gICAgby0+c3R5bGUoKS0+c2V0SGVpZ2h0KExl
bmd0aChsZW5ndGgsIEZpeGVkKSk7CiB9CiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQo=
</data>
<flag name="review"
          id="69112"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77986</attachid>
            <date>2011-01-05 03:40:21 -0800</date>
            <delta_ts>2011-01-05 12:17:56 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>style-context-sliders2.diff</filename>
            <type>text/plain</type>
            <size>12425</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDI3M2Q2Mi4uYTk2NmVkNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOCBAQAogMjAxMS0wMS0wNSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gUG9ydCBzbGlkZXIgcGFpbnRpbmcgdG8gR3Rr
U3R5bGVDb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MTg3NAorCisgICAgICAgIFVzZSBHdGtTdHlsZUNvbnRleHQgQVBJIHRvIHBhaW50IHNs
aWRlcnMgd2hlbiBidWlsZGluZyB3aXRoIEdUSysKKyAgICAgICAgMy54LiBBbHNvIG1vdmUgdGhl
IGNvZGUgdG8gYWRqdXN0IG1lZGlhIHNsaWRlciB0byBpdHMgb3duIG1ldGhvZAorICAgICAgICBp
biBSZW5kZXJUaGVtZUd0ay5jcHAgc2luY2UgaXQncyBjb21tb24gdG8gYm90aCBndGsgMiBhbmQg
My4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgc2hvdWxkIG5vdCBjaGFuZ2UgZnVuY3Rp
b25hbGl0eS4KKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6YWRqdXN0TWVkaWFTbGlkZXJUaHVtYlNp
emUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5oOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVHdGs6OmFkanVzdFNsaWRlclRodW1iU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0
azo6cGFpbnRTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6
cGFpbnRTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6YWRq
dXN0U2xpZGVyVGh1bWJTaXplKToKKworMjAxMS0wMS0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmlu
c29uLgogCiAgICAgICAgIFtHVEtdIFVzZSBHdGtTdHlsZUNvbnRleHQgdG8gZ2V0IHBsYXRmb3Jt
IGNvbG9ycwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDcwNGE1
NWMuLmMxOTQ5NDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1l
R3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAg
LTQzNiw2ICs0MzYsMTYgQEAgU3RyaW5nIFJlbmRlclRoZW1lR3RrOjpleHRyYU1lZGlhQ29udHJv
bHNTdHlsZVNoZWV0KCkKICAgICByZXR1cm4gU3RyaW5nKG1lZGlhQ29udHJvbHNHdGtVc2VyQWdl
bnRTdHlsZVNoZWV0LCBzaXplb2YobWVkaWFDb250cm9sc0d0a1VzZXJBZ2VudFN0eWxlU2hlZXQp
KTsKIH0KIAordm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0TWVkaWFTbGlkZXJUaHVtYlNpemUo
UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpIGNvbnN0Cit7CisgICAgQ29udHJvbFBhcnQgcGFy
dCA9IHJlbmRlck9iamVjdC0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOworCisgICAgaWYgKHBhcnQg
PT0gTWVkaWFTbGlkZXJUaHVtYlBhcnQpIHsKKyAgICAgICAgcmVuZGVyT2JqZWN0LT5zdHlsZSgp
LT5zZXRXaWR0aChMZW5ndGgobV9tZWRpYVNsaWRlclRodW1iV2lkdGgsIEZpeGVkKSk7CisgICAg
ICAgIHJlbmRlck9iamVjdC0+c3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aChtX21lZGlhU2xpZGVy
VGh1bWJIZWlnaHQsIEZpeGVkKSk7CisgICAgfQorfQorCiBib29sIFJlbmRlclRoZW1lR3RrOjpw
YWludE1lZGlhQnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IGNoYXIqIGljb25OYW1lKQog
ewogICAgIEdSZWZQdHI8R2RrUGl4YnVmPiBpY29uID0gZ2V0U3RvY2tJY29uKEdUS19UWVBFX0NP
TlRBSU5FUiwgaWNvbk5hbWUsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5k
ZXJUaGVtZUd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAppbmRl
eCBlMDJhNjJkLi5mODUyY2JlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5k
ZXJUaGVtZUd0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgK
QEAgLTEzOCw2ICsxMzgsNyBAQCBwcm90ZWN0ZWQ6CiAjaWYgRU5BQkxFKFZJREVPKQogICAgIHZv
aWQgaW5pdE1lZGlhQ29sb3JzKCk7CiAgICAgdm9pZCBpbml0TWVkaWFCdXR0b25zKCk7CisgICAg
dm9pZCBhZGp1c3RNZWRpYVNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgYm9vbCBwYWlu
dE1lZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jik7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwCmluZGV4IDE2ODQ5ZDQuLmU1MWY2ZDUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcApAQCAtMzAyLDEzICszMDIsMTAgQEAg
dm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlck9iamVjdCog
bykgY29uc3QKIHsKICAgICBDb250cm9sUGFydCBwYXJ0ID0gby0+c3R5bGUoKS0+YXBwZWFyYW5j
ZSgpOwogI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAocGFydCA9PSBNZWRpYVNsaWRlclRodW1i
UGFydCkgewotICAgICAgICBvLT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgobV9tZWRpYVNsaWRl
clRodW1iV2lkdGgsIEZpeGVkKSk7Ci0gICAgICAgIG8tPnN0eWxlKCktPnNldEhlaWdodChMZW5n
dGgobV9tZWRpYVNsaWRlclRodW1iSGVpZ2h0LCBGaXhlZCkpOworICAgIGlmIChwYXJ0ID09IE1l
ZGlhU2xpZGVyVGh1bWJQYXJ0IHx8IHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQp
IHsKKyAgICAgICAgYWRqdXN0TWVkaWFTbGlkZXJUaHVtYlNpemUobyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgaWYgKHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQpCi0g
ICAgICAgIHJldHVybjsKICNlbmRpZgogCiAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBwYXJ0ID09
IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBndGtIU2NhbGUoKSA6IGd0a1ZTY2FsZSgpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKaW5kZXggYTM3YWJjNy4uNmY4
OTgzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCkBAIC0yNzMs
OTQgKzI3MywxMDggQEAgYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRUZXh0RmllbGQoUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywKICAgICByZXR1cm4gcGFpbnRS
ZW5kZXJPYmplY3QoTU9aX0dUS19FTlRSWSwgb2JqZWN0LCBpbmZvLmNvbnRleHQsIHJlY3QpOwog
fQogCi1ib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCog
b2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29s
IFJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogcmVuZGVyT2Jq
ZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
LSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBvYmplY3QtPnN0eWxlKCktPmFwcGVh
cmFuY2UoKTsKKyAgICBDb250cm9sUGFydCBwYXJ0ID0gcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5h
cHBlYXJhbmNlKCk7CiAgICAgQVNTRVJUKHBhcnQgPT0gU2xpZGVySG9yaXpvbnRhbFBhcnQgfHwg
cGFydCA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpOwogCi0gICAgLy8gV2Ugc2hyaW5rIHRoZSB0cm91
Z2ggcmVjdCBzbGlnaHRseSB0byBtYWtlIHJvb20gZm9yIHRoZSBmb2N1cyBpbmRpY2F0b3IuCi0g
ICAgSW50UmVjdCB0cm91Z2hSZWN0KEludFBvaW50KCksIHJlY3Quc2l6ZSgpKTsgLy8gVGhpcyBp
cyByZWxhdGl2ZSB0byByZWN0LgotICAgIEd0a1dpZGdldCogd2lkZ2V0ID0gMDsKLSAgICBpZiAo
cGFydCA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpIHsKLSAgICAgICAgd2lkZ2V0ID0gZ3RrVlNjYWxl
KCk7Ci0gICAgICAgIHRyb3VnaFJlY3QuaW5mbGF0ZVkoLWd0a193aWRnZXRfZ2V0X3N0eWxlKHdp
ZGdldCktPnl0aGlja25lc3MpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHdpZGdldCA9IGd0a0hT
Y2FsZSgpOwotICAgICAgICB0cm91Z2hSZWN0LmluZmxhdGVYKC1ndGtfd2lkZ2V0X2dldF9zdHls
ZSh3aWRnZXQpLT54dGhpY2tuZXNzKTsKLSAgICB9Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0
aW9uKHdpZGdldCwgZ3RrVGV4dERpcmVjdGlvbihvYmplY3QtPnN0eWxlKCktPmRpcmVjdGlvbigp
KSk7CisgICAgR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0ID0gZ2V0U3R5bGVDb250ZXh0KHBhcnQg
PT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCA/IEdUS19UWVBFX0hTQ0FMRSA6IEdUS19UWVBF
X1ZTQ0FMRSk7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2ZShjb250ZXh0KTsKIAotICAgIFdp
ZGdldFJlbmRlcmluZ0NvbnRleHQgd2lkZ2V0Q29udGV4dChpbmZvLmNvbnRleHQsIHJlY3QpOwot
ICAgIHdpZGdldENvbnRleHQuZ3RrUGFpbnRCb3godHJvdWdoUmVjdCwgd2lkZ2V0LCBHVEtfU1RB
VEVfQUNUSVZFLCBHVEtfU0hBRE9XX09VVCwgInRyb3VnaCIpOwotICAgIGlmIChpc0ZvY3VzZWQo
b2JqZWN0KSkKLSAgICAgICAgd2lkZ2V0Q29udGV4dC5ndGtQYWludEZvY3VzKEludFJlY3QoSW50
UG9pbnQoKSwgcmVjdC5zaXplKCkpLCB3aWRnZXQsIGdldEd0a1N0YXRlVHlwZShvYmplY3QpLCAi
dHJvdWdoIik7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X2RpcmVjdGlvbihjb250ZXh0LCBz
dGF0aWNfY2FzdDxHdGtUZXh0RGlyZWN0aW9uPihndGtUZXh0RGlyZWN0aW9uKHJlbmRlck9iamVj
dC0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkpKSk7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2Ns
YXNzKGNvbnRleHQsIEdUS19TVFlMRV9DTEFTU19TQ0FMRSk7CisgICAgZ3RrX3N0eWxlX2NvbnRl
eHRfYWRkX2NsYXNzKGNvbnRleHQsIEdUS19TVFlMRV9DTEFTU19UUk9VR0gpOworCisgICAgZ2lu
dCBmb2N1c1dpZHRoLCBmb2N1c1BhZDsKKyAgICBndGtfc3R5bGVfY29udGV4dF9nZXRfc3R5bGUo
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvY3VzLWxpbmUtd2lk
dGgiLCAmZm9jdXNXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvY3Vz
LXBhZGRpbmciLCAmZm9jdXNQYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAp
OworICAgIEludFJlY3Qgc2xpZGVyUmVjdCA9IHJlY3Q7CisgICAgc2xpZGVyUmVjdC5pbmZsYXRl
KC0oZm9jdXNXaWR0aCArIGZvY3VzUGFkKSk7CisgICAgaWYgKCFpc0VuYWJsZWQocmVuZGVyT2Jq
ZWN0KSB8fCBpc1JlYWRPbmx5Q29udHJvbChyZW5kZXJPYmplY3QpKQorICAgICAgICBndGtfc3R5
bGVfY29udGV4dF9zZXRfc3RhdGUoY29udGV4dCwgR1RLX1NUQVRFX0ZMQUdfSU5TRU5TSVRJVkUp
OworCisgICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2xpZGVyUmVjdC54KCksIHNsaWRlclJlY3QueSgpLCBzbGlk
ZXJSZWN0LndpZHRoKCksIHNsaWRlclJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5kZXJfZnJh
bWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCBzbGlkZXJS
ZWN0LngoKSwgc2xpZGVyUmVjdC55KCksIHNsaWRlclJlY3Qud2lkdGgoKSwgc2xpZGVyUmVjdC5o
ZWlnaHQoKSk7CisKKyAgICBpZiAoaXNGb2N1c2VkKHJlbmRlck9iamVjdCkpCisgICAgICAgIGd0
a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4
dCgpLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisK
KyAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKGNvbnRleHQpOwogCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRodW1iKFJlbmRlck9i
amVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
Citib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKLSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBvYmplY3QtPnN0eWxlKCkt
PmFwcGVhcmFuY2UoKTsKKyAgICBDb250cm9sUGFydCBwYXJ0ID0gcmVuZGVyT2JqZWN0LT5zdHls
ZSgpLT5hcHBlYXJhbmNlKCk7CiAgICAgQVNTRVJUKHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9u
dGFsUGFydCB8fCBwYXJ0ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0KTsKIAotICAgIEd0a1dp
ZGdldCogd2lkZ2V0ID0gMDsKLSAgICBjb25zdCBjaGFyKiBkZXRhaWwgPSAwOwotICAgIEd0a09y
aWVudGF0aW9uIG9yaWVudGF0aW9uOwotICAgIGlmIChwYXJ0ID09IFNsaWRlclRodW1iVmVydGlj
YWxQYXJ0KSB7Ci0gICAgICAgIHdpZGdldCA9IGd0a1ZTY2FsZSgpOwotICAgICAgICBkZXRhaWwg
PSAidnNjYWxlIjsKLSAgICAgICAgb3JpZW50YXRpb24gPSBHVEtfT1JJRU5UQVRJT05fVkVSVElD
QUw7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2lkZ2V0ID0gZ3RrSFNjYWxlKCk7Ci0gICAgICAg
IGRldGFpbCA9ICJoc2NhbGUiOwotICAgICAgICBvcmllbnRhdGlvbiA9IEdUS19PUklFTlRBVElP
Tl9IT1JJWk9OVEFMOwotICAgIH0KLSAgICBndGtfd2lkZ2V0X3NldF9kaXJlY3Rpb24od2lkZ2V0
LCBndGtUZXh0RGlyZWN0aW9uKG9iamVjdC0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkpKTsKKyAgICBH
dGtTdHlsZUNvbnRleHQqIGNvbnRleHQgPSBnZXRTdHlsZUNvbnRleHQocGFydCA9PSBTbGlkZXJU
aHVtYkhvcml6b250YWxQYXJ0ID8gR1RLX1RZUEVfSFNDQUxFIDogR1RLX1RZUEVfVlNDQUxFKTsK
KyAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKGNvbnRleHQpOworCisgICAgZ3RrX3N0eWxlX2Nv
bnRleHRfc2V0X2RpcmVjdGlvbihjb250ZXh0LCBzdGF0aWNfY2FzdDxHdGtUZXh0RGlyZWN0aW9u
PihndGtUZXh0RGlyZWN0aW9uKHJlbmRlck9iamVjdC0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkpKSk7
CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGNvbnRleHQsIEdUS19TVFlMRV9DTEFT
U19TQ0FMRSk7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGNvbnRleHQsIEdUS19T
VFlMRV9DTEFTU19TTElERVIpOworCisgICAgZ2ludCBzbGlkZXJXaWR0aCwgc2xpZGVyTGVuZ3Ro
LCB0cm91Z2hCb3JkZXIsIGZvY3VzV2lkdGgsIGZvY3VzUGFkOworICAgIGd0a19zdHlsZV9jb250
ZXh0X2dldF9zdHlsZShjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c2xpZGVyLXdpZHRoIiwgJnNsaWRlcldpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAic2xpZGVyLWxlbmd0aCIsICZzbGlkZXJMZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0cm91Z2gtYm9yZGVyIiwgJnRyb3VnaEJvcmRlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImZvY3VzLWxpbmUtd2lkdGgiLCAmZm9jdXNXaWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvY3VzLXBhZGRpbmciLCAmZm9jdXNQYWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworCisgICAgSW50UmVjdCBzbGlk
ZXJSZWN0ID0gcmVjdDsKKyAgICBzbGlkZXJSZWN0LmluZmxhdGUoLShmb2N1c1dpZHRoICsgZm9j
dXNQYWQgKyB0cm91Z2hCb3JkZXIpKTsKKworICAgIGd1aW50IGZsYWdzID0gMDsKKyAgICBpZiAo
IWlzRW5hYmxlZChyZW5kZXJPYmplY3QpIHx8IGlzUmVhZE9ubHlDb250cm9sKHJlbmRlck9iamVj
dCkpCisgICAgICAgIGZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0lOU0VOU0lUSVZFOworICAgIGVs
c2UgaWYgKGlzSG92ZXJlZChyZW5kZXJPYmplY3QpKQorICAgICAgICBmbGFncyB8PSBHVEtfU1RB
VEVfRkxBR19QUkVMSUdIVDsKKyAgICBpZiAoaXNQcmVzc2VkKHJlbmRlck9iamVjdCkpCisgICAg
ICAgIGZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0FDVElWRTsKKyAgICBndGtfc3R5bGVfY29udGV4
dF9zZXRfc3RhdGUoY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrU3RhdGVGbGFncz4oZmxhZ3MpKTsK
KworICAgIGd0a19yZW5kZXJfc2xpZGVyKGNvbnRleHQsIHBhaW50SW5mby5jb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgc2xpZGVyUmVjdC54KCksIHNsaWRlclJlY3QueSgpLCBzbGlkZXJSZWN0
LndpZHRoKCksIHNsaWRlclJlY3QuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgcGFy
dCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0ID8gR1RLX09SSUVOVEFUSU9OX0hPUklaT05U
QUwgOiBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOworCisgICAgZ3RrX3N0eWxlX2NvbnRleHRf
cmVzdG9yZShjb250ZXh0KTsKIAotICAgIC8vIE9ubHkgc29tZSB0aGVtZXMgaGF2ZSBzbGlkZXIg
dGh1bWJzIHJlc3BvbmQgdG8gY2xpY2tzIGFuZCBzb21lIGRvbid0LiBUaGlzIGluZm9ybWF0aW9u
IGlzCi0gICAgLy8gZ2F0aGVyZWQgdmlhIHRoZSAnYWN0aXZhdGUtc2xpZGVyJyBwcm9wZXJ0eSwg
YnV0IGl0J3MgZGVwcmVjYXRlZCBpbiBHVEsrIDIuMjIgYW5kIHJlbW92ZWQgaW4KLSAgICAvLyBH
VEsrIDMueC4gVGhlIGRyYXdiYWNrIG9mIG5vdCBob25vcmluZyBpdCBpcyB0aGF0IHNsaWRlciB0
aHVtYnMgY2hhbmdlIGNvbG9yIHdoZW4geW91IGNsaWNrCi0gICAgLy8gb24gdGhlbS4gCi0gICAg
SW50UmVjdCB0aHVtYlJlY3QoSW50UG9pbnQoKSwgcmVjdC5zaXplKCkpOwotICAgIFdpZGdldFJl
bmRlcmluZ0NvbnRleHQgd2lkZ2V0Q29udGV4dChpbmZvLmNvbnRleHQsIHJlY3QpOwotICAgIHdp
ZGdldENvbnRleHQuZ3RrUGFpbnRTbGlkZXIodGh1bWJSZWN0LCB3aWRnZXQsIGdldEd0a1N0YXRl
VHlwZShvYmplY3QpLCBHVEtfU0hBRE9XX09VVCwgZGV0YWlsLCBvcmllbnRhdGlvbik7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RTbGlkZXJUaHVt
YlNpemUoUmVuZGVyT2JqZWN0KiBvKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0
U2xpZGVyVGh1bWJTaXplKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0KSBjb25zdAogewotICAg
IENvbnRyb2xQYXJ0IHBhcnQgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7CisgICAgQ29udHJv
bFBhcnQgcGFydCA9IHJlbmRlck9iamVjdC0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOwogI2lmIEVO
QUJMRShWSURFTykKLSAgICBpZiAocGFydCA9PSBNZWRpYVNsaWRlclRodW1iUGFydCkgewotICAg
ICAgICBvLT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgobV9tZWRpYVNsaWRlclRodW1iV2lkdGgs
IEZpeGVkKSk7Ci0gICAgICAgIG8tPnN0eWxlKCktPnNldEhlaWdodChMZW5ndGgobV9tZWRpYVNs
aWRlclRodW1iSGVpZ2h0LCBGaXhlZCkpOworICAgIGlmIChwYXJ0ID09IE1lZGlhU2xpZGVyVGh1
bWJQYXJ0IHx8IHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQpIHsKKyAgICAgICAg
YWRqdXN0TWVkaWFTbGlkZXJUaHVtYlNpemUocmVuZGVyT2JqZWN0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBpZiAocGFydCA9PSBNZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydCkKLSAg
ICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBHdGtXaWRnZXQqIHdpZGdldCA9IHBhcnQgPT0g
U2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCA/IGd0a0hTY2FsZSgpIDogZ3RrVlNjYWxlKCk7Ci0g
ICAgaW50IGxlbmd0aCA9IDAsIHdpZHRoID0gMDsKLSAgICBndGtfd2lkZ2V0X3N0eWxlX2dldCh3
aWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInNsaWRlcl9sZW5ndGgiLCAmbGVuZ3Ro
LAotICAgICAgICAgICAgICAgICAgICAgICAgICJzbGlkZXJfd2lkdGgiLCAmd2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0
ID0gZ2V0U3R5bGVDb250ZXh0KHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCA/IEdU
S19UWVBFX0hTQ0FMRSA6IEdUS19UWVBFX1ZTQ0FMRSk7CisKKyAgICBnaW50IHNsaWRlcldpZHRo
LCBzbGlkZXJMZW5ndGgsIHRyb3VnaEJvcmRlciwgZm9jdXNXaWR0aCwgZm9jdXNQYWQ7CisgICAg
Z3RrX3N0eWxlX2NvbnRleHRfZ2V0X3N0eWxlKGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJzbGlkZXItd2lkdGgiLCAmc2xpZGVyV2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJzbGlkZXItbGVuZ3RoIiwgJnNsaWRlckxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyb3VnaC1ib3JkZXIiLCAmdHJvdWdoQm9yZGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9jdXMtbGluZS13aWR0aCIsICZm
b2N1c1dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9jdXMtcGFkZGlu
ZyIsICZmb2N1c1BhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CiAKICAg
ICBpZiAocGFydCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KSB7Ci0gICAgICAgIG8tPnN0
eWxlKCktPnNldFdpZHRoKExlbmd0aChsZW5ndGgsIEZpeGVkKSk7Ci0gICAgICAgIG8tPnN0eWxl
KCktPnNldEhlaWdodChMZW5ndGgod2lkdGgsIEZpeGVkKSk7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgoc2xpZGVyTGVuZ3Ro
LCBGaXhlZCkpOworICAgICAgICByZW5kZXJPYmplY3QtPnN0eWxlKCktPnNldEhlaWdodChMZW5n
dGgoKGZvY3VzV2lkdGggKyBmb2N1c1BhZCArIHRyb3VnaEJvcmRlcikgKiAyICsgc2xpZGVyV2lk
dGgsIEZpeGVkKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVuZGVyT2JqZWN0LT5zdHlsZSgp
LT5zZXRXaWR0aChMZW5ndGgoKGZvY3VzV2lkdGggKyBmb2N1c1BhZCArIHRyb3VnaEJvcmRlcikg
KiAyICsgc2xpZGVyV2lkdGgsIEZpeGVkKSk7CisgICAgICAgIHJlbmRlck9iamVjdC0+c3R5bGUo
KS0+c2V0SGVpZ2h0KExlbmd0aChzbGlkZXJMZW5ndGgsIEZpeGVkKSk7CiAgICAgfQotICAgIEFT
U0VSVChwYXJ0ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0KTsKLSAgICBvLT5zdHlsZSgpLT5z
ZXRXaWR0aChMZW5ndGgod2lkdGgsIEZpeGVkKSk7Ci0gICAgby0+c3R5bGUoKS0+c2V0SGVpZ2h0
KExlbmd0aChsZW5ndGgsIEZpeGVkKSk7CiB9CiAKICNpZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78026</attachid>
            <date>2011-01-05 12:18:00 -0800</date>
            <delta_ts>2011-01-07 01:25:47 -0800</delta_ts>
            <desc>Patch moving focus width and focus pad outside of the slider rect</desc>
            <filename>bug-51874-20110105121759.patch</filename>
            <type>text/plain</type>
            <size>13435</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjBkNjcyYmQ1Y2I0MjdlNTIwNTFhZWQ3ZDg4YzhlMzU3ZWY5NDU4Ny4uZTUxOWJjYmU1YjgyZWJk
YWM3NWJmZTM4ODZjMTVlZjlmZjFiZjZiZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMS0wMS0wNSAgQ2Fy
bG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5z
b24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBbR1RLXSBQb3J0IHNsaWRlciBwYWludGluZyB0byBHdGtTdHls
ZUNvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUxODc0CisKKyAgICAgICAgVXNlIEd0a1N0eWxlQ29udGV4dCBBUEkgdG8gcGFpbnQgc2xpZGVy
cyB3aGVuIGJ1aWxkaW5nIHdpdGggR1RLKworICAgICAgICAzLnguIEFsc28gbW92ZSB0aGUgY29k
ZSB0byBhZGp1c3QgbWVkaWEgc2xpZGVyIHRvIGl0cyBvd24gbWV0aG9kCisgICAgICAgIGluIFJl
bmRlclRoZW1lR3RrLmNwcCBzaW5jZSBpdCdzIGNvbW1vbiB0byBib3RoIGd0ayAyIGFuZCAzLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBzaG91bGQgbm90IGNoYW5nZSBmdW5jdGlvbmFs
aXR5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjphZGp1c3RNZWRpYVNsaWRlclRodW1iU2l6ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUd0azo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
UmVuZGVyVGhlbWVHdGszLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpw
YWludFNsaWRlclRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWlu
dFNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjphZGp1c3RT
bGlkZXJUaHVtYlNpemUpOgorCiAyMDExLTAxLTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCmluZGV4IDcwNGE1NWNhOTQwMWIxMDU4YTM1NzU4YTIw
MTU5MTU3M2VkY2Q0ZTYuLmMxOTQ5NDYyODdiM2EzZjBmZTJiNWYzNWZlZDdhZmJhNzFhNWY2MGUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAKQEAgLTQzNiw2ICs0MzYs
MTYgQEAgU3RyaW5nIFJlbmRlclRoZW1lR3RrOjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0
KCkKICAgICByZXR1cm4gU3RyaW5nKG1lZGlhQ29udHJvbHNHdGtVc2VyQWdlbnRTdHlsZVNoZWV0
LCBzaXplb2YobWVkaWFDb250cm9sc0d0a1VzZXJBZ2VudFN0eWxlU2hlZXQpKTsKIH0KIAordm9p
ZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0TWVkaWFTbGlkZXJUaHVtYlNpemUoUmVuZGVyT2JqZWN0
KiByZW5kZXJPYmplY3QpIGNvbnN0Cit7CisgICAgQ29udHJvbFBhcnQgcGFydCA9IHJlbmRlck9i
amVjdC0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOworCisgICAgaWYgKHBhcnQgPT0gTWVkaWFTbGlk
ZXJUaHVtYlBhcnQpIHsKKyAgICAgICAgcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5zZXRXaWR0aChM
ZW5ndGgobV9tZWRpYVNsaWRlclRodW1iV2lkdGgsIEZpeGVkKSk7CisgICAgICAgIHJlbmRlck9i
amVjdC0+c3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aChtX21lZGlhU2xpZGVyVGh1bWJIZWlnaHQs
IEZpeGVkKSk7CisgICAgfQorfQorCiBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludE1lZGlhQnV0
dG9uKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IGNoYXIqIGljb25OYW1lKQogewogICAgIEdSZWZQ
dHI8R2RrUGl4YnVmPiBpY29uID0gZ2V0U3RvY2tJY29uKEdUS19UWVBFX0NPTlRBSU5FUiwgaWNv
bk5hbWUsCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaAppbmRleCBlMDJhNjJkNTBi
ZGE0MTFmZTY5NTE3NjMwYzM0Y2FkNjFkNmRkNDQxLi4xN2IzMWI1MjBkMGZhMDdkNTI3MDU3OGJj
MmM4YjYyZDA1YzRjYmRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJU
aGVtZUd0ay5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgKQEAg
LTU0LDYgKzU0LDggQEAgcHVibGljOgogICAgIC8vIEEgZ2VuZXJhbCBtZXRob2QgYXNraW5nIGlm
IGFueSBjb250cm9sIHRpbnRpbmcgaXMgc3VwcG9ydGVkIGF0IGFsbC4KICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2
aXJ0dWFsIHZvaWQgYWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0KiwgSW50UmVj
dCYpOworCiAgICAgLy8gQSBtZXRob2QgdG8gb2J0YWluIHRoZSBiYXNlbGluZSBwb3NpdGlvbiBm
b3IgYSAibGVhZiIgY29udHJvbC4gIFRoaXMgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYSBiYXNlbGlu
ZQogICAgIC8vIHBvc2l0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyBjaGls
ZCBjb250ZW50LiBDaGVja2JveGVzIGFuZCByYWRpbyBidXR0b25zIGFyZSBleGFtcGxlcyBvZgog
ICAgIC8vIGNvbnRyb2xzIHRoYXQgbmVlZCB0byBkbyB0aGlzLgpAQCAtMTM4LDYgKzE0MCw3IEBA
IHByb3RlY3RlZDoKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdm9pZCBpbml0TWVkaWFDb2xvcnMo
KTsKICAgICB2b2lkIGluaXRNZWRpYUJ1dHRvbnMoKTsKKyAgICB2b2lkIGFkanVzdE1lZGlhU2xp
ZGVyVGh1bWJTaXplKFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwYWlu
dE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jik7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFQbGF5QnV0dG9uKFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRNZWRpYU11dGVCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
UmVuZGVyVGhlbWVHdGsyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
Mi5jcHAKaW5kZXggMTY4NDlkNDIwMmQ2ZmM4Zjk4MmJmYTMwYmMyYzFlYTljZTIyNzJiYi4uZmQz
OTFiN2NlNzA2MjM0YTY5YmVmNWQ3NGZiMjVkYzIyMjE2ZTJmNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwCkBAIC01OSw2ICs1OSwxMCBAQCB2b2lkIFJlbmRlclRo
ZW1lR3RrOjppbml0TWVkaWFDb2xvcnMoKQogfQogI2VuZGlmCiAKK3ZvaWQgUmVuZGVyVGhlbWVH
dGs6OmFkanVzdFJlcGFpbnRSZWN0KGNvbnN0IFJlbmRlck9iamVjdCosIEludFJlY3QmKQorewor
fQorCiBHdGtTdGF0ZVR5cGUgUmVuZGVyVGhlbWVHdGs6OmdldEd0a1N0YXRlVHlwZShSZW5kZXJP
YmplY3QqIG9iamVjdCkKIHsKICAgICBpZiAoIWlzRW5hYmxlZChvYmplY3QpIHx8IGlzUmVhZE9u
bHlDb250cm9sKG9iamVjdCkpCkBAIC0zMDIsMTMgKzMwNiwxMCBAQCB2b2lkIFJlbmRlclRoZW1l
R3RrOjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyT2JqZWN0KiBvKSBjb25zdAogewogICAg
IENvbnRyb2xQYXJ0IHBhcnQgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7CiAjaWYgRU5BQkxF
KFZJREVPKQotICAgIGlmIChwYXJ0ID09IE1lZGlhU2xpZGVyVGh1bWJQYXJ0KSB7Ci0gICAgICAg
IG8tPnN0eWxlKCktPnNldFdpZHRoKExlbmd0aChtX21lZGlhU2xpZGVyVGh1bWJXaWR0aCwgRml4
ZWQpKTsKLSAgICAgICAgby0+c3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aChtX21lZGlhU2xpZGVy
VGh1bWJIZWlnaHQsIEZpeGVkKSk7CisgICAgaWYgKHBhcnQgPT0gTWVkaWFTbGlkZXJUaHVtYlBh
cnQgfHwgcGFydCA9PSBNZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydCkgeworICAgICAgICBhZGp1
c3RNZWRpYVNsaWRlclRodW1iU2l6ZShvKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBp
ZiAocGFydCA9PSBNZWRpYVZvbHVtZVNsaWRlclRodW1iUGFydCkKLSAgICAgICAgcmV0dXJuOwog
I2VuZGlmCiAKICAgICBHdGtXaWRnZXQqIHdpZGdldCA9IHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jp
em9udGFsUGFydCA/IGd0a0hTY2FsZSgpIDogZ3RrVlNjYWxlKCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUmVuZGVyVGhlbWVHdGszLmNwcAppbmRleCBhMzdhYmM3Njg2YmM2OWIxOGJlZTA0YzlmMGNl
ZmIzYzkxNGUwMDQ4Li4xMTAxMmUxNmQ4MjU5NDk1ZTNmNzAxNjkyNDM1YTJhMzg1NTIwMGMxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAKQEAgLTEwMSw2ICsxMDEs
MjQgQEAgdm9pZCBSZW5kZXJUaGVtZUd0azo6aW5pdE1lZGlhQ29sb3JzKCkKICAgICBtX3NsaWRl
clRodW1iQ29sb3IgPSBzdHlsZS0+YmdbR1RLX1NUQVRFX1NFTEVDVEVEXTsKIH0KIAordm9pZCBS
ZW5kZXJUaGVtZUd0azo6YWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5k
ZXJPYmplY3QsIEludFJlY3QmIHJlY3QpCit7CisgICAgQ29udHJvbFBhcnQgcGFydCA9IHJlbmRl
ck9iamVjdC0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOworICAgIHN3aXRjaCAocGFydCkgeworICAg
IGNhc2UgU2xpZGVyVmVydGljYWxQYXJ0OgorICAgIGNhc2UgU2xpZGVySG9yaXpvbnRhbFBhcnQ6
IHsKKyAgICAgICAgR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0ID0gZ2V0U3R5bGVDb250ZXh0KHBh
cnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCA/ICBHVEtfVFlQRV9IU0NBTEUgOiBHVEtf
VFlQRV9WU0NBTEUpOworICAgICAgICBnaW50IGZvY3VzV2lkdGgsIGZvY3VzUGFkOworICAgICAg
ICBndGtfc3R5bGVfY29udGV4dF9nZXRfc3R5bGUoY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJmb2N1cy1saW5lLXdpZHRoIiwgJmZvY3VzV2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9jdXMtcGFkZGluZyIsICZmb2N1c1Bh
ZCwgTlVMTCk7CisgICAgICAgIHJlY3QuaW5mbGF0ZShmb2N1c1dpZHRoICsgZm9jdXNQYWQpOwor
ICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIEd0a1N0YXRl
VHlwZSBSZW5kZXJUaGVtZUd0azo6Z2V0R3RrU3RhdGVUeXBlKFJlbmRlck9iamVjdCogb2JqZWN0
KQogewogICAgIGlmICghaXNFbmFibGVkKG9iamVjdCkgfHwgaXNSZWFkT25seUNvbnRyb2wob2Jq
ZWN0KSkKQEAgLTI3Myw5NCArMjkxLDkzIEBAIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50VGV4
dEZpZWxkKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sCiAgICAg
cmV0dXJuIHBhaW50UmVuZGVyT2JqZWN0KE1PWl9HVEtfRU5UUlksIG9iamVjdCwgaW5mby5jb250
ZXh0LCByZWN0KTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUcmFjayhS
ZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUd0azo6cGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmpl
Y3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiB7Ci0gICAgaWYgKGluZm8uY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDb250cm9sUGFydCBwYXJ0ID0gb2JqZWN0LT5z
dHlsZSgpLT5hcHBlYXJhbmNlKCk7CisgICAgQ29udHJvbFBhcnQgcGFydCA9IHJlbmRlck9iamVj
dC0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOwogICAgIEFTU0VSVChwYXJ0ID09IFNsaWRlckhvcml6
b250YWxQYXJ0IHx8IHBhcnQgPT0gU2xpZGVyVmVydGljYWxQYXJ0KTsKIAotICAgIC8vIFdlIHNo
cmluayB0aGUgdHJvdWdoIHJlY3Qgc2xpZ2h0bHkgdG8gbWFrZSByb29tIGZvciB0aGUgZm9jdXMg
aW5kaWNhdG9yLgotICAgIEludFJlY3QgdHJvdWdoUmVjdChJbnRQb2ludCgpLCByZWN0LnNpemUo
KSk7IC8vIFRoaXMgaXMgcmVsYXRpdmUgdG8gcmVjdC4KLSAgICBHdGtXaWRnZXQqIHdpZGdldCA9
IDA7Ci0gICAgaWYgKHBhcnQgPT0gU2xpZGVyVmVydGljYWxQYXJ0KSB7Ci0gICAgICAgIHdpZGdl
dCA9IGd0a1ZTY2FsZSgpOwotICAgICAgICB0cm91Z2hSZWN0LmluZmxhdGVZKC1ndGtfd2lkZ2V0
X2dldF9zdHlsZSh3aWRnZXQpLT55dGhpY2tuZXNzKTsKLSAgICB9IGVsc2UgewotICAgICAgICB3
aWRnZXQgPSBndGtIU2NhbGUoKTsKLSAgICAgICAgdHJvdWdoUmVjdC5pbmZsYXRlWCgtZ3RrX3dp
ZGdldF9nZXRfc3R5bGUod2lkZ2V0KS0+eHRoaWNrbmVzcyk7Ci0gICAgfQotICAgIGd0a193aWRn
ZXRfc2V0X2RpcmVjdGlvbih3aWRnZXQsIGd0a1RleHREaXJlY3Rpb24ob2JqZWN0LT5zdHlsZSgp
LT5kaXJlY3Rpb24oKSkpOworICAgIEd0a1N0eWxlQ29udGV4dCogY29udGV4dCA9IGdldFN0eWxl
Q29udGV4dChwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBHVEtfVFlQRV9IU0NB
TEUgOiBHVEtfVFlQRV9WU0NBTEUpOworICAgIGd0a19zdHlsZV9jb250ZXh0X3NhdmUoY29udGV4
dCk7CiAKLSAgICBXaWRnZXRSZW5kZXJpbmdDb250ZXh0IHdpZGdldENvbnRleHQoaW5mby5jb250
ZXh0LCByZWN0KTsKLSAgICB3aWRnZXRDb250ZXh0Lmd0a1BhaW50Qm94KHRyb3VnaFJlY3QsIHdp
ZGdldCwgR1RLX1NUQVRFX0FDVElWRSwgR1RLX1NIQURPV19PVVQsICJ0cm91Z2giKTsKLSAgICBp
ZiAoaXNGb2N1c2VkKG9iamVjdCkpCi0gICAgICAgIHdpZGdldENvbnRleHQuZ3RrUGFpbnRGb2N1
cyhJbnRSZWN0KEludFBvaW50KCksIHJlY3Quc2l6ZSgpKSwgd2lkZ2V0LCBnZXRHdGtTdGF0ZVR5
cGUob2JqZWN0KSwgInRyb3VnaCIpOworICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9kaXJlY3Rp
b24oY29udGV4dCwgZ3RrVGV4dERpcmVjdGlvbihyZW5kZXJPYmplY3QtPnN0eWxlKCktPmRpcmVj
dGlvbigpKSk7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGNvbnRleHQsIEdUS19T
VFlMRV9DTEFTU19TQ0FMRSk7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGNvbnRl
eHQsIEdUS19TVFlMRV9DTEFTU19UUk9VR0gpOworCisgICAgaWYgKCFpc0VuYWJsZWQocmVuZGVy
T2JqZWN0KSB8fCBpc1JlYWRPbmx5Q29udHJvbChyZW5kZXJPYmplY3QpKQorICAgICAgICBndGtf
c3R5bGVfY29udGV4dF9zZXRfc3RhdGUoY29udGV4dCwgR1RLX1NUQVRFX0ZMQUdfSU5TRU5TSVRJ
VkUpOworCisgICAgZ3RrX3JlbmRlcl9iYWNrZ3JvdW5kKGNvbnRleHQsIHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC54
KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOworICAgIGd0a19yZW5k
ZXJfZnJhbWUoY29udGV4dCwgcGFpbnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLAor
ICAgICAgICAgICAgICAgICAgICAgcmVjdC54KCksIHJlY3QueSgpLCByZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCkpOworCisgICAgaWYgKGlzRm9jdXNlZChyZW5kZXJPYmplY3QpKSB7CisgICAg
ICAgIGdpbnQgZm9jdXNXaWR0aCwgZm9jdXNQYWQ7CisgICAgICAgIGd0a19zdHlsZV9jb250ZXh0
X2dldF9zdHlsZShjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImZvY3VzLWxpbmUtd2lkdGgiLCAmZm9jdXNXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJmb2N1cy1wYWRkaW5nIiwgJmZvY3VzUGFkLCBOVUxMKTsKKyAgICAgICAg
SW50UmVjdCBmb2N1c1JlY3QocmVjdCk7CisgICAgICAgIGZvY3VzUmVjdC5pbmZsYXRlKGZvY3Vz
V2lkdGggKyBmb2N1c1BhZCk7CisgICAgICAgIGd0a19yZW5kZXJfZm9jdXMoY29udGV4dCwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvY3VzUmVjdC54KCksIGZvY3VzUmVjdC55KCksIGZvY3VzUmVjdC53aWR0aCgpLCBmb2N1
c1JlY3QuaGVpZ2h0KCkpOworICAgIH0KIAorICAgIGd0a19zdHlsZV9jb250ZXh0X3Jlc3RvcmUo
Y29udGV4dCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lR3RrOjpw
YWludFNsaWRlclRodW1iKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGlu
Zm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRl
clRodW1iKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50
SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWlu
dGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENvbnRyb2xQYXJ0
IHBhcnQgPSBvYmplY3QtPnN0eWxlKCktPmFwcGVhcmFuY2UoKTsKKyAgICBDb250cm9sUGFydCBw
YXJ0ID0gcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7CiAgICAgQVNTRVJUKHBh
cnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCB8fCBwYXJ0ID09IFNsaWRlclRodW1iVmVy
dGljYWxQYXJ0KTsKIAotICAgIEd0a1dpZGdldCogd2lkZ2V0ID0gMDsKLSAgICBjb25zdCBjaGFy
KiBkZXRhaWwgPSAwOwotICAgIEd0a09yaWVudGF0aW9uIG9yaWVudGF0aW9uOwotICAgIGlmIChw
YXJ0ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0KSB7Ci0gICAgICAgIHdpZGdldCA9IGd0a1ZT
Y2FsZSgpOwotICAgICAgICBkZXRhaWwgPSAidnNjYWxlIjsKLSAgICAgICAgb3JpZW50YXRpb24g
PSBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUw7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgd2lkZ2V0
ID0gZ3RrSFNjYWxlKCk7Ci0gICAgICAgIGRldGFpbCA9ICJoc2NhbGUiOwotICAgICAgICBvcmll
bnRhdGlvbiA9IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMOwotICAgIH0KLSAgICBndGtfd2lk
Z2V0X3NldF9kaXJlY3Rpb24od2lkZ2V0LCBndGtUZXh0RGlyZWN0aW9uKG9iamVjdC0+c3R5bGUo
KS0+ZGlyZWN0aW9uKCkpKTsKKyAgICBHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQgPSBnZXRTdHls
ZUNvbnRleHQocGFydCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0ID8gR1RLX1RZUEVfSFND
QUxFIDogR1RLX1RZUEVfVlNDQUxFKTsKKyAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKGNvbnRl
eHQpOworCisgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X2RpcmVjdGlvbihjb250ZXh0LCBndGtU
ZXh0RGlyZWN0aW9uKHJlbmRlck9iamVjdC0+c3R5bGUoKS0+ZGlyZWN0aW9uKCkpKTsKKyAgICBn
dGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX1NDQUxF
KTsKKyAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NM
QVNTX1NMSURFUik7CisKKyAgICBndWludCBmbGFncyA9IDA7CisgICAgaWYgKCFpc0VuYWJsZWQo
cmVuZGVyT2JqZWN0KSB8fCBpc1JlYWRPbmx5Q29udHJvbChyZW5kZXJPYmplY3QpKQorICAgICAg
ICBmbGFncyB8PSBHVEtfU1RBVEVfRkxBR19JTlNFTlNJVElWRTsKKyAgICBlbHNlIGlmIChpc0hv
dmVyZWQocmVuZGVyT2JqZWN0KSkKKyAgICAgICAgZmxhZ3MgfD0gR1RLX1NUQVRFX0ZMQUdfUFJF
TElHSFQ7CisgICAgaWYgKGlzUHJlc3NlZChyZW5kZXJPYmplY3QpKQorICAgICAgICBmbGFncyB8
PSBHVEtfU1RBVEVfRkxBR19BQ1RJVkU7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2V0X3N0YXRl
KGNvbnRleHQsIHN0YXRpY19jYXN0PEd0a1N0YXRlRmxhZ3M+KGZsYWdzKSk7CisKKyAgICBndGtf
cmVuZGVyX3NsaWRlcihjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCksIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLAorICAg
ICAgICAgICAgICAgICAgICAgIHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCA/IEdU
S19PUklFTlRBVElPTl9IT1JJWk9OVEFMIDogR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMKTsKKwor
ICAgIGd0a19zdHlsZV9jb250ZXh0X3Jlc3RvcmUoY29udGV4dCk7CiAKLSAgICAvLyBPbmx5IHNv
bWUgdGhlbWVzIGhhdmUgc2xpZGVyIHRodW1icyByZXNwb25kIHRvIGNsaWNrcyBhbmQgc29tZSBk
b24ndC4gVGhpcyBpbmZvcm1hdGlvbiBpcwotICAgIC8vIGdhdGhlcmVkIHZpYSB0aGUgJ2FjdGl2
YXRlLXNsaWRlcicgcHJvcGVydHksIGJ1dCBpdCdzIGRlcHJlY2F0ZWQgaW4gR1RLKyAyLjIyIGFu
ZCByZW1vdmVkIGluCi0gICAgLy8gR1RLKyAzLnguIFRoZSBkcmF3YmFjayBvZiBub3QgaG9ub3Jp
bmcgaXQgaXMgdGhhdCBzbGlkZXIgdGh1bWJzIGNoYW5nZSBjb2xvciB3aGVuIHlvdSBjbGljawot
ICAgIC8vIG9uIHRoZW0uIAotICAgIEludFJlY3QgdGh1bWJSZWN0KEludFBvaW50KCksIHJlY3Qu
c2l6ZSgpKTsKLSAgICBXaWRnZXRSZW5kZXJpbmdDb250ZXh0IHdpZGdldENvbnRleHQoaW5mby5j
b250ZXh0LCByZWN0KTsKLSAgICB3aWRnZXRDb250ZXh0Lmd0a1BhaW50U2xpZGVyKHRodW1iUmVj
dCwgd2lkZ2V0LCBnZXRHdGtTdGF0ZVR5cGUob2JqZWN0KSwgR1RLX1NIQURPV19PVVQsIGRldGFp
bCwgb3JpZW50YXRpb24pOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJUaGVt
ZUd0azo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlck9iamVjdCogbykgY29uc3QKK3ZvaWQg
UmVuZGVyVGhlbWVHdGs6OmFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqIHJlbmRl
ck9iamVjdCkgY29uc3QKIHsKLSAgICBDb250cm9sUGFydCBwYXJ0ID0gby0+c3R5bGUoKS0+YXBw
ZWFyYW5jZSgpOworICAgIENvbnRyb2xQYXJ0IHBhcnQgPSByZW5kZXJPYmplY3QtPnN0eWxlKCkt
PmFwcGVhcmFuY2UoKTsKICNpZiBFTkFCTEUoVklERU8pCi0gICAgaWYgKHBhcnQgPT0gTWVkaWFT
bGlkZXJUaHVtYlBhcnQpIHsKLSAgICAgICAgby0+c3R5bGUoKS0+c2V0V2lkdGgoTGVuZ3RoKG1f
bWVkaWFTbGlkZXJUaHVtYldpZHRoLCBGaXhlZCkpOwotICAgICAgICBvLT5zdHlsZSgpLT5zZXRI
ZWlnaHQoTGVuZ3RoKG1fbWVkaWFTbGlkZXJUaHVtYkhlaWdodCwgRml4ZWQpKTsKKyAgICBpZiAo
cGFydCA9PSBNZWRpYVNsaWRlclRodW1iUGFydCB8fCBwYXJ0ID09IE1lZGlhVm9sdW1lU2xpZGVy
VGh1bWJQYXJ0KSB7CisgICAgICAgIGFkanVzdE1lZGlhU2xpZGVyVGh1bWJTaXplKHJlbmRlck9i
amVjdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHBhcnQgPT0gTWVkaWFWb2x1
bWVTbGlkZXJUaHVtYlBhcnQpCi0gICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgR3RrV2lk
Z2V0KiB3aWRnZXQgPSBwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBndGtIU2Nh
bGUoKSA6IGd0a1ZTY2FsZSgpOwotICAgIGludCBsZW5ndGggPSAwLCB3aWR0aCA9IDA7Ci0gICAg
Z3RrX3dpZGdldF9zdHlsZV9nZXQod2lkZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICJz
bGlkZXJfbGVuZ3RoIiwgJmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAic2xpZGVy
X3dpZHRoIiwgJndpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotCisgICAg
Z2ludCBzbGlkZXJXaWR0aCwgc2xpZGVyTGVuZ3RoOworICAgIGd0a19zdHlsZV9jb250ZXh0X2dl
dF9zdHlsZShnZXRTdHlsZUNvbnRleHQocGFydCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0
ID8gR1RLX1RZUEVfSFNDQUxFIDogR1RLX1RZUEVfVlNDQUxFKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInNsaWRlci13aWR0aCIsICZzbGlkZXJXaWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInNsaWRlci1sZW5ndGgiLCAmc2xpZGVyTGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICBpZiAocGFydCA9PSBTbGlk
ZXJUaHVtYkhvcml6b250YWxQYXJ0KSB7Ci0gICAgICAgIG8tPnN0eWxlKCktPnNldFdpZHRoKExl
bmd0aChsZW5ndGgsIEZpeGVkKSk7Ci0gICAgICAgIG8tPnN0eWxlKCktPnNldEhlaWdodChMZW5n
dGgod2lkdGgsIEZpeGVkKSk7CisgICAgICAgIHJlbmRlck9iamVjdC0+c3R5bGUoKS0+c2V0V2lk
dGgoTGVuZ3RoKHNsaWRlckxlbmd0aCwgRml4ZWQpKTsKKyAgICAgICAgcmVuZGVyT2JqZWN0LT5z
dHlsZSgpLT5zZXRIZWlnaHQoTGVuZ3RoKHNsaWRlcldpZHRoLCBGaXhlZCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChwYXJ0ID09IFNsaWRlclRodW1iVmVydGljYWxQYXJ0
KTsKLSAgICBvLT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgod2lkdGgsIEZpeGVkKSk7Ci0gICAg
by0+c3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aChsZW5ndGgsIEZpeGVkKSk7CisgICAgcmVuZGVy
T2JqZWN0LT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgoc2xpZGVyV2lkdGgsIEZpeGVkKSk7Cisg
ICAgcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5zZXRIZWlnaHQoTGVuZ3RoKHNsaWRlckxlbmd0aCwg
Rml4ZWQpKTsKIH0KIAogI2lmIEVOQUJMRShQUk9HUkVTU19UQUcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78216</attachid>
            <date>2011-01-07 01:25:47 -0800</date>
            <delta_ts>2011-01-07 06:01:00 -0800</delta_ts>
            <desc>Updated patch taking into account the trough border</desc>
            <filename>style-context-slider3.diff</filename>
            <type>text/plain</type>
            <size>13308</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzRhNjAwZi4uM2E0YWI4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMS0wMS0wNyAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBbR1RLXSBQb3J0IHNsaWRlciBwYWludGluZyB0byBHdGtTdHlsZUNvbnRleHQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxODc0CisK
KyAgICAgICAgVXNlIEd0a1N0eWxlQ29udGV4dCBBUEkgdG8gcGFpbnQgc2xpZGVycyB3aGVuIGJ1
aWxkaW5nIHdpdGggR1RLKworICAgICAgICAzLnguIEFsc28gbW92ZSB0aGUgY29kZSB0byBhZGp1
c3QgbWVkaWEgc2xpZGVyIHRvIGl0cyBvd24gbWV0aG9kCisgICAgICAgIGluIFJlbmRlclRoZW1l
R3RrLmNwcCBzaW5jZSBpdCdzIGNvbW1vbiB0byBib3RoIGd0ayAyIGFuZCAzLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gVGhpcyBzaG91bGQgbm90IGNoYW5nZSBmdW5jdGlvbmFsaXR5LgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lR3RrOjphZGp1c3RNZWRpYVNsaWRlclRodW1iU2l6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1JlbmRlclRoZW1lR3RrMi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUd0azo6
YWRqdXN0U2xpZGVyVGh1bWJTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUmVuZGVyVGhl
bWVHdGszLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRl
clRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRo
dW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lR3RrOjphZGp1c3RTbGlkZXJUaHVt
YlNpemUpOgorCiAyMDExLTAxLTA2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5k
ZXJUaGVtZUd0ay5jcHAKaW5kZXggNzA0YTU1Yy4uYzE5NDk0NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1JlbmRlclRoZW1lR3RrLmNwcApAQCAtNDM2LDYgKzQzNiwxNiBAQCBTdHJpbmcgUmVuZGVy
VGhlbWVHdGs6OmV4dHJhTWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKQogICAgIHJldHVybiBTdHJp
bmcobWVkaWFDb250cm9sc0d0a1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRpYUNvbnRy
b2xzR3RrVXNlckFnZW50U3R5bGVTaGVldCkpOwogfQogCit2b2lkIFJlbmRlclRoZW1lR3RrOjph
ZGp1c3RNZWRpYVNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCkgY29u
c3QKK3sKKyAgICBDb250cm9sUGFydCBwYXJ0ID0gcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5hcHBl
YXJhbmNlKCk7CisKKyAgICBpZiAocGFydCA9PSBNZWRpYVNsaWRlclRodW1iUGFydCkgeworICAg
ICAgICByZW5kZXJPYmplY3QtPnN0eWxlKCktPnNldFdpZHRoKExlbmd0aChtX21lZGlhU2xpZGVy
VGh1bWJXaWR0aCwgRml4ZWQpKTsKKyAgICAgICAgcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5zZXRI
ZWlnaHQoTGVuZ3RoKG1fbWVkaWFTbGlkZXJUaHVtYkhlaWdodCwgRml4ZWQpKTsKKyAgICB9Cit9
CisKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVkaWFCdXR0b24oUmVuZGVyT2JqZWN0KiBy
ZW5kZXJPYmplY3QsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVj
dCwgY29uc3QgY2hhciogaWNvbk5hbWUpCiB7CiAgICAgR1JlZlB0cjxHZGtQaXhidWY+IGljb24g
PSBnZXRTdG9ja0ljb24oR1RLX1RZUEVfQ09OVEFJTkVSLCBpY29uTmFtZSwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9SZW5kZXJUaGVtZUd0ay5oCmluZGV4IGUwMmE2MmQuLjE3YjMxYjUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrLmgKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsuaApAQCAtNTQsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gQSBnZW5lcmFsIG1ldGhvZCBhc2tpbmcgaWYgYW55IGNvbnRyb2wgdGludGluZyBpcyBzdXBw
b3J0ZWQgYXQgYWxsLgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RSZXBhaW50UmVj
dChjb25zdCBSZW5kZXJPYmplY3QqLCBJbnRSZWN0Jik7CisKICAgICAvLyBBIG1ldGhvZCB0byBv
YnRhaW4gdGhlIGJhc2VsaW5lIHBvc2l0aW9uIGZvciBhICJsZWFmIiBjb250cm9sLiAgVGhpcyB3
aWxsIG9ubHkgYmUgdXNlZCBpZiBhIGJhc2VsaW5lCiAgICAgLy8gcG9zaXRpb24gY2Fubm90IGJl
IGRldGVybWluZWQgYnkgZXhhbWluaW5nIGNoaWxkIGNvbnRlbnQuIENoZWNrYm94ZXMgYW5kIHJh
ZGlvIGJ1dHRvbnMgYXJlIGV4YW1wbGVzIG9mCiAgICAgLy8gY29udHJvbHMgdGhhdCBuZWVkIHRv
IGRvIHRoaXMuCkBAIC0xMzgsNiArMTQwLDcgQEAgcHJvdGVjdGVkOgogI2lmIEVOQUJMRShWSURF
TykKICAgICB2b2lkIGluaXRNZWRpYUNvbG9ycygpOwogICAgIHZvaWQgaW5pdE1lZGlhQnV0dG9u
cygpOworICAgIHZvaWQgYWRqdXN0TWVkaWFTbGlkZXJUaHVtYlNpemUoUmVuZGVyT2JqZWN0Kikg
Y29uc3Q7CiAgICAgdmlydHVhbCBib29sIHBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRl
ck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKTsKICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRNZWRpYVBsYXlCdXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpOwogICAgIHZpcnR1YWwgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRv
bihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jik7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGsyLmNwcAppbmRleCAxNjg0OWQ0Li5mZDM5MWI3
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azIuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMi5jcHAKQEAgLTU5LDYgKzU5
LDEwIEBAIHZvaWQgUmVuZGVyVGhlbWVHdGs6OmluaXRNZWRpYUNvbG9ycygpCiB9CiAjZW5kaWYK
IAordm9pZCBSZW5kZXJUaGVtZUd0azo6YWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2Jq
ZWN0KiwgSW50UmVjdCYpCit7Cit9CisKIEd0a1N0YXRlVHlwZSBSZW5kZXJUaGVtZUd0azo6Z2V0
R3RrU3RhdGVUeXBlKFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIGlmICghaXNFbmFibGVk
KG9iamVjdCkgfHwgaXNSZWFkT25seUNvbnRyb2wob2JqZWN0KSkKQEAgLTMwMiwxMyArMzA2LDEw
IEBAIHZvaWQgUmVuZGVyVGhlbWVHdGs6OmFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJPYmpl
Y3QqIG8pIGNvbnN0CiB7CiAgICAgQ29udHJvbFBhcnQgcGFydCA9IG8tPnN0eWxlKCktPmFwcGVh
cmFuY2UoKTsKICNpZiBFTkFCTEUoVklERU8pCi0gICAgaWYgKHBhcnQgPT0gTWVkaWFTbGlkZXJU
aHVtYlBhcnQpIHsKLSAgICAgICAgby0+c3R5bGUoKS0+c2V0V2lkdGgoTGVuZ3RoKG1fbWVkaWFT
bGlkZXJUaHVtYldpZHRoLCBGaXhlZCkpOwotICAgICAgICBvLT5zdHlsZSgpLT5zZXRIZWlnaHQo
TGVuZ3RoKG1fbWVkaWFTbGlkZXJUaHVtYkhlaWdodCwgRml4ZWQpKTsKKyAgICBpZiAocGFydCA9
PSBNZWRpYVNsaWRlclRodW1iUGFydCB8fCBwYXJ0ID09IE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQ
YXJ0KSB7CisgICAgICAgIGFkanVzdE1lZGlhU2xpZGVyVGh1bWJTaXplKG8pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIGlmIChwYXJ0ID09IE1lZGlhVm9sdW1lU2xpZGVyVGh1bWJQYXJ0
KQotICAgICAgICByZXR1cm47CiAjZW5kaWYKIAogICAgIEd0a1dpZGdldCogd2lkZ2V0ID0gcGFy
dCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0ID8gZ3RrSFNjYWxlKCkgOiBndGtWU2NhbGUo
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3RrMy5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZW5kZXJUaGVtZUd0azMuY3BwCmluZGV4IGEzN2FiYzcu
LmNmNTQ4YTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlbmRlclRoZW1lR3Rr
My5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVuZGVyVGhlbWVHdGszLmNwcApAQCAt
MTAxLDYgKzEwMSwyNCBAQCB2b2lkIFJlbmRlclRoZW1lR3RrOjppbml0TWVkaWFDb2xvcnMoKQog
ICAgIG1fc2xpZGVyVGh1bWJDb2xvciA9IHN0eWxlLT5iZ1tHVEtfU1RBVEVfU0VMRUNURURdOwog
fQogCit2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RSZXBhaW50UmVjdChjb25zdCBSZW5kZXJP
YmplY3QqIHJlbmRlck9iamVjdCwgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBDb250cm9sUGFydCBw
YXJ0ID0gcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7CisgICAgc3dpdGNoIChw
YXJ0KSB7CisgICAgY2FzZSBTbGlkZXJWZXJ0aWNhbFBhcnQ6CisgICAgY2FzZSBTbGlkZXJIb3Jp
em9udGFsUGFydDogeworICAgICAgICBHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQgPSBnZXRTdHls
ZUNvbnRleHQocGFydCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0ID8gIEdUS19UWVBFX0hT
Q0FMRSA6IEdUS19UWVBFX1ZTQ0FMRSk7CisgICAgICAgIGdpbnQgZm9jdXNXaWR0aCwgZm9jdXNQ
YWQ7CisgICAgICAgIGd0a19zdHlsZV9jb250ZXh0X2dldF9zdHlsZShjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvY3VzLWxpbmUtd2lkdGgiLCAmZm9jdXNX
aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2N1cy1wYWRkaW5n
IiwgJmZvY3VzUGFkLCBOVUxMKTsKKyAgICAgICAgcmVjdC5pbmZsYXRlKGZvY3VzV2lkdGggKyBm
b2N1c1BhZCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
KwogR3RrU3RhdGVUeXBlIFJlbmRlclRoZW1lR3RrOjpnZXRHdGtTdGF0ZVR5cGUoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKCFpc0VuYWJsZWQob2JqZWN0KSB8fCBpc1JlYWRPbmx5
Q29udHJvbChvYmplY3QpKQpAQCAtMjczLDk0ICsyOTEsOTkgQEAgYm9vbCBSZW5kZXJUaGVtZUd0
azo6cGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYg
aW5mbywKICAgICByZXR1cm4gcGFpbnRSZW5kZXJPYmplY3QoTU9aX0dUS19FTlRSWSwgb2JqZWN0
LCBpbmZvLmNvbnRleHQsIHJlY3QpOwogfQogCi1ib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNs
aWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNv
bnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRyYWNr
KFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoaW5mby5jb250ZXh0LT5wYWludGluZ0Rp
c2FibGVkKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIENvbnRyb2xQYXJ0IHBhcnQg
PSBvYmplY3QtPnN0eWxlKCktPmFwcGVhcmFuY2UoKTsKKyAgICBDb250cm9sUGFydCBwYXJ0ID0g
cmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7CiAgICAgQVNTRVJUKHBhcnQgPT0g
U2xpZGVySG9yaXpvbnRhbFBhcnQgfHwgcGFydCA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpOwogCi0g
ICAgLy8gV2Ugc2hyaW5rIHRoZSB0cm91Z2ggcmVjdCBzbGlnaHRseSB0byBtYWtlIHJvb20gZm9y
IHRoZSBmb2N1cyBpbmRpY2F0b3IuCi0gICAgSW50UmVjdCB0cm91Z2hSZWN0KEludFBvaW50KCks
IHJlY3Quc2l6ZSgpKTsgLy8gVGhpcyBpcyByZWxhdGl2ZSB0byByZWN0LgotICAgIEd0a1dpZGdl
dCogd2lkZ2V0ID0gMDsKLSAgICBpZiAocGFydCA9PSBTbGlkZXJWZXJ0aWNhbFBhcnQpIHsKLSAg
ICAgICAgd2lkZ2V0ID0gZ3RrVlNjYWxlKCk7Ci0gICAgICAgIHRyb3VnaFJlY3QuaW5mbGF0ZVko
LWd0a193aWRnZXRfZ2V0X3N0eWxlKHdpZGdldCktPnl0aGlja25lc3MpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIHdpZGdldCA9IGd0a0hTY2FsZSgpOwotICAgICAgICB0cm91Z2hSZWN0LmluZmxh
dGVYKC1ndGtfd2lkZ2V0X2dldF9zdHlsZSh3aWRnZXQpLT54dGhpY2tuZXNzKTsKLSAgICB9Ci0g
ICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKHdpZGdldCwgZ3RrVGV4dERpcmVjdGlvbihvYmpl
Y3QtPnN0eWxlKCktPmRpcmVjdGlvbigpKSk7CisgICAgR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0
ID0gZ2V0U3R5bGVDb250ZXh0KHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCA/IEdU
S19UWVBFX0hTQ0FMRSA6IEdUS19UWVBFX1ZTQ0FMRSk7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRf
c2F2ZShjb250ZXh0KTsKIAotICAgIFdpZGdldFJlbmRlcmluZ0NvbnRleHQgd2lkZ2V0Q29udGV4
dChpbmZvLmNvbnRleHQsIHJlY3QpOwotICAgIHdpZGdldENvbnRleHQuZ3RrUGFpbnRCb3godHJv
dWdoUmVjdCwgd2lkZ2V0LCBHVEtfU1RBVEVfQUNUSVZFLCBHVEtfU0hBRE9XX09VVCwgInRyb3Vn
aCIpOwotICAgIGlmIChpc0ZvY3VzZWQob2JqZWN0KSkKLSAgICAgICAgd2lkZ2V0Q29udGV4dC5n
dGtQYWludEZvY3VzKEludFJlY3QoSW50UG9pbnQoKSwgcmVjdC5zaXplKCkpLCB3aWRnZXQsIGdl
dEd0a1N0YXRlVHlwZShvYmplY3QpLCAidHJvdWdoIik7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRf
c2V0X2RpcmVjdGlvbihjb250ZXh0LCBndGtUZXh0RGlyZWN0aW9uKHJlbmRlck9iamVjdC0+c3R5
bGUoKS0+ZGlyZWN0aW9uKCkpKTsKKyAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoY29u
dGV4dCwgR1RLX1NUWUxFX0NMQVNTX1NDQUxFKTsKKyAgICBndGtfc3R5bGVfY29udGV4dF9hZGRf
Y2xhc3MoY29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX1RST1VHSCk7CisKKyAgICBpZiAoIWlzRW5h
YmxlZChyZW5kZXJPYmplY3QpIHx8IGlzUmVhZE9ubHlDb250cm9sKHJlbmRlck9iamVjdCkpCisg
ICAgICAgIGd0a19zdHlsZV9jb250ZXh0X3NldF9zdGF0ZShjb250ZXh0LCBHVEtfU1RBVEVfRkxB
R19JTlNFTlNJVElWRSk7CisKKyAgICBndGtfcmVuZGVyX2JhY2tncm91bmQoY29udGV4dCwgcGFp
bnRJbmZvLmNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Cisg
ICAgZ3RrX3JlbmRlcl9mcmFtZShjb250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCksCisgICAgICAgICAgICAgICAgICAgICByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qu
d2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisKKyAgICBpZiAoaXNGb2N1c2VkKHJlbmRlck9iamVj
dCkpIHsKKyAgICAgICAgZ2ludCBmb2N1c1dpZHRoLCBmb2N1c1BhZDsKKyAgICAgICAgZ3RrX3N0
eWxlX2NvbnRleHRfZ2V0X3N0eWxlKGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZm9jdXMtbGluZS13aWR0aCIsICZmb2N1c1dpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZvY3VzLXBhZGRpbmciLCAmZm9jdXNQYWQsIE5VTEwp
OworICAgICAgICBJbnRSZWN0IGZvY3VzUmVjdChyZWN0KTsKKyAgICAgICAgZm9jdXNSZWN0Lmlu
ZmxhdGUoZm9jdXNXaWR0aCArIGZvY3VzUGFkKTsKKyAgICAgICAgZ3RrX3JlbmRlcl9mb2N1cyhj
b250ZXh0LCBwYWludEluZm8uY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9jdXNSZWN0LngoKSwgZm9jdXNSZWN0LnkoKSwgZm9jdXNSZWN0Lndp
ZHRoKCksIGZvY3VzUmVjdC5oZWlnaHQoKSk7CisgICAgfQogCisgICAgZ3RrX3N0eWxlX2NvbnRl
eHRfcmVzdG9yZShjb250ZXh0KTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVy
VGhlbWVHdGs6OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBh
aW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVHdGs6
OnBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIGlmIChpbmZvLmNv
bnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Q29udHJvbFBhcnQgcGFydCA9IG9iamVjdC0+c3R5bGUoKS0+YXBwZWFyYW5jZSgpOworICAgIENv
bnRyb2xQYXJ0IHBhcnQgPSByZW5kZXJPYmplY3QtPnN0eWxlKCktPmFwcGVhcmFuY2UoKTsKICAg
ICBBU1NFUlQocGFydCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0IHx8IHBhcnQgPT0gU2xp
ZGVyVGh1bWJWZXJ0aWNhbFBhcnQpOwogCi0gICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSAwOwotICAg
IGNvbnN0IGNoYXIqIGRldGFpbCA9IDA7Ci0gICAgR3RrT3JpZW50YXRpb24gb3JpZW50YXRpb247
Ci0gICAgaWYgKHBhcnQgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpIHsKLSAgICAgICAgd2lk
Z2V0ID0gZ3RrVlNjYWxlKCk7Ci0gICAgICAgIGRldGFpbCA9ICJ2c2NhbGUiOwotICAgICAgICBv
cmllbnRhdGlvbiA9IEdUS19PUklFTlRBVElPTl9WRVJUSUNBTDsKLSAgICB9IGVsc2UgewotICAg
ICAgICB3aWRnZXQgPSBndGtIU2NhbGUoKTsKLSAgICAgICAgZGV0YWlsID0gImhzY2FsZSI7Ci0g
ICAgICAgIG9yaWVudGF0aW9uID0gR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUw7Ci0gICAgfQot
ICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbih3aWRnZXQsIGd0a1RleHREaXJlY3Rpb24ob2Jq
ZWN0LT5zdHlsZSgpLT5kaXJlY3Rpb24oKSkpOworICAgIEd0a1N0eWxlQ29udGV4dCogY29udGV4
dCA9IGdldFN0eWxlQ29udGV4dChwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBH
VEtfVFlQRV9IU0NBTEUgOiBHVEtfVFlQRV9WU0NBTEUpOworICAgIGd0a19zdHlsZV9jb250ZXh0
X3NhdmUoY29udGV4dCk7CisKKyAgICBndGtfc3R5bGVfY29udGV4dF9zZXRfZGlyZWN0aW9uKGNv
bnRleHQsIGd0a1RleHREaXJlY3Rpb24ocmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5kaXJlY3Rpb24o
KSkpOworICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhjb250ZXh0LCBHVEtfU1RZTEVf
Q0xBU1NfU0NBTEUpOworICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhjb250ZXh0LCBH
VEtfU1RZTEVfQ0xBU1NfU0xJREVSKTsKKworICAgIGdpbnQgdHJvdWdoQm9yZGVyOworICAgIGd0
a19zdHlsZV9jb250ZXh0X2dldF9zdHlsZShjb250ZXh0LCAidHJvdWdoLWJvcmRlciIsICZ0cm91
Z2hCb3JkZXIsIE5VTEwpOworCisgICAgSW50UmVjdCBzbGlkZXJSZWN0KHJlY3QpOworICAgIHNs
aWRlclJlY3QuaW5mbGF0ZSgtdHJvdWdoQm9yZGVyKTsKKworICAgIGd1aW50IGZsYWdzID0gMDsK
KyAgICBpZiAoIWlzRW5hYmxlZChyZW5kZXJPYmplY3QpIHx8IGlzUmVhZE9ubHlDb250cm9sKHJl
bmRlck9iamVjdCkpCisgICAgICAgIGZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0lOU0VOU0lUSVZF
OworICAgIGVsc2UgaWYgKGlzSG92ZXJlZChyZW5kZXJPYmplY3QpKQorICAgICAgICBmbGFncyB8
PSBHVEtfU1RBVEVfRkxBR19QUkVMSUdIVDsKKyAgICBpZiAoaXNQcmVzc2VkKHJlbmRlck9iamVj
dCkpCisgICAgICAgIGZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0FDVElWRTsKKyAgICBndGtfc3R5
bGVfY29udGV4dF9zZXRfc3RhdGUoY29udGV4dCwgc3RhdGljX2Nhc3Q8R3RrU3RhdGVGbGFncz4o
ZmxhZ3MpKTsKKworICAgIGd0a19yZW5kZXJfc2xpZGVyKGNvbnRleHQsIHBhaW50SW5mby5jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgc2xpZGVyUmVjdC54KCksIHNsaWRlclJlY3QueSgpLCBz
bGlkZXJSZWN0LndpZHRoKCksIHNsaWRlclJlY3QuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAg
ICAgICAgcGFydCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0ID8gR1RLX09SSUVOVEFUSU9O
X0hPUklaT05UQUwgOiBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOworCisgICAgZ3RrX3N0eWxl
X2NvbnRleHRfcmVzdG9yZShjb250ZXh0KTsKIAotICAgIC8vIE9ubHkgc29tZSB0aGVtZXMgaGF2
ZSBzbGlkZXIgdGh1bWJzIHJlc3BvbmQgdG8gY2xpY2tzIGFuZCBzb21lIGRvbid0LiBUaGlzIGlu
Zm9ybWF0aW9uIGlzCi0gICAgLy8gZ2F0aGVyZWQgdmlhIHRoZSAnYWN0aXZhdGUtc2xpZGVyJyBw
cm9wZXJ0eSwgYnV0IGl0J3MgZGVwcmVjYXRlZCBpbiBHVEsrIDIuMjIgYW5kIHJlbW92ZWQgaW4K
LSAgICAvLyBHVEsrIDMueC4gVGhlIGRyYXdiYWNrIG9mIG5vdCBob25vcmluZyBpdCBpcyB0aGF0
IHNsaWRlciB0aHVtYnMgY2hhbmdlIGNvbG9yIHdoZW4geW91IGNsaWNrCi0gICAgLy8gb24gdGhl
bS4gCi0gICAgSW50UmVjdCB0aHVtYlJlY3QoSW50UG9pbnQoKSwgcmVjdC5zaXplKCkpOwotICAg
IFdpZGdldFJlbmRlcmluZ0NvbnRleHQgd2lkZ2V0Q29udGV4dChpbmZvLmNvbnRleHQsIHJlY3Qp
OwotICAgIHdpZGdldENvbnRleHQuZ3RrUGFpbnRTbGlkZXIodGh1bWJSZWN0LCB3aWRnZXQsIGdl
dEd0a1N0YXRlVHlwZShvYmplY3QpLCBHVEtfU0hBRE9XX09VVCwgZGV0YWlsLCBvcmllbnRhdGlv
bik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RT
bGlkZXJUaHVtYlNpemUoUmVuZGVyT2JqZWN0KiBvKSBjb25zdAordm9pZCBSZW5kZXJUaGVtZUd0
azo6YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0KSBjb25z
dAogewotICAgIENvbnRyb2xQYXJ0IHBhcnQgPSBvLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCk7Cisg
ICAgQ29udHJvbFBhcnQgcGFydCA9IHJlbmRlck9iamVjdC0+c3R5bGUoKS0+YXBwZWFyYW5jZSgp
OwogI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAocGFydCA9PSBNZWRpYVNsaWRlclRodW1iUGFy
dCkgewotICAgICAgICBvLT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgobV9tZWRpYVNsaWRlclRo
dW1iV2lkdGgsIEZpeGVkKSk7Ci0gICAgICAgIG8tPnN0eWxlKCktPnNldEhlaWdodChMZW5ndGgo
bV9tZWRpYVNsaWRlclRodW1iSGVpZ2h0LCBGaXhlZCkpOworICAgIGlmIChwYXJ0ID09IE1lZGlh
U2xpZGVyVGh1bWJQYXJ0IHx8IHBhcnQgPT0gTWVkaWFWb2x1bWVTbGlkZXJUaHVtYlBhcnQpIHsK
KyAgICAgICAgYWRqdXN0TWVkaWFTbGlkZXJUaHVtYlNpemUocmVuZGVyT2JqZWN0KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAocGFydCA9PSBNZWRpYVZvbHVtZVNsaWRlclRodW1i
UGFydCkKLSAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBHdGtXaWRnZXQqIHdpZGdldCA9
IHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCA/IGd0a0hTY2FsZSgpIDogZ3RrVlNj
YWxlKCk7Ci0gICAgaW50IGxlbmd0aCA9IDAsIHdpZHRoID0gMDsKLSAgICBndGtfd2lkZ2V0X3N0
eWxlX2dldCh3aWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInNsaWRlcl9sZW5ndGgi
LCAmbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICJzbGlkZXJfd2lkdGgiLCAmd2lk
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0KKyAgICBnaW50IHNsaWRlcldp
ZHRoLCBzbGlkZXJMZW5ndGg7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfZ2V0X3N0eWxlKGdldFN0
eWxlQ29udGV4dChwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpvbnRhbFBhcnQgPyBHVEtfVFlQRV9I
U0NBTEUgOiBHVEtfVFlQRV9WU0NBTEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAic2xpZGVyLXdpZHRoIiwgJnNsaWRlcldpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAic2xpZGVyLWxlbmd0aCIsICZzbGlkZXJMZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTEwpOwogICAgIGlmIChwYXJ0ID09IFNsaWRlclRodW1iSG9yaXpv
bnRhbFBhcnQpIHsKLSAgICAgICAgby0+c3R5bGUoKS0+c2V0V2lkdGgoTGVuZ3RoKGxlbmd0aCwg
Rml4ZWQpKTsKLSAgICAgICAgby0+c3R5bGUoKS0+c2V0SGVpZ2h0KExlbmd0aCh3aWR0aCwgRml4
ZWQpKTsKKyAgICAgICAgcmVuZGVyT2JqZWN0LT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgoc2xp
ZGVyTGVuZ3RoLCBGaXhlZCkpOworICAgICAgICByZW5kZXJPYmplY3QtPnN0eWxlKCktPnNldEhl
aWdodChMZW5ndGgoc2xpZGVyV2lkdGgsIEZpeGVkKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgQVNTRVJUKHBhcnQgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpOwotICAgIG8tPnN0
eWxlKCktPnNldFdpZHRoKExlbmd0aCh3aWR0aCwgRml4ZWQpKTsKLSAgICBvLT5zdHlsZSgpLT5z
ZXRIZWlnaHQoTGVuZ3RoKGxlbmd0aCwgRml4ZWQpKTsKKyAgICByZW5kZXJPYmplY3QtPnN0eWxl
KCktPnNldFdpZHRoKExlbmd0aChzbGlkZXJXaWR0aCwgRml4ZWQpKTsKKyAgICByZW5kZXJPYmpl
Y3QtPnN0eWxlKCktPnNldEhlaWdodChMZW5ndGgoc2xpZGVyTGVuZ3RoLCBGaXhlZCkpOwogfQog
CiAjaWYgRU5BQkxFKFBST0dSRVNTX1RBRykK
</data>

          </attachment>
      

    </bug>

</bugzilla>