<?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>43101</bug_id>
          
          <creation_ts>2010-07-27 19:32:03 -0700</creation_ts>
          <short_desc>Using glMapTexSubImage2d in VideoLayerChromium</short_desc>
          <delta_ts>2010-08-05 04:15:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Victoria Kirst">vrk</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fishd</cc>
    
    <cc>hclam</cc>
    
    <cc>scherkus</cc>
    
    <cc>vangelis</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>256998</commentid>
    <comment_count>0</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-07-27 19:32:03 -0700</bug_when>
    <thetext>Using glMapTexSubImage2d in VideoLayerChromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257002</commentid>
    <comment_count>1</comment_count>
      <attachid>62789</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-07-27 19:35:51 -0700</bug_when>
    <thetext>Created attachment 62789
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257252</commentid>
    <comment_count>2</comment_count>
      <attachid>62789</attachid>
    <who name="Andrew Scherkus">scherkus</who>
    <bug_when>2010-07-28 11:02:30 -0700</bug_when>
    <thetext>Comment on attachment 62789
Patch

Few tiny nits... we&apos;ll probably need vangelis/darin to take a look.


WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:99
 +      // This is needed to get text to show up correctly. Without it,
indentation

WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:119
 +  #error &quot;Need to implement for your platform.&quot;
Do you know if this will this break Chromium Mac since they don&apos;t use Skia?

WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:129
 +      ASSERT(skiaBitmap);
I think this will always be true since a reftype (const SkBitmap&amp;) can&apos;t be NULL (it&apos;s sitting on your stack or in heap memory somewhere).  Therefore taking an address of that will always produce a non-NULL address.  Actually do we even need skiaBitmap?  It looks like you can do all operations in this function using bitmap.

WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:158
 +      ASSERT(skiaBitmap);
ditto for here

WebCore/platform/graphics/chromium/VideoLayerChromium.h:59
 +  
remove extra lines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257256</commentid>
    <comment_count>3</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-07-28 11:24:39 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 62789 [details])
&gt; Few tiny nits... we&apos;ll probably need vangelis/darin to take a look.
&gt; 
&gt; 
&gt; WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:99
&gt;  +      // This is needed to get text to show up correctly. Without it,
&gt; indentation
Thanks! Fixed.


&gt; WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:119
&gt;  +  #error &quot;Need to implement for your platform.&quot;
&gt; Do you know if this will this break Chromium Mac since they don&apos;t use Skia?
Not sure, but it looks to be the case. Not sure how we handle Mac stuff. 

BTW, what I did to implement this version of VideoLayerChromium.cpp is I copied everything in LayerChromium.cpp then changed the code as necessary to make it work for glMapTexSubImage2D, so problems here are also in LayerChromium. But this brings up a related point, there&apos;s nothing really video-specific to what I&apos;m doing here in VideoLayerChromium yet. Do you think I should actually be modifying LayerChromium.cpp with these changes, then have VideoLayerChromium.cpp essentially still just inherit LayerChromium.cpp behavior?

&gt; WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:129
&gt;  +      ASSERT(skiaBitmap);
&gt; I think this will always be true since a reftype (const SkBitmap&amp;) can&apos;t be NULL (it&apos;s sitting on your stack or in heap memory somewhere).  Therefore taking an address of that will always produce a non-NULL address.  Actually do we even need skiaBitmap?  It looks like you can do all operations in this function using bitmap.

Right, again I was copying what was done in LayerChromium.cpp, so I thought it might be some WebKit stylistic thing to make the code arguably more readable by avoiding reftypes. Let me know what you think is best, and I should probably update LayerChromium.cpp to match (or like I said earlier, maybe I should be modifying LayerChromium.cpp to begin with).

&gt; 
&gt; WebCore/platform/graphics/chromium/VideoLayerChromium.cpp:158
&gt;  +      ASSERT(skiaBitmap);
&gt; ditto for here
&gt; 
&gt; WebCore/platform/graphics/chromium/VideoLayerChromium.h:59
&gt;  +  
&gt; remove extra lines
Thanks! Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257259</commentid>
    <comment_count>4</comment_count>
      <attachid>62849</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-07-28 11:27:23 -0700</bug_when>
    <thetext>Created attachment 62849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257363</commentid>
    <comment_count>5</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-07-28 14:41:09 -0700</bug_when>
    <thetext>I think that if you&apos;re relying on the GraphicsContext to render the contents of your video layer then there&apos;s no reason to create a different layer type for it. I thought that the video layer would have direct pointer
to the memory containing the frame data so that it can populate the texture directly from there. With the code the way it is, every time you get a new video frame you will create a temporary GraphicsContext and Skia canvas of that
size (one large mem allocation), call the GraphicsContext to render the video frame to it (one large mem copy) and then update the texture.

The code for using mapped memory for texture updates should move over to LayerChromium as you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257379</commentid>
    <comment_count>6</comment_count>
    <who name="Andrew Scherkus">scherkus</who>
    <bug_when>2010-07-28 15:03:12 -0700</bug_when>
    <thetext>I guess right now we&apos;re not doing anything too special but the next step is doing YUV + shader stuff where we will have access to the frame data directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257402</commentid>
    <comment_count>7</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-07-28 15:43:05 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I guess right now we&apos;re not doing anything too special but the next step is doing YUV + shader stuff where we will have access to the frame data directly.

Once you have access to the frame data, most of this code will go away. Would it make sense to wire that direct access up (even if you get an RGB buffer) instead of going through this intermediate step?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257514</commentid>
    <comment_count>8</comment_count>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-07-28 18:42:08 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I think that if you&apos;re relying on the GraphicsContext to render the contents of your video layer then there&apos;s no reason to create a different layer type for it. 

Actually, this implementation is still somewhat just a rough, crappy implementation of VideoLayerChromium. Sorry I didn&apos;t make that clear! In our hypothetical final version, we would not use GraphicsContext to render the contents of the video layer.

&gt; I thought that the video layer would have direct pointer to the memory containing the frame data so that it can populate the texture directly from there. 

Yes, this is what we want to do! Our next steps are figuring out how we can best get the direct pointer of frame data to the VideoLayerChromium, but in the meantime we wanted some crappy VideoLayerChromium to play around with (which is this, haha). Happily, even this crappy version gives us a slight (5-10%) CPU usage decrease.

&gt; The code for using mapped memory for texture updates should move over to LayerChromium as you suggested.

This is actually turning out to be a bigger change than I thought since it&apos;s going to change some of the LayerChromium API, so it&apos;s something that we should probably talk about before I just hack away. The issue in particular is that updateTextureRect() is a protected function when I thought it was a private function. updateTextureRect() takes a void* pixels, which means that in order to use glMapTexSubImage2D, you are forced to do a memcpy from pixels to the texture memory mapped out from glMapTexSubImage2D. I think this would be a superfluous memcpy in many cases, including in VideoLayerChromium. 

Anyway, I would like to just keep this VideoLayerChromium for now, knowing that it&apos;s going to change a lot when we figure out how to get the frame data to it. LayerChromium needs to be revised to use glMapTexSubImage2D -- and I&apos;d be happy to do it -- but I think we need to discuss it a bit more and it should certainly be in a different cl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259197</commentid>
    <comment_count>9</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2010-08-02 16:53:10 -0700</bug_when>
    <thetext>I think this is an important step as proof of concept and showed how to use the gl commands properly.

The final version will have a different approach for getting the video content, but the commands for uploading texture content will still be the same (just more uploads). So I think this is a nice stop for us to iterate.

This patch is looking good to me, is there any other comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259238</commentid>
    <comment_count>10</comment_count>
    <who name="Vangelis Kokkevis">vangelis</who>
    <bug_when>2010-08-02 18:11:30 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I think this is an important step as proof of concept and showed how to use the gl commands properly.
&gt; 
&gt; The final version will have a different approach for getting the video content, but the commands for uploading texture content will still be the same (just more uploads). So I think this is a nice stop for us to iterate.
&gt; 
&gt; This patch is looking good to me, is there any other comments?

No objections here to checking it in although I really do think that almost all the code that&apos;s in the VideoLayerChromium will disappear once you stop rendering via the GraphicsContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259549</commentid>
    <comment_count>11</comment_count>
      <attachid>62849</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-03 10:56:05 -0700</bug_when>
    <thetext>Comment on attachment 62849
