<?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>131600</bug_id>
          
          <creation_ts>2014-04-13 16:37:11 -0700</creation_ts>
          <short_desc>Support setting a background color on page overlays</short_desc>
          <delta_ts>2014-04-14 01:10:58 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1000341</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-13 16:37:11 -0700</bug_when>
    <thetext>So that clients who want to highlight a particular region of the page can do so with a page overlay without any backing store.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000342</commentid>
    <comment_count>1</comment_count>
      <attachid>229249</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-13 16:41:08 -0700</bug_when>
    <thetext>Created attachment 229249
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000369</commentid>
    <comment_count>2</comment_count>
      <attachid>229249</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-13 20:25:39 -0700</bug_when>
    <thetext>Comment on attachment 229249
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/PageOverlayController.cpp:92
&gt; +    layer-&gt;setBackgroundColor(overlay-&gt;backgroundColor());

What if the background color was not set on the overlay? Color would be default uninitialized.

&gt; Source/WebKit2/WebProcess/WebPage/PageOverlayController.cpp:-144
&gt; -    graphicsLayer-&gt;setNeedsDisplay();

Why do you remove this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000403</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-13 23:27:39 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 229249 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=229249&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/PageOverlayController.cpp:92
&gt; &gt; +    layer-&gt;setBackgroundColor(overlay-&gt;backgroundColor());
&gt; 
&gt; What if the background color was not set on the overlay? Color would be default uninitialized.

Color is by default initialized to a !isValid color, which I thought GraphicsLayer handled correctly but it doesn&apos;t, so it&apos;s probably just using black with alpha=0. Will fix.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/PageOverlayController.cpp:-144
&gt; &gt; -    graphicsLayer-&gt;setNeedsDisplay();
&gt; 
&gt; Why do you remove this?

setSize does it already if needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000408</commentid>
    <comment_count>4</comment_count>
      <attachid>229265</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-13 23:36:53 -0700</bug_when>
    <thetext>Created attachment 229265
check color validity</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000410</commentid>
    <comment_count>5</comment_count>
      <attachid>229265</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-13 23:46:07 -0700</bug_when>
    <thetext>Comment on attachment 229265
check color validity

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

&gt; Source/WebKit2/WebProcess/WebPage/PageOverlay.cpp:85
&gt; -        int width = frameView-&gt;width();
&gt; -        int height = frameView-&gt;height();
&gt; -
&gt; -        if (!ScrollbarTheme::theme()-&gt;usesOverlayScrollbars()) {
&gt; -            if (frameView-&gt;verticalScrollbar())
&gt; -                width -= frameView-&gt;verticalScrollbar()-&gt;width();
&gt; -            if (frameView-&gt;horizontalScrollbar())
&gt; -                height -= frameView-&gt;horizontalScrollbar()-&gt;height();
&gt; -        }
&gt; -        return IntRect(0, 0, width, height);
&gt; +        IntSize frameSize = frameView-&gt;size();
&gt; +
&gt; +        if (ScrollbarTheme::theme()-&gt;usesOverlayScrollbars())
&gt; +            return IntRect(IntPoint(), frameSize);
&gt; +
&gt; +        if (frameView-&gt;verticalScrollbar())
&gt; +            frameSize.setWidth(frameSize.width() - frameView-&gt;verticalScrollbar()-&gt;width());
&gt; +        if (frameView-&gt;horizontalScrollbar())
&gt; +            frameSize.setHeight(frameSize.height() - frameView-&gt;horizontalScrollbar()-&gt;height());
&gt; +
&gt; +        return IntRect(IntPoint(), frameSize);

This doesn’t seem like much of an improvement.

&gt; Source/WebKit2/WebProcess/WebPage/PageOverlay.cpp:116
&gt; +    m_backgroundColor = backgroundColor;
&gt; +
&gt; +    if (m_webPage)
&gt; +        m_webPage-&gt;pageOverlayController().didChangeOverlayBackgroundColor(this);

Seems we should not call didChangeOverlayBackgroundColor if the color didn’t change.

Also, is an invalid color OK or not? If not, we should assert that it’s not invalid here.

&gt; Source/WebKit2/WebProcess/WebPage/PageOverlayController.cpp:63
&gt; +static void updateOverlayGeometry(PageOverlay* overlay, GraphicsLayer* graphicsLayer)

This function should take references, not pointers.

&gt; Source/WebKit2/WebProcess/WebPage/PageOverlayController.cpp:317
&gt; +void PageOverlayController::didChangeOverlayBackgroundColor(PageOverlay* overlay)

This function should take a reference, not a pointer.

&gt; Source/WebKit2/WebProcess/WebPage/PageOverlayController.cpp:320
&gt; +    GraphicsLayer* graphicsLayer = m_overlayGraphicsLayers.get(overlay);

Since we know this is non-null, we should dereference immediately and store in a reference rather than a pointer.

&gt; Source/WebKit2/WebProcess/WebPage/PageOverlayController.cpp:325
&gt; +    Color backgroundColor = overlay-&gt;backgroundColor();
&gt; +    if (backgroundColor.isValid())
&gt; +        graphicsLayer-&gt;setBackgroundColor(backgroundColor);
&gt; +    else
&gt; +        graphicsLayer-&gt;setBackgroundColor(Color::transparent);

Should have a function that turns invalid colors into transparent. I think that if you don’t look at the validity state, an invalid color already acts like a transparent color, so it’s really just clearing the redundant isValid flag. In fact, the only difference between a Color and a straight RGB number is that a Color has the extra valid bit. So it seems lame that the setBackgroundColor function takes a Color if an invalid color is not allowed, since a color that can’t be invalid would really be a different, smaller, type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000416</commentid>
    <comment_count>6</comment_count>
      <attachid>229265</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-14 00:03:32 -0700</bug_when>
    <thetext>Comment on attachment 229265
check color validity

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

&gt;&gt; Source/WebKit2/WebProcess/WebPage/PageOverlay.cpp:85
&gt;&gt; +        return IntRect(IntPoint(), frameSize);
&gt; 
&gt; This doesn’t seem like much of an improvement.

Fair enough.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/PageOverlay.cpp:116
&gt;&gt; +        m_webPage-&gt;pageOverlayController().didChangeOverlayBackgroundColor(this);
&gt; 
&gt; Seems we should not call didChangeOverlayBackgroundColor if the color didn’t change.
&gt; 
&gt; Also, is an invalid color OK or not? If not, we should assert that it’s not invalid here.

True.

Invalid colors are fine, as discussed below, since they&apos;re just effectively transparent black when used. Maybe I should go back to the previous version of the patch that didn&apos;t treat them as special at all.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/PageOverlayController.cpp:325
&gt;&gt; +        graphicsLayer-&gt;setBackgroundColor(Color::transparent);
&gt; 
&gt; Should have a function that turns invalid colors into transparent. I think that if you don’t look at the validity state, an invalid color already acts like a transparent color, so it’s really just clearing the redundant isValid flag. In fact, the only difference between a Color and a straight RGB number is that a Color has the extra valid bit. So it seems lame that the setBackgroundColor function takes a Color if an invalid color is not allowed, since a color that can’t be invalid would really be a different, smaller, type.