Patch

Just a few very trivial details that it would be nice to clean up.

&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; +2010-07-27  Victoria Kirst  &lt;vrk@google.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Added logic to use glMapTexSubImage2D to write video layer to GPU
&gt; +        texture. Also fixes CPU usage problem from previous patch.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=43101

Please explain why there are no tests added.

&quot;No change in user visible functionality (since it isn&apos;t turned on), so no new tests.&quot;

When this does become enabled either there needs to be tests or an indication of what tests cover the functionality.


&gt; diff --git a/WebCore/platform/graphics/chromium/VideoLayerChromium.cpp b/WebCore/platform/graphics/chromium/VideoLayerChromium.cpp
&gt;  
&gt; +#include &quot;LayerRendererChromium.h&quot;
&gt; +#if PLATFORM(SKIA)
&gt; +#include &quot;NativeImageSkia.h&quot;
&gt; +#include &quot;PlatformContextSkia.h&quot;
&gt; +#endif

#if&apos;ed includes should come after all other includes.

&gt; +#include &quot;RenderLayerBacking.h&quot;
&gt; +#include &quot;skia/ext/platform_canvas.h&quot;
&gt; +
&gt; +#include &lt;GLES2/gl2.h&gt;
&gt; +
&gt; +#define GL_GLEXT_PROTOTYPES
&gt; +#include &lt;GLES2/gl2ext.h&gt;
&gt; +

&gt; +    // If the texture needs to be reallocated then we must redraw the entire

Please add a &quot;,&quot; before then.


&gt; +        // FIXME: Does this take us down a very slow text rendering path?
&gt; +        // FIXME: why is this is a windows-only call ?

*W*hy (and the space before the ? is odd.)


&gt; +    // If the texture id or size changed since last time then we need to tell GL
Please add a &quot;,&quot; before then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259562</commentid>
    <comment_count>12</comment_count>
      <attachid>63354</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-03 11:11:37 -0700</bug_when>
    <thetext>Created attachment 63354
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259564</commentid>
    <comment_count>13</comment_count>
      <attachid>63354</attachid>
    <who name="Victoria Kirst">vrk</who>
    <bug_when>2010-08-03 11:14:01 -0700</bug_when>
    <thetext>Comment on attachment 63354
Patch

Fixed code based on Dave&apos;s suggestions. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260509</commentid>
    <comment_count>14</comment_count>
      <attachid>63354</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-05 04:15:41 -0700</bug_when>
    <thetext>Comment on attachment 63354
Patch

Clearing flags on attachment: 63354

Committed r64731: &lt;http://trac.webkit.org/changeset/64731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260510</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-05 04:15:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62789</attachid>
            <date>2010-07-27 19:35:51 -0700</date>
            <delta_ts>2010-07-28 11:27:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43101-20100727193550.patch</filename>
            <type>text/plain</type>
            <size>9081</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NWE1MDNiY2JlMWM1MGZmMWY0NzYxMmQ4MmUyMzQ5MWJhMDUyNmZlZS4uNjllZTk2ZTUxYjdkMDY0
ZWMyMzNkZThjYmI1NzAzOGYyYjAwMGFjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNy0yNyAgVmlj
dG9yaWEgS2lyc3QgIDx2cmtAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBsb2dpYyB0byB1c2UgZ2xNYXBUZXhTdWJJbWFn
ZTJEIHRvIHdyaXRlIHZpZGVvIGxheWVyIHRvIEdQVQorICAgICAgICB0ZXh0dXJlLiBBbHNvIGZp
eGVzIENQVSB1c2FnZSBwcm9ibGVtIGZyb20gcHJldmlvdXMgcGF0Y2guCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzEwMQorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBsZXRl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmg6CisKIDIwMTAtMDctMjcgIEphbWVzIEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDVhYzBlNTc4ZGZlNTdjNWYyYzEwNTE5NGZiNGFiMWU5MjQwNGE3MTMuLmY0Mjg5M2Rm
ZDU1NmVmMmZiNDkxYjViOWY3NzZmOWIwMWFiZTdlOWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTM0LDYgKzM0LDIwIEBACiAKICNpbmNsdWRlICJWaWRlb0xheWVyQ2hyb21pdW0uaCIKIAorI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2lmIFBMQVRGT1JNKFNLSUEpCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5o
IgorI2VuZGlmCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCisjaW5jbHVkZSAic2tp
YS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCisKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKworI2Rl
ZmluZSBHTF9HTEVYVF9QUk9UT1RZUEVTCisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlk
ZW9MYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKQEAg
LTQzLDcgKzU3LDEyNCBAQCBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXll
ckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKgogCiBWaWRlb0xheWVyQ2hy
b21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQog
ICAgIDogTGF5ZXJDaHJvbWl1bShvd25lcikKKyAgICAsIG1fYWxsb2NhdGVkVGV4dHVyZUlkKDAp
CisgICAgLCBtX2NhbnZhcygwKQorICAgICwgbV9za2lhQ29udGV4dCgwKQorICAgICwgbV9ncmFw
aGljc0NvbnRleHQoMCkKK3sKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZVRl
eHR1cmVDb250ZW50cyh1bnNpZ25lZCB0ZXh0dXJlSWQpCit7CisgICAgUmVuZGVyTGF5ZXJCYWNr
aW5nKiBiYWNraW5nID0gc3RhdGljX2Nhc3Q8UmVuZGVyTGF5ZXJCYWNraW5nKj4obV9vd25lci0+
Y2xpZW50KCkpOworICAgIGlmICghYmFja2luZyB8fCBiYWNraW5nLT5wYWludGluZ0dvZXNUb1dp
bmRvdygpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZHJhd3NDb250ZW50KCkpOwor
CisgICAgSW50UmVjdCBkaXJ0eVJlY3QobV9kaXJ0eVJlY3QpOworICAgIEludFNpemUgcmVxdWly
ZWRUZXh0dXJlU2l6ZTsKKworI2lmIFBMQVRGT1JNKFNLSUEpCisgICAgcmVxdWlyZWRUZXh0dXJl
U2l6ZSA9IG1fYm91bmRzOworICAgIEludFJlY3QgYm91bmRzUmVjdChJbnRQb2ludCgwLCAwKSwg
bV9ib3VuZHMpOworCisgICAgLy8gSWYgdGhlIHRleHR1cmUgbmVlZHMgdG8gYmUgcmVhbGxvY2F0
ZWQgdGhlbiB3ZSBtdXN0IHJlZHJhdyB0aGUgZW50aXJlCisgICAgLy8gY29udGVudHMgb2YgdGhl
IGxheWVyLgorICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplICE9IG1fYWxsb2NhdGVkVGV4dHVy
ZVNpemUpCisgICAgICAgIGRpcnR5UmVjdCA9IGJvdW5kc1JlY3Q7CisgICAgZWxzZSB7CisgICAg
ICAgIC8vIENsaXAgdGhlIGRpcnR5UmVjdCB0byB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgdG8gYXZv
aWQgZHJhd2luZyBvdXRzaWRlCisgICAgICAgIC8vIHRoZSBib3VuZHMgb2YgdGhlIGJhY2tpbmcg
dGV4dHVyZS4KKyAgICAgICAgZGlydHlSZWN0LmludGVyc2VjdChib3VuZHNSZWN0KTsKKyAgICB9
CisKKyAgICBpZiAoIW1fY2FudmFzLmdldCgpCisgICAgICAgIHx8IGRpcnR5UmVjdC53aWR0aCgp
ICE9IG1fY2FudmFzLT5nZXREZXZpY2UoKS0+d2lkdGgoKQorICAgICAgICB8fCBkaXJ0eVJlY3Qu
aGVpZ2h0KCkgIT0gbV9jYW52YXMtPmdldERldmljZSgpLT5oZWlnaHQoKSkgeworICAgICAgICBt
X2NhbnZhcyA9IG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhkaXJ0eVJlY3Qud2lkdGgoKSwgZGly
dHlSZWN0LmhlaWdodCgpLCB0cnVlKTsKKyAgICAgICAgbV9za2lhQ29udGV4dCA9IG5ldyBQbGF0
Zm9ybUNvbnRleHRTa2lhKG1fY2FudmFzLmdldCgpKTsKKworI2lmIE9TKFdJTkRPV1MpCisgICAg
Ly8gVGhpcyBpcyBuZWVkZWQgdG8gZ2V0IHRleHQgdG8gc2hvdyB1cCBjb3JyZWN0bHkuIFdpdGhv
dXQgaXQsCisgICAgLy8gR0RJIHJlbmRlcnMgd2l0aCB6ZXJvIGFscGhhIGFuZCB0aGUgdGV4dCBi
ZWNvbWVzIGludmlzaWJsZS4KKyAgICAvLyBVbmZvcnR1bmF0ZWx5LCBzZXR0aW5nIHRoaXMgdG8g
dHJ1ZSBkaXNhYmxlcyBjbGVhcnR5cGUuCisgICAgLy8gRklYTUU6IERvZXMgdGhpcyB0YWtlIHVz
IGRvd24gYSB2ZXJ5IHNsb3cgdGV4dCByZW5kZXJpbmcgcGF0aD8KKyAgICAvLyBGSVhNRTogd2h5
IGlzIHRoaXMgaXMgYSB3aW5kb3dzLW9ubHkgY2FsbCA/CisgICAgICAgIG1fc2tpYUNvbnRleHQt
PnNldERyYXdpbmdUb0ltYWdlQnVmZmVyKHRydWUpOworI2VuZGlmCisgICAgICAgIG1fZ3JhcGhp
Y3NDb250ZXh0ID0gbmV3IEdyYXBoaWNzQ29udGV4dChyZWludGVycHJldF9jYXN0PFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0Kj4obV9za2lhQ29udGV4dC5nZXQoKSkpOworICAgIH0KKworICAgIC8v
IEJyaW5nIHRoZSBjYW52YXMgaW50byB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlIHBhaW50
IHJlY3QuCisgICAgbV9jYW52YXMtPnRyYW5zbGF0ZShzdGF0aWNfY2FzdDxTa1NjYWxhcj4oLWRp
cnR5UmVjdC54KCkpLCBzdGF0aWNfY2FzdDxTa1NjYWxhcj4oLWRpcnR5UmVjdC55KCkpKTsKKwor
ICAgIC8vIElmIHRoZSB0ZXh0dXJlIGlkIG9yIHNpemUgY2hhbmdlZCBzaW5jZSBsYXN0IHRpbWUg
dGhlbiB3ZSBuZWVkIHRvIHRlbGwgR0wKKyAgICAvLyB0byByZS1hbGxvY2F0ZSBhIHRleHR1cmUu
CisgICAgaWYgKG1fYWxsb2NhdGVkVGV4dHVyZUlkICE9IHRleHR1cmVJZCB8fCByZXF1aXJlZFRl
eHR1cmVTaXplICE9IG1fYWxsb2NhdGVkVGV4dHVyZVNpemUpCisgICAgICAgIGNyZWF0ZVRleHR1
cmVSZWN0KHJlcXVpcmVkVGV4dHVyZVNpemUsIGRpcnR5UmVjdCwgdGV4dHVyZUlkKTsKKyAgICBl
bHNlCisgICAgICAgIHVwZGF0ZVRleHR1cmVSZWN0KGRpcnR5UmVjdCwgdGV4dHVyZUlkKTsKKyNl
bHNlCisjZXJyb3IgIk5lZWQgdG8gaW1wbGVtZW50IGZvciB5b3VyIHBsYXRmb3JtLiIKKyNlbmRp
ZgorfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVJlY3QoY29uc3Qg
SW50U2l6ZSYgcmVxdWlyZWRUZXh0dXJlU2l6ZSwgY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCwg
dW5zaWduZWQgdGV4dHVyZUlkKQoreworICAgIC8vIFBhaW50IGludG8gZ3JhcGhpY3MgY29udGV4
dCBhbmQgZ2V0IGJpdG1hcC4KKyAgICBtX293bmVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50
cygqbV9ncmFwaGljc0NvbnRleHQsIHVwZGF0ZVJlY3QpOworICAgIGNvbnN0IFNrQml0bWFwJiBi
aXRtYXAgPSBtX2NhbnZhcy0+Z2V0RGV2aWNlKCktPmFjY2Vzc0JpdG1hcChmYWxzZSk7CisgICAg
Y29uc3QgU2tCaXRtYXAqIHNraWFCaXRtYXAgPSAmYml0bWFwOworICAgIEFTU0VSVChza2lhQml0
bWFwKTsKKworICAgIHZvaWQqIHBpeGVscyA9IDA7CisgICAgSW50U2l6ZSBiaXRtYXBTaXplOwor
ICAgIFNrQXV0b0xvY2tQaXhlbHMgbG9jaygqc2tpYUJpdG1hcCk7CisgICAgU2tCaXRtYXA6OkNv
bmZpZyBza2lhQ29uZmlnID0gc2tpYUJpdG1hcC0+Y29uZmlnKCk7CisgICAgLy8gRklYTUU6IGRv
IHdlIG5lZWQgdG8gc3VwcG9ydCBtb3JlIGltYWdlIGNvbmZpZ3VyYXRpb25zPworICAgIGlmIChz
a2lhQ29uZmlnID09IFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZykgeworICAgICAgICBwaXhl
bHMgPSBza2lhQml0bWFwLT5nZXRQaXhlbHMoKTsKKyAgICAgICAgYml0bWFwU2l6ZSA9IEludFNp
emUoc2tpYUJpdG1hcC0+d2lkdGgoKSwgc2tpYUJpdG1hcC0+aGVpZ2h0KCkpOworICAgIH0KKwor
ICAgIGlmICghcGl4ZWxzKQorICAgICAgICByZXR1cm47CisKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIHRleHR1cmVJZCk7CisgICAgQVNTRVJUKGJpdG1hcFNpemUgPT0gcmVxdWly
ZWRUZXh0dXJlU2l6ZSk7CisgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JH
QkEsIHJlcXVpcmVkVGV4dHVyZVNpemUud2lkdGgoKSwgcmVxdWlyZWRUZXh0dXJlU2l6ZS5oZWln
aHQoKSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKKworICAgIG1fYWxs
b2NhdGVkVGV4dHVyZUlkID0gdGV4dHVyZUlkOworICAgIG1fYWxsb2NhdGVkVGV4dHVyZVNpemUg
PSByZXF1aXJlZFRleHR1cmVTaXplOworCisgICAgdXBkYXRlQ29tcGxldGVkKCk7Cit9CisKK3Zv
aWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJlUmVjdChjb25zdCBJbnRSZWN0JiB1
cGRhdGVSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQpCit7CisgICAgY29uc3QgU2tCaXRtYXAmIGJp
dG1hcCA9IG1fY2FudmFzLT5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFwKHRydWUpOworICAgIFNr
Qml0bWFwKiBza2lhQml0bWFwID0gY29uc3RfY2FzdDxTa0JpdG1hcCo+KCZiaXRtYXApOworICAg
IEFTU0VSVChza2lhQml0bWFwKTsKKworICAgIFNrQXV0b0xvY2tQaXhlbHMgbG9jaygqc2tpYUJp
dG1hcCk7CisgICAgU2tCaXRtYXA6OkNvbmZpZyBza2lhQ29uZmlnID0gc2tpYUJpdG1hcC0+Y29u
ZmlnKCk7CisKKyAgICBpZiAoc2tpYUNvbmZpZyA9PSBTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25m
aWcpIHsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlSWQpOwor
ICAgICAgICB2b2lkKiBtZW0gPSBnbE1hcFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
dXBkYXRlUmVjdC54KCksIHVwZGF0ZVJlY3QueSgpLCB1cGRhdGVSZWN0LndpZHRoKCksIHVwZGF0
ZVJlY3QuaGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIEdMX1dSSVRFX09OTFkp
OworICAgICAgICBza2lhQml0bWFwLT5zZXRQaXhlbHMobWVtKTsKKyAgICAgICAgbV9vd25lci0+
cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoKm1fZ3JhcGhpY3NDb250ZXh0LCB1cGRhdGVSZWN0
KTsKKyAgICAgICAgZ2xVbm1hcFRleFN1YkltYWdlMkQobWVtKTsKKyAgICB9CisKKyAgICB1cGRh
dGVDb21wbGV0ZWQoKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBs
ZXRlZCgpCiB7CisgICAgbV9kaXJ0eVJlY3Quc2V0U2l6ZShGbG9hdFNpemUoKSk7CisgICAgbV9j
b250ZW50c0RpcnR5ID0gZmFsc2U7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDFmYTgwMDk1
ZGM4NjVjMzgzNmIyYWIzMjZlZDRiM2ZhNDk1MzAxNGEuLjUxY2VhMTZmOTY5YjY0N2I3MDRiZjVm
Yjk4YzE2N2QxZjY1MmU3MzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAtNDMsOSArNDMsMjEgQEAgY2xh
c3MgVmlkZW9MYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSogb3duZXIgPSAwKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50
KCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlQ29udGVu
dHModW5zaWduZWQgdGV4dHVyZUlkKTsKIAogcHJpdmF0ZToKICAgICBWaWRlb0xheWVyQ2hyb21p
dW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CisgICAgdm9pZCBjcmVhdGVUZXh0dXJl
UmVjdChjb25zdCBJbnRTaXplJiByZXF1aXJlZFRleHR1cmVTaXplLCBjb25zdCBJbnRSZWN0JiB1
cGRhdGVSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQpOworICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJl
Y3QoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkKTsKKyAgICB2
b2lkIHVwZGF0ZUNvbXBsZXRlZCgpOworCisgICAgdW5zaWduZWQgbV9hbGxvY2F0ZWRUZXh0dXJl
SWQ7CisgICAgSW50U2l6ZSBtX2FsbG9jYXRlZFRleHR1cmVTaXplOworICAgIE93blB0cjxza2lh
OjpQbGF0Zm9ybUNhbnZhcz4gbV9jYW52YXM7CisgICAgT3duUHRyPFBsYXRmb3JtQ29udGV4dFNr
aWE+IG1fc2tpYUNvbnRleHQ7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gbV9ncmFwaGlj
c0NvbnRleHQ7CisKKwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTY0NmE3OTBlYWQyMzIwODkx
ZDM0NzQ4NzRlMGFkZDExOWI2MmU3Zi4uZWYzNGQzNTdkOTU1MjI3NDFhMzgwN2U5YWIzMGRlNWQx
NjU0NGJhZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDctMjcgIFZpY3Rv
cmlhIEtpcnN0ICA8dnJrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSByZXBhaW50IHJlcXVlc3Qgc28gdGhhdCBWaWRl
b0xheWVyQ2hyb21pdW0gZG9lcyBub3QgaGF2ZQorICAgICAgICBhIGZsaWNrZXJpbmcgcHJvYmxl
bSB3aGVuIHBsYXlpbmcgdmlkZW8uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00MzEwMQorCisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVw
YWludCk6CisKIDIwMTAtMDctMjcgIEphbWVzIEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBCdWlsZCBGaXguIApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IDJiMGM5YTcyYzEyYjcz
ZTNiN2I1YmRkMGEzZjg2ZTc3MWU3ZjY2ODYuLjhmMjEwYTBmM2JlNzcxYWQyYTcyMzljYWNjZDk0
ODQ4MjY2MWQwZjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5jcHAKQEAgLTEyNiw2ICsxMjYsMTAgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OnRpbWVDaGFuZ2VkKCkKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpy
ZXBhaW50KCkKIHsKICAgICBBU1NFUlQobV9tZWRpYVBsYXllcik7CisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChtX3ZpZGVvTGF5ZXIuZ2V0KCkgJiYgc3VwcG9ydHNB
Y2NlbGVyYXRlZFJlbmRlcmluZygpKQorICAgICAgICBtX3ZpZGVvTGF5ZXItPnNldE5lZWRzRGlz
cGxheShGbG9hdFJlY3QoMCwgMCwgbV92aWRlb0xheWVyLT5ib3VuZHMoKS53aWR0aCgpLCBtX3Zp
ZGVvTGF5ZXItPmJvdW5kcygpLmhlaWdodCgpKSk7CisjZW5kaWYKICAgICBtX21lZGlhUGxheWVy
LT5yZXBhaW50KCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62849</attachid>
            <date>2010-07-28 11:27:23 -0700</date>
            <delta_ts>2010-08-03 11:11:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43101-20100728112722.patch</filename>
            <type>text/plain</type>
            <size>9097</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NWE1MDNiY2JlMWM1MGZmMWY0NzYxMmQ4MmUyMzQ5MWJhMDUyNmZlZS4uNjllZTk2ZTUxYjdkMDY0