Or... yeah. I could use the RGBA32 type everywhere, and just initialize it to transparent in PageOverlay. I didn&apos;t realize that type was in use outside of Color internals, but it looks like it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000432</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-04-14 01:10:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/167216</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229249</attachid>
            <date>2014-04-13 16:41:08 -0700</date>
            <delta_ts>2014-04-13 23:36:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>background-color.diff</filename>
            <type>text/plain</type>
            <size>11804</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YzYyYzU5Li5mYTY3YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTQtMDQtMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgU3VwcG9ydCBzZXR0aW5nIGEgYmFja2dyb3VuZCBjb2xvciBvbiBwYWdlIG92ZXJs
YXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpzZXREb2N1bWVudE92ZXJsYXlSb290TGF5ZXIpOgorICAgICAg
ICBNYXJrIHRoZSBjb21wb3NpdGluZyB0cmVlIGFzIG5lZWRpbmcgYSByZWJ1aWxkIHdoZW4gd2Ug
Z2V0IGEgbmV3IGRvY3VtZW50LXJlbGF0aXZlCisgICAgICAgIG92ZXJsYXkgbGF5ZXI7IG90aGVy
d2lzZSB3ZSB3ZXJlIGRlcGVuZGluZyBvbiBzb21ldGhpbmcgZWxzZSBjb21pbmcgYWxvbmcgYW5k
CisgICAgICAgIHJlcXVpcmluZyBhIHJlYnVpbGQsIHdoaWNoIGRpZG4ndCBhbHdheXMgaGFwcGVu
LgorCiAyMDE0LTA0LTEyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBNb3ZlIFF1aWNrTG9va0hhbmRsZSBmcm9tIFJlc291cmNlTG9hZGVyIHRvIFdlYlJl
c291cmNlTG9hZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCmluZGV4IGM4NDZlY2IuLmJiYTY0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0zODE5LDYg
KzM4MTksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2V0RG9jdW1lbnRPdmVybGF5
Um9vdExheWVyKEdyYXBoaWNzTGF5ZXIqIGRvY3VtZW50TwogICAgIGlmIChtX2RvY3VtZW50T3Zl
cmxheVJvb3RMYXllcikKICAgICAgICAgbV9kb2N1bWVudE92ZXJsYXlSb290TGF5ZXItPnJlbW92
ZUZyb21QYXJlbnQoKTsKICAgICBtX2RvY3VtZW50T3ZlcmxheVJvb3RMYXllciA9IGRvY3VtZW50
T3ZlcmxheVJvb3RMYXllcjsKKyAgICBzZXRDb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKHRy
dWUpOwogICAgIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggNGI0YTE2My4uN2Q3ZjQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0
LTA0LTEzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAg
IFN1cHBvcnQgc2V0dGluZyBhIGJhY2tncm91bmQgY29sb3Igb24gcGFnZSBvdmVybGF5cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNjAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6
UGFnZU92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6Ym91bmRzKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OnN0YXJ0RmFkZUluQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OnN0YXJ0RmFkZU91dEFuaW1hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpzdGFydEZhZGVBbmltYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlT3ZlcmxheTo6ZmFkZUFuaW1hdGlvblRpbWVyRmlyZWQpOgorICAgICAgICBNaW5v
ciBzdHlsZSBhZGp1c3RtZW50cy4KKworICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6c2V0
QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OnNldE5lZWRz
RGlzcGxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpiYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICBL
ZWVwIHRyYWNrIG9mIG91ciBiYWNrZ3JvdW5kIGNvbG9yLCBhbmQgcHVzaCBpdCBkb3duIHRvIHRo
ZSBwYWdlIG92ZXJsYXkgY29udHJvbGxlciBpZiB3ZSBoYXZlIG9uZS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0Ojp1cGRhdGVPdmVybGF5R2VvbWV0cnkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3Zlcmxh
eUNvbnRyb2xsZXI6OmNsZWFyUGFnZU92ZXJsYXkpOgorICAgICAgICBQYWdlIG92ZXJsYXlzIHdp
bGwgYWx3YXlzIGhhdmUgdGhlIHJpZ2h0IHNpemUsIGFuZCBqdXN0IHVzZSBkcmF3c0NvbnRlbnRz
IHRvIGRldGVybWluZQorICAgICAgICB3aGV0aGVyIG9yIG5vdCB0aGV5IHNob3VsZCB0aWxlL2hh
dmUgYmFja2luZyBzdG9yZS9ldGMuCisKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXlDb250
cm9sbGVyOjppbnN0YWxsUGFnZU92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3Zlcmxh
eUNvbnRyb2xsZXI6OmRpZENoYW5nZU92ZXJsYXlCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICBT
ZXQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGxheWVyLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oOgorCiAyMDE0LTA0LTEyICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBNb3ZlIFF1aWNrTG9v
a0hhbmRsZSBmcm9tIFJlc291cmNlTG9hZGVyIHRvIFdlYlJlc291cmNlTG9hZGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmNwcAppbmRleCBi
YThhYzU5Li5lZTllYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvUGFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9QYWdlT3ZlcmxheS5jcHAKQEAgLTQ5LDEyICs0OSwxMiBAQCBQYXNzUmVmUHRyPFBhZ2VP
dmVybGF5PiBQYWdlT3ZlcmxheTo6Y3JlYXRlKENsaWVudCogY2xpZW50LCBPdmVybGF5VHlwZSBv
dmVybGF5VAogCiBQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXkoQ2xpZW50KiBjbGllbnQsIE92ZXJs
YXlUeXBlIG92ZXJsYXlUeXBlKQogICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV93ZWJQ
YWdlKDApCisgICAgLCBtX3dlYlBhZ2UobnVsbHB0cikKICAgICAsIG1fZmFkZUFuaW1hdGlvblRp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBhZ2VPdmVybGF5OjpmYWRlQW5pbWF0aW9uVGlt
ZXJGaXJlZCkKLSAgICAsIG1fZmFkZUFuaW1hdGlvblN0YXJ0VGltZSgwLjApCisgICAgLCBtX2Zh
ZGVBbmltYXRpb25TdGFydFRpbWUoMCkKICAgICAsIG1fZmFkZUFuaW1hdGlvbkR1cmF0aW9uKGZh
ZGVBbmltYXRpb25EdXJhdGlvbikKICAgICAsIG1fZmFkZUFuaW1hdGlvblR5cGUoTm9BbmltYXRp
b24pCi0gICAgLCBtX2ZyYWN0aW9uRmFkZWRJbigxLjApCisgICAgLCBtX2ZyYWN0aW9uRmFkZWRJ
bigxKQogICAgICwgbV9vdmVybGF5VHlwZShvdmVybGF5VHlwZSkKIHsKIH0KQEAgLTcyLDE2ICs3
MiwxNyBAQCBJbnRSZWN0IFBhZ2VPdmVybGF5Ojpib3VuZHMoKSBjb25zdAogCiAgICAgc3dpdGNo
IChtX292ZXJsYXlUeXBlKSB7CiAgICAgY2FzZSBPdmVybGF5VHlwZTo6VmlldzogewotICAgICAg
ICBpbnQgd2lkdGggPSBmcmFtZVZpZXctPndpZHRoKCk7Ci0gICAgICAgIGludCBoZWlnaHQgPSBm
cmFtZVZpZXctPmhlaWdodCgpOwotCi0gICAgICAgIGlmICghU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPnVzZXNPdmVybGF5U2Nyb2xsYmFycygpKSB7Ci0gICAgICAgICAgICBpZiAoZnJhbWVWaWV3
LT52ZXJ0aWNhbFNjcm9sbGJhcigpKQotICAgICAgICAgICAgICAgIHdpZHRoIC09IGZyYW1lVmll
dy0+dmVydGljYWxTY3JvbGxiYXIoKS0+d2lkdGgoKTsKLSAgICAgICAgICAgIGlmIChmcmFtZVZp
ZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSkKLSAgICAgICAgICAgICAgICBoZWlnaHQgLT0gZnJh
bWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCktPmhlaWdodCgpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBJbnRSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBJbnRTaXpl
IGZyYW1lU2l6ZSA9IGZyYW1lVmlldy0+c2l6ZSgpOworCisgICAgICAgIGlmIChTY3JvbGxiYXJU
aGVtZTo6dGhlbWUoKS0+dXNlc092ZXJsYXlTY3JvbGxiYXJzKCkpCisgICAgICAgICAgICByZXR1
cm4gSW50UmVjdChJbnRQb2ludCgpLCBmcmFtZVNpemUpOworCisgICAgICAgIGlmIChmcmFtZVZp
ZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkpCisgICAgICAgICAgICBmcmFtZVNpemUuc2V0V2lkdGgo
ZnJhbWVTaXplLndpZHRoKCkgLSBmcmFtZVZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCktPndpZHRo
KCkpOworICAgICAgICBpZiAoZnJhbWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkpCisgICAg
ICAgICAgICBmcmFtZVNpemUuc2V0SGVpZ2h0KGZyYW1lU2l6ZS5oZWlnaHQoKSAtIGZyYW1lVmll
dy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpLT5oZWlnaHQoKSk7CisKKyAgICAgICAgcmV0dXJuIElu
dFJlY3QoSW50UG9pbnQoKSwgZnJhbWVTaXplKTsKICAgICB9CiAgICAgY2FzZSBPdmVybGF5VHlw
ZTo6RG9jdW1lbnQ6CiAgICAgICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KCksIGZyYW1lVmll
dy0+Y29udGVudHNTaXplKCkpOwpAQCAtMTA3LDYgKzEwOCwxNCBAQCB2b2lkIFBhZ2VPdmVybGF5
OjpzZXRGcmFtZShJbnRSZWN0IGZyYW1lKQogICAgICAgICBtX3dlYlBhZ2UtPnBhZ2VPdmVybGF5
Q29udHJvbGxlcigpLmRpZENoYW5nZU92ZXJsYXlGcmFtZSh0aGlzKTsKIH0KIAordm9pZCBQYWdl
T3ZlcmxheTo6c2V0QmFja2dyb3VuZENvbG9yKENvbG9yIGJhY2tncm91bmRDb2xvcikKK3sKKyAg
ICBtX2JhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjsKKworICAgIGlmIChtX3dlYlBh
Z2UpCisgICAgICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZGlkQ2hhbmdl
T3ZlcmxheUJhY2tncm91bmRDb2xvcih0aGlzKTsKK30KKwogdm9pZCBQYWdlT3ZlcmxheTo6c2V0
UGFnZShXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIG1fY2xpZW50LT53aWxsTW92ZVRvV2ViUGFn
ZSh0aGlzLCB3ZWJQYWdlKTsKQEAgLTExOCwxMCArMTI3LDExIEBAIHZvaWQgUGFnZU92ZXJsYXk6
OnNldFBhZ2UoV2ViUGFnZSogd2ViUGFnZSkKIAogdm9pZCBQYWdlT3ZlcmxheTo6c2V0TmVlZHNE
aXNwbGF5KGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBpZiAobV93ZWJQYWdlKSB7
Ci0gICAgICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuc2V0UGFnZU92ZXJs
YXlPcGFjaXR5KHRoaXMsIG1fZnJhY3Rpb25GYWRlZEluKTsKLSAgICAgICAgbV93ZWJQYWdlLT5w
YWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5zZXRQYWdlT3ZlcmxheU5lZWRzRGlzcGxheSh0aGlzLCBk
aXJ0eVJlY3QpOwotICAgIH0KKyAgICBpZiAoIW1fd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV93ZWJQYWdlLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5zZXRQYWdlT3ZlcmxheU9w
YWNpdHkodGhpcywgbV9mcmFjdGlvbkZhZGVkSW4pOworICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJs
YXlDb250cm9sbGVyKCkuc2V0UGFnZU92ZXJsYXlOZWVkc0Rpc3BsYXkodGhpcywgZGlydHlSZWN0
KTsKIH0KIAogdm9pZCBQYWdlT3ZlcmxheTo6c2V0TmVlZHNEaXNwbGF5KCkKQEAgLTE2MSw3ICsx
NzEsNyBAQCBXS0FycmF5UmVmIFBhZ2VPdmVybGF5Ojpjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZU5hbWVzKGJvb2wgcGFyYW1ldGVyaXplZE5hbWVzKQogCiB2b2lkIFBhZ2VPdmVybGF5OjpzdGFy
dEZhZGVJbkFuaW1hdGlvbigpCiB7Ci0gICAgbV9mcmFjdGlvbkZhZGVkSW4gPSAwLjA7CisgICAg
bV9mcmFjdGlvbkZhZGVkSW4gPSAwOwogICAgIG1fZmFkZUFuaW1hdGlvblR5cGUgPSBGYWRlSW5B
bmltYXRpb247CiAKICAgICBzdGFydEZhZGVBbmltYXRpb24oKTsKQEAgLTE2OSw3ICsxNzksNyBA
QCB2b2lkIFBhZ2VPdmVybGF5OjpzdGFydEZhZGVJbkFuaW1hdGlvbigpCiAKIHZvaWQgUGFnZU92
ZXJsYXk6OnN0YXJ0RmFkZU91dEFuaW1hdGlvbigpCiB7Ci0gICAgbV9mcmFjdGlvbkZhZGVkSW4g
PSAxLjA7CisgICAgbV9mcmFjdGlvbkZhZGVkSW4gPSAxOwogICAgIG1fZmFkZUFuaW1hdGlvblR5
cGUgPSBGYWRlT3V0QW5pbWF0aW9uOwogCiAgICAgc3RhcnRGYWRlQW5pbWF0aW9uKCk7CkBAIC0x
ODQsOCArMTk0LDYgQEAgdm9pZCBQYWdlT3ZlcmxheTo6c3RvcEZhZGVPdXRBbmltYXRpb24oKQog
dm9pZCBQYWdlT3ZlcmxheTo6c3RhcnRGYWRlQW5pbWF0aW9uKCkKIHsKICAgICBtX2ZhZGVBbmlt
YXRpb25TdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOwotICAgIAotICAgIC8vIFN0YXJ0IHRoZSB0
aW1lcgogICAgIG1fZmFkZUFuaW1hdGlvblRpbWVyLnN0YXJ0UmVwZWF0aW5nKDEgLyBmYWRlQW5p
bWF0aW9uRnJhbWVSYXRlKTsKIH0KIApAQCAtMjA4LDEwICsyMTYsOSBAQCB2b2lkIFBhZ2VPdmVy
bGF5OjpmYWRlQW5pbWF0aW9uVGltZXJGaXJlZCgpCiAgICAgICAgIGJvb2wgd2FzRmFkaW5nT3V0
ID0gbV9mYWRlQW5pbWF0aW9uVHlwZSA9PSBGYWRlT3V0QW5pbWF0aW9uOwogICAgICAgICBtX2Zh
ZGVBbmltYXRpb25UeXBlID0gTm9BbmltYXRpb247CiAKLSAgICAgICAgaWYgKHdhc0ZhZGluZ091
dCkgewotICAgICAgICAgICAgLy8gSWYgdGhpcyB3YXMgYSBmYWRlIG91dCwgZ28gYWhlYWQgYW5k
IHVuaW5zdGFsbCB0aGUgcGFnZSBvdmVybGF5LgorICAgICAgICAvLyBJZiB0aGlzIHdhcyBhIGZh
ZGUgb3V0LCBnbyBhaGVhZCBhbmQgdW5pbnN0YWxsIHRoZSBwYWdlIG92ZXJsYXkuCisgICAgICAg
IGlmICh3YXNGYWRpbmdPdXQpCiAgICAgICAgICAgICBtX3dlYlBhZ2UtPnVuaW5zdGFsbFBhZ2VP
dmVybGF5KHRoaXMsIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RG9Ob3RGYWRlKTsKLSAgICAgICAg
fQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1BhZ2VPdmVybGF5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFn
ZU92ZXJsYXkuaAppbmRleCAwYTY0NWFmLi5iYjAwNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTkxLDYgKzkyLDkg
QEAgcHVibGljOgogICAgIFdlYkNvcmU6OkludFJlY3QgYm91bmRzKCkgY29uc3Q7CiAgICAgV2Vi
Q29yZTo6SW50UmVjdCBmcmFtZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0RnJhbWUoV2ViQ29yZTo6
SW50UmVjdCk7CisKKyAgICBXZWJDb3JlOjpDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KFdlYkNvcmU6OkNvbG9yKTsKICAgICAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBQYWdlT3Zl
cmxheShDbGllbnQqLCBPdmVybGF5VHlwZSk7CkBAIC0xMTcsNiArMTIxLDggQEAgcHJpdmF0ZToK
IAogICAgIE92ZXJsYXlUeXBlIG1fb3ZlcmxheVR5cGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBt
X292ZXJyaWRlRnJhbWU7CisKKyAgICBXZWJDb3JlOjpDb2xvciBtX2JhY2tncm91bmRDb2xvcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAppbmRleCA1
OTQ5ZGZlLi41M2Y3NTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcApAQCAtNjAsNiArNjAsMTcg
QEAgdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmluaXRpYWxpemUoKQogI2VuZGlmCiB9CiAK
K3N0YXRpYyB2b2lkIHVwZGF0ZU92ZXJsYXlHZW9tZXRyeShQYWdlT3ZlcmxheSogb3ZlcmxheSwg
R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKK3sKKyAgICBJbnRSZWN0IG92ZXJsYXlGcmFt
ZSA9IG92ZXJsYXktPmZyYW1lKCk7CisKKyAgICBpZiAob3ZlcmxheUZyYW1lLmxvY2F0aW9uKCkg
PT0gZ3JhcGhpY3NMYXllci0+cG9zaXRpb24oKSAmJiBvdmVybGF5RnJhbWUuc2l6ZSgpID09IGdy
YXBoaWNzTGF5ZXItPnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ3JhcGhpY3NMYXll
ci0+c2V0UG9zaXRpb24ob3ZlcmxheS0+ZnJhbWUoKS5sb2NhdGlvbigpKTsKKyAgICBncmFwaGlj
c0xheWVyLT5zZXRTaXplKG92ZXJsYXktPmZyYW1lKCkuc2l6ZSgpKTsKK30KKwogdm9pZCBQYWdl
T3ZlcmxheUNvbnRyb2xsZXI6Omluc3RhbGxQYWdlT3ZlcmxheShQYXNzUmVmUHRyPFBhZ2VPdmVy
bGF5PiBwYWdlT3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlIGZhZGVNb2RlKQogewogICAg
IEFTU0VSVChtX2RvY3VtZW50T3ZlcmxheVJvb3RMYXllcik7CkBAIC03OCw3ICs4OSw4IEBAIHZv
aWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjppbnN0YWxsUGFnZU92ZXJsYXkoUGFzc1JlZlB0cjxQ
YWdlT3ZlcmxheT4gcGFnZU92ZXJsCiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXll
cj4gbGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUobV93ZWJQYWdlLT5kcmF3aW5nQXJlYSgp
LT5ncmFwaGljc0xheWVyRmFjdG9yeSgpLCB0aGlzKTsKICAgICBsYXllci0+c2V0QW5jaG9yUG9p
bnQoRmxvYXRQb2ludDNEKCkpOwotICAgIGxheWVyLT5zZXRQb3NpdGlvbihvdmVybGF5LT5mcmFt
ZSgpLmxvY2F0aW9uKCkpOworICAgIGxheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Iob3ZlcmxheS0+
YmFja2dyb3VuZENvbG9yKCkpOworICAgIHVwZGF0ZU92ZXJsYXlHZW9tZXRyeShvdmVybGF5Lmdl
dCgpLCBsYXllci5nZXQoKSk7CiAjaWZuZGVmIE5ERUJVRwogICAgIGxheWVyLT5zZXROYW1lKCJQ
YWdlIE92ZXJsYXkgY29udGVudCIpOwogI2VuZGlmCkBAIC0xMzQsMTYgKzE0Niw2IEBAIHZvaWQg
UGFnZU92ZXJsYXlDb250cm9sbGVyOjp1cGRhdGVGb3JjZVN5bmNocm9ub3VzU2Nyb2xsTGF5ZXJQ
b3NpdGlvblVwZGF0ZXMoKQogI2VuZGlmCiB9CiAKLXN0YXRpYyB2b2lkIHVwZGF0ZU92ZXJsYXlH
ZW9tZXRyeShQYWdlT3ZlcmxheSogb3ZlcmxheSwgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXll
cikKLXsKLSAgICBpZiAoIWdyYXBoaWNzTGF5ZXItPmRyYXdzQ29udGVudCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBncmFwaGljc0xheWVyLT5zZXRQb3NpdGlvbihvdmVybGF5LT5mcmFtZSgp
LmxvY2F0aW9uKCkpOwotICAgIGdyYXBoaWNzTGF5ZXItPnNldFNpemUob3ZlcmxheS0+ZnJhbWUo
KS5zaXplKCkpOwotICAgIGdyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwotfQotCiB2
b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6c2V0UGFnZU92ZXJsYXlOZWVkc0Rpc3BsYXkoUGFn
ZU92ZXJsYXkqIG92ZXJsYXksIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkKIHsK
ICAgICBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyID0gbV9vdmVybGF5R3JhcGhpY3NMYXll
cnMuZ2V0KG92ZXJsYXkpOwpAQCAtMTc0LDcgKzE3Niw2IEBAIHZvaWQgUGFnZU92ZXJsYXlDb250
cm9sbGVyOjpjbGVhclBhZ2VPdmVybGF5KFBhZ2VPdmVybGF5KiBvdmVybGF5KQogICAgICAgICBy
ZXR1cm47CiAKICAgICBncmFwaGljc0xheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwotICAg
IGdyYXBoaWNzTGF5ZXItPnNldFNpemUoSW50U2l6ZSgpKTsKIH0KIAogdm9pZCBQYWdlT3Zlcmxh
eUNvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdTaXplKCkKQEAgLTMxMCw0ICszMTEsMTAgQEAgdm9p
ZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZU92ZXJsYXlGcmFtZShQYWdlT3Zlcmxh
eSogb3ZlcmxheSkKICAgICB1cGRhdGVPdmVybGF5R2VvbWV0cnkob3ZlcmxheSwgZ3JhcGhpY3NM
YXllcik7CiB9CiAKK3ZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VPdmVybGF5
QmFja2dyb3VuZENvbG9yKFBhZ2VPdmVybGF5KiBvdmVybGF5KQoreworICAgIEFTU0VSVChtX3Bh
Z2VPdmVybGF5cy5jb250YWlucyhvdmVybGF5KSk7CisgICAgbV9vdmVybGF5R3JhcGhpY3NMYXll
cnMuZ2V0KG92ZXJsYXkpLT5zZXRCYWNrZ3JvdW5kQ29sb3Iob3ZlcmxheS0+YmFja2dyb3VuZENv
bG9yKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuaAppbmRl
eCBmMDRiNzI0Li44ODI0MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCkBAIC02NCw3ICs2NCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZURldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VFeHBvc2VkUmVjdCgpOwogICAgIHZvaWQgZGlkU2Nyb2xsRnJhbWUoV2ViQ29y
ZTo6RnJhbWUqKTsKKwogICAgIHZvaWQgZGlkQ2hhbmdlT3ZlcmxheUZyYW1lKFBhZ2VPdmVybGF5
Kik7CisgICAgdm9pZCBkaWRDaGFuZ2VPdmVybGF5QmFja2dyb3VuZENvbG9yKFBhZ2VPdmVybGF5
Kik7CiAKICAgICB2b2lkIGZsdXNoUGFnZU92ZXJsYXlMYXllcnMoV2ViQ29yZTo6RmxvYXRSZWN0
KTsKIAo=
</data>
<flag name="review"
          id="253615"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229265</attachid>
            <date>2014-04-13 23:36:53 -0700</date>
            <delta_ts>2014-04-14 00:03:32 -0700</delta_ts>
            <desc>check color validity</desc>
            <filename>background-color.diff</filename>
            <type>text/plain</type>
            <size>12104</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YzYyYzU5Li5mYTY3YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTQtMDQtMTMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgU3VwcG9ydCBzZXR0aW5nIGEgYmFja2dyb3VuZCBjb2xvciBvbiBwYWdlIG92ZXJs
YXlzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzE2
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpzZXREb2N1bWVudE92ZXJsYXlSb290TGF5ZXIpOgorICAgICAg
ICBNYXJrIHRoZSBjb21wb3NpdGluZyB0cmVlIGFzIG5lZWRpbmcgYSByZWJ1aWxkIHdoZW4gd2Ug
Z2V0IGEgbmV3IGRvY3VtZW50LXJlbGF0aXZlCisgICAgICAgIG92ZXJsYXkgbGF5ZXI7IG90aGVy
d2lzZSB3ZSB3ZXJlIGRlcGVuZGluZyBvbiBzb21ldGhpbmcgZWxzZSBjb21pbmcgYWxvbmcgYW5k
CisgICAgICAgIHJlcXVpcmluZyBhIHJlYnVpbGQsIHdoaWNoIGRpZG4ndCBhbHdheXMgaGFwcGVu
LgorCiAyMDE0LTA0LTEyICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBNb3ZlIFF1aWNrTG9va0hhbmRsZSBmcm9tIFJlc291cmNlTG9hZGVyIHRvIFdlYlJl
c291cmNlTG9hZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuY3BwCmluZGV4IGM4NDZlY2IuLmJiYTY0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0zODE5LDYg
KzM4MTksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2V0RG9jdW1lbnRPdmVybGF5
Um9vdExheWVyKEdyYXBoaWNzTGF5ZXIqIGRvY3VtZW50TwogICAgIGlmIChtX2RvY3VtZW50T3Zl
cmxheVJvb3RMYXllcikKICAgICAgICAgbV9kb2N1bWVudE92ZXJsYXlSb290TGF5ZXItPnJlbW92
ZUZyb21QYXJlbnQoKTsKICAgICBtX2RvY3VtZW50T3ZlcmxheVJvb3RMYXllciA9IGRvY3VtZW50
T3ZlcmxheVJvb3RMYXllcjsKKyAgICBzZXRDb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKHRy
dWUpOwogICAgIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclVwZGF0ZSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggNGI0YTE2My4uN2Q3ZjQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0
LTA0LTEzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAg
IFN1cHBvcnQgc2V0dGluZyBhIGJhY2tncm91bmQgY29sb3Igb24gcGFnZSBvdmVybGF5cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxNjAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6
UGFnZU92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6Ym91bmRzKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OnN0YXJ0RmFkZUluQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OnN0YXJ0RmFkZU91dEFuaW1hdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpzdGFydEZhZGVBbmltYXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlT3ZlcmxheTo6ZmFkZUFuaW1hdGlvblRpbWVyRmlyZWQpOgorICAgICAgICBNaW5v
ciBzdHlsZSBhZGp1c3RtZW50cy4KKworICAgICAgICAoV2ViS2l0OjpQYWdlT3ZlcmxheTo6c2V0
QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXk6OnNldE5lZWRz
RGlzcGxheSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VPdmVybGF5OjpiYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICBL
ZWVwIHRyYWNrIG9mIG91ciBiYWNrZ3JvdW5kIGNvbG9yLCBhbmQgcHVzaCBpdCBkb3duIHRvIHRo
ZSBwYWdlIG92ZXJsYXkgY29udHJvbGxlciBpZiB3ZSBoYXZlIG9uZS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0Ojp1cGRhdGVPdmVybGF5R2VvbWV0cnkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3Zlcmxh
eUNvbnRyb2xsZXI6OmNsZWFyUGFnZU92ZXJsYXkpOgorICAgICAgICBQYWdlIG92ZXJsYXlzIHdp
bGwgYWx3YXlzIGhhdmUgdGhlIHJpZ2h0IHNpemUsIGFuZCBqdXN0IHVzZSBkcmF3c0NvbnRlbnRz
IHRvIGRldGVybWluZQorICAgICAgICB3aGV0aGVyIG9yIG5vdCB0aGV5IHNob3VsZCB0aWxlL2hh
dmUgYmFja2luZyBzdG9yZS9ldGMuCisKKyAgICAgICAgKFdlYktpdDo6UGFnZU92ZXJsYXlDb250
cm9sbGVyOjppbnN0YWxsUGFnZU92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlT3Zlcmxh
eUNvbnRyb2xsZXI6OmRpZENoYW5nZU92ZXJsYXlCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICBT
ZXQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGxheWVyLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oOgorCiAyMDE0LTA0LTEyICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBNb3ZlIFF1aWNrTG9v
a0hhbmRsZSBmcm9tIFJlc291cmNlTG9hZGVyIHRvIFdlYlJlc291cmNlTG9hZGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmNwcAppbmRleCBi
YThhYzU5Li5lZTllYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvUGFnZU92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9QYWdlT3ZlcmxheS5jcHAKQEAgLTQ5LDEyICs0OSwxMiBAQCBQYXNzUmVmUHRyPFBhZ2VP
dmVybGF5PiBQYWdlT3ZlcmxheTo6Y3JlYXRlKENsaWVudCogY2xpZW50LCBPdmVybGF5VHlwZSBv
dmVybGF5VAogCiBQYWdlT3ZlcmxheTo6UGFnZU92ZXJsYXkoQ2xpZW50KiBjbGllbnQsIE92ZXJs
YXlUeXBlIG92ZXJsYXlUeXBlKQogICAgIDogbV9jbGllbnQoY2xpZW50KQotICAgICwgbV93ZWJQ
YWdlKDApCisgICAgLCBtX3dlYlBhZ2UobnVsbHB0cikKICAgICAsIG1fZmFkZUFuaW1hdGlvblRp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJlBhZ2VPdmVybGF5OjpmYWRlQW5pbWF0aW9uVGlt
ZXJGaXJlZCkKLSAgICAsIG1fZmFkZUFuaW1hdGlvblN0YXJ0VGltZSgwLjApCisgICAgLCBtX2Zh
ZGVBbmltYXRpb25TdGFydFRpbWUoMCkKICAgICAsIG1fZmFkZUFuaW1hdGlvbkR1cmF0aW9uKGZh
ZGVBbmltYXRpb25EdXJhdGlvbikKICAgICAsIG1fZmFkZUFuaW1hdGlvblR5cGUoTm9BbmltYXRp
b24pCi0gICAgLCBtX2ZyYWN0aW9uRmFkZWRJbigxLjApCisgICAgLCBtX2ZyYWN0aW9uRmFkZWRJ
bigxKQogICAgICwgbV9vdmVybGF5VHlwZShvdmVybGF5VHlwZSkKIHsKIH0KQEAgLTcyLDE2ICs3
MiwxNyBAQCBJbnRSZWN0IFBhZ2VPdmVybGF5Ojpib3VuZHMoKSBjb25zdAogCiAgICAgc3dpdGNo
IChtX292ZXJsYXlUeXBlKSB7CiAgICAgY2FzZSBPdmVybGF5VHlwZTo6VmlldzogewotICAgICAg
ICBpbnQgd2lkdGggPSBmcmFtZVZpZXctPndpZHRoKCk7Ci0gICAgICAgIGludCBoZWlnaHQgPSBm
cmFtZVZpZXctPmhlaWdodCgpOwotCi0gICAgICAgIGlmICghU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPnVzZXNPdmVybGF5U2Nyb2xsYmFycygpKSB7Ci0gICAgICAgICAgICBpZiAoZnJhbWVWaWV3
LT52ZXJ0aWNhbFNjcm9sbGJhcigpKQotICAgICAgICAgICAgICAgIHdpZHRoIC09IGZyYW1lVmll
dy0+dmVydGljYWxTY3JvbGxiYXIoKS0+d2lkdGgoKTsKLSAgICAgICAgICAgIGlmIChmcmFtZVZp
ZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSkKLSAgICAgICAgICAgICAgICBoZWlnaHQgLT0gZnJh
bWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCktPmhlaWdodCgpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBJbnRSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBJbnRTaXpl
IGZyYW1lU2l6ZSA9IGZyYW1lVmlldy0+c2l6ZSgpOworCisgICAgICAgIGlmIChTY3JvbGxiYXJU
aGVtZTo6dGhlbWUoKS0+dXNlc092ZXJsYXlTY3JvbGxiYXJzKCkpCisgICAgICAgICAgICByZXR1
cm4gSW50UmVjdChJbnRQb2ludCgpLCBmcmFtZVNpemUpOworCisgICAgICAgIGlmIChmcmFtZVZp
ZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCkpCisgICAgICAgICAgICBmcmFtZVNpemUuc2V0V2lkdGgo
ZnJhbWVTaXplLndpZHRoKCkgLSBmcmFtZVZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyKCktPndpZHRo
KCkpOworICAgICAgICBpZiAoZnJhbWVWaWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkpCisgICAg
ICAgICAgICBmcmFtZVNpemUuc2V0SGVpZ2h0KGZyYW1lU2l6ZS5oZWlnaHQoKSAtIGZyYW1lVmll
dy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpLT5oZWlnaHQoKSk7CisKKyAgICAgICAgcmV0dXJuIElu
dFJlY3QoSW50UG9pbnQoKSwgZnJhbWVTaXplKTsKICAgICB9CiAgICAgY2FzZSBPdmVybGF5VHlw
ZTo6RG9jdW1lbnQ6CiAgICAgICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KCksIGZyYW1lVmll
dy0+Y29udGVudHNTaXplKCkpOwpAQCAtMTA3LDYgKzEwOCwxNCBAQCB2b2lkIFBhZ2VPdmVybGF5
OjpzZXRGcmFtZShJbnRSZWN0IGZyYW1lKQogICAgICAgICBtX3dlYlBhZ2UtPnBhZ2VPdmVybGF5
Q29udHJvbGxlcigpLmRpZENoYW5nZU92ZXJsYXlGcmFtZSh0aGlzKTsKIH0KIAordm9pZCBQYWdl
T3ZlcmxheTo6c2V0QmFja2dyb3VuZENvbG9yKENvbG9yIGJhY2tncm91bmRDb2xvcikKK3sKKyAg
ICBtX2JhY2tncm91bmRDb2xvciA9IGJhY2tncm91bmRDb2xvcjsKKworICAgIGlmIChtX3dlYlBh
Z2UpCisgICAgICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuZGlkQ2hhbmdl
T3ZlcmxheUJhY2tncm91bmRDb2xvcih0aGlzKTsKK30KKwogdm9pZCBQYWdlT3ZlcmxheTo6c2V0
UGFnZShXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIG1fY2xpZW50LT53aWxsTW92ZVRvV2ViUGFn
ZSh0aGlzLCB3ZWJQYWdlKTsKQEAgLTExOCwxMCArMTI3LDExIEBAIHZvaWQgUGFnZU92ZXJsYXk6
OnNldFBhZ2UoV2ViUGFnZSogd2ViUGFnZSkKIAogdm9pZCBQYWdlT3ZlcmxheTo6c2V0TmVlZHNE
aXNwbGF5KGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKLSAgICBpZiAobV93ZWJQYWdlKSB7
Ci0gICAgICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJsYXlDb250cm9sbGVyKCkuc2V0UGFnZU92ZXJs
YXlPcGFjaXR5KHRoaXMsIG1fZnJhY3Rpb25GYWRlZEluKTsKLSAgICAgICAgbV93ZWJQYWdlLT5w
YWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5zZXRQYWdlT3ZlcmxheU5lZWRzRGlzcGxheSh0aGlzLCBk
aXJ0eVJlY3QpOwotICAgIH0KKyAgICBpZiAoIW1fd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV93ZWJQYWdlLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5zZXRQYWdlT3ZlcmxheU9w
YWNpdHkodGhpcywgbV9mcmFjdGlvbkZhZGVkSW4pOworICAgIG1fd2ViUGFnZS0+cGFnZU92ZXJs
YXlDb250cm9sbGVyKCkuc2V0UGFnZU92ZXJsYXlOZWVkc0Rpc3BsYXkodGhpcywgZGlydHlSZWN0
KTsKIH0KIAogdm9pZCBQYWdlT3ZlcmxheTo6c2V0TmVlZHNEaXNwbGF5KCkKQEAgLTE2MSw3ICsx
NzEsNyBAQCBXS0FycmF5UmVmIFBhZ2VPdmVybGF5Ojpjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZU5hbWVzKGJvb2wgcGFyYW1ldGVyaXplZE5hbWVzKQogCiB2b2lkIFBhZ2VPdmVybGF5OjpzdGFy
dEZhZGVJbkFuaW1hdGlvbigpCiB7Ci0gICAgbV9mcmFjdGlvbkZhZGVkSW4gPSAwLjA7CisgICAg
bV9mcmFjdGlvbkZhZGVkSW4gPSAwOwogICAgIG1fZmFkZUFuaW1hdGlvblR5cGUgPSBGYWRlSW5B
bmltYXRpb247CiAKICAgICBzdGFydEZhZGVBbmltYXRpb24oKTsKQEAgLTE2OSw3ICsxNzksNyBA
QCB2b2lkIFBhZ2VPdmVybGF5OjpzdGFydEZhZGVJbkFuaW1hdGlvbigpCiAKIHZvaWQgUGFnZU92
ZXJsYXk6OnN0YXJ0RmFkZU91dEFuaW1hdGlvbigpCiB7Ci0gICAgbV9mcmFjdGlvbkZhZGVkSW4g
PSAxLjA7CisgICAgbV9mcmFjdGlvbkZhZGVkSW4gPSAxOwogICAgIG1fZmFkZUFuaW1hdGlvblR5
cGUgPSBGYWRlT3V0QW5pbWF0aW9uOwogCiAgICAgc3RhcnRGYWRlQW5pbWF0aW9uKCk7CkBAIC0x
ODQsOCArMTk0LDYgQEAgdm9pZCBQYWdlT3ZlcmxheTo6c3RvcEZhZGVPdXRBbmltYXRpb24oKQog
dm9pZCBQYWdlT3ZlcmxheTo6c3RhcnRGYWRlQW5pbWF0aW9uKCkKIHsKICAgICBtX2ZhZGVBbmlt
YXRpb25TdGFydFRpbWUgPSBjdXJyZW50VGltZSgpOwotICAgIAotICAgIC8vIFN0YXJ0IHRoZSB0
aW1lcgogICAgIG1fZmFkZUFuaW1hdGlvblRpbWVyLnN0YXJ0UmVwZWF0aW5nKDEgLyBmYWRlQW5p
bWF0aW9uRnJhbWVSYXRlKTsKIH0KIApAQCAtMjA4LDEwICsyMTYsOSBAQCB2b2lkIFBhZ2VPdmVy
bGF5OjpmYWRlQW5pbWF0aW9uVGltZXJGaXJlZCgpCiAgICAgICAgIGJvb2wgd2FzRmFkaW5nT3V0
ID0gbV9mYWRlQW5pbWF0aW9uVHlwZSA9PSBGYWRlT3V0QW5pbWF0aW9uOwogICAgICAgICBtX2Zh
ZGVBbmltYXRpb25UeXBlID0gTm9BbmltYXRpb247CiAKLSAgICAgICAgaWYgKHdhc0ZhZGluZ091
dCkgewotICAgICAgICAgICAgLy8gSWYgdGhpcyB3YXMgYSBmYWRlIG91dCwgZ28gYWhlYWQgYW5k
IHVuaW5zdGFsbCB0aGUgcGFnZSBvdmVybGF5LgorICAgICAgICAvLyBJZiB0aGlzIHdhcyBhIGZh
ZGUgb3V0LCBnbyBhaGVhZCBhbmQgdW5pbnN0YWxsIHRoZSBwYWdlIG92ZXJsYXkuCisgICAgICAg
IGlmICh3YXNGYWRpbmdPdXQpCiAgICAgICAgICAgICBtX3dlYlBhZ2UtPnVuaW5zdGFsbFBhZ2VP
dmVybGF5KHRoaXMsIFBhZ2VPdmVybGF5OjpGYWRlTW9kZTo6RG9Ob3RGYWRlKTsKLSAgICAgICAg
fQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1BhZ2VPdmVybGF5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFn
ZU92ZXJsYXkuaAppbmRleCAwYTY0NWFmLi5iYjAwNGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXkuaApAQCAtMjgsNiArMjgsNyBAQAogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV0tCYXNlLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTkxLDYgKzkyLDkg
QEAgcHVibGljOgogICAgIFdlYkNvcmU6OkludFJlY3QgYm91bmRzKCkgY29uc3Q7CiAgICAgV2Vi
Q29yZTo6SW50UmVjdCBmcmFtZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0RnJhbWUoV2ViQ29yZTo6
SW50UmVjdCk7CisKKyAgICBXZWJDb3JlOjpDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KFdlYkNvcmU6OkNvbG9yKTsKICAgICAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBQYWdlT3Zl
cmxheShDbGllbnQqLCBPdmVybGF5VHlwZSk7CkBAIC0xMTcsNiArMTIxLDggQEAgcHJpdmF0ZToK
IAogICAgIE92ZXJsYXlUeXBlIG1fb3ZlcmxheVR5cGU7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBt
X292ZXJyaWRlRnJhbWU7CisKKyAgICBXZWJDb3JlOjpDb2xvciBtX2JhY2tncm91bmRDb2xvcjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAppbmRleCA1
OTQ5ZGZlLi5kYTJhNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcApAQCAtNjAsNiArNjAsMTcg
QEAgdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmluaXRpYWxpemUoKQogI2VuZGlmCiB9CiAK
K3N0YXRpYyB2b2lkIHVwZGF0ZU92ZXJsYXlHZW9tZXRyeShQYWdlT3ZlcmxheSogb3ZlcmxheSwg
R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKK3sKKyAgICBJbnRSZWN0IG92ZXJsYXlGcmFt
ZSA9IG92ZXJsYXktPmZyYW1lKCk7CisKKyAgICBpZiAob3ZlcmxheUZyYW1lLmxvY2F0aW9uKCkg
PT0gZ3JhcGhpY3NMYXllci0+cG9zaXRpb24oKSAmJiBvdmVybGF5RnJhbWUuc2l6ZSgpID09IGdy
YXBoaWNzTGF5ZXItPnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ3JhcGhpY3NMYXll
ci0+c2V0UG9zaXRpb24ob3ZlcmxheS0+ZnJhbWUoKS5sb2NhdGlvbigpKTsKKyAgICBncmFwaGlj
c0xheWVyLT5zZXRTaXplKG92ZXJsYXktPmZyYW1lKCkuc2l6ZSgpKTsKK30KKwogdm9pZCBQYWdl
T3ZlcmxheUNvbnRyb2xsZXI6Omluc3RhbGxQYWdlT3ZlcmxheShQYXNzUmVmUHRyPFBhZ2VPdmVy
bGF5PiBwYWdlT3ZlcmxheSwgUGFnZU92ZXJsYXk6OkZhZGVNb2RlIGZhZGVNb2RlKQogewogICAg
IEFTU0VSVChtX2RvY3VtZW50T3ZlcmxheVJvb3RMYXllcik7CkBAIC03OCw3ICs4OSwxMSBAQCB2
b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6aW5zdGFsbFBhZ2VPdmVybGF5KFBhc3NSZWZQdHI8
UGFnZU92ZXJsYXk+IHBhZ2VPdmVybAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzTGF5
ZXI+IGxheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKG1fd2ViUGFnZS0+ZHJhd2luZ0FyZWEo
KS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKSwgdGhpcyk7CiAgICAgbGF5ZXItPnNldEFuY2hvclBv
aW50KEZsb2F0UG9pbnQzRCgpKTsKLSAgICBsYXllci0+c2V0UG9zaXRpb24ob3ZlcmxheS0+ZnJh
bWUoKS5sb2NhdGlvbigpKTsKKworICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IG92ZXJsYXkt
PmJhY2tncm91bmRDb2xvcigpOworICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQor
ICAgICAgICBsYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGJhY2tncm91bmRDb2xvcik7CisgICAg
dXBkYXRlT3ZlcmxheUdlb21ldHJ5KG92ZXJsYXkuZ2V0KCksIGxheWVyLmdldCgpKTsKICNpZm5k
ZWYgTkRFQlVHCiAgICAgbGF5ZXItPnNldE5hbWUoIlBhZ2UgT3ZlcmxheSBjb250ZW50Iik7CiAj
ZW5kaWYKQEAgLTEzNCwxNiArMTQ5LDYgQEAgdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OnVw
ZGF0ZUZvcmNlU3luY2hyb25vdXNTY3JvbGxMYXllclBvc2l0aW9uVXBkYXRlcygpCiAjZW5kaWYK
IH0KIAotc3RhdGljIHZvaWQgdXBkYXRlT3ZlcmxheUdlb21ldHJ5KFBhZ2VPdmVybGF5KiBvdmVy
bGF5LCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQotewotICAgIGlmICghZ3JhcGhpY3NM
YXllci0+ZHJhd3NDb250ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdyYXBoaWNzTGF5
ZXItPnNldFBvc2l0aW9uKG92ZXJsYXktPmZyYW1lKCkubG9jYXRpb24oKSk7Ci0gICAgZ3JhcGhp
Y3NMYXllci0+c2V0U2l6ZShvdmVybGF5LT5mcmFtZSgpLnNpemUoKSk7Ci0gICAgZ3JhcGhpY3NM
YXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci19Ci0KIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVy
OjpzZXRQYWdlT3ZlcmxheU5lZWRzRGlzcGxheShQYWdlT3ZlcmxheSogb3ZlcmxheSwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KQogewogICAgIEdyYXBoaWNzTGF5ZXIqIGdyYXBo
aWNzTGF5ZXIgPSBtX292ZXJsYXlHcmFwaGljc0xheWVycy5nZXQob3ZlcmxheSk7CkBAIC0xNzQs
NyArMTc5LDYgQEAgdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmNsZWFyUGFnZU92ZXJsYXko
UGFnZU92ZXJsYXkqIG92ZXJsYXkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGdyYXBoaWNzTGF5
ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7Ci0gICAgZ3JhcGhpY3NMYXllci0+c2V0U2l6ZShJ
bnRTaXplKCkpOwogfQogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlVmll
d1NpemUoKQpAQCAtMzEwLDQgKzMxNCwxNSBAQCB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6
ZGlkQ2hhbmdlT3ZlcmxheUZyYW1lKFBhZ2VPdmVybGF5KiBvdmVybGF5KQogICAgIHVwZGF0ZU92
ZXJsYXlHZW9tZXRyeShvdmVybGF5LCBncmFwaGljc0xheWVyKTsKIH0KIAordm9pZCBQYWdlT3Zl
cmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZU92ZXJsYXlCYWNrZ3JvdW5kQ29sb3IoUGFnZU92ZXJs
YXkqIG92ZXJsYXkpCit7CisgICAgQVNTRVJUKG1fcGFnZU92ZXJsYXlzLmNvbnRhaW5zKG92ZXJs
YXkpKTsKKyAgICBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyID0gbV9vdmVybGF5R3JhcGhp
Y3NMYXllcnMuZ2V0KG92ZXJsYXkpOworICAgIENvbG9yIGJhY2tncm91bmRDb2xvciA9IG92ZXJs
YXktPmJhY2tncm91bmRDb2xvcigpOworICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgp
KQorICAgICAgICBncmFwaGljc0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoYmFja2dyb3VuZENv
bG9yKTsKKyAgICBlbHNlCisgICAgICAgIGdyYXBoaWNzTGF5ZXItPnNldEJhY2tncm91bmRDb2xv
cihDb2xvcjo6dHJhbnNwYXJlbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheUNvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9QYWdlT3ZlcmxheUNv
bnRyb2xsZXIuaAppbmRleCBmMDRiNzI0Li44ODI0MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCkBA
IC02NCw3ICs2NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZURldmljZVNjYWxlRmFj
dG9yKCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VFeHBvc2VkUmVjdCgpOwogICAgIHZvaWQgZGlkU2Ny
b2xsRnJhbWUoV2ViQ29yZTo6RnJhbWUqKTsKKwogICAgIHZvaWQgZGlkQ2hhbmdlT3ZlcmxheUZy
YW1lKFBhZ2VPdmVybGF5Kik7CisgICAgdm9pZCBkaWRDaGFuZ2VPdmVybGF5QmFja2dyb3VuZENv
bG9yKFBhZ2VPdmVybGF5Kik7CiAKICAgICB2b2lkIGZsdXNoUGFnZU92ZXJsYXlMYXllcnMoV2Vi
Q29yZTo6RmxvYXRSZWN0KTsKIAo=
</data>
<flag name="review"
          id="253632"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>