ZWMyMzNkZThjYmI1NzAzOGYyYjAwMGFjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wNy0yNyAgVmlj
dG9yaWEgS2lyc3QgIDx2cmtAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBsb2dpYyB0byB1c2UgZ2xNYXBUZXhTdWJJbWFn
ZTJEIHRvIHdyaXRlIHZpZGVvIGxheWVyIHRvIEdQVQorICAgICAgICB0ZXh0dXJlLiBBbHNvIGZp
eGVzIENQVSB1c2FnZSBwcm9ibGVtIGZyb20gcHJldmlvdXMgcGF0Y2guCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzEwMQorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAgICAg
ICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBsZXRl
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmg6CisKIDIwMTAtMDctMjcgIEphbWVzIEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDVhYzBlNTc4ZGZlNTdjNWYyYzEwNTE5NGZiNGFiMWU5MjQwNGE3MTMuLmRmNDBmOWM3
ODZmN2YzNGYyMDYyMjJmMTk5MTkzYWU5YzQyMmE5YjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTM0LDYgKzM0LDIwIEBACiAKICNpbmNsdWRlICJWaWRlb0xheWVyQ2hyb21pdW0uaCIKIAorI2lu
Y2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2lmIFBMQVRGT1JNKFNLSUEpCisjaW5j
bHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5o
IgorI2VuZGlmCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCisjaW5jbHVkZSAic2tp
YS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCisKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKworI2Rl
ZmluZSBHTF9HTEVYVF9QUk9UT1RZUEVTCisjaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+CisKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlk
ZW9MYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKQEAg
LTQzLDcgKzU3LDEyNCBAQCBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXll
ckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKgogCiBWaWRlb0xheWVyQ2hy
b21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQog
ICAgIDogTGF5ZXJDaHJvbWl1bShvd25lcikKKyAgICAsIG1fYWxsb2NhdGVkVGV4dHVyZUlkKDAp
CisgICAgLCBtX2NhbnZhcygwKQorICAgICwgbV9za2lhQ29udGV4dCgwKQorICAgICwgbV9ncmFw
aGljc0NvbnRleHQoMCkKK3sKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZVRl
eHR1cmVDb250ZW50cyh1bnNpZ25lZCB0ZXh0dXJlSWQpCit7CisgICAgUmVuZGVyTGF5ZXJCYWNr
aW5nKiBiYWNraW5nID0gc3RhdGljX2Nhc3Q8UmVuZGVyTGF5ZXJCYWNraW5nKj4obV9vd25lci0+
Y2xpZW50KCkpOworICAgIGlmICghYmFja2luZyB8fCBiYWNraW5nLT5wYWludGluZ0dvZXNUb1dp
bmRvdygpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoZHJhd3NDb250ZW50KCkpOwor
CisgICAgSW50UmVjdCBkaXJ0eVJlY3QobV9kaXJ0eVJlY3QpOworICAgIEludFNpemUgcmVxdWly
ZWRUZXh0dXJlU2l6ZTsKKworI2lmIFBMQVRGT1JNKFNLSUEpCisgICAgcmVxdWlyZWRUZXh0dXJl
U2l6ZSA9IG1fYm91bmRzOworICAgIEludFJlY3QgYm91bmRzUmVjdChJbnRQb2ludCgwLCAwKSwg
bV9ib3VuZHMpOworCisgICAgLy8gSWYgdGhlIHRleHR1cmUgbmVlZHMgdG8gYmUgcmVhbGxvY2F0
ZWQgdGhlbiB3ZSBtdXN0IHJlZHJhdyB0aGUgZW50aXJlCisgICAgLy8gY29udGVudHMgb2YgdGhl
IGxheWVyLgorICAgIGlmIChyZXF1aXJlZFRleHR1cmVTaXplICE9IG1fYWxsb2NhdGVkVGV4dHVy
ZVNpemUpCisgICAgICAgIGRpcnR5UmVjdCA9IGJvdW5kc1JlY3Q7CisgICAgZWxzZSB7CisgICAg
ICAgIC8vIENsaXAgdGhlIGRpcnR5UmVjdCB0byB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgdG8gYXZv
aWQgZHJhd2luZyBvdXRzaWRlCisgICAgICAgIC8vIHRoZSBib3VuZHMgb2YgdGhlIGJhY2tpbmcg
dGV4dHVyZS4KKyAgICAgICAgZGlydHlSZWN0LmludGVyc2VjdChib3VuZHNSZWN0KTsKKyAgICB9
CisKKyAgICBpZiAoIW1fY2FudmFzLmdldCgpCisgICAgICAgIHx8IGRpcnR5UmVjdC53aWR0aCgp
ICE9IG1fY2FudmFzLT5nZXREZXZpY2UoKS0+d2lkdGgoKQorICAgICAgICB8fCBkaXJ0eVJlY3Qu
aGVpZ2h0KCkgIT0gbV9jYW52YXMtPmdldERldmljZSgpLT5oZWlnaHQoKSkgeworICAgICAgICBt
X2NhbnZhcyA9IG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhkaXJ0eVJlY3Qud2lkdGgoKSwgZGly
dHlSZWN0LmhlaWdodCgpLCB0cnVlKTsKKyAgICAgICAgbV9za2lhQ29udGV4dCA9IG5ldyBQbGF0
Zm9ybUNvbnRleHRTa2lhKG1fY2FudmFzLmdldCgpKTsKKworI2lmIE9TKFdJTkRPV1MpCisgICAg
ICAgIC8vIFRoaXMgaXMgbmVlZGVkIHRvIGdldCB0ZXh0IHRvIHNob3cgdXAgY29ycmVjdGx5LiBX
aXRob3V0IGl0LAorICAgICAgICAvLyBHREkgcmVuZGVycyB3aXRoIHplcm8gYWxwaGEgYW5kIHRo
ZSB0ZXh0IGJlY29tZXMgaW52aXNpYmxlLgorICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCBzZXR0
aW5nIHRoaXMgdG8gdHJ1ZSBkaXNhYmxlcyBjbGVhcnR5cGUuCisgICAgICAgIC8vIEZJWE1FOiBE
b2VzIHRoaXMgdGFrZSB1cyBkb3duIGEgdmVyeSBzbG93IHRleHQgcmVuZGVyaW5nIHBhdGg/Cisg
ICAgICAgIC8vIEZJWE1FOiB3aHkgaXMgdGhpcyBpcyBhIHdpbmRvd3Mtb25seSBjYWxsID8KKyAg
ICAgICAgbV9za2lhQ29udGV4dC0+c2V0RHJhd2luZ1RvSW1hZ2VCdWZmZXIodHJ1ZSk7CisjZW5k
aWYKKyAgICAgICAgbV9ncmFwaGljc0NvbnRleHQgPSBuZXcgR3JhcGhpY3NDb250ZXh0KHJlaW50
ZXJwcmV0X2Nhc3Q8UGxhdGZvcm1HcmFwaGljc0NvbnRleHQqPihtX3NraWFDb250ZXh0LmdldCgp
KSk7CisgICAgfQorCisgICAgLy8gQnJpbmcgdGhlIGNhbnZhcyBpbnRvIHRoZSBjb29yZGluYXRl
IHN5c3RlbSBvZiB0aGUgcGFpbnQgcmVjdC4KKyAgICBtX2NhbnZhcy0+dHJhbnNsYXRlKHN0YXRp
Y19jYXN0PFNrU2NhbGFyPigtZGlydHlSZWN0LngoKSksIHN0YXRpY19jYXN0PFNrU2NhbGFyPigt
ZGlydHlSZWN0LnkoKSkpOworCisgICAgLy8gSWYgdGhlIHRleHR1cmUgaWQgb3Igc2l6ZSBjaGFu
Z2VkIHNpbmNlIGxhc3QgdGltZSB0aGVuIHdlIG5lZWQgdG8gdGVsbCBHTAorICAgIC8vIHRvIHJl
LWFsbG9jYXRlIGEgdGV4dHVyZS4KKyAgICBpZiAobV9hbGxvY2F0ZWRUZXh0dXJlSWQgIT0gdGV4
dHVyZUlkIHx8IHJlcXVpcmVkVGV4dHVyZVNpemUgIT0gbV9hbGxvY2F0ZWRUZXh0dXJlU2l6ZSkK
KyAgICAgICAgY3JlYXRlVGV4dHVyZVJlY3QocmVxdWlyZWRUZXh0dXJlU2l6ZSwgZGlydHlSZWN0
LCB0ZXh0dXJlSWQpOworICAgIGVsc2UKKyAgICAgICAgdXBkYXRlVGV4dHVyZVJlY3QoZGlydHlS
ZWN0LCB0ZXh0dXJlSWQpOworI2Vsc2UKKyNlcnJvciAiTmVlZCB0byBpbXBsZW1lbnQgZm9yIHlv
dXIgcGxhdGZvcm0uIgorI2VuZGlmCit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpjcmVh
dGVUZXh0dXJlUmVjdChjb25zdCBJbnRTaXplJiByZXF1aXJlZFRleHR1cmVTaXplLCBjb25zdCBJ
bnRSZWN0JiB1cGRhdGVSZWN0LCB1bnNpZ25lZCB0ZXh0dXJlSWQpCit7CisgICAgLy8gUGFpbnQg
aW50byBncmFwaGljcyBjb250ZXh0IGFuZCBnZXQgYml0bWFwLgorICAgIG1fb3duZXItPnBhaW50
R3JhcGhpY3NMYXllckNvbnRlbnRzKCptX2dyYXBoaWNzQ29udGV4dCwgdXBkYXRlUmVjdCk7Cisg
ICAgY29uc3QgU2tCaXRtYXAmIGJpdG1hcCA9IG1fY2FudmFzLT5nZXREZXZpY2UoKS0+YWNjZXNz
Qml0bWFwKGZhbHNlKTsKKyAgICBjb25zdCBTa0JpdG1hcCogc2tpYUJpdG1hcCA9ICZiaXRtYXA7
CisgICAgQVNTRVJUKHNraWFCaXRtYXApOworCisgICAgdm9pZCogcGl4ZWxzID0gMDsKKyAgICBJ
bnRTaXplIGJpdG1hcFNpemU7CisgICAgU2tBdXRvTG9ja1BpeGVscyBsb2NrKCpza2lhQml0bWFw
KTsKKyAgICBTa0JpdG1hcDo6Q29uZmlnIHNraWFDb25maWcgPSBza2lhQml0bWFwLT5jb25maWco
KTsKKyAgICAvLyBGSVhNRTogZG8gd2UgbmVlZCB0byBzdXBwb3J0IG1vcmUgaW1hZ2UgY29uZmln
dXJhdGlvbnM/CisgICAgaWYgKHNraWFDb25maWcgPT0gU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29u
ZmlnKSB7CisgICAgICAgIHBpeGVscyA9IHNraWFCaXRtYXAtPmdldFBpeGVscygpOworICAgICAg
ICBiaXRtYXBTaXplID0gSW50U2l6ZShza2lhQml0bWFwLT53aWR0aCgpLCBza2lhQml0bWFwLT5o
ZWlnaHQoKSk7CisgICAgfQorCisgICAgaWYgKCFwaXhlbHMpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsKKyAgICBBU1NFUlQo
Yml0bWFwU2l6ZSA9PSByZXF1aXJlZFRleHR1cmVTaXplKTsKKyAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgcmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpLCByZXF1
aXJlZFRleHR1cmVTaXplLmhlaWdodCgpLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBw
aXhlbHMpOworCisgICAgbV9hbGxvY2F0ZWRUZXh0dXJlSWQgPSB0ZXh0dXJlSWQ7CisgICAgbV9h
bGxvY2F0ZWRUZXh0dXJlU2l6ZSA9IHJlcXVpcmVkVGV4dHVyZVNpemU7CisKKyAgICB1cGRhdGVD
b21wbGV0ZWQoKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmVS
ZWN0KGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCkKK3sKKyAg
ICBjb25zdCBTa0JpdG1hcCYgYml0bWFwID0gbV9jYW52YXMtPmdldERldmljZSgpLT5hY2Nlc3NC
aXRtYXAodHJ1ZSk7CisgICAgU2tCaXRtYXAqIHNraWFCaXRtYXAgPSBjb25zdF9jYXN0PFNrQml0
bWFwKj4oJmJpdG1hcCk7CisgICAgQVNTRVJUKHNraWFCaXRtYXApOworCisgICAgU2tBdXRvTG9j
a1BpeGVscyBsb2NrKCpza2lhQml0bWFwKTsKKyAgICBTa0JpdG1hcDo6Q29uZmlnIHNraWFDb25m
aWcgPSBza2lhQml0bWFwLT5jb25maWcoKTsKKworICAgIGlmIChza2lhQ29uZmlnID09IFNrQml0
bWFwOjprQVJHQl84ODg4X0NvbmZpZykgeworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIHRleHR1cmVJZCk7CisgICAgICAgIHZvaWQqIG1lbSA9IGdsTWFwVGV4U3ViSW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCB1cGRhdGVSZWN0LngoKSwgdXBkYXRlUmVjdC55KCksIHVwZGF0
ZVJlY3Qud2lkdGgoKSwgdXBkYXRlUmVjdC5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgR0xfV1JJVEVfT05MWSk7CisgICAgICAgIHNraWFCaXRtYXAtPnNldFBpeGVscyhtZW0p
OworICAgICAgICBtX293bmVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cygqbV9ncmFwaGlj
c0NvbnRleHQsIHVwZGF0ZVJlY3QpOworICAgICAgICBnbFVubWFwVGV4U3ViSW1hZ2UyRChtZW0p
OworICAgIH0KKworICAgIHVwZGF0ZUNvbXBsZXRlZCgpOworfQorCit2b2lkIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcGxldGVkKCkKIHsKKyAgICBtX2RpcnR5UmVjdC5zZXRTaXplKEZs
b2F0U2l6ZSgpKTsKKyAgICBtX2NvbnRlbnRzRGlydHkgPSBmYWxzZTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmgKaW5kZXggMWZhODAwOTVkYzg2NWMzODM2YjJhYjMyNmVkNGIzZmE0OTUzMDE0YS4uODAy
NDhlYjVmZmY0YjMxODdkODY2NDMyYjM5MjU1Njc1ODUxZTliYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBA
IC00Myw5ICs0MywxOSBAQCBjbGFzcyBWaWRlb0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJD
aHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9t
aXVtPiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDApOwogICAgIHZpcnR1
YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVRleHR1cmVDb250ZW50cyh1bnNpZ25lZCB0ZXh0dXJlSWQpOwogCiBwcml2YXRlOgog
ICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKTsKKyAg
ICB2b2lkIGNyZWF0ZVRleHR1cmVSZWN0KGNvbnN0IEludFNpemUmIHJlcXVpcmVkVGV4dHVyZVNp
emUsIGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCk7CisgICAg
dm9pZCB1cGRhdGVUZXh0dXJlUmVjdChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0LCB1bnNpZ25l
ZCB0ZXh0dXJlSWQpOworICAgIHZvaWQgdXBkYXRlQ29tcGxldGVkKCk7CisKKyAgICB1bnNpZ25l
ZCBtX2FsbG9jYXRlZFRleHR1cmVJZDsKKyAgICBJbnRTaXplIG1fYWxsb2NhdGVkVGV4dHVyZVNp
emU7CisgICAgT3duUHRyPHNraWE6OlBsYXRmb3JtQ2FudmFzPiBtX2NhbnZhczsKKyAgICBPd25Q
dHI8UGxhdGZvcm1Db250ZXh0U2tpYT4gbV9za2lhQ29udGV4dDsKKyAgICBPd25QdHI8R3JhcGhp
Y3NDb250ZXh0PiBtX2dyYXBoaWNzQ29udGV4dDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGE2
NDZhNzkwZWFkMjMyMDg5MWQzNDc0ODc0ZTBhZGQxMTliNjJlN2YuLmVmMzRkMzU3ZDk1NTIyNzQx
YTM4MDdlOWFiMzBkZTVkMTY1NDRiYWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisy
MDEwLTA3LTI3ICBWaWN0b3JpYSBLaXJzdCAgPHZya0Bnb29nbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgcmVwYWludCByZXF1
ZXN0IHNvIHRoYXQgVmlkZW9MYXllckNocm9taXVtIGRvZXMgbm90IGhhdmUKKyAgICAgICAgYSBm
bGlja2VyaW5nIHByb2JsZW0gd2hlbiBwbGF5aW5nIHZpZGVvLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDMxMDEKKworICAgICAgICAqIHNyYy9XZWJN
ZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXll
ckNsaWVudEltcGw6OnJlcGFpbnQpOgorCiAyMDEwLTA3LTI3ICBKYW1lcyBIYXdraW5zICA8amhh
d2tpbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQnVpbGQgRml4LiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAppbmRl
eCAyYjBjOWE3MmMxMmI3M2UzYjdiNWJkZDBhM2Y4NmU3NzFlN2Y2Njg2Li44ZjIxMGEwZjNiZTc3
MWFkMmE3MjM5Y2FjY2Q5NDg0ODI2NjFkMGY5IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0xMjYsNiArMTI2LDEwIEBAIHZvaWQg
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp0aW1lQ2hhbmdlZCgpCiB2b2lkIFdlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6cmVwYWludCgpCiB7CiAgICAgQVNTRVJUKG1fbWVkaWFQbGF5ZXIpOwor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBpZiAobV92aWRlb0xheWVyLmdl
dCgpICYmIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSkKKyAgICAgICAgbV92aWRlb0xh
eWVyLT5zZXROZWVkc0Rpc3BsYXkoRmxvYXRSZWN0KDAsIDAsIG1fdmlkZW9MYXllci0+Ym91bmRz
KCkud2lkdGgoKSwgbV92aWRlb0xheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSkpOworI2VuZGlmCiAg
ICAgbV9tZWRpYVBsYXllci0+cmVwYWludCgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63354</attachid>
            <date>2010-08-03 11:11:37 -0700</date>
            <delta_ts>2010-08-05 04:15:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43101-20100803111135.patch</filename>
            <type>text/plain</type>
            <size>9258</size>
            <attacher name="Victoria Kirst">vrk</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NWE1MDNiY2JlMWM1MGZmMWY0NzYxMmQ4MmUyMzQ5MWJhMDUyNmZlZS4uMGE4ZjE4Zjk1N2NjNDRj
MjlhM2RmYWIxNWUyODYzY2E1Yjc5MWY1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNy0yNyAgVmlj
dG9yaWEgS2lyc3QgIDx2cmtAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBsb2dpYyB0byB1c2UgZ2xNYXBUZXhTdWJJbWFn
ZTJEIHRvIHdyaXRlIHZpZGVvIGxheWVyIHRvIEdQVQorICAgICAgICB0ZXh0dXJlLiBBbHNvIGZp
eGVzIENQVSB1c2FnZSBwcm9ibGVtIGZyb20gcHJldmlvdXMgcGF0Y2guCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzEwMQorCisgICAgICAgIE5vIGNo
YW5nZSBpbiB1c2VyLXZpc2libGUgZnVuY3Rpb25hbGl0eSAoc2luY2UgaXQgaXNuJ3QgdHVybmVk
IG9uKSwKKyAgICAgICAgc28gbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNv
cmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBsZXRlZCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmg6CisK
IDIwMTAtMDctMjcgIEphbWVzIEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDVh
YzBlNTc4ZGZlNTdjNWYyYzEwNTE5NGZiNGFiMWU5MjQwNGE3MTMuLjQ0MGI1MDI3ZTU2MmU1N2Rl
MWQ2MjRlMGUyNWM0NzJlODI0MTVkNjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTMxLDkgKzMx
LDIxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCi0KICNpbmNsdWRlICJWaWRlb0xheWVyQ2hyb21pdW0uaCIKIAorI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgor
I2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgorCisjaW5jbHVkZSA8R0xFUzIv
Z2wyLmg+CisjZGVmaW5lIEdMX0dMRVhUX1BST1RPVFlQRVMKKyNpbmNsdWRlIDxHTEVTMi9nbDJl
eHQuaD4KKworI2lmIFBMQVRGT1JNKFNLSUEpCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2VTa2lhLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCkBAIC00Myw3ICs1NSwx
MjQgQEAgUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSoKIAogVmlkZW9MYXllckNocm9taXVtOjpWaWRl
b0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICA6IExheWVy
Q2hyb21pdW0ob3duZXIpCisgICAgLCBtX2FsbG9jYXRlZFRleHR1cmVJZCgwKQorICAgICwgbV9j
YW52YXMoMCkKKyAgICAsIG1fc2tpYUNvbnRleHQoMCkKKyAgICAsIG1fZ3JhcGhpY3NDb250ZXh0
KDApCit7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJlQ29udGVu
dHModW5zaWduZWQgdGV4dHVyZUlkKQoreworICAgIFJlbmRlckxheWVyQmFja2luZyogYmFja2lu
ZyA9IHN0YXRpY19jYXN0PFJlbmRlckxheWVyQmFja2luZyo+KG1fb3duZXItPmNsaWVudCgpKTsK
KyAgICBpZiAoIWJhY2tpbmcgfHwgYmFja2luZy0+cGFpbnRpbmdHb2VzVG9XaW5kb3coKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKGRyYXdzQ29udGVudCgpKTsKKworICAgIEludFJl
Y3QgZGlydHlSZWN0KG1fZGlydHlSZWN0KTsKKyAgICBJbnRTaXplIHJlcXVpcmVkVGV4dHVyZVNp
emU7CisKKyNpZiBQTEFURk9STShTS0lBKQorICAgIHJlcXVpcmVkVGV4dHVyZVNpemUgPSBtX2Jv
dW5kczsKKyAgICBJbnRSZWN0IGJvdW5kc1JlY3QoSW50UG9pbnQoMCwgMCksIG1fYm91bmRzKTsK
KworICAgIC8vIElmIHRoZSB0ZXh0dXJlIG5lZWRzIHRvIGJlIHJlYWxsb2NhdGVkLCB0aGVuIHdl
IG11c3QgcmVkcmF3IHRoZSBlbnRpcmUKKyAgICAvLyBjb250ZW50cyBvZiB0aGUgbGF5ZXIuCisg
ICAgaWYgKHJlcXVpcmVkVGV4dHVyZVNpemUgIT0gbV9hbGxvY2F0ZWRUZXh0dXJlU2l6ZSkKKyAg
ICAgICAgZGlydHlSZWN0ID0gYm91bmRzUmVjdDsKKyAgICBlbHNlIHsKKyAgICAgICAgLy8gQ2xp
cCB0aGUgZGlydHlSZWN0IHRvIHRoZSBzaXplIG9mIHRoZSBsYXllciB0byBhdm9pZCBkcmF3aW5n
IG91dHNpZGUKKyAgICAgICAgLy8gdGhlIGJvdW5kcyBvZiB0aGUgYmFja2luZyB0ZXh0dXJlLgor
ICAgICAgICBkaXJ0eVJlY3QuaW50ZXJzZWN0KGJvdW5kc1JlY3QpOworICAgIH0KKworICAgIGlm
ICghbV9jYW52YXMuZ2V0KCkKKyAgICAgICAgfHwgZGlydHlSZWN0LndpZHRoKCkgIT0gbV9jYW52
YXMtPmdldERldmljZSgpLT53aWR0aCgpCisgICAgICAgIHx8IGRpcnR5UmVjdC5oZWlnaHQoKSAh
PSBtX2NhbnZhcy0+Z2V0RGV2aWNlKCktPmhlaWdodCgpKSB7CisgICAgICAgIG1fY2FudmFzID0g
bmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKGRpcnR5UmVjdC53aWR0aCgpLCBkaXJ0eVJlY3QuaGVp
Z2h0KCksIHRydWUpOworICAgICAgICBtX3NraWFDb250ZXh0ID0gbmV3IFBsYXRmb3JtQ29udGV4
dFNraWEobV9jYW52YXMuZ2V0KCkpOworCisjaWYgT1MoV0lORE9XUykKKyAgICAgICAgLy8gVGhp
cyBpcyBuZWVkZWQgdG8gZ2V0IHRleHQgdG8gc2hvdyB1cCBjb3JyZWN0bHkuIFdpdGhvdXQgaXQs
CisgICAgICAgIC8vIEdESSByZW5kZXJzIHdpdGggemVybyBhbHBoYSBhbmQgdGhlIHRleHQgYmVj
b21lcyBpbnZpc2libGUuCisgICAgICAgIC8vIFVuZm9ydHVuYXRlbHksIHNldHRpbmcgdGhpcyB0
byB0cnVlIGRpc2FibGVzIGNsZWFydHlwZS4KKyAgICAgICAgLy8gRklYTUU6IERvZXMgdGhpcyB0
YWtlIHVzIGRvd24gYSB2ZXJ5IHNsb3cgdGV4dCByZW5kZXJpbmcgcGF0aD8KKyAgICAgICAgLy8g
RklYTUU6IFdoeSBpcyB0aGlzIGlzIGEgd2luZG93cy1vbmx5IGNhbGw/CisgICAgICAgIG1fc2tp
YUNvbnRleHQtPnNldERyYXdpbmdUb0ltYWdlQnVmZmVyKHRydWUpOworI2VuZGlmCisgICAgICAg
IG1fZ3JhcGhpY3NDb250ZXh0ID0gbmV3IEdyYXBoaWNzQ29udGV4dChyZWludGVycHJldF9jYXN0
PFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0Kj4obV9za2lhQ29udGV4dC5nZXQoKSkpOworICAgIH0K
KworICAgIC8vIEJyaW5nIHRoZSBjYW52YXMgaW50byB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2Yg
dGhlIHBhaW50IHJlY3QuCisgICAgbV9jYW52YXMtPnRyYW5zbGF0ZShzdGF0aWNfY2FzdDxTa1Nj
YWxhcj4oLWRpcnR5UmVjdC54KCkpLCBzdGF0aWNfY2FzdDxTa1NjYWxhcj4oLWRpcnR5UmVjdC55
KCkpKTsKKworICAgIC8vIElmIHRoZSB0ZXh0dXJlIGlkIG9yIHNpemUgY2hhbmdlZCBzaW5jZSBs
YXN0IHRpbWUsIHRoZW4gd2UgbmVlZCB0byB0ZWxsIEdMCisgICAgLy8gdG8gcmUtYWxsb2NhdGUg
YSB0ZXh0dXJlLgorICAgIGlmIChtX2FsbG9jYXRlZFRleHR1cmVJZCAhPSB0ZXh0dXJlSWQgfHwg
cmVxdWlyZWRUZXh0dXJlU2l6ZSAhPSBtX2FsbG9jYXRlZFRleHR1cmVTaXplKQorICAgICAgICBj
cmVhdGVUZXh0dXJlUmVjdChyZXF1aXJlZFRleHR1cmVTaXplLCBkaXJ0eVJlY3QsIHRleHR1cmVJ
ZCk7CisgICAgZWxzZQorICAgICAgICB1cGRhdGVUZXh0dXJlUmVjdChkaXJ0eVJlY3QsIHRleHR1
cmVJZCk7CisjZWxzZQorI2Vycm9yICJOZWVkIHRvIGltcGxlbWVudCBmb3IgeW91ciBwbGF0Zm9y
bS4iCisjZW5kaWYKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVS
ZWN0KGNvbnN0IEludFNpemUmIHJlcXVpcmVkVGV4dHVyZVNpemUsIGNvbnN0IEludFJlY3QmIHVw
ZGF0ZVJlY3QsIHVuc2lnbmVkIHRleHR1cmVJZCkKK3sKKyAgICAvLyBQYWludCBpbnRvIGdyYXBo
aWNzIGNvbnRleHQgYW5kIGdldCBiaXRtYXAuCisgICAgbV9vd25lci0+cGFpbnRHcmFwaGljc0xh
eWVyQ29udGVudHMoKm1fZ3JhcGhpY3NDb250ZXh0LCB1cGRhdGVSZWN0KTsKKyAgICBjb25zdCBT
a0JpdG1hcCYgYml0bWFwID0gbV9jYW52YXMtPmdldERldmljZSgpLT5hY2Nlc3NCaXRtYXAoZmFs
c2UpOworICAgIGNvbnN0IFNrQml0bWFwKiBza2lhQml0bWFwID0gJmJpdG1hcDsKKyAgICBBU1NF
UlQoc2tpYUJpdG1hcCk7CisKKyAgICB2b2lkKiBwaXhlbHMgPSAwOworICAgIEludFNpemUgYml0
bWFwU2l6ZTsKKyAgICBTa0F1dG9Mb2NrUGl4ZWxzIGxvY2soKnNraWFCaXRtYXApOworICAgIFNr
Qml0bWFwOjpDb25maWcgc2tpYUNvbmZpZyA9IHNraWFCaXRtYXAtPmNvbmZpZygpOworICAgIC8v
IEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHN1cHBvcnQgbW9yZSBpbWFnZSBjb25maWd1cmF0aW9ucz8K
KyAgICBpZiAoc2tpYUNvbmZpZyA9PSBTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcpIHsKKyAg
ICAgICAgcGl4ZWxzID0gc2tpYUJpdG1hcC0+Z2V0UGl4ZWxzKCk7CisgICAgICAgIGJpdG1hcFNp
emUgPSBJbnRTaXplKHNraWFCaXRtYXAtPndpZHRoKCksIHNraWFCaXRtYXAtPmhlaWdodCgpKTsK
KyAgICB9CisKKyAgICBpZiAoIXBpeGVscykKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlSWQpOworICAgIEFTU0VSVChiaXRtYXBTaXpl
ID09IHJlcXVpcmVkVGV4dHVyZVNpemUpOworICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBHTF9SR0JBLCByZXF1aXJlZFRleHR1cmVTaXplLndpZHRoKCksIHJlcXVpcmVkVGV4dHVy
ZVNpemUuaGVpZ2h0KCksIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7CisK
KyAgICBtX2FsbG9jYXRlZFRleHR1cmVJZCA9IHRleHR1cmVJZDsKKyAgICBtX2FsbG9jYXRlZFRl
eHR1cmVTaXplID0gcmVxdWlyZWRUZXh0dXJlU2l6ZTsKKworICAgIHVwZGF0ZUNvbXBsZXRlZCgp
OworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZVJlY3QoY29uc3Qg
SW50UmVjdCYgdXBkYXRlUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkKQoreworICAgIGNvbnN0IFNr
Qml0bWFwJiBiaXRtYXAgPSBtX2NhbnZhcy0+Z2V0RGV2aWNlKCktPmFjY2Vzc0JpdG1hcCh0cnVl
KTsKKyAgICBTa0JpdG1hcCogc2tpYUJpdG1hcCA9IGNvbnN0X2Nhc3Q8U2tCaXRtYXAqPigmYml0
bWFwKTsKKyAgICBBU1NFUlQoc2tpYUJpdG1hcCk7CisKKyAgICBTa0F1dG9Mb2NrUGl4ZWxzIGxv
Y2soKnNraWFCaXRtYXApOworICAgIFNrQml0bWFwOjpDb25maWcgc2tpYUNvbmZpZyA9IHNraWFC
aXRtYXAtPmNvbmZpZygpOworCisgICAgaWYgKHNraWFDb25maWcgPT0gU2tCaXRtYXA6OmtBUkdC
Xzg4ODhfQ29uZmlnKSB7CisgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4
dHVyZUlkKTsKKyAgICAgICAgdm9pZCogbWVtID0gZ2xNYXBUZXhTdWJJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIHVwZGF0ZVJlY3QueCgpLCB1cGRhdGVSZWN0LnkoKSwgdXBkYXRlUmVjdC53aWR0
aCgpLCB1cGRhdGVSZWN0LmhlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBHTF9X
UklURV9PTkxZKTsKKyAgICAgICAgc2tpYUJpdG1hcC0+c2V0UGl4ZWxzKG1lbSk7CisgICAgICAg
IG1fb3duZXItPnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKCptX2dyYXBoaWNzQ29udGV4dCwg
dXBkYXRlUmVjdCk7CisgICAgICAgIGdsVW5tYXBUZXhTdWJJbWFnZTJEKG1lbSk7CisgICAgfQor
CisgICAgdXBkYXRlQ29tcGxldGVkKCk7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1
cGRhdGVDb21wbGV0ZWQoKQogeworICAgIG1fZGlydHlSZWN0LnNldFNpemUoRmxvYXRTaXplKCkp
OworICAgIG1fY29udGVudHNEaXJ0eSA9IGZhbHNlOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRl
eCAxZmE4MDA5NWRjODY1YzM4MzZiMmFiMzI2ZWQ0YjNmYTQ5NTMwMTRhLi44MDI0OGViNWZmZjRi
MzE4N2Q4NjY0MzJiMzkyNTU2NzU4NTFlOWJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAgLTQzLDkgKzQz
LDE5IEBAIGNsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0
ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyID0gMCk7CiAgICAgdmlydHVhbCBib29sIGRy
YXdzQ29udGVudCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4
dHVyZUNvbnRlbnRzKHVuc2lnbmVkIHRleHR1cmVJZCk7CiAKIHByaXZhdGU6CiAgICAgVmlkZW9M
YXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOworICAgIHZvaWQgY3Jl
YXRlVGV4dHVyZVJlY3QoY29uc3QgSW50U2l6ZSYgcmVxdWlyZWRUZXh0dXJlU2l6ZSwgY29uc3Qg
SW50UmVjdCYgdXBkYXRlUmVjdCwgdW5zaWduZWQgdGV4dHVyZUlkKTsKKyAgICB2b2lkIHVwZGF0
ZVRleHR1cmVSZWN0KGNvbnN0IEludFJlY3QmIHVwZGF0ZVJlY3QsIHVuc2lnbmVkIHRleHR1cmVJ
ZCk7CisgICAgdm9pZCB1cGRhdGVDb21wbGV0ZWQoKTsKKworICAgIHVuc2lnbmVkIG1fYWxsb2Nh
dGVkVGV4dHVyZUlkOworICAgIEludFNpemUgbV9hbGxvY2F0ZWRUZXh0dXJlU2l6ZTsKKyAgICBP
d25QdHI8c2tpYTo6UGxhdGZvcm1DYW52YXM+IG1fY2FudmFzOworICAgIE93blB0cjxQbGF0Zm9y
bUNvbnRleHRTa2lhPiBtX3NraWFDb250ZXh0OworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQ+
IG1fZ3JhcGhpY3NDb250ZXh0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYTY0NmE3OTBlYWQy
MzIwODkxZDM0NzQ4NzRlMGFkZDExOWI2MmU3Zi4uZWYzNGQzNTdkOTU1MjI3NDFhMzgwN2U5YWIz
MGRlNWQxNjU0NGJhZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDctMjcg
IFZpY3RvcmlhIEtpcnN0ICA8dnJrQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSByZXBhaW50IHJlcXVlc3Qgc28gdGhh
dCBWaWRlb0xheWVyQ2hyb21pdW0gZG9lcyBub3QgaGF2ZQorICAgICAgICBhIGZsaWNrZXJpbmcg
cHJvYmxlbSB3aGVuIHBsYXlpbmcgdmlkZW8uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MzEwMQorCisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bDo6cmVwYWludCk6CisKIDIwMTAtMDctMjcgIEphbWVzIEhhd2tpbnMgIDxqaGF3a2luc0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBCdWlsZCBGaXguIApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IDJiMGM5YTcy
YzEyYjczZTNiN2I1YmRkMGEzZjg2ZTc3MWU3ZjY2ODYuLjhmMjEwYTBmM2JlNzcxYWQyYTcyMzlj
YWNjZDk0ODQ4MjY2MWQwZjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5jcHAKQEAgLTEyNiw2ICsxMjYsMTAgQEAgdm9pZCBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnRpbWVDaGFuZ2VkKCkKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpyZXBhaW50KCkKIHsKICAgICBBU1NFUlQobV9tZWRpYVBsYXllcik7CisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIGlmIChtX3ZpZGVvTGF5ZXIuZ2V0KCkgJiYgc3Vw
cG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpKQorICAgICAgICBtX3ZpZGVvTGF5ZXItPnNldE5l
ZWRzRGlzcGxheShGbG9hdFJlY3QoMCwgMCwgbV92aWRlb0xheWVyLT5ib3VuZHMoKS53aWR0aCgp
LCBtX3ZpZGVvTGF5ZXItPmJvdW5kcygpLmhlaWdodCgpKSk7CisjZW5kaWYKICAgICBtX21lZGlh
UGxheWVyLT5yZXBhaW50KCk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>